Yii2. Как использовать Yii::t?

/common/config/main.php

'
components' => [
        ...
        'i18n' => [
            'translations' => [
                '*' => [
                    'class' => 'yii\i18n\PhpMessageSource',
                    'basePath' => '@common/messages',
                    'fileMap' => [
                        'app' => 'app.php',
                        'app/auth' => 'auth.php'
                    ]
                ],
            ],
        ],


/common/messages/ru-RU/app.php

<?php
return [
    'City ID' => 'Город',
];


/common/config/params.php
<?php
return [
    'language' => 'ru-RU',
    'sourceLanguage' => 'ru-RU',


index.php
echo \Yii::t('app','City ID');
выводит City ID

Вопрос: что упустил?
  • Вопрос задан
  • 19608 просмотров
Решения вопроса 1
asf
@asf Автор вопроса
Всем спасибо. Вы были правы у меня не правильно указан sourceLanguage.
И еще пару моментов что бы переводы заработали:

1) перенес
<?php
return [
    'language' => 'ru-RU',
    'sourceLanguage' => 'ru-RU',

из /common/config/params.php в /common/config/main.php
2) изменил * на app* в настройках компонента
'i18n' => [
            'translations' => [
                'app*'=> [
                    'class' => 'yii\i18n\PhpMessageSource',

в результате все заработало.
p.s. если кто попадет в такую проблемную ситуацию как я первым делом посмотрите что выводят
echo \Yii::$app->language;
var_dump(\Yii::$app->i18n);
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
язык источника (тот, который вы используете внутри Yii::t) - русский. язык приложения (тот, на котором хотите отображать) - русский. что на что переводить?
echo \Yii::t('app','City ID');
Yii понимает это русским языком. Смените sourceLanguage
Ответ написан
Комментировать
Могу предположить следующее:
Когда совпадают language и sourceLanguage, то Yii даже не пойдет за переводом, а возьмет то, что и указанно. У вас это City ID.

P. S. Попробуйте изменить sourceLanguage, раз уж вы используете тут Yii::t('app','City ID') английский.
Ответ написан
Комментировать
@savelyev_andrey
Под скажите почему не переводятся сообщения типа Update {modelClass}?
Код в файле app.php
<?php
return [
    'Update' => 'Изменить',
	'Brandnames' => 'Брэнд',
	'Update {modelClass}'=>'Изменить {modelClass}',
];
?>

Остальные строчки переводит нормально
Ответ написан
Комментировать
at0m1x
@at0m1x
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы