datai/docs/archive/2026-01-21-002-项目国际化需求.md

19 KiB
Raw Permalink Blame History

项目国际化需求

元数据

  • 需求编号2026-01-21-002
  • 创建时间2026-01-21
  • 创建人SSOT 架构师
  • 状态:进行中
  • 优先级:高

需求概述

实现项目的全面国际化功能,支持前端、后端、数据库三层国际化,支持中文和英文两种语言,通过 i18n 框架实现,支持时区国际化以及货币、日期、数字格式化,采用分阶段实施策略。国际化资源文件采用集中式管理,支持按需加载,资源键采用点号分隔。语言切换为全局生效,前端自动检测用户语言类型,支持快捷键切换。系统默认使用中文,语言偏好保存在后端用户表,所有用户都可以切换语言,为未来扩展更多语言奠定基础。

目标

  1. 全面国际化:实现前端、后端、数据库三层国际化,确保系统各层面都支持多语言
  2. 语言支持:初期支持中文和英文两种语言,为未来扩展更多语言奠定基础
  3. 框架集成:使用 i18n 框架实现国际化,遵循业界最佳实践
  4. 资源管理:国际化资源文件采用集中式管理,支持按需加载,资源键采用点号分隔
  5. 语言切换:语言切换为全局生效,前端自动检测用户语言类型,支持快捷键切换
  6. 语言偏好:系统默认使用中文,语言偏好保存在后端用户表,所有用户都可以切换语言
  7. 时区支持:支持时区国际化,确保时间显示符合用户所在时区
  8. 格式化支持:支持货币、日期、数字的格式化,符合不同地区的显示习惯
  9. 分阶段实施:采用分阶段实施策略,降低实施风险,确保质量

业务上下文

当前问题

  • 系统当前只支持中文,无法满足国际化用户的需求
  • 前端界面、后端消息、数据库数据都未实现国际化
  • 时间、货币、日期、数字格式固定,无法根据用户地区自动调整
  • 缺乏语言切换功能,用户体验不佳

业务场景

国际化支持
├─ 前端国际化
│  ├─ 界面元素:按钮、菜单、标签、提示信息等
│  ├─ 表单验证:错误提示、必填项提示等
│  └─ 动态内容:表格列名、状态显示等
├─ 后端国际化
│  ├─ 错误消息:系统异常、业务异常等
│  ├─ 日志消息:操作日志、系统日志等
│  ├─ 验证消息:参数校验、业务校验等
│  └─ 通知消息:邮件、短信、站内信等
├─ 数据库国际化
│  ├─ 字典数据:字典项名称、字典项说明等
│  ├─ 系统配置:配置项名称、配置项说明等
│  └─ 菜单数据:菜单名称、菜单提示等
└─ 格式化支持
   ├─ 时区支持:根据用户时区显示时间
   ├─ 货币格式:根据用户地区显示货币
   ├─ 日期格式:根据用户地区显示日期
   └─ 数字格式:根据用户地区显示数字

应用场景

  1. 多语言用户:不同国家和地区的用户使用系统,需要显示不同语言
  2. 跨国企业:跨国企业的员工使用系统,需要支持多种语言
  3. 国际化部署:系统部署到不同国家,需要支持当地语言
  4. 数据展示:不同地区用户需要看到符合当地习惯的数据格式

涉众分析

角色 需求 影响
系统管理员 能够配置系统支持的语言,管理国际化资源 降低运维成本,提高系统灵活性
开发人员 使用统一的国际化框架,快速实现国际化功能 降低开发复杂度,提高开发效率
最终用户 能够切换语言,看到符合自己语言习惯的界面 提升用户体验,提高用户满意度
运维人员 能够监控系统国际化状态,快速定位问题 提高系统可维护性,减少故障时间

功能需求

核心功能

功能 1前端国际化

  • 描述:实现前端界面的国际化,支持界面元素、表单验证、动态内容的国际化
  • 验收标准
    1. 支持中文和英文两种语言
    2. 支持语言切换功能,切换后立即生效
    3. 所有界面元素(按钮、菜单、标签、提示信息)都支持国际化
    4. 表单验证消息支持国际化
    5. 动态内容(表格列名、状态显示)支持国际化
    6. 语言偏好保存在用户配置中,下次登录自动应用
  • 优先级:高
  • 依赖关系:依赖后端国际化接口

功能 2后端国际化

  • 描述:实现后端的国际化,支持错误消息、日志消息、验证消息、通知消息的国际化
  • 验收标准
    1. 支持中文和英文两种语言
    2. 所有错误消息支持国际化
    3. 所有日志消息支持国际化
    4. 所有验证消息支持国际化
    5. 所有通知消息(邮件、短信、站内信)支持国际化
    6. 使用 Spring MessageSource 实现
    7. 支持根据用户语言偏好返回对应语言的消息
  • 优先级:高
  • 依赖关系:无

功能 3数据库国际化

  • 描述:实现数据库数据的国际化,支持字典数据、系统配置、菜单数据的国际化
  • 验收标准
    1. 支持中文和英文两种语言
    2. 字典数据支持国际化(字典项名称、字典项说明)
    3. 系统配置支持国际化(配置项名称、配置项说明)
    4. 菜单数据支持国际化(菜单名称、菜单提示)
    5. 国际化数据存储在独立表中,便于管理
    6. 支持根据用户语言偏好查询对应语言的数据
  • 优先级:高
  • 依赖关系:依赖数据库表结构设计

功能 4时区国际化

  • 描述:支持时区国际化,根据用户时区显示时间
  • 验收标准
    1. 支持用户设置时区偏好
    2. 所有时间显示根据用户时区自动转换
    3. 支持常用时区UTC+8、UTC-5 等)
    4. 时区偏好保存在用户配置中
    5. 支持系统默认时区配置
  • 优先级:高
  • 依赖关系:无

功能 5货币格式化

  • 描述:支持货币格式化,根据用户地区显示货币
  • 验收标准
    1. 支持常用货币符号(如:¥、$、€ 等)
    2. 支持货币小数位格式化
    3. 支持货币千分位分隔符
    4. 根据用户地区偏好自动选择货币格式
    5. 支持自定义货币格式
  • 优先级:中
  • 依赖关系:无

功能 6日期格式化

  • 描述:支持日期格式化,根据用户地区显示日期
  • 验收标准
    1. 支持常用日期格式YYYY-MM-DD、DD/MM/YYYY、MM/DD/YYYY 等)
    2. 支持日期时间格式化
    3. 支持短日期和长日期格式
    4. 根据用户地区偏好自动选择日期格式
    5. 支持自定义日期格式
  • 优先级:中
  • 依赖关系:无

功能 7数字格式化

  • 描述:支持数字格式化,根据用户地区显示数字
  • 验收标准
    1. 支持数字千分位分隔符(如:,、. 等)
    2. 支持数字小数位格式化
    3. 根据用户地区偏好自动选择数字格式
    4. 支持自定义数字格式
  • 优先级:中
  • 依赖关系:无

次要功能

功能 8语言管理

  • 描述:提供语言管理功能,支持添加、编辑、删除语言
  • 验收标准
    1. 支持添加新语言
    2. 支持编辑语言信息
    3. 支持删除语言(删除前检查是否被使用)
    4. 支持设置系统默认语言
    5. 支持启用/停用语言
  • 优先级:中
  • 依赖关系:依赖数据库国际化

功能 9国际化资源管理

  • 描述:提供国际化资源管理功能,支持添加、编辑、删除国际化资源
  • 验收标准
    1. 支持添加国际化资源(键值对)
    2. 支持编辑国际化资源
    3. 支持删除国际化资源
    4. 支持按语言、模块筛选资源
    5. 支持批量导入导出资源
  • 优先级:低
  • 依赖关系:依赖后端国际化

非功能需求

性能需求

  • 响应时间:语言切换响应时间 < 500ms
  • 加载时间:国际化资源加载时间 < 1s
  • 内存占用:国际化资源内存占用 < 10MB
  • 并发用户数:支持 1000+ 并发用户

安全需求

  • 认证方式:使用现有的 Spring Security 认证机制
  • 授权机制:只有管理员权限才能管理语言和国际化资源
  • 数据安全:国际化资源数据加密存储
  • 审计日志:记录语言和国际化资源变更日志

可用性需求

  • 系统可用性99.9%
  • 容错机制:国际化资源缺失时显示默认语言
  • 灾备方案:国际化资源损坏时使用备用资源

兼容性需求

  • 浏览器兼容性支持主流浏览器Chrome、Firefox、Edge、Safari
  • 操作系统兼容性:支持 Windows、Linux、macOS
  • 框架兼容性:兼容现有的 Spring Boot 3.5.7 框架

可扩展性需求

  • 扩展方式:支持新增语言,无需修改代码
  • 资源扩展:支持新增国际化资源,无需重启应用
  • 格式扩展:支持新增格式化规则,无需修改代码

可维护性需求

  • 代码可读性:代码符合项目编码规范,注释完整
  • 文档完整性:提供完整的使用文档和 API 文档
  • 测试覆盖率:单元测试覆盖率 ≥ 80%

数据需求

数据模型

sys_language语言表

sys_language (语言表)
├─ id (BIGINT) - 主键ID
├─ lang_code (VARCHAR) - 语言代码zh、en
├─ lang_name (VARCHAR) - 语言名称中文、English
├─ lang_name_en (VARCHAR) - 语言英文名称Chinese、English
├─ lang_flag (VARCHAR) - 语言图标
├─ is_default (CHAR) - 是否默认语言0否 1是
├─ status (CHAR) - 状态0正常 1停用
├─ sort_order (INT) - 排序
├─ create_by (VARCHAR) - 创建者
├─ create_time (DATETIME) - 创建时间
├─ update_by (VARCHAR) - 更新者
└─ update_time (DATETIME) - 更新时间

sys_i18n_resource国际化资源表

sys_i18n_resource (国际化资源表)
├─ id (BIGINT) - 主键ID
├─ lang_code (VARCHAR) - 语言代码zh、en
├─ module_name (VARCHAR) - 模块名称
├─ resource_key (VARCHAR) - 资源键
├─ resource_value (TEXT) - 资源值
├─ create_by (VARCHAR) - 创建者
├─ create_time (DATETIME) - 创建时间
├─ update_by (VARCHAR) - 更新者
└─ update_time (DATETIME) - 更新时间

sys_user_lang用户语言偏好表

sys_user_lang (用户语言偏好表)
├─ id (BIGINT) - 主键ID
├─ user_id (BIGINT) - 用户ID
├─ lang_code (VARCHAR) - 语言代码zh、en
├─ timezone (VARCHAR) - 时区Asia/Shanghai、America/New_York
├─ date_format (VARCHAR) - 日期格式yyyy-MM-dd、MM/dd/yyyy
├─ number_format (VARCHAR) - 数字格式(如:#,##0.00、#.##0,00
├─ currency_format (VARCHAR) - 货币格式(如:¥#,##0.00、$#,##0.00
├─ create_by (VARCHAR) - 创建者
├─ create_time (DATETIME) - 创建时间
├─ update_by (VARCHAR) - 更新者
└─ update_time (DATETIME) - 更新时间

数据存储需求

  • 数据库类型MySQL 8.3.0
  • 存储容量:单表支持 1000 万+ 数据
  • 数据备份策略:每日备份,保留 7 天

数据流转需求

用户登录
  └─ 读取用户语言偏好
  └─ 加载对应语言的国际化资源
  └─ 显示对应语言的界面

语言切换
  └─ 用户选择新语言
  └─ 更新用户语言偏好
  └─ 重新加载国际化资源
  └─ 刷新界面显示

国际化资源管理
  └─ 管理员添加/编辑/删除国际化资源
  └─ 更新数据库中的国际化资源
  └─ 刷新国际化资源缓存

业务规则

  1. 语言代码唯一性语言代码lang_code必须唯一
  2. 资源键唯一性同一语言下资源键resource_key必须唯一
  3. 默认语言唯一性只能有一个默认语言系统默认使用中文zh-CN
  4. 用户语言偏好每个用户只能有一个语言偏好保存在后端用户表sys_user_lang
  5. 资源缺失处理:国际化资源缺失时,显示默认语言的资源
  6. 语言切换权限:所有用户都可以切换语言,语言切换为全局生效
  7. 语言管理权限:只有管理员权限才能管理语言和国际化资源
  8. 资源管理方式:国际化资源文件采用集中式管理
  9. 资源加载策略:支持按需加载国际化资源
  10. 资源命名规范:国际化资源键采用点号分隔(如 common.confirm、login.username
  11. 语言切换方式前端自动检测用户语言类型支持快捷键切换Ctrl + Shift + L
  12. 语言扩展性:为未来扩展更多语言奠定基础

国际化资源管理

前端国际化资源管理

  • 资源文件结构:集中式管理
    src/
    └── locales/
        ├── zh-CN.json  # 中文资源
        └── en-US.json  # 英文资源
    
  • 资源加载策略:按需加载(懒加载)
  • 资源命名规范:使用点号分隔(如 common.confirmlogin.username
  • 资源示例
    {
      "common": {
        "confirm": "确定",
        "cancel": "取消",
        "save": "保存",
        "delete": "删除"
      },
      "login": {
        "title": "系统登录",
        "username": "用户名",
        "password": "密码"
      }
    }
    

后端国际化资源管理

  • 资源文件结构:集中式管理
    resources/
    └── messages/
        ├── messages_zh_CN.properties  # 中文资源
        └── messages_en_US.properties  # 英文资源
    
  • 资源加载策略:使用 Spring MessageSource 按需加载
  • 资源命名规范:使用点号分隔(如 error.user.not.foundvalidation.username.required
  • 资源示例
    # 中文资源
    error.user.not.found=用户不存在
    validation.username.required=用户名不能为空
    
    # 英文资源
    error.user.not.found=User not found
    validation.username.required=Username is required
    

语言切换机制

  • 切换范围:全局生效
  • 切换方式
    • 前端自动检测用户语言类型(浏览器语言、用户偏好)
    • 支持快捷键切换Ctrl + Shift + L
    • 支持下拉菜单选择
  • 切换实时性:立即生效,无需刷新页面
  • 语言代码
    • 中文zh-CN
    • 英文en-US

语言偏好管理

  • 存储方式保存在后端用户表sys_user_lang
  • 存储内容
    • lang_code语言代码如 zh-CN、en-US
    • timezone时区如 Asia/Shanghai、America/New_York
    • date_format日期格式如 yyyy-MM-dd、MM/dd/yyyy
    • number_format数字格式如 #,##0.00、#.##0,00
    • currency_format货币格式如 ¥#,##0.00、$#,##0.00
  • 默认语言系统默认使用中文zh-CN
  • 切换权限:所有用户都可以切换语言
  • 自动应用:下次登录时自动应用上次选择的语言

技术约束

  1. Spring Boot 版本3.5.7
  2. Java 版本21
  3. 数据库MySQL 8.3.0
  4. 国际化框架Spring MessageSource、vue-i18n
  5. 前端框架Vue 3 + TypeScript + Vite
  6. 状态管理Pinia 3.0.3
  7. UI 组件库Element Plus 2.10.3
  8. 必须使用现有的认证授权机制:不能引入新的认证方式
  9. 必须与前后端国际化接口兼容:确保前后端语言代码一致

实施策略

分阶段实施

第一阶段:基础框架搭建

  • 目标:搭建国际化基础框架,支持前端和后端国际化
  • 内容
    1. 创建数据库表sys_language、sys_i18n_resource、sys_user_lang
    2. 实现 Spring MessageSource 配置
    3. 实现前端 vue-i18n 框架集成
    4. 实现国际化资源集中式管理前端src/locales/后端resources/messages/
    5. 实现国际化资源按需加载(前端:动态 import后端MessageSource
    6. 实现国际化资源键的点号分隔规范(如 common.confirm、login.username
    7. 实现语言切换功能(全局生效)
    8. 实现前端自动检测用户语言类型
    9. 实现快捷键切换语言Ctrl + Shift + L
    10. 实现语言偏好保存在后端用户表
    11. 设置系统默认语言为中文
    12. 实现基础国际化资源管理
  • 优先级:高
  • 预计时间1 周

第二阶段:后端国际化

  • 目标:完成后端所有消息的国际化
  • 内容
    1. 国际化所有错误消息
    2. 国际化所有日志消息
    3. 国际化所有验证消息
    4. 国际化所有通知消息
    5. 完善国际化资源管理功能
  • 优先级:高
  • 预计时间2 周

第三阶段:前端国际化

  • 目标:完成前端所有界面的国际化
  • 内容
    1. 国际化所有界面元素
    2. 国际化所有表单验证消息
    3. 国际化所有动态内容
    4. 完善语言切换界面
  • 优先级:高
  • 预计时间2 周

第四阶段:数据库国际化

  • 目标:完成数据库数据的国际化
  • 内容
    1. 国际化所有字典数据
    2. 国际化所有系统配置
    3. 国际化所有菜单数据
    4. 实现数据库国际化查询接口
  • 优先级:中
  • 预计时间1 周

第五阶段:格式化支持

  • 目标:完成时区、货币、日期、数字格式化
  • 内容
    1. 实现时区国际化
    2. 实现货币格式化
    3. 实现日期格式化
    4. 实现数字格式化
    5. 实现格式化偏好管理
  • 优先级:中
  • 预计时间1 周

第六阶段:优化和完善

  • 目标:优化国际化性能,完善功能
  • 内容
    1. 优化国际化资源加载性能
    2. 实现国际化资源缓存
    3. 完善国际化资源管理界面
    4. 编写单元测试和集成测试
    5. 编写使用文档
  • 优先级:低
  • 预计时间1 周

成功标准

  1. 支持中文和英文两种语言
  2. 前端、后端、数据库三层都支持国际化
  3. 语言切换响应时间 < 500ms
  4. 支持时区国际化
  5. 支持货币、日期、数字格式化
  6. 单元测试覆盖率 ≥ 80%
  7. 系统可用性 ≥ 99.9%

风险评估

风险 影响程度 发生概率 缓解措施
国际化资源管理复杂度高 提供友好的管理界面,支持批量导入导出
国际化资源加载性能问题 实现国际化资源缓存,优化加载逻辑
语言切换导致数据不一致 实现事务机制,确保数据一致性
国际化资源缺失导致显示异常 实现默认语言回退机制
时区转换错误 使用成熟的时区转换库,充分测试

依赖关系

  • 依赖现有的 Spring Boot 框架
  • 依赖现有的 Spring Security 认证授权机制
  • 依赖现有的数据库设计
  • 依赖现有的前端框架

相关文档