Мультиязычность

Комментарии ()

Инструменты для работа с мультиязычностю собраны в классе Lang. Понятие мультиязычности рассматривается в двух плоскостях:  текстовые елементы шаблона  и контекст веб-сайта.

Текстовые елементы шаблона 

Таблица dictionary является своего рода словарем, где некоторому оригинальному alias'у соотвествуют слова на разных языках word_* (* - алиас языка, например en,ru,ua и т.д.). Тоесть, для английского, руского и украинского, таблица будет иметь три поля: word_en,word_ru,word_ua.

Все страницы сайта формируются шаблонизатором, который парсит шаблоны. В шаблонах, мультиязычные елементы заканчиваються нижнем подчеркиванием. Например, если в шаблоне присутствует {name_},и активным языком является украинский, то необходиом подставить значение word_ua, значение алиаса которогого является "name".

Само значение читается не с базы данных, а с мультиязычных файлов, которые формируються, в процессе редактирования словаря через админку, тем самым уменьшаем количество запросов к БД во время работы с веб-сайтом.

Контекст веб-сайта

Аналогично текстовым елементам, контекст для разных языков храница в мулитиязычных полях таблицы. Например, таблица article, в которой хранятся записи статей, имеет следующие мультиязычные поля 

caption_en
caption_ru
...
text_en
text_ru
...
preview_en
preview_ru

Таблица multilang содержит название таблиц, которые имеют мультиязычне поля, а таблица multilang_fields содержит название полей (соответственно без алиаса языка, например:caption, text, preview) этих таблиц. Таким образом, при управлении языками (добавление, изминение, удаление) все поля в таблицах будут изменены/добавлены/удалены (хотя удаление отключено, дабы в случаи возврата того же языка, сохранить ранее введенные даные)

Сессии мультиязычности

$_SESSION['lang']['alias'] - алиас активного языка
 


Webit.in.ua 2013