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

Материал из Umicms
Перейти к:навигация, поиск
 
(не показано 12 промежуточных версий 2 участников)
Строка 1: Строка 1:
  [[category:Верстка в XSLT]]
+
  [[category:Верстка в XSLT]][[Категория:Модуль Интернет магазин]]
 +
'''Актуально для версии 18.'''
  
 
==Задача:==
 
==Задача:==
Строка 7: Строка 8:
 
   
 
   
  
Решение:
+
==Решение:==
  
Интернационализация шаблонов осуществляется при помощи специальных языковых констант. Файлы, в которые необходимо вносить изменения  -  constants.%префикс%.dtd, которые находятся в  ~/templates/%имя%/xslt/i18n/
+
:Интернационализация шаблонов осуществляется при помощи специальных языковых констант. Файлы, в которые необходимо вносить изменения  -  constants.%префикс%.dtd, которые находятся в  ~/templates/%имя%/xslt/i18n/
  
В них должен содержаться одинаковый набор констант, с разными значениями.
+
:В них должен содержаться одинаковый набор констант, с разными значениями.
  
Константы записывается таким образом -
+
Константы записывается таким образом:
  
 +
<source lang="xml">
 
<!ENTITY "имя константы" " значение константы">
 
<!ENTITY "имя константы" " значение константы">
 +
</source>
 +
:Шаблон письма-уведомления находится в файле default.xsl , расположенном в ~/templates/%имя%/xslt/mail/emarket/.
  
Шаблон письма-уведомления находится в файле default.xsl , расположенном в ~/templates/%имя%/xslt/mail/emarket/.
+
:Необходимо  создать для отдельных фрагментов текста письма языковые константы с разными значениями в соответсвующих файлах constants.%префикс%.dtd и вывести их в шаблоне письма, обрамив нужными html-тегами, т.е. сам шаблон будет намного короче и система сама будет передавать в константы язык, в зависимости от выбранной пользователем версии.
 
 
Необходимо  создать для отдельных фрагментов текста письма языковые константы с разными значениями в соответсвующих файлах constants.%префикс%.dtd и вывести их в шаблоне письма, обрамив нужными html-тегами, т.е. сам шаблон будет намного короче и система сама будет передавать в константы язык, в зависимости от выбранной пользователем версии.
 
  
 
Например:
 
Например:
  
русская версия <!ENTITY spasibo-zakaz "Спасибо за Ваш заказ">
+
русская версия
 
+
<source lang="xml">
английская версия  <!ENTITY spasibo-zakaz "Thank you for your order">
+
<!ENTITY spasibo-zakaz "Спасибо за Ваш заказ">
 +
</source>
 +
английская версия  
 +
<source lang="xml">
 +
  <!ENTITY spasibo-zakaz "Thank you for your order">
 +
</source>
  
 
Вызываем в шаблоне например таким образом:
 
Вызываем в шаблоне например таким образом:
 +
<source lang="xml">
 +
<p> &spasibo-zakaz;</p>
 +
</source>
  
<div>&spasibo-zakaz</div>
+
:Теперь, при появлении новой языковой версии, нужно будет только добавить соответствующие константы в файл  constants.%префикс%.dtd
 
 
Теперь, при появлении новой языковой версии, нужно будет только добавить соответствующие константы в файл  constants.%префикс%.dtd
 
  
С помощью механизма констант можно также создать в шаблоне ссылку на личный кабинет в соответсвующей языковой версии.
+
:С помощью механизма констант можно также создать в шаблоне ссылку на личный кабинет в соответсвующей языковой версии.
  
 
Создаем константы для языковых префиксов:
 
Создаем константы для языковых префиксов:
 
+
<source lang="xml">
 
<!ENTITY lang "ru">
 
<!ENTITY lang "ru">
  
 
<!ENTITY lang "en">
 
<!ENTITY lang "en">
  
<!ENTITY lang   "fr">
+
<!ENTITY lang "fr">
 +
</source>
  
 
Далее, создаем в шаблоне переменную и присваиваем ей значение константы.
 
Далее, создаем в шаблоне переменную и присваиваем ей значение константы.
  
 
Например так:
 
Например так:
 
+
<source lang="xml">
 
<xsl:variable name="la">
 
<xsl:variable name="la">
  
Строка 52: Строка 61:
  
 
</xsl:variable>
 
</xsl:variable>
 +
</source>
  
 
Записываем переменную в тег ссылки вместо языкового префикса
 
Записываем переменную в тег ссылки вместо языкового префикса
 
+
<source lang="xml">
 
<a href="http://{$domain}/{$la}/emarket/personal">&personal-account;</a>
 
<a href="http://{$domain}/{$la}/emarket/personal">&personal-account;</a>
 
+
</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>

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