@elderbyte/ngx-starter 21.8.0 → 21.8.1
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.
|
@@ -9574,19 +9574,6 @@ const ELDER_LANGUAGE_OPTIONS = new InjectionToken('ELDER_LANGUAGE_OPTIONS');
|
|
|
9574
9574
|
|
|
9575
9575
|
const LANGUAGE_STORAGE_KEY = 'language';
|
|
9576
9576
|
class ElderLanguageService {
|
|
9577
|
-
/***************************************************************************
|
|
9578
|
-
* *
|
|
9579
|
-
* Legacy Compatiblity *
|
|
9580
|
-
* *
|
|
9581
|
-
**************************************************************************/
|
|
9582
|
-
get currentLanguage$() {
|
|
9583
|
-
return toObservable(this.currentLang);
|
|
9584
|
-
}
|
|
9585
|
-
/***************************************************************************
|
|
9586
|
-
* *
|
|
9587
|
-
* Constructor *
|
|
9588
|
-
* *
|
|
9589
|
-
**************************************************************************/
|
|
9590
9577
|
constructor() {
|
|
9591
9578
|
this.webStorage = inject(WebLocalStorage);
|
|
9592
9579
|
this.config = inject(ELDER_LANGUAGE_OPTIONS);
|
|
@@ -9599,14 +9586,13 @@ class ElderLanguageService {
|
|
|
9599
9586
|
this._langs = signal(null, ...(ngDevMode ? [{ debugName: "_langs" }] : /* istanbul ignore next */ []));
|
|
9600
9587
|
this._defaultLang = signal(null, ...(ngDevMode ? [{ debugName: "_defaultLang" }] : /* istanbul ignore next */ []));
|
|
9601
9588
|
this._currentLang = signal(null, ...(ngDevMode ? [{ debugName: "_currentLang" }] : /* istanbul ignore next */ []));
|
|
9602
|
-
this._browserLang = getBrowserPreferredLang();
|
|
9603
|
-
this._storedPreferredLang = this.getStoredPreferredLang();
|
|
9604
9589
|
/***************************************************************************
|
|
9605
9590
|
* *
|
|
9606
9591
|
* Computed *
|
|
9607
9592
|
* *
|
|
9608
9593
|
**************************************************************************/
|
|
9609
9594
|
this.currentLang = this._currentLang.asReadonly();
|
|
9595
|
+
this.currentLanguage$ = toObservable(this.currentLang);
|
|
9610
9596
|
this.defaultLang = this._defaultLang.asReadonly();
|
|
9611
9597
|
this.langs = this._langs.asReadonly();
|
|
9612
9598
|
}
|
|
@@ -9620,6 +9606,7 @@ class ElderLanguageService {
|
|
|
9620
9606
|
this.logger.warn('cannot set lang', lang, 'since it is not in supported langs', this._langs());
|
|
9621
9607
|
return;
|
|
9622
9608
|
}
|
|
9609
|
+
this.logger.debug('set current language and persist to storage: ', lang);
|
|
9623
9610
|
this.webStorage.setItem(LANGUAGE_STORAGE_KEY, lang);
|
|
9624
9611
|
this._currentLang.set(lang);
|
|
9625
9612
|
}
|
|
@@ -9630,7 +9617,7 @@ class ElderLanguageService {
|
|
|
9630
9617
|
}
|
|
9631
9618
|
this.setLangs(this.config?.langs);
|
|
9632
9619
|
this.setDefaultLang(this.config?.defaultLang);
|
|
9633
|
-
this.
|
|
9620
|
+
this.resolveInitialLang();
|
|
9634
9621
|
}
|
|
9635
9622
|
/***************************************************************************
|
|
9636
9623
|
* *
|
|
@@ -9649,19 +9636,57 @@ class ElderLanguageService {
|
|
|
9649
9636
|
}
|
|
9650
9637
|
this._defaultLang.set(lang);
|
|
9651
9638
|
}
|
|
9652
|
-
|
|
9653
|
-
|
|
9654
|
-
|
|
9639
|
+
resolveInitialLang() {
|
|
9640
|
+
this.logger.debug('resolving initial language. available langs: ', this._langs());
|
|
9641
|
+
if (this.trySetInitialLangFromStoredPreferredLang()) {
|
|
9655
9642
|
return;
|
|
9656
9643
|
}
|
|
9657
|
-
if (this.
|
|
9658
|
-
this._currentLang.set(this._browserLang);
|
|
9644
|
+
if (this.trySetInitialLangFromBrowserLang()) {
|
|
9659
9645
|
return;
|
|
9660
9646
|
}
|
|
9661
|
-
this.
|
|
9647
|
+
this.setInitialLangFromDefaultLang();
|
|
9648
|
+
}
|
|
9649
|
+
trySetInitialLangFromStoredPreferredLang() {
|
|
9650
|
+
const storedPreferredLang = this.getStoredPreferredLang();
|
|
9651
|
+
if (!storedPreferredLang) {
|
|
9652
|
+
this.logger.debug('no stored preferred lang found.');
|
|
9653
|
+
return false;
|
|
9654
|
+
}
|
|
9655
|
+
if (!this.isSupported(storedPreferredLang)) {
|
|
9656
|
+
this.logger.warn('stored preferred lang is not supported: ', storedPreferredLang);
|
|
9657
|
+
return false;
|
|
9658
|
+
}
|
|
9659
|
+
this.logger.debug('set initial lang from stored preferred language: ', storedPreferredLang);
|
|
9660
|
+
this.applyInitialLang(storedPreferredLang, { persist: false });
|
|
9661
|
+
return true;
|
|
9662
|
+
}
|
|
9663
|
+
trySetInitialLangFromBrowserLang() {
|
|
9664
|
+
const browserLang = getBrowserPreferredLang();
|
|
9665
|
+
if (!browserLang) {
|
|
9666
|
+
this.logger.debug('could not determine browser preferred language.');
|
|
9667
|
+
return false;
|
|
9668
|
+
}
|
|
9669
|
+
if (!this.isSupported(browserLang)) {
|
|
9670
|
+
this.logger.debug('preferred browser language is not supported: ', browserLang);
|
|
9671
|
+
return false;
|
|
9672
|
+
}
|
|
9673
|
+
this.logger.debug('set initial language from preferred browser language: ', browserLang);
|
|
9674
|
+
this.applyInitialLang(browserLang, { persist: true });
|
|
9675
|
+
return true;
|
|
9676
|
+
}
|
|
9677
|
+
setInitialLangFromDefaultLang() {
|
|
9678
|
+
this.logger.debug('set initial language from default language: ', this._defaultLang());
|
|
9679
|
+
this.applyInitialLang(this._defaultLang(), { persist: true });
|
|
9680
|
+
}
|
|
9681
|
+
applyInitialLang(lang, options) {
|
|
9682
|
+
if (options.persist) {
|
|
9683
|
+
this.setCurrentLang(lang);
|
|
9684
|
+
return;
|
|
9685
|
+
}
|
|
9686
|
+
this._currentLang.set(lang);
|
|
9662
9687
|
}
|
|
9663
9688
|
isSupported(lang) {
|
|
9664
|
-
return this._langs()
|
|
9689
|
+
return this._langs()?.includes(lang) ?? false;
|
|
9665
9690
|
}
|
|
9666
9691
|
getStoredPreferredLang() {
|
|
9667
9692
|
return this.webStorage.getItem(LANGUAGE_STORAGE_KEY);
|
|
@@ -9674,7 +9699,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.7", ngImpor
|
|
|
9674
9699
|
args: [{
|
|
9675
9700
|
providedIn: 'root',
|
|
9676
9701
|
}]
|
|
9677
|
-
}]
|
|
9702
|
+
}] });
|
|
9678
9703
|
/***************************************************************************
|
|
9679
9704
|
* *
|
|
9680
9705
|
* Helper Functions *
|