@lingui/core 5.0.0-next.0 → 5.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/dist/index.cjs +40 -5
- package/dist/index.d.cts +20 -1
- package/dist/index.d.mts +20 -1
- package/dist/index.d.ts +20 -1
- package/dist/index.mjs +40 -5
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -61,7 +61,7 @@ const formats = {
|
|
|
61
61
|
plural: plural
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}
|
|
64
|
+
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/;
|
|
65
65
|
const OCTOTHORPE_PH = "%__lingui_octothorpe__%";
|
|
66
66
|
const getDefaultFormats = (locale, passedLocales, formats = {}) => {
|
|
67
67
|
const locales = passedLocales || locale;
|
|
@@ -190,10 +190,14 @@ class I18n extends EventEmitter {
|
|
|
190
190
|
__publicField(this, "_localeData", {});
|
|
191
191
|
__publicField(this, "_messages", {});
|
|
192
192
|
__publicField(this, "_missing");
|
|
193
|
+
__publicField(this, "_messageCompiler");
|
|
193
194
|
/**
|
|
194
195
|
* Alias for {@see I18n._}
|
|
195
196
|
*/
|
|
196
197
|
__publicField(this, "t", this._.bind(this));
|
|
198
|
+
if (process.env.NODE_ENV !== "production") {
|
|
199
|
+
this.setMessagesCompiler(compileMessage.compileMessage);
|
|
200
|
+
}
|
|
197
201
|
if (params.missing != null)
|
|
198
202
|
this._missing = params.missing;
|
|
199
203
|
if (params.messages != null)
|
|
@@ -227,6 +231,25 @@ class I18n extends EventEmitter {
|
|
|
227
231
|
Object.assign(maybeLocaleData, localeData);
|
|
228
232
|
}
|
|
229
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.
|
|
236
|
+
*
|
|
237
|
+
* In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.
|
|
238
|
+
* By default, message catalogs should be precompiled during the build process. However,
|
|
239
|
+
* if you need to compile catalogs at runtime, you can use this method to set a message compiler.
|
|
240
|
+
*
|
|
241
|
+
* Example usage:
|
|
242
|
+
*
|
|
243
|
+
* ```ts
|
|
244
|
+
* import { compileMessage } from "@lingui/message-utils/compileMessage";
|
|
245
|
+
*
|
|
246
|
+
* i18n.setMessagesCompiler(compileMessage);
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
setMessagesCompiler(compiler) {
|
|
250
|
+
this._messageCompiler = compiler;
|
|
251
|
+
return this;
|
|
252
|
+
}
|
|
230
253
|
/**
|
|
231
254
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
232
255
|
*/
|
|
@@ -297,10 +320,22 @@ class I18n extends EventEmitter {
|
|
|
297
320
|
if (messageMissing) {
|
|
298
321
|
this.emit("missing", { id, locale: this._locale });
|
|
299
322
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
323
|
+
let translation = messageForId || message || id;
|
|
324
|
+
if (isString(translation)) {
|
|
325
|
+
if (this._messageCompiler) {
|
|
326
|
+
translation = this._messageCompiler(translation);
|
|
327
|
+
} else {
|
|
328
|
+
console.warn(`Uncompiled message detected! Message:
|
|
329
|
+
|
|
330
|
+
> ${translation}
|
|
331
|
+
|
|
332
|
+
That means you use raw catalog or your catalog doesn't have a translation for the message and fallback was used.
|
|
333
|
+
ICU features such as interpolation and plurals will not work properly for that message.
|
|
334
|
+
|
|
335
|
+
Please compile your catalog first.
|
|
336
|
+
`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
304
339
|
if (isString(translation) && UNICODE_REGEX.test(translation))
|
|
305
340
|
return JSON.parse(`"${translation}"`);
|
|
306
341
|
if (isString(translation))
|
package/dist/index.d.cts
CHANGED
|
@@ -30,7 +30,8 @@ type LocaleData = {
|
|
|
30
30
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
31
31
|
*/
|
|
32
32
|
type AllLocaleData = Record<Locale, LocaleData>;
|
|
33
|
-
type
|
|
33
|
+
type UncompiledMessage = string;
|
|
34
|
+
type Messages = Record<string, UncompiledMessage | CompiledMessage>;
|
|
34
35
|
type AllMessages = Record<Locale, Messages>;
|
|
35
36
|
type MessageDescriptor = {
|
|
36
37
|
id: string;
|
|
@@ -65,12 +66,14 @@ type LoadAndActivateOptions = {
|
|
|
65
66
|
/** compiled message catalog */
|
|
66
67
|
messages: Messages;
|
|
67
68
|
};
|
|
69
|
+
type MessageCompiler = (message: string) => CompiledMessage;
|
|
68
70
|
declare class I18n extends EventEmitter<Events> {
|
|
69
71
|
private _locale;
|
|
70
72
|
private _locales?;
|
|
71
73
|
private _localeData;
|
|
72
74
|
private _messages;
|
|
73
75
|
private _missing?;
|
|
76
|
+
private _messageCompiler?;
|
|
74
77
|
constructor(params: I18nProps);
|
|
75
78
|
get locale(): string;
|
|
76
79
|
get locales(): Locales | undefined;
|
|
@@ -80,6 +83,22 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
80
83
|
*/
|
|
81
84
|
get localeData(): LocaleData;
|
|
82
85
|
private _loadLocaleData;
|
|
86
|
+
/**
|
|
87
|
+
* Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.
|
|
88
|
+
*
|
|
89
|
+
* In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.
|
|
90
|
+
* By default, message catalogs should be precompiled during the build process. However,
|
|
91
|
+
* if you need to compile catalogs at runtime, you can use this method to set a message compiler.
|
|
92
|
+
*
|
|
93
|
+
* Example usage:
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* import { compileMessage } from "@lingui/message-utils/compileMessage";
|
|
97
|
+
*
|
|
98
|
+
* i18n.setMessagesCompiler(compileMessage);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
setMessagesCompiler(compiler: MessageCompiler): this;
|
|
83
102
|
/**
|
|
84
103
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
85
104
|
*/
|
package/dist/index.d.mts
CHANGED
|
@@ -30,7 +30,8 @@ type LocaleData = {
|
|
|
30
30
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
31
31
|
*/
|
|
32
32
|
type AllLocaleData = Record<Locale, LocaleData>;
|
|
33
|
-
type
|
|
33
|
+
type UncompiledMessage = string;
|
|
34
|
+
type Messages = Record<string, UncompiledMessage | CompiledMessage>;
|
|
34
35
|
type AllMessages = Record<Locale, Messages>;
|
|
35
36
|
type MessageDescriptor = {
|
|
36
37
|
id: string;
|
|
@@ -65,12 +66,14 @@ type LoadAndActivateOptions = {
|
|
|
65
66
|
/** compiled message catalog */
|
|
66
67
|
messages: Messages;
|
|
67
68
|
};
|
|
69
|
+
type MessageCompiler = (message: string) => CompiledMessage;
|
|
68
70
|
declare class I18n extends EventEmitter<Events> {
|
|
69
71
|
private _locale;
|
|
70
72
|
private _locales?;
|
|
71
73
|
private _localeData;
|
|
72
74
|
private _messages;
|
|
73
75
|
private _missing?;
|
|
76
|
+
private _messageCompiler?;
|
|
74
77
|
constructor(params: I18nProps);
|
|
75
78
|
get locale(): string;
|
|
76
79
|
get locales(): Locales | undefined;
|
|
@@ -80,6 +83,22 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
80
83
|
*/
|
|
81
84
|
get localeData(): LocaleData;
|
|
82
85
|
private _loadLocaleData;
|
|
86
|
+
/**
|
|
87
|
+
* Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.
|
|
88
|
+
*
|
|
89
|
+
* In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.
|
|
90
|
+
* By default, message catalogs should be precompiled during the build process. However,
|
|
91
|
+
* if you need to compile catalogs at runtime, you can use this method to set a message compiler.
|
|
92
|
+
*
|
|
93
|
+
* Example usage:
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* import { compileMessage } from "@lingui/message-utils/compileMessage";
|
|
97
|
+
*
|
|
98
|
+
* i18n.setMessagesCompiler(compileMessage);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
setMessagesCompiler(compiler: MessageCompiler): this;
|
|
83
102
|
/**
|
|
84
103
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
85
104
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,8 @@ type LocaleData = {
|
|
|
30
30
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
31
31
|
*/
|
|
32
32
|
type AllLocaleData = Record<Locale, LocaleData>;
|
|
33
|
-
type
|
|
33
|
+
type UncompiledMessage = string;
|
|
34
|
+
type Messages = Record<string, UncompiledMessage | CompiledMessage>;
|
|
34
35
|
type AllMessages = Record<Locale, Messages>;
|
|
35
36
|
type MessageDescriptor = {
|
|
36
37
|
id: string;
|
|
@@ -65,12 +66,14 @@ type LoadAndActivateOptions = {
|
|
|
65
66
|
/** compiled message catalog */
|
|
66
67
|
messages: Messages;
|
|
67
68
|
};
|
|
69
|
+
type MessageCompiler = (message: string) => CompiledMessage;
|
|
68
70
|
declare class I18n extends EventEmitter<Events> {
|
|
69
71
|
private _locale;
|
|
70
72
|
private _locales?;
|
|
71
73
|
private _localeData;
|
|
72
74
|
private _messages;
|
|
73
75
|
private _missing?;
|
|
76
|
+
private _messageCompiler?;
|
|
74
77
|
constructor(params: I18nProps);
|
|
75
78
|
get locale(): string;
|
|
76
79
|
get locales(): Locales | undefined;
|
|
@@ -80,6 +83,22 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
80
83
|
*/
|
|
81
84
|
get localeData(): LocaleData;
|
|
82
85
|
private _loadLocaleData;
|
|
86
|
+
/**
|
|
87
|
+
* Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.
|
|
88
|
+
*
|
|
89
|
+
* In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.
|
|
90
|
+
* By default, message catalogs should be precompiled during the build process. However,
|
|
91
|
+
* if you need to compile catalogs at runtime, you can use this method to set a message compiler.
|
|
92
|
+
*
|
|
93
|
+
* Example usage:
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* import { compileMessage } from "@lingui/message-utils/compileMessage";
|
|
97
|
+
*
|
|
98
|
+
* i18n.setMessagesCompiler(compileMessage);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
setMessagesCompiler(compiler: MessageCompiler): this;
|
|
83
102
|
/**
|
|
84
103
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
85
104
|
*/
|
package/dist/index.mjs
CHANGED
|
@@ -59,7 +59,7 @@ const formats = {
|
|
|
59
59
|
plural: plural
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}
|
|
62
|
+
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/;
|
|
63
63
|
const OCTOTHORPE_PH = "%__lingui_octothorpe__%";
|
|
64
64
|
const getDefaultFormats = (locale, passedLocales, formats = {}) => {
|
|
65
65
|
const locales = passedLocales || locale;
|
|
@@ -188,10 +188,14 @@ class I18n extends EventEmitter {
|
|
|
188
188
|
__publicField(this, "_localeData", {});
|
|
189
189
|
__publicField(this, "_messages", {});
|
|
190
190
|
__publicField(this, "_missing");
|
|
191
|
+
__publicField(this, "_messageCompiler");
|
|
191
192
|
/**
|
|
192
193
|
* Alias for {@see I18n._}
|
|
193
194
|
*/
|
|
194
195
|
__publicField(this, "t", this._.bind(this));
|
|
196
|
+
if (process.env.NODE_ENV !== "production") {
|
|
197
|
+
this.setMessagesCompiler(compileMessage);
|
|
198
|
+
}
|
|
195
199
|
if (params.missing != null)
|
|
196
200
|
this._missing = params.missing;
|
|
197
201
|
if (params.messages != null)
|
|
@@ -225,6 +229,25 @@ class I18n extends EventEmitter {
|
|
|
225
229
|
Object.assign(maybeLocaleData, localeData);
|
|
226
230
|
}
|
|
227
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Registers a `MessageCompiler` to enable the use of uncompiled catalogs at runtime.
|
|
234
|
+
*
|
|
235
|
+
* In production builds, the `MessageCompiler` is typically excluded to reduce bundle size.
|
|
236
|
+
* By default, message catalogs should be precompiled during the build process. However,
|
|
237
|
+
* if you need to compile catalogs at runtime, you can use this method to set a message compiler.
|
|
238
|
+
*
|
|
239
|
+
* Example usage:
|
|
240
|
+
*
|
|
241
|
+
* ```ts
|
|
242
|
+
* import { compileMessage } from "@lingui/message-utils/compileMessage";
|
|
243
|
+
*
|
|
244
|
+
* i18n.setMessagesCompiler(compileMessage);
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
setMessagesCompiler(compiler) {
|
|
248
|
+
this._messageCompiler = compiler;
|
|
249
|
+
return this;
|
|
250
|
+
}
|
|
228
251
|
/**
|
|
229
252
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Deprecated in v4
|
|
230
253
|
*/
|
|
@@ -295,10 +318,22 @@ class I18n extends EventEmitter {
|
|
|
295
318
|
if (messageMissing) {
|
|
296
319
|
this.emit("missing", { id, locale: this._locale });
|
|
297
320
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
321
|
+
let translation = messageForId || message || id;
|
|
322
|
+
if (isString(translation)) {
|
|
323
|
+
if (this._messageCompiler) {
|
|
324
|
+
translation = this._messageCompiler(translation);
|
|
325
|
+
} else {
|
|
326
|
+
console.warn(`Uncompiled message detected! Message:
|
|
327
|
+
|
|
328
|
+
> ${translation}
|
|
329
|
+
|
|
330
|
+
That means you use raw catalog or your catalog doesn't have a translation for the message and fallback was used.
|
|
331
|
+
ICU features such as interpolation and plurals will not work properly for that message.
|
|
332
|
+
|
|
333
|
+
Please compile your catalog first.
|
|
334
|
+
`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
302
337
|
if (isString(translation) && UNICODE_REGEX.test(translation))
|
|
303
338
|
return JSON.parse(`"${translation}"`);
|
|
304
339
|
if (isString(translation))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingui/core",
|
|
3
|
-
"version": "5.0.0-next.
|
|
3
|
+
"version": "5.0.0-next.2",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "I18n tools for javascript",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"url": "https://github.com/lingui/js-lingui/issues"
|
|
33
33
|
},
|
|
34
34
|
"engines": {
|
|
35
|
-
"node": ">=
|
|
35
|
+
"node": ">=20.0.0"
|
|
36
36
|
},
|
|
37
37
|
"exports": {
|
|
38
38
|
".": {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
],
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@babel/runtime": "^7.20.13",
|
|
63
|
-
"@lingui/message-utils": "^5.0.0-next.
|
|
63
|
+
"@lingui/message-utils": "^5.0.0-next.2",
|
|
64
64
|
"unraw": "^3.0.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"unbuild": "2.0.0"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@lingui/babel-plugin-lingui-macro": "5.0.0-next.
|
|
72
|
+
"@lingui/babel-plugin-lingui-macro": "5.0.0-next.2",
|
|
73
73
|
"babel-plugin-macros": "2 || 3"
|
|
74
74
|
},
|
|
75
75
|
"peerDependenciesMeta": {
|
|
@@ -80,5 +80,5 @@
|
|
|
80
80
|
"optional": true
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "71fa9b0b55deded4b30a25f9bda2a28a7cf4ec12"
|
|
84
84
|
}
|