Get the value of --locale on runtime for an AOT compiled Angular App
Asked Answered
J

2

15

I have an multilanguale app which is compiled with --aot in each language, for instance for German:

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/

We need want to get the value on locale on runtime to handle it over to our backend too.

If have looked tryed to get from

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

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

But the LOCAL_ID is empty I think it only for use with JIT

Is there any method to get this parameter on runtime?

Jig answered 14/6, 2018 at 16:4 Comment(2)
What Angular version are you using? I'm on Angular 6, and using --i18n-locale=de still yields a LOCALE_ID of 'en-US'.Openfaced
@Openfaced it's a default location for AngularSoloman
U
24

As a newbie I found Simons answer a bit incomplete. Turns out that you need to import both LOCALE_ID and 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() {}
Unbar answered 20/7, 2018 at 9:53 Comment(2)
Is there any other way? I want to do it without using constructor. Is it possible?Lampert
I still do it the same way in Angular 10. I haven't discovered any other way.Unbar
O
5

You should have Angular inject the LOCALE_ID

constructor(private modalService: BsModalService,
    @Inject( LOCALE_ID ) protected localeId: string) {
    console.log("LOCALE_ID", localeId);
}
Openfaced answered 6/7, 2018 at 17:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.