UNPKG

angular-l10n

Version:

Angular library to translate texts, dates and numbers

52 lines 7.14 kB
import { Injectable, Inject } from '@angular/core'; import { L10N_CONFIG } from '../models/l10n-config'; import * as i0 from "@angular/core"; import * as i1 from "./l10n-cache"; import * as i2 from "./l10n-translation-loader"; /** * Implement this class-interface to create a translation fallback. */ export class L10nTranslationFallback { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: L10nTranslationFallback, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: L10nTranslationFallback }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: L10nTranslationFallback, decorators: [{ type: Injectable }] }); export class L10nDefaultTranslationFallback { constructor(config, cache, translationLoader) { this.config = config; this.cache = cache; this.translationLoader = translationLoader; } /** * Translation data will be merged in the following order: * 'language' * 'language[-script]' * 'language[-script][-region]' */ get(language, provider) { const loaders = []; const keywords = language.match(/-?[a-zA-z]+/g) || []; let fallbackLanguage = ''; for (const keyword of keywords) { fallbackLanguage += keyword; if (this.config.cache) { loaders.push(this.cache.read(`${provider.name}-${fallbackLanguage}`, this.translationLoader.get(fallbackLanguage, provider))); } else { loaders.push(this.translationLoader.get(fallbackLanguage, provider)); } } return loaders; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: L10nDefaultTranslationFallback, deps: [{ token: L10N_CONFIG }, { token: i1.L10nCache }, { token: i2.L10nTranslationLoader }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: L10nDefaultTranslationFallback }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: L10nDefaultTranslationFallback, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: [L10N_CONFIG] }] }, { type: i1.L10nCache }, { type: i2.L10nTranslationLoader }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDEwbi10cmFuc2xhdGlvbi1mYWxsYmFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItbDEwbi9zcmMvbGliL3NlcnZpY2VzL2wxMG4tdHJhbnNsYXRpb24tZmFsbGJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJbkQsT0FBTyxFQUFFLFdBQVcsRUFBYyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBSWhFOztHQUVHO0FBQ1csTUFBTSxPQUFnQix1QkFBdUI7OEdBQXZCLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQUExRCxVQUFVOztBQVlHLE1BQU0sT0FBTyw4QkFBOEI7SUFFckQsWUFDaUMsTUFBa0IsRUFDdkMsS0FBZ0IsRUFDaEIsaUJBQXdDO1FBRm5CLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQXVCO0lBQ2hELENBQUM7SUFFTDs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBQyxRQUFnQixFQUFFLFFBQXNCO1FBQy9DLE1BQU0sT0FBTyxHQUFzQixFQUFFLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEQsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDNUIsZ0JBQWdCLElBQUksT0FBTyxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxJQUFJLGdCQUFnQixFQUFFLEVBQ2xELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FDOUQsQ0FBQzthQUNMO2lCQUFNO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO2FBQ3hFO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDOzhHQTlCc0IsOEJBQThCLGtCQUd6QyxXQUFXO2tIQUhBLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFBeEQsVUFBVTs7MEJBR0YsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEwxMG5Qcm92aWRlciB9IGZyb20gJy4uL21vZGVscy90eXBlcyc7XHJcbmltcG9ydCB7IEwxME5fQ09ORklHLCBMMTBuQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2wxMG4tY29uZmlnJztcclxuaW1wb3J0IHsgTDEwbkNhY2hlIH0gZnJvbSAnLi9sMTBuLWNhY2hlJztcclxuaW1wb3J0IHsgTDEwblRyYW5zbGF0aW9uTG9hZGVyIH0gZnJvbSAnLi9sMTBuLXRyYW5zbGF0aW9uLWxvYWRlcic7XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50IHRoaXMgY2xhc3MtaW50ZXJmYWNlIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIGZhbGxiYWNrLlxyXG4gKi9cclxuQEluamVjdGFibGUoKSBleHBvcnQgYWJzdHJhY3QgY2xhc3MgTDEwblRyYW5zbGF0aW9uRmFsbGJhY2sge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgbXVzdCBjb250YWluIHRoZSBsb2dpYyB0byBnZXQgdGhlIG9yZGVyZWQgbG9hZGVycy5cclxuICAgICAqIEBwYXJhbSBsYW5ndWFnZSBUaGUgY3VycmVudCBsYW5ndWFnZVxyXG4gICAgICogQHBhcmFtIHByb3ZpZGVyIFRoZSBwcm92aWRlciBvZiB0aGUgdHJhbnNsYXRpb25zIGRhdGFcclxuICAgICAqIEByZXR1cm4gQW4gYXJyYXkgb2YgbG9hZGVyc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0KGxhbmd1YWdlOiBzdHJpbmcsIHByb3ZpZGVyOiBMMTBuUHJvdmlkZXIpOiBPYnNlcnZhYmxlPGFueT5bXTtcclxuXHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKCkgZXhwb3J0IGNsYXNzIEwxMG5EZWZhdWx0VHJhbnNsYXRpb25GYWxsYmFjayBpbXBsZW1lbnRzIEwxMG5UcmFuc2xhdGlvbkZhbGxiYWNrIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KEwxME5fQ09ORklHKSBwcml2YXRlIGNvbmZpZzogTDEwbkNvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGNhY2hlOiBMMTBuQ2FjaGUsXHJcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGlvbkxvYWRlcjogTDEwblRyYW5zbGF0aW9uTG9hZGVyXHJcbiAgICApIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhbnNsYXRpb24gZGF0YSB3aWxsIGJlIG1lcmdlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxyXG4gICAgICogJ2xhbmd1YWdlJ1xyXG4gICAgICogJ2xhbmd1YWdlWy1zY3JpcHRdJ1xyXG4gICAgICogJ2xhbmd1YWdlWy1zY3JpcHRdWy1yZWdpb25dJ1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0KGxhbmd1YWdlOiBzdHJpbmcsIHByb3ZpZGVyOiBMMTBuUHJvdmlkZXIpOiBPYnNlcnZhYmxlPGFueT5bXSB7XHJcbiAgICAgICAgY29uc3QgbG9hZGVyczogT2JzZXJ2YWJsZTxhbnk+W10gPSBbXTtcclxuICAgICAgICBjb25zdCBrZXl3b3JkcyA9IGxhbmd1YWdlLm1hdGNoKC8tP1thLXpBLXpdKy9nKSB8fCBbXTtcclxuICAgICAgICBsZXQgZmFsbGJhY2tMYW5ndWFnZSA9ICcnO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5d29yZCBvZiBrZXl3b3Jkcykge1xyXG4gICAgICAgICAgICBmYWxsYmFja0xhbmd1YWdlICs9IGtleXdvcmQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5jYWNoZSkge1xyXG4gICAgICAgICAgICAgICAgbG9hZGVycy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGUucmVhZChgJHtwcm92aWRlci5uYW1lfS0ke2ZhbGxiYWNrTGFuZ3VhZ2V9YCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbkxvYWRlci5nZXQoZmFsbGJhY2tMYW5ndWFnZSwgcHJvdmlkZXIpKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvYWRlcnMucHVzaCh0aGlzLnRyYW5zbGF0aW9uTG9hZGVyLmdldChmYWxsYmFja0xhbmd1YWdlLCBwcm92aWRlcikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsb2FkZXJzO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=