Commit 1963fbdd337614dbccf6c96997dcd75b07323ea3
1 parent
34f4d015
Exists in
master
and in
31 other branches
Rename language service to translator service
Showing
10 changed files
with
143 additions
and
143 deletions
Show diff stats
src/app/components/language-selector/language-selector.component.spec.ts
| ... | ... | @@ -11,16 +11,16 @@ describe("Components", () => { |
| 11 | 11 | |
| 12 | 12 | beforeEach(angular.mock.module("templates")); |
| 13 | 13 | |
| 14 | - let languageService: any; | |
| 14 | + let translatorService: any; | |
| 15 | 15 | |
| 16 | 16 | let buildComponent = (): Promise<ComponentFixture> => { |
| 17 | - languageService = jasmine.createSpyObj("languageService", ["availableLanguages", "currentLanguage"]) | |
| 17 | + translatorService = jasmine.createSpyObj("translatorService", ["availableLanguages", "currentLanguage"]) | |
| 18 | 18 | return helpers.quickCreateComponent({ |
| 19 | 19 | template: "<language-selector></language-selector>", |
| 20 | 20 | directives: [LanguageSelector], |
| 21 | 21 | providers: [ |
| 22 | - provide('LanguageService', { | |
| 23 | - useValue: languageService | |
| 22 | + provide('TranslatorService', { | |
| 23 | + useValue: translatorService | |
| 24 | 24 | }) |
| 25 | 25 | ].concat(helpers.provideFilters("translateFilter")) |
| 26 | 26 | }); | ... | ... |
src/app/components/language-selector/language-selector.component.ts
| 1 | 1 | import {Component, Inject} from "ng-forward"; |
| 2 | -import {LanguageService} from "./language.service"; | |
| 2 | +import {TranslatorService} from "../translator/translator.service"; | |
| 3 | 3 | |
| 4 | 4 | @Component({ |
| 5 | 5 | selector: "language-selector", |
| 6 | 6 | templateUrl: "app/components/language-selector/language-selector.html" |
| 7 | 7 | }) |
| 8 | -@Inject(LanguageService) | |
| 8 | +@Inject(TranslatorService) | |
| 9 | 9 | export class LanguageSelector { |
| 10 | 10 | |
| 11 | - constructor(private languageService: LanguageService) { } | |
| 11 | + constructor(private translatorService: TranslatorService) { } | |
| 12 | 12 | |
| 13 | 13 | currentLanguage() { |
| 14 | - return this.languageService.currentLanguage(); | |
| 14 | + return this.translatorService.currentLanguage(); | |
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | changeLanguage(language: string) { |
| 18 | - this.languageService.changeLanguage(language); | |
| 18 | + this.translatorService.changeLanguage(language); | |
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | availableLanguages() { |
| 22 | - return this.languageService.availableLanguages; | |
| 22 | + return this.translatorService.availableLanguages; | |
| 23 | 23 | } |
| 24 | 24 | } | ... | ... |
src/app/components/language-selector/language.service.spec.ts
| ... | ... | @@ -1,61 +0,0 @@ |
| 1 | -import {ComponentFixture} from 'ng-forward/cjs/testing/test-component-builder'; | |
| 2 | -import {provide} from 'ng-forward'; | |
| 3 | - | |
| 4 | -import {LanguageService} from './language.service'; | |
| 5 | - | |
| 6 | -import * as helpers from "../../../spec/helpers"; | |
| 7 | - | |
| 8 | -describe("Services", () => { | |
| 9 | - | |
| 10 | - describe("Language Service", () => { | |
| 11 | - | |
| 12 | - let $rootScope: ng.IScope; | |
| 13 | - let $q: ng.IQService; | |
| 14 | - | |
| 15 | - beforeEach(inject((_$rootScope_: ng.IRootScopeService, _$q_: ng.IQService) => { | |
| 16 | - $rootScope = _$rootScope_; | |
| 17 | - $q = _$q_; | |
| 18 | - })); | |
| 19 | - | |
| 20 | - it("set available languages when change language", (done) => { | |
| 21 | - let component: LanguageService = new LanguageService( | |
| 22 | - <any>helpers.mocks.$translate, | |
| 23 | - <any>helpers.mocks.tmhDynamicLocale, | |
| 24 | - <any>helpers.mocks.amMoment, | |
| 25 | - <any>helpers.mocks.angularLoad, | |
| 26 | - helpers.mocks.scopeWithEvents | |
| 27 | - ); | |
| 28 | - component.availableLanguages = null; | |
| 29 | - expect(component.availableLanguages).toBeNull(); | |
| 30 | - component.changeLanguage('en'); | |
| 31 | - expect(component.availableLanguages).toBeDefined(); | |
| 32 | - done(); | |
| 33 | - }); | |
| 34 | - | |
| 35 | - it("change the language", (done) => { | |
| 36 | - let component: LanguageService = new LanguageService( | |
| 37 | - <any>helpers.mocks.$translate, | |
| 38 | - <any>helpers.mocks.tmhDynamicLocale, | |
| 39 | - <any>helpers.mocks.amMoment, | |
| 40 | - <any>helpers.mocks.angularLoad, | |
| 41 | - helpers.mocks.scopeWithEvents | |
| 42 | - ); | |
| 43 | - let loadScripPromise = $q.defer(); | |
| 44 | - loadScripPromise.resolve(); | |
| 45 | - component["angularLoad"].loadScript = jasmine.createSpy("loadScript").and.returnValue(loadScripPromise.promise); | |
| 46 | - component["tmhDynamicLocale"].set = jasmine.createSpy("set"); | |
| 47 | - component["tmhDynamicLocale"].get = jasmine.createSpy("get").and.returnValue("en"); | |
| 48 | - component["$translate"].use = jasmine.createSpy("use"); | |
| 49 | - | |
| 50 | - component.changeLanguage('pt'); | |
| 51 | - $rootScope.$digest(); | |
| 52 | - | |
| 53 | - expect(component["angularLoad"].loadScript).toHaveBeenCalledWith("/bower_components/moment/locale/pt.js"); | |
| 54 | - expect(component["angularLoad"].loadScript).toHaveBeenCalledWith("/bower_components/messageformat/locale/pt.js"); | |
| 55 | - expect(component["tmhDynamicLocale"].set).toHaveBeenCalledWith("pt"); | |
| 56 | - expect(component["$translate"].use).toHaveBeenCalledWith("pt"); | |
| 57 | - done(); | |
| 58 | - }); | |
| 59 | - | |
| 60 | - }); | |
| 61 | -}); |
src/app/components/language-selector/language.service.ts
| ... | ... | @@ -1,59 +0,0 @@ |
| 1 | -import {Injectable, Inject} from "ng-forward"; | |
| 2 | - | |
| 3 | -@Injectable() | |
| 4 | -@Inject("$translate", "tmhDynamicLocale", "amMoment", "angularLoad", "$rootScope") | |
| 5 | -export class LanguageService { | |
| 6 | - | |
| 7 | - availableLanguages: any; | |
| 8 | - | |
| 9 | - constructor(private $translate: angular.translate.ITranslateService, | |
| 10 | - private tmhDynamicLocale: angular.dynamicLocale.tmhDynamicLocaleService, | |
| 11 | - private amMoment: any, | |
| 12 | - private angularLoad: any, | |
| 13 | - private $rootScope: any) { | |
| 14 | - | |
| 15 | - this.configAvailableLanguages(); | |
| 16 | - this.$rootScope.$on("$localeChangeSuccess", () => { | |
| 17 | - this.changeLanguage(tmhDynamicLocale.get() || $translate.use()); | |
| 18 | - }); | |
| 19 | - } | |
| 20 | - | |
| 21 | - currentLanguage() { | |
| 22 | - return this.$translate.use(); | |
| 23 | - } | |
| 24 | - | |
| 25 | - changeLanguage(language: string) { | |
| 26 | - if (!language) { | |
| 27 | - console.log("WARN: language undefined"); | |
| 28 | - return; | |
| 29 | - } | |
| 30 | - this.changeMomentLocale(language); | |
| 31 | - this.tmhDynamicLocale.set(language); | |
| 32 | - this.angularLoad.loadScript(`/bower_components/messageformat/locale/${language}.js`).then(() => { | |
| 33 | - return this.$translate.use(language); | |
| 34 | - }).then(() => { | |
| 35 | - this.configAvailableLanguages(); | |
| 36 | - }); | |
| 37 | - } | |
| 38 | - | |
| 39 | - translate(text: string) { | |
| 40 | - return this.$translate.instant(text); | |
| 41 | - } | |
| 42 | - | |
| 43 | - private configAvailableLanguages() { | |
| 44 | - this.availableLanguages = { | |
| 45 | - "en": this.$translate.instant("language.en"), | |
| 46 | - "pt": this.$translate.instant("language.pt") | |
| 47 | - }; | |
| 48 | - } | |
| 49 | - | |
| 50 | - private changeMomentLocale(language: string) { | |
| 51 | - let localePromise = Promise.resolve(); | |
| 52 | - if (language != "en") { | |
| 53 | - localePromise = this.angularLoad.loadScript(`/bower_components/moment/locale/${language}.js`); | |
| 54 | - } | |
| 55 | - localePromise.then(() => { | |
| 56 | - this.amMoment.changeLocale(language); | |
| 57 | - }); | |
| 58 | - } | |
| 59 | -} |
src/app/components/navbar/navbar.spec.ts
| ... | ... | @@ -72,8 +72,8 @@ describe("Components", () => { |
| 72 | 72 | AUTH_EVENTS |
| 73 | 73 | } |
| 74 | 74 | }), |
| 75 | - provide('LanguageService', { | |
| 76 | - useValue: helpers.mocks.languageService | |
| 75 | + provide('TranslatorService', { | |
| 76 | + useValue: helpers.mocks.translatorService | |
| 77 | 77 | }) |
| 78 | 78 | ].concat(helpers.provideFilters("translateFilter")), |
| 79 | 79 | directives: [Navbar], | ... | ... |
src/app/components/notification/notification.component.spec.ts
| ... | ... | @@ -17,7 +17,7 @@ describe("Components", () => { |
| 17 | 17 | let sweetAlert = jasmine.createSpyObj("sweetAlert", ["swal"]); |
| 18 | 18 | sweetAlert.swal = jasmine.createSpy("swal"); |
| 19 | 19 | |
| 20 | - let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.languageService); | |
| 20 | + let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.translatorService); | |
| 21 | 21 | component.error(); |
| 22 | 22 | expect(sweetAlert.swal).toHaveBeenCalledWith(jasmine.objectContaining({ |
| 23 | 23 | text: Notification.DEFAULT_ERROR_MESSAGE, |
| ... | ... | @@ -30,7 +30,7 @@ describe("Components", () => { |
| 30 | 30 | let sweetAlert = jasmine.createSpyObj("sweetAlert", ["swal"]); |
| 31 | 31 | sweetAlert.swal = jasmine.createSpy("swal"); |
| 32 | 32 | |
| 33 | - let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.languageService); | |
| 33 | + let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.translatorService); | |
| 34 | 34 | component.success("title", "message", 1000); |
| 35 | 35 | expect(sweetAlert.swal).toHaveBeenCalledWith(jasmine.objectContaining({ |
| 36 | 36 | type: "success" |
| ... | ... | @@ -42,7 +42,7 @@ describe("Components", () => { |
| 42 | 42 | let sweetAlert = jasmine.createSpyObj("sweetAlert", ["swal"]); |
| 43 | 43 | sweetAlert.swal = jasmine.createSpy("swal"); |
| 44 | 44 | |
| 45 | - let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.languageService); | |
| 45 | + let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.translatorService); | |
| 46 | 46 | component.httpError(500, {}); |
| 47 | 47 | expect(sweetAlert.swal).toHaveBeenCalledWith(jasmine.objectContaining({ |
| 48 | 48 | text: "notification.http_error.500.message" |
| ... | ... | @@ -54,7 +54,7 @@ describe("Components", () => { |
| 54 | 54 | let sweetAlert = jasmine.createSpyObj("sweetAlert", ["swal"]); |
| 55 | 55 | sweetAlert.swal = jasmine.createSpy("swal"); |
| 56 | 56 | |
| 57 | - let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.languageService); | |
| 57 | + let component: Notification = new Notification(<any>helpers.mocks.$log, <any>sweetAlert, <any>helpers.mocks.translatorService); | |
| 58 | 58 | component.success("title", "message"); |
| 59 | 59 | expect(sweetAlert.swal).toHaveBeenCalledWith(jasmine.objectContaining({ |
| 60 | 60 | type: "success", | ... | ... |
src/app/components/notification/notification.component.ts
| 1 | 1 | import {Injectable, Inject} from "ng-forward"; |
| 2 | -import {LanguageService} from "../language-selector/language.service"; | |
| 2 | +import {TranslatorService} from "../translator/translator.service"; | |
| 3 | 3 | |
| 4 | 4 | @Injectable() |
| 5 | -@Inject("$log", "SweetAlert", LanguageService) | |
| 5 | +@Inject("$log", "SweetAlert", TranslatorService) | |
| 6 | 6 | export class Notification { |
| 7 | 7 | |
| 8 | 8 | constructor( |
| 9 | 9 | private $log: ng.ILogService, |
| 10 | 10 | private SweetAlert: any, |
| 11 | - private languageService: LanguageService | |
| 11 | + private translatorService: TranslatorService | |
| 12 | 12 | ) { } |
| 13 | 13 | |
| 14 | 14 | public static DEFAULT_ERROR_TITLE = "notification.error.default.title"; |
| ... | ... | @@ -16,10 +16,10 @@ export class Notification { |
| 16 | 16 | public static DEFAULT_SUCCESS_TIMER = 1000; |
| 17 | 17 | |
| 18 | 18 | error(message: string = Notification.DEFAULT_ERROR_MESSAGE, title: string = Notification.DEFAULT_ERROR_TITLE) { |
| 19 | - this.$log.debug("Notification error:", title, message, this.languageService.currentLanguage()); | |
| 19 | + this.$log.debug("Notification error:", title, message, this.translatorService.currentLanguage()); | |
| 20 | 20 | this.SweetAlert.swal({ |
| 21 | - title: this.languageService.translate(title), | |
| 22 | - text: this.languageService.translate(message), | |
| 21 | + title: this.translatorService.translate(title), | |
| 22 | + text: this.translatorService.translate(message), | |
| 23 | 23 | type: "error" |
| 24 | 24 | }); |
| 25 | 25 | } | ... | ... |
src/app/components/translator/translator.service.spec.ts
0 → 100644
| ... | ... | @@ -0,0 +1,61 @@ |
| 1 | +import {ComponentFixture} from 'ng-forward/cjs/testing/test-component-builder'; | |
| 2 | +import {provide} from 'ng-forward'; | |
| 3 | + | |
| 4 | +import {TranslatorService} from './translator.service'; | |
| 5 | + | |
| 6 | +import * as helpers from "../../../spec/helpers"; | |
| 7 | + | |
| 8 | +describe("Services", () => { | |
| 9 | + | |
| 10 | + describe("Translator Service", () => { | |
| 11 | + | |
| 12 | + let $rootScope: ng.IScope; | |
| 13 | + let $q: ng.IQService; | |
| 14 | + | |
| 15 | + beforeEach(inject((_$rootScope_: ng.IRootScopeService, _$q_: ng.IQService) => { | |
| 16 | + $rootScope = _$rootScope_; | |
| 17 | + $q = _$q_; | |
| 18 | + })); | |
| 19 | + | |
| 20 | + it("set available languages when change language", (done) => { | |
| 21 | + let component: TranslatorService = new TranslatorService( | |
| 22 | + <any>helpers.mocks.$translate, | |
| 23 | + <any>helpers.mocks.tmhDynamicLocale, | |
| 24 | + <any>helpers.mocks.amMoment, | |
| 25 | + <any>helpers.mocks.angularLoad, | |
| 26 | + helpers.mocks.scopeWithEvents | |
| 27 | + ); | |
| 28 | + component.availableLanguages = null; | |
| 29 | + expect(component.availableLanguages).toBeNull(); | |
| 30 | + component.changeLanguage('en'); | |
| 31 | + expect(component.availableLanguages).toBeDefined(); | |
| 32 | + done(); | |
| 33 | + }); | |
| 34 | + | |
| 35 | + it("change the language", (done) => { | |
| 36 | + let component: TranslatorService = new TranslatorService( | |
| 37 | + <any>helpers.mocks.$translate, | |
| 38 | + <any>helpers.mocks.tmhDynamicLocale, | |
| 39 | + <any>helpers.mocks.amMoment, | |
| 40 | + <any>helpers.mocks.angularLoad, | |
| 41 | + helpers.mocks.scopeWithEvents | |
| 42 | + ); | |
| 43 | + let loadScripPromise = $q.defer(); | |
| 44 | + loadScripPromise.resolve(); | |
| 45 | + component["angularLoad"].loadScript = jasmine.createSpy("loadScript").and.returnValue(loadScripPromise.promise); | |
| 46 | + component["tmhDynamicLocale"].set = jasmine.createSpy("set"); | |
| 47 | + component["tmhDynamicLocale"].get = jasmine.createSpy("get").and.returnValue("en"); | |
| 48 | + component["$translate"].use = jasmine.createSpy("use"); | |
| 49 | + | |
| 50 | + component.changeLanguage('pt'); | |
| 51 | + $rootScope.$digest(); | |
| 52 | + | |
| 53 | + expect(component["angularLoad"].loadScript).toHaveBeenCalledWith("/bower_components/moment/locale/pt.js"); | |
| 54 | + expect(component["angularLoad"].loadScript).toHaveBeenCalledWith("/bower_components/messageformat/locale/pt.js"); | |
| 55 | + expect(component["tmhDynamicLocale"].set).toHaveBeenCalledWith("pt"); | |
| 56 | + expect(component["$translate"].use).toHaveBeenCalledWith("pt"); | |
| 57 | + done(); | |
| 58 | + }); | |
| 59 | + | |
| 60 | + }); | |
| 61 | +}); | ... | ... |
| ... | ... | @@ -0,0 +1,59 @@ |
| 1 | +import {Injectable, Inject} from "ng-forward"; | |
| 2 | + | |
| 3 | +@Injectable() | |
| 4 | +@Inject("$translate", "tmhDynamicLocale", "amMoment", "angularLoad", "$rootScope") | |
| 5 | +export class TranslatorService { | |
| 6 | + | |
| 7 | + availableLanguages: any; | |
| 8 | + | |
| 9 | + constructor(private $translate: angular.translate.ITranslateService, | |
| 10 | + private tmhDynamicLocale: angular.dynamicLocale.tmhDynamicLocaleService, | |
| 11 | + private amMoment: any, | |
| 12 | + private angularLoad: any, | |
| 13 | + private $rootScope: any) { | |
| 14 | + | |
| 15 | + this.configAvailableLanguages(); | |
| 16 | + this.$rootScope.$on("$localeChangeSuccess", () => { | |
| 17 | + this.changeLanguage(tmhDynamicLocale.get() || $translate.use()); | |
| 18 | + }); | |
| 19 | + } | |
| 20 | + | |
| 21 | + currentLanguage() { | |
| 22 | + return this.$translate.use(); | |
| 23 | + } | |
| 24 | + | |
| 25 | + changeLanguage(language: string) { | |
| 26 | + if (!language) { | |
| 27 | + console.log("WARN: language undefined"); | |
| 28 | + return; | |
| 29 | + } | |
| 30 | + this.changeMomentLocale(language); | |
| 31 | + this.tmhDynamicLocale.set(language); | |
| 32 | + this.angularLoad.loadScript(`/bower_components/messageformat/locale/${language}.js`).then(() => { | |
| 33 | + return this.$translate.use(language); | |
| 34 | + }).then(() => { | |
| 35 | + this.configAvailableLanguages(); | |
| 36 | + }); | |
| 37 | + } | |
| 38 | + | |
| 39 | + translate(text: string) { | |
| 40 | + return this.$translate.instant(text); | |
| 41 | + } | |
| 42 | + | |
| 43 | + private configAvailableLanguages() { | |
| 44 | + this.availableLanguages = { | |
| 45 | + "en": this.$translate.instant("language.en"), | |
| 46 | + "pt": this.$translate.instant("language.pt") | |
| 47 | + }; | |
| 48 | + } | |
| 49 | + | |
| 50 | + private changeMomentLocale(language: string) { | |
| 51 | + let localePromise = Promise.resolve(); | |
| 52 | + if (language != "en") { | |
| 53 | + localePromise = this.angularLoad.loadScript(`/bower_components/moment/locale/${language}.js`); | |
| 54 | + } | |
| 55 | + localePromise.then(() => { | |
| 56 | + this.amMoment.changeLocale(language); | |
| 57 | + }); | |
| 58 | + } | |
| 59 | +} | ... | ... |
src/spec/mocks.ts