From 0871eb68144dd6fe8b18655d1fba791b65804084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Barbeau?= Date: Mon, 24 Apr 2017 13:51:19 -0400 Subject: [PATCH] feat(translate): improvement for translate module --- package.json | 4 +++- src/assets/locale/en.json | 2 +- src/assets/locale/fr.json | 2 +- src/demo-app/app/app.component.spec.ts | 5 ++++- src/demo-app/app/language.extract.ts | 7 +++++++ src/demo-app/assets/locale/en.json | 6 +++++- src/demo-app/assets/locale/fr.json | 6 +++++- src/lib/language/shared/index.ts | 3 +-- src/lib/language/shared/language-loader.ts | 2 -- .../shared/missing-translation.guard.ts | 6 ++++-- src/lib/module.ts | 1 + src/test/module.ts | 17 +++++++++++------ 12 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 src/demo-app/app/language.extract.ts diff --git a/package.json b/package.json index a61527e7ab..9c3fd22961 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,9 @@ "lint": "ng lint", "e2e": "ng e2e --app demo", "clean": "rimraf dist && rimraf bundle", - "i18n.extract": "ngx-translate-extract -i ./src/lib -o ./src/assets/locale/fr.json ./src/assets/locale/en.json -s -f namespaced-json -m _ -c" + "language.extract": "npm run language.extract.lib && npm run language.extract.demo", + "language.extract.lib": "ngx-translate-extract -i ./src/lib -o ./src/assets/locale/fr.json ./src/assets/locale/en.json -s -f namespaced-json -m _ -c", + "language.extract.demo": "ngx-translate-extract -i ./src/demo-app -o ./src/demo-app/assets/locale/fr.json ./src/demo-app/assets/locale/en.json -s -f namespaced-json -m _ -c" }, "dependencies": { "@angular/animations": "^4.0.0", diff --git a/src/assets/locale/en.json b/src/assets/locale/en.json index 1df4ec4208..47216af263 100644 --- a/src/assets/locale/en.json +++ b/src/assets/locale/en.json @@ -10,4 +10,4 @@ "showLayer": "Show Layer", "startDate": "Start Date" } -} +} \ No newline at end of file diff --git a/src/assets/locale/fr.json b/src/assets/locale/fr.json index 856dec7d6c..d166371da6 100644 --- a/src/assets/locale/fr.json +++ b/src/assets/locale/fr.json @@ -10,4 +10,4 @@ "showLayer": "Afficher la couche", "startDate": "Date de début" } -} +} \ No newline at end of file diff --git a/src/demo-app/app/app.component.spec.ts b/src/demo-app/app/app.component.spec.ts index 9b21889555..128d70d183 100644 --- a/src/demo-app/app/app.component.spec.ts +++ b/src/demo-app/app/app.component.spec.ts @@ -1,5 +1,7 @@ import { TestBed, async } from '@angular/core/testing'; import { MaterialModule } from '@angular/material'; + +import { IgoTestModule } from '../../test/module'; import { IgoModule, provideDefaultSearchSources } from '../../lib'; import { AppComponent } from './app.component'; @@ -9,7 +11,8 @@ describe('AppComponent', () => { TestBed.configureTestingModule({ imports: [ MaterialModule, - IgoModule.forRoot() + IgoModule.forRoot(), + IgoTestModule ], declarations: [ AppComponent diff --git a/src/demo-app/app/language.extract.ts b/src/demo-app/app/language.extract.ts new file mode 100644 index 0000000000..676b16c22d --- /dev/null +++ b/src/demo-app/app/language.extract.ts @@ -0,0 +1,7 @@ +import { _ } from '@biesbjerg/ngx-translate-extract'; + +_('Tool 1'); +_('tooltip1'); + +_('Tool 2'); +_('tooltip2'); diff --git a/src/demo-app/assets/locale/en.json b/src/demo-app/assets/locale/en.json index ddc9ba64bd..38ce0bcbdd 100644 --- a/src/demo-app/assets/locale/en.json +++ b/src/demo-app/assets/locale/en.json @@ -1,3 +1,7 @@ { - "Search for an address or a place": "Search for an address or a place" + "Search for an address or a place": "Search for an address or a place", + "Tool 1": "Tool 1", + "Tool 2": "Tool 2", + "tooltip1": "Tooltip 1", + "tooltip2": "Tooltip 2" } diff --git a/src/demo-app/assets/locale/fr.json b/src/demo-app/assets/locale/fr.json index bce85d43cc..723a8b1e9e 100644 --- a/src/demo-app/assets/locale/fr.json +++ b/src/demo-app/assets/locale/fr.json @@ -1,3 +1,7 @@ { - "Search for an address or a place": "Rechercher une adresse, un lieu ou une couche" + "Search for an address or a place": "Rechercher une adresse, un lieu ou une couche", + "Tool 1": "Outil 1", + "Tool 2": "Outil 2", + "tooltip1": "Tooltip 1", + "tooltip2": "Tooltip 2" } diff --git a/src/lib/language/shared/index.ts b/src/lib/language/shared/index.ts index 2cdd318a1d..eb30df708b 100644 --- a/src/lib/language/shared/index.ts +++ b/src/lib/language/shared/index.ts @@ -1,5 +1,4 @@ export * from './language.service'; +export * from './language.service.provider'; export * from './language-loader'; export * from './missing-translation.guard'; - -export * from './language.service.provider'; diff --git a/src/lib/language/shared/language-loader.ts b/src/lib/language/shared/language-loader.ts index 179fec05b3..0a711ea44c 100644 --- a/src/lib/language/shared/language-loader.ts +++ b/src/lib/language/shared/language-loader.ts @@ -2,8 +2,6 @@ import { Http, Response } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import { TranslateLoader } from '@ngx-translate/core'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/combineLatest'; declare function require(arg: string): any; diff --git a/src/lib/language/shared/missing-translation.guard.ts b/src/lib/language/shared/missing-translation.guard.ts index bdf0084c89..5a4752dad0 100644 --- a/src/lib/language/shared/missing-translation.guard.ts +++ b/src/lib/language/shared/missing-translation.guard.ts @@ -5,7 +5,9 @@ export class IgoMissingTranslationHandler implements MissingTranslationHandler { handle(params: MissingTranslationHandlerParams) { - console.log(`The Key "${params.key}" is missing in locale file.`); - // throw new Error(`The Key "${params.key}" is missing in locale file.`); + if (!params.translateService.langs.length) { + throw new Error(`LanguageService must be injected.`); + } + throw new Error(`The Key "${params.key}" is missing in locale file.`); } } diff --git a/src/lib/module.ts b/src/lib/module.ts index 09b7ea67e0..2d7b6fb0f7 100644 --- a/src/lib/module.ts +++ b/src/lib/module.ts @@ -8,6 +8,7 @@ import 'rxjs/add/operator/map'; import 'rxjs/add/observable/throw'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/finally'; +import 'rxjs/add/operator/combineLatest'; import 'openlayers'; diff --git a/src/test/module.ts b/src/test/module.ts index d3fd98b8c2..6f73dbb099 100644 --- a/src/test/module.ts +++ b/src/test/module.ts @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; -import { TranslateModule } from '@ngx-translate/core'; +import { Http } from '@angular/http'; -import { IgoLanguageModule } from '../lib/language'; +import { IgoLanguageModule, LanguageLoader, provideLanguageService } from '../lib/language'; import 'rxjs/add/operator/debounceTime.js'; import 'rxjs/add/operator/distinctUntilChanged'; @@ -13,13 +13,18 @@ import 'rxjs/add/operator/finally'; import 'openlayers'; +export function translateLoader(http: Http) { + return new LanguageLoader(http, './base/src/demo-app/assets/locale/', '.json'); +} + @NgModule({ imports: [ - TranslateModule.forRoot(), IgoLanguageModule.forRoot() ], - exports: [ - TranslateModule - ] + providers: [ + provideLanguageService({ + loader: translateLoader + }) + ], }) export class IgoTestModule { }