angular - Angular2 i18n språkbyte


Jag letar efter ett sätt att

  • sätt dynamiskt det aktuella språket som ska visas: Jag har följt den senaste Angular-kokboken här om internationalisering men det står "användarens språk är hårdkodat som en global document.locale-variabel i index.html"

Hur kan detta ställas in dynamiskt i Angular2 + TypeScript?

Här är mitt försök från den officiella Angular2 plunkern: https://plnkr.co/edit/lWV4VhzpWYnCXeDBpzsn?p=preview där jag har kommenterat ut

document.locale='en';

och försökte hämta window.document inuti en TypeScript-tjänst och ändra språkinställningen där, men trots att den anropas och språket ställs in korrekt (syns i konsolen), visas gränssnittet inte på det valda språket vid start.

Då fungerar förstås inte heller rullgardinsknapparna eftersom samma felaktiga metod används och visningen inte uppdateras, men det är nästa steg.

Svar #1

Jag sparar användarens valda språknyckel i lokal lagring:

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

Sedan tvinga omladdning, och i i18n.provider.ts

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

Relaterade artiklar