web-dev-qa-db-fra.com

Commutateur de langue Angular2 i18n

Je cherche un moyen de

  • définir dynamiquement la langue actuelle à afficher: j'ai suivi le dernier angular ici sur l'internationalisation mais il dit " la langue de l'utilisateur est codée en dur comme variable document.locale globale dans l'index.html "

Comment cela peut-il être défini dynamiquement dans angular2 + TypeScript?

Voici ma tentative du plunkr officiel Angular2: https://plnkr.co/edit/lWV4VhzpWYnCXeDBpzsn?p=preview où j'ai commenté le

document.locale='en';

et a essayé de récupérer le window.document à l'intérieur d'un service TypeScript, et de modifier les paramètres régionaux, mais malgré qu'il soit appelé et que les paramètres régionaux soient définis correctement (vu dans la console), l'interface ne s'affiche pas dans la langue choisie au démarrage .

Bien sûr, les boutons déroulants ne fonctionnent pas non plus, car la même manière erronée est utilisée et l'affichage n'est pas actualisé, mais c'est l'étape suivante.

17
Loic T

J'enregistre la clé de langue sélectionnée par l'utilisateur dans le stockage local:

//<select name="selectLocate" (change)="onChange($event.target.value)">
 public onChange(localeId: string): void {
    localStorage.setItem('localeId', localeId);
    location.reload(true);
  }

Forcez ensuite le rechargement et dans i18n.provider.ts

let locale = localStorage.getItem('localeId');
17
user3506588