是否可以像在 Windows Phone 上一样获得操作系统的实际语言?我正在使用CultureInfo.CurrentCulture.TwoLetterIsoString
,但我总是收到 en 而不是正确的语言,就de
我而言。
那么如何在 WinRT 应用程序中获取实际语言呢?
是否可以像在 Windows Phone 上一样获得操作系统的实际语言?我正在使用CultureInfo.CurrentCulture.TwoLetterIsoString
,但我总是收到 en 而不是正确的语言,就de
我而言。
那么如何在 WinRT 应用程序中获取实际语言呢?
实际上有很多“有点错误”的答案。
Windows.Globalization.Language.CurrentInputMethodLanguageTag
正如托马斯所指出的那样,并非在所有情况下都有效。它只返回显示用户键盘的语言。Windows.Globalization.ApplicationLanguages.Languages
,但它是用户语言偏好和应用程序支持的语言的组合。对于最准确的用户偏好语言,您需要使用Windows.System.UserProfile.GlobalizationPreferences.Languages[0]
.
您可以使用
Windows.Globalization.Language.CurrentInputMethodLanguageTag
得到实际的语言。如果您使用的是 Windows 8 的德语版本,它会返回例如 de-DE。
根据 MSDN,正确答案是:
Windows.System.UserProfile.GlobalizationPreferences.Languages[0]
这应该是用户最喜欢的语言。
就目前我所记得的:
Windows.Globalization.ApplicationPreferences.PreferredLanguage
如果您创建 HTML5/javascript Windows 应用程序。你可以使用这个:
var language = window.navigator.userLanguage || window.navigator.language;
alert(language);
String topUserLanguage = GlobalizationPreferences.Languages[0];
Windows.Globalization.Language userLanguage = new Windows.Globalization.Language(topUserLanguage);
if (userLanguage.Script.Equals("Arab") || userLanguage.Script.Equals("Hebr"))
{
....................
}
Windows 社区工具包现在为此提供了一个简单的 API:https ://docs.microsoft.com/en-us/dotnet/api/microsoft.toolkit.uwp.helpers.systeminformation.culture?view=win-comm-toolkit- dotnet-stable#Microsoft_Toolkit_Uwp_Helpers_SystemInformation_Culture
用法:
using Microsoft.Toolkit.Uwp.Helpers;
var cultureInfo = SystemInformation.Instance.Culture;