UNPKG

@versatiledatakit/shared

Version:

Versatile Data Kit Shared library enables reusability of shared features like: NgRx Redux, Error Handlers, Utils, Generic Components, etc.

86 lines 11.7 kB
/* * Copyright 2023-2025 Broadcom * SPDX-License-Identifier: Apache-2.0 */ /* eslint-disable */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; const DEFAULT_LANGUAGE = 'en'; export class VdkSimpleTranslateService { constructor() { this.language = DEFAULT_LANGUAGE; this.translations = {}; const w = window; const language = w.navigator.language || w.navigator.userLanguage; this.setLanguage(language); } loadTranslationsForComponent(componentKey, translationsToAdd) { for (let language in translationsToAdd) { if (!this.translations[language]) { this.translations[language] = {}; } for (let y in translationsToAdd[language]) { let newKey = componentKey + '.' + y; this.translations[language][newKey] = translationsToAdd[language][y]; } } } setLanguage(language) { language = language.replace('-', '_'); // check if different locale names are used for Simplified or Traditional Chinese const chineseMapping = { zh_Hans: 'zh_CN', zh_Hant: 'zh_TW' }; language = chineseMapping[language] || language; // Special-case Chinese because we support both TW and CN locales // Also if the locale is pt_PT(Portuguese Portugal) we should default to EN // otherwise the 2 character language ID is what we want const mainLocale = language.substring(0, 2); const isChinese = language.length > 2 && mainLocale === 'zh'; const isNotSupportedPortuguese = language.length > 2 && mainLocale === 'pt' && language !== 'pt_BR'; if (isChinese || isNotSupportedPortuguese) { this.language = language; } else { this.language = mainLocale; } } getLanguage() { return this.language; } translate(key, ...args) { let translations = this.translations[this.language]; //if there are no translations of the user's language set translations to equal the default language if (!translations) { translations = this.translations[DEFAULT_LANGUAGE] ? this.translations[DEFAULT_LANGUAGE] : []; } //if there is a translation get that translation otherwise use the default language let translation = undefined; if (translations[key]) { translation = translations[key]; } else if (this.translations[DEFAULT_LANGUAGE]) { translation = this.translations[DEFAULT_LANGUAGE][key]; } //if no translation is found in the user's language or in the default language then show an error string if (!translation) { translation = `!! Key ${key} not found !!`; } return this.format(translation, ...args); } format(format, ...args) { return format.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); } } VdkSimpleTranslateService.ɵfac = function VdkSimpleTranslateService_Factory(t) { return new (t || VdkSimpleTranslateService)(); }; VdkSimpleTranslateService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: VdkSimpleTranslateService, factory: VdkSimpleTranslateService.ɵfac, providedIn: 'root' }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VdkSimpleTranslateService, [{ type: Injectable, args: [{ providedIn: 'root' }] }], function () { return []; }, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRyYW5zbGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tbW9ucy9uZ3gtdXRpbHMvc2ltcGxlLXRyYW5zbGF0ZS1zZXJ2aWNlL3NpbXBsZS10cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxvQkFBb0I7QUFFcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFLOUIsTUFBTSxPQUFPLHlCQUF5QjtJQUlsQztRQUhRLGFBQVEsR0FBVyxnQkFBZ0IsQ0FBQztRQUNwQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUczQixNQUFNLENBQUMsR0FBUSxNQUFhLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsNEJBQTRCLENBQUMsWUFBb0IsRUFBRSxpQkFBc0I7UUFDckUsS0FBSyxJQUFJLFFBQVEsSUFBSSxpQkFBaUIsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDcEM7WUFFRCxLQUFLLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLE1BQU0sR0FBRyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4RTtTQUNKO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUN4QixRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEMsaUZBQWlGO1FBQ2pGLE1BQU0sY0FBYyxHQUFHO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1NBQ25CLENBQUM7UUFDRixRQUFRLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQztRQUVoRCxpRUFBaUU7UUFDakUsMkVBQTJFO1FBQzNFLHdEQUF3RDtRQUN4RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDO1FBQzdELE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssT0FBTyxDQUFDO1FBRXBHLElBQUksU0FBUyxJQUFJLHdCQUF3QixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzVCO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBUSxFQUFFLEdBQUcsSUFBVztRQUM5QixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxvR0FBb0c7UUFDcEcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNmLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ2pHO1FBRUQsbUZBQW1GO1FBQ25GLElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuQixXQUFXLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDNUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxRDtRQUVELHdHQUF3RztRQUN4RyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsV0FBVyxHQUFHLFVBQVUsR0FBRyxlQUFlLENBQUM7U0FDOUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLE1BQU0sQ0FBQyxNQUFjLEVBQUUsR0FBRyxJQUFjO1FBQzVDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxLQUFLLEVBQUUsTUFBTTtZQUNyRCxPQUFPLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztrR0EvRVEseUJBQXlCOytFQUF6Qix5QkFBeUIsV0FBekIseUJBQXlCLG1CQUZ0QixNQUFNO3VGQUVULHlCQUF5QjtjQUhyQyxVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMtMjAyNSBCcm9hZGNvbVxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IERFRkFVTFRfTEFOR1VBR0UgPSAnZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZka1NpbXBsZVRyYW5zbGF0ZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IERFRkFVTFRfTEFOR1VBR0U7XG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbnM6IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IHc6IGFueSA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdy5uYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgdy5uYXZpZ2F0b3IudXNlckxhbmd1YWdlO1xuICAgICAgICB0aGlzLnNldExhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBsb2FkVHJhbnNsYXRpb25zRm9yQ29tcG9uZW50KGNvbXBvbmVudEtleTogc3RyaW5nLCB0cmFuc2xhdGlvbnNUb0FkZDogYW55KSB7XG4gICAgICAgIGZvciAobGV0IGxhbmd1YWdlIGluIHRyYW5zbGF0aW9uc1RvQWRkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCB5IGluIHRyYW5zbGF0aW9uc1RvQWRkW2xhbmd1YWdlXSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdLZXkgPSBjb21wb25lbnRLZXkgKyAnLicgKyB5O1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXVtuZXdLZXldID0gdHJhbnNsYXRpb25zVG9BZGRbbGFuZ3VhZ2VdW3ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICBsYW5ndWFnZSA9IGxhbmd1YWdlLnJlcGxhY2UoJy0nLCAnXycpO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIGRpZmZlcmVudCBsb2NhbGUgbmFtZXMgYXJlIHVzZWQgZm9yIFNpbXBsaWZpZWQgb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZVxuICAgICAgICBjb25zdCBjaGluZXNlTWFwcGluZyA9IHtcbiAgICAgICAgICAgIHpoX0hhbnM6ICd6aF9DTicsXG4gICAgICAgICAgICB6aF9IYW50OiAnemhfVFcnXG4gICAgICAgIH07XG4gICAgICAgIGxhbmd1YWdlID0gY2hpbmVzZU1hcHBpbmdbbGFuZ3VhZ2VdIHx8IGxhbmd1YWdlO1xuXG4gICAgICAgIC8vIFNwZWNpYWwtY2FzZSBDaGluZXNlIGJlY2F1c2Ugd2Ugc3VwcG9ydCBib3RoIFRXIGFuZCBDTiBsb2NhbGVzXG4gICAgICAgIC8vIEFsc28gaWYgdGhlIGxvY2FsZSBpcyBwdF9QVChQb3J0dWd1ZXNlIFBvcnR1Z2FsKSB3ZSBzaG91bGQgZGVmYXVsdCB0byBFTlxuICAgICAgICAvLyBvdGhlcndpc2UgdGhlIDIgY2hhcmFjdGVyIGxhbmd1YWdlIElEIGlzIHdoYXQgd2Ugd2FudFxuICAgICAgICBjb25zdCBtYWluTG9jYWxlID0gbGFuZ3VhZ2Uuc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgICBjb25zdCBpc0NoaW5lc2UgPSBsYW5ndWFnZS5sZW5ndGggPiAyICYmIG1haW5Mb2NhbGUgPT09ICd6aCc7XG4gICAgICAgIGNvbnN0IGlzTm90U3VwcG9ydGVkUG9ydHVndWVzZSA9IGxhbmd1YWdlLmxlbmd0aCA+IDIgJiYgbWFpbkxvY2FsZSA9PT0gJ3B0JyAmJiBsYW5ndWFnZSAhPT0gJ3B0X0JSJztcblxuICAgICAgICBpZiAoaXNDaGluZXNlIHx8IGlzTm90U3VwcG9ydGVkUG9ydHVndWVzZSkge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IG1haW5Mb2NhbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRMYW5ndWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgdHJhbnNsYXRlKGtleTogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBsZXQgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5sYW5ndWFnZV07XG5cbiAgICAgICAgLy9pZiB0aGVyZSBhcmUgbm8gdHJhbnNsYXRpb25zIG9mIHRoZSB1c2VyJ3MgbGFuZ3VhZ2Ugc2V0IHRyYW5zbGF0aW9ucyB0byBlcXVhbCB0aGUgZGVmYXVsdCBsYW5ndWFnZVxuICAgICAgICBpZiAoIXRyYW5zbGF0aW9ucykge1xuICAgICAgICAgICAgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGlvbnNbREVGQVVMVF9MQU5HVUFHRV0gPyB0aGlzLnRyYW5zbGF0aW9uc1tERUZBVUxUX0xBTkdVQUdFXSA6IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHRyYW5zbGF0aW9uIGdldCB0aGF0IHRyYW5zbGF0aW9uIG90aGVyd2lzZSB1c2UgdGhlIGRlZmF1bHQgbGFuZ3VhZ2VcbiAgICAgICAgbGV0IHRyYW5zbGF0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHJhbnNsYXRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25zW2tleV07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFuc2xhdGlvbnNbREVGQVVMVF9MQU5HVUFHRV0pIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGlvbnNbREVGQVVMVF9MQU5HVUFHRV1ba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaWYgbm8gdHJhbnNsYXRpb24gaXMgZm91bmQgaW4gdGhlIHVzZXIncyBsYW5ndWFnZSBvciBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZSB0aGVuIHNob3cgYW4gZXJyb3Igc3RyaW5nXG4gICAgICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uID0gYCEhIEtleSAke2tleX0gbm90IGZvdW5kICEhYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh0cmFuc2xhdGlvbiwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXQoZm9ybWF0OiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgveyhcXGQrKX0vZywgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9ICd1bmRlZmluZWQnID8gYXJnc1tudW1iZXJdIDogbWF0Y2g7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==