VITRAGE: Примеры
· 1. "Распорки"
· 2. Изображения
· 3. "Колонтитулы"
· 4. Ссылки
· 5. Многоязычные сайты
· 6. Организация меню
· 7. Однотипные элементы
· 8. Формы и их обработка
· 9. Случайные операции
· 10. Циклы
· 11. "Ленты" данных
· 12. Внешние скрипты
· 13. Работа с файлами
· 14. "Бесконечный копирайт"
 
Практика
· Немного о стилях парсинга
· Примеры использования
· Работающие сайты
· Хостинги
· Вопросы и ответы
· Задать вопрос
· E-mail
 
Теория
· Компиляция и установка
· Идеология VITRAGE
· Оптимизация HTML
· Создание виртуальных хостов
· Создание структуры доменов
· Ваш собственный язык гипертекстовой разметки
 
О модуле
· Что такое VITRAGE
· История модуля
· Загрузить модуль
· Документация целиком
· Загрузить документацию в формате MS Word
· Слово автора
· English version
 
Технология VITRAGE
Один из витражей города Иркутска
Исходный код
· VHTML-код этой страницы (в новом окне)
· VHTML-код файла vitrage (в новом окне)
 
· Пример 5. Многоязычные сайты

Рассмотрим в данном примере простую и эффективную схему создания многоязычных сайтов. Заметим сразу же, что эта схема будет эффективно работать лишь в том случае, если версии сайта на разных языках имеют одинаковую структуру и одинаковый внешний вид.

Прежде всего, необходимо определить, какие части сайта будут одними и теми же в различных версиях. Очевидно, такими частями будут "колонтитулы" и элементы дизайна, не привязанные к языку. Опишем такие элементы в соответствующих тэгах, например, так, как это показано в примерах 3 и 7.

Тэгу <header> (см. пример 3) имеет смысл передавать в качестве атрибута указатель на язык текущей страницы. Значениями такого атрибута могут быть, например, строки "rus" (русский язык), "eng" (английский язык), "ger" (немецкий язык) и т.п. На основе значения этого атрибута, которое в дальнейшем целесообразно присвоить глобальной переменной, мы будем делать выбор между зависящими от языка вариантами:

<init_rus>
<%%%rem%%% Инициализация для русскоязычной версии>
<%vitrage%
email="info@domain.com"
site_name="Наша компания"
welcome="Добро пожаловать на наш сайт!">
</init_rus>

<init_eng>
<%%%rem%%% Инициализация для англоязычной версии>
<%vitrage%
email="england@domain.com"
site_name="Our company"
welcome="Welcome to our site!">
</init_eng>

<header title="" main="" root="" language="">
<html><%vitrage% main="$main$" root="$root$" language="$language$">
<head><init_$language$>
<title>$site_name$: $title$</title>
</head>
<body>
<%echo% str="" %parse%="$main$">
<a href="$root$$language$/about/"><image src="$root$img/logo_$language$.gif" alt="$site_name$" width=100 height=65></a>
</header>

Догадаться, как можно использовать получаемую переменную language, несложно. Она может являться частью названий графических файлов, тэгов, каталогов, переменных и т.д. Теперь все зависит только от того, насколько грамотно будет спланирована структура тэгов, файлов и каталогов для разных версий сайта.

О структуре каталогов следует упомянуть особо. Традиционно для многоязычных сайтов ее верхний уровень выглядит так:

/
/eng/
/rus/
/ger/

В "корневом" каталоге сайта обычно располагается титульная страница (/index.vhtml), которая предлагает пользователю выбор языка. В зависимости от выбора пользователь будет "направлен" в один из "языковых" каталогов. Структуры "языковых" каталогов для удобства рекомендуется делать идентичными: в этом случае мы сможем пользоваться записью вида "$language$раздел/подраздел/".

В каждом из каталогов мы можем разместить собственный - зависящий от языка - файл конфигурации vitrage, описав в нем те тэги, которые зависят от языка настолько, что описывать их в общем файле нецелесообразно. Подключение "языковых" файлов конфигурации осуществляется, очевидно, строкой

VGConfigFile vitrage

(внимание: не "VGConfigFileOverride"!) в файлах .htaccess каждого из каталогов.

Например, мы можем описать в каждом каталоге зависящий от языка тэг <header>, который будет передавать в общий тэг <header> соответствующее обозначение для языка страницы:

<header title="" root="">
<header title="$title$" root="$root$" language="eng">
</header>

Описав "шапку" таким образом, мы сможем не беспокоиться об указании атрибута language тэга <header> в каждом VHTML-файле англоязычной версии сайта - нужное значение будет передано в "основную шапку" благодаря предусмотрительно описанной "языковой" "шапке".

В итоге одна из страниц англоязычной версии может выглядеть, например, так:

<header title="Products" root="../../">
<p><b><i>$site_name$</i>: Our products</b>
<p><hr width=100%>
<p><a href="mailto:$email$">Contact us</a> to get our price-list.
<footer>

Заметим: ничто не напоминает в данном VHTML-тексте о существовании версий сайта на других языках или о каком-либо особом статусе английского языка. Мы используем обычные переменные - email, site_name. Точно такие же переменные мы сможем использовать и в любых других страницах любых других языковых версий сайта, и в каждом случае они будут иметь аналогичный смысл и правильные значения.

Как видно, VITRAGE может существенно упростить создание многоязычного сайта при хорошем планировании его структуры и структуры его страниц.