Темы перевода строк в шаблонах страниц и в XSLT-функциях на многоязычных сайтах я уже касался ранее так или иначе.
Локализация строк в XML-шаблонах и XSLT-функциях, в принципе, одинакова.
В двух словах:
Создание ресурсных файлов
Если у вас нет папки ~/App_GlobalResources в корневой папке сайта добавьте ее (в Visual Studio: правый клик на папке сайта / Add ASP.NET Folder / App_GlobalResource).
Эти же шаги вы используете для строк, используемых в функциях.
Использование строк из ресурсных файлов
Для использования элемента <lang:string/> в шаблоне или функции вам нужно указать пространство имен, которому он относится. Удобнее всего добавить его в корневой элемент <html/>.
В XML-шаблонах и XSLT-функциях, создаваемых системой, обычно это пространство имен уже указано в <html/>, но если его там нет, то добавьте его сами:
А теперь воспользуемся строкой из ресурсных файлов:
Resource, Resources.<имя ресурсного файла>.<имя строки>
Имя ресурсного файла не должно включать в себя расширение и код языка. То есть для файлов Templates.resx и Templates. ru-ru.resx это будет выглядеть так: Resource, Resources.Templates.<имя строки>
Предыдущие сообщения:
Локализация строк в XML-шаблонах и XSLT-функциях, в принципе, одинакова.
В двух словах:
- Вы создаете ресурсный файл для строк для языка сайтам по умолчанию (например, английского).
- Заносите туда все строки.
- Далее создаете копию этого ресурсного файла, но уже для второго языка сайта (скажем, русского).
- Переводите строки там.
- Далее в шаблоне или функции, вместо жестко прописанных строк вы используете специальный XML-элемент <lang:string/>.
- Используя специальный синтаксис вызова строки из ресурсных файлов, вы указываете нужную строку в атрибуте key указанного выше элемента.
Все остальное система делает сама. То есть, при переключении языка на сайте, пользователь увидит строки на странице (которые на самом деле, прописаны в шаблонах и функциях) на нужном языке.
У вас есть страницы, которые используют общий шаблон, скажем, под названием "Standard Page". В шаблоне жестко прописана строка на английском, скажем:
<div id="attribution">
Created with Composite C1 CMS
</div>
Created with Composite C1 CMS
</div>
Вы хотите, чтобы эта фраза была на русском при переключении сайта на русский язык, что-то вроде: "Создано с помощью Composite C1 CMS".
Если у вас нет папки ~/App_GlobalResources в корневой папке сайта добавьте ее (в Visual Studio: правый клик на папке сайта / Add ASP.NET Folder / App_GlobalResource).
- Открываем наш веб-сайт в Visual Studio.
- В папке ~/App_GlobalResources, создаем ресурсный файл (.resx) для строк из шаблонов, например, "Templates.resx".
- Добавляем в него строку по английски из шаблона:
- Name: AttributionText
- Value: Created with Composite C1 CMS
- Делаем копию "Templates.resx", добавив в его название "ru-ru" перед расширением: ~/App_GlobalResources/Templates.ru-ru.resx.
- Открываем его в Visual Studio и переводим строку:
- Name: AttributionText
- Value: Создано с помощью Composite C1 CMS
Эти же шаги вы используете для строк, используемых в функциях.
Использование строк из ресурсных файлов
Для использования элемента <lang:string/> в шаблоне или функции вам нужно указать пространство имен, которому он относится. Удобнее всего добавить его в корневой элемент <html/>.
В XML-шаблонах и XSLT-функциях, создаваемых системой, обычно это пространство имен уже указано в <html/>, но если его там нет, то добавьте его сами:
<html ... xmlns:lang="http://www.composite.net/ns/localization/1.0">
...
</html>
...
</html>
А теперь воспользуемся строкой из ресурсных файлов:
- Открываем шаблон для редактирования.
- Заменяем строку элементом <lang:string/>, указав в его атрибуте key нужную строку (AttributionText) из ресурсного файла (Templates):
<lang:string key="Resource, Resources.Templates.AttributionText" />
Строка указывается при помощи специального синтаксиса:
Имя ресурсного файла не должно включать в себя расширение и код языка. То есть для файлов Templates.resx и Templates. ru-ru.resx это будет выглядеть так: Resource, Resources.Templates.<имя строки>
Как вы видите, синтаксис почти такой же, как и для локализации форм, только в полях типов данных вызов строки еще помещается в ${...}.
Далее мы рассмотрим пакет расширения Frontend Localizer, который помогает осуществить локализацию уже существующих XML-шаблонов и XSLT-функций.
- Создание многоязычного сайта в Composite C1 CMS (1). Введение
- Создание многоязычного сайта в Composite C1 CMS (2). Добавление языка
- Создание многоязычного сайта в Composite C1 CMS (3). Перевод страниц
- Создание многоязычного сайта в Composite C1 CMS (4). Переключение языка
- Создание многоязычного сайта в Composite C1 CMS (5). Перевод данных
- Создание многоязычного сайта в Composite C1 CMS (6). Перевод форм
Комментариев нет:
Отправить комментарий