\Language

Многоязычность

Основная задача класса - перевод интерфейса на различные языки. Но с помощью этого класса можно еще и склонять слова в различных падежах. Переводы хранятся в каталоге language. Основной язык системы - русский, поэтому файл language/ru/ru.php почти пуст, а language/ru/ru.js и вовсе отсутствует.

Файлы с переводами содержат только ассоциативный массив с переводами и ничего более. Этот массив имеет следующие ключи.

  • name - название языка
  • common - общие переводы, они используются, если не найдены переводы
  • common$Dictionary - Общие переводы для всех справочников
  • common&Search - Поиск (условия)
  • common&Filter - Фильтры
  • common&Remind - Напоминания
  • common&Create - Меню "Создать"
  • common&Domain - Значения доменных полей
  • sections - Переводы в разделах. Содержит ассоциативный массив. Каждый ключ - код раздела, для которого определяется перевод. Для каждого раздела возможны уточнения, по примеру для раздела Компании (Account):
    • Account - Общие переводы для раздела
    • Account&Grid - Таблица раздела
    • Account&Details - Вкладки раздела
    • Account&Search - Поиск по разделу
    • Account&Card - Карточка раздела
  • dictionaries - Справочники. Содержит ассоциативный массив. Каждый ключ - название таблицы справочника, для которого определяется перевод. Для каждого справочника возможны уточнения, по примеру для раздела "Типы компаний" (iris_accounttype):
    • iris_accounttype - Справочник
    • iris_accounttype&Card - Справочник в карточке
    • iris_accounttype&Grid - Справочник в таблице
    • iris_accounttype&Filter - Справочник в фильтре

Для примера см. файл language/en/en.php.

Этот класс выполнен по шаблону Singleton.

Summary

Methods
Properties
Constants
getInstance()
setLanguage()
t()
No public properties found
SECTION
DICTIONARY
No protected methods found
No protected properties found
N/A
No private methods found
No private properties found
N/A

Constants

SECTION

SECTION

Раздел

DICTIONARY

DICTIONARY

Справочник

Methods

getInstance()

getInstance() : \Language

Возвращает единственный экземпляр класса

Returns

\Language

Единственный экземпляр

Пример

  $T = Language::getInstance();
  echo $T->t('Перевести эту фразу');

setLanguage()

setLanguage(string$language_code) : void

Поменять текущий язык

При смене языка интерфейс не перерисовывается. Этот метод используется ядром для выбора языка сразу после входа в систему.

Parameters

string $language_code

Код языка. Должен совпадать с названием каталога в language. Необязательный параметр. По умолчанию используется язык, указанный в сессии.

t()

t(string$message, string$section, string$type, int$section_type) : string

Выполнить перевод фразы на текущий язык

Parameters

string $message

Сообщение, которое необходимо перевести

string $section

Необязательный параметр. Код раздела или справочника, в котором необходмио выполнить перевод. Если перевод для этого раздела не найден, то будет выполнен поиск фразы среди общих переводов. Регистр важен.

Примеры: 'Account', 'Contact', 'Task'
string $type

Необязательный параметр. Уточнение, где именно искать перевод. Регистр важен.

Примеры: 'Card', 'Filter', 'Domain'
int $section_type

Необязательный параметр.

  • Language::SECTION - искать перевод для раздела.
  • Language::DICTIONARY - для справочника.

Returns

string —

Переведенная строка. Если перевод не был найден, то возвращается исходная строка.

Пример

  $T = Language::getInstance();
  echo $T->t('Перевести эту фразу');
  echo $T->t('Перевести эту фразу для раздела Компании', 'Account');
  echo $T->t('Для карточки компании', 'Account', 'Card');
  echo $T->t('Для справочника типов компаний',
          'iris_accounttype', null, Language::DICTIONARY);
  echo $T->t('Для справочника типов компаний в фильтрах',
          'iris_accounttype', 'Filter', Language::DICTIONARY);