web-dev-qa-db-ja.com

コンパイルされたAOTのランタイムの--localeの値を取得Angular App

私は、たとえばドイツ語の場合、各言語で--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/

ランタイムでロケールの値を取得して、バックエンドでも処理できるようにする必要があります。

見た場合から取得しようとしました

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

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

しかし、LOCAL_IDは空です。JITで使用する場合にのみ使用すると思います

実行時にこのパラメーターを取得する方法はありますか?

11
Thomas

初心者として、私はサイモンズが少し不完全に答えるのを見つけました。 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() {}
16
Jette

Angular LOCALE_IDを挿入する必要があります

constructor(private modalService: BsModalService,
    @Inject( LOCALE_ID ) protected localeId: string) {
    console.log("LOCALE_ID", localeId);
}
4
Simon