我在视图中使用<?php echo __("this is my string"); ?>
来显示多语言文本。我为德语创建了一个.po文件目录:
=> app/Locale/ger/LC_MESSAGES/default.po
msgid "this is my string"
msgstr "dies ist meine zeichenkette"
当我在AppController.php的beforeFilter函数中添加Configure::write('Config.language','ger');
时,文本仍然保持为"this is my string"。即使我创建了另一个带有不同msgstr的英语.po文件,文本仍然保持不变。
我需要更改特定设置以激活翻译吗?
我有一个后续问题:我在core.php中添加了Configure::write('Config.language','eng');
来设置我的默认语言,但现在我无法更改该值,即使我尝试在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。