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');
