如何在浏览器中获取用户区域设置而非用户语言?问题排查
问题分析与解决
你的Windows 11系统区域设为丹麦语,但浏览器优先使用英语(en-GB)作为语言偏好,导致Intl.NumberFormat().resolvedOptions().locale返回en-GB而非预期的da-DK——因为这个API读取的是浏览器的语言设置,不是系统区域设置。
解决步骤
- 调整浏览器语言优先级:
- Chrome/Edge:进入设置→语言,添加丹麦语(da-DK),并将其拖动到语言列表的最顶部,重启浏览器后生效
- Firefox:进入设置→语言和外观→语言,添加丹麦语,通过上移按钮将其设为首选语言
- 网页端无法直接读取系统区域设置(浏览器出于隐私安全限制了这类系统级访问),如果需要适配系统区域,可引导用户手动选择区域,或优化代码优先检查
navigator.languages中的丹麦语:function getUserLocale() { const preferredLocales = navigator.languages || []; // 优先找丹麦语相关区域 const danishLocale = preferredLocales.find(locale => locale.startsWith('da')); if (danishLocale) return danishLocale; const intl = window.Intl; if (intl !== undefined) { return intl.NumberFormat().resolvedOptions().locale; } return navigator.language ?? "en-US"; }
内容的提问来源于stack exchange,提问作者Holm76
相关产品推荐
相关产品推荐

