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

UWP下Xamarin Forms应用始终获取en-US语言问题求助

解决Windows应用中获取当前文化信息始终返回en-US的问题

看起来你遇到的问题挺常见的——明明已经切换了系统显示和输入语言,而且也有对应的RESX资源文件,但调用Windows.System.UserProfile.GlobalizationPreferences.Languages[0]却还是固定返回en-US。我来给你几个实用的解决思路:

1. 先检查应用的语言声明配置

首先得确认你的应用有没有正确声明支持目标语言。打开Package.appxmanifest,找到Resources节点,确保添加了你切换的语言资源声明,比如:

<Resources>
  <Resource Language="en-US" />
  <Resource Language="zh-CN" /> <!-- 替换成你的目标语言代码 -->
</Resources>

如果没添加对应语言的声明,系统可能会默认回退到en-US,哪怕你装了语言包也没用。

2. 改用ApplicationLanguages获取应用实际语言

GlobalizationPreferences拿到的是系统级的语言偏好,但应用实际使用的语言可能受自身的语言覆盖设置影响。试试用更贴近应用上下文的API:

public System.Globalization.CultureInfo GetCurrentCultureInfo()
{
    var appCurrentLang = Windows.ApplicationModel.Resources.Core.ApplicationLanguages.Languages[0];
    return new System.Globalization.CultureInfo(appCurrentLang);
}

这个API会优先返回应用当前正在使用的语言,很多时候能解决GlobalizationPreferences不生效的问题。

3. 排查是否存在语言覆盖代码

检查你的应用代码里有没有设置过PrimaryLanguageOverride,如果有这个设置,不管系统语言怎么切换,应用都会强制使用覆盖的语言:

// 如果有类似这样的代码,会固定语言为en-US
Windows.ApplicationModel.Resources.Core.ApplicationLanguages.PrimaryLanguageOverride = "en-US";

如果存在,把它改成动态获取系统语言的逻辑,或者直接移除,让应用跟随系统设置。

4. 确认系统语言设置并重启应用

有时候系统语言切换后,需要重启应用才能让新设置生效。另外要确保你是在设置-时间和语言-语言里把目标语言拖到了列表最顶部,设为了首选语言,而不仅仅是安装了语言包。

5. 尝试用.NET内置的CultureInfo属性

如果上面的方法都没效果,可以试试直接用.NET的内置属性:

public System.Globalization.CultureInfo GetCurrentCultureInfo()
{
    // CurrentUICulture对应界面显示语言,CurrentCulture对应区域格式(比如日期、数字)
    return System.Globalization.CultureInfo.CurrentUICulture;
}

不过要注意,在UWP这类Windows应用中,这个属性的行为可能受应用配置影响,建议结合前面的步骤一起排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:28:07