Для обращения с различными строками l10ns и i18n Limb использует классы 'locale' и 'strings' (папка 'LIMB_DIR/core/lib/locale/').
Вы можете найти настроечные файлы l10n в каталоге 'LIMB_DIR/core/locale/'. В настоящее время поддерживаются 2: en.ini и ru.ini. Эти файлы содержат некоторые специфичные для l10n вещи: название страны, название языка, формат даты, дни недели, названия месяцев, кодировку страниц и т.д.
В настоящее время имеются локализованные строки для английского и русского языков. Типичный пример использования класса strings:
echo strings :: get($string_name,[$file_name='common'],[$locale_id=null]);
if $locale_id is not specified current MANAGEMENT_LOCALE_ID is used $file_name is mapped to physical file by schema(order is preserved):
Если ни один файл не найден возникает критическая ошибка.
Общий формат для ini файла локализации:
[constants] attribute1 = ... attribute2 = ... ...
Локализационные ini файлы поддерживают простое настледование через раздел [extends]. Вы должны задать в нем свойство 'filename', что бы позволить классу strings обработать вопросы наследования. Простой пример, содержимое файла ad_en.ini:
[constants] create_ad_block = Добавить рекламный блок ad_block_creation = Создание рекламного блока ad_block_edition = Редактирование рекламного блока edit_ad_block = Редактировать блок
Limb использует две константы для работы с локализацией:
Каждый объект сайта в Limb имеет свою локализацию (например, 'en' или 'ru') Она сохраняется в таблице sys_site_object (смотри URL db_organization_chart). По умолчанию каждый новый объект наследует id локализации от своего предка. В настоящее время мы не имеем красивый пользовательский интерфейс для установки id локализации для объекта сайта (это есть в планах).
CONTENT_LOCALE_ID определяется на основе id локализации запрашиваемого объекта.
Есть небольшая уловка с определением MANAGEMENT_LOCALE_ID:
константа MANAGEMENT_LOCALE_ID сохраняется в пользовательской сессии. Если MANAGEMENT_LOCALE_ID не определена (в случае нового пользователя, или после выхода ), то MANAGEMENT_LOCALE_ID определяется как CONTENT_LOCALE_ID.
Пользователь может выбрать предпочитаемую локализацию MANAGEMENT_LOCALE_ID во время процедуры проверки пароля:
Также возможно переключить MANAGEMENT_LOCALE_ID используя форму в правом верхнем углу административной части сайта:
Спсок доступных локализаций определяется глобальной переменной в файле setup.php из папки PROJECT_DIR. Корректный пример:
$AVAILABLE_LOCALES = array('ru', 'en');
Давайте посмотрим как и где эти локализационные константы используются:
Все это предназначено для создания многоязычных сайтов на основе Limb.
Обсуждение