Yii2 Basic настройки:
'language' => 'ru-RU',
'sourceLanguage' => 'en-US',
Код: Выделить всё
echo \Yii::t('app', '{n,plural,=0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# котэ}}!', ['n' => 5]);
5 котэ!
Согласно руководству результат верный:
- базовый язык, как рекомендовано en-US
- строка не найдена в базе переводов и поэтому применяются plural rules для sourceLanguage
- для английского, это "other" = "котэ"
Но ожидается "5 котов!"
Мои предложения:
Функция yii\i18n\I18N::translate()
Код: Выделить всё
91: return $this->format($message, $params, $messageSource->sourceLanguage);
Код: Выделить всё
91: return $this->format($message, $params, $language);
У себя я этот вариант проверил - выводит все правильно "5 котов".