1

翻訳の非同期フェッチを実現しようとしています。ドキュメントが言うように、私はpublicOnlytoを設定しました:true

// config/ember-intl.js
module.exports = function() {
  return {
    publicOnly: true
  }
};

locales翻訳は/translationsフォルダに保存されるため、キーを設定するステップをスキップしました。

次に、beforeModelフックを変更して翻訳を非同期にフェッチする必要があります。ドキュメントがかなり曖昧なところです。

// app/routes/application.js
export default Ember.Route.extend({
  intl: Ember.inject.service(),
  async beforeModel() {
    let translations = await fetch('/api/translations.json');
    this.get('intl').addTranslations('en-us', translations);
    this.get('intl').setLocale('en-us');
  }
});

これらの行がどのように機能するか:

let translations = await fetch('/api/translations.json');
this.get('intl').addTranslations('en-us', translations);

実行時に、フォルダー内translations.jsonのどこにもファイルがありません。dist私はdist/translations/en-us.json自分の唯一無二の翻訳しか持っておらず、それを機能させる方法の手がかりもありません.

サービス APIaddTranslationsにメソッドのドキュメントがありません。

助けていただければ幸いです。

4

2 に答える 2

0

ドキュメントが明確でないことは間違いありません。応答オブジェクトは JSON 自体ではありません。フェッチのパスを変更し、単なる翻訳の代わりに translations.json() を追加します。

// app/routes/application.js
export default Ember.Route.extend({
  intl: service(),
  async beforeModel() {
    let translations = await fetch('/translations/en-us.json');
    this.intl.addTranslations('en-us', translations.json());
    this.intl.setLocale('en-us');
  }
});
于 2019-01-23T11:58:59.353 に答える