Одной из сильных Joomla называют высокую локализацию. Так, в данный момент CMS поддерживает порядка 68 языков. Преимущества этого понятны всем: пользователи разных стран могут использовать возможности системы, используя при этом свой родной язык.
Для локализации в Joomla применены самые банальные расширения, которые именуют языковыми. Они представляют собой группу файлов, имеющих расширение .ini, и содержат слова и фразы, которые отображаются в административной части сайта. Именно потому интерфейс пользователя можно перевести на несколько десятков языков мира. Давайте разберем, как это осуществляется.
Для того чтобы в браузере отобразился текст, который пользователь вывел на экран, в php применяется команда echo. Давайте разберем это на конкретном примере, допустим на экране входа в систему администратора сайта. Вам покажется, что для того чтобы на экране отобразилось то, что вы видите, в коде имеется нечто вроде echo “Joomla! Administration Login”, позволяющее войти на сайт админу. Но это не так.
Текст пользовательского интерфейса в Joomla жестко не кодируется, а то бы для каждого языка мира пришлось бы вносить изменения в код программы. Вместо этого кодировке подвергаются ключи, расположенные в файлах языковой поддержки. При этом их значения читаются как текст, но в момент выполнения. А если мы попробуем найти символьную строчку Joomla! Administration Login в файле, предназначенном для языковой поддержки и имеющим расширение .ini, то найдем ее не там, а в файле administrator/language/en-GB.com_Login.ini.
COM_LOGIN_JOOMLA_ADMINISTRATION_LOGIN, т.е. левая часть восьмой строки кода имеет название языкового ключа (так называемого дескриптора). При этом в правой части, которая заключена в кавычки, расположено значение – конкретный текст, отображаемый на экране, если пользователем выбран британский английский язык, имеющий обозначение en-GB.
Как вы поняли, при осуществлении поиска языкового ключа, в файлах php его можно встретить два раза: в файлах administrator/templates/hathor/login.php и в administrator/templates/bluestork/login.php.
Строка кода с командой вывода может быть такой:
< h1> < php echo JText ::_( “ COM _LOGIN _JOOMLA _ADMINISTRATION _LOGIN” ) 7 >< /h1>.
Значит, вместо команды echo с текстом на английском, можно вывести результат выполнения метода, называемый JText:: _(). Аргументом метода должен быть указан языковой ключ – файл с расширением .ini. Именно так метод JText:: _() осуществляет поиск по параметру заданного языкового ключа в файле, который имеет расширение .ini, а потом возвращает совпадающий текст. Но если поиск по ключу не даст результата, метод осуществляет возвращение самого ключа.
Вот так просто можно разобраться в принципах работы языкового расширения. Кстати, если вы планируете создавать расширения для Joomla, не забывайте формировать для него файлы, предназначенные для языковой поддержки.