安装
pnpm install vue- i18n@next - D
创建 locales目录,创建index.ts/cn.json/zh.json注册
import type { I18nOptions } from 'vue-i18n' ;
import en from './en.json' ;
import zh from './zh.json' ;
export interface Messages {
[ key: string] : any;
}
export const messages : Messages = {
en,
zh,
} ;
const langVal = import . meta. env+ '' || 'zh' ;
const i18nOptions : I18nOptions = {
legacy : false ,
locale : langVal,
fallbackLocale : langVal,
messages,
} ;
export default i18nOptions;
{
"message" : {
"asd" : "eenn"
}
}
zh. json
{
"message" : {
"asd" : "zzhh"
}
}
main文件内导入
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { createI18n } from 'vue-i18n' ;
import i18nOptions from './locales' ;
const i18n = createI18n ( i18nOptions) ;
createApp ( App)
. use ( i18n)
. mount ( '#app' )
vue 文件使用
$t ( 'message.hello' )
修改它
import { useI18n } from 'vue-i18n' ;
const { locale } = useI18n ( ) ;
const switchLanguage = ( lang ) => {
console. log ( lang)
locale. value = lang;
console. log ( locale)
}
< div> { { $t ( 'message.asd' ) } } < / div>
< button @click= "switchLanguage('en')" > English< / button>
< button @click= "switchLanguage('zh')" > 中文< / button>
重点 重点 重点
依赖不要引入错误 文件名称不要错了 文件后缀不要错了 参数配置不要错了 去看 vue-i18n 还有啥