Часть 06 - языковые файлы
В 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. Теперь можете убедиться в том, что перевод работает:
В следующей части мы добавим панель управления компонентом в админке.
Код для этой части
Скачать com_helloworld часть 6
Актуальный код части 6 на GitHub