Ситуация следующая. Проект реализован на русском языке, но в некоторых случаях могут пролетать сообщения на английском. Ранее стояло значение по умолчанию как en-US, но в настоящий момент внедряется интернационализация и появилась необходимость переводить интерфейс приложения на английский.
Есть конфигурация
return [
...,
'language' => 'ru-RU',
'sourceLanguage' => 'ru-RU',
...,
]
и
return [
...,
'components' => [
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@frontend/messages',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
],
],
],
],
...,
];
Проблема в том, что если исходный язык и язык перевода совпадают, тогда Yii2 не переводит, что логично.
Нашёл три решения данной проблемы, но все костыльные:
- Сделать в @frontend/messages' директорию, на пример, ru-RU2 и язык перевода сделать ru-RU2.
- Сделать 'sourceLanguage' => null,
- Сделать 'sourceLanguage' => 'ru',
Есть ли более правильные способы решения данной проблемы через конфигурацию?UPDATE.
Решение:
Добавить в конфигурацию
'forceTranslation' => true,return [
...,
'components' => [
'i18n' => [
'translations' => [
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@frontend/messages',
'fileMap' => [
'app' => 'app.php',
'app/error' => 'error.php',
],
'forceTranslation' => true,
],
],
],
],
...,
];