web-dev-qa-db-ja.com

Angular2 i18n言語スイッチ

私はする方法を探しています

  • 表示する現在の言語を動的に設定します。国際化についての最新のangular cookbook here に従いましたが、「ユーザーの言語はindex.htmlのグローバルdocument.locale変数 "

Angle2 + TypeScriptでこれをどのように動的に設定できますか?

これは公式のAngular2 plunkrからの私の試みです: https://plnkr.co/edit/lWV4VhzpWYnCXeDBpzsn?p=preview

document.locale='en';

typeScriptサービス内でwindow.documentを取得し、そこでロケールを変更しようとしましたが、呼び出され、ロケールが適切に設定されているにもかかわらず(コンソールに表示)、インターフェイスは選択した言語で表示されません起動時

もちろん、同じ誤った方法が使用され、表示が更新されないため、ドロップダウンボタンも機能しませんが、それは次のステップです。

17
Loic T

ユーザーが選択した言語キーをローカルストレージに保存しています:

//<select name="selectLocate" (change)="onChange($event.target.value)">
 public onChange(localeId: string): void {
    localStorage.setItem('localeId', localeId);
    location.reload(true);
  }

その後、強制的にリロードし、i18n.provider.ts

let locale = localStorage.getItem('localeId');
17
user3506588