ElementPlus 1.0.2-beta.59(包含59) 之后的国际化按需引入有破坏性变动导致组件汉化失效问题。
解决办法
- 通过 ConfigProvider 的方式来使用,详细的使用方法请查阅 ConfigProvider 的文档。
如果你的项目中还在使用 options API, 那么你应该使用此方法,我们更加建议用户使用该方法,因为这样会减少使用的负担,但如果你在项目中深度使用 Composition API,那么你可以使用第二种方法来为整个应用提供语言支持。
<template>
<el-config-provider :locale="locale">
<App />
</el-config-provider>
</template>
<script>
import { ElConfigProvider } from 'element-plus'
import zhCn from 'element-plus/lib/locale/lang/zh-cn'
defineComponent({
components: {
[ElConfigProvider.name]: ElConfigProvider,
},
data() {
return {
locale: zhCn,
}
},
})
</script>
2.通过 Composable 的 Hook 使用。
该方法基本就是通过你自己写一个 ConfigProvider 的方式,来注入所有配置
import { useLocale, useLocaleProps } from 'element-plus'
// Locale Wrapper 入口
const Provider = defineComponent({
props: {
// 如果你需要你的应用可以相应式的更新语言,那么这里的 props 必须包含下面这个 props
...useLocaleProps,
},
setup() {
// 不需要任何参数,但是需要你的这个组件可以接受
// ` { locale?: Language, i18n?: (...args: any[]) => string }` 作为参数
useLocale()
}
})
createApp(
{
// ...
template: `
<provider :locale="locale" :i18n="i18n">
<App />
</provider>
`
}
)
注:package.json版本号区别 (正好遇见elementplus版本更新,踩了个坑。)
1. ~会匹配最近的小版本依赖包,比如 ~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
2. ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的版本,包括1.3.0,但是不包括2.0.0
3. 如果前面啥都不写入 如 1.2.3 则指定版本。