Go语言匹配pt-BR返回pt-u-rg-brzzzz而非pt的原因咨询
Go语言语言匹配返回"pt-u-rg-brzzzz"而非"pt"的原因
CLDR规则更新引发行为变更
Go的语言匹配功能依赖Unicode的CLDR(通用区域数据仓库)规则,后续版本的CLDR对葡萄牙语的区域匹配逻辑做了调整。当用户偏好的pt-BR匹配到服务器列表里的通用pt时,会通过Unicode扩展字段保留原始的区域偏好信息,不再直接返回纯pt标签。扩展字段用于留存区域覆盖信息
返回结果里的u-rg-brzzzz是Unicode扩展标记,其中rg-brzzzz代表区域覆盖为巴西。新版本的匹配逻辑不会丢弃用户原始标签里的区域属性,而是用扩展字段把它附加在匹配到的父语言标签后,以此更精准地传递用户的实际语言偏好,这和六年前测试用例的旧逻辑存在差异。语义完整性的设计考量
当前的匹配逻辑更侧重语义完整:pt是pt-BR的父语言,但用户实际需求是巴西葡萄牙语,带扩展标记的标签能让后续本地化资源选择更精准。如果只需要基础语言标签,调用tag.Base()方法即可获取纯pt。
内容的提问来源于stack exchange,提问作者Feckmore
相关产品推荐
相关产品推荐

