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

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

相关推荐
用户3169353811836 小时前
SpringBoot + Vue 项目生产环境部署完整指南
前端·后端
Csvn6 小时前
🔍 TypeScript `satisfies` 操作符:既要类型安全,又要推断的原始字面量类型
前端
Csvn6 小时前
🚦 手写 Promise 并发控制:如何优雅限制异步请求的并发数?
前端
gb42152876 小时前
python中Web应用服务器
开发语言·前端·python
默_笙6 小时前
💌 为了把"主题色"传给孙子组件,我翻了五层楼——直到遇见了 useContext
前端·javascript
颜进强6 小时前
04 - 一张图看懂 OpenSpec 变更的一生:从创建到归档
前端·后端·ai编程
the_answer6 小时前
JS 垃圾回收机制
前端
小KK_6 小时前
JS 事件循环从小白视角入门:宏任务、微任务与 async/await 一网打尽
前端·javascript
aloha_7 小时前
Linux服务器上指定目录的文件下载
前端
szp20058 小时前
为了在浏览器里跑多线程 ONNX 推理,我把自己的支付浮层弄挂了
前端·webassembly