CakePHP 2.1 .po文件/翻译不起作用

Chr*_*ang 5 translation cakephp cakephp-2.1

<?php echo __("this is my string"); ?>在视图中使用以多种语言显示文本.我为德语创建了一个.po文件目录:

=> app/Locale/ger/LC_MESSAGES/default.po

msgstr"这是我的字符串"

msgstr"die ist meine zeichenkette"

当我添加Configure::write('Config.language','ger');到我的AppController.php beforeFilter函数时,文本仍然是"这是我的字符串".即使我使用不同的msgstr为英语创建.po,文本仍然保持不变.

我是否必须更改特定设置才能激活翻译?


我有一个跟进问题:我添加Configure::write('Config.language','eng');core.php来设置我的默认语言,但现在我无法更改该值,即使我尝试在AppFtroller.php beforeFilter中覆盖它:

Configure::write('Config.language', 'deu'); //'de' also doesn't work
CakeSession::write('Config.language', 'deu'); //'de' also doesn't work
Run Code Online (Sandbox Code Playgroud)

如果我更改core.php中的值它完全正常但是一旦在core.php中设置我就无法改变它.

解决了:啊,我忘了parent::beforeFilter();在所有控制器的beforeFilter函数里面添加.


附加信息:

  • 如果要定义默认语言(通常也是如此),请添加Configure::write('Config.language', 'eng');core.php

del*_*dan 9

您可以查看文件lib/Cake/I18n/L10n.php,了解如何调用每种语言.

德语设置:

Configure::write('Config.language','de');
Run Code Online (Sandbox Code Playgroud)

=> app/Locale/deu/LC_MESSAGES/default.po


mar*_*ark 6

它的"deu"不是"ger"

CakePHP使用来自http://www.loc.gov/standards/iso639-2/php/code_list.php的官方(T)代码,对于CakePHP 1.3,它在国际化您的应用程序中记录:

三字符语言环境代码符合ISO 639-2标准,但如果您创建区域语言环境(en_US,en_GB等),蛋糕将在适当时使用它们.

ISO 639-2 |  ISO 639-1 | English name | French name | German name |
Code      |  Code      | of Language  | of Language | of Language |
-------------------------------------------------------------------
ger (B)   |            |              |             |             |
deu (T)   |  de        | German       | allemand    | Deutsch     |
Run Code Online (Sandbox Code Playgroud)