В Joomla! 2.5 языковые файлы используются в четырех различных ситуациях:
- отображение компонента в публичной части сайта
- управление компонентом в интерфейсе администратора
- управление пунктами меню в интерфейсе администратора
- установка компонента
Joomla! 2.5 использует два разных пути размещения языковых файлов:
- один в administrator/language или language
- второй в папке расширения. Если это компонент, то путь будет таким: administrator/components/*component*/language или components/*component*/language
Все зависит от того, как устанавливается расширение.
Добавляем перевод для публичной части сайта
Создайте файл site/language/en-GB/en-GB.com_helloworld.ini:
COM_HELLOWORLD_DEFAULT_PAGE_TITLE="Hello World! component"
COM_HELLOWORLD_ERROR_OCCURRED="An error has occurred"
и файл site/language/ru-RU/ru-RU.com_helloworld.ini:
COM_HELLOWORLD_DEFAULT_PAGE_TITLE="Компонент Hello World!"
COM_HELLOWORLD_ERROR_OCCURRED="Произошла ошибка"
Добавляем перевод для интерфейса администратора
Создайте файл admin/language/en-GB/en-GB.com_helloworld.ini:
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="This message will be displayed"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Message"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Greeting"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"
и файл admin/language/ru-RU/ru-RU.com_helloworld.ini:
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="Сообщение для отображения"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Приветствие"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"
Добавляем перевод для управления пунктами меню в интерфейсе администратора
Создайте файл admin/language/en-GB/en-GB.com_helloworld.sys.ini:
COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="This is the Hello World! description"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE="Message"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC="This view displays a selected message"
COM_HELLOWORLD_MENU="Hello World!"
и файл admin/language/ru-RU/ru-RU.com_helloworld.sys.ini:
COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="Это описание нашего компонента Hello World!"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE="Сообщение"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC="Это представление отобразит выбранное сообщение"
COM_HELLOWORLD_MENU="Hello World!"
Варианты размещения языковых файлов
Начиная с версии 1.6, существует два варианта установки языковых файлов для расширения. Вы можете использовать их в различной комбинации. В версии 1.5 файлы устанавливались в основную папку языков (ROOT/administrator/language/ и ROOT/language/). Новый вариант включает файлы в папку "language", которая расположена в корне расширения. Таким образом, расширение может включать в себя папку языков с файлом .sys.ini, который отличается от того, который установлен в основную папку языков Joomla.
sys.ini также используется для перевода имени расширения в некоторых местах админки и для перевода меню компонента.
Таким образом xml-файл может включать:
<files>
<[...]
<folder>language</folder> // ДОЛЖНО включать правильные подпапки, например language/en-GB/ ... language/ru-RU/
<filename>whatever</filename>
[...]
</files>
и/или вариант версии 1.5:
<languages folder="joomlacorelanguagefolders"> // если используется другая папка для файлов
<language tag="en-GB">en-GB/en-GB.whatever.ini</language> // или
<language tag="en-GB">en-GB.whatever.ini</language> если не определена подпапка
<language tag="en-GB">en-GB/en-GB.whatever.sys.ini</language> // или
<language tag="en-GB">en-GB.whatever.sys.ini</language> если не определена подпапка
</languages>
или просто в корень
<languages>
<language tag="en-GB">en-GB.whatever.ini</language>
<language tag="en-GB">en-GB.whatever.sys.ini</language>
</languages>
Во время установки/обновления расширения именно файл .sys.ini из папки, которая расположена в корне расширения, будет отображать результат установки из описания. После этого (если есть) .sys.ini и .ini, установленные в основную папку языков, будут иметь приоритет над файлами, которые находятся в папке, которая расположена в корне расширения.
Одним из преимуществ установки файлов в папку language, которая расположена в корне расширения, является то, что эти файлы не затрагиваются при обновлении языковых пакетов. Другим преимуществом можно считать то, что эта папка может включать в себя несколько языков (всегда en-GB, ru-RU, fr-FR и т.д.) и при этом пользователь не обязан устанавливать соответствующий языковой пакет.
Добавляем перевод для процесса установки компонента
Создайте файл language/en-GB/en-GB.com_helloworld.sys.ini:
COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="This is the Hello World description"
и файл language/ru-RU/ru-RU.com_helloworld.sys.ini
COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="Это описание компонета Hello World!"
Собираем пакет установки компонента
Не забудьте поменять номер версии в файле helloworld.xml:
<version>0.0.6</version>
Также мы можем использовать для перевода название компонента, описание компонента и пункт меню:
<name>COM_HELLOWORLD</name> <description>COM_HELLOWORLD_DESCRIPTION</description> <menu>COM_HELLOWORLD_MENU</menu>
В раздел <files folder="site"> добавьте:
<folder>language</folder>
А в раздел <administration> добавьте:
<languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
<language tag="ru-RU">language/ru-RU/ru-RU.com_helloworld.ini</language>
<language tag="ru-RU">language/ru-RU/ru-RU.com_helloworld.sys.ini</language>
</languages>
helloworld.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
<name>COM_HELLOWORLD</name>
<!-- Следующие элементы необязательны -->
<creationDate>Июль 2012</creationDate>
<author>Вася Пупкин</author>
<authorEmail>Ваш e-mail</authorEmail>
<authorUrl>Ваш сайт</authorUrl>
<copyright>Информация о копирайте</copyright>
<license>Информация о лицензии</license>
<!-- Версия записывается в таблицу компонентов -->
<version>0.0.6</version>
<!-- Описание необязательно -->
<description>COM_HELLOWORLD_DESCRIPTION</description>
<!-- Запускается при установке -->
<install>
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<!-- Запускается при удалении -->
<uninstall>
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<!-- Запускается при обновлении -->
<update>
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Раздел основных файлов сайта -->
<!-- Обратите внимание на значение аттрибута folder: Этот аттрибут описывает папку нашего пакета-установщика из которой должны копироваться файлы.
Поэтому указанные в этом разделе файлы будут скопированы из папки /site/ нашего пакета-установщика в соответствующую папку установки. -->
<files folder="site">
<filename>index.html</filename>
<filename>controller.php</filename>
<filename>helloworld.php</filename>
<folder>language</folder>
<folder>models</folder>
<folder>views</folder>
</files>
<!-- Администрирование -->
<administration>
<!-- Раздел Меню -->
<menu>COM_HELLOWORLD_MENU</menu>
<!-- Раздел основных файлов администрирования -->
<!-- Обратите внимание на значение аттрибута folder: Этот аттрибут описывает папку нашего пакета-установщика из которой должны копироваться файлы.
Поэтому указанные в этом разделе файлы будут скопированы из папки /admin/ нашего пакета-установщика в соответствующую папку установки. -->
<files folder="admin">
<filename>index.html</filename>
<filename>controller.php</filename>
<filename>helloworld.php</filename>
<folder>models</folder>
<folder>sql</folder>
<folder>tables</folder>
<folder>views</folder>
</files>
<languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
<language tag="ru-RU">language/ru-RU/ru-RU.com_helloworld.ini</language>
<language tag="ru-RU">language/ru-RU/ru-RU.com_helloworld.sys.ini</language>
</languages>
</administration>
</extension>
В этом helloworld.xml файле языки устанавливаются в:
- administrator/language для админки (посмотрите на xml тег
languages
) - components/com_helloworld/language для сайта (xml тега
languages
в разделе сайта нет, но включается папка language)
Содержимое директории с кодом:
helloworld.xml site/index.html site/helloworld.php site/controller.php site/language/index.html site/language/en-GB/index.html site/language/en-GB/en-GB.com_helloworld.ini site/language/ru-RU/index.html site/language/ru-RU/ru-RU.com_helloworld.ini site/models/index.html site/models/helloworld.php site/views/index.html site/views/helloworld/index.html site/views/helloworld/view.html.php site/views/helloworld/tmpl/index.html site/views/helloworld/tmpl/default.xml site/views/helloworld/tmpl/default.php admin/index.html admin/controller.php admin/helloworld.php admin/language/index.html admin/language/en-GB/index.html admin/language/en-GB/en-GB.com_helloworld.ini admin/language/en-GB/en-GB.com_helloworld.sys.ini admin/language/ru-RU/index.html admin/language/ru-RU/ru-RU.com_helloworld.ini admin/language/ru-RU/ru-RU.com_helloworld.sys.ini admin/models/index.html admin/models/helloworlds.php admin/models/fields/index.html admin/models/fields/helloworld.php admin/sql/index.html admin/sql/install.mysql.utf8.sql admin/sql/uninstall.mysql.utf8.sql admin/sql/updates/index.html admin/sql/updates/mysql/index.html admin/sql/updates/mysql/0.0.1.sql admin/sql/updates/mysql/0.0.4.sql admin/tables/index.html admin/tables/helloworld.php admin/views/index.html admin/views/helloworlds/index.html admin/views/helloworlds/view.html.php admin/views/helloworlds/tmpl/index.html admin/views/helloworlds/tmpl/default.php admin/views/helloworlds/tmpl/default_body.php admin/views/helloworlds/tmpl/default_foot.php admin/views/helloworlds/tmpl/default_head.php language/index.html language/en-GB/index.html language/en-GB/en-GB.com_helloworld.sys.ini language/ru-RU/index.html language/ru-RU/ru-RU.com_helloworld.sys.ini
Запакуйте директорию в архивный файл (zip, tar, tar.gz, bz2) или скачайте его напрямую c GitHub. Далее установите его, используя менеджер расширений Joomla. Теперь можете убедиться в том, что перевод работает:
В следующей части мы добавим панель управления компонентом в админке.