@wangyh-quuo/i18n-refactor 1.0.0
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/.mocharc.json +9 -0
- package/README.md +116 -0
- package/dist/bin/i18n-cli.d.ts +3 -0
- package/dist/bin/i18n-cli.d.ts.map +1 -0
- package/dist/bin/scan.d.ts +3 -0
- package/dist/bin/scan.d.ts.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/extract-i18n.d.ts +2 -0
- package/dist/extract-i18n.d.ts.map +1 -0
- package/dist/fileProcessor.d.ts +11 -0
- package/dist/fileProcessor.d.ts.map +1 -0
- package/dist/keyGenerator.d.ts +9 -0
- package/dist/keyGenerator.d.ts.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.esm.js +879 -0
- package/dist/main.esm.js.map +1 -0
- package/dist/utils/exportToExcel.d.ts +13 -0
- package/dist/utils/exportToExcel.d.ts.map +1 -0
- package/dist/utils/index.d.ts +24 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/scan.d.ts +7 -0
- package/dist/utils/scan.d.ts.map +1 -0
- package/locales/test-cli/i18n.config.js +3 -0
- package/locales/test-cli/locales/zh.json +10 -0
- package/locales/test-cli/output/i18n.xlsx +0 -0
- package/locales/test-cli/src/pages/home/aa.js +2 -0
- package/locales/test-cli/src/pages/home/index.vue +25 -0
- package/locales/zh.json +9 -0
- package/output/i18n.xlsx +0 -0
- package/package.json +57 -0
- package/tsconfig.json +44 -0
package/.mocharc.json
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# 18n-refactor
|
|
2
|
+
|
|
3
|
+
An AST-based i18n refactoring tool for Vue & TypeScript projects.
|
|
4
|
+
|
|
5
|
+
i18n-refactor 是一个 基于 AST 的国际化自动重构工具,用于在 Vue / TypeScript 项目中自动完成国际化改造中确定且安全的部分。
|
|
6
|
+
|
|
7
|
+
工具目标不是 100% 全自动,而是:
|
|
8
|
+
|
|
9
|
+
在不破坏业务语义的前提下,最大化减少人工 i18n 成本
|
|
10
|
+
|
|
11
|
+
## ✨ 能做什么
|
|
12
|
+
|
|
13
|
+
✅ 基于 AST(非正则)精确定位字符串
|
|
14
|
+
|
|
15
|
+
✅ 支持 Vue SFC(template / script)
|
|
16
|
+
|
|
17
|
+
✅ 支持 JS / TS 文件
|
|
18
|
+
|
|
19
|
+
✅ 支持多行文本、插值、复合表达式
|
|
20
|
+
|
|
21
|
+
✅ 保持原有代码格式与换行(MagicString)
|
|
22
|
+
|
|
23
|
+
✅ 自动合并已有 i18n JSON,避免 key 覆盖
|
|
24
|
+
|
|
25
|
+
✅ 跨平台支持(Windows / macOS / Linux)
|
|
26
|
+
|
|
27
|
+
✅ 扫描仍未被 $t() / t() 包裹的中文
|
|
28
|
+
|
|
29
|
+
## 🚫 不会做的事(重要)
|
|
30
|
+
|
|
31
|
+
以下场景不会被自动替换,或会被标记为“待人工确认”:
|
|
32
|
+
|
|
33
|
+
逻辑判断 / 枚举值
|
|
34
|
+
|
|
35
|
+
status === '启用'
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
作为 key / 数据标识的字符串
|
|
39
|
+
|
|
40
|
+
getKeyByValue('牛')
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
语义不明确、可能影响业务逻辑的复杂表达式
|
|
44
|
+
|
|
45
|
+
设计原则:宁可少替,也不误替
|
|
46
|
+
|
|
47
|
+
## 📦 使用方式
|
|
48
|
+
```bash
|
|
49
|
+
npx i18n-refactor
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
具体命令参数与模式仍在整理中,当前以项目内使用为主。
|
|
53
|
+
|
|
54
|
+
## ⚙️ 配置文件
|
|
55
|
+
|
|
56
|
+
默认读取项目根目录下的:
|
|
57
|
+
|
|
58
|
+
i18n.config.js
|
|
59
|
+
|
|
60
|
+
基础示例
|
|
61
|
+
```javascript
|
|
62
|
+
module.exports = {
|
|
63
|
+
sourceDir: 'src',
|
|
64
|
+
|
|
65
|
+
output: {
|
|
66
|
+
json: './locales/zh.json',
|
|
67
|
+
excel: './output/i18n.xlsx',
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
defaultLocale: 'zh-CN',
|
|
71
|
+
|
|
72
|
+
keyStrategy: {
|
|
73
|
+
default: 'prefix_increment',
|
|
74
|
+
prefixRoots: ['src/*'],
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
## 🧠 工作方式(简述)
|
|
79
|
+
|
|
80
|
+
使用 Vue Compiler / Babel 解析 AST
|
|
81
|
+
|
|
82
|
+
根据字符串在 AST 中的语义位置判断其角色:
|
|
83
|
+
|
|
84
|
+
逻辑 / key / 枚举 → 跳过
|
|
85
|
+
|
|
86
|
+
UI 显示结果 → 自动国际化
|
|
87
|
+
|
|
88
|
+
使用 MagicString 进行一次性替换,保证格式不变
|
|
89
|
+
|
|
90
|
+
合并生成多语言 JSON
|
|
91
|
+
|
|
92
|
+
## 📄 中文扫描能力
|
|
93
|
+
|
|
94
|
+
工具会扫描并输出仍未被国际化的中文字符串,
|
|
95
|
+
|
|
96
|
+
用于人工补充或后续批量处理。
|
|
97
|
+
|
|
98
|
+
## 🛡 设计理念
|
|
99
|
+
|
|
100
|
+
语义安全优先
|
|
101
|
+
|
|
102
|
+
自动化 ≠ 全自动
|
|
103
|
+
|
|
104
|
+
工程可控 > 覆盖率
|
|
105
|
+
|
|
106
|
+
## 📌 适用场景
|
|
107
|
+
|
|
108
|
+
存量 Vue 项目国际化重构
|
|
109
|
+
|
|
110
|
+
大型项目中文清理
|
|
111
|
+
|
|
112
|
+
团队统一 i18n 改造基线
|
|
113
|
+
|
|
114
|
+
## 📜 License
|
|
115
|
+
|
|
116
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-cli.d.ts","sourceRoot":"","sources":["../../packages/bin/i18n-cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../packages/bin/scan.ts"],"names":[],"mappings":""}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../packages/config.ts"],"names":[],"mappings":";AAyDA,wBAGE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-i18n.d.ts","sourceRoot":"","sources":["../packages/extract-i18n.ts"],"names":[],"mappings":"AAWA,wBAAsB,IAAI,kBA2BzB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 处理 Vue 文件
|
|
3
|
+
* @param {string} filePath 文件路径
|
|
4
|
+
*/
|
|
5
|
+
export declare function processVueFile(filePath: string): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* 处理 JS/TS 文件
|
|
8
|
+
* @param {string} filePath 文件路径
|
|
9
|
+
*/
|
|
10
|
+
export declare function processScriptFile(filePath: string): void;
|
|
11
|
+
//# sourceMappingURL=fileProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileProcessor.d.ts","sourceRoot":"","sources":["../packages/fileProcessor.ts"],"names":[],"mappings":"AAmQA;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,iBAmBpD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,QAKjD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const zhMap: Record<string, string>;
|
|
2
|
+
/**
|
|
3
|
+
* 获取或生成唯一的 key
|
|
4
|
+
* @param {string} text 中文文本
|
|
5
|
+
* @param {string} prefix 模块前缀
|
|
6
|
+
* @returns {string} 唯一的 key
|
|
7
|
+
*/
|
|
8
|
+
export declare function getKeyByText(text: string, prefix: string): string;
|
|
9
|
+
//# sourceMappingURL=keyGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyGenerator.d.ts","sourceRoot":"","sources":["../packages/keyGenerator.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC;AAgDhD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAuBxD"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../packages/main.ts"],"names":[],"mappings":""}
|