@eggjs/i18n 3.0.1 → 4.0.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +10 -18
  2. package/dist/app/extend/application.d.ts +12 -0
  3. package/dist/app/extend/application.js +48 -0
  4. package/dist/app/extend/context.d.ts +76 -0
  5. package/dist/app/extend/context.js +152 -0
  6. package/dist/{commonjs/app.d.ts → app.d.ts} +10 -8
  7. package/dist/app.js +96 -0
  8. package/{src/types.ts → dist/config/config.default.d.ts} +7 -33
  9. package/dist/config/config.default.js +15 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +4 -0
  12. package/dist/locales.d.ts +7 -0
  13. package/dist/locales.js +53 -0
  14. package/dist/types.d.ts +29 -0
  15. package/dist/types.js +1 -0
  16. package/dist/utils.d.ts +5 -0
  17. package/dist/utils.js +10 -0
  18. package/package.json +54 -73
  19. package/dist/commonjs/app/extend/application.d.ts +0 -8
  20. package/dist/commonjs/app/extend/application.js +0 -80
  21. package/dist/commonjs/app/extend/context.d.ts +0 -72
  22. package/dist/commonjs/app/extend/context.js +0 -177
  23. package/dist/commonjs/app.js +0 -103
  24. package/dist/commonjs/config/config.default.d.ts +0 -5
  25. package/dist/commonjs/config/config.default.js +0 -16
  26. package/dist/commonjs/index.d.ts +0 -1
  27. package/dist/commonjs/index.js +0 -4
  28. package/dist/commonjs/locales.d.ts +0 -3
  29. package/dist/commonjs/locales.js +0 -71
  30. package/dist/commonjs/package.json +0 -3
  31. package/dist/commonjs/types.d.ts +0 -74
  32. package/dist/commonjs/types.js +0 -3
  33. package/dist/commonjs/utils.d.ts +0 -2
  34. package/dist/commonjs/utils.js +0 -12
  35. package/dist/esm/app/extend/application.d.ts +0 -8
  36. package/dist/esm/app/extend/application.js +0 -76
  37. package/dist/esm/app/extend/context.d.ts +0 -72
  38. package/dist/esm/app/extend/context.js +0 -174
  39. package/dist/esm/app.d.ts +0 -56
  40. package/dist/esm/app.js +0 -97
  41. package/dist/esm/config/config.default.d.ts +0 -5
  42. package/dist/esm/config/config.default.js +0 -14
  43. package/dist/esm/index.d.ts +0 -1
  44. package/dist/esm/index.js +0 -2
  45. package/dist/esm/locales.d.ts +0 -3
  46. package/dist/esm/locales.js +0 -65
  47. package/dist/esm/package.json +0 -3
  48. package/dist/esm/types.d.ts +0 -74
  49. package/dist/esm/types.js +0 -2
  50. package/dist/esm/utils.d.ts +0 -2
  51. package/dist/esm/utils.js +0 -8
  52. package/dist/package.json +0 -4
  53. package/src/app/extend/application.ts +0 -91
  54. package/src/app/extend/context.ts +0 -192
  55. package/src/app.ts +0 -107
  56. package/src/config/config.default.ts +0 -15
  57. package/src/index.ts +0 -1
  58. package/src/locales.ts +0 -73
  59. package/src/typings/index.d.ts +0 -4
  60. package/src/utils.ts +0 -8
package/package.json CHANGED
@@ -1,96 +1,77 @@
1
1
  {
2
2
  "name": "@eggjs/i18n",
3
- "version": "3.0.1",
4
- "publishConfig": {
5
- "access": "public"
6
- },
7
- "eggPlugin": {
8
- "name": "i18n",
9
- "exports": {
10
- "import": "./dist/esm",
11
- "require": "./dist/commonjs",
12
- "typescript": "./src"
13
- }
14
- },
3
+ "version": "4.0.0-beta.18",
15
4
  "description": "i18n plugin for egg",
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/eggjs/i18n.git"
5
+ "eggPlugin": {
6
+ "name": "i18n"
19
7
  },
20
8
  "keywords": [
21
9
  "egg",
10
+ "egg-plugin",
11
+ "eggPlugin",
22
12
  "i18n"
23
13
  ],
24
- "author": "gxcsoccer <gxcsoccer@126.com>",
25
- "license": "MIT",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git://github.com/eggjs/egg.git",
17
+ "directory": "plugins/i18n"
18
+ },
26
19
  "bugs": {
27
- "url": "https://github.com/eggjs/i18n/issues"
20
+ "url": "https://github.com/eggjs/egg/issues"
28
21
  },
29
- "homepage": "https://github.com/eggjs/i18n#readme",
22
+ "homepage": "https://github.com/eggjs/egg/tree/next/plugins/i18n#readme",
23
+ "author": "gxcsoccer <gxcsoccer@126.com>",
24
+ "license": "MIT",
30
25
  "engines": {
31
- "node": ">= 18.19.0"
26
+ "node": ">= 22.18.0"
27
+ },
28
+ "type": "module",
29
+ "exports": {
30
+ ".": "./dist/index.js",
31
+ "./app": "./dist/app.js",
32
+ "./app/extend/application": "./dist/app/extend/application.js",
33
+ "./app/extend/context": "./dist/app/extend/context.js",
34
+ "./config/config.default": "./dist/config/config.default.js",
35
+ "./locales": "./dist/locales.js",
36
+ "./types": "./dist/types.js",
37
+ "./utils": "./dist/utils.js",
38
+ "./package.json": "./package.json"
39
+ },
40
+ "publishConfig": {
41
+ "access": "public"
32
42
  },
33
43
  "dependencies": {
34
- "@eggjs/core": "^6.2.13",
35
- "@eggjs/utils": "^4.2.5",
36
44
  "humanize-ms": "^2.0.0",
37
45
  "ini": "^5.0.0",
38
46
  "js-yaml": "^4.1.0",
39
- "utility": "^2.4.0"
47
+ "utility": "^2.5.0",
48
+ "@eggjs/utils": "5.0.0-beta.18"
49
+ },
50
+ "peerDependencies": {
51
+ "egg": "4.1.0-beta.18"
40
52
  },
41
53
  "devDependencies": {
42
- "@arethetypeswrong/cli": "^0.17.1",
43
- "@eggjs/bin": "7",
44
- "@eggjs/mock": "6",
45
- "@eggjs/tsconfig": "1",
46
54
  "@types/ini": "^4.1.1",
47
- "@types/js-yaml": "^4.0.9",
48
- "@types/mocha": "10",
49
- "@types/node": "22",
50
- "egg": "4",
55
+ "@types/js-yaml": "4",
56
+ "@types/node": "24.5.2",
51
57
  "egg-view-nunjucks": "^2.3.0",
52
- "eslint": "8",
53
- "eslint-config-egg": "14",
54
- "rimraf": "6",
55
- "tshy": "3",
56
- "tshy-after": "1",
57
- "typescript": "5"
58
- },
59
- "scripts": {
60
- "lint": "eslint --cache src test --ext .ts",
61
- "pretest": "npm run clean && npm run lint -- --fix",
62
- "test": "egg-bin test",
63
- "preci": "npm run clean && npm run lint",
64
- "ci": "egg-bin cov",
65
- "postci": "npm run prepublishOnly && npm run clean",
66
- "clean": "rimraf dist",
67
- "prepublishOnly": "tshy && tshy-after && attw --pack"
68
- },
69
- "type": "module",
70
- "tshy": {
71
- "exports": {
72
- ".": "./src/index.ts",
73
- "./package.json": "./package.json"
74
- }
75
- },
76
- "exports": {
77
- ".": {
78
- "import": {
79
- "types": "./dist/esm/index.d.ts",
80
- "default": "./dist/esm/index.js"
81
- },
82
- "require": {
83
- "types": "./dist/commonjs/index.d.ts",
84
- "default": "./dist/commonjs/index.js"
85
- }
86
- },
87
- "./package.json": "./package.json"
58
+ "tsdown": "^0.15.4",
59
+ "typescript": "5.9.2",
60
+ "vitest": "4.0.0-beta.13",
61
+ "@eggjs/mock": "7.0.0-beta.18",
62
+ "@eggjs/tsconfig": "3.1.0-beta.18"
88
63
  },
89
64
  "files": [
90
- "dist",
91
- "src"
65
+ "dist"
92
66
  ],
93
- "types": "./dist/commonjs/index.d.ts",
94
- "main": "./dist/commonjs/index.js",
95
- "module": "./dist/esm/index.js"
96
- }
67
+ "main": "./dist/index.js",
68
+ "module": "./dist/index.js",
69
+ "types": "./dist/index.d.ts",
70
+ "scripts": {
71
+ "build": "tsdown",
72
+ "typecheck": "tsc --noEmit",
73
+ "lint": "oxlint --type-aware",
74
+ "lint:fix": "npm run lint -- --fix",
75
+ "test": "vitest run"
76
+ }
77
+ }
@@ -1,8 +0,0 @@
1
- import { EggCore } from '@eggjs/core';
2
- export declare const I18N_RESOURCES: unique symbol;
3
- export default class I18nApplication extends EggCore {
4
- [I18N_RESOURCES]: Record<string, Record<string, string>>;
5
- isSupportLocale(locale: string): boolean;
6
- gettext(locale: string, key: string, value?: any, ...args: any[]): string;
7
- __(locale: string, key: string, value?: any, ...args: any[]): string;
8
- }
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.I18N_RESOURCES = void 0;
4
- const node_util_1 = require("node:util");
5
- const core_1 = require("@eggjs/core");
6
- const utils_js_1 = require("../../utils.js");
7
- const debug = (0, node_util_1.debuglog)('@eggjs/i18n/app/extend/application');
8
- exports.I18N_RESOURCES = Symbol('Application i18n resources');
9
- class I18nApplication extends core_1.EggCore {
10
- isSupportLocale(locale) {
11
- return !!this[exports.I18N_RESOURCES][locale];
12
- }
13
- gettext(locale, key, value, ...args) {
14
- if (!locale || !key) {
15
- // __()
16
- // __('en')
17
- return '';
18
- }
19
- const resource = this[exports.I18N_RESOURCES][locale] || {};
20
- let text = resource[key];
21
- if (text === undefined) {
22
- text = key;
23
- }
24
- debug('%s: %j => %j', locale, key, text);
25
- if (!text) {
26
- return '';
27
- }
28
- if (value === undefined) {
29
- // __(locale, key)
30
- return text;
31
- }
32
- if (args.length === 0) {
33
- if ((0, utils_js_1.isObject)(value)) {
34
- // __(locale, key, object)
35
- // __('zh', '{a} {b} {b} {a}', {a: 'foo', b: 'bar'})
36
- // =>
37
- // foo bar bar foo
38
- return formatWithObject(text, value);
39
- }
40
- if (Array.isArray(value)) {
41
- // __(locale, key, array)
42
- // __('zh', '{0} {1} {1} {0}', ['foo', 'bar'])
43
- // =>
44
- // foo bar bar foo
45
- return formatWithArray(text, value);
46
- }
47
- // __(locale, key, value)
48
- return (0, node_util_1.format)(text, value);
49
- }
50
- // __(locale, key, value1, ...)
51
- return (0, node_util_1.format)(text, value, ...args);
52
- }
53
- __(locale, key, value, ...args) {
54
- return this.gettext(locale, key, value, ...args);
55
- }
56
- }
57
- exports.default = I18nApplication;
58
- const ARRAY_INDEX_RE = /\{(\d+)\}/g;
59
- function formatWithArray(text, values) {
60
- return text.replace(ARRAY_INDEX_RE, (original, matched) => {
61
- const index = parseInt(matched);
62
- if (index < values.length) {
63
- return values[index];
64
- }
65
- // not match index, return original text
66
- return original;
67
- });
68
- }
69
- const Object_INDEX_RE = /\{(.+?)\}/g;
70
- function formatWithObject(text, values) {
71
- return text.replace(Object_INDEX_RE, (original, matched) => {
72
- const value = values[matched];
73
- if (value) {
74
- return value;
75
- }
76
- // not match index, return original text
77
- return original;
78
- });
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBNkM7QUFDN0Msc0NBQXNDO0FBQ3RDLDZDQUEwQztBQUUxQyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUVoRCxRQUFBLGNBQWMsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUVuRSxNQUFxQixlQUFnQixTQUFRLGNBQU87SUFHbEQsZUFBZSxDQUFDLE1BQWM7UUFDNUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsS0FBVyxFQUFFLEdBQUcsSUFBVztRQUM5RCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEIsT0FBTztZQUNQLFdBQVc7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVwRCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsa0JBQWtCO1lBQ2xCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLElBQUEsbUJBQVEsRUFBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNwQiwwQkFBMEI7Z0JBQzFCLG9EQUFvRDtnQkFDcEQsS0FBSztnQkFDTCxrQkFBa0I7Z0JBQ2xCLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekIseUJBQXlCO2dCQUN6Qiw4Q0FBOEM7Z0JBQzlDLEtBQUs7Z0JBQ0wsa0JBQWtCO2dCQUNsQixPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELHlCQUF5QjtZQUN6QixPQUFPLElBQUEsa0JBQU0sRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELCtCQUErQjtRQUMvQixPQUFPLElBQUEsa0JBQU0sRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEVBQUUsQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLEtBQVcsRUFBRSxHQUFHLElBQVc7UUFDekQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGO0FBMURELGtDQTBEQztBQUVELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztBQUNwQyxTQUFTLGVBQWUsQ0FBQyxJQUFZLEVBQUUsTUFBYTtJQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELHdDQUF3QztRQUN4QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFDckMsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsTUFBMkI7SUFDakUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELHdDQUF3QztRQUN4QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
@@ -1,72 +0,0 @@
1
- import { Context } from '@eggjs/core';
2
- export default class I18nContext extends Context {
3
- /**
4
- * get current request locale
5
- * @member Context#locale
6
- * @return {String} lower case locale string, e.g.: 'zh-cn', 'en-us'
7
- */
8
- get locale(): string;
9
- set locale(l: string);
10
- /**
11
- * `ctx.__` 的别名。
12
- * @see {@link Context#__}
13
- * @function Context#gettext
14
- */
15
- gettext(key: string, value?: any, ...args: any[]): string;
16
- /**
17
- * 如果开启了 I18n 多语言功能,那么会出现此 API,通过它可以获取到当前请求对应的本地化数据。
18
- *
19
- * 详细使用说明,请查看 {@link I18n}
20
- * - `ctx.__ = function (key, value[, value2, ...])`: 类似 `util.format` 接口
21
- * - `ctx.__ = function (key, values)`: 支持数组下标占位符方式,如
22
- * - `__` 的别名是 `gettext(key, value)`
23
- *
24
- * > NOTE: __ 是两个下划线哦!
25
- * @function Context#__
26
- * @example
27
- * ```js
28
- * ctx.__('{0} {0} {1} {1}'), ['foo', 'bar'])
29
- * ctx.gettext('{0} {0} {1} {1}'), ['foo', 'bar'])
30
- * =>
31
- * foo foo bar bar
32
- * ```
33
- * ##### Controller 下的使用示例
34
- *
35
- * ```js
36
- * module.exports = function* () {
37
- * this.body = {
38
- * message: this.__('Welcome back, %s!', this.user.name),
39
- * // 或者使用 gettext,如果觉得 __ 不好看的话
40
- * // message: this.gettext('Welcome back, %s!', this.user.name),
41
- * user: this.user,
42
- * };
43
- * };
44
- * ```
45
- *
46
- * ##### View 文件下的使用示例
47
- *
48
- * ```html
49
- * <li>{{ __('Email') }}: {{ user.email }}</li>
50
- * <li>
51
- * {{ __('Hello %s, how are you today?', user.name) }}
52
- * </li>
53
- * <li>
54
- * {{ __('{0} {0} {1} {1}'), ['foo', 'bar']) }}
55
- * </li>
56
- * ```
57
- *
58
- * ##### locale 参数获取途径
59
- *
60
- * 优先级从上到下:
61
- *
62
- * - query: `/?locale=en-US`
63
- * - cookie: `locale=zh-TW`
64
- * - header: `Accept-Language: zh-CN,zh;q=0.5`
65
- */
66
- __(key: string, value?: any, ...args: any[]): string;
67
- __locale: string;
68
- __getLocale(): string;
69
- __localeOrigin: string;
70
- __getLocaleOrigin(): string;
71
- __setLocale(locale: string): void;
72
- }
@@ -1,177 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const node_util_1 = require("node:util");
4
- const core_1 = require("@eggjs/core");
5
- const utils_js_1 = require("../../utils.js");
6
- const debug = (0, node_util_1.debuglog)('@eggjs/i18n/app/extend/context');
7
- class I18nContext extends core_1.Context {
8
- /**
9
- * get current request locale
10
- * @member Context#locale
11
- * @return {String} lower case locale string, e.g.: 'zh-cn', 'en-us'
12
- */
13
- get locale() {
14
- return this.__getLocale();
15
- }
16
- set locale(l) {
17
- this.__setLocale(l);
18
- }
19
- /**
20
- * `ctx.__` 的别名。
21
- * @see {@link Context#__}
22
- * @function Context#gettext
23
- */
24
- gettext(key, value, ...args) {
25
- return this.app.gettext(this.locale, key, value, ...args);
26
- }
27
- /**
28
- * 如果开启了 I18n 多语言功能,那么会出现此 API,通过它可以获取到当前请求对应的本地化数据。
29
- *
30
- * 详细使用说明,请查看 {@link I18n}
31
- * - `ctx.__ = function (key, value[, value2, ...])`: 类似 `util.format` 接口
32
- * - `ctx.__ = function (key, values)`: 支持数组下标占位符方式,如
33
- * - `__` 的别名是 `gettext(key, value)`
34
- *
35
- * > NOTE: __ 是两个下划线哦!
36
- * @function Context#__
37
- * @example
38
- * ```js
39
- * ctx.__('{0} {0} {1} {1}'), ['foo', 'bar'])
40
- * ctx.gettext('{0} {0} {1} {1}'), ['foo', 'bar'])
41
- * =>
42
- * foo foo bar bar
43
- * ```
44
- * ##### Controller 下的使用示例
45
- *
46
- * ```js
47
- * module.exports = function* () {
48
- * this.body = {
49
- * message: this.__('Welcome back, %s!', this.user.name),
50
- * // 或者使用 gettext,如果觉得 __ 不好看的话
51
- * // message: this.gettext('Welcome back, %s!', this.user.name),
52
- * user: this.user,
53
- * };
54
- * };
55
- * ```
56
- *
57
- * ##### View 文件下的使用示例
58
- *
59
- * ```html
60
- * <li>{{ __('Email') }}: {{ user.email }}</li>
61
- * <li>
62
- * {{ __('Hello %s, how are you today?', user.name) }}
63
- * </li>
64
- * <li>
65
- * {{ __('{0} {0} {1} {1}'), ['foo', 'bar']) }}
66
- * </li>
67
- * ```
68
- *
69
- * ##### locale 参数获取途径
70
- *
71
- * 优先级从上到下:
72
- *
73
- * - query: `/?locale=en-US`
74
- * - cookie: `locale=zh-TW`
75
- * - header: `Accept-Language: zh-CN,zh;q=0.5`
76
- */
77
- __(key, value, ...args) {
78
- return this.gettext(key, value, ...args);
79
- }
80
- // 1. query: /?locale=en-US
81
- // 2. cookie: locale=zh-TW
82
- // 3. header: Accept-Language: zh-CN,zh;q=0.5
83
- __getLocale() {
84
- if (this.__locale) {
85
- return this.__locale;
86
- }
87
- const { localeAlias, defaultLocale, cookieField, queryField, writeCookie } = this.app.config.i18n;
88
- const cookieLocale = this.cookies.get(cookieField, { signed: false });
89
- // 1. Query
90
- let locale = this.query[queryField];
91
- let localeOrigin = 'query';
92
- // 2. Cookie
93
- if (!locale) {
94
- locale = cookieLocale;
95
- localeOrigin = 'cookie';
96
- }
97
- // 3. Header
98
- if (!locale) {
99
- // Accept-Language: zh-CN,zh;q=0.5
100
- // Accept-Language: zh-CN
101
- let languages = this.acceptsLanguages();
102
- if (languages) {
103
- if (Array.isArray(languages)) {
104
- if (languages[0] === '*') {
105
- languages = languages.slice(1);
106
- }
107
- if (languages.length > 0) {
108
- for (const l of languages) {
109
- const lang = (0, utils_js_1.formatLocale)(l);
110
- if (this.app.isSupportLocale(lang) || localeAlias[lang]) {
111
- locale = lang;
112
- localeOrigin = 'header';
113
- break;
114
- }
115
- }
116
- }
117
- }
118
- else {
119
- locale = languages;
120
- localeOrigin = 'header';
121
- }
122
- }
123
- // all missing, set it to defaultLocale
124
- if (!locale) {
125
- locale = defaultLocale;
126
- localeOrigin = 'default';
127
- }
128
- }
129
- // cookie alias
130
- if (locale in localeAlias) {
131
- const originalLocale = locale;
132
- locale = localeAlias[locale];
133
- debug('Used alias, received %s but using %s', originalLocale, locale);
134
- }
135
- locale = (0, utils_js_1.formatLocale)(locale);
136
- // validate locale
137
- if (!this.app.isSupportLocale(locale)) {
138
- debug('Locale %s is not supported. Using default (%s)', locale, defaultLocale);
139
- locale = defaultLocale;
140
- }
141
- // if header not send, set the locale cookie
142
- if (writeCookie && cookieLocale !== locale && !this.headerSent) {
143
- updateCookie(this, locale);
144
- }
145
- debug('Locale: %s from %s', locale, localeOrigin);
146
- this.__locale = locale;
147
- this.__localeOrigin = localeOrigin;
148
- return locale;
149
- }
150
- __getLocaleOrigin() {
151
- if (this.__localeOrigin) {
152
- return this.__localeOrigin;
153
- }
154
- this.__getLocale();
155
- return this.__localeOrigin;
156
- }
157
- __setLocale(locale) {
158
- this.__locale = locale;
159
- this.__localeOrigin = 'set';
160
- updateCookie(this, locale);
161
- }
162
- }
163
- exports.default = I18nContext;
164
- function updateCookie(ctx, locale) {
165
- const { cookieMaxAge, cookieField, cookieDomain } = ctx.app.config.i18n;
166
- const cookieOptions = {
167
- // make sure browser javascript can read the cookie
168
- httpOnly: false,
169
- maxAge: cookieMaxAge,
170
- signed: false,
171
- domain: cookieDomain,
172
- overwrite: true,
173
- };
174
- ctx.cookies.set(cookieField, locale, cookieOptions);
175
- debug('Saved cookie with locale %s, options: %j', locale, cookieOptions);
176
- }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBcUM7QUFDckMsc0NBQXNDO0FBQ3RDLDZDQUE4QztBQUU5QyxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFRLEVBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQUV6RCxNQUFxQixXQUFZLFNBQVEsY0FBTztJQUM5Qzs7OztPQUlHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLENBQVM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUFXLEVBQUUsS0FBVyxFQUFFLEdBQUcsSUFBVztRQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWlERztJQUNILEVBQUUsQ0FBQyxHQUFXLEVBQUUsS0FBVyxFQUFFLEdBQUcsSUFBVztRQUN6QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFHRCwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLDZDQUE2QztJQUM3QyxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxNQUFNLEVBQUUsV0FBVyxF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
@@ -1,103 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_path_1 = __importDefault(require("node:path"));
7
- const node_util_1 = require("node:util");
8
- const locales_js_1 = require("./locales.js");
9
- const utility_1 = require("utility");
10
- const humanize_ms_1 = require("humanize-ms");
11
- const utils_js_1 = require("./utils.js");
12
- const debug = (0, node_util_1.debuglog)('@eggjs/i18n/app');
13
- /**
14
- * I18n 国际化
15
- *
16
- * 通过设置 Plugin 配置 `i18n: true`,开启多语言支持。
17
- *
18
- * #### 语言文件存储路径
19
- *
20
- * 统一存放在 `config/locale/*.js` 下( 兼容`config/locales/*.js` ),如包含英文,简体中文,繁体中文的语言文件:
21
- *
22
- * ```
23
- * - config/locale/
24
- * - en-US.js
25
- * - zh-CN.js
26
- * - zh-TW.js
27
- * ```
28
- * @class I18n
29
- * @param {App} app Application object.
30
- * @example
31
- *
32
- * #### I18n 文件内容
33
- *
34
- * ```js
35
- * // config/locale/zh-CN.js
36
- * module.exports = {
37
- * "Email": "邮箱",
38
- * "Welcome back, %s!": "欢迎回来, %s!",
39
- * "Hello %s, how are you today?": "你好 %s, 今天过得咋样?",
40
- * };
41
- * ```
42
- *
43
- * ```js
44
- * // config/locale/en-US.js
45
- * module.exports = {
46
- * "Email": "Email",
47
- * };
48
- * ```
49
- * 或者也可以用 JSON 格式的文件:
50
- *
51
- * ```js
52
- * // config/locale/zh-CN.json
53
- * {
54
- * "email": "邮箱",
55
- * "login": "帐号",
56
- * "createdAt": "注册时间"
57
- * }
58
- * ```
59
- */
60
- class I18n {
61
- app;
62
- constructor(app) {
63
- this.app = app;
64
- }
65
- async didLoad() {
66
- const i18nConfig = this.app.config.i18n;
67
- i18nConfig.defaultLocale = (0, utils_js_1.formatLocale)(i18nConfig.defaultLocale);
68
- i18nConfig.cookieMaxAge = (0, humanize_ms_1.ms)(i18nConfig.cookieMaxAge);
69
- i18nConfig.dirs = Array.isArray(i18nConfig.dirs) ? i18nConfig.dirs : [];
70
- // 按 egg > 插件 > 框架 > 应用的顺序遍历 config/locale(config/locales) 目录,加载所有配置文件
71
- for (const unit of this.app.loader.getLoadUnits()) {
72
- let localePath = node_path_1.default.join(unit.path, 'config/locale');
73
- /**
74
- * 优先选择 `config/locale` 目录下的多语言文件,不存在时再选择 `config/locales` 目录
75
- * 避免 2 个目录同时存在时可能导致的冲突
76
- */
77
- if (!(await (0, utility_1.exists)(localePath))) {
78
- localePath = node_path_1.default.join(unit.path, 'config/locales');
79
- }
80
- i18nConfig.dirs.push(localePath);
81
- }
82
- debug('app.config.i18n.dirs:', i18nConfig.dirs);
83
- await (0, locales_js_1.loadLocaleResources)(this.app, i18nConfig);
84
- const app = this.app;
85
- function gettextInContext(key, ...args) {
86
- const ctx = app.ctxStorage.getStore();
87
- return ctx.gettext(key, ...args);
88
- }
89
- // 在 view 中使用 `__(key, value, ...args)`
90
- Object.defineProperties(app.locals, {
91
- __: {
92
- value: gettextInContext,
93
- enumerable: true,
94
- },
95
- gettext: {
96
- value: gettextInContext,
97
- enumerable: true,
98
- },
99
- });
100
- }
101
- }
102
- exports.default = I18n;
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBEQUE2QjtBQUM3Qix5Q0FBcUM7QUFDckMsNkNBQW1EO0FBQ25ELHFDQUFpQztBQUNqQyw2Q0FBaUM7QUFHakMseUNBQTBDO0FBRTFDLE1BQU0sS0FBSyxHQUFHLElBQUEsb0JBQVEsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOENHO0FBRUgsTUFBcUIsSUFBSTtJQUNOLEdBQUcsQ0FBQztJQUVyQixZQUFZLEdBQXNEO1FBQ2hFLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QyxVQUFVLENBQUMsYUFBYSxHQUFHLElBQUEsdUJBQVksRUFBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFBLGdCQUFFLEVBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXRELFVBQVUsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxzRUFBc0U7UUFDdEUsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ2xELElBQUksVUFBVSxHQUFHLG1CQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDdkQ7OztlQUdHO1lBQ0gsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFBLGdCQUFNLEVBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxVQUFVLEdBQUcsbUJBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsS0FBSyxDQUFDLHVCQUF1QixFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRCxNQUFNLElBQUEsZ0NBQW1CLEVBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLFNBQVMsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBVztZQUNuRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRyxDQUFDO1lBQ3ZDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsdUNBQXVDO1FBQ3ZDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ2xDLEVBQUUsRUFBRTtnQkFDRixLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixVQUFVLEVBQUUsSUFBSTthQUNqQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsZ0JBQWdCO2dCQUN2QixVQUFVLEVBQUUsSUFBSTthQUNqQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQS9DRCx1QkErQ0MifQ==
@@ -1,5 +0,0 @@
1
- import type { I18nConfig } from '../types.js';
2
- declare const _default: {
3
- i18n: I18nConfig;
4
- };
5
- export default _default;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- i18n: {
5
- defaultLocale: 'en_US',
6
- dirs: [],
7
- queryField: 'locale',
8
- cookieField: 'locale',
9
- cookieDomain: '',
10
- cookieMaxAge: '1y',
11
- localeAlias: {},
12
- writeCookie: true,
13
- dir: undefined,
14
- },
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsa0JBQWU7SUFDYixJQUFJLEVBQUU7UUFDSixhQUFhLEVBQUUsT0FBTztRQUN0QixJQUFJLEVBQUUsRUFBRTtRQUNSLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLFdBQVcsRUFBRSxRQUFRO1FBQ3JCLFlBQVksRUFBRSxFQUFFO1FBQ2hCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFdBQVcsRUFBRSxFQUFFO1FBQ2YsV0FBVyxFQUFFLElBQUk7UUFDakIsR0FBRyxFQUFFLFNBQVM7S0FDRDtDQUNoQixDQUFDIn0=
@@ -1 +0,0 @@
1
- import './types.js';
@@ -1,4 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("./types.js");
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxzQkFBb0IifQ==
@@ -1,3 +0,0 @@
1
- import type { I18nConfig } from './types.js';
2
- import I18nApplication from './app/extend/application.js';
3
- export declare function loadLocaleResources(app: I18nApplication, options: I18nConfig): Promise<void>;