gc_i18n 1.4.9 → 1.5.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.
Files changed (34) hide show
  1. package/.qoder/repowiki/zh/content//345/267/245/345/205/267/345/207/275/346/225/260.md +130 -16
  2. package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/272/223/345/256/236/347/216/260.md +389 -96
  3. package/.qoder/repowiki/zh/content//347/273/204/344/273/266/351/233/206/346/210/220.md +117 -119
  4. package/.qoder/repowiki/zh/content//351/205/215/347/275/256/351/200/211/351/241/271.md +25 -20
  5. package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225/UI/346/241/206/346/236/266/351/233/206/346/210/220.md +102 -11
  6. package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225/Vue 2 /351/233/206/346/210/220/346/214/207/345/215/227.md" +34 -12
  7. package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225/Vue /347/244/272/344/276/213/351/241/271/347/233/256.md" +15 -93
  8. package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//344/276/235/350/265/226/347/256/241/347/220/206/347/255/226/347/225/245.md +23 -5
  9. package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//346/236/204/345/273/272/347/263/273/347/273/237.md +164 -47
  10. package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//351/253/230/347/272/247/347/224/250/346/263/225.md +1203 -1123
  11. package/.qoder/repowiki/zh/meta/repowiki-metadata.json +1 -1
  12. package/example/vue2-test/lang/index.js +2 -0
  13. package/example/vue2-test/lang/index.json +16 -0
  14. package/example/vue2-test/package.json +2 -3
  15. package/example/vue2-test/pnpm-lock.yaml +0 -3
  16. package/example/vue2-test/src/views/Home.vue +5 -1
  17. package/example/vue3-test/lang/index.json +18 -1
  18. package/example/vue3-test/package.json +2 -3
  19. package/example/vue3-test/pnpm-lock.yaml +0 -3
  20. package/example/vue3-test/src/main.js +18 -2
  21. package/example/vue3-test/vite.config.js +2 -1
  22. package/lang/index.js +13 -3
  23. package/lib/gc_i18n.es.js +687 -689
  24. package/lib/gc_i18n.umd.js +21 -21
  25. package/package.json +1 -1
  26. package/packages/index.js +34 -18
  27. package/pnpm-workspace.yaml +3 -0
  28. package/src/view/Home.vue +1 -1
  29. package/vite.config.js +11 -2
  30. package/example/vue2-webpack-test/lang/index.js +0 -27
  31. package/example/vue2-webpack-test/lang/index.json +0 -1
  32. package/example/vue2-webpack-test/package.json +0 -29
  33. package/example/vue2-webpack-test/public/index.html +0 -14
  34. package/example/vue2-webpack-test/webpack.config.js +0 -52
@@ -7,9 +7,17 @@
7
7
  - [service.js](file://packages/libs/service.js)
8
8
  - [index.js](file://packages/index.js)
9
9
  - [textEditMode.js](file://packages/libs/textEditMode.js)
10
+ - [earth.js](file://packages/components/earth.js)
10
11
  - [gc_i18n.js](file://lib/gc_i18n.js)
11
12
  </cite>
12
13
 
14
+ ## 更新摘要
15
+ **变更内容**
16
+ - 更新了 `packages/index.js` 导出结构分析,反映了默认导出和命名导出的双重支持
17
+ - 增强了模块整合与协作关系的说明,突出了新的导出组织方式
18
+ - 补充了组件集成和全局方法的详细说明
19
+ - 更新了国际化工具函数和通用辅助函数的实现细节
20
+
13
21
  ## 目录
14
22
  1. [项目结构](#项目结构)
15
23
  2. [核心工具模块分析](#核心工具模块分析)
@@ -18,6 +26,7 @@
18
26
  5. [RTL语言检测功能](#rtl语言检测功能)
19
27
  6. [外部服务接口 (service.js)](#外部服务接口-servicejs)
20
28
  7. [模块整合与协作关系](#模块整合与协作关系)
29
+ 8. [导出结构优化](#导出结构优化)
21
30
 
22
31
  ## 项目结构
23
32
 
@@ -25,7 +34,7 @@
25
34
 
26
35
  - `lang` 目录存放语言包配置。
27
36
  - `lib` 目录包含核心库文件 `gc_i18n.js` 和样式文件。
28
- - `packages` 目录是功能模块的核心,其中 `packages/libs` 存放了 `utils.js`、`i18nUtils.ts` 和 `service.js` 三个关键工具模块。
37
+ - `packages` 目录是功能模块的核心,其中 `packages/libs` 存放了 `utils.js`、`i18nUtils.ts` 和 `service.js` 三个关键工具模块,`packages/components` 存放了 `earth.js` 全球组件。
29
38
  - `src` 目录是应用源码,包含视图、路由和主入口。
30
39
 
31
40
  ```mermaid
@@ -36,25 +45,28 @@ A --> |新增| C[RTL语言检测函数]
36
45
  D[i18nUtils.ts] --> |提供| E[i18n专用工具]
37
46
  F[service.js] --> |提供| G[外部服务接口]
38
47
  H[textEditMode.js] --> |提供| I[文本编辑模式]
48
+ J[earth.js] --> |提供| K[全球组件]
39
49
  end
40
50
  subgraph "入口与整合"
41
- J[index.js] --> |整合并使用| A
42
- J --> |整合并使用| D
43
- J --> |整合并使用| F
44
- J --> |整合并使用| H
51
+ L[index.js] --> |整合并使用| A
52
+ L --> |整合并使用| D
53
+ L --> |整合并使用| F
54
+ L --> |整合并使用| H
55
+ L --> |整合并使用| J
45
56
  end
46
57
  subgraph "核心库"
47
- K[gc_i18n.js] --> |定义| L[Po, Mo, Pa, qn等函数]
48
- J --> |依赖| K
58
+ M[gc_i18n.js] --> |定义| N[Po, Mo, Pa, qn等函数]
59
+ L --> |依赖| M
49
60
  end
50
61
  subgraph "应用层"
51
- M[src] --> |使用| J
62
+ O[src] --> |使用| L
52
63
  end
53
- A --> J
54
- D --> J
55
- F --> J
56
- H --> J
57
- K --> J
64
+ A --> L
65
+ D --> L
66
+ F --> L
67
+ H --> L
68
+ J --> L
69
+ M --> L
58
70
  ```
59
71
 
60
72
  **图示来源**
@@ -62,6 +74,7 @@ K --> J
62
74
  - [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
63
75
  - [service.js](file://packages/libs/service.js)
64
76
  - [textEditMode.js](file://packages/libs/textEditMode.js)
77
+ - [earth.js](file://packages/components/earth.js)
65
78
  - [index.js](file://packages/index.js)
66
79
  - [gc_i18n.js](file://lib/gc_i18n.js)
67
80
 
@@ -71,6 +84,7 @@ K --> J
71
84
  - [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
72
85
  - [service.js](file://packages/libs/service.js)
73
86
  - [textEditMode.js](file://packages/libs/textEditMode.js)
87
+ - [earth.js](file://packages/components/earth.js)
74
88
  - [index.js](file://packages/index.js)
75
89
 
76
90
  ## 核心工具模块分析
@@ -380,7 +394,7 @@ end
380
394
 
381
395
  ## 模块整合与协作关系
382
396
 
383
- `packages/index.js` 作为主入口文件,负责将 `utils.js`、`i18nUtils.ts`、`service.js` 和 `textEditMode.js` 四个工具模块整合成一个完整的 `I18n` 类。
397
+ `packages/index.js` 作为主入口文件,负责将 `utils.js`、`i18nUtils.ts`、`service.js`、`textEditMode.js` 和 `earth.js` 五个工具模块整合成一个完整的 `I18n` 类。
384
398
 
385
399
  ### 协作流程
386
400
 
@@ -393,7 +407,8 @@ end
393
407
  4. **数据加载**: `getTranslate` 函数在 `service.js` 中定义,但其内部调用的 `Uo`、`qn`、`Mo`、`Po` 等函数实际定义在 `lib/gc_i18n.js` 中,这表明 `service.js` 依赖于核心库。
394
408
  5. **RTL方向更新**: 在语言切换时,系统会重新检测RTL状态并更新文档方向。
395
409
  6. **文本编辑模式**: `textEditMode.js` 提供了额外的文本编辑功能,支持页面和路由级别的翻译管理。
396
- 7. **最终整合**: `index.js` 将所有功能整合后,通过 `install` 方法注入到Vue应用中,使 `$t` 等全局函数可用。
410
+ 7. **全局组件注册**: `earth.js` 组件通过 `app.component` 注册为全局组件,提供多语言编辑功能。
411
+ 8. **最终整合**: `index.js` 将所有功能整合后,通过 `install` 方法注入到Vue应用中,使 `$t` 等全局函数可用。
397
412
 
398
413
  ### 关键协作点
399
414
  - `index.js` 使用 `i18nUtils.ts` 进行**键的提取**。
@@ -402,6 +417,7 @@ end
402
417
  - `index.js` 使用 `utils.js` 的 `isRTLLocale` 进行**RTL语言检测**。
403
418
  - `service.js` 依赖 `gc_i18n.js` 提供的底层**网络请求和缓存函数**。
404
419
  - `textEditMode.js` 与 `service.js` 协作,提供**文本编辑和翻译管理**功能。
420
+ - `earth.js` 与 `service.js` 协作,提供**全局多语言编辑组件**。
405
421
 
406
422
  ### RTL功能的完整协作链
407
423
  ```mermaid
@@ -424,4 +440,102 @@ G --> H[提供isRTL实例方法]
424
440
  - [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
425
441
  - [service.js](file://packages/libs/service.js)
426
442
  - [textEditMode.js](file://packages/libs/textEditMode.js)
427
- - [gc_i18n.js](file://lib/gc_i18n.js)
443
+ - [earth.js](file://packages/components/earth.js)
444
+ - [gc_i18n.js](file://lib/gc_i18n.js)
445
+
446
+ ## 导出结构优化
447
+
448
+ `packages/index.js` 的导出结构经过优化,现在同时支持默认导出和命名导出,提供了更好的模块兼容性和使用灵活性。
449
+
450
+ ### 双重导出支持
451
+
452
+ #### 默认导出
453
+ ```javascript
454
+ export default I18n;
455
+ ```
456
+
457
+ #### 命名导出
458
+ ```javascript
459
+ export { I18n };
460
+ ```
461
+
462
+ 这种设计允许开发者使用多种导入方式:
463
+
464
+ **ES6 模块导入**:
465
+ ```javascript
466
+ import I18n from 'gc_i18n';
467
+ // 或
468
+ import { I18n } from 'gc_i18n';
469
+ ```
470
+
471
+ **CommonJS 导入**:
472
+ ```javascript
473
+ const { I18n } = require('gc_i18n');
474
+ // 或
475
+ const I18n = require('gc_i18n').default;
476
+ ```
477
+
478
+ ### 模块导入优化
479
+
480
+ 新的导出结构采用了更清晰的模块导入组织:
481
+
482
+ 1. **核心依赖导入**:`keyboardJS`、`vue-demi`、`axios` 等核心依赖
483
+ 2. **工具模块导入**:`utils.js`、`i18nUtils.ts`、`textEditMode.js` 的功能函数
484
+ 3. **组件导入**:`earth.js` 全球组件和样式文件
485
+ 4. **第三方库导入**:`lodash-es`、`store2`、`sweetalert2` 等
486
+
487
+ ### 全局方法和工具函数
488
+
489
+ 优化后的导出结构还增强了全局方法的暴露:
490
+
491
+ #### 全局翻译函数
492
+ ```javascript
493
+ globalThis.$t = (key, defaultValue) => {
494
+ // 实现翻译逻辑
495
+ };
496
+ ```
497
+
498
+ #### 全局配置函数
499
+ ```javascript
500
+ globalThis.$i18nLogin = async (orgCode) => { /* 登录逻辑 */ };
501
+ globalThis.$i18nLogout = (orgCode) => { /* 登出逻辑 */ };
502
+ globalThis.$clearI18n = () => { /* 清理逻辑 */ };
503
+ ```
504
+
505
+ #### RTL检测函数
506
+ ```javascript
507
+ globalThis.$isRTL = () => this._isRTL;
508
+ this.i18n.global.isRTL = () => this._isRTL;
509
+ ```
510
+
511
+ ### 组件注册优化
512
+
513
+ 新的导出结构改进了全局组件的注册方式:
514
+
515
+ ```javascript
516
+ app.component("i18n-earth", {
517
+ ...earthVue,
518
+ props: {
519
+ ...earthVue.props,
520
+ baseUrl: {
521
+ type: String,
522
+ default: this.baseUrl
523
+ }
524
+ }
525
+ });
526
+ ```
527
+
528
+ 这种设计确保了组件能够正确接收 `baseUrl` 属性,同时保持了与主应用的兼容性。
529
+
530
+ ### 在整体架构中的作用
531
+
532
+ 优化后的导出结构提升了模块的可复用性和兼容性:
533
+
534
+ 1. **更好的模块兼容性**:支持 ES6、CommonJS、AMD 等多种模块系统
535
+ 2. **增强的全局API**:提供了丰富的全局函数供开发者使用
536
+ 3. **灵活的组件集成**:简化了全局组件的注册和使用
537
+ 4. **清晰的命名空间**:避免了全局变量污染,提供了明确的API接口
538
+
539
+ **本节来源**
540
+ - [index.js](file://packages/index.js)
541
+ - [earth.js](file://packages/components/earth.js)