gc_i18n 1.4.7 → 1.4.8
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" +201 -36
- package/.qoder/repowiki/zh/content//345/277/253/351/200/237/345/274/200/345/247/213.md +382 -124
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/272/223/345/256/236/347/216/260.md +468 -56
- package/.qoder/repowiki/zh/content//350/257/255/350/250/200/350/265/204/346/272/220/347/256/241/347/220/206.md +230 -14
- package/.qoder/repowiki/zh/content//351/205/215/347/275/256/351/200/211/351/241/271.md +140 -45
- 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 +419 -68
- package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225/Vite /346/217/222/344/273/266/351/205/215/347/275/256/346/214/207/345/215/227.md" +341 -0
- 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" +436 -0
- 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" +573 -0
- 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 +70 -28
- package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//345/205/274/345/256/271/346/200/247/346/265/213/350/257/225/346/212/245/345/221/212.md +433 -0
- 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 +27 -27
- 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 +185 -31
- package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//347/244/272/344/276/213/351/241/271/347/233/256/346/246/202/350/247/210.md +540 -0
- 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 +692 -72
- package/.qoder/repowiki/zh/meta/repowiki-metadata.json +1 -1
- package/example/README.md +60 -0
- package/example/TEST_REPORT.md +198 -0
- package/example/VITE_PLUGIN_CONFIG.md +160 -0
- package/example/vue2-test/VUE2_CONFIG_GUIDE.md +157 -0
- package/example/vue2-test/index.html +18 -0
- package/example/vue2-test/lang/index.js +23 -0
- package/example/vue2-test/lang/index.json +14 -0
- package/example/vue2-test/package.json +21 -0
- package/example/vue2-test/pnpm-lock.yaml +2721 -0
- package/example/vue2-test/src/App.vue +47 -0
- package/example/vue2-test/src/main.js +27 -0
- package/example/vue2-test/src/views/Home.vue +15 -0
- package/example/vue2-test/vite.config.js +22 -0
- package/example/vue2-webpack-test/lang/index.js +27 -0
- package/example/vue2-webpack-test/lang/index.json +1 -0
- package/example/vue2-webpack-test/package.json +29 -0
- package/example/vue2-webpack-test/public/index.html +14 -0
- package/example/vue2-webpack-test/webpack.config.js +52 -0
- package/example/vue3-test/index.html +18 -0
- package/example/vue3-test/lang/index.js +29 -0
- package/example/vue3-test/lang/index.json +1 -0
- package/example/vue3-test/package.json +21 -0
- package/example/vue3-test/pnpm-lock.yaml +2887 -0
- package/example/vue3-test/src/App.vue +45 -0
- package/example/vue3-test/src/main.js +36 -0
- package/example/vue3-test/src/views/Home.vue +16 -0
- package/example/vue3-test/vite.config.js +23 -0
- package/lang/index.js +8 -12
- package/lang/index.json +4 -0
- package/lib/gc_i18n.css +1 -1
- package/lib/gc_i18n.es.js +1353 -1346
- package/lib/gc_i18n.umd.js +24 -24
- package/package.json +2 -3
- package/packages/index.js +75 -47
- package/packages/swal.css +3 -0
- package/src/view/Home.vue +1 -0
- package/vite.config.js +1 -3
|
@@ -3,16 +3,20 @@
|
|
|
3
3
|
<cite>
|
|
4
4
|
**本文档中引用的文件**
|
|
5
5
|
- [package.json](file://package.json) - *版本信息,从1.4.3升级到1.4.4*
|
|
6
|
-
- [
|
|
6
|
+
- [packages/index.js](file://packages/index.js) - *库的入口点,包含初始化逻辑和setRouter方法*
|
|
7
|
+
- [lib/gc_i18n.es.js](file://lib/gc_i18n.es.js) - *在最近的提交中更新,包含setRouter方法*
|
|
7
8
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts) - *在最近的提交中更新*
|
|
8
9
|
- [service.js](file://packages/libs/service.js) - *在最近的提交中更新,包含关键逻辑变更*
|
|
9
10
|
- [utils.js](file://packages/libs/utils.js) - *在最近的提交中更新,包含 mergeArraysByKey 函数*
|
|
10
|
-
- [
|
|
11
|
+
- [src/main.js](file://src/main.js) - *应用入口,展示如何集成gc_i18n*
|
|
12
|
+
- [src/router/index.js](file://src/router/index.js) - *路由配置示例*
|
|
11
13
|
</cite>
|
|
12
14
|
|
|
13
15
|
## 更新摘要
|
|
14
16
|
**变更内容**
|
|
15
17
|
- 版本从 1.4.3 升级到 1.4.4
|
|
18
|
+
- 新增 `setRouter` 方法,支持延迟设置Vue Router实例
|
|
19
|
+
- 增强的路由守卫功能,自动集成模态框关闭和翻译键收集
|
|
16
20
|
- 更新了 `packages/index.js` 中路由守卫的 `closeModal` 功能集成
|
|
17
21
|
- 更新了 `gc_i18n.es.js` 中 `$t` 方法的文档,详细说明了其新的查找优先级
|
|
18
22
|
- 更新了 `utils.js` 中 `mergeArraysByKey` 函数的文档
|
|
@@ -22,41 +26,171 @@
|
|
|
22
26
|
## 目录
|
|
23
27
|
1. [简介](#简介)
|
|
24
28
|
2. [核心 API 概述](#核心-api-概述)
|
|
25
|
-
3. [
|
|
26
|
-
4. [
|
|
27
|
-
5. [
|
|
28
|
-
6. [
|
|
29
|
-
7. [
|
|
29
|
+
3. [packages/index.js 公共方法](#packagesindexjs-公共方法)
|
|
30
|
+
4. [lib/gc_i18n.es.js 公共方法](#libgc_i18nesjs-公共方法)
|
|
31
|
+
5. [i18nUtils.ts 工具函数](#i18nutilsts-工具函数)
|
|
32
|
+
6. [service.js 异步接口](#servicesjs-异步接口)
|
|
33
|
+
7. [使用示例与最佳实践](#使用示例与最佳实践)
|
|
34
|
+
8. [错误处理与限制](#错误处理与限制)
|
|
30
35
|
|
|
31
36
|
## 简介
|
|
32
|
-
本 API 参考文档详细描述了 `gc_i18n` 国际化库的核心功能与接口。文档涵盖 `gc_i18n.es.js` 暴露的公共方法、`i18nUtils.ts` 中的工具函数以及 `service.js` 提供的异步服务接口。目标是为开发者提供一份全面、准确且易于理解的参考,以支持国际化功能的集成与开发。
|
|
37
|
+
本 API 参考文档详细描述了 `gc_i18n` 国际化库的核心功能与接口。文档涵盖 `packages/index.js` 和 `lib/gc_i18n.es.js` 暴露的公共方法、`i18nUtils.ts` 中的工具函数以及 `service.js` 提供的异步服务接口。目标是为开发者提供一份全面、准确且易于理解的参考,以支持国际化功能的集成与开发。
|
|
33
38
|
|
|
34
39
|
## 核心 API 概述
|
|
35
40
|
`gc_i18n` 库通过 Vue 3 的插件机制提供国际化支持。其核心功能包括:
|
|
36
41
|
- **翻译功能**:通过 `$t` 方法在模板或代码中获取翻译文本。
|
|
37
42
|
- **语言切换**:通过 `$changeLocale` 方法动态切换当前语言环境。
|
|
43
|
+
- **路由器集成**:通过 `setRouter` 方法设置Vue Router实例,自动初始化路由守卫。
|
|
38
44
|
- **语言包管理**:通过 `service.js` 提供的接口从后端获取和更新翻译资源。
|
|
39
45
|
- **工具支持**:提供静态分析工具函数,用于提取项目中的翻译键。
|
|
40
46
|
- **模态框关闭**:通过 `closeModal` 方法统一管理 SweetAlert2 模态框的关闭。
|
|
41
47
|
|
|
42
48
|
**Section sources**
|
|
43
|
-
- [
|
|
49
|
+
- [packages/index.js](file://packages/index.js)
|
|
50
|
+
- [lib/gc_i18n.es.js](file://lib/gc_i18n.es.js)
|
|
44
51
|
- [service.js](file://packages/libs/service.js)
|
|
45
52
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts)
|
|
46
53
|
|
|
47
|
-
##
|
|
48
|
-
`
|
|
54
|
+
## packages/index.js 公共方法
|
|
55
|
+
`packages/index.js` 作为库的主要入口点,提供了完整的国际化功能实现。该类通过构造函数接收配置选项,并提供多种公共方法供开发者使用。
|
|
56
|
+
|
|
57
|
+
### 构造函数 (I18n)
|
|
58
|
+
构造函数初始化国际化实例,支持多种配置选项。
|
|
59
|
+
|
|
60
|
+
**方法签名**
|
|
61
|
+
```typescript
|
|
62
|
+
constructor(options?: {
|
|
63
|
+
router?: any;
|
|
64
|
+
appCode?: string;
|
|
65
|
+
messages?: Record<string, any>;
|
|
66
|
+
token?: string;
|
|
67
|
+
orgCode?: string;
|
|
68
|
+
loginRouteName?: string;
|
|
69
|
+
login?: boolean;
|
|
70
|
+
keyboard?: string;
|
|
71
|
+
locale?: string;
|
|
72
|
+
env?: string;
|
|
73
|
+
dev?: boolean;
|
|
74
|
+
})
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**参数**
|
|
78
|
+
- **router**: `any` (可选) - Vue Router 实例,允许延迟设置
|
|
79
|
+
- **appCode**: `string` (可选) - 应用唯一标识码
|
|
80
|
+
- **messages**: `Record<string, any>` (可选) - 本地消息覆盖
|
|
81
|
+
- **token**: `string` (可选) - 认证令牌
|
|
82
|
+
- **orgCode**: `string` (可选) - 组织代码,用于生成JWT
|
|
83
|
+
- **loginRouteName**: `string` (可选, 默认: `"login"`) - 登录路由名称
|
|
84
|
+
- **login**: `boolean` (可选) - 是否启用登录功能
|
|
85
|
+
- **keyboard**: `string` (可选, 默认: `"ctrl+shift+l"`) - 快捷键配置
|
|
86
|
+
- **locale**: `string` (可选) - 默认语言环境
|
|
87
|
+
- **env**: `string` (可选) - 环境配置 (`"dev"|"local"|其他"`)
|
|
88
|
+
- **dev**: `boolean` (可选) - 开发模式开关
|
|
89
|
+
|
|
90
|
+
**返回值**
|
|
91
|
+
- `I18n` - 初始化后的国际化实例
|
|
92
|
+
|
|
93
|
+
**使用示例**
|
|
94
|
+
```javascript
|
|
95
|
+
import I18n from 'gc_i18n';
|
|
96
|
+
|
|
97
|
+
const i18n = new I18n({
|
|
98
|
+
appCode: 'YOUR_APP_CODE',
|
|
99
|
+
router: vueRouter,
|
|
100
|
+
locale: 'zh-CN'
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Section sources**
|
|
105
|
+
- [packages/index.js:81-139](file://packages/index.js#L81-L139)
|
|
106
|
+
|
|
107
|
+
### setRouter (设置路由器)
|
|
108
|
+
设置Vue Router实例,支持延迟设置。该方法会自动初始化路由守卫。
|
|
109
|
+
|
|
110
|
+
**方法签名**
|
|
111
|
+
```typescript
|
|
112
|
+
setRouter(router: any): I18n
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**参数**
|
|
116
|
+
- **router**: `any` - Vue Router 实例
|
|
117
|
+
|
|
118
|
+
**返回值**
|
|
119
|
+
- `I18n` - 返回当前实例,支持链式调用
|
|
120
|
+
|
|
121
|
+
**副作用**
|
|
122
|
+
- 设置 `this.router` 属性
|
|
123
|
+
- 调用 `initRouterGuards()` 初始化路由守卫
|
|
124
|
+
- 支持链式调用返回当前实例
|
|
125
|
+
|
|
126
|
+
**使用限制**
|
|
127
|
+
- 该方法支持延迟设置,即可以在实例创建后任意时间设置router
|
|
128
|
+
- 如果router已经存在,会直接初始化路由守卫
|
|
129
|
+
- 返回当前实例,便于链式调用
|
|
130
|
+
|
|
131
|
+
**错误处理建议**
|
|
132
|
+
- 确保传入的router是有效的Vue Router实例
|
|
133
|
+
- 在调用前检查router实例的状态
|
|
134
|
+
- 如需重新初始化,可再次调用此方法
|
|
135
|
+
|
|
136
|
+
**Section sources**
|
|
137
|
+
- [packages/index.js:221-230](file://packages/index.js#L221-L230)
|
|
138
|
+
|
|
139
|
+
### initRouterGuards (初始化路由守卫)
|
|
140
|
+
初始化路由守卫,自动处理模态框关闭、翻译键收集和语言切换。
|
|
141
|
+
|
|
142
|
+
**方法签名**
|
|
143
|
+
```typescript
|
|
144
|
+
initRouterGuards(): void
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**参数**
|
|
148
|
+
- 无参数
|
|
149
|
+
|
|
150
|
+
**返回值**
|
|
151
|
+
- `void` - 无返回值
|
|
152
|
+
|
|
153
|
+
**副作用**
|
|
154
|
+
- 注册 `beforeEach` 和 `afterEach` 路由守卫
|
|
155
|
+
- 自动关闭 SweetAlert2 弹窗
|
|
156
|
+
- 收集翻译键并更新 `translationKeys`
|
|
157
|
+
- 设置当前路由名称
|
|
158
|
+
- 更新 `I18N_CONFIG` 中的 `routerName`
|
|
159
|
+
|
|
160
|
+
**增强功能**
|
|
161
|
+
- **自动模态框管理**:在路由切换时自动调用 `closeModal()`
|
|
162
|
+
- **翻译键收集**:自动收集当前页面使用的翻译键
|
|
163
|
+
- **异步组件支持**:支持动态导入的异步组件
|
|
164
|
+
- **登录路由检测**:自动识别登录路由并收集特殊翻译键
|
|
165
|
+
- **路由名称跟踪**:维护当前路由名称以便 `$t` 方法使用
|
|
166
|
+
|
|
167
|
+
**使用限制**
|
|
168
|
+
- 仅在 `router` 存在时执行
|
|
169
|
+
- 防止重复注册路由守卫
|
|
170
|
+
- 处理异步组件加载错误
|
|
171
|
+
|
|
172
|
+
**错误处理建议**
|
|
173
|
+
- 捕获异步组件加载异常
|
|
174
|
+
- 处理路由守卫注册冲突
|
|
175
|
+
- 确保 `configInstance` 存在时才调用 `closeModal()`
|
|
176
|
+
|
|
177
|
+
**Section sources**
|
|
178
|
+
- [packages/index.js:232-335](file://packages/index.js#L232-L335)
|
|
179
|
+
|
|
180
|
+
## lib/gc_i18n.es.js 公共方法
|
|
181
|
+
`lib/gc_i18n.es.js` 作为库的核心,通过向 Vue 应用实例的 `config.globalProperties` 挂载方法来暴露其公共 API。这些方法在 Vue 组件的模板和 `setup` 函数中均可直接使用。
|
|
49
182
|
|
|
50
183
|
### $t (翻译方法)
|
|
51
184
|
此方法用于根据给定的键(key)查找并返回对应的翻译文本。
|
|
52
185
|
|
|
53
186
|
**方法签名**
|
|
54
187
|
```typescript
|
|
55
|
-
$t(key: string): string
|
|
188
|
+
$t(key: string, defaultValue?: string): string
|
|
56
189
|
```
|
|
57
190
|
|
|
58
191
|
**参数**
|
|
59
|
-
- **key**: `string` -
|
|
192
|
+
- **key**: `string` - 翻译资源的唯一标识符
|
|
193
|
+
- **defaultValue**: `string` (可选) - 当翻译不存在时的默认值
|
|
60
194
|
|
|
61
195
|
**返回值**
|
|
62
196
|
- `string` - 与 `key` 对应的翻译文本。如果未找到匹配的翻译,则返回原始 `key`。
|
|
@@ -65,6 +199,12 @@ $t(key: string): string
|
|
|
65
199
|
- 无直接副作用。其行为依赖于当前激活的语言环境和已加载的翻译资源。
|
|
66
200
|
- 在内部,它会将 `key` 记录到 `translationKeySet` 中,用于后续的翻译键收集。
|
|
67
201
|
|
|
202
|
+
**查找优先级**
|
|
203
|
+
该方法的查找逻辑已更新,优先级为:
|
|
204
|
+
1. `当前路由名.key` - 首选,针对特定路由的翻译
|
|
205
|
+
2. `common.key` - 次选,通用翻译
|
|
206
|
+
3. `key` - 最后选择,基础翻译
|
|
207
|
+
|
|
68
208
|
**使用限制**
|
|
69
209
|
- `key` 必须是字符串类型。
|
|
70
210
|
- 该方法依赖于 `init` 过程中加载的语言包,若语言包未正确加载,可能返回不准确的翻译。
|
|
@@ -73,12 +213,8 @@ $t(key: string): string
|
|
|
73
213
|
- 在调用 `$t` 前,确保 `init` 过程已完成。
|
|
74
214
|
- 在开发环境中,检查控制台日志以确认是否存在未找到的翻译键。
|
|
75
215
|
|
|
76
|
-
**更新** 该方法的查找逻辑已更新,优先级为:`当前路由名.key` > `common.key` > `key`。
|
|
77
|
-
|
|
78
216
|
**Section sources**
|
|
79
|
-
- [gc_i18n.es.js:
|
|
80
|
-
- [src/view/Home.vue](file://src/view/Home.vue#L19)
|
|
81
|
-
- [src/view/login.vue](file://src/view/login.vue#L10)
|
|
217
|
+
- [lib/gc_i18n.es.js:2954-2971](file://lib/gc_i18n.es.js#L2954-L2971)
|
|
82
218
|
|
|
83
219
|
### $changeLocale (切换语言方法)
|
|
84
220
|
此方法用于动态更改当前应用的语言环境。
|
|
@@ -107,12 +243,8 @@ $changeLocale(locale: string): Promise<void>
|
|
|
107
243
|
- 使用 `try-catch` 包裹异步调用,以捕获可能的网络错误。
|
|
108
244
|
- 提供用户友好的错误提示,例如"切换语言失败,请稍后重试"。
|
|
109
245
|
|
|
110
|
-
**更新** 该方法的实现已更新,现在通过调用 `setLanguage` 方法来完成核心逻辑。
|
|
111
|
-
|
|
112
246
|
**Section sources**
|
|
113
|
-
- [gc_i18n.es.js:
|
|
114
|
-
- [src/view/Home.vue](file://src/view/Home.vue#L2)
|
|
115
|
-
- [src/view/login.vue](file://src/view/login.vue#L2)
|
|
247
|
+
- [lib/gc_i18n.es.js:2979-2981](file://lib/gc_i18n.es.js#L2979-L2981)
|
|
116
248
|
|
|
117
249
|
### closeModal (关闭模态框方法)
|
|
118
250
|
此方法用于统一关闭 SweetAlert2 弹窗,确保模态框的正确销毁和资源清理。
|
|
@@ -143,11 +275,8 @@ closeModal(): void
|
|
|
143
275
|
- 监听 `willClose` 和 `didClose` 事件以处理关闭后的逻辑
|
|
144
276
|
- 在路由切换时自动调用此方法,避免弹窗残留
|
|
145
277
|
|
|
146
|
-
**新增** 该方法作为 SweetAlert2 的别名方法,提供统一的模态框关闭接口。
|
|
147
|
-
|
|
148
278
|
**Section sources**
|
|
149
|
-
- [gc_i18n.es.js:1340-1350](file://lib/gc_i18n.es.js#L1340-L1350)
|
|
150
|
-
- [gc_i18n.es.js:1930-1932](file://lib/gc_i18n.es.js#L1930-L1932) - *closeModal 方法别名注册*
|
|
279
|
+
- [lib/gc_i18n.es.js:1340-1350](file://lib/gc_i18n.es.js#L1340-L1350)
|
|
151
280
|
|
|
152
281
|
## i18nUtils.ts 工具函数
|
|
153
282
|
`i18nUtils.ts` 文件提供了一个用于静态分析的工具函数,帮助开发者管理和审计翻译资源。
|
|
@@ -176,7 +305,7 @@ function extractTranslationKeys(component: any): string[]
|
|
|
176
305
|
- 开发者手动检查组件,以确保所有翻译键都已定义。
|
|
177
306
|
|
|
178
307
|
**Section sources**
|
|
179
|
-
- [i18nUtils.ts:1-54](file://packages/libs/i18nUtils.ts#L1-L54)
|
|
308
|
+
- [i18nUtils.ts:1-54](file://packages/libs/i18nUtils.ts#L1-L54)
|
|
180
309
|
|
|
181
310
|
## service.js 异步接口
|
|
182
311
|
`service.js` 封装了与后端语言服务通信的异步接口,负责获取和管理翻译数据。
|
|
@@ -215,10 +344,8 @@ getLanguagesWithCache({ baseUrl, token, appCode, isRemote }: {
|
|
|
215
344
|
- 确保 `store2` 正常工作,本地存储空间充足。
|
|
216
345
|
- 处理网络请求失败的情况,提供降级方案(如使用缓存数据)。
|
|
217
346
|
|
|
218
|
-
**更新** 新增的带缓存功能,提高了语言列表获取的性能和可靠性。
|
|
219
|
-
|
|
220
347
|
**Section sources**
|
|
221
|
-
- [service.js:19-61](file://packages/libs/service.js#L19-L61)
|
|
348
|
+
- [service.js:19-61](file://packages/libs/service.js#L19-L61)
|
|
222
349
|
|
|
223
350
|
### getLanguages (获取支持的语言列表)
|
|
224
351
|
获取系统支持的所有语言环境列表。
|
|
@@ -236,8 +363,6 @@ getLanguages({ baseUrl, token, appCode }: { baseUrl: string; token: string; appC
|
|
|
236
363
|
**返回值**
|
|
237
364
|
- `Promise<any>` - 一个 Promise,resolve 时返回包含支持语言列表的响应对象。
|
|
238
365
|
|
|
239
|
-
**更新** 端点已标准化为 `/i18n-web/app/getsupportedlangs`,移除了重复的斜杠。
|
|
240
|
-
|
|
241
366
|
**Section sources**
|
|
242
367
|
- [service.js:63-72](file://packages/libs/service.js#L63-L72)
|
|
243
368
|
|
|
@@ -265,8 +390,6 @@ fetchTranslate({ appCode, language, lastPullDate, baseUrl, token }: {
|
|
|
265
390
|
**返回值**
|
|
266
391
|
- `Promise<any>` - 一个 Promise,resolve 时返回包含翻译数据的对象。如果请求成功,`res.data.result` 为 0,则返回 `res.data.retVal`;否则返回整个 `res` 对象。
|
|
267
392
|
|
|
268
|
-
**更新** 移除了 `page` 参数,更新了函数签名和参数说明。
|
|
269
|
-
|
|
270
393
|
**Section sources**
|
|
271
394
|
- [service.js:74-101](file://packages/libs/service.js#L74-L101)
|
|
272
395
|
|
|
@@ -307,7 +430,7 @@ getTranslate({ baseUrl, appCode, language, token, routerName }: {
|
|
|
307
430
|
**更新** 该方法的行为已更新,当从后端获取到 `common` 类型的翻译时,会移除当前路由中同名的翻译数据。
|
|
308
431
|
|
|
309
432
|
**Section sources**
|
|
310
|
-
- [service.js:133-186](file://packages/libs/service.js#L133-L186)
|
|
433
|
+
- [service.js:133-186](file://packages/libs/service.js#L133-L186)
|
|
311
434
|
|
|
312
435
|
### userDicts (用户词典)
|
|
313
436
|
提交用户自定义的翻译词典。
|
|
@@ -349,6 +472,46 @@ saveTranslate({ data, token, baseUrl }: { data: any; token: string; baseUrl: str
|
|
|
349
472
|
|
|
350
473
|
## 使用示例与最佳实践
|
|
351
474
|
|
|
475
|
+
### 基本初始化
|
|
476
|
+
```javascript
|
|
477
|
+
import { createApp } from 'vue';
|
|
478
|
+
import I18n from 'gc_i18n';
|
|
479
|
+
import router from './router';
|
|
480
|
+
|
|
481
|
+
const app = createApp(App);
|
|
482
|
+
|
|
483
|
+
// 创建国际化实例
|
|
484
|
+
const i18n = new I18n({
|
|
485
|
+
appCode: 'YOUR_APP_CODE',
|
|
486
|
+
router: router,
|
|
487
|
+
locale: 'zh-CN'
|
|
488
|
+
});
|
|
489
|
+
|
|
490
|
+
// 安装插件
|
|
491
|
+
app.use(i18n);
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### 延迟设置路由器
|
|
495
|
+
```javascript
|
|
496
|
+
import { createApp } from 'vue';
|
|
497
|
+
import I18n from 'gc_i18n';
|
|
498
|
+
import router from './router';
|
|
499
|
+
|
|
500
|
+
const app = createApp(App);
|
|
501
|
+
|
|
502
|
+
// 先创建国际化实例,稍后再设置router
|
|
503
|
+
const i18n = new I18n({
|
|
504
|
+
appCode: 'YOUR_APP_CODE',
|
|
505
|
+
locale: 'zh-CN'
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
// 稍后设置router
|
|
509
|
+
i18n.setRouter(router);
|
|
510
|
+
|
|
511
|
+
// 安装插件
|
|
512
|
+
app.use(i18n);
|
|
513
|
+
```
|
|
514
|
+
|
|
352
515
|
### 在 Vue 模板中使用 $t
|
|
353
516
|
```vue
|
|
354
517
|
<template>
|
|
@@ -415,6 +578,8 @@ this.router.beforeEach(async (to, from, next) => {
|
|
|
415
578
|
- **参数变更**: `fetchTranslate` 函数已移除 `page` 参数,使用时请注意更新调用方式。
|
|
416
579
|
- **端点标准化**: 所有翻译服务端点已标准化为 `/i18n-web/...` 结构,确保了后端服务的一致性。
|
|
417
580
|
- **模态框管理**: 新增的 `closeModal` 方法提供了统一的 SweetAlert2 弹窗管理,避免了弹窗残留问题。
|
|
581
|
+
- **路由守卫增强**: `setRouter` 方法和增强的路由守卫功能提供了更完善的路由集成体验。
|
|
582
|
+
- **延迟设置支持**: `setRouter` 方法支持延迟设置,提高了库的灵活性。
|
|
418
583
|
- **版本更新** 本版本为 1.4.4,包含上述重要变更,特别是路由守卫中自动调用 `closeModal` 的功能集成。
|
|
419
584
|
|
|
420
585
|
**版本更新** 本版本为 1.4.4,包含上述重要变更,特别是路由守卫中自动调用 `closeModal` 的功能集成。
|