From 2a2da10bf96b8960b60d5974c0b1fc6b5c03e46d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Mau=C3=9F?= <lukas.mauss@mni.thm.de>
Date: Mon, 5 Nov 2018 15:51:12 +0100
Subject: [PATCH] Fix translation for lazy-loaded modules in creator role

---
 src/app/app.module.ts                                      | 5 +++++
 src/app/components/creator/creator.module.ts               | 7 ++-----
 .../home-creator-page/home-creator-page.component.ts       | 7 +++++--
 src/app/components/shared/header/header.component.ts       | 7 +++++--
 4 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 4e344263d..708631139 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -24,6 +24,8 @@ import { EssentialsModule } from './components/essentials/essentials.module';
 import { SharedModule } from './components/shared/shared.module';
 import { BrowserModule } from '@angular/platform-browser';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { LanguageService } from './components/shared/LanguageService';
+import { MarkdownService, MarkedOptions } from 'ngx-markdown';
 export function dialogClose(dialogResult: any) {
 }
 
@@ -65,6 +67,9 @@ export function dialogClose(dialogResult: any) {
     CommentService,
     ContentService,
     ContentAnswerService,
+    LanguageService,
+    MarkdownService,
+    MarkedOptions,
     UserService,
     {
       provide: MatDialogRef,
diff --git a/src/app/components/creator/creator.module.ts b/src/app/components/creator/creator.module.ts
index a4aad05b7..002e7c2f9 100644
--- a/src/app/components/creator/creator.module.ts
+++ b/src/app/components/creator/creator.module.ts
@@ -10,7 +10,7 @@ import { ContentYesNoCreatorComponent } from './content-yes-no-creator/content-y
 import { HomeCreatorPageComponent } from './home-creator-page/home-creator-page.component';
 import { MarkdownToolbarComponent } from './markdown-toolbar/markdown-toolbar.component';
 import { RoomCreatorPageComponent } from './room-creator-page/room-creator-page.component';
-import { EssentialsModule } from '../essentials/essentials.module';
+import { EssentialsModule, HttpLoaderFactory} from '../essentials/essentials.module';
 import { RoomCreateComponent } from './_dialogs/room-create/room-create.component';
 import { RoomDeleteComponent } from './_dialogs/room-delete/room-delete.component';
 import { RoomEditComponent } from './_dialogs/room-edit/room-edit.component';
@@ -31,7 +31,7 @@ import { TranslateHttpLoader } from '@ngx-translate/http-loader';
     TranslateModule.forChild({
       loader: {
         provide: TranslateLoader,
-        useFactory: (createTranslateLoader),
+        useFactory: (HttpLoaderFactory),
         deps: [HttpClient]
       },
       isolate: true
@@ -63,6 +63,3 @@ import { TranslateHttpLoader } from '@ngx-translate/http-loader';
 export class CreatorModule {
 }
 
-export function createTranslateLoader(http: HttpClient) {
-  return new TranslateHttpLoader(http, '../../../assets/i18n/', '.json');
-}
diff --git a/src/app/components/creator/home-creator-page/home-creator-page.component.ts b/src/app/components/creator/home-creator-page/home-creator-page.component.ts
index efbe9e1b4..a3f2aef64 100644
--- a/src/app/components/creator/home-creator-page/home-creator-page.component.ts
+++ b/src/app/components/creator/home-creator-page/home-creator-page.component.ts
@@ -1,7 +1,8 @@
 import { Component, OnInit } from '@angular/core';
 import { MatDialog } from '@angular/material';
 import { RoomCreateComponent } from '../_dialogs/room-create/room-create.component';
-import { TranslateService} from '@ngx-translate/core';
+import { TranslateService } from '@ngx-translate/core';
+import { LanguageService } from '../../shared/LanguageService';
 
 @Component({
   selector: 'app-home-creator-page',
@@ -11,7 +12,9 @@ import { TranslateService} from '@ngx-translate/core';
 
 export class HomeCreatorPageComponent implements OnInit {
   constructor(public dialog: MatDialog,
-              private translateService: TranslateService) {
+              private translateService: TranslateService,
+              protected langService: LanguageService) {
+    langService.langEmitter.subscribe(lang => translateService.use(lang));
   }
 
   ngOnInit() {
diff --git a/src/app/components/shared/header/header.component.ts b/src/app/components/shared/header/header.component.ts
index 9ceca5e8b..231a71fdc 100644
--- a/src/app/components/shared/header/header.component.ts
+++ b/src/app/components/shared/header/header.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit } from '@angular/core';
+import { Component, EventEmitter, OnInit } from '@angular/core';
 import { AuthenticationService } from '../../../services/http/authentication.service';
 import { NotificationService } from '../../../services/util/notification.service';
 import { Router } from '@angular/router';
@@ -6,6 +6,7 @@ import { User } from '../../../models/user';
 import { UserRole } from '../../../models/user-roles.enum';
 import { Location } from '@angular/common';
 import { TranslateService } from '@ngx-translate/core';
+import { LanguageService } from '../LanguageService';
 
 @Component({
   selector: 'app-header',
@@ -19,7 +20,8 @@ export class HeaderComponent implements OnInit {
               private authenticationService: AuthenticationService,
               private notificationService: NotificationService,
               public router: Router,
-              private translationService: TranslateService) {
+              private translationService: TranslateService,
+              private langService: LanguageService) {
 
     translationService.setDefaultLang(this.translationService.getBrowserLang());
     sessionStorage.setItem('currentLang', this.translationService.getBrowserLang());
@@ -62,6 +64,7 @@ export class HeaderComponent implements OnInit {
   useLanguage(language: string) {
     this.translationService.use(language);
     sessionStorage.setItem('currentLang', this.translationService.currentLang);
+    this.langService.langEmitter.emit(language);
 
   }
 }
-- 
GitLab