UNPKG

systelab-translate

Version:

The internationalization (i18n) library for Systelab

1 lines 53.2 kB
{"version":3,"file":"systelab-translate.mjs","sources":["../../../projects/systelab-translate/src/lib/decimal-format/decimal-format.ts","../../../projects/systelab-translate/src/lib/date-util/date-util.ts","../../../projects/systelab-translate/src/lib/i18n.service.ts","../../../projects/systelab-translate/src/lib/number-format.pipe.ts","../../../projects/systelab-translate/src/lib/translate.pipe.ts","../../../projects/systelab-translate/src/lib/localizable-translate-static-loader.ts","../../../projects/systelab-translate/src/lib/systelab-translate.module.ts","../../../projects/systelab-translate/src/public-api.ts","../../../projects/systelab-translate/src/systelab-translate.ts"],"sourcesContent":["// Code derived from: https://gist.github.com/oskansavli/822382\n\nexport class DecimalFormat {\n\n\tpublic prefix = '';\n\tpublic suffix = '';\n\tpublic comma = 0;\n\tpublic minInt = 1;\n\tpublic minFrac = 0;\n\tpublic maxFrac = 0;\n\n\tconstructor(formatStr: string) {\n\n\t\t// get prefix\n\t\tfor (var i = 0; i < formatStr.length; i++) {\n\t\t\tif (formatStr.charAt(i) == '#' || formatStr.charAt(i) == '0') {\n\t\t\t\tthis.prefix = formatStr.substring(0, i);\n\t\t\t\tformatStr = formatStr.substring(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// get suffix\n\t\tthis.suffix = formatStr.replace(/[#]|[0]|[,]|[.]/g, '');\n\t\tvar numberStr = formatStr.replace(/[^0#,.]/g, '');\n\n\t\tvar intStr = '';\n\t\tvar fracStr = '';\n\t\tvar point = numberStr.indexOf('.');\n\t\tif (point != -1) {\n\t\t\tintStr = numberStr.substring(0, point);\n\t\t\tfracStr = numberStr.substring(point + 1);\n\t\t} else {\n\t\t\tintStr = numberStr;\n\t\t}\n\n\t\tvar commaPos = intStr.lastIndexOf(',');\n\t\tif (commaPos != -1) {\n\t\t\tthis.comma = intStr.length - 1 - commaPos;\n\t\t}\n\n\t\tintStr = intStr.replace(/[,]/g, ''); // remove commas\n\n\t\tfracStr = fracStr.replace(/[,]|[.]+/g, '');\n\n\t\tthis.maxFrac = fracStr.length;\n\t\tvar tmp = intStr.replace(/[^0]/g, ''); // remove all except zero\n\t\tif (tmp.length > this.minInt) {\n\t\t\tthis.minInt = tmp.length;\n\t\t}\n\t\ttmp = fracStr.replace(/[^0]/g, '');\n\t\tthis.minFrac = tmp.length;\n\t}\n\n\tpublic format(numStr: string) { // 1223.06 --> $1,223.06\n\t\t// remove prefix, suffix and commas\n\t\tvar numberStr = this.formatBack(numStr)\n\t\t\t.toLowerCase();\n\n\t\t// do not format if not a number\n\t\tif (isNaN(numberStr) || numberStr.length == 0) {\n\t\t\treturn numStr;\n\t\t}\n\n\t\t//scientific numbers\n\t\tvar positione = numberStr.indexOf(\"e\");\n\t\tif (positione != -1) {\n\t\t\tvar n = Number(numberStr);\n\t\t\t// if (n == \"Infinity\" || n == \"-Infinity\") {\n\t\t\t//\treturn numberStr;\n\t\t\t// }\n\t\t\tnumberStr = n + \"\";\n\t\t\tif (numberStr.indexOf('e') != -1) {\n\t\t\t\treturn numberStr;\n\t\t\t}\n\t\t}\n\n\t\tvar negative = false;\n\t\t// remove sign\n\t\tif (numberStr.charAt(0) == '-') {\n\t\t\tnegative = true;\n\t\t\tnumberStr = numberStr.substring(1);\n\t\t} else if (numberStr.charAt(0) == '+') {\n\t\t\tnumberStr = numberStr.substring(1);\n\t\t}\n\n\t\tvar point = numberStr.indexOf('.'); // position of point character\n\t\tvar intStr = '';\n\t\tvar fracStr = '';\n\t\tif (point != -1) {\n\t\t\tintStr = numberStr.substring(0, point);\n\t\t\tfracStr = numberStr.substring(point + 1);\n\t\t} else {\n\t\t\tintStr = numberStr;\n\t\t}\n\t\tfracStr = fracStr.replace(/[.]/, ''); // remove other point characters\n\n\t\tvar isPercentage = this.suffix && this.suffix.charAt(0) === '%';\n\t\t// if percentage, number will be multiplied by 100.\n\t\tvar minInt = this.minInt, minFrac = this.minFrac, maxFrac = this.maxFrac;\n\t\tif (isPercentage) {\n\t\t\tminInt -= 2;\n\t\t\tminFrac += 2;\n\t\t\tmaxFrac += 2;\n\t\t}\n\n\t\tif (fracStr.length > maxFrac) { // round\n\t\t\t//case 6143\n\t\t\tvar num2 = new Number('0.' + fracStr);\n\t\t\tvar num = (maxFrac == 0) ? Math.round(num2.valueOf()) : num2.toFixed(maxFrac);\n\t\t\t// toFixed method has bugs on IE (0.7 --> 0)\n\t\t\tfracStr = num.toString(10)\n\t\t\t\t.substr(2);\n\t\t\tvar c = (Number(num) >= 1) ? 1 : 0; //carry\n\t\t\tvar x, i = intStr.length - 1;\n\t\t\twhile (c) { //increment intStr\n\t\t\t\tif (i == -1) {\n\t\t\t\t\tintStr = '1' + intStr;\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\tx = intStr.charAt(i);\n\t\t\t\t\tif (x == 9) {\n\t\t\t\t\t\tx = '0';\n\t\t\t\t\t\tc = 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tx = (++x) + '';\n\t\t\t\t\t\tc = 0;\n\t\t\t\t\t}\n\t\t\t\t\tintStr = intStr.substring(0, i) + x + intStr.substring(i + 1, intStr.length);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (var i = fracStr.length; i < minFrac; i++) { // if minFrac=4 then 1.12 --> 1.1200\n\t\t\tfracStr = fracStr + '0';\n\t\t}\n\t\twhile (fracStr.length > minFrac && fracStr.charAt(fracStr.length - 1) == '0') { // if minInt=4 then 00034 --> 0034)\n\t\t\tfracStr = fracStr.substring(0, fracStr.length - 1);\n\t\t}\n\n\t\tfor (var i = intStr.length; i < minInt; i++) { // if minInt=4 then 034 --> 0034\n\t\t\tintStr = '0' + intStr;\n\t\t}\n\t\twhile (intStr.length > minInt && intStr.charAt(0) == '0') { // if minInt=4 then 00034 --> 0034)\n\t\t\tintStr = intStr.substring(1);\n\t\t}\n\n\t\tif (isPercentage) { // multiply by 100\n\t\t\tintStr += fracStr.substring(0, 2);\n\t\t\tfracStr = fracStr.substring(2);\n\t\t}\n\n\t\tvar j = 0;\n\t\tfor (var i = intStr.length; i > 0; i--) { // add commas\n\t\t\tif (j != 0 && j % this.comma == 0) {\n\t\t\t\tintStr = intStr.substring(0, i) + ',' + intStr.substring(i);\n\t\t\t\tj = 0;\n\t\t\t}\n\t\t\tj++;\n\t\t}\n\n\t\tvar formattedValue;\n\t\tif (fracStr.length > 0) {\n\t\t\tformattedValue = this.prefix + intStr + '.' + fracStr + this.suffix;\n\t\t} else {\n\t\t\tformattedValue = this.prefix + intStr + this.suffix;\n\t\t}\n\n\t\tif (negative) {\n\t\t\tformattedValue = '-' + formattedValue;\n\t\t}\n\n\t\treturn formattedValue;\n\t}\n\n\t/**\n\t * @description Converts formatted value back to non-formatted value\n\t * @methodOf DecimalFormat\n\t * @param {String} fNumberStr Formatted number\n\t * @return {String} Original number\n\t * @author Oskan Savli\n\t */\n\tprivate formatBack(fNumStr) { // $1,223.06 --> 1223.06\n\t\tfNumStr += ''; //ensure it is string\n\t\tif (!fNumStr) {\n\t\t\treturn '';\n\t\t} //do not return undefined or null\n\t\tif (!isNaN(fNumStr)) {\n\t\t\treturn this.getNumericString(fNumStr);\n\t\t}\n\t\tvar fNumberStr = fNumStr;\n\t\tvar negative = false;\n\t\tif (fNumStr.charAt(0) == '-') {\n\t\t\tfNumberStr = fNumberStr.substr(1);\n\t\t\tnegative = true;\n\t\t}\n\t\tvar pIndex = fNumberStr.indexOf(this.prefix);\n\t\tvar sIndex = (this.suffix == '') ? fNumberStr.length : fNumberStr.indexOf(this.suffix, this.prefix.length + 1);\n\t\tif (pIndex == 0 && sIndex > 0) {\n\t\t\t// remove suffix\n\t\t\tfNumberStr = fNumberStr.substr(0, sIndex);\n\t\t\t// remove prefix\n\t\t\tfNumberStr = fNumberStr.substr(this.prefix.length);\n\t\t\t// remove commas\n\t\t\tfNumberStr = fNumberStr.replace(/,/g, '');\n\t\t\tif (negative) {\n\t\t\t\tfNumberStr = '-' + fNumberStr;\n\t\t\t}\n\t\t\tif (!isNaN(fNumberStr)) {\n\t\t\t\treturn this.getNumericString(fNumberStr);\n\t\t\t}\n\t\t}\n\t\treturn fNumStr;\n\t}\n\n\t/**\n\t * @description We shouldn't return strings like 1.000 in formatBack method.\n\t * However, using only Number(str) is not enough, because it omits . in big numbers\n\t * like 23423423423342234.34 => 23423423423342236 . There's a conflict in cases\n\t * 6143 and 6541.\n\t * @methodOf DecimalFormat\n\t * @param {String} str Numberic string\n\t * @return {String} Corrected numeric string\n\t * @author Serdar Bicer\n\t */\n\tprivate getNumericString(str) {\n\t\t//first convert to number\n\t\tvar num = new Number(str);\n\t\t//check if there is a missing dot\n\t\tvar numStr = num + '';\n\t\tif (str.indexOf('.') > -1 && numStr.indexOf('.') < 0) {\n\t\t\t//check if original string has all zeros after dot or not\n\t\t\tfor (var i = str.indexOf('.') + 1; i < str.length; i++) {\n\t\t\t\t//if not, this means we lost precision\n\t\t\t\tif (str.charAt(i) !== '0') {\n\t\t\t\t\treturn str;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn numStr;\n\t\t}\n\t\treturn str;\n\t}\n\n}\n","import { format, Locale, setHours, setMilliseconds, setMinutes, setSeconds } from 'date-fns';\nimport { ca, de, enGB, enUS, es, fr, gl, it, ja, ko, lt, nl, pl, pt, ru, sk, th, zhCN } from 'date-fns/locale';\n\nexport class DateUtil {\n\n\tconstructor(protected locale: string) {\n\t}\n\n\tpublic setLocale(lang: string): void {\n\t\tthis.locale = lang;\n\t}\n\n\tpublic formatDate(date: Date): string {\n\t\tif (!date) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn format(date, this.getDateFormat());\n\t}\n\n\tpublic formatDateFullYear(date: Date): string {\n\t\tif (!date) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn format(date, this.getDateFormat(true));\n\t}\n\n\tpublic formatTime(date: Date, withSeconds?: boolean): string {\n\t\tif (!date) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn format(date, this.getTimeFormat(withSeconds));\n\t}\n\n\tpublic formatDateTime(date: Date, fullYear?: boolean, withSeconds?: boolean): string {\n\t\tif (!date) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst formattedDate = (fullYear) ? this.formatDateFullYear(date) : this.formatDate(date);\n\t\tconst formattedHour = this.formatTime(date, withSeconds);\n\t\treturn formattedDate + ' ' + formattedHour;\n\t}\n\n\tpublic formatMonthAndYear(date: Date): string {\n\t\tif (!date) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn format(date, 'MMMM, yyyy', {locale: this.convertSystelabLocaleToDateFnsLocale(this.locale)});\n\t}\n\n\tpublic formatDateAndShortMonth(date: Date): string {\n\t\tif (!date) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn format(date, 'd MMM', {locale: this.convertSystelabLocaleToDateFnsLocale(this.locale)});\n\t}\n\n\tpublic getDateFrom(date: Date): Date {\n\t\tlet d: Date = setHours(date, 0);\n\t\td = setMinutes(d, 0);\n\t\td = setSeconds(d, 0);\n\t\td = setMilliseconds(d, 0);\n\t\treturn d;\n\t}\n\n\tpublic getDateTo(date: Date): Date {\n\t\tlet d: Date = setHours(date, 23);\n\t\td = setMinutes(d, 59);\n\t\td = setSeconds(d, 59);\n\t\td = setMilliseconds(d, 999);\n\t\treturn d;\n\t}\n\n\tpublic getDateMidDay(date: Date): Date {\n\t\tlet d: Date = setHours(date, 12);\n\t\td = setMinutes(d, 0);\n\t\td = setSeconds(d, 0);\n\t\td = setMilliseconds(d, 0);\n\t\treturn d;\n\t}\n\n\tpublic getTimeFormat(withSeconds = false): string {\n\t\tif (withSeconds) {\n\t\t\treturn this.locale === 'en-US' ? 'hh:mm:ss a' : 'HH:mm:ss';\n\t\t} else {\n\t\t\treturn this.locale === 'en-US' ? 'hh:mm a' : 'HH:mm';\n\t\t}\n\t}\n\n\tpublic getDateFormat(fullDateFormat = false): string {\n\t\treturn this.getLocalizedStringDateFormat(this.locale, fullDateFormat);\n\t}\n\n\tpublic getDateFormatForDatePicker(fullDateFormat = false): string {\n\t\treturn this.getLocalizedDateFormatForDatePicker(this.locale, fullDateFormat);\n\t}\n\n\tpublic getFirstDayOfWeek(): number {\n\t\tswitch (this.locale) {\n\t\t\tcase 'en-US':\n\t\t\tcase 'zh-CN':\n\t\t\tcase 'th-TH':\n\t\t\tcase 'ja-JA':\n\t\t\t\treturn 0; // Sunday\n\t\t\tdefault:\n\t\t\t\treturn 1; // Monday\n\t\t}\n\t}\n\n\tpublic getSeparator(locale: string): string {\n\t\tswitch (locale) {\n\t\t\tcase 'pl-PL':\n\t\t\tcase 'lt-LT':\n\t\t\tcase 'pt-PT':\n\t\t\tcase 'pt-BR':\n\t\t\tcase 'nl-NL':\n\t\t\t\treturn '-';\n\t\t\tcase 'sk-SK':\n\t\t\tcase 'ru-RU':\n\t\t\tcase 'de-DE':\n\t\t\t\treturn '.';\n\t\t\tdefault:\n\t\t\t\treturn '/';\n\t\t}\n\t}\n\n\tpublic parseDate(currentDateValue: string, locale?: string): Date {\n\t\tif (!locale) {\n\t\t\tlocale = this.locale;\n\t\t}\n\n\t\tif (!currentDateValue) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst auxArray = currentDateValue.split(this.getSeparator(locale));\n\t\tif (auxArray.indexOf('') > -1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tswitch (locale) {\n\t\t\tcase 'pl-PL':\n\t\t\tcase 'lt-LT':\n\t\t\t\treturn new Date(auxArray.join('/'));\n\t\t\tcase 'zh-CN':\n\t\t\tcase 'ja-JA':\n\t\t\tcase 'en-US':\n\t\t\t\treturn new Date(currentDateValue);\n\t\t\tdefault:\n\t\t\t\treturn new Date(auxArray[1] + '/' + auxArray[0] + '/' + auxArray[2]);\n\t\t}\n\t}\n\n\tprivate convertSystelabLocaleToDateFnsLocale(localeString: string): Locale {\n\t\tconst localeForSystelabLocale = new Map<string, Locale>([\n\t\t\t['es', es], ['es-ES', es], ['es-CL', es], ['es-MX', es], ['es-UY', es], ['es-AR', es], ['es-BO', es],\n\t\t\t['es-CO', es], ['es-CR', es], ['es-DO', es], ['es-EC', es], ['es-SV', es], ['es-GT', es], ['es-HN', es],\n\t\t\t['es-NI', es], ['es-PA', es], ['es-PY', es], ['es-PE', es], ['es-PR', es], ['es-VE', es], ['fr', fr],\n\t\t\t['fr-FR', fr], ['it', it], ['it-IT', it], ['en', enUS], ['en-US', enUS], ['en-GB', enGB], ['pt', pt],\n\t\t\t['pt-BR', pt], ['ca', ca], ['gl', gl], ['lt', lt], ['lt-LT', lt], ['pl', pl], ['pl-PL', pl], ['sk', sk],\n\t\t\t['sk-SK', sk], ['ru', ru], ['ru-RU', ru], ['zh', zhCN], ['zh-CN', zhCN], ['de', de], ['de-DE', de],\n\t\t\t['th', th], ['th-TH', th], ['ja', ja], ['ja-JA', ja], ['ko', ko], ['ko-KR', ko], ['nl', nl], ['nl-NL', nl],\n\t\t]);\n\t\tconst locale: Locale = localeForSystelabLocale.get(localeString);\n\t\treturn locale ? locale : enUS;\n\t}\n\n\tprivate getLocalizedStringDateFormat(locale: string, fullDateFormat = false): string {\n\t\tconst year = fullDateFormat ? 'yyyy' : 'yy';\n\t\tswitch (locale) {\n\t\t\tcase 'en-US':\n\t\t\t\treturn fullDateFormat ? `MM/dd/${year}` : `M/d/${year}`;\n\t\t\tcase 'ko-KO':\n\t\t\t\treturn `${year}. M. d`;\n\t\t\tcase 'pl-PL':\n\t\t\tcase 'lt-LT':\n\t\t\t\treturn `${year}-MM-dd`;\n\t\t\tcase 'pt-PT':\n\t\t\tcase 'pt-BR':\n\t\t\tcase 'nl-NL':\n\t\t\t\treturn `dd-MM-${year}`;\n\t\t\tcase 'sk-SK':\n\t\t\tcase 'ru-RU':\n\t\t\t\treturn `d.M.${year}`;\n\t\t\tcase 'zh-ZH':\n\t\t\t\treturn `${year}-M-d`;\n\t\t\tcase 'de-DE':\n\t\t\t\treturn `dd.MM.${year}`;\n\t\t\tcase 'th-TH':\n\t\t\t\treturn `d/M/${year}`;\n\t\t\tcase 'ja-JA':\n\t\t\t\treturn `${year}/MM/dd`;\n\t\t\tdefault:\n\t\t\t\treturn `dd/MM/${year}`;\n\t\t}\n\t}\n\n\tprivate getLocalizedDateFormatForDatePicker(locale: string, fullDateFormat = false): string {\n\t\tconst year = fullDateFormat ? 'yy' : 'y';\n\t\tswitch (locale) {\n\t\t\tcase 'en-US':\n\t\t\t\treturn fullDateFormat ? `mm/dd/${year}` : `m/d/${year}`;\n\t\t\tcase 'ko-KO':\n\t\t\t\treturn `${year}. m. d`;\n\t\t\tcase 'pl-PL':\n\t\t\tcase 'lt-LT':\n\t\t\t\treturn `${year}-mm-dd`;\n\t\t\tcase 'pt-PT':\n\t\t\tcase 'pt-BR':\n\t\t\tcase 'nl-NL':\n\t\t\t\treturn `dd-mm-${year}`;\n\t\t\tcase 'sk-SK':\n\t\t\tcase 'ru-RU':\n\t\t\t\treturn `d.m.${year}`;\n\t\t\tcase 'zh-CN':\n\t\t\t\treturn `${year}-m-d`;\n\t\t\tcase 'de-DE':\n\t\t\t\treturn `dd.mm.${year}`;\n\t\t\tcase 'th-TH':\n\t\t\t\treturn `d/m/${year}`;\n\t\t\tcase 'ja-JA':\n\t\t\t\treturn `${year}/mm/dd`;\n\t\t\tdefault:\n\t\t\t\treturn `dd/mm/${year}`;\n\t\t}\n\t}\n}\n","\nimport {of as observableOf,  Observable } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { TranslateService, TranslationObject } from '@ngx-translate/core';\n\nimport { DecimalFormat } from './decimal-format/decimal-format'\nimport { DateUtil } from './date-util/date-util';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class I18nService {\n\n\tprotected locale: string;\n\tprotected staticBundles: any = {};\n\tprotected dateUtil: DateUtil;\n\n\tconstructor(protected translateService: TranslateService) {\n\t\tthis.translateService.setDefaultLang('en-US');\n\t\tthis.dateUtil = new DateUtil('en-US');\n\t}\n\n\tpublic use(locale: string): Observable<any> {\n\t\tthis.locale = locale;\n\t\tthis.dateUtil.setLocale(locale);\n\t\treturn this.translateService.use(locale);\n\t}\n\n\tpublic getLocale(): string {\n\t\treturn this.locale;\n\t}\n\n\tpublic getCurrentLanguage(): string {\n\t\treturn this.translateService.currentLang;\n\t}\n\n\tpublic getBrowserLang(): string | undefined {\n\t\treturn this.translateService.getBrowserLang();\n\t}\n\n\tpublic reloadLanguage(lang: string): Observable<any> {\n\t\treturn this.translateService.reloadLang(lang);\n\t}\n\n\tpublic setTranslation(locale: string, translations: TranslationObject): void {\n\t\tthis.translateService.setTranslation(locale, translations, false);\n\t}\n\n\tpublic appendTranslation(locale: string, translations: TranslationObject): void {\n\t\tthis.translateService.setTranslation(locale, translations, true);\n\t}\n\n\tpublic get(bundle: string | string[]): Observable<any> {\n\t\tif (typeof bundle === 'string' && this.staticBundles[bundle]) {\n\t\t\treturn observableOf(this.staticBundles[bundle]);\n\t\t}\n\t\treturn this.translateService.get(bundle);\n\t}\n\n\tpublic instant(key: string | Array<string>, interpolateParams?: any): string | any {\n\t\tif (typeof key === 'string' && this.staticBundles[key]) {\n\t\t\tlet bundleValue = '';\n\t\t\tif (typeof interpolateParams === 'object') {\n\t\t\t\tObject.keys(interpolateParams)\n\t\t\t\t\t.forEach((paramKey: string) => {\n\t\t\t\t\t\tbundleValue = this.staticBundles[key].replace('{{' + paramKey + '}}', interpolateParams[paramKey]);\n\t\t\t\t\t});\n\t\t\t\treturn bundleValue;\n\t\t\t} else if (this.staticBundles[key].indexOf('{') > -1 && !interpolateParams) {\n\t\t\t\tconst regEx = /{{([^]*)}}/g;\n\t\t\t\treturn this.staticBundles[key].replace(regEx, '');\n\t\t\t}\n\t\t\treturn this.staticBundles[key];\n\t\t}\n\t\treturn this.translateService.instant(key, interpolateParams);\n\t}\n\n\tpublic setStaticBundles(staticBundles: any): void {\n\t\tif (staticBundles) {\n\t\t\tthis.staticBundles = staticBundles;\n\t\t}\n\t}\n\n\tpublic getDateFormat(isFullYear = false): string {\n\t\treturn this.dateUtil.getDateFormat(isFullYear);\n\t}\n\n\tpublic getDateFormatForDatePicker(isFullYear = false): string {\n\t\treturn this.dateUtil.getDateFormatForDatePicker(isFullYear);\n\t}\n\n\tpublic getTimeFormat(withSeconds = false): string {\n\t\treturn this.dateUtil.getTimeFormat(withSeconds);\n\t}\n\n\tpublic formatDate(date: Date): string {\n\t\treturn this.dateUtil.formatDate(date);\n\t}\n\n\tpublic formatDateFullYear(date: Date): string {\n\t\treturn this.dateUtil.formatDateFullYear(date);\n\t}\n\n\tpublic formatTime(date: Date, withSeconds?: boolean): string {\n\t\treturn this.dateUtil.formatTime(date, withSeconds);\n\t}\n\n\tpublic formatDateTime(date: Date, fullYear?: boolean, withSeconds?: boolean): string {\n\t\treturn this.dateUtil.formatDateTime(date, fullYear, withSeconds);\n\t}\n\n\tpublic formatMonthAndYear(date: Date): string {\n\t\treturn this.dateUtil.formatMonthAndYear(date);\n\t}\n\n\tpublic formatDateAndShortMonth(date: Date): string {\n\t\treturn this.dateUtil.formatDateAndShortMonth(date);\n\t}\n\n\tpublic getDateFrom(date: Date): Date {\n\t\treturn this.dateUtil.getDateFrom(date);\n\t}\n\n\tpublic getDateTo(date: Date): Date {\n\t\treturn this.dateUtil.getDateTo(date);\n\t}\n\n\tpublic getDateMidDay(date: Date): Date {\n\t\treturn this.dateUtil.getDateMidDay(date);\n\t}\n\n\tpublic getFirstDayOfWeek(): number {\n\t\treturn this.dateUtil.getFirstDayOfWeek();\n\t}\n\n\tpublic parseDate(currentDateValue: string, locale?: string): Date {\n\t\treturn this.dateUtil.parseDate(currentDateValue, locale);\n\t}\n\n\tpublic formatNumber(numberToFormat: number, decimalFormat: string, applyLocale?: boolean): string {\n\t\tconst df: any = new DecimalFormat(decimalFormat);\n\t\tconst sNumber: string = df.format(numberToFormat, decimalFormat);\n\t\tif (applyLocale) {\n\t\t\tlet minimumFractionDigits = 0;\n\t\t\tif (sNumber.split('.')[1]) {\n\t\t\t\tminimumFractionDigits = sNumber.split('.')[1].length;\n\t\t\t}\n\t\t\treturn Number(sNumber)\n\t\t\t\t.toLocaleString(this.locale, { minimumFractionDigits });\n\t\t}\n\t\treturn sNumber;\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\nimport { I18nService } from './i18n.service';\nimport { DecimalPipe } from '@angular/common';\n\n@Pipe({\n    name: 'numberformat',\n    standalone: false\n})\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class NumberFormatPipe implements PipeTransform {\n\tconstructor(protected i18nService: I18nService, protected decimalPipe: DecimalPipe) {\n\t}\n\n\tpublic transform(\n\t\tvalue: number, precision?: string,\n\t\tunits?: string, priorSymbol?: string,\n\t\tdefaultSymbolWhenNull?: string, ...args: string[]): string {\n\n\t\tif (value || value === 0) {\n\t\t\tif (!precision) {\n\t\t\t\tprecision = '1.0-2';\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tlet roundedValue = this.decimalPipe.transform(value, precision, this.i18nService.getLocale());\n\n\t\t\t\tif (units) {\n\t\t\t\t\troundedValue = roundedValue + units;\n\t\t\t\t}\n\t\t\t\tif (priorSymbol) {\n\t\t\t\t\troundedValue = priorSymbol + ' ' + roundedValue;\n\t\t\t\t}\n\t\t\t\treturn roundedValue;\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t\treturn '';\n\t\t\t}\n\t\t} else {\n\t\t\treturn defaultSymbolWhenNull ? defaultSymbolWhenNull : '';\n\t\t}\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\n\nimport { I18nService } from './i18n.service';\n\n@Pipe({\n    name: 'translate',\n    standalone: false\n})\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class GeneralTranslatePipe implements PipeTransform {\n\tconstructor(protected i18nService: I18nService) {\n\t}\n\n\tpublic transform(query: string, ...args: string[]): any {\n\t\treturn this.i18nService.get(query);\n\t}\n}\n","import { forkJoin as observableForkJoin, Observable, of as observableOf } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Location } from '@angular/common';\n\nexport class LocalizableTranslateStaticLoader implements TranslateLoader {\n\n\tprotected prefix = '';\n\n\tconstructor(private http: HttpClient, protected location: Location, private manifestFile: string = 'manifest.json') {\n\t\tif (!(this.getWindowPathname() === '/' || this.getWindowPathname() === '/context.html')) {\n\t\t\tthis.prefix = this.getWindowPathname();\n\t\t\tif (this.prefix.endsWith('index.html')) {\n\t\t\t\t// That's the case of Electron when starting from local file.\n\t\t\t\tthis.prefix = this.prefix.slice(0, this.prefix.length - 10);\n\t\t\t}\n\t\t\tif (this.prefix.endsWith('/')) {\n\t\t\t\tthis.prefix = this.prefix.slice(0, this.prefix.length - 1);\n\t\t\t}\n\t\t\t// Check if the URL contains parameters (i.e.: identity provider redirection) and remove them\n\t\t\tconst routePath = this.location.path() ? this.location.path()\n\t\t\t\t.split('?')[0] : undefined;\n\t\t\tif (routePath && this.prefix.endsWith(routePath)) {\n\t\t\t\t// When starting from an Angular application route\n\t\t\t\tthis.prefix = this.prefix.slice(0, this.prefix.length - routePath.length);\n\t\t\t}\n\n\t\t\tthis.prefix = (this.prefix !== '') ? this.prefix + '/' : '';\n\t\t}\n\t}\n\n\tpublic getTranslation(locale: string): Observable<any> {\n\t\t// If the execution is from testing the http access can be avoided with mock translations\n\t\tif (globalThis.jasmine && globalThis.jasmine['translations']) {\n\t\t\treturn observableOf(globalThis.jasmine['translations']);\n\t\t}\n\n\t\tconst language: string = locale.split('-')[0];\n\t\tconst country: string = locale.split('-')[1];\n\n\t\tconst languageAndCountry: string = language + '_' + country;\n\t\treturn observableForkJoin([\n\t\t\tthis.getMessageBundleByLanguage(language),\n\t\t\tthis.getMessageBundleByLanguageAndCountry(languageAndCountry),\n\t\t\tthis.getErrorBundleByLanguage(language),\n\t\t\tthis.getErrorBundleByLanguageAndCountry(languageAndCountry),\n\t\t\tthis.getBundlesByManifestFile(language, languageAndCountry),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tmap((translations: any[]) => {\n\t\t\t\t\tif (translations.length > 0) {\n\t\t\t\t\t\tlet bundles = translations[0];\n\t\t\t\t\t\tfor (let i = 1; i < translations.length; i++) {\n\t\t\t\t\t\t\tbundles = this.mergeRecursive(bundles, translations[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn bundles;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn observableOf(undefined);\n\t\t\t\t\t}\n\t\t\t\t}));\n\t}\n\n\tprivate getBundlesByManifestFile(language: string, languageAndCountry: string) {\n\t\treturn this.http.get<{ [key: string]: string }>(`${this.prefix}i18n/language/${this.manifestFile}`)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(manifest => {\n\t\t\t\t\tif (!manifest) {\n\t\t\t\t\t\treturn observableOf({});\n\t\t\t\t\t}\n\t\t\t\t\tconst fileName = manifest[`MessagesBundle_${language}`] || manifest[`MessagesBundle_${languageAndCountry}`];\n\t\t\t\t\tif (!fileName) {\n\t\t\t\t\t\treturn observableOf({});\n\t\t\t\t\t}\n\t\t\t\t\treturn this.http.get(`${this.prefix}i18n/language/${fileName}`)\n\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\tcatchError(() => observableOf({})));\n\t\t\t\t}),\n\t\t\t\tcatchError(() => observableOf({})));\n\t}\n\n\tprivate getErrorBundleByLanguageAndCountry(languageAndCountry: string) {\n\t\treturn this.http.get(`${this.prefix}i18n/error/ErrorsBundle_${languageAndCountry}.json`)\n\t\t\t.pipe(\n\t\t\t\tcatchError(() => observableOf({})));\n\t}\n\n\tprivate getErrorBundleByLanguage(language: string) {\n\t\treturn this.http.get(`${this.prefix}i18n/error/ErrorsBundle_${language}.json`)\n\t\t\t.pipe(\n\t\t\t\tcatchError(() => observableOf({})));\n\t}\n\n\tprivate getMessageBundleByLanguageAndCountry(languageAndCountry: string) {\n\t\treturn this.http.get(`${this.prefix}i18n/language/MessagesBundle_${languageAndCountry}.json`)\n\t\t\t.pipe(\n\t\t\t\tcatchError(() => observableOf({})));\n\t}\n\n\tprivate getMessageBundleByLanguage(language: string) {\n\t\treturn this.http.get(`${this.prefix}i18n/language/MessagesBundle_${language}.json`)\n\t\t\t.pipe(\n\t\t\t\tcatchError(() => observableOf({})));\n\t}\n\n\tprivate mergeRecursive(obj1: any, obj2: any) {\n\t\tfor (const p in obj2) {\n\t\t\ttry {\n\t\t\t\t// Property in destination object set; update its value.\n\t\t\t\tif (obj2[p].constructor === Object) {\n\t\t\t\t\tobj1[p] = this.mergeRecursive(obj1[p], obj2[p]);\n\t\t\t\t} else {\n\t\t\t\t\tobj1[p] = obj2[p];\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// Property in destination object not set; create it and set its value.\n\t\t\t\tobj1[p] = obj2[p];\n\t\t\t}\n\t\t}\n\t\treturn obj1;\n\t}\n\n\tprivate getWindowPathname(): string {\n\t\treturn window.location.pathname;\n\t}\n\n}\n\n","import { NgModule } from '@angular/core';\nimport { LocalizableTranslateStaticLoader } from './localizable-translate-static-loader';\nimport { GeneralTranslatePipe } from './translate.pipe';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { NumberFormatPipe } from './number-format.pipe';\nimport { DecimalPipe, Location, LocationStrategy, PathLocationStrategy } from '@angular/common';\n\n// AoT requires an exported function for factories\nexport function httpLoaderFactory(http: HttpClient, location: Location): LocalizableTranslateStaticLoader {\n\treturn new LocalizableTranslateStaticLoader(http, location);\n}\n\n@NgModule({\n\timports:      [\n\t\tTranslateModule.forRoot({\n\t\t\tloader: {\n\t\t\t\tprovide:    TranslateLoader,\n\t\t\t\tuseFactory: (httpLoaderFactory),\n\t\t\t\tdeps:       [HttpClient, Location]\n\t\t\t}\n\t\t})\n\t],\n\tdeclarations: [\n\t\tGeneralTranslatePipe,\n\t\tNumberFormatPipe\n\t],\n\texports:      [\n\t\tGeneralTranslatePipe,\n\t\tNumberFormatPipe],\n\tproviders:    [\n\t\tDecimalPipe,\n\t\tLocation,\n\t\t{provide: LocationStrategy, useClass: PathLocationStrategy}\n\t]\n})\n\nexport class SystelabTranslateModule {\n}\n\n","/*\n * Public API Surface of systelab-translate\n */\n\nexport * from './lib/i18n.service';\nexport * from './lib/number-format.pipe';\nexport * from './lib/translate.pipe';\nexport * from './lib/systelab-translate.module';\nexport * from './lib/localizable-translate-static-loader';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf","i1.I18nService","observableForkJoin"],"mappings":"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"}