Commit 74e34a119f995c701ee6efd65742919373d7e54f

Authored by Victor Costa
1 parent a2e78a1a
Exists in master and in 1 other branch dev-fixes

Change locale of angular moment when change the language

@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 "font-awesome": "fontawesome#~4.5.0", 20 "font-awesome": "fontawesome#~4.5.0",
21 "ngstorage": "~0.3.10", 21 "ngstorage": "~0.3.10",
22 "bootswatch": "~3.3.6", 22 "bootswatch": "~3.3.6",
23 - "angular-moment": "~0.10.3", 23 + "angular-moment": "~1.0.0-beta.4",
24 "lodash": "3.10.1", 24 "lodash": "3.10.1",
25 "angular-filter": "~0.5.8", 25 "angular-filter": "~0.5.8",
26 "angular-deckgrid": "~0.5.0", 26 "angular-deckgrid": "~0.5.0",
@@ -32,7 +32,8 @@ @@ -32,7 +32,8 @@
32 "angular-translate-loader-static-files": "^2.10.0", 32 "angular-translate-loader-static-files": "^2.10.0",
33 "angular-translate-handler-log": "^2.10.0", 33 "angular-translate-handler-log": "^2.10.0",
34 "angular-dynamic-locale": "^0.1.30", 34 "angular-dynamic-locale": "^0.1.30",
35 - "angular-i18n": "^1.5.0" 35 + "angular-i18n": "^1.5.0",
  36 + "angular-load": "^0.4.1"
36 }, 37 },
37 "devDependencies": { 38 "devDependencies": {
38 "angular-mocks": "~1.5.0" 39 "angular-mocks": "~1.5.0"
src/app/components/language-selector/language-selector.component.spec.ts
@@ -25,13 +25,24 @@ describe("Components", () => { @@ -25,13 +25,24 @@ describe("Components", () => {
25 }), 25 }),
26 provide('tmhDynamicLocale', { 26 provide('tmhDynamicLocale', {
27 useValue: helpers.mocks.tmhDynamicLocale 27 useValue: helpers.mocks.tmhDynamicLocale
  28 + }),
  29 + provide('amMoment', {
  30 + useValue: helpers.mocks.amMoment
  31 + }),
  32 + provide('angularLoad', {
  33 + useValue: helpers.mocks.angularLoad
28 }) 34 })
29 ].concat(helpers.provideFilters("translateFilter")) 35 ].concat(helpers.provideFilters("translateFilter"))
30 }) 36 })
31 class BlockContainerComponent { } 37 class BlockContainerComponent { }
32 38
33 it("set available languages when change language", () => { 39 it("set available languages when change language", () => {
34 - let component: LanguageSelector = new LanguageSelector(<any>helpers.mocks.$translate, <any>helpers.mocks.tmhDynamicLocale); 40 + let component: LanguageSelector = new LanguageSelector(
  41 + <any>helpers.mocks.$translate,
  42 + <any>helpers.mocks.tmhDynamicLocale,
  43 + <any>helpers.mocks.amMoment,
  44 + <any>helpers.mocks.angularLoad
  45 + );
35 component.availableLanguages = null; 46 component.availableLanguages = null;
36 expect(component.availableLanguages).toBeNull(); 47 expect(component.availableLanguages).toBeNull();
37 component.changeLanguage('en'); 48 component.changeLanguage('en');
src/app/components/language-selector/language-selector.component.ts
@@ -4,12 +4,16 @@ import {Component, Inject} from &quot;ng-forward&quot;; @@ -4,12 +4,16 @@ import {Component, Inject} from &quot;ng-forward&quot;;
4 selector: "language-selector", 4 selector: "language-selector",
5 templateUrl: "app/components/language-selector/language-selector.html" 5 templateUrl: "app/components/language-selector/language-selector.html"
6 }) 6 })
7 -@Inject("$translate", "tmhDynamicLocale") 7 +@Inject("$translate", "tmhDynamicLocale", "amMoment", "angularLoad")
8 export class LanguageSelector { 8 export class LanguageSelector {
9 9
10 availableLanguages: any; 10 availableLanguages: any;
11 11
12 - constructor(private $translate: angular.translate.ITranslateService, private tmhDynamicLocale: any) { 12 + constructor(private $translate: angular.translate.ITranslateService,
  13 + private tmhDynamicLocale: any,
  14 + private amMoment: any,
  15 + private angularLoad: any) {
  16 +
13 this.changeLanguage(tmhDynamicLocale.get() || $translate.use()); 17 this.changeLanguage(tmhDynamicLocale.get() || $translate.use());
14 } 18 }
15 19
@@ -18,6 +22,7 @@ export class LanguageSelector { @@ -18,6 +22,7 @@ export class LanguageSelector {
18 } 22 }
19 23
20 changeLanguage(language: string) { 24 changeLanguage(language: string) {
  25 + this.changeMomentLocale(language);
21 this.tmhDynamicLocale.set(language); 26 this.tmhDynamicLocale.set(language);
22 this.$translate.use(language).then((lang) => { 27 this.$translate.use(language).then((lang) => {
23 this.availableLanguages = { 28 this.availableLanguages = {
@@ -27,4 +32,14 @@ export class LanguageSelector { @@ -27,4 +32,14 @@ export class LanguageSelector {
27 }); 32 });
28 } 33 }
29 34
  35 + private changeMomentLocale(language: string) {
  36 + let localePromise = Promise.resolve();
  37 + if (language != "en") {
  38 + // FIXME fix locale path
  39 + localePromise = this.angularLoad.loadScript(`/bower_components/moment/locale/${language}.js`);
  40 + }
  41 + localePromise.then(() => {
  42 + this.amMoment.changeLocale(language);
  43 + });
  44 + }
30 } 45 }
src/app/components/navbar/navbar.spec.ts
@@ -77,6 +77,12 @@ describe(&quot;Components&quot;, () =&gt; { @@ -77,6 +77,12 @@ describe(&quot;Components&quot;, () =&gt; {
77 }), 77 }),
78 provide('tmhDynamicLocale', { 78 provide('tmhDynamicLocale', {
79 useValue: helpers.mocks.tmhDynamicLocale 79 useValue: helpers.mocks.tmhDynamicLocale
  80 + }),
  81 + provide('amMoment', {
  82 + useValue: helpers.mocks.amMoment
  83 + }),
  84 + provide('angularLoad', {
  85 + useValue: helpers.mocks.angularLoad
80 }) 86 })
81 ].concat(helpers.provideFilters("translateFilter")), 87 ].concat(helpers.provideFilters("translateFilter")),
82 directives: [Navbar], 88 directives: [Navbar],
src/app/index.ts
@@ -18,7 +18,7 @@ let noosferoApp: any = bundle(&quot;noosferoApp&quot;, Main, [&quot;ngAnimate&quot;, &quot;ngCookies&quot;, &quot;n @@ -18,7 +18,7 @@ let noosferoApp: any = bundle(&quot;noosferoApp&quot;, Main, [&quot;ngAnimate&quot;, &quot;ngCookies&quot;, &quot;n
18 "ui.router", "ui.bootstrap", "toastr", 18 "ui.router", "ui.bootstrap", "toastr",
19 "angularMoment", "angular.filter", "akoenig.deckgrid", 19 "angularMoment", "angular.filter", "akoenig.deckgrid",
20 "angular-timeline", "duScroll", "oitozero.ngSweetAlert", 20 "angular-timeline", "duScroll", "oitozero.ngSweetAlert",
21 - "pascalprecht.translate", "tmh.dynamicLocale"]).publish(); 21 + "pascalprecht.translate", "tmh.dynamicLocale", "angularLoad"]).publish();
22 22
23 NoosferoApp.angularModule = noosferoApp; 23 NoosferoApp.angularModule = noosferoApp;
24 24
src/spec/mocks.ts
@@ -54,5 +54,15 @@ export var mocks = { @@ -54,5 +54,15 @@ export var mocks = {
54 tmhDynamicLocale: { 54 tmhDynamicLocale: {
55 get: () => { }, 55 get: () => { },
56 set: (lang: string) => { } 56 set: (lang: string) => { }
  57 + },
  58 + amMoment: {
  59 + changeLocale: () => { }
  60 + },
  61 + angularLoad: {
  62 + loadScript: (script?: string) => {
  63 + return {
  64 + then: (func?: any) => { if (func) func() }
  65 + }
  66 + }
57 } 67 }
58 }; 68 };