Angular2 i18n语言切换

时间:2016-10-06 11:09:40

标签: angular dynamic typescript internationalization switching

我正在寻找一种方法

  • 动态设置要显示的当前语言:我已按照最新的角度食谱here了解国际化 但它说“用户的语言被硬编码为index.html中的全局document.locale变量

如何在angular2 +打字稿中动态设置?

以下是来自官方Angular2 plunkr的尝试:https://plnkr.co/edit/lWV4VhzpWYnCXeDBpzsn?p=preview

我已经注释掉了
document.locale='en';

并尝试在typescript服务中检索window.document,并在那里更改语言环境,但是尽管它被调用并且语言环境设置正确(在控制台中看到),但界面不会以所选语言显示在启动时

然后当然下拉按钮也不起作用,因为使用了相同的错误方法并且没有刷新显示,但这是下一步。

1 个答案:

答案 0 :(得分:16)

我将用户选择的语言密钥保存到本地存储中:

//<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');