最标准的做法是在 fetch 请求头中设置 accept-language 字段,如 'accept-language': 'zh-cn';可结合 navigator.language 动态获取用户语言,并注意服务端需正确解析该字段。

在 JavaScript 中使用 fetch 时,想让服务端知道当前请求的语言偏好,最标准的做法是在请求头中添加 Accept-Language 字段。
直接在 headers 中设置 Accept-Language
这是最常用、最符合 HTTP 规范的方式。浏览器会根据系统或页面语言自动设置该字段,但你也可以手动覆盖:
- 值格式一般为
zh-CN、en-US、ja-JP等,也可带权重如zh-CN,zh;q=0.9,en;q=0.8 - 注意:不要写成
language或lang这类自定义字段,除非后端明确要求且不遵循标准
示例代码:
fetch('/api/data', {
method: 'GET',
headers: {
'Accept-Language': 'zh-CN'
}
});
结合 navigator.language 动态获取用户语言
如果希望自动适配用户浏览器语言,可读取 navigator.language(或兼容旧版的 navigator.userLanguage):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
navigator.language返回类似zh-CN、en-US的字符串 - 部分场景下需做标准化处理,比如转为小写、截取主语言(
zh)、或 fallback 到默认值
示例:
const lang = navigator.language || navigator.userLanguage || 'zh-CN';
fetch('/api/data', {
headers: {
'Accept-Language': lang
}
});
服务端识别与注意事项
后端框架(如 Express、Spring Boot、Django)通常能自动解析 Accept-Language 并做本地化响应,但要注意:
- 确保后端确实读取并使用了该字段,而不是只依赖 cookie 或 URL 参数
- 若用 CORS 请求,服务端需在
Access-Control-Allow-Headers中显式允许Accept-Language(不过该字段属于“简单请求头”,多数情况下无需额外配置) - 避免和自定义语言参数(如
X-Language)混用,除非有特殊路由或鉴权逻辑需要
其他常见语言相关 Header(按需补充)
除了 Accept-Language,有时还会配合以下字段增强语义:
-
Content-Language:用于 POST/PUT 请求体的语言标识(如提交的多语言内容),非必需 -
X-Client-Language:某些项目约定的自定义头,仅当后端明确支持时才用 - 不建议用
Cookie或 URL 查询参数传语言标识来替代 header,因为不够语义化且可能被缓存干扰
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










