安装
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 还有啥