2013-08-05 56 views
2

請參閱:http://jsfiddle.net/cyclomarc/36VS3/1/Ember:如何翻譯使用i18n庫的佔位符?

我使用Ember i18n lib進行翻譯。如何在Ember.TextField視圖中使用翻譯後的字符串?

同樣適用於textarea視圖和選擇視圖。

<script type="text/x-handlebars"> 
    <h2>Ember Translate placeholder</h2> 
    {{t T1005}}<br> 
    {{view Ember.TextField placeholder="T1005"}} 
</script> 

輸入字段中的佔位符還應該說'Info',因此不是'T1005'(是字符串的引用)。

回答

6

你也可以做這種方式,通過增加Ember.I18n.TranslateableAttributes混入需要翻譯的視圖,如下所示:

Ember.TextField.reopen(Ember.I18n.TranslateableAttributes) 

然後後綴Translation添加到你想成爲翻譯知道屬性:

{{view Ember.TextField placeholderTranslation="T1005"}} 

在這裏看到你更新jsfiddle

希望它有幫助。

+0

完美的解決方案。我不知道你可以使用國際化的翻譯屬性。可能是一份錯誤的文檔? – cyclomarc

+0

我只是看了一下,這是記錄在這裏:https://github.com/jamesarosen/ember-i18n下**在任何對象翻譯**屬性** – intuitivepixel

+0

從我自己的壞閱讀:( - 我已經看過這個自述多個但忽略了關於可翻譯性質的重要部分。 – cyclomarc

2

你或許應該繼承Ember.TextField並添加佔位符計算性能:

App.TextField = Ember.TextField.extend({ 
    placeholder : function(){ 
     return Ember.I18n.t("T1005"); 
    }.property() 
}); 

並使用你的車把模板中的以下內容:

{{view App.TextField}} 
+0

能這樣確實工作(但隨後需要通過一個新的屬性通過從文本框的擴展文本字段變量T1005),但似乎是一個包含在i18n庫中的解決方案(請參閱@intuitivepixel的答案)。 – cyclomarc

4

這將工作翻譯任何屬性,而不僅僅是佔位符屬性。

翻譯文件:

{ 
    accounts:{ 
     emailAddress:'Email Address' 
    } 
} 

把手/灰燼標記:

{{input type="email" placeholder=(t 'accounts.emailAddress') }} 

標準標記

<input name="email" placeholder=(t 'login.email-placeholder')>