我能够使用翻译管道翻译文本,但目前正在努力使用翻译服务的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);
});
}
}
我在控制台中打印事件。我想在用户更改语言时更改其翻译。我的其余翻译(使用管道)工作正常,但我无法在控制台中看到语言变化的变化。我错过了什么?
答案 0 :(得分:3)
get
只会执行一次,并会使用当前使用的语言获取密钥的值。您需要将控制台日志绑定到语言更改事件,如下所示:
this.translate.onLangChange
.mergeMap(() => this.translate.get('ALL_LOCATIONS_TREEVIEW'))
.subscribe(v => console.log(v));
使用最新的版本(^ 7.0.0),还有另一种方法可以使用stream
方法:
this.translate
.stream('ALL_LOCATIONS_TREEVIEW')
.subscribe(v => console.log(v));
这与get
基本相同,但语言更改识别(每次更改所选语言时都会发出新值)。
有关详细信息,请查看the documentation
答案 1 :(得分:0)
简单的方法:
this.translate.instant('string_key_from_json');