Вариант создания шаблона письма- уведомления о заказе для мультиязычного сайта(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>⟨</xsl:text>
</xsl:variable>
Записываем переменную в тег ссылки вместо языкового префикса
<a href="http://{$domain}/{$la}/emarket/personal">&personal-account;</a>
В качестве текста ссылки также используем константу для различных языковых версий.