vue3使用vue-i18n实现国际化
创始人
2024-11-10 17:42:23

文章目录

  • 1. 安装 `vue-i18n`
  • 2. 创建文件存储翻译的语言
  • 3. 注册i18n实例
  • 4. 在main.ts中引入vue-i18n实例
  • 5. 在组件模板中使用
  • 6. 在js中使用
  • 7. locale.value 实现国际化语言切换
  • 8. vue3 中ref里面的国际化值没生效问题

请添加图片描述

1. 安装 vue-i18n

cnpm i --save vue-i18n 

2. 创建文件存储翻译的语言

src/lang/en.json

export default {   login: 'login' }; 

src/lang/zh.json

export default {   login: '登录' }; 

3. 注册i18n实例

src/lang/index.ts

import { createI18n } from "vue-i18n"; import zh from "./zh.json"; import en from "./en.json"; import vantZhCN from 'vant/lib/locale/lang/zh-CN';//vant组件库的国际化中文 import vantEnUS from 'vant/lib/locale/lang/en-US';//vant组件库的国际化英文 import { localStorage } from "@/utils/local-storage";  const i18n: any = createI18n({   locale: localStorage.get("lang") || "zh",   legacy: false,   globalInjection: true,   messages: {     zh: {       ...zh,       ...vantZhCN     },     en: {       ...en,       ...vantEnUS     },   } }); export { i18n };  

4. 在main.ts中引入vue-i18n实例

src/main.ts

import { i18n } from '@/lang/index'; app.use(i18n).mount("#app"); 

5. 在组件模板中使用

直接使用 $t('login')

{{ $t('login') }}

6. 在js中使用

需要导入 i18n 在使用 i18n.global.t('login')

import { i18n } from '@/lang/index'; showDialog({      confirmButtonText: i18n.global.t('confirm'),      message: i18n.global.t('pleaseWalletBrowser'),  }).then(() => {  }); 

7. locale.value 实现国际化语言切换

核心代码:
import { useI18n } from “vue-i18n”;
const { locale } = useI18n();
locale.value = lang;

    

8. vue3 中ref里面的国际化值没生效问题

如在ts中使用 ref声明 的默认文字国际化,当我们切换国际化的时候发现并不能生效

const menuList = ref([   {     key: 1,     menuName: t("menu1"),   } ]); 

需要使用 computed 处理即可

const menuList = computed(() => {   return [     {       key: 1,       menuName: t("menu1"),     },   ]; }); 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...