为什么我在不同的应用中获得不同的Locale.current?

时间:2018-05-19 10:52:30

标签: ios xcode locale nsdateformatter

我在同一设备上从XCode运行了两个不同的应用程序。

在AppDelegate应用程序中didFinishLaunchingWithOptions我打印出以下调试信息:

print( Locale.current )

在一个应用程序中,它打印出sv_SE(正如我所料),但在另一个应用程序上,它打印出en_SE !!

因此,dateFormatter.string将生成英文名称,而不是我期望的瑞典名称。

func dayOfWeek(date:Date) -> String {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "EEEE"
    dateFormatter.locale = Locale.current // locale is  en_SE not sv_SE   ???
    let dayname =  dateFormatter.string(from: date).capitalized
    return dayname   // returns SATURDAY not LÖRDAG    
}

问题:为什么在同一台设备上运行时,我会在不同的应用中获得不同的区域设置?

1 个答案:

答案 0 :(得分:0)

我在这里找到答案:Locale.current reporting wrong language on device

答案是Locale.current 设备上设置的区域设置,但是"妥协"在该语言环境之间App支持的内容。我的第一个App确实支持瑞典语,但我的第二个App没有。要获取设备上的区域设置,应该使用Locale.preferredLanguages.first,就像在Locale.current reporting wrong language on device的答案中所做的那样。