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

时间:2012-04-06 21:51:27

标签: cakephp translation cakephp-2.1

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

=&GT;应用程序/地点/ 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 以设置我的默认语言但现在我无法更改该值,即使我尝试覆盖它在 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中我就无法改变它。

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


其他信息:

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

2 个答案:

答案 0 :(得分:9)

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

德语的

设置:

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

=&GT;应用程序/地点/申/ LC_MESSAGES / default.po

答案 1 :(得分: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等),蛋糕将在适当时使用它们。

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     |