From ca6d5725e9377a1f8a9d9b969f561eb8ab1b56f1 Mon Sep 17 00:00:00 2001 From: mauriziovitale84 Date: Thu, 19 May 2016 15:47:05 +0100 Subject: [PATCH] Improved AlfrescoTranslationService --- demo-shell-ng2/app/app.component.ts | 4 +-- .../services/AlfrescoTranslationService.ts | 29 ++++++++++++------- .../components/alfresco-login.component.ts | 3 +- .../src/components/upload-button.component.ts | 3 +- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/demo-shell-ng2/app/app.component.ts b/demo-shell-ng2/app/app.component.ts index 89bc40c2a7..9b40b087c8 100644 --- a/demo-shell-ng2/app/app.component.ts +++ b/demo-shell-ng2/app/app.component.ts @@ -79,10 +79,10 @@ export class AppComponent { let userLang = navigator.language.split('-')[0]; // use navigator lang if available userLang = /(fr|en)/gi.test(userLang) ? userLang : 'en'; - // this language will be used as a fallback when a translation isn't found in the current language this.translate.setDefaultLang('en'); - // the lang to use, if the lang isn't available, it will use the current loader to get them + this.translate.currentLoader.addComponentList(''); + this.translate.getTranslation(userLang); this.translate.use(userLang); } diff --git a/ng2-components/ng2-alfresco-core/services/AlfrescoTranslationService.ts b/ng2-components/ng2-alfresco-core/services/AlfrescoTranslationService.ts index b350420a80..0675b2a904 100644 --- a/ng2-components/ng2-alfresco-core/services/AlfrescoTranslationService.ts +++ b/ng2-components/ng2-alfresco-core/services/AlfrescoTranslationService.ts @@ -25,23 +25,30 @@ export class AlfrescoTranslationLoader implements TranslateLoader { private prefix: string = 'i18n'; private suffix: string = '.json'; + private _componentList: string[] = []; constructor(private http: Http) { } + addComponentList(name: string) { + this._componentList.push(name); + } + getTranslation(lang: string): Observable { + + let observableBatch = []; + this._componentList.forEach((component) => { + observableBatch.push(this.http.get(`${component}/${this.prefix}/${lang}${this.suffix}`).map((res: Response) => res.json())) + }); + return Observable.create(observer => { - Observable.forkJoin( - this.http.get(`${this.prefix}/${lang}${this.suffix}`).map((res: Response) => res.json()), - this.http.get('node_modules/ng2-alfresco-upload/' + - `${this.prefix}/${lang}${this.suffix}`).map((res: Response) => res.json()), - this.http.get('node_modules/ng2-alfresco-login/' + - `${this.prefix}/${lang}${this.suffix}`).map((res: Response) => res.json()) - ).subscribe( - data => { - let multiLanguage = JSON.parse((JSON.stringify(data[0]) - + JSON.stringify(data[1]) - + JSON.stringify(data[2])).replace(/}{/g, ',')); + Observable.forkJoin(observableBatch).subscribe( + translations => { + let multiLanguage = '' ; + translations.forEach((translate) => { + multiLanguage += JSON.stringify(translate); + }); + observer.next(JSON.parse(multiLanguage.replace(/}{/g, '',''))); observer.next(multiLanguage); observer.complete(); }); diff --git a/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts b/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts index 71def92e00..acaeacc010 100644 --- a/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts +++ b/ng2-components/ng2-alfresco-login/src/components/alfresco-login.component.ts @@ -167,7 +167,8 @@ export class AlfrescoLoginComponent { userLang = /(fr|en)/gi.test(userLang) ? userLang : 'en'; this.translate.setDefaultLang(userLang); - + this.translate.currentLoader.addComponentList('node_modules/ng2-alfresco-login'); + this.translate.getTranslation(userLang); this.translate.use(userLang); } } diff --git a/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.ts b/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.ts index c0ceb65e54..7bfcf331fd 100644 --- a/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.ts +++ b/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.ts @@ -141,7 +141,8 @@ export class UploadButtonComponent { userLang = /(fr|en)/gi.test(userLang) ? userLang : 'en'; this.translate.setDefaultLang(userLang); - + this.translate.currentLoader.addComponentList('node_modules/ng2-alfresco-upload'); + this.translate.getTranslation(userLang); this.translate.use(userLang); }