ios - 如何获得 CurrentCulture 的正确值?

标签 ios ios7 xamarin.ios xamarin ios8

在 iPhone 上,用户可以选择显示语言和用于格式化的区域。
显示语言相当于.NET的Thread.CurrentUICulture,即UI的语言。
格式化区域相当于.NET的Thread.CurrentCulture,即用于格式化数字、日期等的区域性设置。

假设以下设置:
语言:英语
地区:德国

在 iOS6 中,NSLocale.CurrentLocale 将返回 "de_DE",我可以轻松地将其转换为 CultureInfo 对象。
然而,从那时起,事情发生了变化。
例如,在 iOS8 上,我得到 "en_DE",这是 CultureInfo 的无效值。

那么,确保我的 Xamarin.iOS 应用程序考虑用户选择的设置的首选方法是什么,即如何获取 Thread.CurrentCulture 的正确值?

最佳答案

我想我刚刚回答了我自己的问题:

只要用户没有在“区域”高级设置中明确关闭“自动”并将该语言也更改为德语,将区域更改为德国实际上不会更改格式。只有在这种情况下,格式实际上才不同于 UI 语言。

基于此,我现在使用此代码:

private static CultureInfo GetFormattingLanguage()
{
    try
    {
        return CultureInfo.GetCultureInfo(
            NSLocale.CurrentLocale.LocaleIdentifier.Replace('_', '-'));
    }
    catch (CultureNotFoundException)
    {
        return CultureInfo.GetCultureInfo(NSLocale.CurrentLocale.LanguageCode);
    }
}

关于ios - 如何获得 CurrentCulture 的正确值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975071/

相关文章:

ios - ATS 域异常(exception)的通配符?

c# - 使用 ReactiveUI 禁用和启用文本字段更改上的按钮

c# - UIImagePickerController' 不包含 'DismissModalViewControllerAnimated' Xamarin iOS 的定义

ios - 如何在 Cloudkit 上创建此数据/模型以将其显示在我的应用程序中?

xcode - ios7/8透明导航栏

ios - 当起点和终点已知但高度可变时,如何在cocos2d/box2d中创建预览轨迹?

ios - 如何使用 google-plus-ios-sdk-1.7.1 sdk 登录 google-plus?

iphone - iOS 7 - 自定义 UISlider 设计不起作用

ios - 在 Objective C 中调用同一个 View "N"次

ios - Swift: self.init (coder : aDecoder) 使用 EXC_BAD_ACCESS 导致应用程序崩溃