diff --git a/projects/systelab-translate/README.md b/projects/systelab-translate/README.md index f26c62e..ef485a8 100644 --- a/projects/systelab-translate/README.md +++ b/projects/systelab-translate/README.md @@ -29,6 +29,12 @@ If you want to get the browser language, call the method: this.i18nService.getBrowserLang() ``` +If you want to force reloading a language + +```javascript + this.i18nService.reloadLanguage('en-US').subscribe(() => console.log('Translations for American English reloaded.')); +``` + ### Translate There are two convenient methods to set or append new keys to an specific locale: diff --git a/projects/systelab-translate/package.json b/projects/systelab-translate/package.json index fd601eb..6d39d54 100644 --- a/projects/systelab-translate/package.json +++ b/projects/systelab-translate/package.json @@ -7,7 +7,7 @@ "Translate", "i18n" ], - "version": "11.1.0", + "version": "11.1.1", "license": "MIT", "homepage": "https://github.com/systelab/systelab-translate.git", "repository": { diff --git a/projects/systelab-translate/src/lib/i18n.service.ts b/projects/systelab-translate/src/lib/i18n.service.ts index b748490..762b8ff 100644 --- a/projects/systelab-translate/src/lib/i18n.service.ts +++ b/projects/systelab-translate/src/lib/i18n.service.ts @@ -38,6 +38,10 @@ export class I18nService { return this.translateService.getBrowserLang(); } + public reloadLanguage(lang: string): Observable { + return this.translateService.reloadLang(lang); + } + public setTranslation(locale: string, translations: Object): void { this.translateService.setTranslation(locale, translations, false); } diff --git a/projects/systelab-translate/src/test/i18n.service.spec.ts b/projects/systelab-translate/src/test/i18n.service.spec.ts index 9b99a68..8b6ca35 100644 --- a/projects/systelab-translate/src/test/i18n.service.spec.ts +++ b/projects/systelab-translate/src/test/i18n.service.spec.ts @@ -2,6 +2,7 @@ import { httpLoaderFactory, I18nService } from '../public-api'; import { TestBed } from '@angular/core/testing'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { HttpClient, HttpClientModule } from '@angular/common/http'; +import { switchMap } from 'rxjs/operators'; describe('Translate Service', () => { let service: I18nService; @@ -318,4 +319,29 @@ describe('Translate Service', () => { }); }); + it('Check using reloadLanguage the translation of a key in english', (done) => { + service.use('en-US') + .pipe( + switchMap(()=>service.reloadLanguage('en-US')) + ) + .subscribe(() => { + expect(service.instant('COMMON_DAY')) + .toBe('Day'); + done(); + }, + (error) => { + }); + }); + + it('Check using reloadLanguage the translation of a key in spanish', (done) => { + service.use('es-ES') + .pipe( + switchMap(()=>service.reloadLanguage('es-ES')) + ) + .subscribe(() => { + expect(service.instant('COMMON_DAY')) + .toBe('Día'); + done(); + }); + }); });