C# 如何在WinRT应用程序中获取实际语言?
有可能在Windows Phone上获得操作系统的实际语言吗?我使用的是C# 如何在WinRT应用程序中获取实际语言?,c#,windows-8,windows-runtime,C#,Windows 8,Windows Runtime,有可能在Windows Phone上获得操作系统的实际语言吗?我使用的是CultureInfo.CurrentCulture.TwoLetterIsoString,但我总是收到en而不是正确的语言,在我的例子中是de 那么如何在WinRT应用程序中获得实际语言呢?据我记忆所及: Windows.Globalization.ApplicationPreferences.PreferredLanguage 你可以用 Windows.Globalization.Language.CurrentInp
CultureInfo.CurrentCulture.TwoLetterIsoString
,但我总是收到en而不是正确的语言,在我的例子中是de
那么如何在WinRT应用程序中获得实际语言呢?据我记忆所及:
Windows.Globalization.ApplicationPreferences.PreferredLanguage
你可以用
Windows.Globalization.Language.CurrentInputMethodLanguageTag
以获得实际的语言。如果您使用的是德国版本的Windows 8,则返回de de。如果您创建的是HTML5/javascript Windows应用程序,则返回de。您可以使用以下选项:
var language = window.navigator.userLanguage || window.navigator.language;
alert(language);
事实上有很多“有点错误”的答案
- Thomas指出,Windows.Globalization.Language.CurrentInputMethodLanguageTag在所有场景中都不起作用。它只返回显示用户键盘的语言李>
- 您也可以使用
,但它是用户语言首选项和应用程序支持的语言的组合Windows.Globalization.ApplicationLanguages.Languages
对于大多数准确的用户首选项语言,您需要使用
Windows.System.UserProfile.GlobalizationPreferences.Languages[0]
根据MSDN,正确答案是:
Windows.System.UserProfile.GlobalizationPreferences.Languages[0]
这应该是用户最喜欢的语言。Windows社区工具包现在为此提供了一个简单的API: 用法:
using Microsoft.Toolkit.Uwp.Helpers;
var cultureInfo = SystemInformation.Instance.Culture;
示例代码:我现在将使用“Windows.System.UserProfile.GlobalizationPreferences.Languages[0]”。实际上,这将返回当前键盘语言,而不是用户区域设置选择!WinRT与CurrentCulture没有直接的等价物,但是
Windows。全球化命名空间确实提供了它的替代方案!我的键盘布局不反映我的首选语言。当您属于当地少数民族时(实际上世界上大多数人都是这样做的),当您喜欢英语作为系统语言,因为您在国际上进行交流时,这是很常见的。这在UWP上不存在:(
using Microsoft.Toolkit.Uwp.Helpers;
var cultureInfo = SystemInformation.Instance.Culture;