@eggjs/i18n 4.0.0-beta.35 → 4.0.0-beta.36

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/locales.js CHANGED
@@ -1,65 +1,52 @@
1
- import fs from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { debuglog } from 'node:util';
4
- import { importModule } from '@eggjs/utils';
5
- import ini from 'ini';
6
- import yaml from 'js-yaml';
7
- import { exists, readJSON } from 'utility';
8
1
  import { formatLocale, isObject } from "./utils.js";
9
- const debug = debuglog('egg/i18n/locales');
10
- export async function loadLocaleResources(app, options) {
11
- const localeDirs = options.dirs;
12
- const resources = {};
13
- if (options.dir && !localeDirs.includes(options.dir)) {
14
- app.deprecate('[@eggjs/i18n] `config.i18n.dir` is deprecated, please use `config.i18n.dirs` instead');
15
- localeDirs.push(options.dir);
16
- }
17
- for (const dir of localeDirs) {
18
- if (!(await exists(dir))) {
19
- continue;
20
- }
21
- const names = await fs.readdir(dir);
22
- for (const name of names) {
23
- const filepath = path.join(dir, name);
24
- // support en_US.js => en-US.js
25
- const locale = formatLocale(name.split('.')[0]);
26
- let resource = {};
27
- if (name.endsWith('.js') || name.endsWith('.ts')) {
28
- resource = flattening(await importModule(filepath, {
29
- importDefaultOnly: true,
30
- }));
31
- }
32
- else if (name.endsWith('.json')) {
33
- resource = flattening(await readJSON(filepath));
34
- }
35
- else if (name.endsWith('.properties')) {
36
- resource = ini.parse(await fs.readFile(filepath, 'utf8'));
37
- }
38
- else if (name.endsWith('.yml') || name.endsWith('.yaml')) {
39
- resource = flattening(yaml.load(await fs.readFile(filepath, 'utf8')));
40
- }
41
- resources[locale] = resources[locale] || {};
42
- Object.assign(resources[locale], resource);
43
- }
44
- }
45
- debug('Init locales with %j, got %j resources', options, Object.keys(resources));
46
- app._I18N_RESOURCES = resources;
2
+ import path from "node:path";
3
+ import { debuglog } from "node:util";
4
+ import { exists, readJSON } from "utility";
5
+ import fs from "node:fs/promises";
6
+ import { importModule } from "@eggjs/utils";
7
+ import ini from "ini";
8
+ import yaml from "js-yaml";
9
+
10
+ //#region src/locales.ts
11
+ const debug = debuglog("egg/i18n/locales");
12
+ async function loadLocaleResources(app, options) {
13
+ const localeDirs = options.dirs;
14
+ const resources = {};
15
+ if (options.dir && !localeDirs.includes(options.dir)) {
16
+ app.deprecate("[@eggjs/i18n] `config.i18n.dir` is deprecated, please use `config.i18n.dirs` instead");
17
+ localeDirs.push(options.dir);
18
+ }
19
+ for (const dir of localeDirs) {
20
+ if (!await exists(dir)) continue;
21
+ const names = await fs.readdir(dir);
22
+ for (const name of names) {
23
+ const filepath = path.join(dir, name);
24
+ const locale = formatLocale(name.split(".")[0]);
25
+ let resource = {};
26
+ if (name.endsWith(".js") || name.endsWith(".ts")) resource = flattening(await importModule(filepath, { importDefaultOnly: true }));
27
+ else if (name.endsWith(".json")) resource = flattening(await readJSON(filepath));
28
+ else if (name.endsWith(".properties")) resource = ini.parse(await fs.readFile(filepath, "utf8"));
29
+ else if (name.endsWith(".yml") || name.endsWith(".yaml")) resource = flattening(yaml.load(await fs.readFile(filepath, "utf8")));
30
+ resources[locale] = resources[locale] || {};
31
+ Object.assign(resources[locale], resource);
32
+ }
33
+ }
34
+ debug("Init locales with %j, got %j resources", options, Object.keys(resources));
35
+ app._I18N_RESOURCES = resources;
47
36
  }
48
37
  function flattening(data) {
49
- const result = {};
50
- function deepFlat(data, prefix) {
51
- for (const key in data) {
52
- const value = data[key];
53
- const k = prefix ? prefix + '.' + key : key;
54
- if (isObject(value)) {
55
- deepFlat(value, k);
56
- }
57
- else {
58
- result[k] = String(value);
59
- }
60
- }
61
- }
62
- deepFlat(data, '');
63
- return result;
38
+ const result = {};
39
+ function deepFlat(data$1, prefix) {
40
+ for (const key in data$1) {
41
+ const value = data$1[key];
42
+ const k = prefix ? prefix + "." + key : key;
43
+ if (isObject(value)) deepFlat(value, k);
44
+ else result[k] = String(value);
45
+ }
46
+ }
47
+ deepFlat(data, "");
48
+ return result;
64
49
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2NhbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQztBQUMzQixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUkzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUUzQyxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLEdBQW9CLEVBQUUsT0FBbUI7SUFDakYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNoQyxNQUFNLFNBQVMsR0FBMkMsRUFBRSxDQUFDO0lBRTdELElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxzRkFBc0YsQ0FBQyxDQUFDO1FBQ3RHLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QixTQUFTO1FBQ1gsQ0FB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
50
+
51
+ //#endregion
52
+ export { loadLocaleResources };
package/dist/types.d.ts CHANGED
@@ -1,27 +1,29 @@
1
- import type { I18nConfig } from './config/config.default.ts';
2
- declare module 'egg' {
3
- interface EggAppConfig {
4
- /**
5
- * I18n options
6
- * @member Config#i18n
7
- */
8
- i18n: I18nConfig;
9
- }
10
- interface Application {
11
- isSupportLocale(locale: string): boolean;
12
- gettext(locale: string, key: string, value?: any, ...args: any[]): string;
13
- __(locale: string, key: string, value?: any, ...args: any[]): string;
14
- }
15
- interface Context {
16
- /**
17
- * get and set current request locale
18
- * @member Context#locale
19
- * @return {String} lower case locale string, e.g.: 'zh-cn', 'en-us'
20
- */
21
- locale: string;
22
- gettext(key: string, value?: any, ...args: any[]): string;
23
- __(key: string, value?: any, ...args: any[]): string;
24
- __getLocale(): string;
25
- __setLocale(l: string): void;
26
- }
27
- }
1
+ import { I18nConfig } from "./config/config.default.js";
2
+
3
+ //#region src/types.d.ts
4
+ declare module "egg" {
5
+ interface EggAppConfig {
6
+ /**
7
+ * I18n options
8
+ * @member Config#i18n
9
+ */
10
+ i18n: I18nConfig;
11
+ }
12
+ interface Application {
13
+ isSupportLocale(locale: string): boolean;
14
+ gettext(locale: string, key: string, value?: any, ...args: any[]): string;
15
+ __(locale: string, key: string, value?: any, ...args: any[]): string;
16
+ }
17
+ interface Context {
18
+ /**
19
+ * get and set current request locale
20
+ * @member Context#locale
21
+ * @return {String} lower case locale string, e.g.: 'zh-cn', 'en-us'
22
+ */
23
+ locale: string;
24
+ gettext(key: string, value?: any, ...args: any[]): string;
25
+ __(key: string, value?: any, ...args: any[]): string;
26
+ __getLocale(): string;
27
+ __setLocale(l: string): void;
28
+ }
29
+ }
package/dist/types.js CHANGED
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
1
+ export { };
package/dist/utils.d.ts CHANGED
@@ -1,2 +1,5 @@
1
- export declare function isObject(obj: any): boolean;
2
- export declare function formatLocale(locale: string): string;
1
+ //#region src/utils.d.ts
2
+ declare function isObject(obj: any): boolean;
3
+ declare function formatLocale(locale: string): string;
4
+ //#endregion
5
+ export { formatLocale, isObject };
package/dist/utils.js CHANGED
@@ -1,8 +1,10 @@
1
- export function isObject(obj) {
2
- return Object.prototype.toString.call(obj) === '[object Object]';
1
+ //#region src/utils.ts
2
+ function isObject(obj) {
3
+ return Object.prototype.toString.call(obj) === "[object Object]";
3
4
  }
4
- export function formatLocale(locale) {
5
- // support zh_CN, en_US, zh_Hans_CN, zh_Hant_CN => zh-CN, en-US, zh-hans-cn, zh-hant-cn
6
- return locale.replaceAll('_', '-').toLowerCase();
5
+ function formatLocale(locale) {
6
+ return locale.replaceAll("_", "-").toLowerCase();
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFRO0lBQy9CLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGlCQUFpQixDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE1BQWM7SUFDekMsdUZBQXVGO0lBQ3ZGLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbkQsQ0FBQyJ9
8
+
9
+ //#endregion
10
+ export { formatLocale, isObject };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/i18n",
3
- "version": "4.0.0-beta.35",
3
+ "version": "4.0.0-beta.36",
4
4
  "description": "i18n plugin for egg",
5
5
  "keywords": [
6
6
  "egg",
@@ -8,21 +8,24 @@
8
8
  "eggPlugin",
9
9
  "i18n"
10
10
  ],
11
- "repository": {
12
- "type": "git",
13
- "url": "git+https://github.com/eggjs/egg.git",
14
- "directory": "plugins/i18n"
15
- },
11
+ "homepage": "https://github.com/eggjs/egg/tree/next/plugins/i18n#readme",
16
12
  "bugs": {
17
13
  "url": "https://github.com/eggjs/egg/issues"
18
14
  },
19
- "homepage": "https://github.com/eggjs/egg/tree/next/plugins/i18n#readme",
20
- "author": "gxcsoccer <gxcsoccer@126.com>",
21
15
  "license": "MIT",
22
- "engines": {
23
- "node": ">= 22.18.0"
16
+ "author": "gxcsoccer <gxcsoccer@126.com>",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/eggjs/egg.git",
20
+ "directory": "plugins/i18n"
24
21
  },
22
+ "files": [
23
+ "dist"
24
+ ],
25
25
  "type": "module",
26
+ "main": "./dist/index.js",
27
+ "module": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
26
29
  "exports": {
27
30
  ".": "./dist/index.js",
28
31
  "./app": "./dist/app.js",
@@ -42,34 +45,24 @@
42
45
  "ini": "^6.0.0",
43
46
  "js-yaml": "^4.1.1",
44
47
  "utility": "^2.5.0",
45
- "@eggjs/utils": "5.0.0-beta.35"
46
- },
47
- "peerDependencies": {
48
- "egg": "4.1.0-beta.35"
48
+ "@eggjs/utils": "5.0.0-beta.36"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/ini": "^4.1.1",
52
- "@types/js-yaml": "4",
53
- "@types/node": "^24.10.1",
52
+ "@types/js-yaml": "^4.0.9",
53
+ "@types/node": "^24.10.2",
54
54
  "egg-view-nunjucks": "^2.3.0",
55
- "tsdown": "^0.17.0",
56
55
  "typescript": "^5.9.3",
57
- "vitest": "^4.0.15",
58
- "egg": "4.1.0-beta.35",
59
- "@eggjs/tsconfig": "3.1.0-beta.35",
60
- "@eggjs/mock": "7.0.0-beta.35"
56
+ "@eggjs/mock": "7.0.0-beta.36",
57
+ "egg": "4.1.0-beta.36"
58
+ },
59
+ "peerDependencies": {
60
+ "egg": "4.1.0-beta.36"
61
+ },
62
+ "engines": {
63
+ "node": ">= 22.18.0"
61
64
  },
62
- "files": [
63
- "dist"
64
- ],
65
- "main": "./dist/index.js",
66
- "module": "./dist/index.js",
67
- "types": "./dist/index.d.ts",
68
65
  "scripts": {
69
- "build": "tsdown && rimraf dist *.tsbuildinfo && tsc -p tsconfig.build.json",
70
- "typecheck": "tsc --noEmit",
71
- "lint": "oxlint --type-aware",
72
- "lint:fix": "npm run lint -- --fix",
73
- "test": "vitest run"
66
+ "typecheck": "tsgo --noEmit"
74
67
  }
75
68
  }