首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪里存储l20n ctx对象

在哪里存储l20n ctx对象
EN

Stack Overflow用户
提问于 2015-02-19 04:45:06
回答 1查看 118关注 0票数 2

我正在使用l20n的保龄球版本来本地化一个成员-cli应用程序。

我使用以下流程来本地化应用程序:

  1. 我创建了一个初始化器,它根据用户的语言设置创建一个l20n上下文对象。
  2. 使用成员助手,我将DOM中的每个单词传递给要翻译的l20n上下文对象。

在车把模板中:

代码语言:javascript
复制
{{l20n-helper 'stringVariable'}}

在余烬助手中:

代码语言:javascript
复制
export function translate(word){
  return Ember.l20n.getSync(word);
}
export default Ember.Handlebars.makeBoundHelper(translate);

这是可行的,但我只是将一个全局变量标记到了Ember上,以便使帮助程序可以访问l20n上下文。我知道这不是最好的做法。我正在研究如何创建一个只用于存储ES6上下文对象的l20n模块。这样,在我的余烬帮手里面,我就可以做:

代码语言:javascript
复制
import l20n from "/????"

并防止l20n对象陷入应用程序的其余部分。

提前感谢您的帮助!

更新:

一个解决方案是使用application.register,如下所示:

代码语言:javascript
复制
 application.register('l20n:main', ctx, {instantiate: false});

但是,我的问题将是从我的助手访问容器。这是:

代码语言:javascript
复制
var l20n = this.container.lookup('l20n:main');

不会工作,因为容器是不可用的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-02-19 18:29:35

所以,原来我的助手已经可以访问这个容器了!只有这样我才能让它发挥作用:

代码语言:javascript
复制
import Ember from 'ember';

export function translate(word) {
  var ctx = this.container.lookup('l20n:main');
  return ctx.getSync(word);
}

export default Ember.Handlebars.makeBoundHelper(translate);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28598736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档