@modern-js/i18n-utils 0.0.0-canary-20251119023553 → 0.0.0-canary-20251124060842
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/cjs/index.js +64 -64
- package/dist/cjs/languageDetector.js +46 -42
- package/dist/cjs/utils/index.js +40 -35
- package/dist/esm/index.mjs +39 -0
- package/dist/esm/languageDetector.mjs +18 -0
- package/dist/esm/utils/index.mjs +10 -0
- package/dist/esm-node/index.mjs +39 -0
- package/dist/esm-node/languageDetector.mjs +18 -0
- package/dist/esm-node/utils/index.mjs +10 -0
- package/package.json +16 -10
- package/rslib.config.ts +4 -0
- package/dist/esm/index.js +0 -61
- package/dist/esm/languageDetector.js +0 -33
- package/dist/esm/utils/index.js +0 -16
- package/dist/esm-node/index.js +0 -49
- package/dist/esm-node/languageDetector.js +0 -26
- package/dist/esm-node/utils/index.js +0 -15
package/dist/cjs/index.js
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
I18n: ()=>I18n
|
|
22
28
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var import_utils = require("./utils");
|
|
29
|
+
const lodash_namespaceObject = require("@modern-js/utils/lodash");
|
|
30
|
+
const index_js_namespaceObject = require("./utils/index.js");
|
|
26
31
|
class I18n {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
getMessage(lang, key, vars, fallbackText) {
|
|
31
|
-
const languages = Object.keys(this.languageMap);
|
|
32
|
-
const resultLang = languages.find((l) => l === lang);
|
|
33
|
-
if (!resultLang && languages.length === 0) {
|
|
34
|
-
return fallbackText || key;
|
|
32
|
+
format(msg, vars) {
|
|
33
|
+
return msg.replace(/\{(\w+)\}/g, (_match, capture)=>Object.prototype.hasOwnProperty.call(vars, capture) ? vars[capture] : capture);
|
|
35
34
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
getMessage(lang, key, vars, fallbackText) {
|
|
36
|
+
const languages = Object.keys(this.languageMap);
|
|
37
|
+
const resultLang = languages.find((l)=>l === lang);
|
|
38
|
+
if (!resultLang && 0 === languages.length) return fallbackText || key;
|
|
39
|
+
const model = this.languageMap[resultLang || 'en'];
|
|
40
|
+
if (!model) return fallbackText || key;
|
|
41
|
+
const message = (0, lodash_namespaceObject.get)(model, key);
|
|
42
|
+
const value = message || fallbackText || key;
|
|
43
|
+
if ('string' == typeof value) return this.format(value, vars || {});
|
|
44
|
+
throw new Error('key is not a string');
|
|
39
45
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
init(language, languageMap) {
|
|
47
|
+
this.language = language || 'en';
|
|
48
|
+
if (languageMap) this.languageMap = languageMap;
|
|
49
|
+
return (0, index_js_namespaceObject.getObjKeyMap)(this.languageMap[this.language]);
|
|
44
50
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
changeLanguage(config) {
|
|
52
|
+
this.language = config.locale || 'en';
|
|
53
|
+
}
|
|
54
|
+
t(key, vars, fallbackText) {
|
|
55
|
+
return this.getMessage(this.language, key, vars, fallbackText);
|
|
56
|
+
}
|
|
57
|
+
lang(lang) {
|
|
58
|
+
return {
|
|
59
|
+
t: (key, vars, fallbackText)=>this.getMessage(lang, key, vars, fallbackText)
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
constructor(){
|
|
63
|
+
this.language = 'en';
|
|
64
|
+
this.languageMap = {};
|
|
51
65
|
}
|
|
52
|
-
return (0, import_utils.getObjKeyMap)(this.languageMap[this.language]);
|
|
53
|
-
}
|
|
54
|
-
changeLanguage(config) {
|
|
55
|
-
this.language = config.locale || "en";
|
|
56
|
-
}
|
|
57
|
-
t(key, vars, fallbackText) {
|
|
58
|
-
return this.getMessage(this.language, key, vars, fallbackText);
|
|
59
|
-
}
|
|
60
|
-
lang(lang) {
|
|
61
|
-
return {
|
|
62
|
-
t: (key, vars, fallbackText) => this.getMessage(lang, key, vars, fallbackText)
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
constructor() {
|
|
66
|
-
this.language = "en";
|
|
67
|
-
this.languageMap = {};
|
|
68
|
-
}
|
|
69
66
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
exports.I18n = __webpack_exports__.I18n;
|
|
68
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
69
|
+
"I18n"
|
|
70
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
71
|
+
Object.defineProperty(exports, '__esModule', {
|
|
72
|
+
value: true
|
|
73
73
|
});
|
|
@@ -1,51 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
I18CLILanguageDetector: ()=>I18CLILanguageDetector,
|
|
28
|
+
getLocaleLanguage: ()=>getLocaleLanguage
|
|
23
29
|
});
|
|
24
|
-
module.exports = __toCommonJS(languageDetector_exports);
|
|
25
30
|
class I18CLILanguageDetector {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
formatShellLocale(rawLC) {
|
|
32
|
+
if (!rawLC) return '';
|
|
33
|
+
const LCs = rawLC.split(':');
|
|
34
|
+
const LC = LCs[0].split('.')[0].split('_')[0].split('-')[0];
|
|
35
|
+
if ('C' === LC) return '';
|
|
36
|
+
return LC;
|
|
29
37
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return "";
|
|
38
|
+
detect() {
|
|
39
|
+
const shellLocale = process.env.LC_ALL ?? process.env.LC_MESSAGES ?? process.env.LANG ?? process.env.LANGUAGE ?? Intl.DateTimeFormat().resolvedOptions().locale;
|
|
40
|
+
return this.formatShellLocale(shellLocale);
|
|
34
41
|
}
|
|
35
|
-
return LC;
|
|
36
|
-
}
|
|
37
|
-
detect() {
|
|
38
|
-
var _process_env_LC_ALL, _ref, _ref1, _ref2;
|
|
39
|
-
const shellLocale = (_ref2 = (_ref1 = (_ref = (_process_env_LC_ALL = process.env.LC_ALL) !== null && _process_env_LC_ALL !== void 0 ? _process_env_LC_ALL : process.env.LC_MESSAGES) !== null && _ref !== void 0 ? _ref : process.env.LANG) !== null && _ref1 !== void 0 ? _ref1 : process.env.LANGUAGE) !== null && _ref2 !== void 0 ? _ref2 : Intl.DateTimeFormat().resolvedOptions().locale;
|
|
40
|
-
return this.formatShellLocale(shellLocale);
|
|
41
|
-
}
|
|
42
42
|
}
|
|
43
43
|
function getLocaleLanguage() {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const detector = new I18CLILanguageDetector();
|
|
45
|
+
return detector.detect();
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
exports.I18CLILanguageDetector = __webpack_exports__.I18CLILanguageDetector;
|
|
48
|
+
exports.getLocaleLanguage = __webpack_exports__.getLocaleLanguage;
|
|
49
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
50
|
+
"I18CLILanguageDetector",
|
|
51
|
+
"getLocaleLanguage"
|
|
52
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
53
|
+
Object.defineProperty(exports, '__esModule', {
|
|
54
|
+
value: true
|
|
51
55
|
});
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -1,39 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
getObjKeyMap: ()=>getObjKeyMap
|
|
22
28
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
result[key] = getObjKeyMap(obj[key], prefix ? `${prefix}.${key}` : key);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
return result;
|
|
29
|
+
const lodash_namespaceObject = require("@modern-js/utils/lodash");
|
|
30
|
+
function getObjKeyMap(obj, prefix = '') {
|
|
31
|
+
const result = {};
|
|
32
|
+
Object.keys(obj).forEach((key)=>{
|
|
33
|
+
if ((0, lodash_namespaceObject.isString)(obj[key])) result[key] = prefix ? `${prefix}.${key}` : key;
|
|
34
|
+
else if ((0, lodash_namespaceObject.isObject)(obj[key])) result[key] = getObjKeyMap(obj[key], prefix ? `${prefix}.${key}` : key);
|
|
35
|
+
});
|
|
36
|
+
return result;
|
|
35
37
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
exports.getObjKeyMap = __webpack_exports__.getObjKeyMap;
|
|
39
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
40
|
+
"getObjKeyMap"
|
|
41
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
42
|
+
Object.defineProperty(exports, '__esModule', {
|
|
43
|
+
value: true
|
|
39
44
|
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { get } from "@modern-js/utils/lodash";
|
|
2
|
+
import { getObjKeyMap } from "./utils";
|
|
3
|
+
class I18n {
|
|
4
|
+
format(msg, vars) {
|
|
5
|
+
return msg.replace(/\{(\w+)\}/g, (_match, capture)=>Object.prototype.hasOwnProperty.call(vars, capture) ? vars[capture] : capture);
|
|
6
|
+
}
|
|
7
|
+
getMessage(lang, key, vars, fallbackText) {
|
|
8
|
+
const languages = Object.keys(this.languageMap);
|
|
9
|
+
const resultLang = languages.find((l)=>l === lang);
|
|
10
|
+
if (!resultLang && 0 === languages.length) return fallbackText || key;
|
|
11
|
+
const model = this.languageMap[resultLang || 'en'];
|
|
12
|
+
if (!model) return fallbackText || key;
|
|
13
|
+
const message = get(model, key);
|
|
14
|
+
const value = message || fallbackText || key;
|
|
15
|
+
if ('string' == typeof value) return this.format(value, vars || {});
|
|
16
|
+
throw new Error('key is not a string');
|
|
17
|
+
}
|
|
18
|
+
init(language, languageMap) {
|
|
19
|
+
this.language = language || 'en';
|
|
20
|
+
if (languageMap) this.languageMap = languageMap;
|
|
21
|
+
return getObjKeyMap(this.languageMap[this.language]);
|
|
22
|
+
}
|
|
23
|
+
changeLanguage(config) {
|
|
24
|
+
this.language = config.locale || 'en';
|
|
25
|
+
}
|
|
26
|
+
t(key, vars, fallbackText) {
|
|
27
|
+
return this.getMessage(this.language, key, vars, fallbackText);
|
|
28
|
+
}
|
|
29
|
+
lang(lang) {
|
|
30
|
+
return {
|
|
31
|
+
t: (key, vars, fallbackText)=>this.getMessage(lang, key, vars, fallbackText)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
constructor(){
|
|
35
|
+
this.language = 'en';
|
|
36
|
+
this.languageMap = {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export { I18n };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class I18CLILanguageDetector {
|
|
2
|
+
formatShellLocale(rawLC) {
|
|
3
|
+
if (!rawLC) return '';
|
|
4
|
+
const LCs = rawLC.split(':');
|
|
5
|
+
const LC = LCs[0].split('.')[0].split('_')[0].split('-')[0];
|
|
6
|
+
if ('C' === LC) return '';
|
|
7
|
+
return LC;
|
|
8
|
+
}
|
|
9
|
+
detect() {
|
|
10
|
+
const shellLocale = process.env.LC_ALL ?? process.env.LC_MESSAGES ?? process.env.LANG ?? process.env.LANGUAGE ?? Intl.DateTimeFormat().resolvedOptions().locale;
|
|
11
|
+
return this.formatShellLocale(shellLocale);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function getLocaleLanguage() {
|
|
15
|
+
const detector = new I18CLILanguageDetector();
|
|
16
|
+
return detector.detect();
|
|
17
|
+
}
|
|
18
|
+
export { I18CLILanguageDetector, getLocaleLanguage };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isObject, isString } from "@modern-js/utils/lodash";
|
|
2
|
+
function getObjKeyMap(obj, prefix = '') {
|
|
3
|
+
const result = {};
|
|
4
|
+
Object.keys(obj).forEach((key)=>{
|
|
5
|
+
if (isString(obj[key])) result[key] = prefix ? `${prefix}.${key}` : key;
|
|
6
|
+
else if (isObject(obj[key])) result[key] = getObjKeyMap(obj[key], prefix ? `${prefix}.${key}` : key);
|
|
7
|
+
});
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
export { getObjKeyMap };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { get } from "@modern-js/utils/lodash";
|
|
2
|
+
import { getObjKeyMap } from "./utils/index.mjs";
|
|
3
|
+
class I18n {
|
|
4
|
+
format(msg, vars) {
|
|
5
|
+
return msg.replace(/\{(\w+)\}/g, (_match, capture)=>Object.prototype.hasOwnProperty.call(vars, capture) ? vars[capture] : capture);
|
|
6
|
+
}
|
|
7
|
+
getMessage(lang, key, vars, fallbackText) {
|
|
8
|
+
const languages = Object.keys(this.languageMap);
|
|
9
|
+
const resultLang = languages.find((l)=>l === lang);
|
|
10
|
+
if (!resultLang && 0 === languages.length) return fallbackText || key;
|
|
11
|
+
const model = this.languageMap[resultLang || 'en'];
|
|
12
|
+
if (!model) return fallbackText || key;
|
|
13
|
+
const message = get(model, key);
|
|
14
|
+
const value = message || fallbackText || key;
|
|
15
|
+
if ('string' == typeof value) return this.format(value, vars || {});
|
|
16
|
+
throw new Error('key is not a string');
|
|
17
|
+
}
|
|
18
|
+
init(language, languageMap) {
|
|
19
|
+
this.language = language || 'en';
|
|
20
|
+
if (languageMap) this.languageMap = languageMap;
|
|
21
|
+
return getObjKeyMap(this.languageMap[this.language]);
|
|
22
|
+
}
|
|
23
|
+
changeLanguage(config) {
|
|
24
|
+
this.language = config.locale || 'en';
|
|
25
|
+
}
|
|
26
|
+
t(key, vars, fallbackText) {
|
|
27
|
+
return this.getMessage(this.language, key, vars, fallbackText);
|
|
28
|
+
}
|
|
29
|
+
lang(lang) {
|
|
30
|
+
return {
|
|
31
|
+
t: (key, vars, fallbackText)=>this.getMessage(lang, key, vars, fallbackText)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
constructor(){
|
|
35
|
+
this.language = 'en';
|
|
36
|
+
this.languageMap = {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export { I18n };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class I18CLILanguageDetector {
|
|
2
|
+
formatShellLocale(rawLC) {
|
|
3
|
+
if (!rawLC) return '';
|
|
4
|
+
const LCs = rawLC.split(':');
|
|
5
|
+
const LC = LCs[0].split('.')[0].split('_')[0].split('-')[0];
|
|
6
|
+
if ('C' === LC) return '';
|
|
7
|
+
return LC;
|
|
8
|
+
}
|
|
9
|
+
detect() {
|
|
10
|
+
const shellLocale = process.env.LC_ALL ?? process.env.LC_MESSAGES ?? process.env.LANG ?? process.env.LANGUAGE ?? Intl.DateTimeFormat().resolvedOptions().locale;
|
|
11
|
+
return this.formatShellLocale(shellLocale);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function getLocaleLanguage() {
|
|
15
|
+
const detector = new I18CLILanguageDetector();
|
|
16
|
+
return detector.detect();
|
|
17
|
+
}
|
|
18
|
+
export { I18CLILanguageDetector, getLocaleLanguage };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { isObject, isString } from "@modern-js/utils/lodash";
|
|
2
|
+
function getObjKeyMap(obj, prefix = '') {
|
|
3
|
+
const result = {};
|
|
4
|
+
Object.keys(obj).forEach((key)=>{
|
|
5
|
+
if (isString(obj[key])) result[key] = prefix ? `${prefix}.${key}` : key;
|
|
6
|
+
else if (isObject(obj[key])) result[key] = getObjKeyMap(obj[key], prefix ? `${prefix}.${key}` : key);
|
|
7
|
+
});
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
export { getObjKeyMap };
|
package/package.json
CHANGED
|
@@ -15,13 +15,16 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "0.0.0-canary-
|
|
18
|
+
"version": "0.0.0-canary-20251124060842",
|
|
19
19
|
"jsnext:source": "./src/index.ts",
|
|
20
20
|
"types": "./dist/types/index.d.ts",
|
|
21
21
|
"main": "./dist/cjs/index.js",
|
|
22
|
-
"module": "./dist/esm/index.
|
|
22
|
+
"module": "./dist/esm/index.mjs",
|
|
23
23
|
"typesVersions": {
|
|
24
24
|
"*": {
|
|
25
|
+
".": [
|
|
26
|
+
"./dist/types/index.d.ts"
|
|
27
|
+
],
|
|
25
28
|
"language-detector": [
|
|
26
29
|
"./dist/types/languageDetector.d.ts"
|
|
27
30
|
]
|
|
@@ -30,32 +33,34 @@
|
|
|
30
33
|
"exports": {
|
|
31
34
|
".": {
|
|
32
35
|
"node": {
|
|
33
|
-
"import": "./dist/esm-node/index.
|
|
36
|
+
"import": "./dist/esm-node/index.mjs",
|
|
34
37
|
"require": "./dist/cjs/index.js"
|
|
35
38
|
},
|
|
36
39
|
"types": "./dist/types/index.d.ts",
|
|
37
|
-
"default": "./dist/esm/index.
|
|
40
|
+
"default": "./dist/esm/index.mjs"
|
|
38
41
|
},
|
|
39
42
|
"./language-detector": {
|
|
40
43
|
"node": {
|
|
41
|
-
"import": "./dist/esm-node/languageDetector.
|
|
44
|
+
"import": "./dist/esm-node/languageDetector.mjs",
|
|
42
45
|
"require": "./dist/cjs/languageDetector.js"
|
|
43
46
|
},
|
|
44
47
|
"types": "./dist/types/languageDetector.d.ts",
|
|
45
|
-
"default": "./dist/esm/languageDetector.
|
|
48
|
+
"default": "./dist/esm/languageDetector.mjs"
|
|
46
49
|
}
|
|
47
50
|
},
|
|
48
51
|
"dependencies": {
|
|
49
52
|
"@swc/helpers": "^0.5.17",
|
|
50
|
-
"@modern-js/utils": "0.0.0-canary-
|
|
53
|
+
"@modern-js/utils": "0.0.0-canary-20251124060842"
|
|
51
54
|
},
|
|
52
55
|
"devDependencies": {
|
|
56
|
+
"@rslib/core": "0.18.0",
|
|
53
57
|
"@types/jest": "^29.5.14",
|
|
54
58
|
"@types/node": "^20",
|
|
55
59
|
"jest": "^29.7.0",
|
|
56
60
|
"typescript": "^5",
|
|
57
|
-
"@
|
|
58
|
-
"@scripts/
|
|
61
|
+
"@modern-js/rslib": "0.0.0-canary-20251124060842",
|
|
62
|
+
"@scripts/build": "0.0.0-canary-20251124060842",
|
|
63
|
+
"@scripts/jest-config": "0.0.0-canary-20251124060842"
|
|
59
64
|
},
|
|
60
65
|
"sideEffects": false,
|
|
61
66
|
"publishConfig": {
|
|
@@ -64,7 +69,8 @@
|
|
|
64
69
|
},
|
|
65
70
|
"scripts": {
|
|
66
71
|
"new": "modern-lib new",
|
|
67
|
-
"
|
|
72
|
+
"dev": "rslib build --watch",
|
|
73
|
+
"build": "rslib build",
|
|
68
74
|
"test": "jest --passWithNoTests"
|
|
69
75
|
}
|
|
70
76
|
}
|
package/rslib.config.ts
ADDED
package/dist/esm/index.js
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
|
|
2
|
-
import { get } from "@modern-js/utils/lodash";
|
|
3
|
-
import { getObjKeyMap } from "./utils";
|
|
4
|
-
var I18n = /* @__PURE__ */ function() {
|
|
5
|
-
"use strict";
|
|
6
|
-
function I18n2() {
|
|
7
|
-
_class_call_check(this, I18n2);
|
|
8
|
-
this.language = "en";
|
|
9
|
-
this.languageMap = {};
|
|
10
|
-
}
|
|
11
|
-
var _proto = I18n2.prototype;
|
|
12
|
-
_proto.format = function format(msg, vars) {
|
|
13
|
-
return msg.replace(/\{(\w+)\}/g, function(_match, capture) {
|
|
14
|
-
return Object.prototype.hasOwnProperty.call(vars, capture) ? vars[capture] : capture;
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
_proto.getMessage = function getMessage(lang, key, vars, fallbackText) {
|
|
18
|
-
var languages = Object.keys(this.languageMap);
|
|
19
|
-
var resultLang = languages.find(function(l) {
|
|
20
|
-
return l === lang;
|
|
21
|
-
});
|
|
22
|
-
if (!resultLang && languages.length === 0) {
|
|
23
|
-
return fallbackText || key;
|
|
24
|
-
}
|
|
25
|
-
var model = this.languageMap[resultLang || "en"];
|
|
26
|
-
if (!model) {
|
|
27
|
-
return fallbackText || key;
|
|
28
|
-
}
|
|
29
|
-
var message = get(model, key);
|
|
30
|
-
var value = message || fallbackText || key;
|
|
31
|
-
if (typeof value === "string") {
|
|
32
|
-
return this.format(value, vars || {});
|
|
33
|
-
}
|
|
34
|
-
throw new Error("key is not a string");
|
|
35
|
-
};
|
|
36
|
-
_proto.init = function init(language, languageMap) {
|
|
37
|
-
this.language = language || "en";
|
|
38
|
-
if (languageMap) {
|
|
39
|
-
this.languageMap = languageMap;
|
|
40
|
-
}
|
|
41
|
-
return getObjKeyMap(this.languageMap[this.language]);
|
|
42
|
-
};
|
|
43
|
-
_proto.changeLanguage = function changeLanguage(config) {
|
|
44
|
-
this.language = config.locale || "en";
|
|
45
|
-
};
|
|
46
|
-
_proto.t = function t(key, vars, fallbackText) {
|
|
47
|
-
return this.getMessage(this.language, key, vars, fallbackText);
|
|
48
|
-
};
|
|
49
|
-
_proto.lang = function lang(lang) {
|
|
50
|
-
var _this = this;
|
|
51
|
-
return {
|
|
52
|
-
t: function(key, vars, fallbackText) {
|
|
53
|
-
return _this.getMessage(lang, key, vars, fallbackText);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
return I18n2;
|
|
58
|
-
}();
|
|
59
|
-
export {
|
|
60
|
-
I18n
|
|
61
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
|
|
2
|
-
var I18CLILanguageDetector = /* @__PURE__ */ function() {
|
|
3
|
-
"use strict";
|
|
4
|
-
function I18CLILanguageDetector2() {
|
|
5
|
-
_class_call_check(this, I18CLILanguageDetector2);
|
|
6
|
-
}
|
|
7
|
-
var _proto = I18CLILanguageDetector2.prototype;
|
|
8
|
-
_proto.formatShellLocale = function formatShellLocale(rawLC) {
|
|
9
|
-
if (!rawLC) {
|
|
10
|
-
return "";
|
|
11
|
-
}
|
|
12
|
-
var LCs = rawLC.split(":");
|
|
13
|
-
var LC = LCs[0].split(".")[0].split("_")[0].split("-")[0];
|
|
14
|
-
if (LC === "C") {
|
|
15
|
-
return "";
|
|
16
|
-
}
|
|
17
|
-
return LC;
|
|
18
|
-
};
|
|
19
|
-
_proto.detect = function detect() {
|
|
20
|
-
var _process_env_LC_ALL, _ref, _ref1, _ref2;
|
|
21
|
-
var shellLocale = (_ref2 = (_ref1 = (_ref = (_process_env_LC_ALL = process.env.LC_ALL) !== null && _process_env_LC_ALL !== void 0 ? _process_env_LC_ALL : process.env.LC_MESSAGES) !== null && _ref !== void 0 ? _ref : process.env.LANG) !== null && _ref1 !== void 0 ? _ref1 : process.env.LANGUAGE) !== null && _ref2 !== void 0 ? _ref2 : Intl.DateTimeFormat().resolvedOptions().locale;
|
|
22
|
-
return this.formatShellLocale(shellLocale);
|
|
23
|
-
};
|
|
24
|
-
return I18CLILanguageDetector2;
|
|
25
|
-
}();
|
|
26
|
-
function getLocaleLanguage() {
|
|
27
|
-
var detector = new I18CLILanguageDetector();
|
|
28
|
-
return detector.detect();
|
|
29
|
-
}
|
|
30
|
-
export {
|
|
31
|
-
I18CLILanguageDetector,
|
|
32
|
-
getLocaleLanguage
|
|
33
|
-
};
|
package/dist/esm/utils/index.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isObject, isString } from "@modern-js/utils/lodash";
|
|
2
|
-
function getObjKeyMap(obj) {
|
|
3
|
-
var prefix = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "";
|
|
4
|
-
var result = {};
|
|
5
|
-
Object.keys(obj).forEach(function(key) {
|
|
6
|
-
if (isString(obj[key])) {
|
|
7
|
-
result[key] = prefix ? "".concat(prefix, ".").concat(key) : key;
|
|
8
|
-
} else if (isObject(obj[key])) {
|
|
9
|
-
result[key] = getObjKeyMap(obj[key], prefix ? "".concat(prefix, ".").concat(key) : key);
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
return result;
|
|
13
|
-
}
|
|
14
|
-
export {
|
|
15
|
-
getObjKeyMap
|
|
16
|
-
};
|
package/dist/esm-node/index.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { get } from "@modern-js/utils/lodash";
|
|
2
|
-
import { getObjKeyMap } from "./utils";
|
|
3
|
-
class I18n {
|
|
4
|
-
format(msg, vars) {
|
|
5
|
-
return msg.replace(/\{(\w+)\}/g, (_match, capture) => Object.prototype.hasOwnProperty.call(vars, capture) ? vars[capture] : capture);
|
|
6
|
-
}
|
|
7
|
-
getMessage(lang, key, vars, fallbackText) {
|
|
8
|
-
const languages = Object.keys(this.languageMap);
|
|
9
|
-
const resultLang = languages.find((l) => l === lang);
|
|
10
|
-
if (!resultLang && languages.length === 0) {
|
|
11
|
-
return fallbackText || key;
|
|
12
|
-
}
|
|
13
|
-
const model = this.languageMap[resultLang || "en"];
|
|
14
|
-
if (!model) {
|
|
15
|
-
return fallbackText || key;
|
|
16
|
-
}
|
|
17
|
-
const message = get(model, key);
|
|
18
|
-
const value = message || fallbackText || key;
|
|
19
|
-
if (typeof value === "string") {
|
|
20
|
-
return this.format(value, vars || {});
|
|
21
|
-
}
|
|
22
|
-
throw new Error("key is not a string");
|
|
23
|
-
}
|
|
24
|
-
init(language, languageMap) {
|
|
25
|
-
this.language = language || "en";
|
|
26
|
-
if (languageMap) {
|
|
27
|
-
this.languageMap = languageMap;
|
|
28
|
-
}
|
|
29
|
-
return getObjKeyMap(this.languageMap[this.language]);
|
|
30
|
-
}
|
|
31
|
-
changeLanguage(config) {
|
|
32
|
-
this.language = config.locale || "en";
|
|
33
|
-
}
|
|
34
|
-
t(key, vars, fallbackText) {
|
|
35
|
-
return this.getMessage(this.language, key, vars, fallbackText);
|
|
36
|
-
}
|
|
37
|
-
lang(lang) {
|
|
38
|
-
return {
|
|
39
|
-
t: (key, vars, fallbackText) => this.getMessage(lang, key, vars, fallbackText)
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
constructor() {
|
|
43
|
-
this.language = "en";
|
|
44
|
-
this.languageMap = {};
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export {
|
|
48
|
-
I18n
|
|
49
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
class I18CLILanguageDetector {
|
|
2
|
-
formatShellLocale(rawLC) {
|
|
3
|
-
if (!rawLC) {
|
|
4
|
-
return "";
|
|
5
|
-
}
|
|
6
|
-
const LCs = rawLC.split(":");
|
|
7
|
-
const LC = LCs[0].split(".")[0].split("_")[0].split("-")[0];
|
|
8
|
-
if (LC === "C") {
|
|
9
|
-
return "";
|
|
10
|
-
}
|
|
11
|
-
return LC;
|
|
12
|
-
}
|
|
13
|
-
detect() {
|
|
14
|
-
var _process_env_LC_ALL, _ref, _ref1, _ref2;
|
|
15
|
-
const shellLocale = (_ref2 = (_ref1 = (_ref = (_process_env_LC_ALL = process.env.LC_ALL) !== null && _process_env_LC_ALL !== void 0 ? _process_env_LC_ALL : process.env.LC_MESSAGES) !== null && _ref !== void 0 ? _ref : process.env.LANG) !== null && _ref1 !== void 0 ? _ref1 : process.env.LANGUAGE) !== null && _ref2 !== void 0 ? _ref2 : Intl.DateTimeFormat().resolvedOptions().locale;
|
|
16
|
-
return this.formatShellLocale(shellLocale);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function getLocaleLanguage() {
|
|
20
|
-
const detector = new I18CLILanguageDetector();
|
|
21
|
-
return detector.detect();
|
|
22
|
-
}
|
|
23
|
-
export {
|
|
24
|
-
I18CLILanguageDetector,
|
|
25
|
-
getLocaleLanguage
|
|
26
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { isObject, isString } from "@modern-js/utils/lodash";
|
|
2
|
-
function getObjKeyMap(obj, prefix = "") {
|
|
3
|
-
const result = {};
|
|
4
|
-
Object.keys(obj).forEach((key) => {
|
|
5
|
-
if (isString(obj[key])) {
|
|
6
|
-
result[key] = prefix ? `${prefix}.${key}` : key;
|
|
7
|
-
} else if (isObject(obj[key])) {
|
|
8
|
-
result[key] = getObjKeyMap(obj[key], prefix ? `${prefix}.${key}` : key);
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
return result;
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
getObjKeyMap
|
|
15
|
-
};
|