UNPKG

@rangertechnologies/ngnxt

Version:

This library was used for creating dymanic UI based on the input JSON/data

61 lines 7.94 kB
import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "./data.service"; export class TranslationService { dataService; translations; currentLang = 'en'; // Default language translationsLoaded = new BehaviorSubject(null); // Signal when translations are loaded translationsLoaded$ = this.translationsLoaded.asObservable(); // Observable for components to subscribe to constructor(dataService) { this.dataService = dataService; } // Load translations from localStorage load() { return new Promise((resolve) => { const stored = localStorage.getItem('translations'); // Assuming 'translations' is your key if (stored) { this.translations = JSON.parse(stored); } this.translationsLoaded.next(); // Notify that loading is complete resolve(); }); } // Set translations and notify subscribers setTranslations(translations) { this.translations = translations; localStorage.setItem('translations', JSON.stringify(translations)); this.translationsLoaded.next(); // Notify subscribers } // Get current language getLanguage() { return this.currentLang; } // Set language (if applicable) setLanguage(lang) { this.currentLang = lang; this.load(); this.translationsLoaded.next(); // Optional: notify on language change } translate(key) { const langTranslations = this.translations?.[this.currentLang]; if (langTranslations && this.dataService.getValue(langTranslations, key)) { return this.dataService.getValue(langTranslations, key); } const fallback = this.translations?.['en']; if (fallback && this.dataService.getValue(fallback, key)) { return this.dataService.getValue(fallback, key); } return null; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationService, deps: [{ token: i1.DataService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TranslationService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.DataService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTXZDLE1BQU0sT0FBTyxrQkFBa0I7SUFLVDtJQUpaLFlBQVksQ0FBTTtJQUNsQixXQUFXLEdBQVcsSUFBSSxDQUFDLENBQUMsbUJBQW1CO0lBQy9DLGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsc0NBQXNDO0lBQzdGLG1CQUFtQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLDRDQUE0QztJQUNqSCxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUFHLENBQUM7SUFFaEQsc0NBQXNDO0lBQ3RDLElBQUk7UUFDRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztZQUMzRixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsa0NBQWtDO1lBQ2xFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLGVBQWUsQ0FBQyxZQUFpQjtRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMscUJBQXFCO0lBQ3ZELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsK0JBQStCO0lBQy9CLFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHNDQUFzQztJQUN4RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7UUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ELElBQUksZ0JBQWdCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt3R0FoRFUsa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgdHJhbnNsYXRpb25zOiBhbnk7XG4gIHByaXZhdGUgY3VycmVudExhbmc6IHN0cmluZyA9ICdlbic7IC8vIERlZmF1bHQgbGFuZ3VhZ2VcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvbnNMb2FkZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KG51bGwpOyAvLyBTaWduYWwgd2hlbiB0cmFuc2xhdGlvbnMgYXJlIGxvYWRlZFxuICBwdWJsaWMgdHJhbnNsYXRpb25zTG9hZGVkJCA9IHRoaXMudHJhbnNsYXRpb25zTG9hZGVkLmFzT2JzZXJ2YWJsZSgpOyAvLyBPYnNlcnZhYmxlIGZvciBjb21wb25lbnRzIHRvIHN1YnNjcmliZSB0b1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge31cblxuICAvLyBMb2FkIHRyYW5zbGF0aW9ucyBmcm9tIGxvY2FsU3RvcmFnZVxuICBsb2FkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RyYW5zbGF0aW9ucycpOyAvLyBBc3N1bWluZyAndHJhbnNsYXRpb25zJyBpcyB5b3VyIGtleVxuICAgICAgaWYgKHN0b3JlZCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IEpTT04ucGFyc2Uoc3RvcmVkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudHJhbnNsYXRpb25zTG9hZGVkLm5leHQoKTsgLy8gTm90aWZ5IHRoYXQgbG9hZGluZyBpcyBjb21wbGV0ZVxuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU2V0IHRyYW5zbGF0aW9ucyBhbmQgbm90aWZ5IHN1YnNjcmliZXJzXG4gIHNldFRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRpb25zID0gdHJhbnNsYXRpb25zO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0cmFuc2xhdGlvbnMnLCBKU09OLnN0cmluZ2lmeSh0cmFuc2xhdGlvbnMpKTtcbiAgICB0aGlzLnRyYW5zbGF0aW9uc0xvYWRlZC5uZXh0KCk7IC8vIE5vdGlmeSBzdWJzY3JpYmVyc1xuICB9XG5cbiAgLy8gR2V0IGN1cnJlbnQgbGFuZ3VhZ2VcbiAgZ2V0TGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TGFuZztcbiAgfVxuXG4gIC8vIFNldCBsYW5ndWFnZSAoaWYgYXBwbGljYWJsZSlcbiAgc2V0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IGxhbmc7XG4gICAgdGhpcy5sb2FkKClcbiAgICB0aGlzLnRyYW5zbGF0aW9uc0xvYWRlZC5uZXh0KCk7IC8vIE9wdGlvbmFsOiBub3RpZnkgb24gbGFuZ3VhZ2UgY2hhbmdlXG4gIH1cblxuICB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBsYW5nVHJhbnNsYXRpb25zID0gdGhpcy50cmFuc2xhdGlvbnM/Llt0aGlzLmN1cnJlbnRMYW5nXTtcbiAgICBpZiAobGFuZ1RyYW5zbGF0aW9ucyAmJiB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGxhbmdUcmFuc2xhdGlvbnMsIGtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGxhbmdUcmFuc2xhdGlvbnMsIGtleSk7XG4gICAgfVxuICAgIGNvbnN0IGZhbGxiYWNrID0gdGhpcy50cmFuc2xhdGlvbnM/LlsnZW4nXTtcbiAgICBpZiAoZmFsbGJhY2sgJiYgdGhpcy5kYXRhU2VydmljZS5nZXRWYWx1ZShmYWxsYmFjaywga2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoZmFsbGJhY2ssIGtleSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59Il19