VUE3多国语言切换(国际化)

  • 安装

    用npm安装(推荐)

    npm install vue-i18n@9

    用yarn安装

    yarn add vue-i18n@9

  • 参考

其中有些错误。

Vue3国际化全攻略:从安装到多语言切换,让你的应用秒变国际范!_vue3 国际化-CSDN博客

  • 相关文件

src/i18n/locale/en.json

复制代码
{
	"i18n.password": "password",
}

src/i18n/locale/zh.json

复制代码
{
	"i18n.password": "密码",
}

src/i18n/index.ts

复制代码
import { createI18n } from 'vue-i18n'
import zh from './locale/zh.json'
import en from './locale/en.json'

const messages = {
    'en' : en,
    'zh' : zh,
}

// 导出语言选项(用于下拉菜单)
export const LANGUAGE_OPTIONS = [
  { label: '中文',    value: 'zh' },
  { label: 'English', value: 'en' }
]

export const DEFAULT_LANGUAGE   = 'zh';
export const SAVED_LANGUAGE_KEY = 'selected_language';

export const SAVED_LANGUAGE = (localStorage.getItem(SAVED_LANGUAGE_KEY) || navigator.language.split('-')[0] || DEFAULT_LANGUAGE);

const i18n = createI18n({
    locale: SAVED_LANGUAGE,
    fallbackLocale: DEFAULT_LANGUAGE, // 设置备用语言
    messages,
    legacy: false
})

export default i18n

main.ts

复制代码
import { createApp } from 'vue'
import App from './App.vue'
import i18n from './i18n'

const app = createApp(App)

app
  .use(i18n)
  .mount('#app')
  • 登录界面前部分

    <template>

    <j-form-item :label="$t('i18n.password')" name="password" >
    <j-input-password :maxlength="64" >
    </j-input-password>
    </j-form-item>

    <j-form-item> <select v-model="currentLang" @change="changeLangEvent"> <option v-for="lang in LANGUAGE_OPTIONS" :value="lang.value" > {{ lang.label }} </option> </select> </j-form-item>
    </template>
  • 登录界面后部分

    import { useI18n } from 'vue-i18n';
    import { SAVED_LANGUAGE, SAVED_LANGUAGE_KEY, LANGUAGE_OPTIONS } from '@/i18n/index'

    const { locale } = useI18n();
    const currentLang = SAVED_LANGUAGE;

    const changeLangEvent = (event) => {
    locale.value = event.target.value;
    localStorage.setItem(SAVED_LANGUAGE_KEY, locale.value);
    };

至此,可以点击下拉框切换了。

相关推荐
xiaohe06011 分钟前
💘 霸道女总裁爱上前端开发的我
前端·游戏开发·trae
sophie旭4 分钟前
内存泄露排查之我的微感受
前端·javascript·性能优化
k***19511 分钟前
Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲
前端·数据库·spring
rgeshfgreh1 小时前
Spring事务传播机制深度解析
java·前端·数据库
Hilaku1 小时前
我用 Gemini 3 Pro 手搓了一个并发邮件群发神器(附源码)
前端·javascript·github
IT_陈寒1 小时前
Java性能调优实战:5个被低估却提升30%效率的JVM参数
前端·人工智能·后端
快手技术1 小时前
AAAI 2026|全面发力!快手斩获 3 篇 Oral,12 篇论文入选!
前端·后端·算法
颜酱2 小时前
前端算法必备:滑动窗口从入门到很熟练(最长/最短/计数三大类型)
前端·后端·算法
全栈前端老曹2 小时前
【包管理】npm init 项目名后底层发生了什么的完整逻辑
前端·javascript·npm·node.js·json·包管理·底层原理