2014-01-17 31 views
0

我在我的web應用程序上有不同的語言。小鬍子發送數據到php函數?

現在我想寫:關於我們在鬍子文件。

但隨後根據用戶選擇的語言(視圖/控制器中的邏輯),它應該顯示關於我們的正確翻譯。

翻譯會是這樣我已存儲了整整一段話:關於我們

我看到另一個web應用,做這樣說:

{{#lang}}About us{{/lang}} 

但我不明白這是怎麼工作的?視圖模型中的lang()方法如何獲取#lang內的數據,「關於我們」 - 然後用其他東西替換它(如果存在)。

(程序抓取從數據庫或文件翻譯,符合「關於我們」 做我並不需要知道

我不知道這是可能扭轉這樣,發送「關於我們「在視圖模型中的lang()方法?

希望有人可以用例子來解釋。由於

這是我試過了,在我看來:

public function lang($input) 
{ 
    return "test" . $input; 
} 

但是,這是行不通的。 (無參數傳遞給郎())

我使用的鬍鬚(Kostache)連同PHP的MVC框架(Kohana的)

回答

0

頭痛的很多後,非常糟糕的谷歌搜索結果,這裏是正確的解決方案,如果您使用Kostache 2和Kohana的3.2/3.0 :

SIMPLY,在factory()方法的Kohana_Kostache類中Mustache_Engi NE intializes,你加一個輔助功能:

'helpers' => array(
        'i18n' => function($text) { 
         return __($text); 
        }), 

由於我使用Kohana的翻譯系統,我把它叫做國際化,並將其返回__($文本),這是是否存在翻譯的文本$。

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 
+0

你好。我不能爲$ data-> lang這樣做一個函數,這會產生語法錯誤? – Karem