Vite+Vue3使用Vue-i8n笔记

一、下载依赖 vue-i18n

bash 复制代码
yarn add vue-i18n

创建存放语言文件的目录 以及配置文件的配置

我是在src/lang 新建index.ts、cn.ts、en.ts以及test文件夹其中再分别新建cn.ts以及en.ts

/lang/index.ts 用于导出vue-i18n需要的配置对象

ts 复制代码
import en from "./en.ts";
import zh from "./cn.ts";

const messages = {
  en,
  zh,
};
const language = (
// 读取本地浏览器语言环境中文 zh-CN 英文 eng
  (navigator.language ? navigator.language : navigator.userLanguage) || "zh"
).toLowerCase();
export default {
  fallbackLocale: "zh",
  legacy: false, // composition API
  globalInjection: true, //全局生效$t
  locale: language.split("-")[0] || "zh", // 默认zh翻译
  messages,
};

/src/lang/en.ts 以及同目录下的cn.ts用于收集模块的语言文件并统一提供给Index.ts导出

ts 复制代码
import test from "./test/en";
export default {
  test,
};

/src/lang/cn.ts 以及同目录下的en.ts用于收集模块的语言文件并统一提供给Index.ts导出

ts 复制代码
import test from "./test/cn";
export default {
  test,
};

/src/lang/test/cn.ts

ts 复制代码
export default {
  h1Title: "这是一个测试文本"
 }

/src/lang/test/en.ts

ts 复制代码
export default {
  h1Title: "This is a test text"
 }

main.ts中需要对vue-i18n进行引入并使用

ts 复制代码
import { createApp } from "vue";//必须的依赖
import App from "./App.vue";//必须的依赖
iimport i18nOptionsObj from "./lang/index"; // 1导入vue-i18需要的配置对象
import { createI18n } from "vue-i18n"; // 2 导入创建实例的钩子函数
const app = createApp(App); //必须的依赖

const i18n = createI18n(i18nOptionsObj);// 3.根据配置对象创建实例
app.use(i18n);// 4.挂在到Vue身上
app.config.globalProperties.$t = i18n.global.t;// 5.全局挂载$t翻译方法
app.mount("#app");//必须的步骤

组件中使用

模板使用

html 复制代码
<template>
<h1>
{{$t("test.h1Title")}}
中文环境====>这是一个测试文本
英文环境====>This is a test text
</h1>
</template>

js中使用

ts 复制代码
<script lang="ts" setup>
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
console.log(t("test.h1Title"))
//中文环境输出====>这是一个测试文本
//英文环境输出====>This is a test text
<script>

混合

html 复制代码
<script lang="ts" setup>
import {ref} from 'vue'
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const titleMsg1 = ref(t("test.h1Title")) 
const titleMsg2  = ref("test.h1Title") 
<script>
<template>
{{titleMsg1}}
{{$t(titleMsg2)}}
</template>

语言环境切换

ts 复制代码
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
locale.value = 'zh' || 'en'
相关推荐
_dindong4 分钟前
笔试强训:Week -2
笔记·学习·算法
慧一居士8 分钟前
vue.config.js 文件功能介绍,使用说明,对应完整示例演示
前端·vue.js
颜酱11 分钟前
用导游的例子来理解 Visitor 模式,实现AST 转换
前端·javascript·算法
木易 士心20 分钟前
Nginx 基本使用和高级用法详解
运维·javascript·nginx
幸运小圣37 分钟前
Iterator迭代器 【ES6】
开发语言·javascript·es6
葱头的故事38 分钟前
将传给后端的数据转换为以formData的类型传递
开发语言·前端·javascript
雾岛听蓝43 分钟前
深入解析内存中的整数与浮点数存储
c语言·经验分享·笔记·visualstudio
jimmyleeee44 分钟前
人工智能基础知识笔记十八:Prompt Engineering
笔记·prompt
Ro Jace1 小时前
模式识别与机器学习课程笔记(11):深度学习
笔记·深度学习·机器学习
中微子1 小时前
🚀 2025前端面试必考:手把手教你搞定自定义右键菜单,告别复制失败的尴尬
javascript·面试