Skip to content
Bashka edited this page Apr 20, 2017 · 2 revisions

Плагин предоставляет механизмы интернационализации проекта, используя файлы локализации вида:

  // Файл _locale/ru_RU.php
  return [
    'hello' => 'привет',
    ...
  ];

Конфигурация

  • domain - адрес каталога, содержащего файлы локализации для данного домена (_locale по умолчанию)
  // Файл articles/index.php
  $sp = [
    'i18n' => [
      'domain' => '_locale', // Каталог для локализации текущей страницы
    ],
    ...
  ];
  ...

Функции

i18n_get_locale(int $category) : array

Предоставляет информацию о локали и кодировки для данной категории (см. setlocale).

  list($locale, $encoding) = i18n_get_locale(LC_CTYPE);

i18n_load_translate(string $domain, [string $locale]) : array

Загружает локализацию для данного домена и локали (LC_CTYPE по умолчанию).

  $translate = i18n_load_translate('_locale', 'ru_RU');

i18n(string $string, [string $domain], [string $locale]) : string

Выполняет локализацию сообщения для данного домена (_locale по умолчанию) и локали (LC_CTYPE по умолчанию).

  $loc = i18n('hello');

i18n_plural(numeric $number, string $plural, [string $domain], [string $locale]) : string

Выполняет плюрализацию числа в соответствии с конфигурацией для данного домена (_locale по умолчанию) и локали (LC_CTYPE по умолчанию).

  $plural = i18n_plural(5, '%d articles');

Важно: для плюрализации числа необходимо указать в конфигурации правила выбора формы.

Пример конфигурации для плюрализации:

  // Файл _locale/ru_RU.php
  [
    '' => [
      // Правило плюрализации
      'plural_forms' => function($n){
        if($n % 10 == 1 && $n % 100 != 11){
          return 0;
        }
        elseif($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20)){
          return 1;
        }
        else{
          return 2;
        }
      }
    ],
    '%d articles' => [
      '%d статья',
      '%d статьи',
      '%d статей'
    ],
  ]
Clone this wiki locally