Vue3+Vant4配置国际化vue-i18n


安装依赖

yarn add Vue-i18n

创建语言文件

项目中创建一个 locales 文件夹,并在其中创建语言文件,例如 zh-CN.jsen-US.js。每个语言文件导出一个对象,包含对应语言的翻译。

// zh-CN.js
export default {
  tabbar: {
    home'首页',
    list'列表',
    user'我的'
  },
  home: {
    hello'你好',
    welcome'欢迎'
  }
}

// en-US.js
export default {
  tabbar: {
    home'首页',
    list'列表',
    user'我的'
  },
  home: {
    hello'你好',
    welcome'欢迎'
  }
}

配置 Vue-i18n

main.js 中配置 vue-i18n

import { createApp } from 'vue';
import { createI18n } from 'vue-i18n';
import App from './App.vue';
import zhCN from './locales/zh-CN.js';
import enUS from './locales/en-US.js';

const messages = {
  'zh-CN': zhCN,
  'en-US': enUS,
};

const i18n = createI18n({
  locale'zh-CN'// 默认语言
  messages,
});

const app = createApp(App);
app.use(i18n);
app.mount('#app');

配置 Vant 的国际化

在使用 Vant 的组件之前,需要在 main.js 中配置 Vant 的国际化:

import { createApp } from 'vue';
import { createI18n } from 'vue-i18n';
import { Locale } from 'vant';
//vant的语言包
import vantZhCN from 'vant/lib/locale/lang/zh-CN';
import vantEnUS from 'vant/lib/locale/lang/en-US';
import App from './App.vue';
//本地语言包
import zhCN from './locales/zh-CN.js';
import enUS from './locales/en-US.js';

const messages = {
  'zh-CN': {
    ...zhCN,
    ...vantZhCN,
  },
  'en-US': {
    ...enUS,
    ...vantEnUS,
  },
};

// 从本地存储中获取语言设置
const savedLanguage = localStorage.getItem('language')
const i18n = createI18n({
  legacyfalse,
  // 全局注册 $t方法
  globalInjectiontrue,
  locale: savedLanguage || 'zh-CN'// 默认语言
  messages
})

Locale.use(i18n.global.locale.value, messages[i18n.global.locale.value])

const app = createApp(App);

// 在语言切换方法中更新语言配置和本地存储
app.config.globalProperties.changeLanguage = (locale) => {
  console.log(11111)
  i18n.global.locale.value = locale
  Locale.use(locale, messages[locale])
  localStorage.setItem('language', locale) // 将语言设置存储到本地存储中
}

app.use(i18n);
app.mount('#app');

Locale.use(i18n.global.locale.value, messages[i18n.global.locale.value]) 这段代码是在 Vant 中使用 Locale.use 方法来更新语言配置。

  • i18n.global.locale.value 表示当前的语言环境,其中 i18n.global.locale 是一个响应式的对象,使用 .value 来获取实际的值。这个值可以是 'zh-CN''en-US',表示中文或英文等语言代码。

  • messages[i18n.global.locale.value] 表示根据当前语言环境从 messages 对象中获取对应语言的翻译内容。messages 是一个包含不同语言翻译的对象,根据语言环境作为键来获取相应的翻译内容。

通过传递语言环境和对应的翻译内容给 Locale.use 方法,可以更新 Vant 组件库中的语言配置。这样,当语言环境发生变化时,Vant 组件将会显示相应的翻译内容。

需要注意的是,i18n.global.localemessages 都应该是响应式的对象,以便在语言环境发生变化时能够自动更新。

最后我们全局定义了一个changeLanguage切换语言的方法。

在组件中使用翻译

现在,在任何组件中,你都可以使用 $t 方法来获取翻译后的文本,然后直接调用changeLanguage方法即可切换语言。

<template>
  <div>
    <p>{{ $t('home.hello') }}</p>
    <p>{{ $t('home.welcome') }}</p>
    <button @click="changeLanguage('zh-CN')">中文</button>
    <button @click="changeLanguage('en-US')">English</button>
  </div>
</template>

在上述代码中,$t 方法会根据当前的语言环境自动返回对应的翻译文本。

这样,你就成功地配置了 Vue 3 和 Vant 4 的国际化(i18n)。

以上就是今日分享的文章,希望对小伙伴们有帮助,晚安啦!


原文始发于微信公众号(大前端编程教学):Vue3+Vant4配置国际化vue-i18n

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224045.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!