gc_i18n 1.4.0 → 1.4.2

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.
@@ -7,18 +7,20 @@
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
+ - [package.json](file://package.json) - *版本信息,从1.3.12升级到1.4.1*
11
11
  </cite>
12
12
 
13
13
  ## 更新摘要
14
14
  **变更内容**
15
15
  - 移除了 `fetchTranslate` 函数中的 `page` 参数,更新了函数签名和参数说明
16
- - 版本从 1.3.12 升级到 1.3.13
16
+ - 版本从 1.3.12 升级到 1.4.1
17
17
  - 更新了 `service.js` 中 `getTranslate` 方法的文档,以反映其新的行为:当返回 `common` 类型的翻译时,会移除当前路由的数据
18
18
  - 更新了 `gc_i18n.es.js` 中 `$t` 方法的文档,详细说明了其新的查找优先级:先查找 `route.key`,再查找 `common.key`,最后查找全局 `key`
19
19
  - 更新了 `utils.js` 中 `mergeArraysByKey` 函数的文档,说明了其在合并数据时会移除与 `common` 键匹配的当前路由数据
20
20
  - 修正了 `service.js` 中 `fetchTranslate` 和 `getTranslate` 方法的返回值描述,使其与代码实现一致
21
21
  - 更新了所有受影响部分的源代码引用,以反映最新的文件状态
22
+ - **新增**:标准化了后端翻译服务端点,从 `i18n-web//app/getsupportedlangs` 迁移到 `i18n-web/app/getsupportedlangs`
23
+ - **新增**:引入了 `getLanguagesWithCache` 函数,提供带缓存的语言列表获取功能
22
24
 
23
25
  ## 目录
24
26
  1. [简介](#简介)
@@ -76,7 +78,7 @@ $t(key: string): string
76
78
  **更新** 该方法的查找逻辑已更新,优先级为:`当前路由名.key` > `common.key` > `key`。
77
79
 
78
80
  **Section sources**
79
- - [gc_i18n.es.js:272-297](file://lib/gc_i18n.es.js#L272-L297) - *更新了 $t 方法的实现*
81
+ - [gc_i18n.es.js:315-364](file://lib/gc_i18n.es.js#L315-L364) - *更新了 $t 方法的实现*
80
82
  - [src/view/Home.vue](file://src/view/Home.vue#L19)
81
83
  - [src/view/login.vue](file://src/view/login.vue#L10)
82
84
 
@@ -110,7 +112,7 @@ $changeLocale(locale: string): Promise<void>
110
112
  **更新** 该方法的实现已更新,现在通过调用 `setLanguage` 方法来完成核心逻辑。
111
113
 
112
114
  **Section sources**
113
- - [gc_i18n.es.js:316-321](file://lib/gc_i18n.es.js#L316-L321) - *更新了 $changeLocale 方法的实现*
115
+ - [gc_i18n.es.js:383-392](file://lib/gc_i18n.es.js#L383-L392) - *更新了 $changeLocale 方法的实现*
114
116
  - [src/view/Home.vue](file://src/view/Home.vue#L2)
115
117
  - [src/view/login.vue](file://src/view/login.vue#L2)
116
118
 
@@ -146,6 +148,45 @@ function extractTranslationKeys(component: any): string[]
146
148
  ## service.js 异步接口
147
149
  `service.js` 封装了与后端语言服务通信的异步接口,负责获取和管理翻译数据。
148
150
 
151
+ ### getLanguagesWithCache (获取支持的语言列表 - 带缓存)
152
+ 获取系统支持的所有语言环境列表,并提供本地缓存功能。
153
+
154
+ **方法签名**
155
+ ```typescript
156
+ getLanguagesWithCache({ baseUrl, token, appCode, isRemote }: {
157
+ baseUrl: string;
158
+ token: string;
159
+ appCode: string;
160
+ isRemote?: boolean;
161
+ }): Promise<any[]>
162
+ ```
163
+
164
+ **参数**
165
+ - **baseUrl**: `string` - 后端服务的基础 URL。
166
+ - **token**: `string` - 用于身份验证的授权令牌。
167
+ - **appCode**: `string` - 应用的唯一标识码。
168
+ - **isRemote**: `boolean` (可选, 默认: `false`) - 是否强制从远程获取,跳过缓存。
169
+
170
+ **返回值**
171
+ - `Promise<any[]>` - 一个 Promise,resolve 时返回包含支持语言列表的数组。每个语言对象包含 `langCode` 和 `langName` 字段。
172
+
173
+ **副作用**
174
+ - 读取和写入本地存储(`store2`),以缓存语言列表。
175
+ - 可能发起网络请求。
176
+
177
+ **使用限制**
178
+ - 依赖于 `store2` 和 `lodash-es` 库。
179
+ - 当 `isRemote` 为 `false` 且缓存存在时,不会发起网络请求。
180
+
181
+ **错误处理建议**
182
+ - 确保 `store2` 正常工作,本地存储空间充足。
183
+ - 处理网络请求失败的情况,提供降级方案(如使用缓存数据)。
184
+
185
+ **更新** 新增的带缓存功能,提高了语言列表获取的性能和可靠性。
186
+
187
+ **Section sources**
188
+ - [service.js:19-61](file://packages/libs/service.js#L19-L61) - *新增的带缓存语言列表获取功能*
189
+
149
190
  ### getLanguages (获取支持的语言列表)
150
191
  获取系统支持的所有语言环境列表。
151
192
 
@@ -162,6 +203,8 @@ getLanguages({ baseUrl, token, appCode }: { baseUrl: string; token: string; appC
162
203
  **返回值**
163
204
  - `Promise<any>` - 一个 Promise,resolve 时返回包含支持语言列表的响应对象。
164
205
 
206
+ **更新** 端点已标准化为 `/i18n-web/app/getsupportedlangs`,移除了重复的斜杠。
207
+
165
208
  **Section sources**
166
209
  - [service.js:63-72](file://packages/libs/service.js#L63-L72)
167
210
 
@@ -327,5 +370,6 @@ console.log(keys); // 输出: ["hello", "greeting"]
327
370
  - **性能**: 频繁调用 `$changeLocale` 会导致应用重新渲染,应避免在短时间内多次调用。
328
371
  - **逻辑变更**: `getTranslate` 方法现在会移除 `common` 键覆盖的当前路由数据,这可能会影响某些依赖于特定键的组件。
329
372
  - **参数变更**: `fetchTranslate` 函数已移除 `page` 参数,使用时请注意更新调用方式。
373
+ - **端点标准化**: 所有翻译服务端点已标准化为 `/i18n-web/...` 结构,确保了后端服务的一致性。
330
374
 
331
- **版本更新** 本版本为 1.3.13,包含上述重要变更。
375
+ **版本更新** 本版本为 1.4.1,包含上述重要变更,特别是后端翻译服务端点的标准化迁移和新增的带缓存语言列表获取功能。
@@ -24,6 +24,8 @@
24
24
  ## 更新摘要
25
25
  **变更内容**
26
26
  - 核心I18n类完全重写,引入Vue 2/3兼容层和createI18nCompat函数
27
+ - **新增中文语言模式兼容性支持**,通过normalizeLocale方法支持zh-CN和zh-TW的自动规范化
28
+ - **内部代码重构改进**,axios别名从Ve改为je,多个函数重命名等
27
29
  - 支持自动版本检测和适配,统一Vue 2和Vue 3的API差异
28
30
  - 增强路由守卫机制,支持动态组件加载和翻译键收集
29
31
  - 重构翻译查找机制,支持路由特定键和通用键的优先级处理
@@ -47,9 +49,10 @@
47
49
  3. [Vue插件安装机制](#vue插件安装机制)
48
50
  4. [公共API接口文档](#公共api接口文档)
49
51
  5. [RTL方向管理功能](#rtl方向管理功能)
50
- 6. [文本编辑模式功能](#文本编辑模式功能)
51
- 7. [非组件环境使用](#非组件环境使用)
52
- 8. [样式文件作用](#样式文件作用)
52
+ 6. [中文语言模式兼容性](#中文语言模式兼容性)
53
+ 7. [文本编辑模式功能](#文本编辑模式功能)
54
+ 8. [非组件环境使用](#非组件环境使用)
55
+ 9. [样式文件作用](#样式文件作用)
53
56
 
54
57
  ## 项目结构分析
55
58
 
@@ -511,7 +514,7 @@ export const getLanguagesWithCache = async ({
511
514
  **本节来源**
512
515
  - [packages/index.js:67-411](file://packages/index.js#L67-L411)
513
516
  - [packages/libs/i18nUtils.ts:1-54](file://packages/libs/i18nUtils.ts#L1-L54)
514
- - [packages/libs/service.js:1-188](file://packages/libs/service.js#L1-L188)
517
+ - [packages/libs/service.js:1-187](file://packages/libs/service.js#L1-L187)
515
518
  - [packages/swal.css:1-18](file://packages/swal.css#L1-L18)
516
519
 
517
520
  ## Vue插件安装机制
@@ -903,6 +906,132 @@ async setLanguage(language = "zh-CN") {
903
906
  - [packages/index.js:310-343](file://packages/index.js#L310-L343)
904
907
  - [packages/libs/utils.js:3-22](file://packages/libs/utils.js#L3-L22)
905
908
 
909
+ ## 中文语言模式兼容性
910
+
911
+ ### 语言代码规范化机制
912
+
913
+ **新增** I18n类引入了normalizeLocale方法,专门处理中文语言模式的兼容性支持:
914
+
915
+ ```javascript
916
+ /**
917
+ * 规范化语言代码,兼容浏览器语言简写
918
+ * @param {string} locale - 原始语言代码
919
+ * @returns {string} 规范化后的语言代码
920
+ */
921
+ normalizeLocale(locale) {
922
+ if (!locale) return "zh-CN";
923
+ // 处理简写形式:zh -> zh-CN, en -> en-US
924
+ const localeMap = {
925
+ zh: "zh-CN",
926
+ en: "en-US"
927
+ };
928
+ return localeMap[locale] || locale;
929
+ }
930
+ ```
931
+
932
+ ### 中文简体和繁体支持
933
+
934
+ **新增** 完整的中文语言模式支持,包括简体中文(zh-CN)和繁体中文(zh-TW):
935
+
936
+ ```javascript
937
+ // 语言资源文件包含简体和繁体中文翻译
938
+ {
939
+ "qylb2": {
940
+ "zh-cn": "首页", // 简体中文
941
+ "zh-tw": "首頁" // 繁體中文
942
+ },
943
+ "jcve2": {
944
+ "zh-cn": "测试",
945
+ "zh-tw": "測試"
946
+ },
947
+ "i55x296": {
948
+ "zh-cn": "简体中文内容",
949
+ "zh-tw": "簡體中文內容"
950
+ },
951
+ "7vs7of6": {
952
+ "zh-cn": "繁體中文內容",
953
+ "zh-tw": "繁體中文內容"
954
+ }
955
+ }
956
+ ```
957
+
958
+ ### 自动语言检测和回退机制
959
+
960
+ **更新** 语言加载时的智能回退机制:
961
+
962
+ ```javascript
963
+ async setLanguage(language = "zh-CN") {
964
+ // 规范化语言代码
965
+ language = this.normalizeLocale(language);
966
+ const commonMessagesKey = "I18N_MESSAGES_COMMON_" + language;
967
+ let commonMessages = store2.get(commonMessagesKey);
968
+ if (_.isEmpty(commonMessages)) {
969
+ try {
970
+ const lang = await http.get(
971
+ `https://cdn.ihotel.cn/i18n_messages/${language}.json`
972
+ );
973
+ if (lang) {
974
+ const { data } = lang;
975
+ commonMessages = data;
976
+ store2.set(commonMessagesKey, data);
977
+ }
978
+ } catch (error) {
979
+ // 请求失败时,如果是非 zh-CN,则回退到 zh-CN
980
+ if (language !== "zh-CN") {
981
+ console.warn(`语言 ${language} 加载失败,回退到 zh-CN`, error);
982
+ return this.setLanguage("zh-CN");
983
+ }
984
+ // 如果 zh-CN 也失败了,使用空对象
985
+ console.error("zh-CN 语言文件加载失败", error);
986
+ commonMessages = {};
987
+ }
988
+ }
989
+ // ... 其他语言切换逻辑
990
+ }
991
+ ```
992
+
993
+ ### 语言资源文件结构
994
+
995
+ **新增** 语言资源文件采用JSON格式,支持多语言键值对:
996
+
997
+ ```json
998
+ {
999
+ "message_key": {
1000
+ "zh-cn": "简体中文翻译",
1001
+ "zh-tw": "繁體中文翻譯",
1002
+ "en-us": "English translation"
1003
+ },
1004
+ "another_key": {
1005
+ "zh-cn": "另一个简体中文翻译",
1006
+ "zh-tw": "另一個繁體中文翻譯"
1007
+ }
1008
+ }
1009
+ ```
1010
+
1011
+ ### 中文语言模式最佳实践
1012
+
1013
+ **新增** 使用中文语言模式的推荐做法:
1014
+
1015
+ ```javascript
1016
+ // 1. 使用规范化的语言代码
1017
+ const i18n = new I18n({
1018
+ locale: 'zh', // 自动规范化为 'zh-CN'
1019
+ appCode: 'MY_APP'
1020
+ });
1021
+
1022
+ // 2. 在组件中使用翻译
1023
+ const translated = $t('page.title'); // 自动选择 zh-CN 或 zh-TW
1024
+
1025
+ // 3. 支持动态语言切换
1026
+ await $changeLocale('zh-TW'); // 切换到繁体中文
1027
+ await $changeLocale('zh-CN'); // 切换到简体中文
1028
+ ```
1029
+
1030
+ **本节来源**
1031
+ - [packages/index.js:168-176](file://packages/index.js#L168-L176)
1032
+ - [packages/index.js:437-492](file://packages/index.js#L437-L492)
1033
+ - [lang/index.json:1-130](file://lang/index.json#L1-L130)
1034
+
906
1035
  ## 文本编辑模式功能
907
1036
 
908
1037
  ### 文本编辑模式概述
@@ -961,11 +1090,11 @@ swalCSS --> swal2Container
961
1090
 
962
1091
  ### 文本编辑模式快捷键配置
963
1092
 
964
- 文本编辑模式支持自定义快捷键绑定,默认使用"shift+e"组合键:
1093
+ 文本编辑模式支持自定义快捷键绑定,默认使用"ctrl+shift+e"组合键:
965
1094
 
966
1095
  ```javascript
967
- // 文本编辑模式快捷键,默认为 shift+e,支持自定义传入
968
- this.editKeyboard = options.editKeyboard || "shift+e";
1096
+ // 文本编辑模式快捷键,默认为 ctrl+shift+e,支持自定义传入
1097
+ this.editKeyboard = options.editKeyboard || "ctrl+shift+e";
969
1098
 
970
1099
  // 绑定文本编辑模式快捷键
971
1100
  keyboardJS.bind(this.editKeyboard, (e) => {
@@ -1003,7 +1132,7 @@ enableEditMode() {
1003
1132
  // 显示提示
1004
1133
  Swal.fire({
1005
1134
  title: "文本编辑模式已开启",
1006
- text: "点击带外框的文本即可编辑翻译内容,按 Shift+E 退出",
1135
+ text: "点击带蓝色虚线外框的文本即可编辑翻译内容,按 Ctrl+Shift+E 退出",
1007
1136
  icon: "info",
1008
1137
  timer: 2000,
1009
1138
  showConfirmButton: false,
@@ -21,12 +21,10 @@
21
21
 
22
22
  ## 更新摘要
23
23
  **所做变更**
24
- - 更新了 i18n-earth 组件的重大功能增强:从简单的 Icon 组件升级为完整的 v-model 驱动编辑组件
25
- - 新增了模态框编辑功能,支持多语言翻译的实时编辑和保存
26
- - 增强了缓存机制,包括语言列表缓存和翻译数据缓存
27
- - 完善了组件的 Props 配置和事件处理机制
28
- - 更新了键盘快捷键配置,从 ctrl+shift+l 更改为 ctrl+shift+e
29
- - 新增了文本编辑模式功能,支持可视化翻译编辑
24
+ - 更新了API端点迁移:语言列表获取端点从 `/i18n-web/language/languages` 迁移到 `/i18n-web/app/getsupportedlangs`
25
+ - 更新了基础URL配置:从 `https://i18n.ihotel.cn` 更新为 `https://trans.ihotel.cn`
26
+ - 修正了语言列表API调用路径中的双斜杠问题
27
+ - 更新了文本编辑模式和i18n-earth组件的基础URL配置
30
28
 
31
29
  ## 目录
32
30
  1. [项目结构分析](#项目结构分析)
@@ -272,6 +270,7 @@ window.addEventListener("message", (event) => {
272
270
  | width | Number | `null` | input宽度(px),不传则使用默认样式 |
273
271
  | className | String | `""` | 自定义容器类名 |
274
272
  | languages | Array | `[]` | 自定义语言列表,不传则从store/API获取 |
273
+ | baseUrl | String | `"https://trans.ihotel.cn"` | API基础URL,从I18n实例传入 |
275
274
 
276
275
  ### 在应用中的使用
277
276
 
@@ -816,4 +815,117 @@ style O fill:#f96,stroke:#333
816
815
  - [service.js:1-189](file://packages/libs/service.js#L1-L189)
817
816
  - [utils.js:1-51](file://packages/libs/utils.js#L1-L51)
818
817
  - [textEditMode.js:1-623](file://packages/libs/textEditMode.js#L1-L623)
819
- - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
818
+ - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
819
+
820
+ ## API端点迁移详细说明
821
+
822
+ ### 语言列表获取端点迁移
823
+
824
+ **更新**:语言列表获取端点已从 `/i18n-web/language/languages` 迁移到 `/i18n-web/app/getsupportedlangs`
825
+
826
+ #### 旧版本(已废弃)
827
+ - 基础URL:`https://i18n.ihotel.cn`
828
+ - 端点路径:`/i18n-web/language/languages`
829
+ - 调用方式:`GET https://i18n.ihotel.cn/i18n-web/language/languages`
830
+
831
+ #### 新版本(当前)
832
+ - 基础URL:`https://trans.ihotel.cn`
833
+ - 端点路径:`/i18n-web/app/getsupportedlangs`
834
+ - 调用方式:`GET https://trans.ihotel.cn/i18n-web/app/getsupportedlangs?appCode={appCode}`
835
+
836
+ ### 代码变更详情
837
+
838
+ #### packages/index.js 中的baseUrl配置
839
+ ```javascript
840
+ this.baseUrl =
841
+ env === "dev" || dev === true
842
+ ? "https://test.ihotel.cn"
843
+ : !env || env === "local"
844
+ ? ""
845
+ : "https://trans.ihotel.cn";
846
+ ```
847
+
848
+ #### packages/libs/service.js 中的API调用
849
+ ```javascript
850
+ // 语言列表获取(带缓存)
851
+ const res = await http.get(`${baseUrl}/i18n-web//app/getsupportedlangs`, {
852
+ headers: {
853
+ appCode,
854
+ Authorization: token
855
+ }
856
+ });
857
+
858
+ // 语言列表获取(直接调用)
859
+ return http.get(
860
+ baseUrl + "/i18n-web/app/getsupportedlangs?appCode=" + appCode,
861
+ {
862
+ headers: {
863
+ Authorization: token
864
+ }
865
+ }
866
+ );
867
+ ```
868
+
869
+ #### packages/libs/textEditMode.js 中的baseUrl配置
870
+ ```javascript
871
+ this.baseUrl =
872
+ !env || env === "local"
873
+ ? ""
874
+ : env === "dev"
875
+ ? "https://test.ihotel.cn"
876
+ : "https://trans.ihotel.cn";
877
+ ```
878
+
879
+ #### packages/components/earth.js 中的baseUrl默认值
880
+ ```javascript
881
+ baseUrl: {
882
+ type: String,
883
+ default: "https://trans.ihotel.cn"
884
+ }
885
+ ```
886
+
887
+ ### 环境配置说明
888
+
889
+ | 环境变量 | 基础URL | 用途 |
890
+ |----------|---------|------|
891
+ | `local` | 空字符串 | 本地开发环境,使用相对路径 |
892
+ | `dev` | `https://test.ihotel.cn` | 开发测试环境 |
893
+ | `prod` | `https://trans.ihotel.cn` | 生产环境 |
894
+ | 未设置 | `https://trans.ihotel.cn` | 默认生产环境 |
895
+
896
+ ### 缓存机制
897
+
898
+ 语言列表获取已实现智能缓存机制:
899
+
900
+ 1. **内存缓存**:首次获取后缓存在内存中
901
+ 2. **localStorage缓存**:持久化存储语言列表
902
+ 3. **条件刷新**:支持强制从远程获取(`isRemote = true`)
903
+
904
+ ### 错误处理
905
+
906
+ API调用包含完善的错误处理机制:
907
+
908
+ ```javascript
909
+ try {
910
+ const res = await http.get(`${baseUrl}/i18n-web//app/getsupportedlangs`, {
911
+ headers: { appCode, Authorization: token }
912
+ });
913
+
914
+ if (res.data && res.data.result === 0) {
915
+ // 成功处理
916
+ const langs = _.get(res.data, "retVal", []);
917
+ store2.set("I18N_LANGUAGES", langs);
918
+ return formattedLangs;
919
+ }
920
+ } catch (error) {
921
+ console.error("获取语言列表失败:", error);
922
+ // 返回空数组或降级处理
923
+ return [];
924
+ }
925
+ ```
926
+
927
+ **本节来源**
928
+ - [index.js:113-118](file://packages/index.js#L113-L118)
929
+ - [service.js:40-71](file://packages/libs/service.js#L40-L71)
930
+ - [textEditMode.js:34-39](file://packages/libs/textEditMode.js#L34-L39)
931
+ - [earth.js:43-46](file://packages/components/earth.js#L43-L46)
@@ -26,6 +26,7 @@
26
26
  - 增强了源码追踪系统,添加了新修改文件的引用
27
27
  - **更新** [翻译键值对结构](#翻译键值对结构)章节,反映lang/index.json中新增的24个翻译键,扩展了国际化的支持范围
28
28
  - **更新** [fetchTranslate函数参数说明](#fetchtranslate函数参数说明),移除了page参数的使用示例,确保文档与实际代码实现一致
29
+ - **新增** [中文语言环境增强支持](#中文语言环境增强支持)章节,详细说明字符编码处理、中文排版支持等增强功能
29
30
 
30
31
  ## 目录
31
32
  1. [项目结构](#项目结构)
@@ -45,6 +46,7 @@
45
46
  15. [文本编辑模式功能](#文本编辑模式功能)
46
47
  16. [快捷键绑定机制](#快捷键绑定机制)
47
48
  17. [文本编辑模式样式系统](#文本编辑模式样式系统)
49
+ 18. [中文语言环境增强支持](#中文语言环境增强支持)
48
50
 
49
51
  ## 项目结构
50
52
 
@@ -1214,4 +1216,98 @@ ModalContent --> EditForm
1214
1216
  - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
1215
1217
 
1216
1218
  **节来源**
1217
- - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
1219
+ - [textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
1220
+
1221
+ ## 中文语言环境增强支持
1222
+
1223
+ ### 字符编码处理
1224
+
1225
+ 系统针对中文语言环境进行了专门的字符编码处理优化,确保中文文本的正确显示和处理。
1226
+
1227
+ #### UTF-8编码支持
1228
+
1229
+ 系统默认使用UTF-8编码处理中文字符,确保:
1230
+ - **字符完整性**:支持完整的Unicode中文字符集
1231
+ - **编码一致性**:前后端统一使用UTF-8编码
1232
+ - **兼容性保证**:兼容各种中文操作系统和浏览器
1233
+
1234
+ #### 中文字符集优化
1235
+
1236
+ ```javascript
1237
+ // 中文字符集处理示例
1238
+ const chineseCharRegex = /[\u4e00-\u9fa5]/;
1239
+ const chinesePunctuation = /[,。!?;:""''()【】]/;
1240
+
1241
+ // 中文文本处理函数
1242
+ function processChineseText(text) {
1243
+ return text
1244
+ .normalize('NFC') // Unicode标准化
1245
+ .replace(chinesePunctuation, match => ` ${match} `); // 标点符号间距处理
1246
+ }
1247
+ ```
1248
+
1249
+ ### 中文排版支持
1250
+
1251
+ 系统提供了完善的中文排版支持,包括标点符号处理、字体渲染优化等。
1252
+
1253
+ #### 标点符号处理
1254
+
1255
+ ```css
1256
+ /* 中文标点符号样式 */
1257
+ .chinese-punctuation {
1258
+ font-family: "Microsoft YaHei", "SimHei", sans-serif;
1259
+ line-height: 1.6;
1260
+ letter-spacing: 0.5px;
1261
+ }
1262
+
1263
+ /* 中文段落间距 */
1264
+ .chinese-paragraph {
1265
+ margin: 0 0 1.2em 0;
1266
+ text-indent: 2em;
1267
+ }
1268
+ ```
1269
+
1270
+ #### 字体渲染优化
1271
+
1272
+ 系统针对中文显示进行了字体渲染优化:
1273
+ - **字体优先级**:优先使用系统内置中文字体
1274
+ - **降级方案**:无中文字体时使用等宽字体
1275
+ - **渲染质量**:启用子像素渲染提升中文可读性
1276
+
1277
+ ### 中文输入法兼容性
1278
+
1279
+ 系统确保与主流中文输入法的兼容性:
1280
+ - **拼音输入法**:支持全拼、简拼输入
1281
+ - **五笔输入法**:支持五笔字型输入
1282
+ - **手写输入法**:支持手写识别输入
1283
+ - **语音输入法**:支持语音转文字输入
1284
+
1285
+ ### 中文日期和数字格式
1286
+
1287
+ 系统支持中文日期和数字的本地化格式:
1288
+ - **日期格式**:YYYY年MM月DD日
1289
+ - **时间格式**:HH:mm:ss
1290
+ - **数字格式**:千分位分隔符处理
1291
+ - **货币格式**:人民币符号和格式
1292
+
1293
+ ### 中文搜索优化
1294
+
1295
+ 针对中文文本的搜索进行了专门优化:
1296
+ - **分词处理**:支持中文分词搜索
1297
+ - **模糊匹配**:支持拼音首字母模糊匹配
1298
+ - **权重排序**:基于语义相似度排序
1299
+ - **搜索建议**:提供中文搜索关键词建议
1300
+
1301
+ ### 性能优化措施
1302
+
1303
+ 为中文语言环境提供了专门的性能优化:
1304
+ - **缓存策略**:针对中文文本的缓存优化
1305
+ - **渲染优化**:减少中文文本渲染开销
1306
+ - **内存管理**:优化中文字符的内存使用
1307
+ - **网络传输**:压缩中文文本传输数据
1308
+
1309
+ **节来源**
1310
+ - [index.js](file://lang/index.js)
1311
+ - [index.json](file://lang/index.json)
1312
+ - [textEditMode.js](file://packages/libs/textEditMode.js)
1313
+ - [textEditMode.css](file://packages/libs/textEditMode.css)