首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为翻译提供静态json文件

为翻译提供静态json文件
EN

Stack Overflow用户
提问于 2016-07-12 17:27:16
回答 1查看 565关注 0票数 0

我使用ember-i18n进行翻译,我试图像成员-i18n维基中描述的那样实时获取翻译,而不是从后端加载翻译,而是从静态文件中加载它们。我将文件lang.json放在/public/i18n/文件夹中,并使用服务检索它们:

代码语言:javascript
复制
export default Ember.Service.extend({
  ajax: inject.service(),  // ember-ajax service
  i18n: inject.service(),

  fetch(lang) {
    if (isEmpty(lang) || !ENV.APP.languages.contains(lang)) {
      lang = "en";
    }
    let url = "http://" + window.location.host + "/i18n/" + lang + ".json";
    return new Ember.RSVP.Promise((resolve, reject) => {
      this.get("ajax").request(url, {
        type: "GET"
      }).then((json) => {
        this.get('i18n').addTranslations(lang, json);
        resolve(lang);
      }, (params) => {
        Ember.Logger.debug(params);
        reject();
      });
    });
  }
});

lang.json文件只包含json:

代码语言:javascript
复制
{
  "key.foo": "Foo",
  "key.bar": "Bar"
}

在dev中,它工作起来很有魅力,但是我在运行测试时遇到了一些问题。检索到的json包含lang.json文件的内容,但它没有加载到i18n服务中(例如,如果我使用-s运行测试,就会看到到处都是missing translation xxx

此外,测试执行变得越来越慢,在10-15个测试之后,它会抛出超时错误。

我是做了不该做的事还是错过了什么?谢谢

我在用:

成员-cli: 2.6.2

成员:~2.6.0

成员-i18n:~4.2.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-17 15:45:42

只是为了概念(对于您的回购) 1),我打开tests/index.html并以下一个方式修改它

代码语言:javascript
复制
<script src="assets/vendor.js"></script>
<!-- Next was added -->
<script>
  var translations;
  $.getJSON('/i18n/en.json').then(function(data){ translations = data; });
</script>

2) app/mirage/config.js内部

代码语言:javascript
复制
export default function() {
  this.get("/i18n/:lang", function() {
    return window.translations;
  });
}

http://pastebin.com/eGwAXM77中更改的Git

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38335425

复制
相关文章

相似问题

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