Инструменты пользователя

Инструменты сайта


limb2:ru:i18n

Мультиязычность в Limb2 (I18N и L10N)

Для обращения с различными строками l10ns и i18n Limb использует классы 'locale' и 'strings' (папка 'LIMB_DIR/core/lib/locale/').

  • класс locale используется для дат, валют и форматирования числовых данных. ini файлы для различных местных настроек сохраняются в папке LIMB_DIR/core/locale
  • класс strings используется для выбора локализованных строк. ini файлы с локализованными строками расположены в:
    • PROJECT_DIR/core/strings
    • LIMB_DIR/core/strings

настройки L10N

Вы можете найти настроечные файлы l10n в каталоге 'LIMB_DIR/core/locale/'. В настоящее время поддерживаются 2: en.ini и ru.ini. Эти файлы содержат некоторые специфичные для l10n вещи: название страны, название языка, формат даты, дни недели, названия месяцев, кодировку страниц и т.д.

I18N strings

В настоящее время имеются локализованные строки для английского и русского языков. Типичный пример использования класса 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):

  • 'PROJECT_DIR/core/strings' . $file_name . '_' . $locale_id . '.ini'
  • 'LIMB_DIR/core/strings' . $file_name . '_' . $locale_id . '.ini'

Если ни один файл не найден возникает критическая ошибка.

Общий формат для 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 использует две константы для работы с локализацией:

  • CONTENT_LOCALE_ID - текущая локализация для контентных объектов
  • MANAGEMENT_LOCALE_ID - локализация текущего пользователя. Она используется для локализованных сообщений управления, ошибок валидации, имен действий и так далее.

Каждый объект сайта в 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'); 

Давайте посмотрим как и где эти локализационные константы используются:

  • MANAGEMENT_LOCALE_ID - значение по умолчанию в strings :: get(…)
  • CONTENT_LOCALE_ID - значение по умолчанию в locale :: instance();
  • Тэг <locale:STRING name='string_name' file='strings_file_name' locale_type='{management|content}'> по умолчанию MANAGEMENT_LOCALE_ID
  • Тэг <locale:DATE_FORMAT hash_id='var_name' format='format_type' type='{stamp|string}' locale_type='{management|content}'> по умолчанию CONTENT_LOCALE_ID
  • Тэг <locale:LOCALE name='locale_name' locale_type='{management|content}'> по умолчанию CONTENT_LOCALE_ID
  • Любой тэг формы (т.к. INPUT, BUTTON и т.д.) имеет атрибуты locale_type, locale_value, locale_file с задаными значениями локализации, по умолчанию MANAGEMENT_LOCALE_ID
  • <metadata:CHARSET> отображает кодировку страницы, использует только MANAGEMENT_LOCALE_ID
  • Все ошибки проверки (валидации) форм отображаются с использованием MANAGEMENT_LOCALE_ID

Все это предназначено для создания многоязычных сайтов на основе Limb.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 ______  ____    __    ____   ___ 
/_  __/ / __ \  / /   / __/  / _ \
 / /   / /_/ / / /__ / _/   / // /
/_/    \____/ /____//_/    /____/
 
limb2/ru/i18n.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)