【发布时间】:2014-05-16 14:42:32
【问题描述】:
我正在使用翻译行为函数:__() 来翻译东西。它工作得很好。不幸的是,当我像这样更改控制器中的语言时:
Configure::write('Config.language', 'deu');
它改变了整个网站的语言:(
有没有办法只翻译特定部分? (在视图中) 例如,整个应用程序的语言是英语。但是对于一些 $this->element 我想要德语。
我的尝试:在视图中我像这样更改语言:
<?php
Configure::write('Config.language', 'deu');
echo __("Hello World");
?>
只有当 l18n.php 中的 CakeSession::read 部分被删除时才有效:
if (empty($language)) {
// if (CakeSession::started()) {
// $language = CakeSession::read('Config.language');
// }
if (empty($language)) {
$language = Configure::read('Config.language');
}
}
我可以重写 l18n.php,让它对我有用,但它是核心,我不想碰它。有没有办法让 CakeSession::write 在视图中? cakephp 文档说it is not possible。
【问题讨论】:
-
我确定这是重复的 - 但有什么能阻止您将语言配置::编写为 deu,然后在完成后返回?
-
但是当我在控制器中配置::write 时,它将翻译所有内容,整个应用程序。我想翻译视图中的特定元素(包含在 $this->element() 中)
-
我也在视图中尝试过,但语言不会改变。 :(
-
您的尝试不存在问题 - 除非在会话 that just works 中定义了语言。
-
是的,它应该可以工作,但它不是,如果我在视图中设置语言并打印 l18n.php 中的 $language 不会改变。只有当我更改控制器中的语言时它才会改变,而不是视图。
标签: cakephp