安装vue-i18n
npm install vue-i18n@8 --save
这里是安装版本 8.x,根据项目可以安装版本9.x,不过引入时有区别。从vue-i18n v9 开始,不再提供默认导出(default export)。
创建国际化配置文件
创建一个文件夹用于存放你的语言资源文件,比如 src/i18n/
。
然后创建不同语言的 JSON 文件,例如 zh.json
和 en.json
// zh.json { "welcome": "欢迎", "goodbye": "再见" } // en.json { "welcome": "Welcome", "goodbye": "Goodbye" }
设置vue-i18n
安装版本 8.x,在你的项目入口文件(通常是 main.js
)中设置 vue-i18n
import Vue from 'vue' import App from './App' import VueI18n from 'vue-i18n' // 导入语言文件 import zh from './i18n/zh.json' import en from './i18n/en.json' Vue.use(VueI18n) // 注册插件 // 创建 i18n 实例并配置语言 const i18n = new VueI18n({ locale: 'zh', // 设置默认语言 messages: { zh, en } }) Vue.config.productionTip = false App.mpType = 'app' const app = new Vue({ i18n, // 挂载 i18n 实例 ...App }) app.$mount()
在组件中使用
现在你可以在组件中使用 $t
方法来访问翻译字符串:
<template> <view class="container"> <text>{{ $t('welcome') }}</text> <button @click="changeLanguage">切换语言</button> </view> </template> <script> export default { methods: { changeLanguage() { // 切换语言 const newLocale = this.$i18n.locale === 'zh' ? 'en' : 'zh' this.$i18n.locale = newLocale } } } </script> <style scoped> .container { text-align: center; margin-top: 20px; } </style>
切换语言
通过 this.$i18n.locale
可以动态切换语言,在用户点击按钮或其他事件时进行语言切换。
版本区别
1、版本兼容性
Vue版本:
vue-i18n 8.x 是为 Vue 2 设计的。
vue-i18n 9.x 是为 Vue 3 设计的。
2、API 和使用方式
初始化方式:
8.x:
使用 Vue.use() 来注册插件,并通过构造函数创建 VueI18n 实例。
import Vue from 'vue' import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new VueI18n({ legacy: true, // 启用 Options API 支持 locale: 'en', messages: { en: { message: 'hello' }, zh: { message: '你好' }, } })
9.x:
使用 createI18n 函数来创建 i18n 实例,符合 Vue 3 的 API 设计方式。
import { createApp } from 'vue' import { createI18n } from 'vue-i18n' import App from './App.vue' const i18n = createI18n({ legacy: false, // 设置为 false 使用 Composition API 模式 locale: 'en', messages: { en: { message: 'hello' }, zh: { message: '你好' }, } }) const app = createApp(App) app.use(i18n) app.mount('#app')
Composition API 支持:
8.x: 基于选项式 API,没有原生支持 Composition API。
9.x: 支持 Composition API,通过 useI18n 来获取 i18n 实例。
import { useI18n } from 'vue-i18n' export default { setup() { const { t } = useI18n() return { t } } }
性能优化:
9.x: 对性能进行了优化,特别是对于 Vue 3 的响应式系统,处理变更更加高效。
TypeScript 支持:
9.x: 提供了更好的 TypeScript 支持,类型定义更加完善。
插件结构:
9.x: 重构了插件结构,使用更符合现代 JavaScript 模块化的方式。
原创文章,作者:czhdawn,如若转载,请注明出处:https://www.czhdawn.cn/archives/4792