Логотип

Документация по макросам и шаблонам UMI.CMS

Интернационализация шаблонов сайта

Интернационализация TPL-шаблонов
Интернационализация XSLT-шаблонов

Теперь, когда у нас есть контент, переведенный на нужный нам язык — нужно добиться вывода его в соответствующей языковой версии шаблона. Рассмотрим два варианта — при использовании «TPL» и «XSLT» шаблонизаторов.

Интернационализация TPL-шаблонов

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

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

Например, из шаблона главной страницы вызывается макрос %vote insertlast('home')%. Для того, чтобы создать автоматически подключаемую английскую версию этого шаблона, необходимо скопировать файл ~/templates/%имя%/tpls/vote/home.tpl и назвать его home.en.tpl. Тем самым мы укажем системе, что при отображении главной страницы английской версии сайта нужно использовать именно этот шаблон для вывода блока голосования.
Остаётся только перевести текстовое содержимое файла на английский язык.

Интернационализация XSLT-шаблонов

При интернационализации XSLT-шаблонов используется специальный протокол «Ulang» и возможности самого языка XSLT.

С помощью xslt-сущностей мы можем определить набор языковых констант для каждой языковой версии сайта. Наборы таких констант следует помещать в директорию ~/templates/%имя%/xslt/i18n/ в файлы constants.%префикс%.dtd. В нашем случае должно быть минимум два файла - constants.dtd(для основной языковой версии, обычно - русской) и constants.en.dtd(для английской языковой версии). В них должен содержаться одинаковый набор констант, с разными значениями. Константы записываются в файл таким образом:

 

<!ENTITY login "Login"> 

Обратите внимание, что файл constants.dtd является файлом констант основной языковой версии. Соответственно, если вы переходите, например, на английскую языковую версию сайта, но файл constants.en.dtd отсутствует - данные будут получены из файла constants.dtd.

После тега ENTITY идёт имя константы (login), а затем её значение (Login).

Теперь в xslt-шаблонах мы можем вызывать эту константу при помощи тега xsl:text таким образом:

<xsl:text>&login;</xsl:text>

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

 

<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">

сразу после заголовка документа:

 

<?xml version="1.0" encoding="utf-8"?>

Теперь, в зависимости от текущей языковой версии сайта, будет подключаться определенный файл: constants.ru.dtd, constants.en.dtd и т.д.

В обоих случаях трудоёмкость операции можно значительно уменьшить, запланировав отображение сайта на нескольких языках заранее - на этапе планирования и в самом начале работ.