我的网络应用程序上有不同的语言。
现在我想写一下:在胡子文件中关于我们。
但是根据用户选择的语言(视图/控制器中的逻辑),它应该显示关于我们的正确翻译。
翻译将是我存储的确切词语:关于我们
我见过另一个这样做的web应用程序:
{{#lang}}About us{{/lang}}
但我不明白这是如何运作的?视图模型中的lang()方法如何在#lang,“关于我们”中获取数据 - 然后将其替换为其他内容(如果存在)。
(从数据库或文件中获取翻译的程序,与“关于我们”匹配我不需要知道)
我不知道有可能像这样反转,将“关于我们”发送到视图模型中的lang()方法?
希望有人可以解释并举例说明。感谢
在我看来,这就是我的尝试:
public function lang($input)
{
return "test" . $input;
}
但这不起作用。 (没有参数传递给lang())
我在MVC框架中使用Mustache(Kostache)和PHP(kohana)
答案 0 :(得分:0)
假设您将胡须定义为$m
,则在解析模板时,以下内容会添加函数lang
。
这里的关键是在渲染时将函数传递给小胡子。
$data = new StdClass;
$data->lang = function($text) {
return "Requested lang: $text";
}
$m.render($template, $data);
此模板
{{#lang}}About us{{/lang}}
会变成
Requested lang: About us
答案 1 :(得分:0)
经过很多头痛,google结果非常糟糕,如果你使用Kostache 2和Kohana 3.2 / 3.0,这里是正确的解决方案:
简单地说,在Mustache_Engine初始化的factory()方法的Kohana_Kostache类中,你添加了一个辅助函数:
'helpers' => array(
'i18n' => function($text) {
return __($text);
}),
由于我使用Kohana翻译系统,我将其称为i18n并返回__($ text),如果存在则翻译为$ text。