• 在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配置

    1. import {createI18n} from "vue-i18n";
    2. import en from './en.ts'
    3. import ja from './ja.ts'
    4. import zh from './zh.ts'
    5. const i18n = createI18n({
    6. locale:'ja',
    7. legacy:false,
    8. messages:{
    9. en:en,
    10. ja:ja,
    11. zh:zh
    12. }
    13. })
    14. export default i18n

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

    3、语言模板文档编写

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

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

    三、使用

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

    main.ts
    1. import { createApp } from 'vue'
    2. import App from './App.vue'
    3. import i18n from "./locale/index";
    4. const app=createApp(App)
    5. app.use(i18n)
    6. app.mount('#app')
    在页面中使用
    1. <template>
    2. <div style="height: 50%;display: flex;justify-content: center;align-items: center">
    3. <div>{{ $t('message.hello') }}div>
    4. div>
    5. template>

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

    四、语言切换

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

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

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

    1. <script setup>
    2. import {useI18n} from 'vue-i18n'
    3. const {locale} = useI18n()
    4. onMounted(()=>{
    5. selectValue.value = locale.value
    6. })
    7. const selectValue = ref('')
    8. const languageChange = (value) => {
    9. locale.value = value
    10. }
    11. script>
    12. <style scoped>
    13. style>
    实现效果

  • 相关阅读:
    政企解决方案 | 携手一线城市政企,打造可观测性国产化政务平台
    模拟电路设计(34)---脉宽调制型开关电路
    产品思维训练 | 亚马逊流量7-8月网站访客流量下降,请分析原因
    你们看吧,一看一个不吱声
    Spring Boot 手写starter!!!
    使用序列到序列深度学习方法自动睡眠阶段评分
    Keras实战(一)
    MATLAB算法实战应用案例精讲-【图像处理】目标检测
    喜报!湖南欧拉生态创新中心获评“国家2023年全民数字素养与技能提升月工作表现突出单位”
    简易绘图 DataFrame.plot
  • 原文地址:https://blog.csdn.net/A15029296293/article/details/140438866