Vue3 使用选项式 API 较容易,按文档上手就行,这里就不多说。组合式 API 上手会比较麻烦一点。
创建实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   |  import { createApp } from 'vue'; import { createI18n } from 'vue-i18n'; import App from './App.vue';
  const i18n = createI18n({   locale: 'cn',    legacy: false,       messages: {     cn: {       message: {         hello: '你好',       },     },     en: {       message: {         hello: 'hello',       },     },   }, });
  const app = createApp(App); app.use(i18n); app.mount('#app')
 
  | 
 
基本使用
1 2 3 4 5 6 7 8 9 10
   |  <script setup> import { useI18n } from 'vue-i18n'; const { t } = useI18n();  console.log(t('message.hello')); </script>
  <template>   <div>在视图中使用语言: {{ $t('message.hello') }}</div> </template>
 
  | 
 
自定义全局方法使用 vue-i18n
组合式 API 每次要 import 又要导出要用的函数,需要频繁使用,这样太麻烦了。
我们可以定义 window.$t 全局函数,这样在 setup 中也能直接用 $t()取得语言信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   |  import { createApp } from 'vue'; import { createI18n } from 'vue-i18n'; import App from './App.vue';
  const i18n = createI18n({   locale: 'cn',   messages: {     cn: {       hello: '你好',     },     en: {         hello: 'hello',     },   }, });
  window.$t = function() {   return i18n.global.t(...arguments); }
  const app = createApp(App); app.use(i18n); app.mount('#app')
 
  | 
 
备注
更多用法见官方文档: https://vue-i18n.intlify.dev/guide/