UNPKG

@singleton-i18n/angular-client

Version:

Singleton client code for Angular 10.

75 lines 8.28 kB
/* * 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==