Je compile mon projet avec:
ng serve --aot --i18nFile=client/locale/messages.fr.xlf --i18nFormat=xlf --locale=fr
Comment puis-je accéder à l'ID de paramètres régionaux lors de l'exécution? Je souhaite afficher/masquer les éléments en fonction des paramètres régionaux.
PS. Je me rends compte qu'en utilisant la compilation JIT, je peux simplement faire ceci:
providers: [ { provide: LOCALE_ID, useValue: 'fr' } ]
Mais je cherche une solution AOT. Je préfère également ne pas déduire les paramètres régionaux basés sur le nom d'hôte ou quelque chose comme ça.
Injectez simplement LOCALE_ID dans votre constructeur, par exemple.
import { LOCALE_ID } from '@angular/core';
...
constructor(
@Inject(LOCALE_ID) public locale: string
) { }
Le jeton d'injection LOCALE_ID
pas fournissez la langue ou les paramètres régionaux de votre utilisateur, ils sont statiques et par défaut _ 'en-US'
sauf si vous fournissez une valeur différente ( docs ):
providers: [{provide: LOCALE_ID, useValue: 'en-GB' }]
Voici une méthode qui obtient la langue/l'environnement local préféré de l'utilisateur:
getUsersLocale(defaultValue: string): string {
if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
return defaultValue;
}
const wn = window.navigator as any;
let lang = wn.languages ? wn.languages[0] : defaultValue;
lang = lang || wn.language || wn.browserLanguage || wn.userLanguage;
return lang;
}