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



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

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

msgid"这是我的绳子"

msgstr"死亡是meine zeichenkette";

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

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


我有一个后续问题:我将Configure::write('Config.language','eng');添加到core.php以设置我的默认语言,但现在我无法更改该值,即使我试图在AppController.phpbeforeFilter中覆盖它:

Configure::write('Config.language', 'deu'); //'de' also doesn't work
CakeSession::write('Config.language', 'deu'); //'de' also doesn't work

如果我更改core.php中的值,它可以很好地工作,但一旦在core.php中设置,我就无法更改它。

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


附加信息:

  • 如果您想定义一种默认语言(通常会这样做),请将Configure::write('Config.language', 'eng');添加到core.php

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

德语设置:

Configure::write('Config.language','de');

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

其"deu"而非"ger"

CakePHP使用来自http://www.loc.gov/standards/iso639-2/php/code_list.php,对于CakePHP 1.3,它记录在"国际化您的应用程序:"下

三个字符的区域设置代码符合ISO 639-2标准,尽管如果您创建区域设置(en_US、en_GB等),cake将在适当的情况下使用它们。

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     |

最新更新