Home

Awesome

vite-plugin-i18n-autoimport

plugin options

type includeFilter = (id: string) => boolean;
export interface Options {
    locales: string[];  // i18n locale list
    dts?: string; // .d.ts file position, should include in tsconfig.json's include option; default i18n.d.sts
    root?: string; // default cwd()
    include?: FilterPattern | includeFilter;  // filter
    exclude?: FilterPattern;
    localeFileWarn?: boolean; // show warn info when locale config path does not exist, default: true
    getLocaleFs?: (locale: string) => string;  // get the locale config based on the locale value in locales
    genImportName?: (locale: string) => string; // generate the import name of locale config file based on the locale value in locales
}

use plugin in vite

import { autoImport } from 'vite-plugin-i18n-autoimport'
const LOCALE_ENUM = {
    zhCn: "zh-CN",
    zhHant: "zh-Hant"
}
export default defineConfig(() => {

  return {
    plugins: [
      autoImport({
        locales: [LOCALE_ENUM.zhCn, LOCALE_ENUM.zhHant],
        dts: './i18ntest.d.ts'
      }),
    ]
  }
})

use in composition API

<script setup lang="ts">
const { t } = defineI18n()
</script>

// compile to
import { useI18n } from 'vue-i18n'
// './lang/zh-CN.json' is generated by [ getLocaleFs ]
// 'zh_CN'  is generated by [ genImportName ]
import zh_CN from './lang/zh-CN.json';
import zh_Hant from './lang/zh-Hant.json';

const { t } = useI18n({
    messages: {
        ['zh_CN']: zh_CN,
        ['zh_Hant']: zh_Hant,
    }
})
</script>