巴西站价格显示 €39,90,正确应为 R$ 219,90,上线首日 430 个订单页曝光,加购率跌了 12%。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,请求头只解析出语言 pt,没有保留地区 BR,回退到了默认的 pt-PT 资源。货币和文案都从同一个语言包取,地区信息在第一步就丢了。Locale 构造只传了 language。
「语言地区组合」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。
Locale.forLanguageTag("pt-BR");
request.getHeader("Accept-Language");
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
具体做法是,解析 Accept-Language 时保留 language-region 完整标签;资源查找先精确匹配 pt-BR 再退到 pt;货币从地区推导 不要从语言推导;用 pt-BR 和 pt-PT 两个请求头各访问一次。
最后用这个标准收尾,巴西站显示 R$ 219,90,葡萄牙站仍是 €39,90,两边文案各自正确。
