ember-cli アプリをローカライズするために、l20n の bower バージョンを使用しています。
次のフローを使用してアプリをローカライズしています。
ユーザーの言語設定に基づいて l20n コンテキスト オブジェクトを作成するイニシャライザを作成しました。
ember ヘルパーを使用して、各単語を DOM から l20n コンテキスト オブジェクトに渡して翻訳します。
ハンドルバー テンプレート内:
{{l20n-helper 'stringVariable'}}
残り火ヘルパーで:
export function translate(word){
return Ember.l20n.getSync(word);
}
export default Ember.Handlebars.makeBoundHelper(translate);
これは機能しますが、ヘルパーが l20n コンテキストにアクセスできるようにするために、グローバル変数を Ember にタグ付けしただけです。私はそれがベストプラクティスではないことを知っています。l20n コンテキスト オブジェクトを格納するためだけに機能する ES6 モジュールを作成する方法を見つけようとしています。そうすれば、ember ヘルパー内で次のことができます。
import l20n from "/????"
l20n オブジェクトがアプリの残りの部分を動かなくなるのを防ぎます。
助けてくれてありがとう!!!
アップデート:
1 つの解決策は、次のように application.register を使用することです。
application.register('l20n:main', ctx, {instantiate: false});
しかし、私の問題はヘルパーからコンテナにアクセスすることです。これ:
var l20n = this.container.lookup('l20n:main');
ヘルパーがコンテナーを使用できないため、機能しません!