语言与时区接线
界面语言来自 URL 前缀。每个接口请求都显式带上 X-Locale 与 X-Timezone,服务端的返回会用 Content-Language 做一致性校验。
- API 基址
http://127.0.0.1:8092- 界面语言(来自 URL 前缀)
zh-CN- 服务端解析语言(Content-Language)
zh-CN- 前后端语种校验
- ✓ 与界面语言一致
- 接口支持的语言
en, zh-CN, ja- 展示时区
Asia/Shanghai- 接口原样返回的服务端时间(UTC)
2026-10-16T17:17:03Z- 按展示时区换算后
2026年10月17日 01:17:03
服务端实际返回了什么
本页其余文字都是**前端词条**(ICU)。下面这两项直接来自接口响应,前端没有参与翻译——切换语言就能看到它们跟着变。
服务端渲染的成品文案(响应体 message)成功这是后端按本次请求的 X-Locale 渲染出来的,不是前端词条
- 关键响应头
- Content-Language: zh-CN
- X-Timezone: Asia/Shanghai
- body.locale: zh-CN
- body.timezone: Asia/Shanghai
原始响应体
{
"code": 0,
"data": {
"status": "ok",
"service": "fan-shop-api",
"version": "dev",
"started_at": "2026-10-16T16:55:07Z",
"uptime_seconds": 1316,
"time": "2026-10-16T17:17:03Z"
},
"locale": "zh-CN",
"message": "成功",
"timezone": "Asia/Shanghai"
}对照实验:亲手制造一次不一致
选一个 X-Locale 发过去,看服务端实际用哪种语言渲染。发不支持的语言时,服务端会立即回退源语言——这正是前端必须「映射不出就不发」的原因。
运费预估
切换语言保留深层路径
只替换第一段路径:/en/a/b 与 /zh-CN/a/b 是同一页面的两种语言。