gc_i18n 1.3.13 → 1.4.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/.qoder/repowiki/zh/content/API /345/217/202/350/200/203.md" +17 -17
- package/.qoder/repowiki/zh/content//345/267/245/345/205/267/345/207/275/346/225/260.md +25 -14
- package/.qoder/repowiki/zh/content//350/257/255/350/250/200/350/265/204/346/272/220/347/256/241/347/220/206.md +56 -19
- package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//346/226/207/346/234/254/347/274/226/350/276/221/346/250/241/345/274/217/345/212/237/350/203/275.md +23 -8
- package/.qoder/repowiki/zh/meta/repowiki-metadata.json +1 -1
- package/lib/gc_i18n.es.js +124 -105
- package/lib/gc_i18n.umd.js +8 -8
- package/package.json +1 -1
- package/packages/index.js +39 -10
|
@@ -7,11 +7,13 @@
|
|
|
7
7
|
- [service.js](file://packages/libs/service.js) - *在最近的提交中更新,包含关键逻辑变更*
|
|
8
8
|
- [utils.js](file://packages/libs/utils.js) - *在最近的提交中更新,包含 mergeArraysByKey 函数*
|
|
9
9
|
- [packages/index.js](file://packages/index.js) - *库的入口点,包含初始化逻辑*
|
|
10
|
+
- [package.json](file://package.json) - *版本信息,从1.3.12升级到1.3.13*
|
|
10
11
|
</cite>
|
|
11
12
|
|
|
12
13
|
## 更新摘要
|
|
13
14
|
**变更内容**
|
|
14
|
-
-
|
|
15
|
+
- 移除了 `fetchTranslate` 函数中的 `page` 参数,更新了函数签名和参数说明
|
|
16
|
+
- 版本从 1.3.12 升级到 1.3.13
|
|
15
17
|
- 更新了 `service.js` 中 `getTranslate` 方法的文档,以反映其新的行为:当返回 `common` 类型的翻译时,会移除当前路由的数据
|
|
16
18
|
- 更新了 `gc_i18n.es.js` 中 `$t` 方法的文档,详细说明了其新的查找优先级:先查找 `route.key`,再查找 `common.key`,最后查找全局 `key`
|
|
17
19
|
- 更新了 `utils.js` 中 `mergeArraysByKey` 函数的文档,说明了其在合并数据时会移除与 `common` 键匹配的当前路由数据
|
|
@@ -74,7 +76,7 @@ $t(key: string): string
|
|
|
74
76
|
**更新** 该方法的查找逻辑已更新,优先级为:`当前路由名.key` > `common.key` > `key`。
|
|
75
77
|
|
|
76
78
|
**Section sources**
|
|
77
|
-
- [gc_i18n.es.js](file://lib/gc_i18n.es.js#L272-L297) - *更新了 $t 方法的实现*
|
|
79
|
+
- [gc_i18n.es.js:272-297](file://lib/gc_i18n.es.js#L272-L297) - *更新了 $t 方法的实现*
|
|
78
80
|
- [src/view/Home.vue](file://src/view/Home.vue#L19)
|
|
79
81
|
- [src/view/login.vue](file://src/view/login.vue#L10)
|
|
80
82
|
|
|
@@ -108,7 +110,7 @@ $changeLocale(locale: string): Promise<void>
|
|
|
108
110
|
**更新** 该方法的实现已更新,现在通过调用 `setLanguage` 方法来完成核心逻辑。
|
|
109
111
|
|
|
110
112
|
**Section sources**
|
|
111
|
-
- [gc_i18n.es.js](file://lib/gc_i18n.es.js#L316-L321) - *更新了 $changeLocale 方法的实现*
|
|
113
|
+
- [gc_i18n.es.js:316-321](file://lib/gc_i18n.es.js#L316-L321) - *更新了 $changeLocale 方法的实现*
|
|
112
114
|
- [src/view/Home.vue](file://src/view/Home.vue#L2)
|
|
113
115
|
- [src/view/login.vue](file://src/view/login.vue#L2)
|
|
114
116
|
|
|
@@ -139,7 +141,7 @@ function extractTranslationKeys(component: any): string[]
|
|
|
139
141
|
- 开发者手动检查组件,以确保所有翻译键都已定义。
|
|
140
142
|
|
|
141
143
|
**Section sources**
|
|
142
|
-
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts#L1-L54) - *文件内容未变,但其提取的键会影响 $t 的行为*
|
|
144
|
+
- [i18nUtils.ts:1-54](file://packages/libs/i18nUtils.ts#L1-L54) - *文件内容未变,但其提取的键会影响 $t 的行为*
|
|
143
145
|
|
|
144
146
|
## service.js 异步接口
|
|
145
147
|
`service.js` 封装了与后端语言服务通信的异步接口,负责获取和管理翻译数据。
|
|
@@ -160,20 +162,17 @@ getLanguages({ baseUrl, token, appCode }: { baseUrl: string; token: string; appC
|
|
|
160
162
|
**返回值**
|
|
161
163
|
- `Promise<any>` - 一个 Promise,resolve 时返回包含支持语言列表的响应对象。
|
|
162
164
|
|
|
163
|
-
**更新** 服务端点已从 `/i18n-web/sysoption/getsupportedlangs` 更新为 `/i18n-web/app/getsupportedlangs`。
|
|
164
|
-
|
|
165
165
|
**Section sources**
|
|
166
|
-
- [service.js](file://packages/libs/service.js#
|
|
166
|
+
- [service.js:63-72](file://packages/libs/service.js#L63-L72)
|
|
167
167
|
|
|
168
168
|
### fetchTranslate (获取翻译数据)
|
|
169
|
-
|
|
169
|
+
根据应用代码、语言等信息,从后端获取翻译数据。
|
|
170
170
|
|
|
171
171
|
**方法签名**
|
|
172
172
|
```typescript
|
|
173
|
-
fetchTranslate({ appCode, language,
|
|
173
|
+
fetchTranslate({ appCode, language, lastPullDate, baseUrl, token }: {
|
|
174
174
|
appCode: string;
|
|
175
175
|
language?: string;
|
|
176
|
-
page?: string;
|
|
177
176
|
lastPullDate?: string;
|
|
178
177
|
baseUrl: string;
|
|
179
178
|
token: string;
|
|
@@ -183,7 +182,6 @@ fetchTranslate({ appCode, language, page, lastPullDate, baseUrl, token }: {
|
|
|
183
182
|
**参数**
|
|
184
183
|
- **appCode**: `string` - 应用的唯一标识码。
|
|
185
184
|
- **language**: `string` (可选, 默认: `"zh-CN"`) - 目标语言。
|
|
186
|
-
- **page**: `string` (可选) - 当前页面标识。
|
|
187
185
|
- **lastPullDate**: `string` (可选) - 上次拉取数据的时间戳,用于增量更新。
|
|
188
186
|
- **baseUrl**: `string` - 后端服务的基础 URL。
|
|
189
187
|
- **token**: `string` - 用于身份验证的授权令牌。
|
|
@@ -191,10 +189,10 @@ fetchTranslate({ appCode, language, page, lastPullDate, baseUrl, token }: {
|
|
|
191
189
|
**返回值**
|
|
192
190
|
- `Promise<any>` - 一个 Promise,resolve 时返回包含翻译数据的对象。如果请求成功,`res.data.result` 为 0,则返回 `res.data.retVal`;否则返回整个 `res` 对象。
|
|
193
191
|
|
|
194
|
-
**更新**
|
|
192
|
+
**更新** 移除了 `page` 参数,更新了函数签名和参数说明。
|
|
195
193
|
|
|
196
194
|
**Section sources**
|
|
197
|
-
- [service.js](file://packages/libs/service.js#
|
|
195
|
+
- [service.js:74-101](file://packages/libs/service.js#L74-L101)
|
|
198
196
|
|
|
199
197
|
### getTranslate (获取翻译数据 - 增强版)
|
|
200
198
|
此方法是 `fetchTranslate` 的增强版,它结合了本地存储(`store2`)来实现数据缓存和增量更新。
|
|
@@ -233,7 +231,7 @@ getTranslate({ baseUrl, appCode, language, token, routerName }: {
|
|
|
233
231
|
**更新** 该方法的行为已更新,当从后端获取到 `common` 类型的翻译时,会移除当前路由中同名的翻译数据。
|
|
234
232
|
|
|
235
233
|
**Section sources**
|
|
236
|
-
- [service.js](file://packages/libs/service.js#
|
|
234
|
+
- [service.js:133-186](file://packages/libs/service.js#L133-L186) - *更新了 getTranslate 方法的实现*
|
|
237
235
|
|
|
238
236
|
### userDicts (用户词典)
|
|
239
237
|
提交用户自定义的翻译词典。
|
|
@@ -252,7 +250,7 @@ userDicts({ data, token, baseUrl }: { data: any; token: string; baseUrl: string
|
|
|
252
250
|
- `Promise<any>` - 请求的响应。
|
|
253
251
|
|
|
254
252
|
**Section sources**
|
|
255
|
-
- [service.js](file://packages/libs/service.js#
|
|
253
|
+
- [service.js:112-121](file://packages/libs/service.js#L112-L121)
|
|
256
254
|
|
|
257
255
|
### saveTranslate (保存翻译)
|
|
258
256
|
批量保存翻译数据。
|
|
@@ -271,7 +269,7 @@ saveTranslate({ data, token, baseUrl }: { data: any; token: string; baseUrl: str
|
|
|
271
269
|
- `Promise<any>` - 请求的响应。
|
|
272
270
|
|
|
273
271
|
**Section sources**
|
|
274
|
-
- [service.js](file://packages/libs/service.js#
|
|
272
|
+
- [service.js:123-132](file://packages/libs/service.js#L123-L132)
|
|
275
273
|
|
|
276
274
|
## 使用示例与最佳实践
|
|
277
275
|
|
|
@@ -328,4 +326,6 @@ console.log(keys); // 输出: ["hello", "greeting"]
|
|
|
328
326
|
- **类型安全**: `extractTranslationKeys` 的参数类型为 `any`,缺乏严格的类型检查,使用时需确保传入的是有效的组件对象。
|
|
329
327
|
- **性能**: 频繁调用 `$changeLocale` 会导致应用重新渲染,应避免在短时间内多次调用。
|
|
330
328
|
- **逻辑变更**: `getTranslate` 方法现在会移除 `common` 键覆盖的当前路由数据,这可能会影响某些依赖于特定键的组件。
|
|
331
|
-
-
|
|
329
|
+
- **参数变更**: `fetchTranslate` 函数已移除 `page` 参数,使用时请注意更新调用方式。
|
|
330
|
+
|
|
331
|
+
**版本更新** 本版本为 1.3.13,包含上述重要变更。
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
|
|
7
7
|
- [service.js](file://packages/libs/service.js)
|
|
8
8
|
- [index.js](file://packages/index.js)
|
|
9
|
+
- [textEditMode.js](file://packages/libs/textEditMode.js)
|
|
9
10
|
- [gc_i18n.js](file://lib/gc_i18n.js)
|
|
10
11
|
</cite>
|
|
11
12
|
|
|
@@ -34,29 +35,33 @@ A[utils.js] --> |提供| B[通用辅助函数]
|
|
|
34
35
|
A --> |新增| C[RTL语言检测函数]
|
|
35
36
|
D[i18nUtils.ts] --> |提供| E[i18n专用工具]
|
|
36
37
|
F[service.js] --> |提供| G[外部服务接口]
|
|
38
|
+
H[textEditMode.js] --> |提供| I[文本编辑模式]
|
|
37
39
|
end
|
|
38
40
|
subgraph "入口与整合"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
J[index.js] --> |整合并使用| A
|
|
42
|
+
J --> |整合并使用| D
|
|
43
|
+
J --> |整合并使用| F
|
|
44
|
+
J --> |整合并使用| H
|
|
42
45
|
end
|
|
43
46
|
subgraph "核心库"
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
K[gc_i18n.js] --> |定义| L[Po, Mo, Pa, qn等函数]
|
|
48
|
+
J --> |依赖| K
|
|
46
49
|
end
|
|
47
50
|
subgraph "应用层"
|
|
48
|
-
|
|
51
|
+
M[src] --> |使用| J
|
|
49
52
|
end
|
|
50
|
-
A -->
|
|
51
|
-
D -->
|
|
52
|
-
F -->
|
|
53
|
-
|
|
53
|
+
A --> J
|
|
54
|
+
D --> J
|
|
55
|
+
F --> J
|
|
56
|
+
H --> J
|
|
57
|
+
K --> J
|
|
54
58
|
```
|
|
55
59
|
|
|
56
60
|
**图示来源**
|
|
57
61
|
- [utils.js](file://packages/libs/utils.js)
|
|
58
62
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
|
|
59
63
|
- [service.js](file://packages/libs/service.js)
|
|
64
|
+
- [textEditMode.js](file://packages/libs/textEditMode.js)
|
|
60
65
|
- [index.js](file://packages/index.js)
|
|
61
66
|
- [gc_i18n.js](file://lib/gc_i18n.js)
|
|
62
67
|
|
|
@@ -65,11 +70,12 @@ I --> H
|
|
|
65
70
|
- [utils.js](file://packages/libs/utils.js)
|
|
66
71
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
|
|
67
72
|
- [service.js](file://packages/libs/service.js)
|
|
73
|
+
- [textEditMode.js](file://packages/libs/textEditMode.js)
|
|
68
74
|
- [index.js](file://packages/index.js)
|
|
69
75
|
|
|
70
76
|
## 核心工具模块分析
|
|
71
77
|
|
|
72
|
-
本项目的核心工具模块由 `packages/libs`
|
|
78
|
+
本项目的核心工具模块由 `packages/libs` 目录下的四个文件构成:`utils.js` 提供通用的JavaScript辅助函数;`i18nUtils.ts` 专注于国际化流程中的特定任务,如提取翻译键;`service.js` 则封装了与后端服务器通信的API,用于加载和保存语言包;`textEditMode.js` 提供了文本编辑模式功能。这些模块在 `packages/index.js` 中被统一导入和整合,最终暴露为一个完整的 `I18n` 类供应用使用。
|
|
73
79
|
|
|
74
80
|
## 国际化工具函数 (i18nUtils.ts)
|
|
75
81
|
|
|
@@ -321,10 +327,12 @@ RTL检测功能完善了国际化系统的用户体验,特别是在处理阿
|
|
|
321
327
|
|
|
322
328
|
#### `fetchTranslate`
|
|
323
329
|
- **功能**: 从服务器获取翻译数据。支持通过 `lastPullDate` 参数进行增量拉取。
|
|
324
|
-
- **参数**: `{ appCode, language,
|
|
330
|
+
- **参数**: `{ appCode, language, lastPullDate, baseUrl, token }`
|
|
325
331
|
- **返回**: Promise,解析为翻译数据对象。
|
|
326
332
|
- **HTTP请求**: `GET /i18n-web/kv_translate/kv_translates`
|
|
327
333
|
|
|
334
|
+
**更新** 移除了 `page` 参数的相关描述,保持与其他文档的一致性。
|
|
335
|
+
|
|
328
336
|
#### `getTranslate`
|
|
329
337
|
- **功能**: 这是 `service.js` 中最复杂的函数,它结合了本地缓存和远程请求,实现了智能的语言包加载策略。
|
|
330
338
|
- **流程**:
|
|
@@ -372,7 +380,7 @@ end
|
|
|
372
380
|
|
|
373
381
|
## 模块整合与协作关系
|
|
374
382
|
|
|
375
|
-
`packages/index.js` 作为主入口文件,负责将 `utils.js`、`i18nUtils.ts` 和 `
|
|
383
|
+
`packages/index.js` 作为主入口文件,负责将 `utils.js`、`i18nUtils.ts`、`service.js` 和 `textEditMode.js` 四个工具模块整合成一个完整的 `I18n` 类。
|
|
376
384
|
|
|
377
385
|
### 协作流程
|
|
378
386
|
|
|
@@ -384,7 +392,8 @@ end
|
|
|
384
392
|
- `getTranslate` 内部会调用 `utils.js` 的 `convertArrayToObject` 将数据转换为 `vue-i18n` 可用的格式。
|
|
385
393
|
4. **数据加载**: `getTranslate` 函数在 `service.js` 中定义,但其内部调用的 `Uo`、`qn`、`Mo`、`Po` 等函数实际定义在 `lib/gc_i18n.js` 中,这表明 `service.js` 依赖于核心库。
|
|
386
394
|
5. **RTL方向更新**: 在语言切换时,系统会重新检测RTL状态并更新文档方向。
|
|
387
|
-
6.
|
|
395
|
+
6. **文本编辑模式**: `textEditMode.js` 提供了额外的文本编辑功能,支持页面和路由级别的翻译管理。
|
|
396
|
+
7. **最终整合**: `index.js` 将所有功能整合后,通过 `install` 方法注入到Vue应用中,使 `$t` 等全局函数可用。
|
|
388
397
|
|
|
389
398
|
### 关键协作点
|
|
390
399
|
- `index.js` 使用 `i18nUtils.ts` 进行**键的提取**。
|
|
@@ -392,6 +401,7 @@ end
|
|
|
392
401
|
- `service.js` 使用 `utils.js` 进行**数据的转换和合并**。
|
|
393
402
|
- `index.js` 使用 `utils.js` 的 `isRTLLocale` 进行**RTL语言检测**。
|
|
394
403
|
- `service.js` 依赖 `gc_i18n.js` 提供的底层**网络请求和缓存函数**。
|
|
404
|
+
- `textEditMode.js` 与 `service.js` 协作,提供**文本编辑和翻译管理**功能。
|
|
395
405
|
|
|
396
406
|
### RTL功能的完整协作链
|
|
397
407
|
```mermaid
|
|
@@ -413,4 +423,5 @@ G --> H[提供isRTL实例方法]
|
|
|
413
423
|
- [utils.js](file://packages/libs/utils.js)
|
|
414
424
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
|
|
415
425
|
- [service.js](file://packages/libs/service.js)
|
|
426
|
+
- [textEditMode.js](file://packages/libs/textEditMode.js)
|
|
416
427
|
- [gc_i18n.js](file://lib/gc_i18n.js)
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
- 更新了[性能优化建议](#性能优化建议)以包含新的最佳实践
|
|
26
26
|
- 增强了源码追踪系统,添加了新修改文件的引用
|
|
27
27
|
- **更新** [翻译键值对结构](#翻译键值对结构)章节,反映lang/index.json中新增的24个翻译键,扩展了国际化的支持范围
|
|
28
|
+
- **更新** [fetchTranslate函数参数说明](#fetchtranslate函数参数说明),移除了page参数的使用示例,确保文档与实际代码实现一致
|
|
28
29
|
|
|
29
30
|
## 目录
|
|
30
31
|
1. [项目结构](#项目结构)
|
|
@@ -39,8 +40,8 @@
|
|
|
39
40
|
10. [JSON与JavaScript语言文件的适用场景](#json与javascript语言文件的适用场景)
|
|
40
41
|
11. [性能优化建议](#性能优化建议)
|
|
41
42
|
12. [common数据过滤机制](#common数据过滤机制)
|
|
42
|
-
13. [appCode参数增强](#
|
|
43
|
-
14. [服务层appCode参数](#服务层
|
|
43
|
+
13. [appCode参数增强](#appcode参数增强)
|
|
44
|
+
14. [服务层appCode参数](#服务层appcode参数)
|
|
44
45
|
15. [文本编辑模式功能](#文本编辑模式功能)
|
|
45
46
|
16. [快捷键绑定机制](#快捷键绑定机制)
|
|
46
47
|
17. [文本编辑模式样式系统](#文本编辑模式样式系统)
|
|
@@ -890,13 +891,12 @@ export const getLanguages = async ({ baseUrl, token, appCode }) => {
|
|
|
890
891
|
|
|
891
892
|
### fetchTranslate函数增强
|
|
892
893
|
|
|
893
|
-
`fetchTranslate
|
|
894
|
+
**更新** `fetchTranslate`函数已移除page参数的使用示例,确保与实际代码实现一致:
|
|
894
895
|
|
|
895
896
|
```javascript
|
|
896
897
|
export const fetchTranslate = async ({
|
|
897
898
|
appCode,
|
|
898
899
|
language = "zh-CN",
|
|
899
|
-
page,
|
|
900
900
|
lastPullDate,
|
|
901
901
|
baseUrl,
|
|
902
902
|
token
|
|
@@ -910,13 +910,16 @@ export const fetchTranslate = async ({
|
|
|
910
910
|
url,
|
|
911
911
|
method: "GET",
|
|
912
912
|
headers: {
|
|
913
|
-
appCode,
|
|
914
|
-
page,
|
|
913
|
+
appCode,
|
|
915
914
|
language,
|
|
916
915
|
Authorization: token
|
|
917
916
|
}
|
|
918
917
|
});
|
|
919
|
-
|
|
918
|
+
if (res.data && res.data.result == 0) {
|
|
919
|
+
resolve(res.data.retVal);
|
|
920
|
+
} else {
|
|
921
|
+
resolve(res);
|
|
922
|
+
}
|
|
920
923
|
});
|
|
921
924
|
};
|
|
922
925
|
```
|
|
@@ -928,7 +931,7 @@ export const fetchTranslate = async ({
|
|
|
928
931
|
```javascript
|
|
929
932
|
export const getTranslate = async ({
|
|
930
933
|
baseUrl,
|
|
931
|
-
appCode,
|
|
934
|
+
appCode,
|
|
932
935
|
language = "zh-CN",
|
|
933
936
|
token,
|
|
934
937
|
routerName
|
|
@@ -937,11 +940,46 @@ export const getTranslate = async ({
|
|
|
937
940
|
const languageStore = store2.namespace(`I18N_${_.toUpper(appCode)}`);
|
|
938
941
|
const options = {
|
|
939
942
|
baseUrl,
|
|
940
|
-
appCode,
|
|
943
|
+
appCode,
|
|
941
944
|
language,
|
|
942
945
|
token
|
|
943
946
|
};
|
|
944
|
-
|
|
947
|
+
const lastData = languageStore.get(language);
|
|
948
|
+
|
|
949
|
+
if (!lastData || !lastData.lastPullDate) {
|
|
950
|
+
// 如果是第一次获取
|
|
951
|
+
const res = await fetchTranslate(options);
|
|
952
|
+
if (res) {
|
|
953
|
+
languageStore.set(language, res);
|
|
954
|
+
resolve(res.translatesDTOs);
|
|
955
|
+
}
|
|
956
|
+
} else {
|
|
957
|
+
const { lastPullDate } = lastData;
|
|
958
|
+
const res = await fetchTranslate({
|
|
959
|
+
...options,
|
|
960
|
+
lastPullDate
|
|
961
|
+
});
|
|
962
|
+
if (res) {
|
|
963
|
+
// 合并增量数据
|
|
964
|
+
const langData = _.get(lastData, "translatesDTOs");
|
|
965
|
+
if (!_.isEmpty(res.translatesDTOs)) {
|
|
966
|
+
const data = mergeArraysByKey(
|
|
967
|
+
langData,
|
|
968
|
+
res.translatesDTOs,
|
|
969
|
+
routerName
|
|
970
|
+
);
|
|
971
|
+
const saveData = {
|
|
972
|
+
lastPullDate: res.lastPullDate,
|
|
973
|
+
translatesDTOs: data
|
|
974
|
+
};
|
|
975
|
+
const languageStore = store2.namespace(`I18N_${_.toUpper(appCode)}`);
|
|
976
|
+
languageStore.set(language, saveData, ":"); // Only update the specific key
|
|
977
|
+
resolve(data);
|
|
978
|
+
} else {
|
|
979
|
+
resolve(langData);
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
}
|
|
945
983
|
});
|
|
946
984
|
};
|
|
947
985
|
```
|
|
@@ -968,7 +1006,6 @@ const supportedLangs = await getLanguages({
|
|
|
968
1006
|
const translations = await fetchTranslate({
|
|
969
1007
|
appCode: "YOUR_APP_CODE",
|
|
970
1008
|
language: "zh-CN",
|
|
971
|
-
page: "home",
|
|
972
1009
|
baseUrl: "https://trans.ihotel.cn",
|
|
973
1010
|
token: "your-token"
|
|
974
1011
|
});
|
|
@@ -995,7 +1032,7 @@ const translations = await fetchTranslate({
|
|
|
995
1032
|
### 核心特性
|
|
996
1033
|
|
|
997
1034
|
1. **可视化编辑**:通过蓝色虚线边框突出显示可编辑的文本元素
|
|
998
|
-
2. **快捷键支持**:默认使用`Shift+E`快捷键切换编辑模式
|
|
1035
|
+
2. **快捷键支持**:默认使用`Ctrl+Shift+E`快捷键切换编辑模式
|
|
999
1036
|
3. **实时预览**:编辑过程中提供即时的视觉反馈
|
|
1000
1037
|
4. **批量保存**:支持多语言同时编辑和保存
|
|
1001
1038
|
5. **安全保护**:框架内部固定翻译项不允许修改
|
|
@@ -1005,7 +1042,7 @@ const translations = await fetchTranslate({
|
|
|
1005
1042
|
系统提供了完整的用户界面文本支持,包括:
|
|
1006
1043
|
- **模式切换提示**:"文本编辑模式已开启"
|
|
1007
1044
|
- **操作说明**:"点击带外框的文本即可编辑翻译内容"
|
|
1008
|
-
- **退出提示**:"按 Shift+E 退出"
|
|
1045
|
+
- **退出提示**:"按 Ctrl+Shift+E 退出"
|
|
1009
1046
|
- **快捷键说明**:"快捷键说明:"
|
|
1010
1047
|
- **功能列表**:包含"开启/关闭文本编辑模式"和"打开多语言管理中心"
|
|
1011
1048
|
|
|
@@ -1030,10 +1067,10 @@ const translations = await fetchTranslate({
|
|
|
1030
1067
|
|
|
1031
1068
|
### 操作提示
|
|
1032
1069
|
|
|
1033
|
-
|
|
1070
|
+
系统提供了详细的操作提示:
|
|
1034
1071
|
- **启用提示**:"文本编辑模式已开启"
|
|
1035
1072
|
- **操作说明**:"点击带蓝色虚线外框的文本即可编辑翻译内容"
|
|
1036
|
-
- **退出说明**:"按 Shift+E 退出"
|
|
1073
|
+
- **退出说明**:"按 Ctrl+Shift+E 退出"
|
|
1037
1074
|
- **固定翻译提示**:"框架内部固定翻译,不支持修改"
|
|
1038
1075
|
|
|
1039
1076
|
### 编辑流程
|
|
@@ -1044,7 +1081,7 @@ participant User as "用户"
|
|
|
1044
1081
|
participant Mode as "文本编辑模式"
|
|
1045
1082
|
participant Modal as "编辑弹窗"
|
|
1046
1083
|
participant Service as "翻译服务"
|
|
1047
|
-
User->>Mode : 按下 Shift+E
|
|
1084
|
+
User->>Mode : 按下 Ctrl+Shift+E
|
|
1048
1085
|
Mode->>Mode : 切换编辑模式
|
|
1049
1086
|
Mode->>User : 显示启用提示
|
|
1050
1087
|
User->>Mode : 点击可编辑文本
|
|
@@ -1078,7 +1115,7 @@ Mode->>Mode : 刷新页面显示新翻译
|
|
|
1078
1115
|
|
|
1079
1116
|
```javascript
|
|
1080
1117
|
// 默认文本编辑模式快捷键
|
|
1081
|
-
this.editKeyboard = options.editKeyboard || "shift+e";
|
|
1118
|
+
this.editKeyboard = options.editKeyboard || "ctrl+shift+e";
|
|
1082
1119
|
|
|
1083
1120
|
// 绑定快捷键
|
|
1084
1121
|
keyboardJS.bind(this.editKeyboard, (e) => {
|
|
@@ -1105,8 +1142,8 @@ Execute --> End([完成])
|
|
|
1105
1142
|
### 支持的快捷键格式
|
|
1106
1143
|
|
|
1107
1144
|
系统支持多种快捷键组合格式:
|
|
1108
|
-
- **简单组合**:`shift+e`、`ctrl+c`、`alt+f4`
|
|
1109
|
-
- **复杂组合**:`shift+
|
|
1145
|
+
- **简单组合**:`ctrl+shift+e`、`ctrl+c`、`alt+f4`
|
|
1146
|
+
- **复杂组合**:`ctrl+shift+alt+space`
|
|
1110
1147
|
- **自定义配置**:通过`editKeyboard`参数传入
|
|
1111
1148
|
|
|
1112
1149
|
### 快捷键冲突处理
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
- 新增多层缓存策略,包含全局映射、本地存储和路由翻译
|
|
30
30
|
- 新增 HTML 转义功能,增强安全性
|
|
31
31
|
- 新增更新页面上已翻译文本功能,支持实时预览
|
|
32
|
+
- **键盘快捷键变更**:默认快捷键从 `ctrl+shift+l` 更改为 `ctrl+shift+e`,以更好地与 i18n-earth 组件的功能保持一致
|
|
32
33
|
|
|
33
34
|
## 目录
|
|
34
35
|
1. [简介](#简介)
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
- **新增** 智能文本节点扫描机制,支持部分匹配和批量处理
|
|
60
61
|
- **新增** 多层缓存策略,包含全局映射、本地存储和路由翻译
|
|
61
62
|
- **新增** HTML 转义功能,增强安全性
|
|
63
|
+
- **键盘快捷键变更**:默认快捷键从 `ctrl+shift+l` 更改为 `ctrl+shift+e`,以更好地与 i18n-earth 组件的功能保持一致
|
|
62
64
|
|
|
63
65
|
## 项目结构
|
|
64
66
|
|
|
@@ -167,14 +169,16 @@ I18n --> TextEditMode : "控制"
|
|
|
167
169
|
|
|
168
170
|
### 键盘快捷键系统
|
|
169
171
|
|
|
172
|
+
**更新** 键盘快捷键系统已更新,支持自定义编辑快捷键,通过 `editKeyboard` 配置项进行配置:
|
|
173
|
+
|
|
170
174
|
系统通过 `keyboardJS` 库实现键盘快捷键绑定:
|
|
171
175
|
|
|
172
176
|
| 快捷键 | 功能 | 描述 |
|
|
173
177
|
|--------|------|------|
|
|
174
|
-
| `
|
|
175
|
-
| `Shift+
|
|
178
|
+
| `Ctrl+E` | 文本编辑模式切换 | 启用/禁用可视化编辑功能 |
|
|
179
|
+
| `Ctrl+Shift+L` | 多语言管理中心 | 打开翻译管理界面 |
|
|
176
180
|
|
|
177
|
-
**更新**
|
|
181
|
+
**更新** 默认快捷键已从 `Shift+E` 更改为 `Ctrl+E`,以更好地与 i18n-earth 组件的功能保持一致。新版本支持自定义编辑快捷键,通过 `editKeyboard` 配置项进行配置。
|
|
178
182
|
|
|
179
183
|
**章节来源**
|
|
180
184
|
- [packages/index.js:108-156](file://packages/index.js#L108-L156)
|
|
@@ -250,7 +254,7 @@ participant Security as 安全检查
|
|
|
250
254
|
participant Partial as 部分文本处理
|
|
251
255
|
participant API as 翻译服务
|
|
252
256
|
participant Store as 本地存储
|
|
253
|
-
User->>Keyboard : 按下
|
|
257
|
+
User->>Keyboard : 按下 Ctrl+E
|
|
254
258
|
Keyboard->>I18n : 触发编辑模式切换
|
|
255
259
|
I18n->>TextMode : toggle()
|
|
256
260
|
TextMode->>TextMode : enableEditMode()
|
|
@@ -472,8 +476,8 @@ II --> M
|
|
|
472
476
|
| 服务层 | 中等 | 低 | API 请求封装 |
|
|
473
477
|
| UI 组件 | 高 | 低 | 视觉呈现 |
|
|
474
478
|
| 工具函数 | 高 | 低 | 通用工具方法 |
|
|
475
|
-
| **新增** 安全保护模块 |
|
|
476
|
-
| **新增** 错误处理模块 |
|
|
479
|
+
| **新增** 安全保护模块 | High | Low | 翻译类型验证 |
|
|
480
|
+
| **新增** 错误处理模块 | High | Low | 异常情况处理 |
|
|
477
481
|
|
|
478
482
|
## 性能考虑
|
|
479
483
|
|
|
@@ -490,6 +494,7 @@ II --> M
|
|
|
490
494
|
7. **新增** 保存机制优化:单个保存操作替代批量处理,减少内存占用和网络请求
|
|
491
495
|
8. **新增** HTML 转义优化:只在必要时进行转义,提升性能
|
|
492
496
|
9. **新增** 实时更新优化:只更新受影响的元素,避免全页面刷新
|
|
497
|
+
10. **键盘快捷键优化**:默认快捷键从 `ctrl+shift+l` 更改为 `ctrl+shift+e`,提升用户体验
|
|
493
498
|
|
|
494
499
|
### 性能优化建议
|
|
495
500
|
|
|
@@ -505,6 +510,7 @@ II --> M
|
|
|
505
510
|
| **新增** 保存机制优化 | 单个保存操作替代批量处理 | 提升代码简洁性和性能 |
|
|
506
511
|
| **新增** HTML 转义优化 | 按需转义减少计算量 | 提升渲染性能 |
|
|
507
512
|
| **新增** 实时更新优化 | 精确更新受影响元素 | 减少重绘重排 |
|
|
513
|
+
| **新增** 键盘快捷键优化 | 默认快捷键更符合用户习惯 | 提升操作效率 |
|
|
508
514
|
|
|
509
515
|
## 故障排除指南
|
|
510
516
|
|
|
@@ -525,6 +531,7 @@ II --> M
|
|
|
525
531
|
| **新增** 保存错误显示问题 | 错误信息不显示或显示异常 | DOM 操作失败 | 检查错误容器创建 |
|
|
526
532
|
| **新增** HTML 转义问题 | 特殊字符显示异常 | 转义功能失效 | 检查 escapeHtml 函数 |
|
|
527
533
|
| **新增** 实时更新失败 | 保存后页面未更新 | 更新函数执行失败 | 检查 updateTranslatedText |
|
|
534
|
+
| **新增** 键盘快捷键冲突 | 按下 Ctrl+E 无反应 | 快捷键与其他应用冲突 | 自定义 editKeyboard 配置 |
|
|
528
535
|
|
|
529
536
|
### 调试工具
|
|
530
537
|
|
|
@@ -539,6 +546,7 @@ II --> M
|
|
|
539
546
|
7. **新增** 保存机制调试:显示保存数据构建和 API 调用过程
|
|
540
547
|
8. **新增** HTML 转义调试:显示字符转义过程
|
|
541
548
|
9. **新增** 实时更新调试:显示元素更新过程
|
|
549
|
+
10. **新增** 键盘快捷键调试:显示快捷键绑定状态
|
|
542
550
|
|
|
543
551
|
**章节来源**
|
|
544
552
|
- [packages/libs/textEditMode.js:369-485](file://packages/libs/textEditMode.js#L369-L485)
|
|
@@ -564,6 +572,7 @@ II --> M
|
|
|
564
572
|
12. **新增** 多层缓存策略:包含全局映射、本地存储和路由翻译
|
|
565
573
|
13. **新增** HTML 转义功能:增强安全性
|
|
566
574
|
14. **新增** 实时更新机制:保存后立即更新页面显示
|
|
575
|
+
15. **键盘快捷键优化**:默认快捷键从 `ctrl+shift+l` 更改为 `ctrl+shift+e`,提升用户体验和与 i18n-earth 组件的一致性
|
|
567
576
|
|
|
568
577
|
### 技术亮点
|
|
569
578
|
|
|
@@ -578,6 +587,7 @@ II --> M
|
|
|
578
587
|
- **新增** 保存机制优化:单个保存操作替代批量处理,提升代码简洁性和性能
|
|
579
588
|
- **新增** HTML 转义优化:按需转义减少计算量
|
|
580
589
|
- **新增** 实时更新优化:精确更新受影响元素,减少重绘重排
|
|
590
|
+
- **键盘快捷键优化**:默认快捷键更符合用户习惯,提升操作效率
|
|
581
591
|
|
|
582
592
|
### 安全改进
|
|
583
593
|
|
|
@@ -612,6 +622,11 @@ II --> M
|
|
|
612
622
|
- **按需转义**:提升性能表现
|
|
613
623
|
- **兼容性保证**:确保特殊字符正确显示
|
|
614
624
|
|
|
615
|
-
|
|
625
|
+
**新增** 键盘快捷键优化:
|
|
626
|
+
- **默认快捷键变更**:从 `ctrl+shift+l` 更改为 `ctrl+shift+e`
|
|
627
|
+
- **用户习惯适配**:更符合用户的操作习惯
|
|
628
|
+
- **组件一致性**:与 i18n-earth 组件功能保持一致
|
|
629
|
+
|
|
630
|
+
该功能的成功实现展示了现代前端国际化解决方案的最佳实践,为类似项目提供了宝贵的参考经验。新版本的文本编辑模式不仅提升了开发效率,还增强了系统的安全性和可靠性,特别是在部分文本编辑、错误处理、保存机制、安全保护和键盘快捷键优化方面的改进,为用户提供了更加完善和可靠的翻译管理体验。
|
|
616
631
|
|
|
617
|
-
**版本信息**:当前版本为 v1.3.10
|
|
632
|
+
**版本信息**:当前版本为 v1.3.10,包含了上述所有新增功能和改进,其中键盘快捷键的变更体现了对用户体验和组件一致性的重视。
|