initLanguages()

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