Yii2. Интернационализация

07.03.2019

Теги: PHPWeb-разработкаYii2ТеорияФреймворк

Интернационализация (i18n) является частью процесса разработки приложения, которое может быть адаптировано для нескольких языков без изменения программной логики. Это особенно важно для веб-приложений, так как потенциальные пользователи могут приходить из разных стран.

В Yii приложении определены два языка: исходный язык и язык перевода. На исходном языке написаны сообщения в коде приложения. Если исходным языком задан английский, то в коде можно использовать конструкцию:

echo \Yii::t('app', 'I am a message!');

Язык перевода определяет, в каком виде будет отображаться текущая страница, т.е. на какой язык будут переведены оригинальные сообщения. Этот параметр может быть задан в конфигурации приложения:

<?php
/*
 * Файл config/web.php
 */
$config = [
    /* ... */
    'language' => 'ru-RU', // язык перевода — русский
    /* ... */
];

Кроме того, значение языка перевода можно установить в самом приложении:

\Yii::$app->language = 'ru-RU';
Значение по умолчанию для исходного языка — английский.

Перевод сообщений

<?php
/*
 * Файл config/web.php
 */
$config = [
    'id' => 'basic',
    'basePath' => dirname(__DIR__),
    // язык перевода — русский
    'language' => 'ru-RU',
    'components' => [
        /* ... */
        'i18n' => [
            'translations' => [
                'app*' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    // все переводы будут в файле messages/ru_RU/app.php
                    'fileMap' => [
                        'app' => 'app.php',
                    ],
                ],
            ],
        ],
    ],
    /* ... */
];
<?php
/*
 * Файл messages/ru_RU/app.php
 */
return [
    'Create' => 'Добавить',
    'Update' => 'Обновить',
    'Delete' => 'Удалить',
    'Submit' => 'Отправить',
];

Кроме хранения переводов в php-файлах (используя PhpMessageSource), Yii2 предоставляет ещё два класса:

  • yii\i18n\GettextMessageSource, использующий GNU Gettext для MO или PO файлов.
  • yii\i18n\DbMessageSource, использующий базу данных.

Дополнительно

Поиск: PHP • Web-разработка • Yii2 • Фреймворк • Интернационализация • i18n • ru-RU

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.