Служить статическим файлом JSON для переводов

Я использую ember-i18n для переводов, и я пытаюсь получить переводы вживую, как описано в вики ember-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"
}

В dev это работает как шарм, но у меня есть некоторые проблемы с запуском тестов. Полученный json содержит содержимое lang.json файл, но он не загружен в i18n служба (например, если я запускаю тест с -s я вижу missing translation xxx везде.

Кроме того, выполнение теста становится все медленнее и медленнее, и после 10-15 тестов оно выдает ошибки тайм-аута.

Я делаю что-то, что не должно быть сделано, или я что-то упускаю? Спасибо

Я использую:
Ember-Cli: 2.6.2
Ember: ~ 2.6.0
ember-i18n: ~ 4.2.1

1 ответ

Решение

Просто для концепции (для вашего репо) 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

Другие вопросы по тегам