2014-04-29 36 views
0

我剛開始研究使用ember-i18n.js進行本地化的現有Ember.js項目。從控制器屬性中獲取ember-i18n.js翻譯密鑰

Ember.Mixin.create({ 
    setupController: function (controller, model) { 
     controller.set("somePropertyName", "my.translation.key"); 
    } 
}); 

我定義的另一個幫手,讓我得到的,而不是通過它直接從上下文屬性的轉換鍵,例如我可以使用{{tr someContext.someProperty}}而不是{{t "my.translation.key"}}

Ember.Handlebars.registerBoundHelper('tr', function(property, options) { 
    return Ember.I18n.t(property); 
}); 

我是相當新的灰燼,讓我的思維過程是,我只想能夠換出在我的模板,替換{{tr somePropertyName}}{{somePropertyName}}。這沒有用。當我在助手中設置一個斷點時,我發現property總是未定義的。

我也嘗試修改我的幫手使用Ember.Handlebars.get()如演示here,但這也解決了undefined。

假設我無法更改翻譯密鑰的來源,是否有從控制器到幫助程序的翻譯密鑰的正確方法?

回答

0

你在做什麼應該沒問題 - 幫助程序的property參數只是一個字符串,並且從控制器傳遞字符串到模板(然後傳遞給助手)很簡單。

所以,我猜(這只是一個沒有jsbin的猜測),要麼你有一個編碼問題的地方。或者你使用mixin可能會出現一些奇怪的現象。

我會看到字符串屬性從你的mixin到控制器到幫助器的模板有多遠。

如果更改{{tr property}}是否將字符串寫出到模板中?如果沒有,那麼該屬性不會被設置在您的控制器上。

如果你有一個jsbin,那麼這將更容易看到發生了什麼。