无法使用 ngx-translate 的服务翻译文本-translate.get
Unable to translate text using ngx-translate's service-translate.get
我可以使用翻译管道翻译文本,但目前很难使用翻译服务的 get 和即时方法加载翻译。
下面是我在 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);
});
}
}
我正在控制台打印事件。我希望它的翻译在用户更改语言时更改。我的其余翻译(使用管道)工作正常,但我看不到控制台随着语言的变化而变化。我错过了什么?
get
只会执行一次,会获取当前使用语言的key的值。您需要将控制台日志绑定到语言更改事件,如下所示:
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
简单的方法:
this.translate.instant('string_key_from_json');
我可以使用翻译管道翻译文本,但目前很难使用翻译服务的 get 和即时方法加载翻译。 下面是我在 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);
});
}
}
我正在控制台打印事件。我希望它的翻译在用户更改语言时更改。我的其余翻译(使用管道)工作正常,但我看不到控制台随着语言的变化而变化。我错过了什么?
get
只会执行一次,会获取当前使用语言的key的值。您需要将控制台日志绑定到语言更改事件,如下所示:
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
简单的方法:
this.translate.instant('string_key_from_json');