5

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

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

msgstr "这是我的字符串"

msgstr "dies ist meine zeichenkette"

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

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


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

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

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

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


附加信息:

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

2 回答 2

9

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

德语设置:

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

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

于 2012-04-06T22:17:15.583 回答
6

它的“deu”不是“ger”

CakePHP 使用来自http://www.loc.gov/standards/iso639-2/php/code_list.php的官方 (T) 代码,对于 CakePHP 1.3,它记录在Internationalizing Your Application下:

三字符语言环境代码符合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     |
于 2012-04-06T22:16:34.567 回答