Я устанавливаю локализацию на веб-сайте, но у меня проблемы.
Я нашел учебник, который делает именно то, что мне нужно: http://nuts-and-bolts-of-cakephp.com/2008/11/28/cakephp-url-based-language-switching-for-i18n- и-l10n-интернационализация и локализация / (непосредственно язык после имени хоста).
Поэтому я сделал все, что написано на этом сайте:
Мои ссылки хорошо сгенерированы, у меня нет каких-либо исключений / ошибок, файлы моих локалей читабельны, но когда я перехожу к шаблону, где я пытаюсь использовать переменную (), я просто вижу «testTranslation» как текст, не переведенный текст.
Почему это не работает? Похоже, он не может найти мои файлы, но я не знаю, почему 🙁
Любая помощь могла бы быть полезна!
Редактирование: я сделал некоторую отладку cakePhp, и кажется, что когда вызывается метод перевода файла i18n.php, я получаю $ domain = default_ger var. Мои переводы все в файлах default.po, и я полагаю, что он ищет default_ger.po? почему это? как я могу заставить его читать файл default.po?
Edit: Я нашел что-то: у меня была проблема с моим контроллером, я забыл объявить родительский :: beforeFilter () в моем детском контроллере, тогда метод в контроллере не был вызван, и язык всегда был немецким. После того, как я исправил это, французский и английский работают нормально, но немецкий язык по-прежнему отображает только ключ, а не значения, которые у меня есть в файле перевода. Это действительно странно, я удалил все файлы в кеш, удалил папку my / app / locale / ger и скопировал файл my / app / locale / fre в / app / locale / ger (без изменения чего-либо в файлах), и это все равно не работает. Что может быть иначе?
Попробуйте этот макет файла:
***\app\locale>tree /F ├───eng │ └───LC_MESSAGES │ default.po │ └───spa └───LC_MESSAGES default.po
Я, наконец, нашел проблему:
Мой контроллер приложений не был вызван, поэтому немецкий язык всегда использовался (потому что он работал один раз при смене языка на немецкий язык и регистрировал его через файлы cookie).
Все другие языки, кроме немецкого, правильно отображали мои ценности.
Поэтому я искал эту проблему, и я пытался использовать «deu» вместо «ger», и это сработало!
Папка locale должна быть «deu», значение языка может быть deu or ger.
Это очень странно, потому что для французов у меня есть «fre» (FREnch), а не «fra» (FRAnçais), и это работает.
Во всяком случае, эта работа с этим изменением