В HostCMS интернационализация XSL-шаблонов осуществляется с использованием сущностей. Часто используемы внешние данные могут быть предварительно объявлены как сущности, а затем использованы в XSL-шаблоне.
Такое решение позволяет использовать один и тот же XSL-шаблон на разных сайтах, работающих на разных языках.
Для каждого языка, используемого на сайтах системы, автоматически создается отдельный DTD, который доступен при редактировании XSL-шаблона. Язык указывается в разделе "Сайты" в двухбуквенном формате ISO 639-1. Добавление сайта с новым языком автоматически добавляет для него DTD.
Подключение соответствующего языку DTD происходит автоматически, для этого в XSL-шаблоне вместо
<!DOCTYPE xsl:stylesheet>
указывается
<!DOCTYPE xsl:stylesheet SYSTEM "lang://21">
где 21 - идентификатор XSL-шаблона. Кроме идентификатора XSL-шаблона допускается использованием названия XSL-шаблона в случае его написания на английском языке, например, для XSL-шаблона с названием Search:
<!DOCTYPE xsl:stylesheet SYSTEM "lang://Search">
Например, объявление сущности labelSearch:
<!ENTITY labelSearch "Поиск">
позволяет в дальнейшем использовать ее в XSL-шаблоне:
<h1>&labelSearch;</h1>
или в атрибутах
<img src="/images/my-image.png" alt="&labelSearch;" title="&labelSearch;" />
Изменение языка подключаемого DTD возможно явным вызовом метода Core::setLng(), передав ему двухбуквенный код языка. Вызов необходимо делать перед использованием XSL, например, в начале макета.
Core::setLng('en');
Вы можете добавить в конфигурационный файл modules/xsl/config/config.php
дополнительные языки, для которых требуется создание DTD:
<?php
return array (
'lngs' => array('en', 'de', 'ru'),
);