Проблема с интернационализацией на CakePHP 2.0 - PullRequest
1 голос
/ 31 октября 2011

Процесс интернационализации не работает.

Я запустил cake i18n export.После этого я поместил переводы в файл ".po" в папке app/locale/por/LC_MESSAGES/default.po..

. Я вызвал метод beforeFilter() в AppController Configure::write('Config.language', 'por');.

Но перевод нене показывается в __() -методах.

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Вот несколько возможных предложений:

• Очистить кэш Cake в PATH_YOUR_APP/tmp/cache. Удалите файлы в models и persistent, но не в самих каталогах. Я полагаю, что постоянные - это то место, где локализованные строки сохраняются, но, разумеется, пустые обе.

• Вы переопределяете beforeFilter на любом из ваших контроллеров, кроме AppController? Если это так, вызовите parent::beforeFilter(); в методе контроллера beforeFilter, прежде чем обрабатывать другие вещи, например:

public function beforeFilter() {
  parent:beforeFilter();
  //Do stuff here
}

• Как вы создали файлы перевода? Есть ли файл .mo в каталоге .po? Я считаю, что прямое редактирование файлов .po и .pot не рекомендуется из-за проблем с кодировкой символов (но я могу ошибаться). Poedit - хороший инструмент для манипулирования файлами .po, хотя он может быть более надежным.

0 голосов
/ 31 октября 2011

Еще несколько вещей для проверки

  1. Проверьте, правильно ли выбран язык вашего браузера. Португальский в качестве первого языка выбора
  2. Ваши ключи msgid и msgstr в отдельных строках и правильно ли заключенытекст в двойных кавычках?
  3. Я не эксперт CakePHP, но попробуйте перенести конфигурацию в bootstrap.php.Ваш код кажется логичным.
...