angular-l10n
Version:
Angular library to translate texts, dates and numbers
52 lines • 7.14 kB
JavaScript
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=