14

我有一个多语言应用程序,它用每种语言的 --aot 编译,例如德语:

ng build --aot --env=prod --prod --build-optimizer --i18nFile=src/locale/DARI_messages_de_DE.xlf --i18nFormat=xlf --locale=de --missingTranslation warning --output-path dist/de --base-href /de/

我们需要在运行时获取 locale 的值,以便将其也处理到我们的后端。

如果看起来试图从

    import { LOCALE_ID } from '@angular/core';

constructor(private modalService: BsModalService) {
  console.log("LOCALE_ID", LOCALE_ID);
}

但是 LOCAL_ID 是空的,我认为它仅用于 JIT

有什么方法可以在运行时获取此参数吗?

4

2 回答 2

23

作为一个新手,我发现西蒙斯的回答有点不完整。事实证明,您需要同时导入 LOCALE_ID 和 Inject:

import { Component, OnInit, LOCALE_ID, Inject } from '@angular/core';

@Component({
  selector: '...',
  templateUrl: '...',
  styleUrls: ['...']
})

export class ShinyComponent implements OnInit {

  constructor(@Inject(LOCALE_ID) protected localeId: string) { }

  public someFunction {} {
    console.log("Current locale is "+this.localeId); 
  }
}

ngOnInit() {}
于 2018-07-20T09:53:31.893 回答
5

您应该让 Angular 注入 LOCALE_ID

constructor(private modalService: BsModalService,
    @Inject( LOCALE_ID ) protected localeId: string) {
    console.log("LOCALE_ID", localeId);
}
于 2018-07-06T17:47:37.017 回答