如何获得CurrentCulture的正确价值?

时间:2014-09-22 13:15:04

标签: 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的正确值?

1 个答案:

答案 0 :(得分:3)

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

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

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

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