@jsverse/transloco-locale 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +3 -0
  3. package/esm2022/index.mjs +8 -0
  4. package/esm2022/jsverse-transloco-locale.mjs +5 -0
  5. package/esm2022/lib/helpers.mjs +70 -0
  6. package/esm2022/lib/locale-currency.mjs +651 -0
  7. package/esm2022/lib/pipes/base-locale.pipe.mjs +24 -0
  8. package/esm2022/lib/pipes/index.mjs +6 -0
  9. package/esm2022/lib/pipes/transloco-currency.pipe.mjs +44 -0
  10. package/esm2022/lib/pipes/transloco-date.pipe.mjs +43 -0
  11. package/esm2022/lib/pipes/transloco-decimal.pipe.mjs +39 -0
  12. package/esm2022/lib/pipes/transloco-percent.pipe.mjs +39 -0
  13. package/esm2022/lib/shared.mjs +9 -0
  14. package/esm2022/lib/transloco-locale.config.mjs +18 -0
  15. package/esm2022/lib/transloco-locale.module.mjs +28 -0
  16. package/esm2022/lib/transloco-locale.providers.mjs +75 -0
  17. package/esm2022/lib/transloco-locale.service.mjs +120 -0
  18. package/esm2022/lib/transloco-locale.transformers.mjs +15 -0
  19. package/esm2022/lib/transloco-locale.types.mjs +2 -0
  20. package/fesm2022/jsverse-transloco-locale.mjs +1140 -0
  21. package/fesm2022/jsverse-transloco-locale.mjs.map +1 -0
  22. package/index.d.ts +7 -0
  23. package/lib/helpers.d.ts +15 -0
  24. package/lib/locale-currency.d.ts +651 -0
  25. package/lib/pipes/base-locale.pipe.d.ts +13 -0
  26. package/lib/pipes/index.d.ts +5 -0
  27. package/lib/pipes/transloco-currency.pipe.d.ts +22 -0
  28. package/lib/pipes/transloco-date.pipe.d.ts +24 -0
  29. package/lib/pipes/transloco-decimal.pipe.d.ts +19 -0
  30. package/lib/pipes/transloco-percent.pipe.d.ts +19 -0
  31. package/lib/shared.d.ts +2 -0
  32. package/lib/transloco-locale.config.d.ts +8 -0
  33. package/lib/transloco-locale.module.d.ts +10 -0
  34. package/lib/transloco-locale.providers.d.ts +11 -0
  35. package/lib/transloco-locale.service.d.ts +54 -0
  36. package/lib/transloco-locale.transformers.d.ts +16 -0
  37. package/lib/transloco-locale.types.d.ts +151 -0
  38. package/package.json +49 -0
@@ -0,0 +1,1140 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injectable, ChangeDetectorRef, Pipe, NgModule, makeEnvironmentProviders } from '@angular/core';
3
+ import { toNumber, TranslocoService, isNil } from '@jsverse/transloco';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { map, filter, distinctUntilChanged } from 'rxjs/operators';
6
+
7
+ const ISO8601_DATE_REGEX = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
8
+ /**
9
+ * check if a given value is in BCP 47 language tag.
10
+ *
11
+ * isLocaleFormat('en') // false,
12
+ * isLocaleFormat('En-us') // false
13
+ * isLocaleFormat('en-US') // true
14
+ */
15
+ function isLocaleFormat(val) {
16
+ const irregulars = `en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE|art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang|es-419`;
17
+ const BCPFormat = `[a-z]{2}-[A-Z]{2}`;
18
+ const scriptFormat = `[a-z]{2}-[A-Za-z]{4}`;
19
+ return (typeof val === 'string' &&
20
+ !!val.match(RegExp(`(${irregulars})|(${BCPFormat})|(${scriptFormat})`)));
21
+ }
22
+ function localizeNumber(value, locale, options) {
23
+ const number = toNumber(value);
24
+ return number !== null
25
+ ? new Intl.NumberFormat(locale, options).format(number)
26
+ : '';
27
+ }
28
+ function localizeDate(date, locale, options) {
29
+ if (isDate(date)) {
30
+ return new Intl.DateTimeFormat(locale, options).format(date);
31
+ }
32
+ return '';
33
+ }
34
+ function isDate(value) {
35
+ return value instanceof Date && !isNaN(value);
36
+ }
37
+ function toDate(value) {
38
+ let match;
39
+ if (typeof value === 'string') {
40
+ value = value.trim();
41
+ }
42
+ if (isDate(value)) {
43
+ return value;
44
+ }
45
+ if (!isNaN(value - parseFloat(value))) {
46
+ return new Date(parseFloat(value));
47
+ }
48
+ if (typeof value === 'string' && /^(\d{4}-\d{1,2}-\d{1,2})$/.test(value)) {
49
+ const [y, m, d] = value.split('-').map((val) => parseInt(val, 10));
50
+ return new Date(y, m - 1, d);
51
+ }
52
+ if (typeof value === 'string' && (match = value.match(ISO8601_DATE_REGEX))) {
53
+ return isoStringToDate(match);
54
+ }
55
+ return new Date(value);
56
+ }
57
+ function isoStringToDate(match) {
58
+ const date = new Date(0);
59
+ let tzHour = 0;
60
+ let tzMin = 0;
61
+ const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;
62
+ const timeSetter = match[8] ? date.setUTCHours : date.setHours;
63
+ if (match[9]) {
64
+ tzHour = +(match[9] + match[10]);
65
+ tzMin = +(match[9] + match[11]);
66
+ }
67
+ dateSetter.call(date, +match[1], +match[2] - 1, +match[3]);
68
+ const h = +(match[4] || '0') - tzHour;
69
+ const m = +(match[5] || '0') - tzMin;
70
+ const s = +(match[6] || '0');
71
+ const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);
72
+ timeSetter.call(date, h, m, s, ms);
73
+ return date;
74
+ }
75
+
76
+ function getDefaultOptions(locale, style, localeConfig) {
77
+ const defaultConfig = (localeConfig.global?.[style] ?? {});
78
+ const settings = (localeConfig.localeBased?.[locale] ??
79
+ {});
80
+ return Reflect.has(settings, style)
81
+ ? { ...defaultConfig, ...settings[style] }
82
+ : defaultConfig;
83
+ }
84
+
85
+ var LOCALE_CURRENCY = {
86
+ 'aa-DJ': 'DJF',
87
+ 'aa-ER': 'ERN',
88
+ 'aa-ET': 'ETB',
89
+ 'ab-GE': 'ETB',
90
+ 'ab-TR': 'ETB',
91
+ 'af-BW': 'ETB',
92
+ 'af-NA': 'ETB',
93
+ 'af-ZA': 'ZAR',
94
+ 'ak-GH': 'ZAR',
95
+ 'am-ET': 'ETB',
96
+ 'am-IL': 'ETB',
97
+ 'ar-AE': 'AED',
98
+ 'ar-AR': 'AED',
99
+ 'ar-BH': 'BHD',
100
+ 'ar-CM': 'BHD',
101
+ 'ar-CY': 'BHD',
102
+ 'ar-DJ': 'BHD',
103
+ 'ar-DZ': 'DZD',
104
+ 'ar-EG': 'EGP',
105
+ 'ar-EH': 'EGP',
106
+ 'ar-ER': 'EGP',
107
+ 'ar-IL': 'EGP',
108
+ 'ar-IQ': 'IQD',
109
+ 'ar-IR': 'IQD',
110
+ 'ar-JO': 'JOD',
111
+ 'ar-KE': 'JOD',
112
+ 'ar-KM': 'JOD',
113
+ 'ar-KW': 'KWD',
114
+ 'ar-LB': 'LBP',
115
+ 'ar-LY': 'LYD',
116
+ 'ar-MA': 'MAD',
117
+ 'ar-ML': 'MAD',
118
+ 'ar-MR': 'MAD',
119
+ 'ar-NE': 'MAD',
120
+ 'ar-NG': 'MAD',
121
+ 'ar-OM': 'OMR',
122
+ 'ar-PS': 'OMR',
123
+ 'ar-QA': 'QAR',
124
+ 'ar-SA': 'SAR',
125
+ 'ar-SD': 'SDD',
126
+ 'ar-SS': 'SDD',
127
+ 'ar-SY': 'SYP',
128
+ 'ar-TD': 'SYP',
129
+ 'ar-TJ': 'SYP',
130
+ 'ar-TN': 'TND',
131
+ 'ar-TR': 'TND',
132
+ 'ar-YE': 'YER',
133
+ 'as-IN': 'INR',
134
+ 'av-RU': 'INR',
135
+ 'ay-BO': 'INR',
136
+ 'ay-PE': 'INR',
137
+ 'az-AZ': 'AZM',
138
+ 'ba-RU': 'AZM',
139
+ 'be-BY': 'BYR',
140
+ 'be-PL': 'BYR',
141
+ 'be-UA': 'BYR',
142
+ 'bg-BG': 'BGN',
143
+ 'bg-GR': 'BGN',
144
+ 'bg-MD': 'BGN',
145
+ 'bg-RO': 'BGN',
146
+ 'bg-TR': 'BGN',
147
+ 'bg-UA': 'BGN',
148
+ 'bi-VU': 'BGN',
149
+ 'bm-ML': 'BGN',
150
+ 'bn-BD': 'BDT',
151
+ 'bn-GB': 'BDT',
152
+ 'bn-IN': 'INR',
153
+ 'bn-NP': 'INR',
154
+ 'bo-CN': 'CNY',
155
+ 'bo-IN': 'INR',
156
+ 'bo-NP': 'INR',
157
+ 'br-FR': 'EUR',
158
+ 'bs-BA': 'BAM',
159
+ 'ca-AD': 'EUR',
160
+ 'ca-ES': 'EUR',
161
+ 'ca-FR': 'EUR',
162
+ 'ca-IT': 'EUR',
163
+ 'ce-RU': 'EUR',
164
+ 'ch-GU': 'EUR',
165
+ 'ch-MP': 'EUR',
166
+ 'co-FR': 'EUR',
167
+ 'cs-CZ': 'CZK',
168
+ 'cv-RU': 'RUB',
169
+ 'cy-AR': 'RUB',
170
+ 'cy-GB': 'GBP',
171
+ 'da-DE': 'GBP',
172
+ 'da-DK': 'DKK',
173
+ 'da-GL': 'DKK',
174
+ 'da-IS': 'DKK',
175
+ 'de-AT': 'EUR',
176
+ 'de-BE': 'EUR',
177
+ 'de-BR': 'EUR',
178
+ 'de-CA': 'EUR',
179
+ 'de-CH': 'CHF',
180
+ 'de-CZ': 'CHF',
181
+ 'de-DE': 'EUR',
182
+ 'de-DK': 'EUR',
183
+ 'de-HU': 'EUR',
184
+ 'de-IT': 'EUR',
185
+ 'de-KZ': 'EUR',
186
+ 'de-LI': 'EUR',
187
+ 'de-LU': 'EUR',
188
+ 'de-NA': 'EUR',
189
+ 'de-PL': 'EUR',
190
+ 'de-PY': 'EUR',
191
+ 'de-RO': 'EUR',
192
+ 'de-SK': 'EUR',
193
+ 'de-US': 'EUR',
194
+ 'dv-IN': 'EUR',
195
+ 'dv-MV': 'MVR',
196
+ 'dz-BT': 'BTN',
197
+ 'dz-IN': 'BTN',
198
+ 'ee-GH': 'BTN',
199
+ 'ee-TG': 'BTN',
200
+ 'el-AL': 'BTN',
201
+ 'el-CY': 'EUR',
202
+ 'el-DE': 'EUR',
203
+ 'el-EG': 'EUR',
204
+ 'el-GB': 'EUR',
205
+ 'el-GR': 'EUR',
206
+ 'el-IT': 'EUR',
207
+ 'el-RO': 'EUR',
208
+ 'el-TR': 'EUR',
209
+ 'el-UA': 'EUR',
210
+ 'en-AC': 'EUR',
211
+ 'en-AG': 'XCD',
212
+ 'en-AI': 'XCD',
213
+ 'en-AS': 'XCD',
214
+ 'en-AU': 'AUD',
215
+ 'en-AW': 'AUD',
216
+ 'en-BB': 'AUD',
217
+ 'en-BE': 'AUD',
218
+ 'en-BM': 'AUD',
219
+ 'en-BN': 'AUD',
220
+ 'en-BS': 'AUD',
221
+ 'en-BW': 'BWP',
222
+ 'en-BZ': 'BWP',
223
+ 'en-CA': 'CAD',
224
+ 'en-CC': 'CAD',
225
+ 'en-CK': 'CAD',
226
+ 'en-CM': 'CAD',
227
+ 'en-CN': 'CAD',
228
+ 'en-CX': 'CAD',
229
+ 'en-DE': 'CAD',
230
+ 'en-DG': 'CAD',
231
+ 'en-DM': 'CAD',
232
+ 'en-DO': 'CAD',
233
+ 'en-ES': 'CAD',
234
+ 'en-ET': 'CAD',
235
+ 'en-FI': 'CAD',
236
+ 'en-FJ': 'CAD',
237
+ 'en-FK': 'CAD',
238
+ 'en-FM': 'CAD',
239
+ 'en-FR': 'CAD',
240
+ 'en-GB': 'GBP',
241
+ 'en-GD': 'GBP',
242
+ 'en-GG': 'GBP',
243
+ 'en-GH': 'GBP',
244
+ 'en-GI': 'GBP',
245
+ 'en-GM': 'GBP',
246
+ 'en-GU': 'GBP',
247
+ 'en-GY': 'GBP',
248
+ 'en-HK': 'HKD',
249
+ 'en-HN': 'HKD',
250
+ 'en-IE': 'EUR',
251
+ 'en-IL': 'EUR',
252
+ 'en-IM': 'EUR',
253
+ 'en-IN': 'INR',
254
+ 'en-IO': 'INR',
255
+ 'en-IT': 'INR',
256
+ 'en-JE': 'INR',
257
+ 'en-JM': 'INR',
258
+ 'en-KE': 'INR',
259
+ 'en-KI': 'INR',
260
+ 'en-KN': 'INR',
261
+ 'en-KY': 'INR',
262
+ 'en-LB': 'INR',
263
+ 'en-LC': 'INR',
264
+ 'en-LK': 'INR',
265
+ 'en-LR': 'INR',
266
+ 'en-LS': 'INR',
267
+ 'en-MG': 'INR',
268
+ 'en-MH': 'INR',
269
+ 'en-MP': 'INR',
270
+ 'en-MS': 'INR',
271
+ 'en-MT': 'INR',
272
+ 'en-MU': 'INR',
273
+ 'en-MW': 'INR',
274
+ 'en-MY': 'INR',
275
+ 'en-NA': 'INR',
276
+ 'en-NF': 'INR',
277
+ 'en-NG': 'NGN',
278
+ 'en-NL': 'NGN',
279
+ 'en-NR': 'NGN',
280
+ 'en-NU': 'NGN',
281
+ 'en-NZ': 'NZD',
282
+ 'en-PA': 'NZD',
283
+ 'en-PG': 'NZD',
284
+ 'en-PH': 'PHP',
285
+ 'en-PI': 'PHP',
286
+ 'en-PK': 'PHP',
287
+ 'en-PM': 'PHP',
288
+ 'en-PN': 'PHP',
289
+ 'en-PR': 'PHP',
290
+ 'en-PW': 'PHP',
291
+ 'en-RW': 'PHP',
292
+ 'en-SB': 'PHP',
293
+ 'en-SC': 'PHP',
294
+ 'en-SG': 'SGD',
295
+ 'en-SH': 'SGD',
296
+ 'en-SL': 'SGD',
297
+ 'en-SS': 'SGD',
298
+ 'en-SZ': 'SGD',
299
+ 'en-TA': 'SGD',
300
+ 'en-TC': 'SGD',
301
+ 'en-TK': 'SGD',
302
+ 'en-TO': 'SGD',
303
+ 'en-TT': 'SGD',
304
+ 'en-TV': 'SGD',
305
+ 'en-TZ': 'SGD',
306
+ 'en-UD': 'SGD',
307
+ 'en-UG': 'SGD',
308
+ 'en-UM': 'SGD',
309
+ 'en-US': 'USD',
310
+ 'en-VC': 'USD',
311
+ 'en-VG': 'USD',
312
+ 'en-VI': 'USD',
313
+ 'en-VU': 'USD',
314
+ 'en-WS': 'USD',
315
+ 'en-ZA': 'ZAR',
316
+ 'en-ZM': 'ZAR',
317
+ 'en-ZW': 'ZWD',
318
+ 'eo-EO': 'ZWD',
319
+ 'eo-SM': 'ZWD',
320
+ 'es-AD': 'ZWD',
321
+ 'es-AR': 'ARS',
322
+ 'es-BO': 'BOB',
323
+ 'es-BZ': 'BOB',
324
+ 'es-CL': 'CLP',
325
+ 'es-CO': 'COP',
326
+ 'es-CR': 'CRC',
327
+ 'es-CU': 'CRC',
328
+ 'es-DE': 'CRC',
329
+ 'es-DO': 'DOP',
330
+ 'es-EA': 'DOP',
331
+ 'es-EC': 'USD',
332
+ 'es-ES': 'EUR',
333
+ 'es-GQ': 'EUR',
334
+ 'es-GT': 'GTQ',
335
+ 'es-HN': 'HNL',
336
+ 'es-IC': 'HNL',
337
+ 'es-LA': 'HNL',
338
+ 'es-MA': 'HNL',
339
+ 'es-MX': 'MXN',
340
+ 'es-NI': 'NIO',
341
+ 'es-PA': 'PAB',
342
+ 'es-PE': 'PEN',
343
+ 'es-PH': 'PEN',
344
+ 'es-PR': 'USD',
345
+ 'es-PY': 'PYG',
346
+ 'es-SV': 'SVC',
347
+ 'es-TT': 'SVC',
348
+ 'es-US': 'USD',
349
+ 'es-UY': 'UYU',
350
+ 'es-VE': 'VEB',
351
+ 'et-EE': 'EEK',
352
+ 'et-FI': 'EEK',
353
+ 'eu-ES': 'EUR',
354
+ 'eu-FR': 'EUR',
355
+ 'fa-AE': 'EUR',
356
+ 'fa-AF': 'EUR',
357
+ 'fa-IQ': 'EUR',
358
+ 'fa-IR': 'IRR',
359
+ 'fa-OM': 'IRR',
360
+ 'fa-PK': 'IRR',
361
+ 'fa-QA': 'IRR',
362
+ 'fa-TJ': 'IRR',
363
+ 'fb-LT': 'IRR',
364
+ 'ff-GN': 'IRR',
365
+ 'ff-MR': 'IRR',
366
+ 'ff-SN': 'IRR',
367
+ 'fi-FI': 'EUR',
368
+ 'fi-RU': 'EUR',
369
+ 'fi-SE': 'EUR',
370
+ 'fj-FJ': 'EUR',
371
+ 'fo-FO': 'DKK',
372
+ 'fr-AD': 'DKK',
373
+ 'fr-BE': 'EUR',
374
+ 'fr-BF': 'EUR',
375
+ 'fr-BI': 'EUR',
376
+ 'fr-BJ': 'EUR',
377
+ 'fr-BL': 'EUR',
378
+ 'fr-CA': 'CAD',
379
+ 'fr-CD': 'CAD',
380
+ 'fr-CF': 'CAD',
381
+ 'fr-CG': 'CAD',
382
+ 'fr-CH': 'CHF',
383
+ 'fr-CI': 'CHF',
384
+ 'fr-CM': 'CHF',
385
+ 'fr-CP': 'CHF',
386
+ 'fr-DJ': 'CHF',
387
+ 'fr-DZ': 'CHF',
388
+ 'fr-FR': 'EUR',
389
+ 'fr-GA': 'EUR',
390
+ 'fr-GB': 'EUR',
391
+ 'fr-GF': 'EUR',
392
+ 'fr-GN': 'EUR',
393
+ 'fr-GP': 'EUR',
394
+ 'fr-GQ': 'EUR',
395
+ 'fr-HT': 'EUR',
396
+ 'fr-IT': 'EUR',
397
+ 'fr-KM': 'EUR',
398
+ 'fr-LB': 'EUR',
399
+ 'fr-LU': 'EUR',
400
+ 'fr-MA': 'EUR',
401
+ 'fr-MC': 'EUR',
402
+ 'fr-MF': 'EUR',
403
+ 'fr-MG': 'EUR',
404
+ 'fr-ML': 'EUR',
405
+ 'fr-MQ': 'EUR',
406
+ 'fr-MR': 'EUR',
407
+ 'fr-MU': 'EUR',
408
+ 'fr-NC': 'EUR',
409
+ 'fr-NE': 'EUR',
410
+ 'fr-PF': 'EUR',
411
+ 'fr-PM': 'EUR',
412
+ 'fr-RE': 'EUR',
413
+ 'fr-RW': 'EUR',
414
+ 'fr-SC': 'EUR',
415
+ 'fr-SN': 'EUR',
416
+ 'fr-SY': 'EUR',
417
+ 'fr-TD': 'EUR',
418
+ 'fr-TF': 'EUR',
419
+ 'fr-TG': 'EUR',
420
+ 'fr-TN': 'EUR',
421
+ 'fr-US': 'EUR',
422
+ 'fr-VU': 'EUR',
423
+ 'fr-WF': 'EUR',
424
+ 'fr-YT': 'EUR',
425
+ 'fy-NL': 'EUR',
426
+ 'ga-GB': 'EUR',
427
+ 'ga-IE': 'EUR',
428
+ 'gd-GB': 'GBP',
429
+ 'gl-ES': 'EUR',
430
+ 'gl-PT': 'EUR',
431
+ 'gn-AR': 'EUR',
432
+ 'gn-BO': 'EUR',
433
+ 'gn-PY': 'EUR',
434
+ 'gu-IN': 'INR',
435
+ 'gu-KE': 'INR',
436
+ 'gv-IM': 'INR',
437
+ 'he-IL': 'ILS',
438
+ 'hi-FJ': 'ILS',
439
+ 'hi-IN': 'INR',
440
+ 'hi-NP': 'INR',
441
+ 'hi-UG': 'INR',
442
+ 'hi-ZA': 'INR',
443
+ 'ho-PG': 'INR',
444
+ 'hr-AT': 'INR',
445
+ 'hr-BA': 'INR',
446
+ 'hr-DE': 'INR',
447
+ 'hr-HR': 'HRK',
448
+ 'hr-HU': 'HRK',
449
+ 'hr-IT': 'HRK',
450
+ 'ht-HT': 'HTG',
451
+ 'hu-AT': 'HTG',
452
+ 'hu-HU': 'HUF',
453
+ 'hu-IL': 'HUF',
454
+ 'hu-RO': 'HUF',
455
+ 'hu-RS': 'HUF',
456
+ 'hu-SI': 'HUF',
457
+ 'hu-SK': 'HUF',
458
+ 'hu-UA': 'HUF',
459
+ 'hy-AM': 'AMD',
460
+ 'hy-CY': 'AMD',
461
+ 'hy-GE': 'AMD',
462
+ 'hy-IR': 'AMD',
463
+ 'hy-LB': 'AMD',
464
+ 'hy-SY': 'AMD',
465
+ 'hy-TR': 'AMD',
466
+ 'ia-SE': 'AMD',
467
+ 'id-ID': 'IDR',
468
+ 'id-NL': 'IDR',
469
+ 'ig-NG': 'NGN',
470
+ 'ii-CN': 'NGN',
471
+ 'ik-US': 'NGN',
472
+ 'is-IS': 'ISK',
473
+ 'it-AU': 'ISK',
474
+ 'it-BR': 'ISK',
475
+ 'it-CA': 'ISK',
476
+ 'it-CH': 'CHF',
477
+ 'it-DE': 'CHF',
478
+ 'it-FR': 'CHF',
479
+ 'it-GB': 'CHF',
480
+ 'it-HR': 'CHF',
481
+ 'it-IT': 'EUR',
482
+ 'it-SI': 'EUR',
483
+ 'it-SM': 'EUR',
484
+ 'it-US': 'EUR',
485
+ 'it-VA': 'EUR',
486
+ 'iu-GL': 'EUR',
487
+ 'ja-BR': 'EUR',
488
+ 'ja-JP': 'JPY',
489
+ 'jv-ID': 'JPY',
490
+ 'jv-MY': 'JPY',
491
+ 'ka-GE': 'GEL',
492
+ 'ka-IR': 'GEL',
493
+ 'ka-TR': 'GEL',
494
+ 'kg-CD': 'GEL',
495
+ 'ki-KE': 'GEL',
496
+ 'kj-NA': 'GEL',
497
+ 'kl-DK': 'GEL',
498
+ 'kl-GL': 'DKK',
499
+ 'km-KH': 'KHR',
500
+ 'kn-IN': 'INR',
501
+ 'ko-BR': 'INR',
502
+ 'ko-CN': 'INR',
503
+ 'ko-JP': 'INR',
504
+ 'ko-KP': 'INR',
505
+ 'ko-KR': 'KRW',
506
+ 'ko-US': 'KRW',
507
+ 'ks-GB': 'KRW',
508
+ 'ks-IN': 'INR',
509
+ 'ks-PK': 'INR',
510
+ 'ku-TR': 'TRY',
511
+ 'kw-GB': 'GBP',
512
+ 'la-VA': 'GBP',
513
+ 'lb-LU': 'GBP',
514
+ 'lg-UG': 'UGX',
515
+ 'li-NL': 'EUR',
516
+ 'ln-CD': 'EUR',
517
+ 'ln-CG': 'EUR',
518
+ 'lo-LA': 'LAK',
519
+ 'lt-LT': 'LTL',
520
+ 'lu-CD': 'LTL',
521
+ 'lv-LV': 'LVL',
522
+ 'mg-MG': 'MGA',
523
+ 'mh-MH': 'MGA',
524
+ 'mi-NZ': 'NZD',
525
+ 'mk-AL': 'NZD',
526
+ 'mk-GR': 'NZD',
527
+ 'mk-MK': 'MKD',
528
+ 'ml-AE': 'MKD',
529
+ 'ml-BH': 'MKD',
530
+ 'ml-GB': 'MKD',
531
+ 'ml-IL': 'MKD',
532
+ 'ml-IN': 'INR',
533
+ 'ml-MY': 'INR',
534
+ 'ml-QA': 'INR',
535
+ 'ml-SG': 'INR',
536
+ 'mr-IN': 'INR',
537
+ 'ms-BN': 'INR',
538
+ 'ms-CC': 'INR',
539
+ 'ms-ID': 'INR',
540
+ 'ms-MY': 'MYR',
541
+ 'ms-SG': 'MYR',
542
+ 'mt-MT': 'EUR',
543
+ 'my-BD': 'EUR',
544
+ 'my-MM': 'MMK',
545
+ 'na-NR': 'MMK',
546
+ 'nb-NO': 'NOK',
547
+ 'nb-SJ': 'NOK',
548
+ 'nd-ZW': 'NOK',
549
+ 'ne-BT': 'NOK',
550
+ 'ne-IN': 'NOK',
551
+ 'ne-NP': 'INR',
552
+ 'ng-NA': 'INR',
553
+ 'nl-AW': 'AWG',
554
+ 'nl-BE': 'EUR',
555
+ 'nl-DE': 'EUR',
556
+ 'nl-FR': 'EUR',
557
+ 'nl-NL': 'EUR',
558
+ 'nl-SR': 'EUR',
559
+ 'nn-NO': 'NOK',
560
+ 'nr-ZA': 'ZAR',
561
+ 'nv-US': 'ZAR',
562
+ 'ny-MW': 'ZAR',
563
+ 'ny-MZ': 'ZAR',
564
+ 'ny-ZM': 'ZAR',
565
+ 'ny-ZW': 'ZAR',
566
+ 'oc-FR': 'EUR',
567
+ 'om-ET': 'ETB',
568
+ 'om-KE': 'KES',
569
+ 'om-SO': 'KES',
570
+ 'or-IN': 'INR',
571
+ 'os-GE': 'INR',
572
+ 'pa-IN': 'INR',
573
+ 'pl-CZ': 'INR',
574
+ 'pl-DE': 'INR',
575
+ 'pl-IL': 'INR',
576
+ 'pl-PL': 'PLN',
577
+ 'pl-RO': 'PLN',
578
+ 'pl-SK': 'PLN',
579
+ 'pl-UA': 'PLN',
580
+ 'ps-AE': 'PLN',
581
+ 'ps-AF': 'AFN',
582
+ 'ps-IR': 'AFN',
583
+ 'ps-PK': 'AFN',
584
+ 'pt-AG': 'AFN',
585
+ 'pt-AO': 'AFN',
586
+ 'pt-BR': 'BRL',
587
+ 'pt-CV': 'BRL',
588
+ 'pt-FR': 'BRL',
589
+ 'pt-GW': 'BRL',
590
+ 'pt-MO': 'BRL',
591
+ 'pt-MZ': 'BRL',
592
+ 'pt-PT': 'EUR',
593
+ 'pt-ST': 'EUR',
594
+ 'pt-TL': 'EUR',
595
+ 'qu-BO': 'EUR',
596
+ 'qu-PE': 'EUR',
597
+ 'rm-CH': 'EUR',
598
+ 'rn-BI': 'EUR',
599
+ 'ro-HU': 'EUR',
600
+ 'ro-IL': 'EUR',
601
+ 'ro-MD': 'EUR',
602
+ 'ro-RO': 'RON',
603
+ 'ro-RS': 'RON',
604
+ 'ro-UA': 'RON',
605
+ 'ru-BY': 'RON',
606
+ 'ru-CN': 'RON',
607
+ 'ru-DE': 'RON',
608
+ 'ru-EE': 'RON',
609
+ 'ru-FI': 'RON',
610
+ 'ru-GE': 'RON',
611
+ 'ru-IL': 'RON',
612
+ 'ru-KG': 'RON',
613
+ 'ru-KZ': 'RON',
614
+ 'ru-LT': 'RON',
615
+ 'ru-LV': 'RON',
616
+ 'ru-MD': 'RON',
617
+ 'ru-MN': 'RON',
618
+ 'ru-RU': 'RUB',
619
+ 'ru-SJ': 'RUB',
620
+ 'ru-TM': 'RUB',
621
+ 'ru-UA': 'UAH',
622
+ 'ru-US': 'UAH',
623
+ 'ru-UZ': 'UAH',
624
+ 'rw-CD': 'UAH',
625
+ 'rw-RW': 'RWF',
626
+ 'rw-UG': 'RWF',
627
+ 'sa-IN': 'INR',
628
+ 'se-FI': 'INR',
629
+ 'se-NO': 'NOK',
630
+ 'se-SE': 'NOK',
631
+ 'sg-CF': 'NOK',
632
+ 'si-LK': 'LKR',
633
+ 'sk-HU': 'LKR',
634
+ 'sk-RS': 'LKR',
635
+ 'sk-SK': 'EUR',
636
+ 'sl-AT': 'EUR',
637
+ 'sl-HU': 'EUR',
638
+ 'sl-IT': 'EUR',
639
+ 'sl-SI': 'EUR',
640
+ 'sm-AS': 'EUR',
641
+ 'sm-WS': 'EUR',
642
+ 'sn-ZW': 'EUR',
643
+ 'so-DJ': 'DJF',
644
+ 'so-ET': 'ETB',
645
+ 'so-KE': 'ETB',
646
+ 'so-SO': 'SOS',
647
+ 'sq-AL': 'ALL',
648
+ 'sq-GR': 'ALL',
649
+ 'sq-ME': 'ALL',
650
+ 'sq-MK': 'MKD',
651
+ 'sq-RS': 'MKD',
652
+ 'sq-TR': 'MKD',
653
+ 'sr-RS': 'RSD',
654
+ 'ss-LS': 'RSD',
655
+ 'ss-SZ': 'RSD',
656
+ 'ss-ZA': 'ZAR',
657
+ 'st-LS': 'ZAR',
658
+ 'st-ZA': 'ZAR',
659
+ 'su-ID': 'ZAR',
660
+ 'sv-AX': 'ZAR',
661
+ 'sv-FI': 'EUR',
662
+ 'sv-SE': 'SEK',
663
+ 'sw-BI': 'SEK',
664
+ 'sw-CD': 'SEK',
665
+ 'sw-KE': 'SEK',
666
+ 'sw-MZ': 'SEK',
667
+ 'sw-SO': 'SEK',
668
+ 'sw-TZ': 'SEK',
669
+ 'sw-UG': 'SEK',
670
+ 'sw-YT': 'SEK',
671
+ 'sw-ZA': 'SEK',
672
+ 'ta-IN': 'INR',
673
+ 'ta-LK': 'INR',
674
+ 'ta-MU': 'INR',
675
+ 'ta-MY': 'INR',
676
+ 'ta-RE': 'INR',
677
+ 'ta-SG': 'INR',
678
+ 'te-IN': 'INR',
679
+ 'th-TH': 'THB',
680
+ 'ti-ER': 'ERN',
681
+ 'ti-ET': 'ETB',
682
+ 'ti-IL': 'ETB',
683
+ 'tk-AF': 'ETB',
684
+ 'tk-IR': 'ETB',
685
+ 'tk-TM': 'TMM',
686
+ 'tl-PH': 'PHP',
687
+ 'tl-US': 'PHP',
688
+ 'tn-BW': 'PHP',
689
+ 'tn-NA': 'PHP',
690
+ 'tn-ZA': 'ZAR',
691
+ 'tn-ZW': 'ZAR',
692
+ 'to-TO': 'ZAR',
693
+ 'tr-BG': 'ZAR',
694
+ 'tr-CY': 'TRY',
695
+ 'tr-DE': 'TRY',
696
+ 'tr-GR': 'TRY',
697
+ 'tr-MK': 'TRY',
698
+ 'tr-NL': 'TRY',
699
+ 'tr-RO': 'TRY',
700
+ 'tr-TR': 'TRY',
701
+ 'tr-UA': 'TRY',
702
+ 'tr-UZ': 'TRY',
703
+ 'ts-MZ': 'TRY',
704
+ 'ts-SZ': 'TRY',
705
+ 'ts-ZA': 'ZAR',
706
+ 'tt-RU': 'RUB',
707
+ 'ty-PF': 'RUB',
708
+ 'uk-PL': 'RUB',
709
+ 'uk-SK': 'RUB',
710
+ 'uk-UA': 'UAH',
711
+ 'ur-IN': 'UAH',
712
+ 'ur-MU': 'UAH',
713
+ 'ur-PK': 'PKR',
714
+ 've-ZA': 'ZAR',
715
+ 've-ZW': 'ZAR',
716
+ 'vi-CN': 'ZAR',
717
+ 'vi-US': 'ZAR',
718
+ 'vi-VN': 'VND',
719
+ 'wa-BE': 'EUR',
720
+ 'xh-LS': 'EUR',
721
+ 'xh-ZA': 'ZAR',
722
+ 'yi-UA': 'ZAR',
723
+ 'yo-BJ': 'ZAR',
724
+ 'yo-NG': 'NGN',
725
+ 'za-CN': 'NGN',
726
+ 'zh-CN': 'CNY',
727
+ 'zh-HK': 'HKD',
728
+ 'zh-TW': 'TWD',
729
+ 'zu-LS': 'TWD',
730
+ 'zu-MW': 'TWD',
731
+ 'zu-MZ': 'TWD',
732
+ 'zu-SZ': 'TWD',
733
+ 'zu-ZA': 'ZAR',
734
+ };
735
+
736
+ const defaultConfig = {
737
+ localeConfig: {
738
+ global: {},
739
+ localeBased: {},
740
+ },
741
+ defaultLocale: 'en-US',
742
+ defaultCurrency: 'USD',
743
+ localeToCurrencyMapping: LOCALE_CURRENCY,
744
+ langToLocaleMapping: {},
745
+ };
746
+ const TRANSLOCO_LOCALE_DEFAULT_LOCALE = new InjectionToken('TRANSLOCO_LOCALE_DEFAULT_LOCALE');
747
+ const TRANSLOCO_LOCALE_DEFAULT_CURRENCY = new InjectionToken('TRANSLOCO_LOCALE_DEFAULT_CURRENCY');
748
+ const TRANSLOCO_LOCALE_LANG_MAPPING = new InjectionToken('TRANSLOCO_LOCALE_LANG_MAPPING');
749
+ const TRANSLOCO_LOCALE_CONFIG = new InjectionToken('TRANSLOCO_LOCALE_CONFIG');
750
+ const TRANSLOCO_LOCALE_CURRENCY_MAPPING = new InjectionToken('TRANSLOCO_LOCALE_CURRENCY_MAPPING');
751
+
752
+ const TRANSLOCO_DATE_TRANSFORMER = new InjectionToken('TRANSLOCO_DATE_TRANSFORMER');
753
+ const TRANSLOCO_NUMBER_TRANSFORMER = new InjectionToken('TRANSLOCO_NUMBER_TRANSFORMER');
754
+ class DefaultDateTransformer {
755
+ transform(date, locale, options) {
756
+ return localizeDate(date, locale, options);
757
+ }
758
+ }
759
+ class DefaultNumberTransformer {
760
+ transform(value, type, locale, options) {
761
+ return localizeNumber(value, locale, { ...options, style: type });
762
+ }
763
+ }
764
+
765
+ class TranslocoLocaleService {
766
+ translocoService = inject(TranslocoService);
767
+ langLocaleMapping = inject(TRANSLOCO_LOCALE_LANG_MAPPING);
768
+ defaultLocale = inject(TRANSLOCO_LOCALE_DEFAULT_LOCALE);
769
+ defaultCurrency = inject(TRANSLOCO_LOCALE_DEFAULT_CURRENCY);
770
+ localeCurrencyMapping = inject(TRANSLOCO_LOCALE_CURRENCY_MAPPING);
771
+ numberTransformer = inject(TRANSLOCO_NUMBER_TRANSFORMER);
772
+ dateTransformer = inject(TRANSLOCO_DATE_TRANSFORMER);
773
+ localeConfig = inject(TRANSLOCO_LOCALE_CONFIG);
774
+ _locale = this.defaultLocale || this.toLocale(this.translocoService.getActiveLang());
775
+ locale = new BehaviorSubject(this._locale);
776
+ subscription = this.translocoService.langChanges$
777
+ .pipe(map((lang) => this.toLocale(lang)), filter(Boolean))
778
+ .subscribe((locale) => this.setLocale(locale));
779
+ localeChanges$ = this.locale.asObservable().pipe(distinctUntilChanged());
780
+ getLocale() {
781
+ return this._locale;
782
+ }
783
+ setLocale(locale) {
784
+ if (!isLocaleFormat(locale)) {
785
+ console.error(`${locale} isn't a valid locale format`);
786
+ return;
787
+ }
788
+ this.locale.next(locale);
789
+ this._locale = locale;
790
+ }
791
+ /**
792
+ * Get the currency symbol for the currently set locale.
793
+ */
794
+ getCurrencySymbol(locale = this.getLocale()) {
795
+ const currency = this.localeCurrencyMapping[locale];
796
+ const numberFormat = new Intl.NumberFormat(locale, {
797
+ style: 'currency',
798
+ currencyDisplay: 'symbol',
799
+ currency,
800
+ minimumFractionDigits: 0,
801
+ maximumFractionDigits: 0,
802
+ });
803
+ const pivot = 0;
804
+ return numberFormat
805
+ .format(pivot)
806
+ .split(pivot.toString())
807
+ .map((element) => element.trim())
808
+ .find((element) => !!element);
809
+ }
810
+ /**
811
+ * Transform a date into the locale's date format.
812
+ *
813
+ * The date expression: a `Date` object, a number
814
+ * (milliseconds since UTC epoch), or an ISO string (https://www.w3.org/TR/NOTE-datetime).
815
+ *
816
+ * @example
817
+ *
818
+ * localizeDate(new Date(2019, 9, 7, 12, 0, 0)) // 10/7/2019
819
+ * localizeDate(date, 'en-US', { dateStyle: 'medium', timeStyle: 'medium' }) // Sep 10, 2019, 10:46:12 PM
820
+ * localizeDate(date) 'en-US', { timeZone: 'UTC', timeStyle: 'full' } // 7:40:32 PM Coordinated Universal Time
821
+ * localizeDate(1, 'en-US', { dateStyle: 'medium' }) // Jan 1, 1970
822
+ * localizeDate('2019-02-08', 'en-US', { dateStyle: 'medium' }) // Feb 8, 2019
823
+ */
824
+ localizeDate(date, locale = this.getLocale(), options = {}) {
825
+ const resolved = options ?? getDefaultOptions(locale, 'date', this.localeConfig);
826
+ return this.dateTransformer.transform(toDate(date), locale, resolved);
827
+ }
828
+ /**
829
+ * Transform a number into the locale's number format according to the number type.
830
+ *
831
+ * localizeNumber(1234567890, 'decimal') // 1,234,567,890
832
+ * localizeNumber(0.5, 'percent') // 50%
833
+ * localizeNumber(1000, 'currency') // $1,000.00
834
+ */
835
+ localizeNumber(value, style, locale = this.getLocale(), options) {
836
+ let resolved = options ?? getDefaultOptions(locale, style, this.localeConfig);
837
+ if (style === 'currency') {
838
+ resolved = {
839
+ ...resolved,
840
+ currency: resolved.currency || this._resolveCurrencyCode(locale),
841
+ };
842
+ }
843
+ return this.numberTransformer.transform(value, style, locale, resolved);
844
+ }
845
+ /**
846
+ * @internal
847
+ */
848
+ _resolveCurrencyCode(locale = this.getLocale()) {
849
+ return this.localeCurrencyMapping[locale] || this.defaultCurrency;
850
+ }
851
+ ngOnDestroy() {
852
+ this.subscription?.unsubscribe();
853
+ // Caretaker note: it's important to clean up references to subscriptions since they save the `next`
854
+ // callback within its `destination` property, preventing classes from being GC'd.
855
+ this.subscription = null;
856
+ }
857
+ toLocale(val) {
858
+ if (this.langLocaleMapping[val]) {
859
+ return this.langLocaleMapping[val];
860
+ }
861
+ if (isLocaleFormat(val)) {
862
+ return val;
863
+ }
864
+ return '';
865
+ }
866
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
867
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleService, providedIn: 'root' });
868
+ }
869
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleService, decorators: [{
870
+ type: Injectable,
871
+ args: [{
872
+ providedIn: 'root',
873
+ }]
874
+ }] });
875
+
876
+ class BaseLocalePipe {
877
+ localeService = inject(TranslocoLocaleService);
878
+ cdr = inject(ChangeDetectorRef);
879
+ localeChangeSub = this.localeService.localeChanges$.subscribe(() => this.cdr.markForCheck());
880
+ getLocale(locale) {
881
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
882
+ return locale || this.localeService.getLocale();
883
+ }
884
+ ngOnDestroy() {
885
+ this.localeChangeSub?.unsubscribe();
886
+ // Caretaker note: it's important to clean up references to subscriptions since they save the `next`
887
+ // callback within its `destination` property, preventing classes from being GC'd.
888
+ this.localeChangeSub = null;
889
+ }
890
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BaseLocalePipe, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
891
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BaseLocalePipe });
892
+ }
893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: BaseLocalePipe, decorators: [{
894
+ type: Injectable
895
+ }] });
896
+
897
+ class TranslocoCurrencyPipe extends BaseLocalePipe {
898
+ localeConfig = inject(TRANSLOCO_LOCALE_CONFIG);
899
+ /**
900
+ * Transform a given number into the locale's currency format.
901
+ *
902
+ * @example
903
+ *
904
+ * 1000000 | translocoCurrency: 'symbol' : {} : USD // $1,000,000.00
905
+ * 1000000 | translocoCurrency: 'name' : {} : USD // 1,000,000.00 US dollars
906
+ * 1000000 | translocoCurrency: 'symbol' : {minimumFractionDigits: 0 } : USD // $1,000,000
907
+ * 1000000 | translocoCurrency: 'symbol' : {minimumFractionDigits: 0 } : CAD // CA$1,000,000
908
+ * 1000000 | translocoCurrency: 'narrowSymbol' : {minimumFractionDigits: 0 } : CAD // $1,000,000
909
+ *
910
+ */
911
+ transform(value, display = 'symbol', numberFormatOptions = {}, currencyCode, locale) {
912
+ if (isNil(value))
913
+ return '';
914
+ locale = this.getLocale(locale);
915
+ const options = {
916
+ ...getDefaultOptions(locale, 'currency', this.localeConfig),
917
+ ...numberFormatOptions,
918
+ currencyDisplay: display,
919
+ currency: currencyCode || this.localeService._resolveCurrencyCode(),
920
+ };
921
+ return this.localeService.localizeNumber(value, 'currency', locale, options);
922
+ }
923
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoCurrencyPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
924
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: TranslocoCurrencyPipe, isStandalone: true, name: "translocoCurrency", pure: false });
925
+ }
926
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoCurrencyPipe, decorators: [{
927
+ type: Pipe,
928
+ args: [{
929
+ name: 'translocoCurrency',
930
+ pure: false,
931
+ standalone: true,
932
+ }]
933
+ }] });
934
+
935
+ class TranslocoDatePipe extends BaseLocalePipe {
936
+ localeConfig = inject(TRANSLOCO_LOCALE_CONFIG);
937
+ /**
938
+ * Transform a date into the locale's date format.
939
+ *
940
+ * The date expression: a `Date` object, a number
941
+ * (milliseconds since UTC epoch), or an ISO string (https://www.w3.org/TR/NOTE-datetime).
942
+ *
943
+ * @example
944
+ *
945
+ * date | translocoDate: {} : en-US // 9/10/2019
946
+ * date | translocoDate: { dateStyle: 'medium', timeStyle: 'medium' } : en-US // Sep 10, 2019, 10:46:12 PM
947
+ * date | translocoDate: { timeZone: 'UTC', timeStyle: 'full' } : en-US // 7:40:32 PM Coordinated Universal Time
948
+ * 1 | translocoDate: { dateStyle: 'medium' } // Jan 1, 1970
949
+ * '2019-02-08' | translocoDate: { dateStyle: 'medium' } // Feb 8, 2019
950
+ */
951
+ transform(date, options = {}, locale) {
952
+ if (isNil(date))
953
+ return '';
954
+ locale = this.getLocale(locale);
955
+ return this.localeService.localizeDate(date, locale, {
956
+ ...getDefaultOptions(locale, 'date', this.localeConfig),
957
+ ...options,
958
+ });
959
+ }
960
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
961
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDatePipe, isStandalone: true, name: "translocoDate", pure: false });
962
+ }
963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDatePipe, decorators: [{
964
+ type: Pipe,
965
+ args: [{
966
+ name: 'translocoDate',
967
+ pure: false,
968
+ standalone: true,
969
+ }]
970
+ }] });
971
+
972
+ class TranslocoDecimalPipe extends BaseLocalePipe {
973
+ localeConfig = inject(TRANSLOCO_LOCALE_CONFIG);
974
+ /**
975
+ * Transform a given number into the locale's currency format.
976
+ *
977
+ * @example
978
+ *
979
+ * 1234567890 | translocoDecimal: {} : en-US // 1,234,567,890
980
+ * 1234567890 | translocoDecimal: {useGrouping: false}: en-US // 1234567890
981
+ *
982
+ */
983
+ transform(value, numberFormatOptions = {}, locale) {
984
+ if (isNil(value))
985
+ return '';
986
+ locale = this.getLocale(locale);
987
+ const options = {
988
+ ...getDefaultOptions(locale, 'decimal', this.localeConfig),
989
+ ...numberFormatOptions,
990
+ };
991
+ return this.localeService.localizeNumber(value, 'decimal', locale, options);
992
+ }
993
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDecimalPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
994
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDecimalPipe, isStandalone: true, name: "translocoDecimal", pure: false });
995
+ }
996
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoDecimalPipe, decorators: [{
997
+ type: Pipe,
998
+ args: [{
999
+ name: 'translocoDecimal',
1000
+ pure: false,
1001
+ standalone: true,
1002
+ }]
1003
+ }] });
1004
+
1005
+ class TranslocoPercentPipe extends BaseLocalePipe {
1006
+ localeConfig = inject(TRANSLOCO_LOCALE_CONFIG);
1007
+ /**
1008
+ * Transform a given number into the locale's currency format.
1009
+ *
1010
+ * @example
1011
+ *
1012
+ * 1 | translocoPercent : {} : en-US // 100%
1013
+ * "1" | translocoPercent : {} : en-US // 100%
1014
+ *
1015
+ */
1016
+ transform(value, numberFormatOptions = {}, locale) {
1017
+ if (isNil(value))
1018
+ return '';
1019
+ locale = this.getLocale(locale);
1020
+ const options = {
1021
+ ...getDefaultOptions(locale, 'percent', this.localeConfig),
1022
+ ...numberFormatOptions,
1023
+ };
1024
+ return this.localeService.localizeNumber(value, 'percent', locale, options);
1025
+ }
1026
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoPercentPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe });
1027
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: TranslocoPercentPipe, isStandalone: true, name: "translocoPercent", pure: false });
1028
+ }
1029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoPercentPipe, decorators: [{
1030
+ type: Pipe,
1031
+ args: [{
1032
+ name: 'translocoPercent',
1033
+ pure: false,
1034
+ standalone: true,
1035
+ }]
1036
+ }] });
1037
+
1038
+ const decl = [
1039
+ TranslocoCurrencyPipe,
1040
+ TranslocoDatePipe,
1041
+ TranslocoDecimalPipe,
1042
+ TranslocoPercentPipe,
1043
+ ];
1044
+ class TranslocoLocaleModule {
1045
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1046
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleModule, imports: [TranslocoCurrencyPipe,
1047
+ TranslocoDatePipe,
1048
+ TranslocoDecimalPipe,
1049
+ TranslocoPercentPipe], exports: [TranslocoCurrencyPipe,
1050
+ TranslocoDatePipe,
1051
+ TranslocoDecimalPipe,
1052
+ TranslocoPercentPipe] });
1053
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleModule });
1054
+ }
1055
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TranslocoLocaleModule, decorators: [{
1056
+ type: NgModule,
1057
+ args: [{
1058
+ imports: decl,
1059
+ exports: decl,
1060
+ }]
1061
+ }] });
1062
+
1063
+ function provideTranslocoLocale(config) {
1064
+ const merged = {
1065
+ ...defaultConfig,
1066
+ ...config,
1067
+ };
1068
+ return [
1069
+ provideTranslocoLocaleConfig(merged.localeConfig),
1070
+ provideTranslocoDefaultLocale(merged.defaultLocale),
1071
+ provideTranslocoDefaultCurrency(merged.defaultCurrency),
1072
+ provideTranslocoLocaleLangMapping(merged.langToLocaleMapping),
1073
+ provideTranslocoLocaleCurrencyMapping(merged.localeToCurrencyMapping),
1074
+ provideTranslocoDateTransformer(DefaultDateTransformer),
1075
+ provideTranslocoNumberTransformer(DefaultNumberTransformer),
1076
+ ];
1077
+ }
1078
+ function provideTranslocoLocaleConfig(config) {
1079
+ return makeEnvironmentProviders([
1080
+ {
1081
+ provide: TRANSLOCO_LOCALE_CONFIG,
1082
+ useValue: config,
1083
+ },
1084
+ ]);
1085
+ }
1086
+ function provideTranslocoLocaleLangMapping(langToLocale) {
1087
+ return makeEnvironmentProviders([
1088
+ {
1089
+ provide: TRANSLOCO_LOCALE_LANG_MAPPING,
1090
+ useValue: langToLocale,
1091
+ },
1092
+ ]);
1093
+ }
1094
+ function provideTranslocoLocaleCurrencyMapping(localeToCurrency) {
1095
+ return makeEnvironmentProviders([
1096
+ {
1097
+ provide: TRANSLOCO_LOCALE_CURRENCY_MAPPING,
1098
+ useValue: localeToCurrency,
1099
+ },
1100
+ ]);
1101
+ }
1102
+ function provideTranslocoDefaultLocale(defaultLocale) {
1103
+ return makeEnvironmentProviders([
1104
+ {
1105
+ provide: TRANSLOCO_LOCALE_DEFAULT_LOCALE,
1106
+ useValue: defaultLocale,
1107
+ },
1108
+ ]);
1109
+ }
1110
+ function provideTranslocoDefaultCurrency(defaultCurrency) {
1111
+ return makeEnvironmentProviders([
1112
+ {
1113
+ provide: TRANSLOCO_LOCALE_DEFAULT_CURRENCY,
1114
+ useValue: defaultCurrency,
1115
+ },
1116
+ ]);
1117
+ }
1118
+ function provideTranslocoDateTransformer(transformer) {
1119
+ return makeEnvironmentProviders([
1120
+ {
1121
+ provide: TRANSLOCO_DATE_TRANSFORMER,
1122
+ useClass: transformer,
1123
+ },
1124
+ ]);
1125
+ }
1126
+ function provideTranslocoNumberTransformer(transformer) {
1127
+ return makeEnvironmentProviders([
1128
+ {
1129
+ provide: TRANSLOCO_NUMBER_TRANSFORMER,
1130
+ useClass: transformer,
1131
+ },
1132
+ ]);
1133
+ }
1134
+
1135
+ /**
1136
+ * Generated bundle index. Do not edit.
1137
+ */
1138
+
1139
+ export { BaseLocalePipe, DefaultDateTransformer, DefaultNumberTransformer, TRANSLOCO_DATE_TRANSFORMER, TRANSLOCO_LOCALE_CONFIG, TRANSLOCO_LOCALE_CURRENCY_MAPPING, TRANSLOCO_LOCALE_DEFAULT_CURRENCY, TRANSLOCO_LOCALE_DEFAULT_LOCALE, TRANSLOCO_LOCALE_LANG_MAPPING, TRANSLOCO_NUMBER_TRANSFORMER, TranslocoCurrencyPipe, TranslocoDatePipe, TranslocoDecimalPipe, TranslocoLocaleModule, TranslocoLocaleService, TranslocoPercentPipe, provideTranslocoDateTransformer, provideTranslocoDefaultCurrency, provideTranslocoDefaultLocale, provideTranslocoLocale, provideTranslocoLocaleConfig, provideTranslocoLocaleCurrencyMapping, provideTranslocoLocaleLangMapping, provideTranslocoNumberTransformer };
1140
+ //# sourceMappingURL=jsverse-transloco-locale.mjs.map