Вариант создания шаблона письма- уведомления о заказе для мультиязычного сайта(xslt).

Материал из Umicms
Перейти к:навигация, поиск

Актуально для версии 18.

Задача:

Необходимо создать единый шаблон письма- уведомления покупателю на сайте с несколькими языковыми версиями.


Решение:

Интернационализация шаблонов осуществляется при помощи специальных языковых констант. Файлы, в которые необходимо вносить изменения - constants.%префикс%.dtd, которые находятся в ~/templates/%имя%/xslt/i18n/
В них должен содержаться одинаковый набор констант, с разными значениями.

Константы записывается таким образом:

<!ENTITY "имя константы" " значение константы">
Шаблон письма-уведомления находится в файле default.xsl , расположенном в ~/templates/%имя%/xslt/mail/emarket/.
Необходимо создать для отдельных фрагментов текста письма языковые константы с разными значениями в соответсвующих файлах constants.%префикс%.dtd и вывести их в шаблоне письма, обрамив нужными html-тегами, т.е. сам шаблон будет намного короче и система сама будет передавать в константы язык, в зависимости от выбранной пользователем версии.

Например:

русская версия

 <!ENTITY spasibo-zakaz "Спасибо за Ваш заказ">

английская версия

 <!ENTITY spasibo-zakaz "Thank you for your order">

Вызываем в шаблоне например таким образом:

<p> &spasibo-zakaz;</p>
Теперь, при появлении новой языковой версии, нужно будет только добавить соответствующие константы в файл constants.%префикс%.dtd
С помощью механизма констант можно также создать в шаблоне ссылку на личный кабинет в соответсвующей языковой версии.

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

<!ENTITY lang "ru">

<!ENTITY lang "en">

<!ENTITY lang "fr">

Далее, создаем в шаблоне переменную и присваиваем ей значение константы.

Например так:

<xsl:variable name="la">

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

</xsl:variable>

Записываем переменную в тег ссылки вместо языкового префикса

<a href="http://{$domain}/{$la}/emarket/personal">&personal-account;</a>

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