@ng-vagabond-lab/ng-dsv 0.2.11 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, signal, Injectable } from '@angular/core';
|
|
2
|
+
import { inject, DOCUMENT, signal, Injectable } from '@angular/core';
|
|
3
3
|
import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
|
|
4
4
|
import { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';
|
|
5
5
|
import { TranslateService } from '@ngx-translate/core';
|
|
@@ -13,6 +13,7 @@ class I18nService {
|
|
|
13
13
|
translateService = inject(TranslateService);
|
|
14
14
|
platformService = inject(PlatformService);
|
|
15
15
|
storageService = inject(StorageService);
|
|
16
|
+
document = inject(DOCUMENT);
|
|
16
17
|
currentLanguage = signal('', ...(ngDevMode ? [{ debugName: "currentLanguage" }] : /* istanbul ignore next */ []));
|
|
17
18
|
hasChange = signal(false, ...(ngDevMode ? [{ debugName: "hasChange" }] : /* istanbul ignore next */ []));
|
|
18
19
|
constructor() {
|
|
@@ -30,6 +31,7 @@ class I18nService {
|
|
|
30
31
|
this.storageService.setItem(this.LANGUAGE_STORAGE_NAME, language);
|
|
31
32
|
this.translateService.use(language);
|
|
32
33
|
this.currentLanguage.set(language);
|
|
34
|
+
this.document.documentElement.lang = language;
|
|
33
35
|
}
|
|
34
36
|
switchLanguage(language) {
|
|
35
37
|
this.useLanguage(language);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-vagabond-lab-ng-dsv-i18n.mjs","sources":["../../../projects/ng-dsv/i18n/service/i18n.service.ts","../../../projects/ng-dsv/i18n/ng-vagabond-lab-ng-dsv-i18n.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n readonly LANGUAGE_FR = 'fr';\n readonly LANGUAGE_EN = 'en';\n readonly DEFAULT_LANGUAGE = this.LANGUAGE_FR;\n readonly SUPPORTED_LANGUAGES = [this.LANGUAGE_FR, this.LANGUAGE_EN];\n readonly LANGUAGE_STORAGE_NAME = 'language';\n\n readonly translateService = inject(TranslateService);\n readonly platformService = inject(PlatformService);\n readonly storageService = inject(StorageService);\n\n readonly currentLanguage = signal<string>('');\n readonly hasChange = signal<boolean>(false);\n\n constructor() {\n this.translateService.addLangs(this.SUPPORTED_LANGUAGES);\n this.translateService.setFallbackLang(this.DEFAULT_LANGUAGE);\n\n const storageLanguage = this.storageService.getItem<string>(this.LANGUAGE_STORAGE_NAME);\n const detectedLang = storageLanguage ?? this.detectLanguage();\n this.useLanguage(detectedLang);\n }\n\n initLanguage(fr: TranslationObject, en?: TranslationObject) {\n this.translateService.setTranslation(this.LANGUAGE_FR, fr);\n en && this.translateService.setTranslation(this.LANGUAGE_EN, en);\n }\n\n useLanguage(language: string) {\n this.storageService.setItem(this.LANGUAGE_STORAGE_NAME, language);\n this.translateService.use(language);\n this.currentLanguage.set(language);\n }\n\n switchLanguage(language: string) {\n this.useLanguage(language);\n this.hasChange.set(true);\n }\n\n private detectLanguage(): string {\n if (this.platformService.isPlatformBrowser()) {\n return this.detectBrowserLanguage();\n }\n return this.DEFAULT_LANGUAGE;\n }\n\n private detectBrowserLanguage(): string {\n const browserLangs = navigator.languages?.length ? navigator.languages : [navigator.language];\n\n const match = browserLangs\n .map((l) => l.substring(0, 2).toLowerCase())\n .find((l) => this.SUPPORTED_LANGUAGES.includes(l));\n\n return match ?? this.DEFAULT_LANGUAGE;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAQa,WAAW,CAAA;IACX,WAAW,GAAG,IAAI;IAClB,WAAW,GAAG,IAAI;AAClB,IAAA,gBAAgB,GAAG,IAAI,CAAC,WAAW;IACnC,mBAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;IAC1D,qBAAqB,GAAG,UAAU;AAElC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ng-vagabond-lab-ng-dsv-i18n.mjs","sources":["../../../projects/ng-dsv/i18n/service/i18n.service.ts","../../../projects/ng-dsv/i18n/ng-vagabond-lab-ng-dsv-i18n.ts"],"sourcesContent":["import { DOCUMENT, inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class I18nService {\n readonly LANGUAGE_FR = 'fr';\n readonly LANGUAGE_EN = 'en';\n readonly DEFAULT_LANGUAGE = this.LANGUAGE_FR;\n readonly SUPPORTED_LANGUAGES = [this.LANGUAGE_FR, this.LANGUAGE_EN];\n readonly LANGUAGE_STORAGE_NAME = 'language';\n\n readonly translateService = inject(TranslateService);\n readonly platformService = inject(PlatformService);\n readonly storageService = inject(StorageService);\n readonly document = inject(DOCUMENT);\n\n readonly currentLanguage = signal<string>('');\n readonly hasChange = signal<boolean>(false);\n\n constructor() {\n this.translateService.addLangs(this.SUPPORTED_LANGUAGES);\n this.translateService.setFallbackLang(this.DEFAULT_LANGUAGE);\n\n const storageLanguage = this.storageService.getItem<string>(this.LANGUAGE_STORAGE_NAME);\n const detectedLang = storageLanguage ?? this.detectLanguage();\n this.useLanguage(detectedLang);\n }\n\n initLanguage(fr: TranslationObject, en?: TranslationObject) {\n this.translateService.setTranslation(this.LANGUAGE_FR, fr);\n en && this.translateService.setTranslation(this.LANGUAGE_EN, en);\n }\n\n useLanguage(language: string) {\n this.storageService.setItem(this.LANGUAGE_STORAGE_NAME, language);\n this.translateService.use(language);\n this.currentLanguage.set(language);\n this.document.documentElement.lang = language;\n }\n\n switchLanguage(language: string) {\n this.useLanguage(language);\n this.hasChange.set(true);\n }\n\n private detectLanguage(): string {\n if (this.platformService.isPlatformBrowser()) {\n return this.detectBrowserLanguage();\n }\n return this.DEFAULT_LANGUAGE;\n }\n\n private detectBrowserLanguage(): string {\n const browserLangs = navigator.languages?.length ? navigator.languages : [navigator.language];\n\n const match = browserLangs\n .map((l) => l.substring(0, 2).toLowerCase())\n .find((l) => this.SUPPORTED_LANGUAGES.includes(l));\n\n return match ?? this.DEFAULT_LANGUAGE;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -12,6 +12,7 @@ declare class I18nService {
|
|
|
12
12
|
readonly translateService: TranslateService;
|
|
13
13
|
readonly platformService: PlatformService;
|
|
14
14
|
readonly storageService: StorageService;
|
|
15
|
+
readonly document: Document;
|
|
15
16
|
readonly currentLanguage: _angular_core.WritableSignal<string>;
|
|
16
17
|
readonly hasChange: _angular_core.WritableSignal<boolean>;
|
|
17
18
|
constructor();
|