Vue3 使用选项式 API 较容易,按文档上手就行,这里就不多说。组合式 API 上手会比较麻烦一点。
创建实例
| 12
 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')
 
 | 
基本使用
| 12
 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()取得语言信息。
| 12
 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/