现象
#1294 spec 有 locale: 'auto' 但没声明 portal 支持哪些语言,Accept-Language 落在不支持的语种时 fallback 行为未定义。
复现
- helpdesk 翻译 bundle 只含 en + zh-CN
- 日本客户访问
/portal/helpdesk,浏览器 Accept-Language=ja
- 框架是渲染 ja key(缺失文案显示原 key)?回落到 en?回落到模板默认?spec 没规定
Workaround
模板里强制 locale: 'en',多语言客户体验差。
分阶段建议
M2:PortalSchema 新增:
supportedLocales?: string[]; // e.g. ['en','zh-CN','ja']
fallbackLocale?: string; // 当 Accept-Language 不在 supportedLocales 时使用,默认 'en'
languageSwitcher?: { visible: boolean; position?: 'header'|'footer' }; // UI 开关
运行时:
- 解析 Accept-Language
- 与
supportedLocales 取交集,按 q 值排序选第一个
- 没交集 →
fallbackLocale
- 用户手动切换 → 写 cookie,覆盖自动协商
验收
- portal 声明
supportedLocales: ['en','zh-CN']
- ja 客户访问看到英文(fallback),不是缺失 key
- 头部出现 EN | 中文 切换器(如声明 visible)
关联
现象
#1294 spec 有
locale: 'auto'但没声明 portal 支持哪些语言,Accept-Language 落在不支持的语种时 fallback 行为未定义。复现
/portal/helpdesk,浏览器 Accept-Language=jaWorkaround
模板里强制
locale: 'en',多语言客户体验差。分阶段建议
M2:
PortalSchema新增:运行时:
supportedLocales取交集,按 q 值排序选第一个fallbackLocale验收
supportedLocales: ['en','zh-CN']关联