@xiaonoodles/meetfun-i18n 1.2.16 → 1.3.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.
@@ -1,253 +1,253 @@
1
- # Vue2/Vue3 迁移指南
2
-
3
- 本文档帮助您在 Vue2 和 Vue3 项目之间迁移使用 meetfun-i18n。
4
-
5
- ## 快速对比
6
-
7
- | 特性 | Vue2 | Vue3 |
8
- |------|------|------|
9
- | **引入方式** | `import { createMeetFunI18n } from 'meetfun-i18n/vue2'` | `import { createMeetFunI18n } from 'meetfun-i18n'` |
10
- | **Vue 版本** | Vue 2.7+ | Vue 3.x |
11
- | **vue-i18n 版本** | 8.x | 9.x |
12
- | **安装方式** | `Vue.use(i18n)` | `app.use(i18n)` |
13
- | **API 使用** | 完全相同 ✅ | 完全相同 ✅ |
14
-
15
- ## Vue2 项目示例
16
-
17
- ### 1. 安装依赖
18
-
19
- ```bash
20
- pnpm add meetfun-i18n vue@^2.7.0 vue-i18n@^8.0.0
21
- ```
22
-
23
- ### 2. 初始化
24
-
25
- ```javascript
26
- // src/locales/index.js
27
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
28
- import zhHans from './zh-Hans.json'
29
- import en from './en.json'
30
- import { queryLangDictHotData, queryLangDictColdData } from '@/api/translate'
31
-
32
- const baseMessages = {
33
- 'zh-Hans': zhHans,
34
- en: en,
35
- }
36
-
37
- const apiConfig = {
38
- queryLangDictHotData,
39
- queryLangDictColdData,
40
- }
41
-
42
- export default createMeetFunI18n(baseMessages, apiConfig, {
43
- defaultLocale: 'zh-Hans',
44
- systemCode: 'YOUR_SYSTEM_CODE',
45
- })
46
- ```
47
-
48
- ### 3. 在 main.js 中安装
49
-
50
- ```javascript
51
- // main.js
52
- import Vue from 'vue'
53
- import App from './App.vue'
54
- import i18nInstance from './locales'
55
-
56
- // 安装 vue-i18n
57
- Vue.use(i18nInstance.getI18n())
58
-
59
- // 可选:挂载到原型
60
- Vue.prototype.$i18nInstance = i18nInstance
61
-
62
- new Vue({
63
- i18n: i18nInstance.getI18n(),
64
- render: h => h(App)
65
- }).$mount('#app')
66
- ```
67
-
68
- ### 4. 在组件中使用
69
-
70
- ```vue
71
- <template>
72
- <view>
73
- <text>{{ $t('welcomeMessage') }}</text>
74
- <button @click="changeLanguage">切换语言</button>
75
- </view>
76
- </template>
77
-
78
- <script>
79
- export default {
80
- methods: {
81
- changeLanguage() {
82
- this.$i18nInstance.switchLocale('en')
83
- }
84
- }
85
- }
86
- </script>
87
- ```
88
-
89
- ## Vue3 项目示例
90
-
91
- ### 1. 安装依赖
92
-
93
- ```bash
94
- pnpm add meetfun-i18n vue@^3.0.0 vue-i18n@^9.0.0
95
- ```
96
-
97
- ### 2. 初始化
98
-
99
- ```typescript
100
- // src/locales/index.ts
101
- import { createMeetFunI18n } from 'meetfun-i18n'
102
- import zhHans from './zh-Hans.json'
103
- import en from './en.json'
104
- import { queryLangDictHotData, queryLangDictColdData } from '@/api/translate'
105
-
106
- const baseMessages = {
107
- 'zh-Hans': zhHans,
108
- en: en,
109
- }
110
-
111
- const apiConfig = {
112
- queryLangDictHotData,
113
- queryLangDictColdData,
114
- }
115
-
116
- export default createMeetFunI18n(baseMessages, apiConfig, {
117
- defaultLocale: 'zh-Hans',
118
- systemCode: 'YOUR_SYSTEM_CODE',
119
- })
120
- ```
121
-
122
- ### 3. 在 main.ts 中安装
123
-
124
- ```typescript
125
- // main.ts
126
- import { createSSRApp } from 'vue'
127
- import App from './App.vue'
128
- import i18nInstance from './locales'
129
-
130
- export function createApp() {
131
- const app = createSSRApp(App)
132
-
133
- // 安装 vue-i18n
134
- app.use(i18nInstance.getI18n())
135
-
136
- return {
137
- app,
138
- }
139
- }
140
- ```
141
-
142
- ### 4. 在组件中使用
143
-
144
- ```vue
145
- <template>
146
- <view>
147
- <text>{{ $t('welcomeMessage') }}</text>
148
- <button @click="changeLanguage">切换语言</button>
149
- </view>
150
- </template>
151
-
152
- <script setup lang="ts">
153
- import i18nInstance from '@/locales'
154
-
155
- const changeLanguage = () => {
156
- i18nInstance.switchLocale('en')
157
- }
158
- </script>
159
- ```
160
-
161
- ## 从 Vue2 迁移到 Vue3
162
-
163
- 如果您的项目正在从 Vue2 升级到 Vue3,只需要:
164
-
165
- ### 步骤 1:更新引入路径
166
-
167
- ```typescript
168
- // 之前 (Vue2)
169
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
170
-
171
- // 之后 (Vue3)
172
- import { createMeetFunI18n } from 'meetfun-i18n'
173
- ```
174
-
175
- ### 步骤 2:更新依赖
176
-
177
- ```bash
178
- # 卸载 Vue2 相关依赖
179
- pnpm remove vue@2 vue-i18n@8
180
-
181
- # 安装 Vue3 相关依赖
182
- pnpm add vue@^3.0.0 vue-i18n@^9.0.0
183
- ```
184
-
185
- ### 步骤 3:更新 main 文件
186
-
187
- ```typescript
188
- // 之前 (Vue2)
189
- import Vue from 'vue'
190
- Vue.use(i18nInstance.getI18n())
191
- Vue.prototype.$i18nInstance = i18nInstance
192
-
193
- // 之后 (Vue3)
194
- import { createSSRApp } from 'vue'
195
- const app = createSSRApp(App)
196
- app.use(i18nInstance.getI18n())
197
- app.config.globalProperties.$i18nInstance = i18nInstance
198
- ```
199
-
200
- ### 步骤 4:更新组件语法
201
-
202
- ```vue
203
- <!-- 之前 (Vue2 Options API) -->
204
- <script>
205
- export default {
206
- data() {
207
- return {
208
- text: this.$i18nInstance.$t('hello')
209
- }
210
- }
211
- }
212
- </script>
213
-
214
- <!-- 之后 (Vue3 Composition API) -->
215
- <script setup lang="ts">
216
- import { ref } from 'vue'
217
- import i18nInstance from '@/locales'
218
-
219
- const text = ref(i18nInstance.$t('hello'))
220
- </script>
221
- ```
222
-
223
- ## 注意事项
224
-
225
- 1. **引入路径**:这是唯一的区别,Vue2 必须从 `meetfun-i18n/vue2` 引入
226
- 2. **API 使用**:所有 API 方法在两个版本中完全相同
227
- 3. **类型支持**:两个版本都提供完整的 TypeScript 类型定义
228
- 4. **功能特性**:所有功能特性在两个版本中保持一致
229
-
230
- ## 常见问题
231
-
232
- ### Q: 可以在同一个项目中同时使用 Vue2 和 Vue3 版本吗?
233
-
234
- A: 不可以。一个项目只能使用一个版本。请根据项目使用的 Vue 版本选择对应的引入路径。
235
-
236
- ### Q: 如果引入错误的版本会怎样?
237
-
238
- A: 会出现类型错误或运行时错误。Vue3 项目使用 `/vue2` 路径会导致 vue-i18n 版本不匹配。
239
-
240
- ### Q: 两个版本的性能有差异吗?
241
-
242
- A: 性能主要取决于 Vue 和 vue-i18n 的版本,本库在两个版本中的性能表现一致。
243
-
244
- ### Q: API 函数的实现需要改变吗?
245
-
246
- A: 不需要。API 函数的实现在两个版本中完全相同。
247
-
248
- ## 相关文档
249
-
250
- - [README.md](./README.md) - 完整的使用文档
251
- - [VUE2_USAGE.md](./VUE2_USAGE.md) - Vue2 详细使用指南
252
- - [USAGE_EXAMPLE.md](./USAGE_EXAMPLE.md) - 更多使用示例
253
-
1
+ # Vue2/Vue3 迁移指南
2
+
3
+ 本文档帮助您在 Vue2 和 Vue3 项目之间迁移使用 meetfun-i18n。
4
+
5
+ ## 快速对比
6
+
7
+ | 特性 | Vue2 | Vue3 |
8
+ |------|------|------|
9
+ | **引入方式** | `import { createMeetFunI18n } from 'meetfun-i18n/vue2'` | `import { createMeetFunI18n } from 'meetfun-i18n'` |
10
+ | **Vue 版本** | Vue 2.7+ | Vue 3.x |
11
+ | **vue-i18n 版本** | 8.x | 9.x |
12
+ | **安装方式** | `Vue.use(i18n)` | `app.use(i18n)` |
13
+ | **API 使用** | 完全相同 ✅ | 完全相同 ✅ |
14
+
15
+ ## Vue2 项目示例
16
+
17
+ ### 1. 安装依赖
18
+
19
+ ```bash
20
+ pnpm add meetfun-i18n vue@^2.7.0 vue-i18n@^8.0.0
21
+ ```
22
+
23
+ ### 2. 初始化
24
+
25
+ ```javascript
26
+ // src/locales/index.js
27
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
28
+ import zhHans from './zh-Hans.json'
29
+ import en from './en.json'
30
+ import { queryLangDictHotData, queryLangDictColdData } from '@/api/translate'
31
+
32
+ const baseMessages = {
33
+ 'zh-Hans': zhHans,
34
+ en: en,
35
+ }
36
+
37
+ const apiConfig = {
38
+ queryLangDictHotData,
39
+ queryLangDictColdData,
40
+ }
41
+
42
+ export default createMeetFunI18n(baseMessages, apiConfig, {
43
+ defaultLocale: 'zh-Hans',
44
+ systemCode: 'YOUR_SYSTEM_CODE',
45
+ })
46
+ ```
47
+
48
+ ### 3. 在 main.js 中安装
49
+
50
+ ```javascript
51
+ // main.js
52
+ import Vue from 'vue'
53
+ import App from './App.vue'
54
+ import i18nInstance from './locales'
55
+
56
+ // 安装 vue-i18n
57
+ Vue.use(i18nInstance.getI18n())
58
+
59
+ // 可选:挂载到原型
60
+ Vue.prototype.$i18nInstance = i18nInstance
61
+
62
+ new Vue({
63
+ i18n: i18nInstance.getI18n(),
64
+ render: h => h(App)
65
+ }).$mount('#app')
66
+ ```
67
+
68
+ ### 4. 在组件中使用
69
+
70
+ ```vue
71
+ <template>
72
+ <view>
73
+ <text>{{ $t('welcomeMessage') }}</text>
74
+ <button @click="changeLanguage">切换语言</button>
75
+ </view>
76
+ </template>
77
+
78
+ <script>
79
+ export default {
80
+ methods: {
81
+ changeLanguage() {
82
+ this.$i18nInstance.switchLocale('en')
83
+ }
84
+ }
85
+ }
86
+ </script>
87
+ ```
88
+
89
+ ## Vue3 项目示例
90
+
91
+ ### 1. 安装依赖
92
+
93
+ ```bash
94
+ pnpm add meetfun-i18n vue@^3.0.0 vue-i18n@^9.0.0
95
+ ```
96
+
97
+ ### 2. 初始化
98
+
99
+ ```typescript
100
+ // src/locales/index.ts
101
+ import { createMeetFunI18n } from 'meetfun-i18n'
102
+ import zhHans from './zh-Hans.json'
103
+ import en from './en.json'
104
+ import { queryLangDictHotData, queryLangDictColdData } from '@/api/translate'
105
+
106
+ const baseMessages = {
107
+ 'zh-Hans': zhHans,
108
+ en: en,
109
+ }
110
+
111
+ const apiConfig = {
112
+ queryLangDictHotData,
113
+ queryLangDictColdData,
114
+ }
115
+
116
+ export default createMeetFunI18n(baseMessages, apiConfig, {
117
+ defaultLocale: 'zh-Hans',
118
+ systemCode: 'YOUR_SYSTEM_CODE',
119
+ })
120
+ ```
121
+
122
+ ### 3. 在 main.ts 中安装
123
+
124
+ ```typescript
125
+ // main.ts
126
+ import { createSSRApp } from 'vue'
127
+ import App from './App.vue'
128
+ import i18nInstance from './locales'
129
+
130
+ export function createApp() {
131
+ const app = createSSRApp(App)
132
+
133
+ // 安装 vue-i18n
134
+ app.use(i18nInstance.getI18n())
135
+
136
+ return {
137
+ app,
138
+ }
139
+ }
140
+ ```
141
+
142
+ ### 4. 在组件中使用
143
+
144
+ ```vue
145
+ <template>
146
+ <view>
147
+ <text>{{ $t('welcomeMessage') }}</text>
148
+ <button @click="changeLanguage">切换语言</button>
149
+ </view>
150
+ </template>
151
+
152
+ <script setup lang="ts">
153
+ import i18nInstance from '@/locales'
154
+
155
+ const changeLanguage = () => {
156
+ i18nInstance.switchLocale('en')
157
+ }
158
+ </script>
159
+ ```
160
+
161
+ ## 从 Vue2 迁移到 Vue3
162
+
163
+ 如果您的项目正在从 Vue2 升级到 Vue3,只需要:
164
+
165
+ ### 步骤 1:更新引入路径
166
+
167
+ ```typescript
168
+ // 之前 (Vue2)
169
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
170
+
171
+ // 之后 (Vue3)
172
+ import { createMeetFunI18n } from 'meetfun-i18n'
173
+ ```
174
+
175
+ ### 步骤 2:更新依赖
176
+
177
+ ```bash
178
+ # 卸载 Vue2 相关依赖
179
+ pnpm remove vue@2 vue-i18n@8
180
+
181
+ # 安装 Vue3 相关依赖
182
+ pnpm add vue@^3.0.0 vue-i18n@^9.0.0
183
+ ```
184
+
185
+ ### 步骤 3:更新 main 文件
186
+
187
+ ```typescript
188
+ // 之前 (Vue2)
189
+ import Vue from 'vue'
190
+ Vue.use(i18nInstance.getI18n())
191
+ Vue.prototype.$i18nInstance = i18nInstance
192
+
193
+ // 之后 (Vue3)
194
+ import { createSSRApp } from 'vue'
195
+ const app = createSSRApp(App)
196
+ app.use(i18nInstance.getI18n())
197
+ app.config.globalProperties.$i18nInstance = i18nInstance
198
+ ```
199
+
200
+ ### 步骤 4:更新组件语法
201
+
202
+ ```vue
203
+ <!-- 之前 (Vue2 Options API) -->
204
+ <script>
205
+ export default {
206
+ data() {
207
+ return {
208
+ text: this.$i18nInstance.$t('hello')
209
+ }
210
+ }
211
+ }
212
+ </script>
213
+
214
+ <!-- 之后 (Vue3 Composition API) -->
215
+ <script setup lang="ts">
216
+ import { ref } from 'vue'
217
+ import i18nInstance from '@/locales'
218
+
219
+ const text = ref(i18nInstance.$t('hello'))
220
+ </script>
221
+ ```
222
+
223
+ ## 注意事项
224
+
225
+ 1. **引入路径**:这是唯一的区别,Vue2 必须从 `meetfun-i18n/vue2` 引入
226
+ 2. **API 使用**:所有 API 方法在两个版本中完全相同
227
+ 3. **类型支持**:两个版本都提供完整的 TypeScript 类型定义
228
+ 4. **功能特性**:所有功能特性在两个版本中保持一致
229
+
230
+ ## 常见问题
231
+
232
+ ### Q: 可以在同一个项目中同时使用 Vue2 和 Vue3 版本吗?
233
+
234
+ A: 不可以。一个项目只能使用一个版本。请根据项目使用的 Vue 版本选择对应的引入路径。
235
+
236
+ ### Q: 如果引入错误的版本会怎样?
237
+
238
+ A: 会出现类型错误或运行时错误。Vue3 项目使用 `/vue2` 路径会导致 vue-i18n 版本不匹配。
239
+
240
+ ### Q: 两个版本的性能有差异吗?
241
+
242
+ A: 性能主要取决于 Vue 和 vue-i18n 的版本,本库在两个版本中的性能表现一致。
243
+
244
+ ### Q: API 函数的实现需要改变吗?
245
+
246
+ A: 不需要。API 函数的实现在两个版本中完全相同。
247
+
248
+ ## 相关文档
249
+
250
+ - [README.md](./README.md) - 完整的使用文档
251
+ - [VUE2_USAGE.md](./VUE2_USAGE.md) - Vue2 详细使用指南
252
+ - [USAGE_EXAMPLE.md](./USAGE_EXAMPLE.md) - 更多使用示例
253
+