gc_i18n 1.3.12 → 1.3.13

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.
@@ -15,26 +15,30 @@
15
15
  - [service.js](file://packages/libs/service.js)
16
16
  - [utils.js](file://packages/libs/utils.js)
17
17
  - [index.js](file://lang/index.js)
18
+ - [textEditMode.js](file://packages/libs/textEditMode.js)
19
+ - [textEditMode.css](file://packages/libs/textEditMode.css)
18
20
  </cite>
19
21
 
20
22
  ## 更新摘要
21
23
  **所做变更**
22
- - 更新了Earth组件的重大功能增强:从简单的Icon组件升级为完整的v-model驱动编辑组件
24
+ - 更新了 i18n-earth 组件的重大功能增强:从简单的 Icon 组件升级为完整的 v-model 驱动编辑组件
23
25
  - 新增了模态框编辑功能,支持多语言翻译的实时编辑和保存
24
26
  - 增强了缓存机制,包括语言列表缓存和翻译数据缓存
25
- - 完善了组件的Props配置和事件处理机制
26
- - 更新了组件的使用示例和最佳实践
27
+ - 完善了组件的 Props 配置和事件处理机制
28
+ - 更新了键盘快捷键配置,从 ctrl+shift+l 更改为 ctrl+shift+e
29
+ - 新增了文本编辑模式功能,支持可视化翻译编辑
27
30
 
28
31
  ## 目录
29
32
  1. [项目结构分析](#项目结构分析)
30
33
  2. [Vue组件与gc_i18n库集成机制](#vue组件与gc_i18n库集成机制)
31
- 3. [Earth组件:v-model驱动的多语言编辑器](#earth组件v-model驱动的多语言编辑器)
34
+ 3. [i18n-earth组件:v-model驱动的多语言编辑器](#i18n-earth组件v-model驱动的多语言编辑器)
32
35
  4. [config.vue语言切换控件详解](#configvue语言切换控件详解)
33
36
  5. [文本翻译函数$t()的使用分析](#文本翻译函数t的使用分析)
34
37
  6. [组件间语言状态共享实践](#组件间语言状态共享实践)
35
38
  7. [翻译文本传递与直接调用的权衡](#翻译文本传递与直接调用的权衡)
36
- 8. [核心流程序列图](#核心流程序列图)
37
- 9. [依赖关系图](#依赖关系图)
39
+ 8. [文本编辑模式与快捷键配置](#文本编辑模式与快捷键配置)
40
+ 9. [核心流程序列图](#核心流程序列图)
41
+ 10. [依赖关系图](#依赖关系图)
38
42
 
39
43
  ## 项目结构分析
40
44
 
@@ -59,6 +63,8 @@ earthCSS[earth.css]
59
63
  i18nUtils[i18nUtils.ts]
60
64
  service[service.js]
61
65
  utils[utils.js]
66
+ textEditMode[textEditMode.js]
67
+ textEditModeCSS[textEditMode.css]
62
68
  end
63
69
  subgraph "应用层"
64
70
  main[main.js]
@@ -71,7 +77,9 @@ lang --> pkg
71
77
  pkg --> earth
72
78
  pkg --> i18nUtils
73
79
  pkg --> service
80
+ pkg --> textEditMode
74
81
  earth --> earthCSS
82
+ textEditMode --> textEditModeCSS
75
83
  main --> app
76
84
  app --> home
77
85
  app --> login
@@ -92,7 +100,8 @@ Vue组件通过`gc_i18n`库实现国际化功能。该库基于`vue-i18n`构建
92
100
  2. `lang/index.js`初始化`gc_i18n`实例并注入Vue应用
93
101
  3. 各组件通过全局函数`$t()`进行文本翻译
94
102
  4. 特殊组件如`config.vue`提供翻译管理界面
95
- 5. Earth组件通过自动注册方式提供Vue 2/3兼容性支持
103
+ 5. i18n-earth组件通过自动注册方式提供Vue 2/3兼容性支持
104
+ 6. 文本编辑模式通过快捷键 ctrl+shift+e 启用
96
105
 
97
106
  ```mermaid
98
107
  sequenceDiagram
@@ -100,12 +109,14 @@ participant Main as main.js
100
109
  participant Lang as lang/index.js
101
110
  participant I18n as index.js
102
111
  participant Earth as earth.js
112
+ participant TextMode as textEditMode.js
103
113
  participant Component as Vue组件
104
114
  Main->>Lang : use(lang, router)
105
115
  Lang->>I18n : new gc_i18n(options)
106
116
  I18n->>I18n : initI18n()
107
117
  I18n->>I18n : initRouterGuards()
108
118
  I18n->>Earth : app.component("i18n-earth", earthVue)
119
+ I18n->>TextMode : 绑定快捷键 ctrl+shift+e
109
120
  Earth->>Component : 注册全局组件
110
121
  Component->>I18n : 调用$t("key")
111
122
  I18n-->>Component : 返回翻译文本
@@ -121,9 +132,9 @@ Note over I18n : 支持自动注册和手动注册
121
132
  - [main.js:1-12](file://src/main.js#L1-L12)
122
133
  - [lang/index.js:1-33](file://lang/index.js#L1-L33)
123
134
 
124
- ## Earth组件:v-model驱动的多语言编辑器
135
+ ## i18n-earth组件:v-model驱动的多语言编辑器
125
136
 
126
- **更新**:Earth组件已从简单的Icon组件升级为完整的v-model驱动编辑组件,具备强大的多语言编辑和管理功能
137
+ **更新**:i18n-earth组件已从简单的Icon组件升级为完整的v-model驱动编辑组件,具备强大的多语言编辑和管理功能
127
138
 
128
139
  ### 组件特性
129
140
  - 使用`vue-demi`库实现Vue 2/3兼容
@@ -137,7 +148,7 @@ Note over I18n : 支持自动注册和手动注册
137
148
 
138
149
  ### v-model数据结构
139
150
 
140
- Earth组件支持数组对象格式的v-model数据:
151
+ i18n-earth组件支持数组对象格式的v-model数据:
141
152
 
142
153
  ```javascript
143
154
  // v-model数据格式
@@ -407,7 +418,7 @@ ReloadPage --> End([完成])
407
418
 
408
419
  | 组件 | 模板中使用 | 脚本中使用 | 特点 |
409
420
  |------|------------|------------|------|
410
- | Home.vue | 是 | 是 | 完整的交互示例,包含Earth组件 |
421
+ | Home.vue | 是 | 是 | 完整的交互示例,包含i18n-earth组件 |
411
422
  | login.vue | 是 | 否 | 简单的静态翻译 |
412
423
  | test.vue | 否 | 否 | 无$t()调用,使用静态文本 |
413
424
 
@@ -419,7 +430,7 @@ ReloadPage --> End([完成])
419
430
  <div>首页</div>
420
431
  <RouterLink to="/test">测试</RouterLink>
421
432
 
422
- <!-- Earth组件使用 - v-model驱动的编辑器 -->
433
+ <!-- i18n-earth组件使用 - v-model驱动的编辑器 -->
423
434
  <i18n-earth
424
435
  :width="500"
425
436
  v-model="translations"
@@ -483,7 +494,7 @@ const handleSave = async (values) => {
483
494
  - 模板中使用`{{ $t("key") }}`进行动态翻译
484
495
  - 脚本中调用`$changeLocale`等全局函数
485
496
  - 包含完整的语言切换和用户管理功能
486
- - 集成了Earth组件展示Vue 2/3兼容性
497
+ - 集成了i18n-earth组件展示Vue 2/3兼容性
487
498
 
488
499
  ### login.vue中的使用
489
500
 
@@ -588,7 +599,7 @@ I18n->>Component : 触发页面刷新
588
599
  <ChildComponent :saveText="$t('common.save')" />
589
600
  ```
590
601
 
591
- **注意**:Earth组件通过自动注册机制在全局可用,无需手动注册。
602
+ **注意**:i18n-earth组件通过自动注册机制在全局可用,无需手动注册。
592
603
 
593
604
  **本节来源**
594
605
  - [index.js:491-501](file://packages/index.js#L491-L501)
@@ -649,6 +660,91 @@ export default {
649
660
  - [Home.vue:1-64](file://src/view/Home.vue#L1-L64)
650
661
  - [login.vue:1-15](file://src/view/login.vue#L1-L15)
651
662
 
663
+ ## 文本编辑模式与快捷键配置
664
+
665
+ ### 快捷键配置更新
666
+
667
+ **更新**:键盘快捷键配置已从 `ctrl+shift+l` 更改为 `ctrl+shift+e`
668
+
669
+ `gc_i18n`库现在支持自定义文本编辑模式快捷键:
670
+
671
+ ```javascript
672
+ // 默认配置
673
+ this.keyboard = keyboard || "ctrl+shift+l";
674
+ this.editKeyboard = options.editKeyboard || "ctrl+shift+e";
675
+
676
+ // 绑定快捷键
677
+ keyboardJS.bind(this.editKeyboard, (e) => {
678
+ e.preventDefault();
679
+ textEditMode.toggle();
680
+ });
681
+ ```
682
+
683
+ ### 文本编辑模式功能
684
+
685
+ 文本编辑模式提供了可视化的翻译编辑体验:
686
+
687
+ 1. **激活条件**:通过 `ctrl+shift+e` 快捷键激活
688
+ 2. **元素包装**:自动扫描页面文本节点并添加可编辑外框
689
+ 3. **弹窗编辑**:点击可编辑元素弹出SweetAlert2编辑窗口
690
+ 4. **实时保存**:编辑完成后自动保存到服务器
691
+
692
+ ### 编辑模式工作流程
693
+
694
+ ```mermaid
695
+ flowchart TD
696
+ Start([按下 ctrl+shift+e]) --> InitConfig["初始化配置"]
697
+ InitConfig --> ScanElements["扫描页面文本元素"]
698
+ ScanElements --> WrapElements["包装可编辑元素"]
699
+ WrapElements --> ShowTips["显示操作提示"]
700
+ ShowTips --> ClickElement{"点击可编辑元素?"}
701
+ ClickElement --> |是| OpenModal["打开编辑弹窗"]
702
+ ClickElement --> |否| WaitInput["等待用户输入"]
703
+ OpenModal --> EditText["编辑翻译内容"]
704
+ EditText --> SaveChanges["保存到服务器"]
705
+ SaveChanges --> UpdateCache["更新本地缓存"]
706
+ UpdateCache --> CloseModal["关闭弹窗"]
707
+ CloseModal --> End([完成])
708
+ ```
709
+
710
+ ### 编辑弹窗功能
711
+
712
+ 编辑弹窗支持多语言翻译编辑:
713
+
714
+ ```javascript
715
+ // 构建编辑表单
716
+ const langInputs = this.languages
717
+ .map(
718
+ (item) => `
719
+ <div class="i18n-edit-field">
720
+ <label class="i18n-edit-label">${item.langName}:</label>
721
+ <input
722
+ type="text"
723
+ class="i18n-edit-input"
724
+ data-lang="${item.langCode}"
725
+ value="${this.escapeHtml(_.get(value, item.langCode) || "")}"
726
+ placeholder="请输入${item.langName}翻译"
727
+ />
728
+ </div>
729
+ `
730
+ )
731
+ .join("");
732
+ ```
733
+
734
+ ### 配置选项
735
+
736
+ | 选项名 | 默认值 | 说明 |
737
+ |--------|--------|------|
738
+ | keyboard | "ctrl+shift+l" | 管理面板快捷键 |
739
+ | editKeyboard | "ctrl+shift+e" | 文本编辑模式快捷键 |
740
+ | baseUrl | 根据环境自动选择 | 翻译服务基础URL |
741
+
742
+ **本节来源**
743
+ - [index.js:109-111](file://packages/index.js#L109-L111)
744
+ - [index.js:153-157](file://packages/index.js#L153-L157)
745
+ - [textEditMode.js:1-623](file://packages/libs/textEditMode.js#L1-L623)
746
+ - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
747
+
652
748
  ## 核心流程序列图
653
749
 
654
750
  ```mermaid
@@ -656,6 +752,8 @@ sequenceDiagram
656
752
  participant User as 用户
657
753
  participant Component as Vue组件
658
754
  participant I18n as gc_i18n实例
755
+ participant Earth as i18n-earth组件
756
+ participant TextMode as 文本编辑模式
659
757
  participant Service as service.js
660
758
  participant Storage as localStorage
661
759
  participant Server as 远程服务器
@@ -669,8 +767,11 @@ Service->>Storage : 缓存翻译数据
669
767
  Service-->>I18n : 返回翻译结果
670
768
  I18n->>I18n : setLocaleMessage('en-US', data)
671
769
  I18n->>Component : 触发页面刷新
672
- Component->>Component : 重新渲染,使用英文文本
673
- Component-->>User : 显示英文界面
770
+ Component->>Earth : 更新当前语言显示
771
+ Earth->>User : 显示英文翻译
772
+ User->>TextMode : 按下 ctrl+shift+e
773
+ TextMode->>TextMode : 启用编辑模式
774
+ TextMode->>User : 显示可编辑元素
674
775
  ```
675
776
 
676
777
  **图表来源**
@@ -688,19 +789,22 @@ C --> D[packages/index.js]
688
789
  D --> E[earth.js]
689
790
  D --> F[i18nUtils.ts]
690
791
  D --> G[service.js]
691
- E --> H[earth.css]
692
- A --> I[router]
693
- I --> J[Home.vue]
694
- I --> K[login.vue]
695
- I --> L[test.vue]
696
- J --> D
697
- K --> D
792
+ D --> H[textEditMode.js]
793
+ E --> I[earth.css]
794
+ H --> J[textEditMode.css]
795
+ A --> K[router]
796
+ K --> L[Home.vue]
797
+ K --> M[login.vue]
798
+ K --> N[test.vue]
698
799
  L --> D
699
- M[earth.js] --> N[earth.css]
700
- O[service.js] --> P[utils.js]
800
+ M --> D
801
+ N --> D
802
+ O[earth.js] --> I
803
+ P[textEditMode.js] --> J
804
+ Q[service.js] --> R[utils.js]
701
805
  style A fill:#f9f,stroke:#333
702
806
  style D fill:#bbf,stroke:#333
703
- style M fill:#f96,stroke:#333
807
+ style O fill:#f96,stroke:#333
704
808
  ```
705
809
 
706
810
  **图表来源**
@@ -710,4 +814,6 @@ style M fill:#f96,stroke:#333
710
814
  - [earth.js:1-339](file://packages/components/earth.js#L1-L339)
711
815
  - [earth.css:1-144](file://packages/components/earth.css#L1-L144)
712
816
  - [service.js:1-189](file://packages/libs/service.js#L1-L189)
713
- - [utils.js:1-51](file://packages/libs/utils.js#L1-L51)
817
+ - [utils.js:1-51](file://packages/libs/utils.js#L1-L51)
818
+ - [textEditMode.js:1-623](file://packages/libs/textEditMode.js#L1-L623)
819
+ - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)