Интернационализация в Yii2 с использованием констант

Рассмотрим как можно перевести интерфейс небольшого веб-сайта1. Создаем файл lang/ui.php с абстрактным описанием подписей в интерфейсе

define("UI_SITENAME", "UI_SITENAME");
define("UI_MENU_MAIN_LINK", 'UI_MENU_MAIN_LINK');
define("UI_ACCESS_DENIED", "UI_ACCESS_DENIED");
В этом файле слева - имя константы, справа ключ в файле перевода. 2. В папки messages/ru и messages/en добавляем переводы, отталкиваясь от ключей-констант из файла ui.php Файл messages/ru/app.php
<?php
return
[ 

UI_SITENAME => "Галерея",
    
UI_MENU_MAIN_LINK => 'Картины',

UI_ACCESS_DENIED => "Ограниченный доступ",
Файл messages/en/app.php
<?php
return
[ 

UI_SITENAME => "Gallery",
    
UI_MENU_MAIN_LINK => 'Pictures',

UI_ACCESS_DENIED => "Restricted access",
3. В представлениях используем Yii:t и ссылаемся на app как на категорию и указываем константы-ключи перевода
<h1><?= Yii::t('app', UI_LK); ?></h1>

<?= Yii::t('app',UI_LK_USERNAME); ?>: <?php echo $lk['username']; ?><br/>

<a href="/user/setemail/"><?= Yii::t('app', UI_LK_SETEMAIL_LINK); ?></a><br/>
<a href="/user/setpassword/"><?= Yii::t('app', UI_LK_SETPASSWORD_LINK); ?></a><br/><!-- comment -->
<hr/>
<a href="/user/forget/"><?= Yii::t('app',UI_LK_FORGET_LINK); ?></a>
в меню
if (Yii::$app->user->isGuest) { 
$custom_links = [
              [
                  'label' => Yii::t('app', UI_MENU_LOGIN_LINK), 
                  'url' => ['/user/login']
              ],
             [
                 'label' =>  Yii::t('app',UI_MENU_JOIN_LINK), 
                 'url' => ['/user/join']
             ]
    ];
                
 }
и так далее 4. Подключаем ui.php в конфигурацию (config/web.php) и добавляем локализацию
<?php
 require $_SERVER['DOCUMENT_ROOT'] . '/lang/ui.php'; 
$params = require __DIR__ . '/params.php';
$db = require __DIR__ . '/db.php';

$config = [
    'sourceLanguage' => 'tr',
    'language' => 'en'
Преимущества описания с помощью констант Доступно автодополнение в IDE Гугл-переводчик не переводит константы

Теги документа