UNPKG

systelab-translate

Version:

The internationalization (i18n) library for Systelab

130 lines 17.2 kB
import { of as observableOf } from 'rxjs'; import { Injectable } from '@angular/core'; import { DecimalFormat } from './decimal-format/decimal-format'; import { DateUtil } from './date-util/date-util'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-translate/core"; export class I18nService { constructor(translateService) { this.translateService = translateService; this.staticBundles = {}; this.translateService.setDefaultLang('en-US'); this.dateUtil = new DateUtil('en-US'); } use(locale) { this.locale = locale; this.dateUtil.setLocale(locale); return this.translateService.use(locale); } getLocale() { return this.locale; } getCurrentLanguage() { return this.translateService.currentLang; } getBrowserLang() { return this.translateService.getBrowserLang(); } reloadLanguage(lang) { return this.translateService.reloadLang(lang); } setTranslation(locale, translations) { this.translateService.setTranslation(locale, translations, false); } appendTranslation(locale, translations) { this.translateService.setTranslation(locale, translations, true); } get(bundle) { if (typeof bundle === 'string' && this.staticBundles[bundle]) { return observableOf(this.staticBundles[bundle]); } return this.translateService.get(bundle); } instant(key, interpolateParams) { if (typeof key === 'string' && this.staticBundles[key]) { let bundleValue = ''; if (typeof interpolateParams === 'object') { Object.keys(interpolateParams) .forEach((paramKey) => { bundleValue = this.staticBundles[key].replace('{{' + paramKey + '}}', interpolateParams[paramKey]); }); return bundleValue; } else if (this.staticBundles[key].indexOf('{') > -1 && !interpolateParams) { const regEx = /{{([^]*)}}/g; return this.staticBundles[key].replace(regEx, ''); } return this.staticBundles[key]; } return this.translateService.instant(key, interpolateParams); } setStaticBundles(staticBundles) { if (staticBundles) { this.staticBundles = staticBundles; } } getDateFormat(isFullYear = false) { return this.dateUtil.getDateFormat(isFullYear); } getDateFormatForDatePicker(isFullYear = false) { return this.dateUtil.getDateFormatForDatePicker(isFullYear); } getTimeFormat(withSeconds = false) { return this.dateUtil.getTimeFormat(withSeconds); } formatDate(date) { return this.dateUtil.formatDate(date); } formatDateFullYear(date) { return this.dateUtil.formatDateFullYear(date); } formatTime(date, withSeconds) { return this.dateUtil.formatTime(date, withSeconds); } formatDateTime(date, fullYear, withSeconds) { return this.dateUtil.formatDateTime(date, fullYear, withSeconds); } formatMonthAndYear(date) { return this.dateUtil.formatMonthAndYear(date); } formatDateAndShortMonth(date) { return this.dateUtil.formatDateAndShortMonth(date); } getDateFrom(date) { return this.dateUtil.getDateFrom(date); } getDateTo(date) { return this.dateUtil.getDateTo(date); } getDateMidDay(date) { return this.dateUtil.getDateMidDay(date); } getFirstDayOfWeek() { return this.dateUtil.getFirstDayOfWeek(); } parseDate(currentDateValue, locale) { return this.dateUtil.parseDate(currentDateValue, locale); } formatNumber(numberToFormat, decimalFormat, applyLocale) { const df = new DecimalFormat(decimalFormat); const sNumber = df.format(numberToFormat, decimalFormat); if (applyLocale) { let minimumFractionDigits = 0; if (sNumber.split('.')[1]) { minimumFractionDigits = sNumber.split('.')[1].length; } return Number(sNumber) .toLocaleString(this.locale, { minimumFractionDigits }); } return sNumber; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: I18nService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: I18nService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: I18nService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.TranslateService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3lzdGVsYWItdHJhbnNsYXRlL3NyYy9saWIvaTE4bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBS2pELE1BQU0sT0FBTyxXQUFXO0lBTXZCLFlBQXNCLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBSDlDLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBSWpDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sR0FBRyxDQUFDLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxTQUFTO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxrQkFBa0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFTSxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxD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QUMxQyxDQUFDO0lBRU0sU0FBUyxDQUFDLGdCQUF3QixFQUFFLE1BQWU7UUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sWUFBWSxDQUFDLGNBQXNCLEVBQUUsYUFBcUIsRUFBRSxXQUFxQjtRQUN2RixNQUFNLEVBQUUsR0FBUSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxNQUFNLE9BQU8sR0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNqRSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLElBQUkscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQixxQkFBcUIsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN0RCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO2lCQUNwQixjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDaEIsQ0FBQzs4R0E1SVcsV0FBVztrSEFBWCxXQUFXLGNBRlgsTUFBTTs7MkZBRU4sV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7b2YgYXMgb2JzZXJ2YWJsZU9mLCAgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBEZWNpbWFsRm9ybWF0IH0gZnJvbSAnLi9kZWNpbWFsLWZvcm1hdC9kZWNpbWFsLWZvcm1hdCdcbmltcG9ydCB7IERhdGVVdGlsIH0gZnJvbSAnLi9kYXRlLXV0aWwvZGF0ZS11dGlsJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSTE4blNlcnZpY2Uge1xuXG5cdHByb3RlY3RlZCBsb2NhbGU6IHN0cmluZztcblx0cHJvdGVjdGVkIHN0YXRpY0J1bmRsZXM6IGFueSA9IHt9O1xuXHRwcm90ZWN0ZWQgZGF0ZVV0aWw6IERhdGVVdGlsO1xuXG5cdGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG5cdFx0dGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKCdlbi1VUycpO1xuXHRcdHRoaXMuZGF0ZVV0aWwgPSBuZXcgRGF0ZVV0aWwoJ2VuLVVTJyk7XG5cdH1cblxuXHRwdWJsaWMgdXNlKGxvY2FsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHR0aGlzLmxvY2FsZSA9IGxvY2FsZTtcblx0XHR0aGlzLmRhdGVVdGlsLnNldExvY2FsZShsb2NhbGUpO1xuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxvY2FsZSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TG9jYWxlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubG9jYWxlO1xuXHR9XG5cblx0cHVibGljIGdldEN1cnJlbnRMYW5ndWFnZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QnJvd3NlckxhbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldEJyb3dzZXJMYW5nKCk7XG5cdH1cblxuXHRwdWJsaWMgcmVsb2FkTGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnJlbG9hZExhbmcobGFuZyk7XG5cdH1cblxuXHRwdWJsaWMgc2V0VHJhbnNsYXRpb24obG9jYWxlOiBzdHJpbmcsIHRyYW5zbGF0aW9uczogT2JqZWN0KTogdm9pZCB7XG5cdFx0dGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKGxvY2FsZSwgdHJhbnNsYXRpb25zLCBmYWxzZSk7XG5cdH1cblxuXHRwdWJsaWMgYXBwZW5kVHJhbnNsYXRpb24obG9jYWxlOiBzdHJpbmcsIHRyYW5zbGF0aW9uczogT2JqZWN0KTogdm9pZCB7XG5cdFx0dGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldFRyYW5zbGF0aW9uKGxvY2FsZSwgdHJhbnNsYXRpb25zLCB0cnVlKTtcblx0fVxuXG5cdHB1YmxpYyBnZXQoYnVuZGxlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XG5cdFx0aWYgKHR5cGVvZiBidW5kbGUgPT09ICdzdHJpbmcnICYmIHRoaXMuc3RhdGljQnVuZGxlc1tidW5kbGVdKSB7XG5cdFx0XHRyZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuc3RhdGljQnVuZGxlc1tidW5kbGVdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoYnVuZGxlKTtcblx0fVxuXG5cdHB1YmxpYyBpbnN0YW50KGtleTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiwgaW50ZXJwb2xhdGVQYXJhbXM/OiBhbnkpOiBzdHJpbmcgfCBhbnkge1xuXHRcdGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiB0aGlzLnN0YXRpY0J1bmRsZXNba2V5XSkge1xuXHRcdFx0bGV0IGJ1bmRsZVZhbHVlID0gJyc7XG5cdFx0XHRpZiAodHlwZW9mIGludGVycG9sYXRlUGFyYW1zID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRPYmplY3Qua2V5cyhpbnRlcnBvbGF0ZVBhcmFtcylcblx0XHRcdFx0XHQuZm9yRWFjaCgocGFyYW1LZXk6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0YnVuZGxlVmFsdWUgPSB0aGlzLnN0YXRpY0J1bmRsZXNba2V5XS5yZXBsYWNlKCd7eycgKyBwYXJhbUtleSArICd9fScsIGludGVycG9sYXRlUGFyYW1zW3BhcmFtS2V5XSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybiBidW5kbGVWYWx1ZTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5zdGF0aWNCdW5kbGVzW2tleV0uaW5kZXhPZigneycpID4gLTEgJiYgIWludGVycG9sYXRlUGFyYW1zKSB7XG5cdFx0XHRcdGNvbnN0IHJlZ0V4ID0gL3t7KFteXSopfX0vZztcblx0XHRcdFx0cmV0dXJuIHRoaXMuc3RhdGljQnVuZGxlc1trZXldLnJlcGxhY2UocmVnRXgsICcnKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnN0YXRpY0J1bmRsZXNba2V5XTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGtleSwgaW50ZXJwb2xhdGVQYXJhbXMpO1xuXHR9XG5cblx0cHVibGljIHNldFN0YXRpY0J1bmRsZXMoc3RhdGljQnVuZGxlczogYW55KTogdm9pZCB7XG5cdFx0aWYgKHN0YXRpY0J1bmRsZXMpIHtcblx0XHRcdHRoaXMuc3RhdGljQnVuZGxlcyA9IHN0YXRpY0J1bmRsZXM7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGdldERhdGVGb3JtYXQoaXNGdWxsWWVhciA9IGZhbHNlKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRlVXRpbC5nZXREYXRlRm9ybWF0KGlzRnVsbFllYXIpO1xuXHR9XG5cblx0cHVibGljIGdldERhdGVGb3JtYXRGb3JEYXRlUGlja2VyKGlzRnVsbFllYXIgPSBmYWxzZSk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVV0aWwuZ2V0RGF0ZUZvcm1hdEZvckRhdGVQaWNrZXIoaXNGdWxsWWVhcik7XG5cdH1cblxuXHRwdWJsaWMgZ2V0VGltZUZvcm1hdCh3aXRoU2Vjb25kcyA9IGZhbHNlKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRlVXRpbC5nZXRUaW1lRm9ybWF0KHdpdGhTZWNvbmRzKTtcblx0fVxuXG5cdHB1YmxpYyBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmRhdGVVdGlsLmZvcm1hdERhdGUoZGF0ZSk7XG5cdH1cblxuXHRwdWJsaWMgZm9ybWF0RGF0ZUZ1bGxZZWFyKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmRhdGVVdGlsLmZvcm1hdERhdGVGdWxsWWVhcihkYXRlKTtcblx0fVxuXG5cdHB1YmxpYyBmb3JtYXRUaW1lKGRhdGU6IERhdGUsIHdpdGhTZWNvbmRzPzogYm9vbGVhbik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVV0aWwuZm9ybWF0VGltZShkYXRlLCB3aXRoU2Vjb25kcyk7XG5cdH1cblxuXHRwdWJsaWMgZm9ybWF0RGF0ZVRpbWUoZGF0ZTogRGF0ZSwgZnVsbFllYXI/OiBib29sZWFuLCB3aXRoU2Vjb25kcz86IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmRhdGVVdGlsLmZvcm1hdERhdGVUaW1lKGRhdGUsIGZ1bGxZZWFyLCB3aXRoU2Vjb25kcyk7XG5cdH1cblxuXHRwdWJsaWMgZm9ybWF0TW9udGhBbmRZZWFyKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLmRhdGVVdGlsLmZvcm1hdE1vbnRoQW5kWWVhcihkYXRlKTtcblx0fVxuXG5cdHB1YmxpYyBmb3JtYXREYXRlQW5kU2hvcnRNb250aChkYXRlOiBEYXRlKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRlVXRpbC5mb3JtYXREYXRlQW5kU2hvcnRNb250aChkYXRlKTtcblx0fVxuXG5cdHB1YmxpYyBnZXREYXRlRnJvbShkYXRlOiBEYXRlKTogRGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVV0aWwuZ2V0RGF0ZUZyb20oZGF0ZSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGF0ZVRvKGRhdGU6IERhdGUpOiBEYXRlIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRlVXRpbC5nZXREYXRlVG8oZGF0ZSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGF0ZU1pZERheShkYXRlOiBEYXRlKTogRGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVV0aWwuZ2V0RGF0ZU1pZERheShkYXRlKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLmRhdGVVdGlsLmdldEZpcnN0RGF5T2ZXZWVrKCk7XG5cdH1cblxuXHRwdWJsaWMgcGFyc2VEYXRlKGN1cnJlbnREYXRlVmFsdWU6IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogRGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0ZVV0aWwucGFyc2VEYXRlKGN1cnJlbnREYXRlVmFsdWUsIGxvY2FsZSk7XG5cdH1cblxuXHRwdWJsaWMgZm9ybWF0TnVtYmVyKG51bWJlclRvRm9ybWF0OiBudW1iZXIsIGRlY2ltYWxGb3JtYXQ6IHN0cmluZywgYXBwbHlMb2NhbGU/OiBib29sZWFuKTogc3RyaW5nIHtcblx0XHRjb25zdCBkZjogYW55ID0gbmV3IERlY2ltYWxGb3JtYXQoZGVjaW1hbEZvcm1hdCk7XG5cdFx0Y29uc3Qgc051bWJlcjogc3RyaW5nID0gZGYuZm9ybWF0KG51bWJlclRvRm9ybWF0LCBkZWNpbWFsRm9ybWF0KTtcblx0XHRpZiAoYXBwbHlMb2NhbGUpIHtcblx0XHRcdGxldCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSAwO1xuXHRcdFx0aWYgKHNOdW1iZXIuc3BsaXQoJy4nKVsxXSkge1xuXHRcdFx0XHRtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBzTnVtYmVyLnNwbGl0KCcuJylbMV0ubGVuZ3RoO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE51bWJlcihzTnVtYmVyKVxuXHRcdFx0XHQudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzIH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gc051bWJlcjtcblx0fVxufVxuIl19