@singleton-i18n/angular-client
Version:
Singleton client code for Angular 10.
75 lines • 8.28 kB
JavaScript
/*
* Copyright 2019-2021 VMware, Inc.
* SPDX-License-Identifier: EPL-2.0
*/
import { Injectable } from '@angular/core';
const I18N_ENABLED = 'vip.i18nEnabled';
const PSEUDO_ENABLED = 'vip.pseudoEnabled';
const PREFERRED_LANGUAGE = 'vip.preferredLanguage';
const PREFERRED_REGION = 'vip.preferredRegion';
import { isDefined } from '../util';
export class I18nContext {
}
function supports_html5_storage() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
}
catch (e) {
return false;
}
}
export class DefaultI18nContext extends I18nContext {
constructor() {
super();
this.localstore = {};
if (supports_html5_storage) {
this.store = window.localStorage;
}
}
toBoolean(value) {
if (value === undefined || value === 'undefined') {
return undefined;
}
return value === 'true' ? true : false;
}
setItem(item, value) {
this.localstore[item] = value;
if (this.store) {
this.store.setItem(item, value);
}
}
getItem(name) {
if (this.store && isDefined(this.store.getItem(name))) {
return this.store.getItem(name);
}
if (isDefined(this.localstore[name])) {
return this.localstore[name];
}
}
get pseudoEnabled() {
return this.toBoolean(this.getItem(PSEUDO_ENABLED));
}
get i18nEnabled() {
return this.toBoolean(this.getItem(I18N_ENABLED));
}
set i18nEnabled(i18nEnabled) {
this.setItem(I18N_ENABLED, String(i18nEnabled));
}
get preferredLanguage() {
return this.getItem(PREFERRED_LANGUAGE);
}
set preferredLanguage(languageCode) {
this.setItem(PREFERRED_LANGUAGE, languageCode);
}
get preferredRegion() {
return this.getItem(PREFERRED_REGION);
}
set preferredRegion(regionCode) {
this.setItem(PREFERRED_REGION, regionCode);
}
}
DefaultI18nContext.decorators = [
{ type: Injectable }
];
DefaultI18nContext.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5jb250ZXh0LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3JsaWdlbmcvUHJvamVjdHMvRGV2b3BzL0NsaWVudF9Bbmd1bGFyX0dpdEh1Yl9OcG1qcy92aXAvY2kvcHViMm9yZy9DbGllbnRfQW5ndWxhcl9HaXRIdWJfTnBtanMvc2luZ2xldG9uL3Byb2plY3RzL2FuZ3VsYXItY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL3NlcnZpY2VzL2kxOG4uY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDO0FBQ3ZDLE1BQU0sY0FBYyxHQUFHLG1CQUFtQixDQUFDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsdUJBQXVCLENBQUM7QUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBDLE1BQU0sT0FBZ0IsV0FBVztDQUtoQztBQUVELFNBQVMsc0JBQXNCO0lBQzNCLElBQUk7UUFDQSxPQUFPLGNBQWMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQztLQUN0RTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsT0FBTyxLQUFLLENBQUM7S0FDaEI7QUFDTCxDQUFDO0FBR0QsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFdBQVc7SUFLL0M7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQUhKLGVBQVUsR0FBUSxFQUFFLENBQUM7UUFJekIsSUFBSSxzQkFBc0IsRUFBRTtZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxXQUFXLEVBQUc7WUFDL0MsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxPQUFPLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFZO1FBQ3hCLElBQUssSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRztZQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFHO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxXQUFvQjtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksaUJBQWlCLENBQUMsWUFBb0I7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLFVBQWtCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7O1lBOURKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTktMjAyMSBWTXdhcmUsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgSTE4Tl9FTkFCTEVEID0gJ3ZpcC5pMThuRW5hYmxlZCc7XG5jb25zdCBQU0VVRE9fRU5BQkxFRCA9ICd2aXAucHNldWRvRW5hYmxlZCc7XG5jb25zdCBQUkVGRVJSRURfTEFOR1VBR0UgPSAndmlwLnByZWZlcnJlZExhbmd1YWdlJztcbmNvbnN0IFBSRUZFUlJFRF9SRUdJT04gPSAndmlwLnByZWZlcnJlZFJlZ2lvbic7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEkxOG5Db250ZXh0IHtcbiAgICBhYnN0cmFjdCBwc2V1ZG9FbmFibGVkOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGkxOG5FbmFibGVkOiBib29sZWFuO1xuICAgIGFic3RyYWN0IHByZWZlcnJlZExhbmd1YWdlOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgcHJlZmVycmVkUmVnaW9uOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRzX2h0bWw1X3N0b3JhZ2UoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuICdsb2NhbFN0b3JhZ2UnIGluIHdpbmRvdyAmJiB3aW5kb3dbJ2xvY2FsU3RvcmFnZSddICE9PSBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERlZmF1bHRJMThuQ29udGV4dCBleHRlbmRzIEkxOG5Db250ZXh0IHtcblxuICAgIHByaXZhdGUgc3RvcmU6IGFueTtcbiAgICBwcml2YXRlIGxvY2Fsc3RvcmU6IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGlmIChzdXBwb3J0c19odG1sNV9zdG9yYWdlKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlID0gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9Cb29sZWFuKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEl0ZW0oaXRlbTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nICkge1xuICAgICAgICB0aGlzLmxvY2Fsc3RvcmVbaXRlbV0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2V0SXRlbShpdGVtLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEl0ZW0obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCB0aGlzLnN0b3JlICYmIGlzRGVmaW5lZCh0aGlzLnN0b3JlLmdldEl0ZW0obmFtZSkpICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0SXRlbShuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIGlzRGVmaW5lZCh0aGlzLmxvY2Fsc3RvcmVbbmFtZV0pICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxzdG9yZVtuYW1lXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBwc2V1ZG9FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b0Jvb2xlYW4oIHRoaXMuZ2V0SXRlbShQU0VVRE9fRU5BQkxFRCkgKTtcbiAgICB9XG5cbiAgICBnZXQgaTE4bkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvQm9vbGVhbiggdGhpcy5nZXRJdGVtKEkxOE5fRU5BQkxFRCkgKTtcbiAgICB9XG5cbiAgICBzZXQgaTE4bkVuYWJsZWQoaTE4bkVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtKEkxOE5fRU5BQkxFRCwgU3RyaW5nKGkxOG5FbmFibGVkKSk7XG4gICAgfVxuXG4gICAgZ2V0IHByZWZlcnJlZExhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW0oUFJFRkVSUkVEX0xBTkdVQUdFKTtcbiAgICB9XG5cbiAgICBzZXQgcHJlZmVycmVkTGFuZ3VhZ2UobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtKFBSRUZFUlJFRF9MQU5HVUFHRSwgbGFuZ3VhZ2VDb2RlKTtcbiAgICB9XG5cbiAgICBnZXQgcHJlZmVycmVkUmVnaW9uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW0oUFJFRkVSUkVEX1JFR0lPTik7XG4gICAgfVxuXG4gICAgc2V0IHByZWZlcnJlZFJlZ2lvbihyZWdpb25Db2RlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtKFBSRUZFUlJFRF9SRUdJT04sIHJlZ2lvbkNvZGUpO1xuICAgIH1cbn1cbiJdfQ==