Несколько тегов, разделённых запятой, означают логическое И между ними. Вы также можете использовать точку с запятой в качестве логического ИЛИ. И имеет высший приоритет над ИЛИ. Вы не можете использовать скобки для группировки условий. Звёздочка (*) внутри тега используется в качестве маски для "подстроки".
Разделы: Документация / Расширяем Cotonti / Локализация
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. Сделать это можно например так:
Разделы: Документация / Расширяем Cotonti / Локализация
Надежнее всего обновлять Cotonti целиком с выходом новой стабильной версии. Тем не менее может возникнуть ситуация когда вам надо обновить только часть проекта в «ручном режиме». В таком случае может стать вопрос какие именно файлы необходимо обновить, т.к. отверсии к версии может меняться не только функционал но и сопутствующие файлы, такие как файлы локализации.
Все изменения по файлам от версии к версии можно отследить используя репозиторий Cotonti на GitHub. (Кроме того, если вы владеете навыком работы с Git, то можете даже предложить свои правки в файлы локализации, которые будут размещены в официальном репозитории).
GitHub позволяет легко отследить изменения между релизами. Ссылка на сиавнение релизов есть на каждой странице с описанием релиза. Для примера посмотрим на произошедшие изменения с версии 0.9.17 до версии 0.9.18. Мы увидем здесь «список правок» (`Commits`), а также можем просмотреть все измененные файлы, переключившись на вкладку «Измененные файлы» (Files changed).
Во времена, когда Cotonti разрабатывался с помощью инструмента под названием Trac, была возможность увидеть изменения в текстовом формате, называемом «общие изменения» (`unified diff`). Несмотря на то, что Git и GitHub позволяют сделат аналогичное, не всегда удобно просматривать большой список изменений в браузере. К тому же если вам надо просто отследить изменения в языковых файлах, подойдет упрощенный вариант файла «общих изменений». Для этого потредуется:
Cotonti
. Скачайте и распакуйте в этот каталог архивы сравниваемых версий, например, последний и предпоследний релиз. Думаю, нет необходимости упомянать, что каждая версия должна находится в собственном подкаталоге.Теперь вы имеете обобщанный файл изменений и можете отследить правки в конкретных файлах. Для этого используйте поиск в текстовом редакторе для быстрого перехода к месту с правками языковых файлов. Например, ищите стрку "en.lang" для изменений в английских языковых файлах. Знак "-" в найденном блоке текста будет означать, что строка была изменена или удалена, а знак "+" обозначает добавленные данные. Для более подробного ознакомления с форматом diff файлов загляните в инструкцию diff утилиты.
Кроме этого для отображения и навигации по файлу изменений вы можете использовать любую графическую утилиту, например WinMerge.
Если у вас большая часть времени уходит на поддержку и локализацию осноных файлов поставляемых с Cotonti Siena на свой или дополнительный язык — возможно вам стоит присмотреться к сервису Transifex, который мы уже не первый год используем для управления переводом основных языковых файлов проекта.
С помощью веб-интерфейса, который предостовляет Transifex вы можете наблюдать за изменением файлов при выходе новой версии, а так же с легкостью принять участие в локализации или исправлении ошибок перевода. Все что вам потребуется — это бесплатно зарегистрироваться на сайте, выбрать подходящий язык и запросить разрешение на перевод.
Разделы: Documentation (Genoa and older) / Russian / Администрирование
…\system\lang\ru\main.lang.phpНаходим слово «править» (строка 87), копируем всю строку
$L['Edit'] = 'Править';И вставляем ее в файл
…\skins\{имя_скина}\{имя_скина}.ru.lang.phpПосле вставки заменяем значение переменной $L[‘Edit’] на «редактирование». Сохраняем.
$sed_countries[‘us’]=’США’;Сохраняем.
[BEGIN_SED_EXTPLUGIN_CONFIG] category=01:string::news:Category code of the parent category maxpages=02:select:0,1,2,3,4,5,6,7,8,9,10,15,20,25,30,50,100:10:Recent pages displayed [END_SED_EXTPLUGIN_CONFIG]Видим, что есть 2 параметра с именами «category» и «maxpages» (имена параметров указаны до символа «=»).
$L['cfg_category']= array('Код родительской категории'); $L['cfg_maxpages']= array('Отображать страниц', 'количество отображаемых элементов');