无法使用 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');