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

В 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">

Объявление сущностей в DTD

Например, объявление сущности labelSearch:

<!ENTITY labelSearch "Поиск">

позволяет в дальнейшем использовать ее в XSL-шаблоне:

<h1>&labelSearch;</h1>

или в атрибутах

<img src="/images/my-image.png" alt="&labelSearch;" title="&labelSearch;" />

Ручное изменение используемого языка

Изменение языка подключаемого DTD возможно явным вызовом метода Core::setLng(), передав ему двухбуквенный код языка. Вызов необходимо делать перед использованием XSL, например, в начале макета.

Core::setLng('en');

Добавление DTD для языков, которые не указаны у сайтов

Вы можете добавить в конфигурационный файл modules/xsl/config/config.php дополнительные языки, для которых требуется создание DTD:

<?php

return array (
    'lngs' => array('en', 'de', 'ru'),
);

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Значение сущностей в DTD

    Вызвала проблема если написать спец. символ "%", например:

    Заменил спец. символ "%" на его код %

    http://www.dotnetfunda.com/articles/show/54/character-set-used-for-html-xslt-xml

    28.10.2018 14:22:10
    Seri