Vue3+TS i18n插件使用与配置

首先安装库:

npm i vue-i18n@next
npm i vue-cli-plugin-i18n@next

vite.config.ts 配置:

import {defineConfig} from "vite"
import vue from "@vitejs/plugin-vue"
import path from 'path'
import {vueI18n} from "@intlify/vite-plugin-vue-i18n"

// https://vitejs.dev/config/
export default defineConfig({
   resolve: {
       alias: {
            'vue-i18n': 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js'
       }
    },
    plugins: [
        vue(),
        vueI18n(
            {
                include: path.resolve(__dirname, './src/i18n/locales/**')
            }
        )
// ... 这里是其他配置
]
})

src 目录新增 i18n文件夹,i18n文件夹下新建 index.ts文件和 locales 文件夹

import { createI18n } from 'vue-i18n'
import enUS from './locales/en-US.json'
import zhCN from './locales/zh-CN.json'

type MessageSchema = typeof enUS

const i18n = createI18n<[MessageSchema], 'en-US' | 'zh-CN'>({
    // 默认语言先取自定义的,再取浏览器的,最后默认英文
    locale: localStorage.getItem("locale") || navigator.language || 'en-US',
    legacy: false,
    // allowComposition: true, // 是否允许在 Legacy API 模式下使用 Composition API
    messages: {
        'en-US': enUS,
        'zh-CN': zhCN // 可以追加其他语言
    }
})

export default i18n

locales 文件夹下新建 zh-CN.json、en-US.json

文件内格式要保持一样:

举例:

zh-CN.json


{
    "Home": "首页"
}

en-US.json

{
    "Home": "Home"
}

然后在 main.ts 安装插件:

import i18n from './i18n'
... 
// 国际化管理
app.use(i18n)

接着就能在vue组件中使用了,使用方式是:



setLanguage方法可以抽离出来放到utils目录中的index里面单独导出,后续作为标准工具。

下一篇文章说说 NaiveUI全局组件语言的变更。

你可能感兴趣的:(Vue3+TS i18n插件使用与配置)