Многоязычный сайт. Изменение строк исходного языка.

Здравствуйте.

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

Подскажите, пожалуйста, так оно и есть?

Если да, то это не только очень неудобно, но и опасно: можно ошибиться или забыть исправить.

Насколько мне известно - так оно и есть :)

Ошибиться можно и в php-файле. Точку с запятой не поставил и уже катастрофа, тренируйте внимательность ;)

Если боитесь ошибиться, то можно скрипт написать, который для всех строк проверяет:


$error = $key === Yii::t($group, $key); // $group - текущая группа, к примеру 'errors'

Опасность ошибок меня волнует при изменении строки в исходном языке. Но основная проблема в том, что надо править все языки, если хочешь чуть-чуть подправить основной. Это очень неудобно.

А вариант с основным языком из констант можно использовать? Не будет ли каких-то проблем при этом?

Ну если только в наименовании констант ошибетесь ;) Но я бы все равно строки использовал

Вообще да, интересное замечание по поводу языка, интересно почему так сделано ? видимо предполагают что перевод основного меняться никогда не будет…

в нашем проекте используются именно константы для обозначения текстовых переменных, только framwork у нас свой, думаем переходить на yii.

Нет, это не так.

Исходные ключи выводятся только в том случае, если нет соответствующего файла перевода.

Т.е. создайте файл перевода для основного языка и меняйте только в нем.

Можно вообще использовать константы или строки типа "USER_NOT_REGISTERED_MESSAGE" в качестве ключей.