Мультиязычность фронт-зоны сайта
В рамках "Twilight CMS" рекомендуется собирать проекты так, чтобы каждый сайт имел один язык для каждого уникального доменного имени, то есть чтобы языковые версии занимали отдельные домены. Например, www.somesite.ru и www.somesite.com, или www.somesite.ru и eng.somesite.ru.
Нужно помнить, что существуют два независимых понятия - язык и кодировка. Кодировка определяет набор символов, который может быть использован для отрисовки контента на разных языках. Обычно, для каждого языка есть общепринятые кодировки, например для русского языка контент обычно отображают в windows-1251, реже в koi8-r. Но никто не запрещает использовать кодировку UTF-8 для сайта с русскоязычным содержимым, поскольку она также поддерживает русские символы.
Общие принципы работы
Для корректного отображения на сайте контента, введенного в админзоне, необходимо, чтобы кодировка фронтзоны и кодировка админзоны совпадали. Кодировку фронтзоны разработчик задает с помощью ключа html_encoding в файле preferences.xml. Кодировка админзоны будет автоматически установлена в то же самое значение.
При разработке проекта разработчику необходимо самостоятельно следить, чтобы все создаваемые вручную файлы в папках Content, Data, Templates были в нужной кодировке.
Мультиязычность админзоны
Для удобства работы редактора в админзоне, Система поддерживает систему словарей с системными сообщениями на разных языках. Еще раз отметим, что кодировка и язык админзоны - вещи независимые. Например, если кодировка сайта установлена в UTF-8, то в админзоне может быть выбран как русский, так и английский язык (при наличии русского и английского словарей). Эти языки никакого влияния на вводимый контент не окажут - он будет вводиться в кодировке UTF-8.
Поскольку в составе дистрибутива системы присутствуют только две предопределенные кодировки - windows-1251 (русская) и UTF-8 (юникод), то для использования других кодировок необходимо перевести в требуемую кодировку файлы со служебными сообщениями на нужных языках (папка Admin/Messages).
Также, если необходимо дополнить интерфейс другими языками, разработчик может перевести системные сообщения, сохранив формат файлов словарей. Если новые словари будут присланы нам, мы включим их в дистрибутив Системы.
Именование файлов-словарей такое:
english.utf-8.dic - словарь для англоязычной админзоны в кодировке UTF-8
english.windows-1251.dic - словарь для англоязычной админзоны в кодировке windows-1251
russian.utf-8.dic - словарь для русскоязычной админзоны в кодировке UTF-8
russian.windows-1251.dic - словарь для русскоязычной админзоны в кодировке windows-1251
Первая строка из файлов словарей (с индексом [0]) носит чисто информационный характер и нигде в Системе не используется.
English.dic и russian.dic - словари по умолчанию. То есть, если словарь для текущей кодировки фронтзоны по имени файла (см. выше) не найден, то будут использоваться эти словари.
Внимание: кодировка в файле preferences.xml и имена файлов со словарями должны быть в нижнем регистре (то есть windows-1251, koi8-r, utf-8). В противном случае на Unix системах нужные словари находиться не будут и будут использованы словари по умолчанию, что в случае с utf-8 кодировкой вызовет ошибки в браузере еще на этапе входа в админзону.
Примечание
HTML редакторы, применяемые в админзоне могут самостоятельно преобразовывать некоторые символы в html entities (комбинации вида &#код; или &Hкод;). Отображение данных символов в сетках справочников будет заменено на исходные символы для удобства чтения, но при этом в таблицах и при выводе HTML на фронтзону будут применяться html entities.
Итог для редакторов сайта
Редактору сайта все равно какая кодировка на каком сайте используется. В админзоне он выбирает из списка только язык. Система автоматически выбирает кодовую таблицу из числа имеющихся в наличии. Это позволяет редактору при переключении между сайтами с разными кодировками не менять никаких настроек - как при входе был задан русский (или любой другой) язык, так он и остается.
Итог для разработчиков
Разработчикам можно иметь на любом сайте полный набор файлов с сообщениями, то есть ничего не трогать в папке Admin/Messages при переходе от проекта к проекту.