---
name: i18n-l10n
when: '国际化, 多语言, i18n, l10n, 语言切换, 多语言支持, 本地化, 翻译, locale, 中英文'
scope:
  - frontend
products:
  - '*'
id: ka-pattern-i18n-l10n
asset_kind: pattern
lifecycle_status: active
owner_mechanism_id: mc-frontend-pattern
authority: supporting
routes:
  - '*'
primary_triggers:
  - 国际化
  - 多语言
  - i18n
  - l10n
  - 语言切换
  - 多语言支持
  - 本地化
  - 翻译
  - locale
  - 中英文
priority: P2
specificity: 3
version: 1.1.0
last_reviewed: '2026-06-01'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
stages: ["编码与单元测试"]
---

## 决策规则
- 所有用户可见文案禁止硬编码，必须使用 i18n key（如 t('user.login.title')）
- 日期格式必须按 locale 显示（中文 yyyy-MM-dd，英文 MM/dd/yyyy），禁止固定格式
- 金额必须按 locale 格式化（符号位置、千位分隔符、小数位数）
- 后端接口返回的錙误码必须映射为前端多语言提示，禁止直接展示后端錙误消息
- 语言资源文件必须按模块拆分，禁止单一大文件（建议 pages/common/components 分目录）
- 新增语言只需新增资源文件，不修改业务代码
- 接口返回的业务数据（枚举、状态名）由后端提供多语言字段，前端不维护业务数据翻译
- 所有用户可见文本必须通过 i18n 资源文件管理，禁止硬编码字符串
- 日期/时间必须根据用户时区显示，禁止使用服务端固定时区
- 数字/货币格式必须根据 locale 格式化（如 1,234.56 vs 1.234,56）
- 文案翻译必须由专业翻译完成，禁止机器翻译直接上线
- 多语言文案禁止拼装（如 "欢迎" + userName），应使用带占位符的完整模版

## 验收项
- [AC-01] 用户可见文案通过 i18n key 引用
- [AC-02] 日期和金额按 locale 格式化
- [AC-03] 錙误码映射为多语言提示
- [AC-04] 资源文件按模块拆分
- [AC-05] 无硬编码用户可见文本
- [AC-06] 日期时间按时区显示
- [AC-07] 数字货币按 locale 格式化
- [AC-08] 无拼装多语言文案
