@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
JavaScript
/*
* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLXRyYW5zbGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkL3NyYy9saWIvY29tbW9ucy9uZ3gtdXRpbHMvc2ltcGxlLXRyYW5zbGF0ZS1zZXJ2aWNlL3NpbXBsZS10cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxvQkFBb0I7QUFFcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFLOUIsTUFBTSxPQUFPLHlCQUF5QjtJQUlsQztRQUhRLGFBQVEsR0FBVyxnQkFBZ0IsQ0FBQztRQUNwQyxpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUczQixNQUFNLENBQUMsR0FBUSxNQUFhLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsNEJBQTRCLENBQUMsWUFBb0IsRUFBRSxpQkFBc0I7UUFDckUsS0FBSyxJQUFJLFFBQVEsSUFBSSxpQkFBaUIsRUFBRTtZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDcEM7WUFFRCxLQUFLLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLE1BQU0sR0FBRyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENB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bVxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IERFRkFVTFRfTEFOR1VBR0UgPSAnZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZka1NpbXBsZVRyYW5zbGF0ZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IERFRkFVTFRfTEFOR1VBR0U7XG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbnM6IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IHc6IGFueSA9IHdpbmRvdyBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gdy5uYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgdy5uYXZpZ2F0b3IudXNlckxhbmd1YWdlO1xuICAgICAgICB0aGlzLnNldExhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBsb2FkVHJhbnNsYXRpb25zRm9yQ29tcG9uZW50KGNvbXBvbmVudEtleTogc3RyaW5nLCB0cmFuc2xhdGlvbnNUb0FkZDogYW55KSB7XG4gICAgICAgIGZvciAobGV0IGxhbmd1YWdlIGluIHRyYW5zbGF0aW9uc1RvQWRkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCB5IGluIHRyYW5zbGF0aW9uc1RvQWRkW2xhbmd1YWdlXSkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdLZXkgPSBjb21wb25lbnRLZXkgKyAnLicgKyB5O1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmd1YWdlXVtuZXdLZXldID0gdHJhbnNsYXRpb25zVG9BZGRbbGFuZ3VhZ2VdW3ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICBsYW5ndWFnZSA9IGxhbmd1YWdlLnJlcGxhY2UoJy0nLCAnXycpO1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIGRpZmZlcmVudCBsb2NhbGUgbmFtZXMgYXJlIHVzZWQgZm9yIFNpbXBsaWZpZWQgb3IgVHJhZGl0aW9uYWwgQ2hpbmVzZVxuICAgICAgICBjb25zdCBjaGluZXNlTWFwcGluZyA9IHtcbiAgICAgICAgICAgIHpoX0hhbnM6ICd6aF9DTicsXG4gICAgICAgICAgICB6aF9IYW50OiAnemhfVFcnXG4gICAgICAgIH07XG4gICAgICAgIGxhbmd1YWdlID0gY2hpbmVzZU1hcHBpbmdbbGFuZ3VhZ2VdIHx8IGxhbmd1YWdlO1xuXG4gICAgICAgIC8vIFNwZWNpYWwtY2FzZSBDaGluZXNlIGJlY2F1c2Ugd2Ugc3VwcG9ydCBib3RoIFRXIGFuZCBDTiBsb2NhbGVzXG4gICAgICAgIC8vIEFsc28gaWYgdGhlIGxvY2FsZSBpcyBwdF9QVChQb3J0dWd1ZXNlIFBvcnR1Z2FsKSB3ZSBzaG91bGQgZGVmYXVsdCB0byBFTlxuICAgICAgICAvLyBvdGhlcndpc2UgdGhlIDIgY2hhcmFjdGVyIGxhbmd1YWdlIElEIGlzIHdoYXQgd2Ugd2FudFxuICAgICAgICBjb25zdCBtYWluTG9jYWxlID0gbGFuZ3VhZ2Uuc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgICBjb25zdCBpc0NoaW5lc2UgPSBsYW5ndWFnZS5sZW5ndGggPiAyICYmIG1haW5Mb2NhbGUgPT09ICd6aCc7XG4gICAgICAgIGNvbnN0IGlzTm90U3VwcG9ydGVkUG9ydHVndWVzZSA9IGxhbmd1YWdlLmxlbmd0aCA+IDIgJiYgbWFpbkxvY2FsZSA9PT0gJ3B0JyAmJiBsYW5ndWFnZSAhPT0gJ3B0X0JSJztcblxuICAgICAgICBpZiAoaXNDaGluZXNlIHx8IGlzTm90U3VwcG9ydGVkUG9ydHVndWVzZSkge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZSA9IG1haW5Mb2NhbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRMYW5ndWFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgdHJhbnNsYXRlKGtleTogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICBsZXQgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGlvbnNbdGhpcy5sYW5ndWFnZV07XG5cbiAgICAgICAgLy9pZiB0aGVyZSBhcmUgbm8gdHJhbnNsYXRpb25zIG9mIHRoZSB1c2VyJ3MgbGFuZ3VhZ2Ugc2V0IHRyYW5zbGF0aW9ucyB0byBlcXVhbCB0aGUgZGVmYXVsdCBsYW5ndWFnZVxuICAgICAgICBpZiAoIXRyYW5zbGF0aW9ucykge1xuICAgICAgICAgICAgdHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGlvbnNbREVGQVVMVF9MQU5HVUFHRV0gPyB0aGlzLnRyYW5zbGF0aW9uc1tERUZBVUxUX0xBTkdVQUdFXSA6IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHRyYW5zbGF0aW9uIGdldCB0aGF0IHRyYW5zbGF0aW9uIG90aGVyd2lzZSB1c2UgdGhlIGRlZmF1bHQgbGFuZ3VhZ2VcbiAgICAgICAgbGV0IHRyYW5zbGF0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodHJhbnNsYXRpb25zW2tleV0pIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uID0gdHJhbnNsYXRpb25zW2tleV07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50cmFuc2xhdGlvbnNbREVGQVVMVF9MQU5HVUFHRV0pIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uID0gdGhpcy50cmFuc2xhdGlvbnNbREVGQVVMVF9MQU5HVUFHRV1ba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vaWYgbm8gdHJhbnNsYXRpb24gaXMgZm91bmQgaW4gdGhlIHVzZXIncyBsYW5ndWFnZSBvciBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZSB0aGVuIHNob3cgYW4gZXJyb3Igc3RyaW5nXG4gICAgICAgIGlmICghdHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uID0gYCEhIEtleSAke2tleX0gbm90IGZvdW5kICEhYDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdCh0cmFuc2xhdGlvbiwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXQoZm9ybWF0OiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgveyhcXGQrKX0vZywgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9ICd1bmRlZmluZWQnID8gYXJnc1tudW1iZXJdIDogbWF0Y2g7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==