启动应用程序时,有很多方法可以获取当前设备语言:
CultureInfo.CurrentCulture
(当前区域性)CultureInfo.CurrentUICulture
(当前用户界面区域性)CultureInfo.DefaultThreadCurrentCulture
(默认线程当前区域性)CultureInfo.DefaultThreadCurrentUICulture
(默认线程当前用户界面区域性)Thread.CurrentThread.CurrentCulture
(当前线程区域性)Thread.CurrentThread.CurrentUICulture
(当前线程用户界面区域性)
但如果我在应用程序运行时更改设备语言,则这些值将不会更新。
是否存在一种通用方法来获取当前设备语言,还是我需要为每个平台编写独立的代码?
- 安卓:
CultureInfo.GetCultureInfo(Locale.Default.ToString().Replace('_', '-'))
- iOS:
CultureInfo.GetCultureInfo(NSLocale.CurrentLocale.LocaleIdentifier.Replace('_', '-'));
- UWP:
CultureInfo.GetCultureInfo(GlobalizationPreferences.Languages[0].ToString())
CultureInfo.CurrentCulture
时,我不希望设备的语言发生改变。反之亦然。当应用程序启动时,CultureInfo.CurrentCulture
默认值被设置为设备文化,然后与其分离。它代表应用程序的文化,而不是设备的文化。您的意思是应该添加这个API吗?我同意并在XCT中创建了一个PR:https://github.com/xamarin/XamarinCommunityToolkit/pull/1200 - maxc137