Как изменить основное сообщение YII, если не существует файла перевода? - PullRequest
2 голосов
/ 06 февраля 2010

Yii не предоставляет файл сообщений перевода для языка en_us. Вместо этого мы должны полагаться на правильность основных сообщений.

Если бы мне удалось выяснить, где хранятся основные сообщения, я все равно не хотел бы связываться с основным файлом, потому что, A. это опрометчиво, и B. будущие версии будут перезаписывать мои изменения.

Является ли моя единственная альтернатива копировать любой файл сообщений на другом языке и вручную редактировать каждое сообщение так, чтобы переведенное сообщение было таким же, как и сообщение на английском языке (с моими исправлениями?) ради одного слова, которое нужно исправить.

Причина, по которой я это поднял, заключается в том, что ...

Если вы перейдете на несуществующую страницу, появится сообщение об ошибке: 'Запрошенное представление "{имя}" не найдено.' Я думаю, что это должно сказать: 'Запрошенное представление "{имя}" не найдено.'

Я утверждаю, что они смешивают времена в этом утверждении («требуемый» = прошедшее время и «есть» = настоящее время).

Правильно или нет, мне «неудобно» их грамматика.

Ответы [ 2 ]

4 голосов
/ 18 ноября 2010

Нет необходимости исправлять основные файлы, чтобы заставить это работать. Взгляни на http://www.yiiframework.com/wiki/18/how-to-customize-yii-core-messages/

Если вы попытаетесь установить язык en_us в main.php, надеясь использовать локальный yii.php в protected / messages / en_us, он не будет работать. Это не будет переводиться, потому что языковая настройка 'en_us' в main.php такая же, как основной язык; поэтому вам нужно заставить перевод.

Решение состоит в том, чтобы создать новый язык, который переопределяет только сообщения, которые вы хотите изменить / исправить. Итак, следуя примеру, показанному по ссылке выше, используйте en вместо de в качестве языка в main.php. Создайте папку en, а не папку de в папке protected / messages.

Затем создайте свой настроенный файл yii.php в локальной папке en, ​​которая в вашем случае будет содержать только

return array (
  'The requested view "{name}" is not found.' => 'The requested view "{name}" was not found.',
);

ЭТОТ путь, не нужно настраивать основные файлы; а также, Ваши изменения останутся при обновлении версии фреймворка.

Как к вашему сведению, IF вызов Yii :: t (' yii ', ...), который вы нашли с помощью GREP, фактически соответствует Yii :: t (' zii ', ...) тогда вам нужен файл zii.php , а не файл yii.php в защищенной папке / messages / en. Он будет использовать тот же формат, что и код yii.php, показанный выше.

Это полезно для сообщений, подобных возвращаемому, когда нет результатов поиска.

4 голосов
/ 06 февраля 2010

Yii с открытым исходным кодом. Почему бы не отправить свой патч?

Сообщения можно найти в yii-только для чтения / framework / messages /, вы можете посмотреть yii-только для чтения / framework / messages / config.php.

Кроме того, вы можете использовать команду сообщения для yiic.

Что касается актуальной проблемы, вы можете найти любое сообщение с помощью fgrep:

fgrep -rn "Запрошенное представление" *

И результат:

framework/web/actions/CViewAction.php:110:              throw new CHttpException(404,Yii::t('yii','The requested view "{name}" is not found.', 

Итак, отправляйтесь туда, проверьте ствол SVN, измените его, затем "svn diff" и отправьте свой патч в код Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...