Yii2 локализация

Yii2 локализация

За локализацию приложения Yii2 отвечает класс yii\i18n\I18N. Данные локазиции могут зраниться как в БД так и просто в файле — описание этого способа и описывается в данной статье.

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

 

...,

// язык перевода определяет, в каком виде будет отображаться текущая страница

'language' => 'en-US', // 'ru-RU'

...,

'components' => [

    'i18n' => [

        'translations'=>[

            // app* - это шаблон, который определяет, какие категории

            // обрабатываются источником. В нашем случае, мы обрабатываем все, что начинается с app

            'app*'=>[

                'class'=>yii\i18n\PhpMessageSource::className(),

                //

                'basePath'=>'@app/messages',

                // исходный язык

                'sourceLanguage'=>'ru-RU',

                // определяет, какой файл будет подключаться для определённой категории

                'fileMap'=>[

                    'app'=>'app.php',

                    'app/error'=>'error.php',

                ]

            ],

        ]

    ],

...

Если вы не хотите конфигурировать fileMap, можно положиться на соглашение, что название категории является именем файла. Например, категория app/error относится к файлу app/error.php в рамках basePath.

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

 

// app - категория

echo \Yii::t('app', 'Авторизация');

Если язык приложения en-US, то переводя сообщение \Yii::t('app', 'Авторизация') Yii будет искать файл @app/messages/en-US/app.php, чтобы получить список доступных переводов:

 

// Файл перевода @app/messages/en-US/app.php

return [

    'Авторизация'=>'Authorization',

    ...

];

Переводы по умолчанию

 

    ...,

'components' => [

    'i18n' => [

        'translations'=>[

            // переводы по умолчанию для категорий, которые не попадают в другие переводы

            '*' => [

                'class' => 'yii\i18n\PhpMessageSource'

            ],

    ...

echo Yii::t('not_specified_category', 'message from unspecified category');

— Перевод будет загружен из файла @app/messages/<LanguageCode>/not_specified_category.php

 

Возможно Вас заинтересуют эти материалы

Yii2: Работа с ресурсами

В данной статье разбираются варианты создания менеджера ресурсов в Yii2 и их использование, а так

Yii2 Возможность: темы

Тема - это каталог с файлами видов контроллеров (views) и шаблонов (layouts). Каждый файл в

Yii2 basic на разделяемом хостинге

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