我在视图中使用<?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 答案 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 |