Базовый принцип описан здесь — Интернационализация
В config/web.php подключаем файлы переводов для каждой категории
// ...
'i18n' => [
'translations' => [
'app' => [
'class' => 'yii\i18n\PhpMessageSource',
],
'admin' => [
'class' => 'yii\i18n\PhpMessageSource',
],
....
],
],
],
Файлы с переводами содержаться в папке @app\messages\код_языка\имя_группы.php
Для модулей — admin, accountant, methodist, student, teacher, user Для моделей из @app\models переводы указываем в файле @app\messages\код_языка\models.php Для остальных языковых переменных (шаблоны, виджеты и прочее, что не попадает в данные категории) — переводы размещаем в этом файле — @app\messages\код_языка\app.php
Пример — modules/admin/views/language/index.php:17 — указали для кнопки создания языка — перевод Yii::t('admin', 'Create Language') (категория — admin, языковая переменная — 'Create Language').
И соответственно добавляем данную переменную в массив в файл для русского языка messages/ru-RU/admin.php ` <?php return [ ...
'Create Language' => 'Добавить язык',
… ]; И в файл английского языка `messages/en-US/admin.php` <?php return [ ...
'Create Language' => 'Create Language',
… ]; `
Аналогичный принцип работы с моделями. Добавили языковую переменную в models/Language.php:46 — Yii::t('models', 'Public Name'), И потом добавили эти языковые переменные в файлы messages/en-US/models.php и messages/ru-RU/models.php
При добавлении новых языков создаём в папке messages папки с новыми языками с аналогичными именованными вложенными файлы.