ios - 为什么我在不同的应用程序中得到不同的Locale.current?

标签 ios xcode locale nsdateformatter

我有两个不同的应用程序,它们是从同一设备上的XCode运行的。

在AppDelegate应用程序didWnishLaunchingWithOptions中,我打印出以下调试消息:

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    
}

问题:当在同一设备上运行时,为什么我在不同的应用程序中获得不同的语言环境?

最佳答案

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

答案是Locale.current不是设备上设置的语言环境,而是App支持的语言环境之间的“折衷”。我的第一个应用程序确实支持瑞典语,但我的第二个则不支持。要在设备上获取语言环境,应该使用Locale.preferredLanguages.first,就像对Locale.current reporting wrong language on device的回答一样。

关于ios - 为什么我在不同的应用程序中得到不同的Locale.current?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50424487/

相关文章:

android - 如何在 ionic 应用程序中查找按钮是否处于 Activity 状态

ios - 如何使用 Xcode 工作区内生成的框架中的自定义字体

ios - 仅允许应用纵向 View

ios - Swift/iOS : Analyzing (lldb) crash, Paypal iOS SDK

android - 有没有办法在 Android 上列出已安装的语言环境?

ios - 在 Swift 中符合 Obj-C 协议(protocol)的属性

objective-c - ios gtm-oauth 没有键盘

iphone - ios 从不同的类回调 viewController

email - 如何在 mailchimp 中设置日期区域设置?

c - 让语言环境函数在 glibc 中工作