Локализация тем дизайна

Содержание...

Для отображения на сайте различных вспомогательных надписей на разных языках (например, «Подписаться на рассылку» или «Корзина») удобно использовать механизм локализации тем дизайна.

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

Строки локализации и их варианты на разных языках задаются в файле-манифесте theme.xml темы дизайна в виде одного общего элемента locales и вложенных в него элементов locale.

Внутри каждого элемента locale должен присутствовать один элемент msgid с идентификатором строки локализации и произвольное количество элементов msgstr — по одному для каждой локали, для которой необходимо указать перевод этой строки. Для каждого элемента msgstr должен быть указан атрибут locale с обозначением соответствующей локали. Если для какой-либо локали отдельный перевод некоторой строки не требуется (например, когда перевод строки совпадает с ее идентификатором), то добавлять для этой локали элемент msgstr не нужно.

Пример секции locales для файла theme.xml:

<locales>
    <locale>
        <msgid>Subscribe for news</msgid>
        <msgstr locale="ru_RU">Подписаться на новости</msgstr>
    </locale>
    <locale>
        <msgid>Shopping cart</msgid>
        <msgstr locale="ru_RU">Корзина</msgstr>
    </locale>
</locales>

Использование строк локализации в шаблонах

Для вставки локализованных строк в шаблон используется конструкция вида [`string`]. Ниже показан фрагмент шаблона с использованием строки, объявленной в предыдущем примере:

<p>[`Subscribe for news`]</p>

Если для поселения, использующего тему дизайна с такой строкой локализации, выбрана (или определена автоматически) локаль русского языка (ru_RU), то вместо [`Subscribe for news`] в браузер пользователя будет отдан перевод строки:

<p>Подписаться на новости</p>

В противном случае на веб-странице будет использоваться идентификатор этой строки:

<p>Subscribe for news</p>