优化更新

This commit is contained in:
2026-09-13 18:12:07 +08:00
parent 7f758cc6e9
commit d7a081e8b7
92 changed files with 2429 additions and 1117 deletions
@@ -3,38 +3,42 @@
<!-- Copyright (c) 2021-2026 小蚂蚁云团队 版权所有 -->
:::tip 说明
当前项目仅支持中文界面,ElementPlus 使用中文语言包(`zh-cn`),所有界面文本直接硬编码在组件中。如需扩展多语言支持,可基于 vue-i18n 实现。
当前项目仅支持中文界面,NaiveUI 使用中文语言包(`zhCN`),所有界面文本直接硬编码在组件中。如需扩展多语言支持,可基于 vue-i18n 实现。
:::
## 当前状态
项目当前为中文单语言版本:
- ElementPlus 全局配置中文语言包:`app.use(ElementPlus, { locale: zhCn })`
- 所有界面文本直接硬编码在组件中:`<el-button>添加岗位</el-button>`
- NaiveUI 通过 ConfigProvider 配置中文语言包:`<n-config-provider :locale="zhCN" :date-locale="dateZhCN">`
- 所有界面文本直接硬编码在组件中:`<n-button>添加岗位</n-button>`
- 后端返回的 `msg` 字段为中文:`"操作成功"`、`"岗位名称不能重复"`
```vue
<template>
<el-button type="primary">添加岗位</el-button>
<el-table-column label="岗位名称" prop="name" />
<el-table-column label="创建时间" prop="createTime" />
<n-button type="primary">添加岗位</n-button>
<!-- 表格列通过 columns.ts 配置,使用 title/key -->
</template>
```
## ElementPlus 中文配置
## NaiveUI 中文配置
项目在入口文件中全局配置 ElementPlus 中文语言包:
项目通过 NaiveUI 的 ConfigProvider 配置中文语言包:
```typescript
// main.ts
import ElementPlus from 'element-plus';
import zhCn from 'element-plus/es/locale/lang/zh-cn';
app.use(ElementPlus, { locale: zhCn });
// App.vue 或入口组件
import { zhCN, dateZhCN } from 'naive-ui';
```
配置后,ElementPlus 组件的默认文本(如分页、日期选择器、表格空数据等)自动显示中文。
```vue
<template>
<n-config-provider :locale="zhCN" :date-locale="dateZhCN">
<App />
</n-config-provider>
</template>
```
配置后,NaiveUI 组件的默认文本(如分页、日期选择器、表格空数据等)自动显示中文。
## 扩展方案
@@ -126,8 +130,8 @@ export default i18n;
```vue
<template>
<el-button type="primary">{{ $t('common.add') }}</el-button>
<el-table-column :label="$t('position.name')" prop="name" />
<n-button type="primary">{{ $t('common.add') }}</n-button>
<!-- 表格列通过 columns.ts 配置,使用 title/key -->
</template>
<script setup>
@@ -136,23 +140,26 @@ const { t } = useI18n();
</script>
```
### ElementPlus 国际化联动
### NaiveUI 国际化联动
```typescript
// 动态切换 ElementPlus 语言
import zhCn from 'element-plus/es/locale/lang/zh-cn';
import en from 'element-plus/es/locale/lang/en';
// 动态切换 NaiveUI 语言
import { zhCN, dateZhCN, enUS, dateEnUS } from 'naive-ui';
const locale = computed(() => {
return i18n.global.locale.value === 'zh-CN' ? zhCn : en;
return i18n.global.locale.value === 'zh-CN' ? zhCN : enUS;
});
const dateLocale = computed(() => {
return i18n.global.locale.value === 'zh-CN' ? dateZhCN : dateEnUS;
});
```
```vue
<template>
<el-config-provider :locale="locale">
<n-config-provider :locale="locale" :date-locale="dateLocale">
<App />
</el-config-provider>
</n-config-provider>
</template>
```
@@ -163,7 +170,7 @@ const locale = computed(() => {
function changeLanguage(lang: string) {
i18n.global.locale.value = lang;
localStorage.setItem('lang', lang);
// 同步切换 ElementPlus 语言
// 同步切换 NaiveUI 语言
}
```
@@ -206,7 +213,7 @@ const errorMap = {
```
:::warning 注意事项
1. ElementPlus 内置组件的文本(如"暂无数据"、"请选择")通过 `locale` 属性自动切换
1. NaiveUI 内置组件的文本(如"暂无数据"、"请选择")通过 `locale` 属性自动切换
2. 后端返回的 `msg` 字段需要额外处理
3. 日期格式、数字格式也需要考虑国际化
:::
@@ -227,4 +234,4 @@ const errorMap = {
## 总结
当前项目为中文单语言版本,ElementPlus 使用中文语言包。如需扩展多语言支持,可基于 vue-i18n 实现前端国际化,配合 ElementPlus 内置语言包和后端消息 code 实现全链路多语言。改造需考虑前端文本、ElementPlus 组件、后端消息三个维度的国际化。
当前项目为中文单语言版本,NaiveUI 使用中文语言包。如需扩展多语言支持,可基于 vue-i18n 实现前端国际化,配合 NaiveUI 内置语言包和后端消息 code 实现全链路多语言。改造需考虑前端文本、NaiveUI 组件、后端消息三个维度的国际化。