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

Материал из Umicms
Перейти к:навигация, поиск
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
 
  [[category:Верстка в XSLT]][[Категория:Модуль Интернет магазин]]
 
  [[category:Верстка в XSLT]][[Категория:Модуль Интернет магазин]]
'''Актуально для версии 2.9'''
+
'''Актуально для версии 18.'''
  
 
==Задача:==
 
==Задача:==
Строка 16: Строка 16:
 
Константы записывается таким образом:
 
Константы записывается таким образом:
  
<source lang="html4strict">
+
<source lang="xml">
 
<!ENTITY "имя константы" " значение константы">
 
<!ENTITY "имя константы" " значение константы">
 
</source>
 
</source>
Строка 26: Строка 26:
  
 
русская версия
 
русская версия
<source lang="html4strict">
+
<source lang="xml">
 
  <!ENTITY spasibo-zakaz "Спасибо за Ваш заказ">
 
  <!ENTITY spasibo-zakaz "Спасибо за Ваш заказ">
 
</source>
 
</source>
 
английская версия  
 
английская версия  
<source lang="html4strict">
+
<source lang="xml">
 
  <!ENTITY spasibo-zakaz "Thank you for your order">
 
  <!ENTITY spasibo-zakaz "Thank you for your order">
 
</source>
 
</source>
  
 
Вызываем в шаблоне например таким образом:
 
Вызываем в шаблоне например таким образом:
<source lang="html4strict">
+
<source lang="xml">
 
<p> &spasibo-zakaz;</p>
 
<p> &spasibo-zakaz;</p>
 
</source>
 
</source>
Строка 44: Строка 44:
  
 
Создаем константы для языковых префиксов:
 
Создаем константы для языковых префиксов:
<source lang="html4strict">
+
<source lang="xml">
 
<!ENTITY lang "ru">
 
<!ENTITY lang "ru">
  
Строка 55: Строка 55:
  
 
Например так:
 
Например так:
<source lang="html4strict">
+
<source lang="xml">
 
<xsl:variable name="la">
 
<xsl:variable name="la">
  
Строка 64: Строка 64:
  
 
Записываем переменную в тег ссылки вместо языкового префикса
 
Записываем переменную в тег ссылки вместо языкового префикса
<source lang="html4strict">
+
<source lang="xml">
 
<a href="http://{$domain}/{$la}/emarket/personal">&personal-account;</a>
 
<a href="http://{$domain}/{$la}/emarket/personal">&personal-account;</a>
 
</source>
 
</source>
 
В качестве текста ссылки также используем константу для различных языковых версий.
 
В качестве текста ссылки также используем константу для различных языковых версий.

Текущая версия на 15:04, 4 июня 2018

Актуально для версии 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>

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