【问题标题】:How to get windows 10 display language programmatically?如何以编程方式获取 Windows 10 显示语言?
【发布时间】: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单语中文版,这样的话我只能用一种语言。

标签: c# windows-runtime windows-10 system locale


【解决方案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 的商店应用程序未使用显示语言,它使用语言首选项列表中的第一个。所以我也在用它。我不需要坚持这种显示语言的东西。但我会把问题留在这里,以防有人感兴趣。再次感谢您的建议,并为迟到的回复感到抱歉(正在处理其他事情)。
猜你喜欢
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 2012-01-13
相关资源
最近更新 更多