![]() |
Андрей Шитов
17 марта 2006 |
|
![]() |
Задача. | Подтвердить собственные слова о том, что существует много вариантов реализации многоязычного сайта. | ![]() |
![]() |
![]() |
Наш студийный интернет-магазин сегодня работает на двух языках — русском и английском, — пользуясь при этом одним и тем же программным кодом и едиными XSLT-шаблонами. Чтобы формировать страницы на разных языках, мы применяем четыре различных способа. Три из них используют XSLT. Вариант 1 Строковые ресурсы для разных языков сохранены в отдельных
Доступ к строкам из разных файлов происходит через одну-единственную переменную $locale, в которую вначале копируется содержимое одного из файлов:
Когда потребуется вывести строку, нужно выбрать соответствующий узел этого дерева:
Вариант 2 Все веб-формы описаны в XML-коде примерно так (и записать здесь текст на разных языках невозможно):
Чтобы вывести нужный текст, XSLT-файл, рисующий форму, вызывает функцию (именованый шаблон) string-resource, передавая ей значение параметра str_res:
Фукнция string-resource, ориентируясь на значение ключа str_res, выбирает нужную строку из упомянутых выше файлов строковых ресурсов:
Вариант 3 В XML-коде страницы любой текстовый элемент (например, <p> или <div>) может содержать необязательный атрибут lang:
|
См. также заметку «Локализация» |
Соответственно, если атрибут, указывающий язык, присутствует, XSLT-правила отбирают нужный фрагмент текста. Если атрибута нет, значит на всех версиях сайта появится одинаковый текст.
|
Примечание: кому-то будет удобнее воспользоваться XPath-функцией lang() |
Ссылки по теме
Тем, кто все еще недоволен количеством предложенных вариантов, предлагаю ознакомиться с зарубежной литературой.
Internationalization / localization of XSLT output
Stylus Studio. — 24 августа 2000
An XSLT style sheet and an XML dictionary approach to internationalization
IBM. — 1 апреля 2001
Tip: Localization within a document format
IBM. — 1 сентября 2002
Localizing XML documents through XSLT (pdf)
IASTED international conference. — 10 февраля 2003
Language support
Sagehill Enterprises. DocBook XSL: The Complete Guide. — 28 февраля 2005
© 19952023 Студия Артемия Лебедева
|