国际化
@rd-element/ui 的 Rd* 内置提示文案支持中/英,接入方式对齐 Element Plus(ConfigProvider + locale)。
零配置(现网兼容)
已接入的业务项目 不必改入口:
- 不引入
@rd-element/ui/locale - 不包
ElConfigProvider - 不改
app.use(RodelUi)
此时 Rd* 默认使用 中文,文案与升级前硬编码一致。
说明:Element Plus 的
useLocale()在无 ConfigProvider 时内部默认是英文。Rd* 不会盲目跟随,避免现网提示被切成英文。只有显式把 Rd 语言包合并进 EP locale 后才会切换。
全量引入时配 Element Plus 语言(可选)
EP 自身的 el-* 仍需业务配置:
ts
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import RodelUi from '@rd-element/ui'
import 'element-plus/dist/index.css'
import '@rd-element/ui/dist/style.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus, { locale: zhCn })
app.use(RodelUi)
app.mount('#app')上面只配了 EP;Rd* 在无 rd 字段时仍默认中文。
切换为英文(需显式合并)
从 @rd-element/ui/locale(或主包)导入 Rd 语言包,与 EP locale 合并后交给 ElConfigProvider:
vue
<script setup lang="ts">
import { ElConfigProvider } from 'element-plus'
import en from 'element-plus/es/locale/lang/en'
import { en as rdEn } from '@rd-element/ui/locale'
const locale = { ...en, ...rdEn }
</script>
<template>
<el-config-provider :locale="locale">
<App />
</el-config-provider>
</template>也可从主包导入:
ts
import { en as rdEn } from '@rd-element/ui'覆盖部分文案
合并后改 rd 下对应字段即可:
ts
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import { zhCn as rdZhCn } from '@rd-element/ui/locale'
const locale = {
...zhCn,
...rdZhCn,
rd: {
...rdZhCn.rd,
orgHierarchy: {
...rdZhCn.rd.orgHierarchy,
placeholder: '请选择组织',
},
},
}组件 prop 仍可覆盖
业务传入的 placeholder、confirmText、emptyText 等仍优先于语言包。
导出
| 路径 | 内容 |
|---|---|
@rd-element/ui | zhCn en useRdLocale |
@rd-element/ui/locale | 同上(推荐按需引入语言包) |