diff --git a/bower.json b/bower.json index 1eaa4dc..be9a351 100644 --- a/bower.json +++ b/bower.json @@ -20,7 +20,7 @@ "font-awesome": "fontawesome#~4.5.0", "ngstorage": "~0.3.10", "bootswatch": "~3.3.6", - "angular-moment": "~0.10.3", + "angular-moment": "~1.0.0-beta.4", "lodash": "3.10.1", "angular-filter": "~0.5.8", "angular-deckgrid": "~0.5.0", @@ -32,7 +32,8 @@ "angular-translate-loader-static-files": "^2.10.0", "angular-translate-handler-log": "^2.10.0", "angular-dynamic-locale": "^0.1.30", - "angular-i18n": "^1.5.0" + "angular-i18n": "^1.5.0", + "angular-load": "^0.4.1" }, "devDependencies": { "angular-mocks": "~1.5.0" diff --git a/src/app/components/language-selector/language-selector.component.spec.ts b/src/app/components/language-selector/language-selector.component.spec.ts index 233f00b..9ba1a65 100644 --- a/src/app/components/language-selector/language-selector.component.spec.ts +++ b/src/app/components/language-selector/language-selector.component.spec.ts @@ -25,13 +25,24 @@ describe("Components", () => { }), provide('tmhDynamicLocale', { useValue: helpers.mocks.tmhDynamicLocale + }), + provide('amMoment', { + useValue: helpers.mocks.amMoment + }), + provide('angularLoad', { + useValue: helpers.mocks.angularLoad }) ].concat(helpers.provideFilters("translateFilter")) }) class BlockContainerComponent { } it("set available languages when change language", () => { - let component: LanguageSelector = new LanguageSelector(helpers.mocks.$translate, helpers.mocks.tmhDynamicLocale); + let component: LanguageSelector = new LanguageSelector( + helpers.mocks.$translate, + helpers.mocks.tmhDynamicLocale, + helpers.mocks.amMoment, + helpers.mocks.angularLoad + ); component.availableLanguages = null; expect(component.availableLanguages).toBeNull(); component.changeLanguage('en'); diff --git a/src/app/components/language-selector/language-selector.component.ts b/src/app/components/language-selector/language-selector.component.ts index 87d68f6..751ccd6 100644 --- a/src/app/components/language-selector/language-selector.component.ts +++ b/src/app/components/language-selector/language-selector.component.ts @@ -4,12 +4,16 @@ import {Component, Inject} from "ng-forward"; selector: "language-selector", templateUrl: "app/components/language-selector/language-selector.html" }) -@Inject("$translate", "tmhDynamicLocale") +@Inject("$translate", "tmhDynamicLocale", "amMoment", "angularLoad") export class LanguageSelector { availableLanguages: any; - constructor(private $translate: angular.translate.ITranslateService, private tmhDynamicLocale: any) { + constructor(private $translate: angular.translate.ITranslateService, + private tmhDynamicLocale: any, + private amMoment: any, + private angularLoad: any) { + this.changeLanguage(tmhDynamicLocale.get() || $translate.use()); } @@ -18,6 +22,7 @@ export class LanguageSelector { } changeLanguage(language: string) { + this.changeMomentLocale(language); this.tmhDynamicLocale.set(language); this.$translate.use(language).then((lang) => { this.availableLanguages = { @@ -27,4 +32,14 @@ export class LanguageSelector { }); } + private changeMomentLocale(language: string) { + let localePromise = Promise.resolve(); + if (language != "en") { + // FIXME fix locale path + localePromise = this.angularLoad.loadScript(`/bower_components/moment/locale/${language}.js`); + } + localePromise.then(() => { + this.amMoment.changeLocale(language); + }); + } } diff --git a/src/app/components/navbar/navbar.spec.ts b/src/app/components/navbar/navbar.spec.ts index e6b1dd5..3ab284d 100644 --- a/src/app/components/navbar/navbar.spec.ts +++ b/src/app/components/navbar/navbar.spec.ts @@ -77,6 +77,12 @@ describe("Components", () => { }), provide('tmhDynamicLocale', { useValue: helpers.mocks.tmhDynamicLocale + }), + provide('amMoment', { + useValue: helpers.mocks.amMoment + }), + provide('angularLoad', { + useValue: helpers.mocks.angularLoad }) ].concat(helpers.provideFilters("translateFilter")), directives: [Navbar], diff --git a/src/app/index.ts b/src/app/index.ts index 2df2a85..bb51a17 100644 --- a/src/app/index.ts +++ b/src/app/index.ts @@ -18,7 +18,7 @@ let noosferoApp: any = bundle("noosferoApp", Main, ["ngAnimate", "ngCookies", "n "ui.router", "ui.bootstrap", "toastr", "angularMoment", "angular.filter", "akoenig.deckgrid", "angular-timeline", "duScroll", "oitozero.ngSweetAlert", - "pascalprecht.translate", "tmh.dynamicLocale"]).publish(); + "pascalprecht.translate", "tmh.dynamicLocale", "angularLoad"]).publish(); NoosferoApp.angularModule = noosferoApp; diff --git a/src/spec/mocks.ts b/src/spec/mocks.ts index 600e0ff..14a89c7 100644 --- a/src/spec/mocks.ts +++ b/src/spec/mocks.ts @@ -54,5 +54,15 @@ export var mocks = { tmhDynamicLocale: { get: () => { }, set: (lang: string) => { } + }, + amMoment: { + changeLocale: () => { } + }, + angularLoad: { + loadScript: (script?: string) => { + return { + then: (func?: any) => { if (func) func() } + } + } } }; -- libgit2 0.21.2