0

私は翻訳に使用しており、 ember-i18n wikiember-i18nで説明されているようにライブで翻訳をフェッチしようとして います。翻訳をバックエンドからロードする代わりに、静的ファイルからロードします。ファイルをフォルダーに配置し、サービスを使用してそれらを取得します。lang.json/public/i18n/

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 のみが含まれています。

{
  "key.foo": "Foo",
  "key.bar": "Bar"
}

開発では魅力的に機能しますが、テストの実行に問題があります。取得した json にはlang.jsonファイルのコンテンツが含まれていますが、サービスには読み込まれていませんi18n(たとえば、-sI see missing translation xxxEverywhere でテストを実行すると、.

さらに、テストの実行はますます遅くなり、10 ~ 15 回のテストの後、タイムアウト エラーがスローされます。

してはいけないことをしているのですか、それとも何か足りないことがありますか? ありがとう

私が使用している:
ember-cli: 2.6.2
ember: ~2.6.0
ember-i18n: ~4.2.1

4

1 に答える 1

0

コンセプトのためだけに(レポ用)1)tests/index.html次の方法で開いて変更します

<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

export default function() {
  this.get("/i18n/:lang", function() {
    return window.translations;
  });
}

ここでの変更のGit diff http://pastebin.com/eGwAXM77

于 2016-07-17T15:45:42.200 に答える