我正在使用 l20n 的 bower 版本来本地化 ember-cli 应用程序。
我正在使用以下流程本地化应用程序:
我创建了一个初始化程序,它根据用户的语言设置创建一个 l20n 上下文对象。
使用 ember 助手,我将每个单词从 DOM 传递到要翻译的 l20n 上下文对象。
在车把模板中:
{{l20n-helper 'stringVariable'}}
在 ember 助手中:
export function translate(word){
return Ember.l20n.getSync(word);
}
export default Ember.Handlebars.makeBoundHelper(translate);
这行得通,但我刚刚在 Ember 上标记了一个全局变量,以使帮助程序可以访问 l20n 上下文。我知道这不是最佳做法。我试图弄清楚如何创建一个仅用于存储 l20n 上下文对象的 ES6 模块。这样,在我的 ember 助手中,我可以这样做:
import l20n from "/????"
并防止 l20n 对象陷入应用程序的其余部分。
提前感谢您的帮助!!!
更新:
一种解决方案是使用 application.register,如下所示:
application.register('l20n:main', ctx, {instantiate: false});
但是,那么我的问题将是从我的助手访问容器。这个:
var l20n = this.container.lookup('l20n:main');
将不起作用,因为容器对助手不可用!