当前位置: 首页 > news >正文

vue3:i18n的使用

i18n 国际化语言

下载i18n

npm i i18n -S

创建i18n文件

main.ts中导入 ,

i18n/index

import {createI18n} from 'vue-i18n'
import messages from './message'
const i18n = createI18n({
  legacy:false , 
  locale:localStorage.getItem('lang') ||'en' , 
  messages
})
export default i18n

 i18n/messages

import zh from './lang/zh'
import en from './lang/en'
import tc from './lang/tc'
export default {
  en , zh , tc
}

zh.ts

export default {
  messages: {
    login:'登录',
    username:'用户名' , 
    switchLanguage:'选择语言' , 
    langZh:'中文' , 
    langEn:'English',
    langTc :'繁体',
    bookstore:'书城' , 
    community:'社区' , 
    welfare:'福利' , 
    my:'我的'
  }
}

en.ts

export default {
  messages: {
    login:'Login',
    username:'username',
    switchLanguage:'choose Language' , 
    langZh:'Chinese' , 
    langEn:'English',
    langTc :'繁体',
    bookstore:'bookstore' , 
    community:'community' , 
    welfare:'welfare' , 
    my:'my'

  }
}

index.vue页面中的使用

<template>
<div>
首页 --- {{ $t('messages.login') }}---{{ $t('messages.username') }}
<!-- <div v-t="'messages.username'"></div> -->
<el-dropdown placement="top-start">
      <el-button> {{ $t('messages.switchLanguage') }} </el-button>
      <template #dropdown>
        <el-dropdown-menu>
          <el-dropdown-item @click="changelang('zh')">{{ $t('messages.langZh') }}</el-dropdown-item>
          <el-dropdown-item @click="changelang('en')">{{ $t('messages.langEn') }}</el-dropdown-item>
          <el-dropdown-item @click="changelang('tc')">{{ $t('messages.langTc') }}</el-dropdown-item>
        </el-dropdown-menu>
      </template>
    </el-dropdown>
</div>

</template>

<script setup lang="ts">
    import {ref} from 'vue'
    import {useI18n} from 'vue-i18n'
    let {locale} = useI18n()
    let changelang = (type) => {
locale.value = type
localStorage.setItem('lang' , type)
    }
</script>

<style lang="scss" scoped>

</style>

模板中用$t

$t('message.name')

vue-i18n官网地址:Getting started | Vue I18n

相关文章:

  • 信息系统运行管理员教程3--信息系统设施运维
  • Android开发技能 - Perfetto系列
  • Arm Linux ceres库编译
  • C/C++蓝桥杯算法真题打卡(Day5)
  • 从边缘到核心:群联云防护如何重新定义安全加速边界?
  • 区块链驱动金融第三章——深入解析比特币的运行机制
  • Spring IOC深入解析:从原理到实践
  • OpenAI流式解析
  • 【C++】入门
  • JavaWeek3-泛型,树和集合List接口
  • Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复
  • AF3 identity_rot_mats函数解读
  • CMS网站模板设计与用户定制化实战评测
  • Excel第41套全国人口普查
  • 【免费】2000-2019年各省地方财政房产税数据
  • c++第二课(基础)
  • Redis集群搭建和高可用方案(Java实现)
  • Docker与Ollama强强联合!deepseek-r1部署实践
  • FreeRTOS从入门到实战精通指南(一)
  • mne溯源后的数据初步处理方法
  • 增诉滥用职权罪,尹锡悦遭韩国检方追加起诉
  • 铁路上海站迎五一假期客流最高峰,今日预计发送77万人次
  • 新能源车盈利拐点:8家上市车企去年合计净利854亿元,多家扭亏
  • 国家网信办举办在欧中资企业座谈会,就数据跨境流动等进行交流
  • 许峰已任江苏省南京市副市长
  • 华侨城A:一季度营收53.63亿元,净利润亏损14.19亿元