Языковые версии
Смерека поддерживает многоязычные интерфейсы веб-сайтов. Технической основой многоязычия является языково-зависимые атрибуты. Если атрибут определен как языково-зависимый, Смерека создает отдельный экземпляр этого атрибута для каждого языка сайта.
Поскольку шаблон страницы определено как языково-зависимый атрибут, Смерека обеспечивает единый механизм поддержки многоязычия как на уровне шаблонов, которые содержат постоянные элементы веб-страниц, зависимые от языка, так и на уровне отдельных вершин (и соответствующих страниц).
Основой многоязычного сайта является декларация языков в файле customsettings.php :
$Languages = array('uk', 'ru', 'en');
Этот массив обязательно должен содержать как минимум один элемент, который определяет язык одноязычного сайта. Для многоязычного сайта он должен содержать определение всех языков (в виде кодов из двух букв, желательно согласно ISO 639-1), с которыми будет работать сайт.
Декларирование набора языков не означает, что каждая веб-страница в Смереке должна иметь все языковые варианты. В Смереке веб-страница может иметь все языковые варианты, может иметь только некоторые варианты и может иметь один вариант – все зависит от намерений редактора, который наполняет сайт.
Для того чтобы предоставить пользователю возможность выбора языка, конструктор страниц должен поместить смеретег <Smereka Module="smeretags/smbar.php" Func="StdLangBar" /> в том месте своего шаблона и/или страницы, где должен появиться этот селектор. В базовой реализации этот тег генерирует очень простой HTML код – строку с названиями языков и соответствующими ссылками.
В режиме просмотра набор языков определяется путем перебора доступных вариантов языка атрибутов вершины. Языковая версия считается доступной, если хотя бы один из атрибутов вершины имеет соответствующий языковой вариант. Недоступные языки не выводятся; текущий язык выводится без ссылки. Если доступен только один языковой вариант, селектор языков вообще не выводится.
В режиме редактирования выводится полный селектор со всеми языками – для того, чтобы редактор мог дополнять страницу новыми языковыми вариантами.
Если этот селектор выглядит слишком спартанским, можно написать самодельный модуль и вызвать его через механизм смеретегов.
Расширение / изменение набора языков
Для этого нужно проделать следующие шаги:
1. Модифицировать массив $LangNames в файле customsettings.php.
2. В каталоге Смереки lang создать новый каталог с именем языка и скопировать туда файлы из какого-то существующего языкового каталога.
3. Отредактировать эти файлы, заменив в них специфические строчные литералы на такие же для нового языка.
4. Добавить новые языковые версии всех шаблонов страниц сайта.
5. Отредактировать несколько вершин, добавив языково-специфические атрибуты для нового языка.
После этого можно опробовать новую языковую версию.