Cotonti спроектирован так, что позволяет легко локализовать (перевести) сайт (его интерфейс) на нужный язык. В базовый дистрибутив входят 2 набора языковых файлов — для английского и русского языков. Язык сайта, используемый по умолчанию, выбирается при установке.
Все языковые данные, используемые в Cotonti, содержатся в отдельных языковых файлах, о них и пойдет речь.
Кроме поставляемых по умолчанию языковых файлов есть возможность скачать и установить файлы для дополнительных языков (см. специальный раздел на нашем сайте и проект локализации на сайте Transifex) .
Файлы локализации могут незначительно отличаться от версии к версии, поэтому, если вы не нашли языковой файл подходящей версии, попробуйте скачать для ближайшей по значению версии.
На заметку: если вам требуется не просто локализация интерфейса, а мультиязычный сайт, где пользователь сможет сам выбирать предпочитаемый язык отображения интерфейса (и, возможно, содержимого), то вам стоит обратить внимание на статью «Делаем сайт мультиязычным».
Теперь поговорим, о том, что из себя представляют файлы локализации.
Cotonti использует для этого обычные PHP файлы, с описанием массива языковых данных (см. подробнее ниже).
На текущий момент для обозначения языков система использует 2-х буквенные коды соласно ISO стандарту 3166-1. Пример: Английский: en ; Русский: ru ; Немецкий: de и и.д.
Код языка используется в названии любого языкового файла: `xxxx.en.lang.php`, `xxxx.ru.lang.php`, ...
Языковые файлы используемые системой, делятся на типы: системные, локализация расширений, локализация тем оформления, и соответственно, размещаются в различных каталогах. Ниже приведена таблица с описанием основных файлов и указанием размещения. Строка lang_code подразумевает описнный выше 2-х буквенный код языка.
/lang | этот каталог содержит основные файлы локализации для ядра системы. Для каждого языка создана отдельныя папка названная соответственно коду языка. Пример: /lang/en/ | |
/lang/lang_code/admin.lang_code.lang.php | локализация административной части системы | |
/lang/lang_code/countries.lang_code.lang.php | Локализованные названия стран | |
/lang/lang_code/main.lang_code.lang.php | Основные языковые данные системы | |
/lang/lang_code/message.lang_code.lang.php | Системные сообщения | |
/lang/lang_code/translit.lang_code.lang.php | Для языков отличных от английского эти файлы содержит таблицы для транслитерации | |
/lang/lang_code/users.lang_code.lang.php | Данные относящиеся к профилю пользователя | |
/modules/ext_name/lang/ext_name.lang_code.lang.php | локализация модулей расширения | |
/plugins/plugin_name/lang/plugin_name.lang_code.lang.php | локализация для плагинов | |
/themes/theme_name/theme_name.lang_code.lang.php | локализация темы оформления | |
/images/smilies/lang/lang_code.lang.js | локализация набора смайлов |
Давайте для примера взглянем на основной файл локализации `main.en.lang.php`:
<?php /** * Russian Language File (main.lang.php) * * @package Cotonti * @copyright (c) Cotonti Team * @license https://github.com/Cotonti/Cotonti/blob/master/License.txt */ defined('COT_CODE') or die('Wrong URL.'); /** * Main strings */ $L['Access'] = 'Доступ'; $L['Action'] = 'Действие'; $L['Active'] = 'Активно'; $L['Activity'] = 'Активность'; /** * cot_declension data */ $Ls['Guests'] = "гость,гостя,гостей";
Как было сказано выше файл локализации это обычный PHP файл содержащий определение массива записей с языковыми данными. Начиная с версии 0.9.13 для опиисания используются только строковые данные. Т.е. не допускается использование вложенных массивов (подробнее о формате и почему это так смотрите здесь).
В начале файла идет служебная информация в виде комментария формата PHPDoc, определяющая принадлежность к тому или иному расширению, копирайты и прочее.
Ниже строки `defined('COT_CODE') or die('Wrong URL.');
` мы видим, собственно, определение языковых данных.
Текстовые данные задаются в формате как отдельные элементы плоского массива в виде `ключ => значение`.
Ключ (идентификатор) это строка, которая однозначно идентиицирает данную запись. Этот ключ должен быть уникален и не меняться в языковых файлах различных языков. Ключ используется для доступа к олкализованной строке из PHP кода или из шаблонов тем оформления (*.tpl), например так: {PHP.L.Access}
(подробнее о шаблонах в использовании данных смотри по ссылке). При таком вызове этот тег будет заменен на соответствующее значение (в нашем примере это строка 'Доступ'). Основные строки содержаться в массиве $L
.
Cotonti позволяет задавать строки локализации для множественных форм (числительных) — для этого предусмотрен отдельный массив $Ls
. Он используется функцией `cot_declension()`, применимой как из PHP кода, так и для вызова из шаблона.
Существует 2 спосоа изменить язык интерфейса сатйа:
Изменить основной язык в файле настроек datas/config.php:
$cfg['defaultlang'] = 'ru'; // основной язык cfqnf
Эти изменения конуться всех не зарегистированных пользователей, а также всех новых пользователей.
Если вы хотите запретить пользователям менять язык интерфейса —это можно сделать в панеле управления опцией «Принудительная установка языка по умолчанию для всех пользователей» (Панель администрирования → Конфигурация → Локализация).
В двух словах, чтобы создать собственную локализацию надо :
Если вы готовы взяться за локализацию какой либо части файолв, то рекомендуем сделать это с пользой для сообщества Cotonti. Сделать это можно например так: