You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET WPF本地化:CurrentUICulture显示zh-CN而非zh-HANS的疑问

问题解答

1. 为什么Thread.CurrentThread.CurrentUICulture.Name返回zh-CN而非zh-HANS?

这是Windows系统区域设置的正常行为:

  • zh-CN是特定区域性文化代码,对应「中文(中国)」,是中国内地Windows系统默认的UICulture值,包含语言+区域的完整信息。
  • zh-Hans是中性文化代码,仅代表「简体中文」这个语言,不绑定具体区域。
    系统会根据用户的区域设置返回对应的特定区域性,而非中性文化,所以你看到的zh-CN是符合预期的系统行为。

2. .NET能加载Resources.zh-Hans.resx的原因

确实是.NET的资源回退机制在起作用,但不是直接回退到「zh」,而是回退到特定区域性的父级中性文化:

  • 当.NET找不到对应特定区域性的资源文件(你这里没有Resources.zh-CN.resx),会自动向上查找该文化的父级中性文化资源。zh-CN的父级中性文化就是zh-Hans,所以会加载Resources.zh-Hans.resx。
  • .NET资源查找的优先级是:特定区域性资源 → 中性区域性资源 → 默认资源(Resources.resx)。

修复依赖文化值的功能代码建议

既然不能依赖CurrentUICulture.Name的硬编码字符串判断,建议换这些方式:

  • 检查CurrentUICulture.Parent.Name是否为zh-Hans,判断是否是简体中文环境
  • 使用CurrentUICulture.IsNeutralCulture区分中性/特定文化,再结合语言属性判断
  • 尽量直接依赖资源文件的加载逻辑,而非手动判断文化字符串,避免硬编码带来的适配问题

内容的提问来源于stack exchange,提问作者Andrew Stephens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 23:34:53