如何以编程方式获取 Windows 10 显示语言?

Posted

技术标签:

【中文标题】如何以编程方式获取 Windows 10 显示语言?【英文标题】:How to get windows 10 display language programmatically? 【发布时间】:2017-03-16 18:25:05 【问题描述】:

我已经坚持了好几个小时了。我用谷歌搜索了一些,发现了这个:

CultureInfo culture = CultureInfo.CurrentUICulture;

还有这个:

Windows.System.UserProfile.GlobalizationPreferences.Languages[0];

但两者都引用英语。因为英语是我系统语言列表的第一个。但是英语不是我系统的显示语言,而中文是。

那么有没有办法以编程方式获取windows系统的显示语言呢?

感谢您的帮助。

【问题讨论】:

嗯,没有“系统语言列表”。有一个语言首选项列表(具有上移和下移命令)。如果英语是该列表中的第一个,那么这就是您的偏好以及您从 GlobalizationPreferences.Languages[0] 获得的内容。也许您应该更改您的偏好,单击“上移/下移”重新排列该列表,也许您想改用 Windows.Globalization.Language.CurrentInputMethodLanguageTag。 抱歉描述不当,我的意思是语言偏好列表。我试图让英语成为默认语言,但它不起作用。 windows显示语言还是中文,所以我的系统还是显示中文。我google了一下,好像我用的是Windows 10单语中文版,这样的话我只能用一种语言。 【参考方案1】:

使用System.Globalization.CultureInfo:

            var ci = CultureInfo.InstalledUICulture;

            Console.WriteLine("Default Language Info:");
            Console.WriteLine("* Name: 0", ci.Name);
            Console.WriteLine("* Display Name: 0", ci.DisplayName);
            Console.WriteLine("* English Name: 0", ci.EnglishName);
            Console.WriteLine("* 2-letter ISO Name: 0", ci.TwoLetterISOLanguageName);
            Console.WriteLine("* 3-letter ISO Name: 0", ci.ThreeLetterISOLanguageName);
            Console.WriteLine("* 3-letter Win32 API Name: 0", ci.ThreeLetterWindowsLanguageName);

WinRT

对于 WinRT,我猜你必须使用 ApplicationLanguages APIs,但我无法为你提供代码,因为我正在运行另一个版本的 win,所以我无法测试。

【讨论】:

感谢您的快速回复,@Sid。但是属性 InstalledUICulture 在我的代码中不可用。我的代码在 Windows 运行时无法引用 .Net Framework 中的功能?不过我不确定。对不起,我忘了提。我试过了。还有其他方法吗?? 感谢您的帮助。但我没有让它工作。你知道吗? Microsoft 的商店应用程序未使用显示语言,它使用语言首选项列表中的第一个。所以我也在用它。我不需要坚持这种显示语言的东西。但我会把问题留在这里,以防有人感兴趣。再次感谢您的建议,并为迟到的回复感到抱歉(正在处理其他事情)。

以上是关于如何以编程方式获取 Windows 10 显示语言?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 10 及更高版本中以编程方式刷新任务栏?

以编程方式获取 Windows 操作系统版本

如何以编程方式显示图像水平 UIscrollView

如何以编程方式配置 Windows cmd.exe 设置?

如何以编程方式检索 EPi Server 网站的所有启用语言的列表?

在 Windows 上以编程方式获取每个进程的磁盘 io 统计信息?