Локализация шаблона Joomla 3, языковые константы и их значения

Заключительную статью на тему как создать шаблон для Joomla мы посвятим локализации шаблона. Научимся работать с файлами словарей и языковыми константами тем самым сделаем наш шаблон мультиязычным. Но для начала давайте разберемся, что это за понятие такое – локализация.

Что такое локализация шаблона?

Если сказать простыми словами, то под локализацией шаблона или любого другого расширения понимают их перевод на определенный язык (либо на несколько языков сразу). Для этого применяются языковые пакеты (файлы словарей) с прописанными в них языковыми константами и их значениями.

Таким образом, используя языковые константы, мы можем сделать наш шаблон мультиязычным. Другими словами в зависимости от того какой язык выбран в Joomla по умолчанию точно такой же язык перевода будет и в нашем шаблоне. В этом и заключается суть локализации.

Что нужно для локализации шаблона?

Для начала в корневой папке шаблона нужно создать папку с именем «language» (название можно дать любое, в зависимости от вашей фантазии). Внутри неё создаем новые папки для различных языков: для русского это ru-RU, для английского en-GB. Об этом мы уже говорили в самой первой статье посвященной созданию собственного шаблона.

Так как я не планирую использовать английский язык для своего шаблона, я ограничился единственной папкой ru-RU, а вы можете создать по аналогии папки для других языков.

Создание файлов словарей

Теперь давайте создадим файлы словарей, в которых будут храниться значения языковых констант (на самом деле если вы читали все статьи по созданию собственного шаблона, то данные файлы и папки у вас уже должны быть созданы). Всего для осуществления перевода используется два файла. Имена файлов для русской локализации должны быть следующими: «ru-Ru.tpl_имя_шаблона.ini» и «ru-Ru.tpl_имя_шаблона.sys.ini». В моем случае имена фалов получились такими: «ru-Ru.tpl_joom4all.ini» и «ru-Ru.tpl_joom4all.sys.ini»:

Файлы русской локализации самодельного шаблона Joomla

Подобные названия файлов не случайны, в начале файла указывается язык (ru-Ru или en-GB), затем надо указать, что данные файлы применимы именно к шаблону (tpl), после нижнего подчеркивания пишем имя шаблона.

Что это за файлы? Файл формата .ini используется для хранения данных о переводе форм, настроек и прочих примочек шаблона. Другой файл sys.ini используется для перевода практически всего, что связанно с текущим шаблоном – имена переопределенных и альтернативных макетов, имена позиций для модулей и так далее.

Правка файла манифеста templateDetails.xml

После того как файлы созданы необходимо «сказать» шаблону о том что они существуют. Для этого открываем ранее созданный файл templateDetails.xml (ему была посвящена отдельная статья) и добавляем в него следующий блок кода (между именами папок и позициями модулей):

<languages folder="language">
 <language tag="ru-RU">ru-RU/ru-RU.tpl_joom4all.ini</language>
 <language tag="ru-RU">ru-RU/ru-RU.tpl_joom4all.sys.ini</language>
</languages>

Давайте разберем данный код подробнее. В блоке <languages> мы указываем каталог хранения языковых файлов (folder="language") а так же все доступные файлы словарей.

Пути до файлов прописываются с использованием специального тега: <language tag="ru-RU"> для русского языка и <language tag="en-GB"> для английского языка соответственно. Файл заполнили, отлично, теперь можно приступать к созданию и переопределению языковых констант.

Создание и переопределение языковых констант

Приступаем к самому интересному – заполнению языковых файлов для локализации нашего шаблона. Но прежде чем продолжить давайте разберем общий синтаксис построения языковых констант:

  • Все языковые константы для шаблона должны быть прописаны заглавными буквами, это обязательное правило;
  • Если языковая константа применяется для шаблона, то она должна начинаться с символов TPL (для компонентов COM_CONTENT и так далее);
  • В именах языковых констант не должно быть пробелов, вместо них используется символ подчеркивания;
  • После языковой константы ставится знак равенства и в кавычках пишется её значение;
  • Одна языковая константа должна занимать одну строку, переносить значение одной константы на несколько строк нельзя, в таком случае работать ничего не будет.

С теорией разобрались, переходим к практике. Для начала давайте откроем файл ru-RU.tpl_joom4all.ini и добавим в него языковую константу, которая будет использоваться для описания шаблона. Самый простой способ это сделать следующий:

TPL_JOOM4ALL_DESCRIPTION="Ваше описание для текущего шаблона"

Чтобы описание не выглядело совсем уныло можно применить к нему определенные стили, да, вы не ослышались, в значениях языковых констант можно использовать CSS стили. Давайте так и сделаем, у меня получилось примерно так:

TPL_JOOM4ALL_DESCRIPTION="<div style='overflow: auto;border: 1px solid #676565;border-radius: 15px;'><h1 style='font-size: 20px;color: #ffffff;padding: 3px 20px;background: #676565'>Шаблон сайта Joom4all.ru</h1><p style='margin: 0 0 15px 15px;'>Данный шаблон создан специально для сайта Joom4all.ru</p></div>"

Описание создано, теперь давайте добавим нашу новую константу в файл templateDetails.xml между тегами <description>. Если вы помните, то когда мы начали создание собственного шаблона мы не использовали никакие константы в файле манифеста, вместо этого описание мы заполнили обычным текстом:

Описание шаблона в файле templateDetails.xml без использования языковых констант

Пришло время это исправить! Добавляем правильное описание с использованием вновь созданной языковой константы:

<description>TPL_JOOM4ALL_DESCRIPTION</description>

Теперь можно зайти в панель управления и посмотреть на результат. На странице «Менеджер шаблонов: Изменить стиль» (Расширения -> Шаблоны -> Стили) результат будет таким:

Описание шаблона с использованием языковых констант и стилей оформления

А на странице «Менеджер шаблонов: Изменить шаблон» (Расширения -> Шаблоны -> Шаблоны -> Параметры) результат будет вот таким:

Еще один вариант описания шаблона при помощи языковых констант

Теперь пришло время дать адекватное название позициям модулей, если вы помните, то они у нас получили незатейливые названия position-0, position-1 и так далее. Возможно, такое название многих вполне устроит, однако со временем с легкостью можно запутаться какая позиция в каком месте шаблона у Вас расположена. Поэтому я предлагаю дать каждой позиции свое уникальное описания, для этих целей так же воспользуемся языковыми константами.

Открываем файл ru-RU.имя_шаблона.sys.ini и добавляем в него следующие языковые константы, значение которых указываем по своему усмотрению:

TPL_JOOM4ALL_POSITION_POSITION-0="Главное меню"
TPL_JOOM4ALL_POSITION_POSITION-1="Поиск"

По аналогии создаем языковые константы и их значения оставшимся позициям модулей, сохраняем изменения. Чтобы проверить результат заходим в панель управления, открываем для редактирования любой модуль и смотрим, как у нас обстоят дела с его позициями. У меня получилось вот так:

При помощи языковых констант можно дать адекватное название позициям модулей

Отлично, описание и позиции для модулей нашего самодельного шаблона оформлены и переведены на русский язык при помощи языковых констант. По аналогии можно заполнить те же самые данные для английского языка или для любого другого.

Осталось добавить переводы для используемых альтернативных либо переопределенных шаблонов материалов, либо категорий. К примеру, я создал переопределение шаблона обычной статьи, который буду использовать для материалов из раздела расширения. Файл шаблона я назвал extensions.php и положил в папку /templates/имя_шаблона/html/com_content/article. В результате в редакторе материала на вкладке «Отображение» в поле «Альтернативный макет» появился соответствующий макет с именем extensions:

Имя альтернативного макета статьи без использования языковых констант

Давайте дадим приличное название текущему макету. Для этого все в том же файле sys.ini добавляем новую языковую константу:

TPL_JOOM4ALL_COM_CONTENT_ARTICLE_LAYOUT_EXTENSIONS="Скачать расширение joomla 3"

Синтаксис константы стандартный, изначально указываем, что константа предназначена для шаблона joom4all, затем указываем компонент (com_content), говорим, что это макет статьи и собственно название нового макета. После языковой константы указываем её значение. После сохранения мы получим следующий результат:

После применения языковых констант имя альтернативного макета статьи смотрится гораздо лучше.

По аналогии создаются языковые константы для альтернативных макетов блога категории, для которых выделена ссылка в типах пункта меню:

Новый тип пункта меню с названием и описанием созданными при помощи языковых констант

Альтернативный способ переопределения языковых констант

Вышеописанный метод переопределения языковых констант является далеко не единственным. Все то же самое можно делать прямо из панели управления Joomla 3.

Для этих целей предусмотрен специальный раздел, который так и называется «Менеджер языков: Переопределение констант» (Расширения -> Языки -> Переопределение констант):

Переопределение языковых констант через панель управления Joomla 3

О возможностях переопределения языковых констант через панель управления мы уже говорили в статье посвященной созданию собственного типа пункта меню. Все, что нам нужно сделать это при помощи фильтра выбрать, для какого раздела будет применяться языковая константа (сайта или панели управления), затем жмем кнопку «Создать». Указываем имя языковой константы и её значение.

С помощью такого рода переопределения языковых констант Вы сможете создать полностью новую локализацию для сайта или панели управления, тем самым придать уникальность админке.

Хочу заметить, что все переопределенные константы через панель управления записываются в отдельный файл, расположенный в папке administrator/language/overrides.

На этом заключительная статья из серии «Как создать собственный шаблон для Joomla 3» подошла к концу, теперь вы знаете, что такое локализация шаблона и как пользоваться языковыми константами. До скорых встреч! 

Добавить комментарий