# 项目管理模块国际化说明 ## 已完成内容 ### 1. 静态页面国际化 已完成以下部分的国际化: #### 搜索表单 - 项目编号、名称、项目语言、项目类型 - PD/GPD、PM/GPM、CTA/GCTA - 申办方、CRO - 开始时间、结束时间、创建时间、更新时间 - 搜索、重置按钮 #### 操作按钮 - 新增、修改、删除、导出按钮 #### 表格列 - 序号、项目编号、名称、图标 - 项目语言、项目类型、状态 - PD/GPD、PM/GPM、CTA/GCTA - 申办方、CRO、备注 - 创建者、创建时间、更新时间 - 操作列(修改、删除tooltip) #### 表单对话框 - 对话框标题(添加/修改项目) - 所有表单字段标签和占位符 - 确定、取消按钮 #### 提示信息 - 删除确认提示 - 操作成功、删除成功提示 #### 验证规则 - 序号、项目编号、名称、项目语言、项目类型的必填验证提示 ### 2. 国际化文件位置 - **中文**: `src/lang/modules/project/management/zh_CN.ts` - **英文**: `src/lang/modules/project/management/en_US.ts` ### 3. 使用方式 在Vue组件中: ```typescript import { useI18n } from 'vue-i18n'; import { parseI18nName } from '@/utils/i18n'; const { t } = useI18n(); // 使用国际化函数 t('project.management.search.code') t('project.management.button.add') t('project.management.table.name') // 解析字典的国际化名称 parseI18nName(dict.label) ``` ## 字典国际化 ### 需要国际化的字典 1. **project_type** (项目类型) 2. **project_language** (项目语言) ### 字典国际化方法 字典数据存储在数据库中,其`label`字段应该是JSON格式,包含多语言数据: ```json { "zh_CN": "中文名称", "en_US": "English Name" } ``` ### 数据库字典配置示例 #### project_type (项目类型) | 字典值 | 字典标签(JSON格式) | |--------|---------------------| | 1 | `{"zh_CN":"临床试验","en_US":"Clinical Trial"}` | | 2 | `{"zh_CN":"真实世界研究","en_US":"Real World Study"}` | | 3 | `{"zh_CN":"上市后研究","en_US":"Post-Marketing Study"}` | #### project_language (项目语言) | 字典值 | 字典标签(JSON格式) | |--------|---------------------| | zh_CN | `{"zh_CN":"中文","en_US":"Chinese"}` | | en_US | `{"zh_CN":"英文","en_US":"English"}` | | zh_TW | `{"zh_CN":"繁体中文","en_US":"Traditional Chinese"}` | ### 在管理后台配置字典 1. 进入系统管理 -> 字典管理 2. 找到对应的字典类型(`project_type`、`project_language`) 3. 编辑字典数据的标签字段,使用JSON格式: ```json {"zh_CN":"中文标签","en_US":"English Label"} ``` ### 前端处理 前端代码已使用`parseI18nName(dict.label)`函数处理字典显示: ```vue ``` `parseI18nName`函数会: 1. 解析JSON格式的label 2. 根据当前语言环境返回对应的翻译 3. 如果解析失败或找不到对应语言,返回原始值 ## 注意事项 1. **字典标签格式**:必须是有效的JSON格式 2. **语言代码**:使用`zh_CN`和`en_US`作为键名 3. **回退机制**:如果当前语言没有翻译,会依次尝试zh_CN、en_US,最后使用原值 4. **DictTag组件**:已自动支持国际化,无需修改 ## 类型错误说明 当前存在一个与国际化无关的TypeScript类型错误: - 位置:第175行 `` - 原因:`form.icon`的类型定义与`image-upload`组件预期类型不匹配 - 影响:不影响运行,仅是类型检查警告 - 建议:需要更新`ManagementForm`类型定义或`image-upload`组件的props类型 ## 测试建议 1. 切换语言测试所有文本是否正确显示 2. 验证字典数据的国际化显示 3. 测试表单验证提示信息 4. 测试操作提示消息(成功、删除确认等)