在vue3中通过vue-i18n实现国际化多语言切换

之前有在react中介绍过如何使用i18n去实现国际化,那么,在vue里想要实现国际化一般也需要用到i18n这个库,接下来介绍如何使用这个库。

一、安装

在你的vue项目中执行以下命令进行安装。

pnpm install vue-i18n

二、配置

1、创建文件目录

我这里以中文、英语、日语三种语言切换为例,在src下创建locale文件夹,文件夹下创建index.ts、en.ts、ja.ts、zh.ts文件,index.ts为i18n的配置文件,en.ts对应的是英语文档,ja.ts对应的是日语文档,zh.ts对应的是中文文档;一个系统如果需要做国际化,那么文档里的内容还是比较多的,所以最好分开维护。

这是我创建好的文件目录。

2、index.ts配置

import {createI18n} from "vue-i18n";
import en from './en.ts'
import ja from './ja.ts'
import zh from './zh.ts'

const i18n = createI18n({
    locale:'ja',
    legacy:false,
    messages:{
        en:en,
        ja:ja,
        zh:zh
    }
})
export default i18n

可以看到其配置是非常简单的,这里一定要注意legacy一定要设置为false,否则后面在其他页面中使用i18n的api时会报错。

3、语言模板文档编写

en.ts
const en={
    message:{
        hello:'hello world',
    }
}
export default en
ja.ts
const ja = {
    message:{
        hello:'こんにちは、世界'
    }
}
export default ja
zh.ts
const zh={
    message:{
        hello:'你好'
    }
}
export default zh

因为写的是demo,我的语言文档内容比较简单,里面就一条语言模板,你可以自行添加其他的。

三、使用

在页面中使用i18n之前,我们还需要将刚才配置的index.ts文件在vue的main文件中挂载注册才能使用。

main.ts
import { createApp } from 'vue'
import App from './App.vue'

import i18n from "./locale/index";

const app=createApp(App)

app.use(i18n)

app.mount('#app')
在页面中使用
<template>
    <div style="height: 50%;display: flex;justify-content: center;align-items: center">
        <div>{{ $t('message.hello') }}</div>
    </div>
</template>

在页面中使用也非常简单,直接$t('文档里定义的对象'),可以看到我们文件里定义了message对象下定义了hello,在页面里就可以直接$t('message.hello')将你翻译好的语言展示出来了。

四、语言切换

想要实现语言动态切换也是非常简单的,直接引入i18n中的api方法即可,就是修改locale属性,

在页面中引入useI18n方法,在方法中解构出locale属性,修改这个属性即可实现动态切换语言。

我这里放出demo源代码供参考。

<template>
  <div style="width: 100%;height: 100%">
    <div style="display: flex;justify-content: center">
      <el-select
          v-model="selectValue"
          placeholder="Select"
          size="large"
          style="width: 240px"
          @change="languageChange"
      >
        <el-option label="中文" value="zh"/>
        <el-option label="English" value="en"/>
        <el-option label="日本語" value="ja"/>
      </el-select>
    </div>
    <div style="height: 50%;display: flex;justify-content: center;align-items: center">
      <div>{{ $t('message.hello') }}</div>
    </div>
  </div>
</template>

<script setup>
import {useI18n} from 'vue-i18n'

const {locale} = useI18n()

onMounted(()=>{
  selectValue.value = locale.value
})
const selectValue = ref('')
const languageChange = (value) => {
  locale.value = value
}
</script>

<style scoped>

</style>
实现效果

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-i18n-next是Vue3版本的国际化插件,用于支持多语言的开发。你可以通过以下步骤来使用它: 第一步是下载Vue-i18n-next插件。你可以使用npm或yarn来进行下载。使用npm的命令是:npm install vue-i18n@next,而使用yarn的命令是:yarn add vue-i18n@next。 第二步是安装@intlify/vue-i18n-loader插件,这个插件用于自定义块的Vue-i18n加载程序,可以用于i18n资源的预编译。你可以使用npm或yarn来进行安装。使用npm的命令是:npm i --save-dev @intlify/vue-i18n-loader@next,而使用yarn的命令是:yarn add -D @intlify/vue-i18n-loader@next。 第三步是创建语言文件夹并在其创建js或ts文件。在你的项目的src目录下创建一个名为language的文件夹,并在其创建你的语言文件,可以使用js或ts格式。 通过以上步骤,你就可以开始在Vue3项目使用Vue-i18n-next进行国际化开发了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3多语言插件 vue-i18n使用](https://blog.csdn.net/qq_42859450/article/details/126103422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue-i18n-loader:用于自定义块的vue-i18n-loader](https://download.csdn.net/download/weixin_42131628/15097221)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue3语言切换vue-i18n@next](https://blog.csdn.net/m0_59818968/article/details/119381340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值