in client/src/app/app.component.ts [65:114]
initLanguages() {
// load language settings
this.profileService.loadProfile().then(
profile => {
if (profile.language) {
this.i18nService.setLanguage(profile.language);
}
if (profile.endangeredLanguage) {
this.endangeredLanguageService.setLanguage(profile.endangeredLanguage);
}
}
);
// save language settings on language change
this.endangeredLanguageService.currentLanguageChanged.subscribe(() => {
this.profileService.loadProfile().then(
profile => {
profile.endangeredLanguage = this.endangeredLanguageService.currentLanguage.code;
this.profileService.saveProfile(profile);
}
);
});
this.i18nService.currentLanguageChanged.subscribe(() => {
window.document.body.setAttribute('dir', this.i18nService.currentLanguage.direction);
this.profileService.loadProfile().then(
profile => {
profile.language = this.i18nService.currentLanguage.code;
this.profileService.saveProfile(profile);
}
);
});
// set language based on URL
this.router.events.pipe(
filter((e) => e instanceof NavigationEnd)
).subscribe(() => {
let route = this.route;
while (route.firstChild) {
route = route.firstChild;
}
route.paramMap.subscribe(map => {
const uiLanguage = map.get('uiLanguage');
if (uiLanguage) {
this.i18nService.setLanguage(uiLanguage);
}
const endangeredLanguage = map.get('endangeredLanguage');
if (endangeredLanguage) {
this.endangeredLanguageService.setLanguage(endangeredLanguage);
}
});
});
}