pan*_*kaj 1 internationalization rxjs ngx-translate angular
我能够使用翻译管道翻译文本,但目前正在努力使用翻译服务的 get 和 instant 方法加载翻译。下面是我在 app.component.ts 中的代码
export class AppComponent {
event : string;
constructor(private translate: TranslateService) {
translate.addLangs(["en", "fr"]);
translate.setDefaultLang('en');
let LangChangeEvent : {}
let browserLang = translate.getBrowserLang();
translate.use(browserLang.match(/en|fr/) ? browserLang : 'en');
this.translate.get('ALL_LOCATIONS_TREEVIEW').subscribe((event: String) => {
console.log(event);
});
}
}
Run Code Online (Sandbox Code Playgroud)
我正在控制台中打印事件。我希望每当用户改变语言时它的翻译也会改变。我的其余翻译(使用管道)工作正常,但我看不到控制台中语言变化的变化。我缺少什么?
get只会执行一次并获取当前使用的语言的键值。您需要将控制台日志与语言更改事件绑定,如下所示:
this.translate.onLangChange
.mergeMap(() => this.translate.get('ALL_LOCATIONS_TREEVIEW'))
.subscribe(v => console.log(v));
Run Code Online (Sandbox Code Playgroud)
在最新版本(^7.0.0)中,还有另一种方法可以做到这一点,使用以下stream方法:
this.translate
.stream('ALL_LOCATIONS_TREEVIEW')
.subscribe(v => console.log(v));
Run Code Online (Sandbox Code Playgroud)
这与 基本相同get,但支持语言更改(每次更改所选语言时都会发出新值)。
有关更多信息,请查看文档
| 归档时间: |
|
| 查看次数: |
5374 次 |
| 最近记录: |