国际化I18n的使用

下载

npm i vue-i18n

创建语言包对象

英文语言包

// src/languege/en.ts
export default{
  navigateBar:{
    hotspot: 'hotSpot',
    focus: 'Focus'
  },
  tabs:{
    work: 'Work',
    collect: 'Collect'
  }
}

中文语言包

// src/languege/zh.ts
export default{
  navigateBar:{
    hotspot: '热点',
    focus: '焦点'
  },
  tabs:{
    work: '作品',
    collect: '收藏'
  }
}

组合语言包

// src/main.ts
import en from './languege/en'
import zh from './languege/zh'
const languageMessage = {
  en,
  zh
}

创建i18n实例并注册

// src/main.ts
import { createI18n } from 'vue-i18n'
const i18n = createI18n({
  legacy: false, // 打开Composition API
  message: languageMessage,
  locale: 'en' // 设置默认语言
})

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

使用i18n

// src/App.vue
<template>
  <ul>
    <li>{{ $t('navigatorBar.hotspot') }}</li>
    <li>{{ $t('navigatorBar.focus') }}</li>
  </ul>
  <ul>
    <li>{{ $t('tabs.work') }}</li>
    <li>{{ $t('tabs.collect') }}</li>
  </ul>
</template>

根据按钮动态修改语言

// src/App.vue
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
function changeLang(lang: string){
  locale.value = lang
}

<template>
  <button @click="changeLang('en')">英文</button>
  <button @click="changeLang('zh')">中文</button>
  <ul>
    <li>{{ $t('navigatorBar.hotspot') }}</li>
    <li>{{ $t('navigatorBar.focus') }}</li>
  </ul>
  <ul>
    <li>{{ $t('tabs.work') }}</li>
    <li>{{ $t('tabs.collect') }}</li>
  </ul>
</template>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值