2

アプリで Ember i18n を使用しています。また、コントローラーで翻訳文字列を使用したいと考えています (ほとんどの場合、アラートまたは確認メッセージで)。これはどのように行うことができますか?

http://jsfiddle.net/cyclomarc/36VS3/2/を参照

ボタンをクリックすると、「T1005」ではなく「情報」が警告されます...

<script type="text/x-handlebars">
    {{t T1005}}<br>
    <button {{action 'clickMe' content}}>{{t T1005}} - Click me</button>
</script>

CLDR.defaultLanguage = 'en';

App.ApplicationController = Ember.Controller.extend({
    clickMe: function(){
        alert('T1005');
    }
})

可能な回避策は、アラートを使用しなくなり、確認して、たとえばブートストラップの代替手段に置き換えることであることを知っています。ただし、特定のケースでは、Javascript で文字列を処理したい場合があると想像できます (たとえば、jQuery などを介して特定のラベルを更新するなど)。

コントローラーで i18n 文字列を使用する方法についてのアイデアは役に立ちます。i18n ライブラリの使用は、アプリケーションのすべての側面を翻訳できる場合にのみ役立ちます...

4

4 に答える 4

4

ちょうど解決策を見つけました。経由で文字列にアクセスするだけですEmber.I18n.t("T1005");

JSFiddle の更新: http://jsfiddle.net/cyclomarc/36VS3/7/

于 2013-08-05T21:05:45.947 に答える
1

ここで遅くなるかもしれませんが、ここに記載されているようにミックスインを使用するのはどうEm.I18n.TranslateablePropertiesですか?

次のようなことができます:

App.ApplicationController = Ember.Controller.extend(Em.I18n.translateableProperties, {
    messageTranslation: 'T1005',

    clickMe: function(){
        alert(this.get('message'));
    }
});

テンプレートに{{message}}は、翻訳も保持されます。

于 2014-01-30T14:39:16.810 に答える