MegaMufa
@MegaMufa

I18n в Yii2 использование спец ключей вместо фразы на языке оригинала?

Добрый день.

Yii для локализации предлагает в коде программы указывать текст на одном языке, а для других языков подтягивать переводы. Вот так пишем в коде:
<?= \Yii::t('app', 'Hello {0}', $name); ?>
А вот так в словаре:
retunr [
  'Hello {0}' => 'Привет {0}',
];


Неудобно то, что в случае, например, исправления оригинальной фразы, придется редактировать этот ключь еще и во всех словарях. Или иногда вывает, что в эзыке оригинала две схожие фразы звучат идентично, но в переводе они все=жа различаются. Тут уже проблема дублирования ключей на лицо.

В качестве решения этой проблемы я хочу использовать универсальные ключи в коде. Примерно так:
<?= \Yii::t('app', 'user.greeting', $name); ?>
А вот так в словаре:
retunr [
  'user.greeting' => 'Привет {0}',
];


Кто-нибудь использовал такой подход? Стоит ли ожидать неприятностей из-за этого?
  • Вопрос задан
  • 367 просмотров
Решения вопроса 1
SamDark
@SamDark
Yii2 core team
Использовать ключи — нормальный подход. `sourceLanguage` укажите как `key` и вперёд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@matperez
Попробуйте. Не понравится - перейдете на исходный вариант.
Проблема дублирования ключей решается разделением строк на разные категории. Первый аргумент в Yii::t - это как раз категория.
То, что приходится редактировать словарь после изменения фразы - это нормально. Yii умеет сам извлекать фразы для словаря, нужно будет только найти в файле старый перевод и чуть поправив добавить к новой строке.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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