@lingui/core 4.0.0-next.0 → 4.0.0-next.2
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.
- package/build/cjs/index.js +85 -105
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +85 -105
- package/build/esm/index.js.map +1 -1
- package/build/index.d.ts +27 -5
- package/package.json +3 -4
package/build/cjs/index.js
CHANGED
|
@@ -6,134 +6,105 @@ const isString = s => typeof s === "string";
|
|
|
6
6
|
const isFunction = f => typeof f === "function";
|
|
7
7
|
|
|
8
8
|
/** Memoized cache */
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
let memoize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
14
|
-
return value => {
|
|
15
|
-
if (isString(value)) value = new Date(value);
|
|
16
|
-
if (memoize) {
|
|
17
|
-
const key = cacheKey(locales, format);
|
|
18
|
-
const cachedFormatter = dateFormats.get(key);
|
|
19
|
-
if (cachedFormatter) {
|
|
20
|
-
return cachedFormatter.format(value);
|
|
21
|
-
}
|
|
22
|
-
const formatter = new Intl.DateTimeFormat(locales, format);
|
|
23
|
-
dateFormats.set(key, formatter);
|
|
24
|
-
return formatter.format(value);
|
|
25
|
-
}
|
|
26
|
-
const formatter = new Intl.DateTimeFormat(locales, format);
|
|
27
|
-
return formatter.format(value);
|
|
28
|
-
};
|
|
9
|
+
const cache = new Map();
|
|
10
|
+
function normalizeLocales(locales) {
|
|
11
|
+
const out = Array.isArray(locales) ? locales : [locales];
|
|
12
|
+
return [...out, "en"];
|
|
29
13
|
}
|
|
30
|
-
function
|
|
31
|
-
let format = arguments.length >
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const key = cacheKey(locales, format);
|
|
36
|
-
const cachedFormatter = numberFormats.get(key);
|
|
37
|
-
if (cachedFormatter) {
|
|
38
|
-
return cachedFormatter.format(value);
|
|
39
|
-
}
|
|
40
|
-
const formatter = new Intl.NumberFormat(locales, format);
|
|
41
|
-
numberFormats.set(key, formatter);
|
|
42
|
-
return formatter.format(value);
|
|
43
|
-
}
|
|
44
|
-
const formatter = new Intl.NumberFormat(locales, format);
|
|
45
|
-
return formatter.format(value);
|
|
46
|
-
};
|
|
14
|
+
function date(locales, value) {
|
|
15
|
+
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
16
|
+
const _locales = normalizeLocales(locales);
|
|
17
|
+
const formatter = getMemoized(() => cacheKey("date", _locales, format), () => new Intl.DateTimeFormat(_locales, format));
|
|
18
|
+
return formatter.format(isString(value) ? new Date(value) : value);
|
|
47
19
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
20
|
+
function number(locales, value) {
|
|
21
|
+
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
22
|
+
const _locales = normalizeLocales(locales);
|
|
23
|
+
const formatter = getMemoized(() => cacheKey("number", _locales, format), () => new Intl.NumberFormat(_locales, format));
|
|
24
|
+
return formatter.format(value);
|
|
25
|
+
}
|
|
26
|
+
function plural(locales, ordinal, value, _ref) {
|
|
27
|
+
let {
|
|
28
|
+
offset = 0,
|
|
29
|
+
...rules
|
|
30
|
+
} = _ref;
|
|
31
|
+
const _locales = normalizeLocales(locales);
|
|
32
|
+
const plurals = ordinal ? getMemoized(() => cacheKey("plural-ordinal", _locales, {}), () => new Intl.PluralRules(_locales, {
|
|
33
|
+
type: "ordinal"
|
|
34
|
+
})) : getMemoized(() => cacheKey("plural-cardinal", _locales, {}), () => new Intl.PluralRules(_locales, {
|
|
35
|
+
type: "cardinal"
|
|
36
|
+
}));
|
|
37
|
+
return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other;
|
|
38
|
+
}
|
|
39
|
+
function getMemoized(getKey, construct) {
|
|
40
|
+
const key = getKey();
|
|
41
|
+
let formatter = cache.get(key);
|
|
42
|
+
if (!formatter) {
|
|
43
|
+
formatter = construct();
|
|
44
|
+
cache.set(key, formatter);
|
|
45
|
+
}
|
|
46
|
+
return formatter;
|
|
47
|
+
}
|
|
48
|
+
function cacheKey(type, locales) {
|
|
49
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
50
|
+
const localeKey = [...locales].sort().join("-");
|
|
51
|
+
return `${type}-${localeKey}-${JSON.stringify(options)}`;
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
var formats = /*#__PURE__*/Object.freeze({
|
|
57
55
|
__proto__: null,
|
|
58
56
|
date: date,
|
|
59
|
-
number: number
|
|
57
|
+
number: number,
|
|
58
|
+
plural: plural
|
|
60
59
|
});
|
|
61
60
|
|
|
62
61
|
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
|
|
63
|
-
const
|
|
64
|
-
let
|
|
65
|
-
plurals: undefined
|
|
66
|
-
};
|
|
67
|
-
let formats = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
62
|
+
const getDefaultFormats = function (locale, locales) {
|
|
63
|
+
let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
68
64
|
locales = locales || locale;
|
|
69
|
-
const {
|
|
70
|
-
plurals
|
|
71
|
-
} = localeData;
|
|
72
65
|
const style = format => isString(format) ? formats[format] || {
|
|
73
66
|
style: format
|
|
74
67
|
} : format;
|
|
75
68
|
const replaceOctothorpe = (value, message) => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const numberFormat = Object.keys(formats).length ? style("number") : {};
|
|
80
|
-
const valueStr = number(locales, numberFormat)(value);
|
|
81
|
-
return norm.map(m => isString(m) ? m.replace("#", valueStr) : m);
|
|
82
|
-
};
|
|
69
|
+
const numberFormat = Object.keys(formats).length ? style("number") : {};
|
|
70
|
+
const valueStr = number(locales, value, numberFormat);
|
|
71
|
+
return message.replace("#", valueStr);
|
|
83
72
|
};
|
|
84
|
-
if (!plurals) {
|
|
85
|
-
console.error(`Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`);
|
|
86
|
-
}
|
|
87
73
|
return {
|
|
88
|
-
plural: (value,
|
|
89
|
-
|
|
90
|
-
offset = 0
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const message = rules[value] || rules[plurals === null || plurals === void 0 ? void 0 : plurals(value - offset)] || rules.other;
|
|
74
|
+
plural: (value, cases) => {
|
|
75
|
+
const {
|
|
76
|
+
offset = 0
|
|
77
|
+
} = cases;
|
|
78
|
+
const message = plural(locales, false, value, cases);
|
|
94
79
|
return replaceOctothorpe(value - offset, message);
|
|
95
80
|
},
|
|
96
|
-
selectordinal: (value,
|
|
97
|
-
|
|
98
|
-
offset = 0
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const message = rules[value] || rules[plurals === null || plurals === void 0 ? void 0 : plurals(value - offset, true)] || rules.other;
|
|
81
|
+
selectordinal: (value, cases) => {
|
|
82
|
+
const {
|
|
83
|
+
offset = 0
|
|
84
|
+
} = cases;
|
|
85
|
+
const message = plural(locales, true, value, cases);
|
|
102
86
|
return replaceOctothorpe(value - offset, message);
|
|
103
87
|
},
|
|
104
88
|
select: (value, rules) => rules[value] || rules.other,
|
|
105
|
-
number: (value, format) => number(locales, style(format))
|
|
106
|
-
date: (value, format) => date(locales, style(format))
|
|
89
|
+
number: (value, format) => number(locales, value, style(format)),
|
|
90
|
+
date: (value, format) => date(locales, value, style(format)),
|
|
107
91
|
undefined: value => value
|
|
108
92
|
};
|
|
109
93
|
};
|
|
110
94
|
|
|
111
|
-
// Params -> CTX
|
|
112
95
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* @param locale - Locale of message
|
|
117
|
-
* @param locales - Locales to be used when formatting the numbers or dates
|
|
118
|
-
* @param values - Parameters for variable interpolation
|
|
119
|
-
* @param localeData - Locale data (e.g: plurals)
|
|
120
|
-
* @param formats - Custom format styles
|
|
121
|
-
* @returns {function(string, string, any)}
|
|
96
|
+
* @param translation compiled message
|
|
97
|
+
* @param locale Locale of message
|
|
98
|
+
* @param locales Locales to be used when formatting the numbers or dates
|
|
122
99
|
*/
|
|
123
|
-
function
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const message = isFunction(formatted) ? formatted(ctx) : formatted;
|
|
129
|
-
return Array.isArray(message) ? message.join("") : message;
|
|
130
|
-
};
|
|
131
|
-
return ctx;
|
|
132
|
-
}
|
|
133
|
-
function interpolate(translation, locale, locales, localeData) {
|
|
100
|
+
function interpolate(translation, locale, locales) {
|
|
101
|
+
/**
|
|
102
|
+
* @param values - Parameters for variable interpolation
|
|
103
|
+
* @param formats - Custom format styles
|
|
104
|
+
*/
|
|
134
105
|
return function (values) {
|
|
135
106
|
let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
136
|
-
const
|
|
107
|
+
const formatters = getDefaultFormats(locale, locales, formats);
|
|
137
108
|
const formatMessage = message => {
|
|
138
109
|
if (!Array.isArray(message)) return message;
|
|
139
110
|
return message.reduce((message, token) => {
|
|
@@ -147,7 +118,7 @@ function interpolate(translation, locale, locales, localeData) {
|
|
|
147
118
|
} else {
|
|
148
119
|
interpolatedFormat = format;
|
|
149
120
|
}
|
|
150
|
-
const value =
|
|
121
|
+
const value = formatters[type](values[name], interpolatedFormat);
|
|
151
122
|
if (value == null) return message;
|
|
152
123
|
return message + value;
|
|
153
124
|
}, "");
|
|
@@ -204,6 +175,10 @@ class I18n extends EventEmitter {
|
|
|
204
175
|
get messages() {
|
|
205
176
|
return this._messages[this._locale] ?? {};
|
|
206
177
|
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @deprecated this has no effect. Please remove this from the code. Introduced in v4
|
|
181
|
+
*/
|
|
207
182
|
get localeData() {
|
|
208
183
|
return this._localeData[this._locale] ?? {};
|
|
209
184
|
}
|
|
@@ -214,6 +189,14 @@ class I18n extends EventEmitter {
|
|
|
214
189
|
Object.assign(this._localeData[locale], localeData);
|
|
215
190
|
}
|
|
216
191
|
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
195
|
+
*/
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
199
|
+
*/
|
|
217
200
|
loadLocaleData(localeOrAllData, localeData) {
|
|
218
201
|
if (localeData != null) {
|
|
219
202
|
// loadLocaleData('en', enLocaleData)
|
|
@@ -250,9 +233,6 @@ class I18n extends EventEmitter {
|
|
|
250
233
|
if (!this._messages[locale]) {
|
|
251
234
|
console.warn(`Messages for locale "${locale}" not loaded.`);
|
|
252
235
|
}
|
|
253
|
-
if (!this._localeData[locale]) {
|
|
254
|
-
console.warn(`Locale data for locale "${locale}" not loaded. Plurals won't work correctly.`);
|
|
255
|
-
}
|
|
256
236
|
}
|
|
257
237
|
this._locale = locale;
|
|
258
238
|
this._locales = locales;
|
|
@@ -292,13 +272,13 @@ class I18n extends EventEmitter {
|
|
|
292
272
|
// hack for parsing unicode values inside a string to get parsed in react native environments
|
|
293
273
|
if (isString(translation) && UNICODE_REGEX.test(translation)) return JSON.parse(`"${translation}"`);
|
|
294
274
|
if (isString(translation)) return translation;
|
|
295
|
-
return interpolate(translation, this._locale, this._locales
|
|
275
|
+
return interpolate(translation, this._locale, this._locales)(values, formats);
|
|
296
276
|
}
|
|
297
277
|
date(value, format) {
|
|
298
|
-
return date(this._locales || this._locale, format)
|
|
278
|
+
return date(this._locales || this._locale, value, format);
|
|
299
279
|
}
|
|
300
280
|
number(value, format) {
|
|
301
|
-
return number(this._locales || this._locale, format)
|
|
281
|
+
return number(this._locales || this._locale, value, format);
|
|
302
282
|
}
|
|
303
283
|
}
|
|
304
284
|
function setupI18n() {
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(locales?: string | string[], options: T = {} as T) {\n const localeKey = Array.isArray(locales) ? locales.sort().join(\"-\") : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, LocaleData, Locales, Values } from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(\n `Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`\n )\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(locale, locales, values, formats, localeData)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type { PluralCategory } from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: MissingHandler\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: MissingHandler\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst cache = new Map<string, unknown>()\n\nfunction normalizeLocales(locales: Locales): string[] {\n const out = Array.isArray(locales) ? locales : [locales]\n return [...out, \"en\"]\n}\n\nexport function date(\n locales: Locales,\n value: string | Date,\n format: Intl.DateTimeFormatOptions = {}\n): string {\n const _locales = normalizeLocales(locales)\n\n const formatter = getMemoized(\n () => cacheKey(\"date\", _locales, format),\n () => new Intl.DateTimeFormat(_locales, format)\n )\n\n return formatter.format(isString(value) ? new Date(value) : value)\n}\n\nexport function number(\n locales: Locales,\n value: number,\n format: Intl.NumberFormatOptions = {}\n): string {\n const _locales = normalizeLocales(locales)\n\n const formatter = getMemoized(\n () => cacheKey(\"number\", _locales, format),\n () => new Intl.NumberFormat(_locales, format)\n )\n\n return formatter.format(value)\n}\n\nexport function plural(\n locales: Locales,\n ordinal: boolean,\n value: number,\n { offset = 0, ...rules }\n): string {\n const _locales = normalizeLocales(locales)\n\n const plurals = ordinal\n ? getMemoized(\n () => cacheKey(\"plural-ordinal\", _locales, {}),\n () => new Intl.PluralRules(_locales, { type: \"ordinal\" })\n )\n : getMemoized(\n () => cacheKey(\"plural-cardinal\", _locales, {}),\n () => new Intl.PluralRules(_locales, { type: \"cardinal\" })\n )\n\n return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other\n}\n\nfunction getMemoized<T>(getKey: () => string, construct: () => T) {\n const key = getKey()\n\n let formatter = cache.get(key) as T\n\n if (!formatter) {\n formatter = construct()\n cache.set(key, formatter)\n }\n\n return formatter\n}\n\nfunction cacheKey(\n type: string,\n locales?: readonly string[],\n options: unknown = {}\n) {\n const localeKey = [...locales].sort().join(\"-\")\n return `${type}-${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, Locales, Values } from \"./i18n\"\nimport { date, number, plural } from \"./formats\"\nimport { isString } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst getDefaultFormats = (\n locale: string,\n locales: Locales,\n formats: Formats = {}\n) => {\n locales = locales || locale\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n\n const replaceOctothorpe = (value: number, message: string): string => {\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, value, numberFormat)\n return message.replace(\"#\", valueStr)\n }\n\n return {\n plural: (value: number, cases) => {\n const { offset = 0 } = cases\n const message = plural(locales, false, value, cases)\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, cases) => {\n const { offset = 0 } = cases\n const message = plural(locales, true, value, cases)\n\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (\n value: number,\n format: string | Intl.NumberFormatOptions\n ): string => number(locales, value, style(format)),\n\n date: (\n value: string,\n format: string | Intl.DateTimeFormatOptions\n ): string => date(locales, value, style(format)),\n\n undefined: (value: unknown) => value,\n }\n}\n\n/**\n * @param translation compiled message\n * @param locale Locale of message\n * @param locales Locales to be used when formatting the numbers or dates\n */\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales\n) {\n /**\n * @param values - Parameters for variable interpolation\n * @param formats - Custom format styles\n */\n return (values: Values, formats: Formats = {}): string => {\n const formatters = getDefaultFormats(locale, locales, formats)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = formatters[type](values[name], interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\n/**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\nexport type LocaleData = {\n plurals?: (\n n: number,\n ordinal?: boolean\n ) => ReturnType<Intl.PluralRules[\"select\"]>\n}\n\n/**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n localeData?: AllLocaleData\n missing?: MissingHandler\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: MissingHandler\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n /**\n * @deprecated this has no effect. Please remove this from the code. Introduced in v4\n */\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n public loadLocaleData(allLocaleData: AllLocaleData): void\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, value, format)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, value, format)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","cache","Map","normalizeLocales","locales","out","Array","isArray","date","value","format","_locales","formatter","getMemoized","cacheKey","Intl","DateTimeFormat","Date","number","NumberFormat","plural","ordinal","offset","rules","plurals","PluralRules","type","select","other","getKey","construct","key","get","set","options","localeKey","sort","join","JSON","stringify","UNICODE_REGEX","getDefaultFormats","locale","formats","style","replaceOctothorpe","message","numberFormat","Object","keys","length","valueStr","replace","cases","selectordinal","undefined","interpolate","translation","values","formatters","formatMessage","reduce","token","name","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","map","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","localeData","loadLocaleData","activate","_locale","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","console","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
package/build/esm/index.js
CHANGED
|
@@ -4,134 +4,105 @@ const isString = s => typeof s === "string";
|
|
|
4
4
|
const isFunction = f => typeof f === "function";
|
|
5
5
|
|
|
6
6
|
/** Memoized cache */
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
let memoize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
12
|
-
return value => {
|
|
13
|
-
if (isString(value)) value = new Date(value);
|
|
14
|
-
if (memoize) {
|
|
15
|
-
const key = cacheKey(locales, format);
|
|
16
|
-
const cachedFormatter = dateFormats.get(key);
|
|
17
|
-
if (cachedFormatter) {
|
|
18
|
-
return cachedFormatter.format(value);
|
|
19
|
-
}
|
|
20
|
-
const formatter = new Intl.DateTimeFormat(locales, format);
|
|
21
|
-
dateFormats.set(key, formatter);
|
|
22
|
-
return formatter.format(value);
|
|
23
|
-
}
|
|
24
|
-
const formatter = new Intl.DateTimeFormat(locales, format);
|
|
25
|
-
return formatter.format(value);
|
|
26
|
-
};
|
|
7
|
+
const cache = new Map();
|
|
8
|
+
function normalizeLocales(locales) {
|
|
9
|
+
const out = Array.isArray(locales) ? locales : [locales];
|
|
10
|
+
return [...out, "en"];
|
|
27
11
|
}
|
|
28
|
-
function
|
|
29
|
-
let format = arguments.length >
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const key = cacheKey(locales, format);
|
|
34
|
-
const cachedFormatter = numberFormats.get(key);
|
|
35
|
-
if (cachedFormatter) {
|
|
36
|
-
return cachedFormatter.format(value);
|
|
37
|
-
}
|
|
38
|
-
const formatter = new Intl.NumberFormat(locales, format);
|
|
39
|
-
numberFormats.set(key, formatter);
|
|
40
|
-
return formatter.format(value);
|
|
41
|
-
}
|
|
42
|
-
const formatter = new Intl.NumberFormat(locales, format);
|
|
43
|
-
return formatter.format(value);
|
|
44
|
-
};
|
|
12
|
+
function date(locales, value) {
|
|
13
|
+
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
14
|
+
const _locales = normalizeLocales(locales);
|
|
15
|
+
const formatter = getMemoized(() => cacheKey("date", _locales, format), () => new Intl.DateTimeFormat(_locales, format));
|
|
16
|
+
return formatter.format(isString(value) ? new Date(value) : value);
|
|
45
17
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
18
|
+
function number(locales, value) {
|
|
19
|
+
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
20
|
+
const _locales = normalizeLocales(locales);
|
|
21
|
+
const formatter = getMemoized(() => cacheKey("number", _locales, format), () => new Intl.NumberFormat(_locales, format));
|
|
22
|
+
return formatter.format(value);
|
|
23
|
+
}
|
|
24
|
+
function plural(locales, ordinal, value, _ref) {
|
|
25
|
+
let {
|
|
26
|
+
offset = 0,
|
|
27
|
+
...rules
|
|
28
|
+
} = _ref;
|
|
29
|
+
const _locales = normalizeLocales(locales);
|
|
30
|
+
const plurals = ordinal ? getMemoized(() => cacheKey("plural-ordinal", _locales, {}), () => new Intl.PluralRules(_locales, {
|
|
31
|
+
type: "ordinal"
|
|
32
|
+
})) : getMemoized(() => cacheKey("plural-cardinal", _locales, {}), () => new Intl.PluralRules(_locales, {
|
|
33
|
+
type: "cardinal"
|
|
34
|
+
}));
|
|
35
|
+
return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other;
|
|
36
|
+
}
|
|
37
|
+
function getMemoized(getKey, construct) {
|
|
38
|
+
const key = getKey();
|
|
39
|
+
let formatter = cache.get(key);
|
|
40
|
+
if (!formatter) {
|
|
41
|
+
formatter = construct();
|
|
42
|
+
cache.set(key, formatter);
|
|
43
|
+
}
|
|
44
|
+
return formatter;
|
|
45
|
+
}
|
|
46
|
+
function cacheKey(type, locales) {
|
|
47
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
48
|
+
const localeKey = [...locales].sort().join("-");
|
|
49
|
+
return `${type}-${localeKey}-${JSON.stringify(options)}`;
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
var formats = /*#__PURE__*/Object.freeze({
|
|
55
53
|
__proto__: null,
|
|
56
54
|
date: date,
|
|
57
|
-
number: number
|
|
55
|
+
number: number,
|
|
56
|
+
plural: plural
|
|
58
57
|
});
|
|
59
58
|
|
|
60
59
|
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
|
|
61
|
-
const
|
|
62
|
-
let
|
|
63
|
-
plurals: undefined
|
|
64
|
-
};
|
|
65
|
-
let formats = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
60
|
+
const getDefaultFormats = function (locale, locales) {
|
|
61
|
+
let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
66
62
|
locales = locales || locale;
|
|
67
|
-
const {
|
|
68
|
-
plurals
|
|
69
|
-
} = localeData;
|
|
70
63
|
const style = format => isString(format) ? formats[format] || {
|
|
71
64
|
style: format
|
|
72
65
|
} : format;
|
|
73
66
|
const replaceOctothorpe = (value, message) => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const numberFormat = Object.keys(formats).length ? style("number") : {};
|
|
78
|
-
const valueStr = number(locales, numberFormat)(value);
|
|
79
|
-
return norm.map(m => isString(m) ? m.replace("#", valueStr) : m);
|
|
80
|
-
};
|
|
67
|
+
const numberFormat = Object.keys(formats).length ? style("number") : {};
|
|
68
|
+
const valueStr = number(locales, value, numberFormat);
|
|
69
|
+
return message.replace("#", valueStr);
|
|
81
70
|
};
|
|
82
|
-
if (!plurals) {
|
|
83
|
-
console.error(`Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`);
|
|
84
|
-
}
|
|
85
71
|
return {
|
|
86
|
-
plural: (value,
|
|
87
|
-
|
|
88
|
-
offset = 0
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const message = rules[value] || rules[plurals === null || plurals === void 0 ? void 0 : plurals(value - offset)] || rules.other;
|
|
72
|
+
plural: (value, cases) => {
|
|
73
|
+
const {
|
|
74
|
+
offset = 0
|
|
75
|
+
} = cases;
|
|
76
|
+
const message = plural(locales, false, value, cases);
|
|
92
77
|
return replaceOctothorpe(value - offset, message);
|
|
93
78
|
},
|
|
94
|
-
selectordinal: (value,
|
|
95
|
-
|
|
96
|
-
offset = 0
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const message = rules[value] || rules[plurals === null || plurals === void 0 ? void 0 : plurals(value - offset, true)] || rules.other;
|
|
79
|
+
selectordinal: (value, cases) => {
|
|
80
|
+
const {
|
|
81
|
+
offset = 0
|
|
82
|
+
} = cases;
|
|
83
|
+
const message = plural(locales, true, value, cases);
|
|
100
84
|
return replaceOctothorpe(value - offset, message);
|
|
101
85
|
},
|
|
102
86
|
select: (value, rules) => rules[value] || rules.other,
|
|
103
|
-
number: (value, format) => number(locales, style(format))
|
|
104
|
-
date: (value, format) => date(locales, style(format))
|
|
87
|
+
number: (value, format) => number(locales, value, style(format)),
|
|
88
|
+
date: (value, format) => date(locales, value, style(format)),
|
|
105
89
|
undefined: value => value
|
|
106
90
|
};
|
|
107
91
|
};
|
|
108
92
|
|
|
109
|
-
// Params -> CTX
|
|
110
93
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* @param locale - Locale of message
|
|
115
|
-
* @param locales - Locales to be used when formatting the numbers or dates
|
|
116
|
-
* @param values - Parameters for variable interpolation
|
|
117
|
-
* @param localeData - Locale data (e.g: plurals)
|
|
118
|
-
* @param formats - Custom format styles
|
|
119
|
-
* @returns {function(string, string, any)}
|
|
94
|
+
* @param translation compiled message
|
|
95
|
+
* @param locale Locale of message
|
|
96
|
+
* @param locales Locales to be used when formatting the numbers or dates
|
|
120
97
|
*/
|
|
121
|
-
function
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const message = isFunction(formatted) ? formatted(ctx) : formatted;
|
|
127
|
-
return Array.isArray(message) ? message.join("") : message;
|
|
128
|
-
};
|
|
129
|
-
return ctx;
|
|
130
|
-
}
|
|
131
|
-
function interpolate(translation, locale, locales, localeData) {
|
|
98
|
+
function interpolate(translation, locale, locales) {
|
|
99
|
+
/**
|
|
100
|
+
* @param values - Parameters for variable interpolation
|
|
101
|
+
* @param formats - Custom format styles
|
|
102
|
+
*/
|
|
132
103
|
return function (values) {
|
|
133
104
|
let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
134
|
-
const
|
|
105
|
+
const formatters = getDefaultFormats(locale, locales, formats);
|
|
135
106
|
const formatMessage = message => {
|
|
136
107
|
if (!Array.isArray(message)) return message;
|
|
137
108
|
return message.reduce((message, token) => {
|
|
@@ -145,7 +116,7 @@ function interpolate(translation, locale, locales, localeData) {
|
|
|
145
116
|
} else {
|
|
146
117
|
interpolatedFormat = format;
|
|
147
118
|
}
|
|
148
|
-
const value =
|
|
119
|
+
const value = formatters[type](values[name], interpolatedFormat);
|
|
149
120
|
if (value == null) return message;
|
|
150
121
|
return message + value;
|
|
151
122
|
}, "");
|
|
@@ -202,6 +173,10 @@ class I18n extends EventEmitter {
|
|
|
202
173
|
get messages() {
|
|
203
174
|
return this._messages[this._locale] ?? {};
|
|
204
175
|
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @deprecated this has no effect. Please remove this from the code. Introduced in v4
|
|
179
|
+
*/
|
|
205
180
|
get localeData() {
|
|
206
181
|
return this._localeData[this._locale] ?? {};
|
|
207
182
|
}
|
|
@@ -212,6 +187,14 @@ class I18n extends EventEmitter {
|
|
|
212
187
|
Object.assign(this._localeData[locale], localeData);
|
|
213
188
|
}
|
|
214
189
|
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
193
|
+
*/
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
197
|
+
*/
|
|
215
198
|
loadLocaleData(localeOrAllData, localeData) {
|
|
216
199
|
if (localeData != null) {
|
|
217
200
|
// loadLocaleData('en', enLocaleData)
|
|
@@ -248,9 +231,6 @@ class I18n extends EventEmitter {
|
|
|
248
231
|
if (!this._messages[locale]) {
|
|
249
232
|
console.warn(`Messages for locale "${locale}" not loaded.`);
|
|
250
233
|
}
|
|
251
|
-
if (!this._localeData[locale]) {
|
|
252
|
-
console.warn(`Locale data for locale "${locale}" not loaded. Plurals won't work correctly.`);
|
|
253
|
-
}
|
|
254
234
|
}
|
|
255
235
|
this._locale = locale;
|
|
256
236
|
this._locales = locales;
|
|
@@ -290,13 +270,13 @@ class I18n extends EventEmitter {
|
|
|
290
270
|
// hack for parsing unicode values inside a string to get parsed in react native environments
|
|
291
271
|
if (isString(translation) && UNICODE_REGEX.test(translation)) return JSON.parse(`"${translation}"`);
|
|
292
272
|
if (isString(translation)) return translation;
|
|
293
|
-
return interpolate(translation, this._locale, this._locales
|
|
273
|
+
return interpolate(translation, this._locale, this._locales)(values, formats);
|
|
294
274
|
}
|
|
295
275
|
date(value, format) {
|
|
296
|
-
return date(this._locales || this._locale, format)
|
|
276
|
+
return date(this._locales || this._locale, value, format);
|
|
297
277
|
}
|
|
298
278
|
number(value, format) {
|
|
299
|
-
return number(this._locales || this._locale, format)
|
|
279
|
+
return number(this._locales || this._locale, value, format);
|
|
300
280
|
}
|
|
301
281
|
}
|
|
302
282
|
function setupI18n() {
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(locales?: string | string[], options: T = {} as T) {\n const localeKey = Array.isArray(locales) ? locales.sort().join(\"-\") : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, LocaleData, Locales, Values } from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(\n `Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`\n )\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message =\n rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(locale, locales, values, formats, localeData)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type { PluralCategory } from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: MissingHandler\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: MissingHandler\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst cache = new Map<string, unknown>()\n\nfunction normalizeLocales(locales: Locales): string[] {\n const out = Array.isArray(locales) ? locales : [locales]\n return [...out, \"en\"]\n}\n\nexport function date(\n locales: Locales,\n value: string | Date,\n format: Intl.DateTimeFormatOptions = {}\n): string {\n const _locales = normalizeLocales(locales)\n\n const formatter = getMemoized(\n () => cacheKey(\"date\", _locales, format),\n () => new Intl.DateTimeFormat(_locales, format)\n )\n\n return formatter.format(isString(value) ? new Date(value) : value)\n}\n\nexport function number(\n locales: Locales,\n value: number,\n format: Intl.NumberFormatOptions = {}\n): string {\n const _locales = normalizeLocales(locales)\n\n const formatter = getMemoized(\n () => cacheKey(\"number\", _locales, format),\n () => new Intl.NumberFormat(_locales, format)\n )\n\n return formatter.format(value)\n}\n\nexport function plural(\n locales: Locales,\n ordinal: boolean,\n value: number,\n { offset = 0, ...rules }\n): string {\n const _locales = normalizeLocales(locales)\n\n const plurals = ordinal\n ? getMemoized(\n () => cacheKey(\"plural-ordinal\", _locales, {}),\n () => new Intl.PluralRules(_locales, { type: \"ordinal\" })\n )\n : getMemoized(\n () => cacheKey(\"plural-cardinal\", _locales, {}),\n () => new Intl.PluralRules(_locales, { type: \"cardinal\" })\n )\n\n return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other\n}\n\nfunction getMemoized<T>(getKey: () => string, construct: () => T) {\n const key = getKey()\n\n let formatter = cache.get(key) as T\n\n if (!formatter) {\n formatter = construct()\n cache.set(key, formatter)\n }\n\n return formatter\n}\n\nfunction cacheKey(\n type: string,\n locales?: readonly string[],\n options: unknown = {}\n) {\n const localeKey = [...locales].sort().join(\"-\")\n return `${type}-${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, Locales, Values } from \"./i18n\"\nimport { date, number, plural } from \"./formats\"\nimport { isString } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst getDefaultFormats = (\n locale: string,\n locales: Locales,\n formats: Formats = {}\n) => {\n locales = locales || locale\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n\n const replaceOctothorpe = (value: number, message: string): string => {\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, value, numberFormat)\n return message.replace(\"#\", valueStr)\n }\n\n return {\n plural: (value: number, cases) => {\n const { offset = 0 } = cases\n const message = plural(locales, false, value, cases)\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, cases) => {\n const { offset = 0 } = cases\n const message = plural(locales, true, value, cases)\n\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (\n value: number,\n format: string | Intl.NumberFormatOptions\n ): string => number(locales, value, style(format)),\n\n date: (\n value: string,\n format: string | Intl.DateTimeFormatOptions\n ): string => date(locales, value, style(format)),\n\n undefined: (value: unknown) => value,\n }\n}\n\n/**\n * @param translation compiled message\n * @param locale Locale of message\n * @param locales Locales to be used when formatting the numbers or dates\n */\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales\n) {\n /**\n * @param values - Parameters for variable interpolation\n * @param formats - Custom format styles\n */\n return (values: Values, formats: Formats = {}): string => {\n const formatters = getDefaultFormats(locale, locales, formats)\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = formatters[type](values[name], interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result))\n return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\n/**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\nexport type LocaleData = {\n plurals?: (\n n: number,\n ordinal?: boolean\n ) => ReturnType<Intl.PluralRules[\"select\"]>\n}\n\n/**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [name: string, type?: string, format?: null | string | CompiledIcuChoices]\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n localeData?: AllLocaleData\n missing?: MissingHandler\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: MissingHandler\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n /**\n * @deprecated this has no effect. Please remove this from the code. Introduced in v4\n */\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n public loadLocaleData(allLocaleData: AllLocaleData): void\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, value, format)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, value, format)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","cache","Map","normalizeLocales","locales","out","Array","isArray","date","value","format","_locales","formatter","getMemoized","cacheKey","Intl","DateTimeFormat","Date","number","NumberFormat","plural","ordinal","offset","rules","plurals","PluralRules","type","select","other","getKey","construct","key","get","set","options","localeKey","sort","join","JSON","stringify","UNICODE_REGEX","getDefaultFormats","locale","formats","style","replaceOctothorpe","message","numberFormat","Object","keys","length","valueStr","replace","cases","selectordinal","undefined","interpolate","translation","values","formatters","formatMessage","reduce","token","name","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","map","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","localeData","loadLocaleData","activate","_locale","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","console","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { PluralCategory } from 'make-plural';
|
|
2
|
-
|
|
3
1
|
declare class EventEmitter<Events extends {
|
|
4
2
|
[name: string]: (...args: any[]) => any;
|
|
5
3
|
}> {
|
|
@@ -18,9 +16,15 @@ type Locale = string;
|
|
|
18
16
|
type Locales = Locale | Locale[];
|
|
19
17
|
type Formats = Record<string, Intl.DateTimeFormatOptions | Intl.NumberFormatOptions>;
|
|
20
18
|
type Values = Record<string, unknown>;
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
21
|
+
*/
|
|
21
22
|
type LocaleData = {
|
|
22
|
-
plurals?: (n: number, ordinal?: boolean) =>
|
|
23
|
+
plurals?: (n: number, ordinal?: boolean) => ReturnType<Intl.PluralRules["select"]>;
|
|
23
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
27
|
+
*/
|
|
24
28
|
type AllLocaleData = Record<Locale, LocaleData>;
|
|
25
29
|
type CompiledIcuChoices = Record<string, CompiledMessage> & {
|
|
26
30
|
offset: number;
|
|
@@ -44,6 +48,9 @@ type setupI18nProps = {
|
|
|
44
48
|
locale?: Locale;
|
|
45
49
|
locales?: Locales;
|
|
46
50
|
messages?: AllMessages;
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
53
|
+
*/
|
|
47
54
|
localeData?: AllLocaleData;
|
|
48
55
|
missing?: MissingHandler;
|
|
49
56
|
};
|
|
@@ -61,9 +68,18 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
61
68
|
get locale(): string;
|
|
62
69
|
get locales(): Locales;
|
|
63
70
|
get messages(): Messages;
|
|
71
|
+
/**
|
|
72
|
+
* @deprecated this has no effect. Please remove this from the code. Introduced in v4
|
|
73
|
+
*/
|
|
64
74
|
get localeData(): LocaleData;
|
|
65
75
|
private _loadLocaleData;
|
|
76
|
+
/**
|
|
77
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
78
|
+
*/
|
|
66
79
|
loadLocaleData(allLocaleData: AllLocaleData): void;
|
|
80
|
+
/**
|
|
81
|
+
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
82
|
+
*/
|
|
67
83
|
loadLocaleData(locale: Locale, localeData: LocaleData): void;
|
|
68
84
|
private _load;
|
|
69
85
|
load(allMessages: AllMessages): void;
|
|
@@ -75,15 +91,21 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
75
91
|
}
|
|
76
92
|
declare function setupI18n(params?: setupI18nProps): I18n;
|
|
77
93
|
|
|
78
|
-
declare function date(locales: Locales,
|
|
79
|
-
declare function number(locales: Locales, format?: Intl.NumberFormatOptions
|
|
94
|
+
declare function date(locales: Locales, value: string | Date, format?: Intl.DateTimeFormatOptions): string;
|
|
95
|
+
declare function number(locales: Locales, value: number, format?: Intl.NumberFormatOptions): string;
|
|
96
|
+
declare function plural(locales: Locales, ordinal: boolean, value: number, { offset, ...rules }: {
|
|
97
|
+
[x: string]: any;
|
|
98
|
+
offset?: number;
|
|
99
|
+
}): string;
|
|
80
100
|
|
|
81
101
|
declare const formats_date: typeof date;
|
|
82
102
|
declare const formats_number: typeof number;
|
|
103
|
+
declare const formats_plural: typeof plural;
|
|
83
104
|
declare namespace formats {
|
|
84
105
|
export {
|
|
85
106
|
formats_date as date,
|
|
86
107
|
formats_number as number,
|
|
108
|
+
formats_plural as plural,
|
|
87
109
|
};
|
|
88
110
|
}
|
|
89
111
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingui/core",
|
|
3
|
-
"version": "4.0.0-next.
|
|
3
|
+
"version": "4.0.0-next.2",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "I18n tools for javascript",
|
|
6
6
|
"main": "./build/cjs/index.js",
|
|
@@ -60,11 +60,10 @@
|
|
|
60
60
|
],
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@babel/runtime": "^7.20.13",
|
|
63
|
-
"@messageformat/parser": "^5.0.0"
|
|
64
|
-
"make-plural": "^6.2.2"
|
|
63
|
+
"@messageformat/parser": "^5.0.0"
|
|
65
64
|
},
|
|
66
65
|
"devDependencies": {
|
|
67
66
|
"@lingui/jest-mocks": "^3.0.3"
|
|
68
67
|
},
|
|
69
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "556ab57e20c2ac9d384a22424c6a90c2ba0dd133"
|
|
70
69
|
}
|