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')
  • 登录界面前部分

  • 登录界面后部分

    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);
    };

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

相关推荐
锋行天下30 分钟前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
jktantan1 小时前
每个节点 41 字节:把一棵百万节点树拆进 14 个 typed array
前端·javascript·vue.js·算法·typescript
计算机魔术师1 小时前
Anthropic官方插件被「寄生」,背后是同一类攻击又来了
前端
我命由我123451 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
key_3_feng2 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
程序员大阳2 小时前
副队长JavaScript教程(65)-详解JSON:轻量级数据交换格式
javascript·json·序列化·反序列化·stringify·parse
LaughingZhu2 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
Lank_M3 小时前
抠图结果缩放后边缘发脏,该怪的不是插值
前端
jerrywus3 小时前
Skill、MCP、Workflow、Rules、Memory 有什么区别?拿几次真实开发任务讲清楚
前端·agent·claude
补码缩写3 小时前
canvas 与 sharp 缩放透明图:默认预乘,非预乘得拆通道
前端