我在同一设备上从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
}
问题:为什么在同一台设备上运行时,我会在不同的应用中获得不同的区域设置?
答案 0 :(得分:0)
我在这里找到答案:Locale.current reporting wrong language on device
答案是Locale.current
不设备上设置的区域设置,但是"妥协"在该语言环境之间App支持的内容。我的第一个App确实支持瑞典语,但我的第二个App没有。要获取设备上的区域设置,应该使用Locale.preferredLanguages.first
,就像在Locale.current reporting wrong language on device的答案中所做的那样。