以下是我如何本地化日子:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSString *dayFormat = [NSDateFormatter dateFormatFromTemplate:@"EEEE" options:0 locale:[NSLocale currentLocale]];
[dateFormatter setDateFormat:dayFormat];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSString *day = [dateFormatter stringFromDate:date];
然而它似乎正在返回一周中的英语日(星期一,星期二等),而不是设备语言(在模拟器中已设置为德语)。
知道我哪里出错了?
在对设备进行一些研究后,更新我意识到它实际上是区域设置,而不是更改日期语言的语言设置。奇怪,但我想这是有原因的。
由于
答案 0 :(得分:1)
日期的语言由区域而不是语言设置。这必须是一个错误。如果我在德国,但是说英语,我当然不想用德语发表约会对象?
无论如何,这就是原因。你必须改变语言和地区。
答案 1 :(得分:0)
我遇到了同样的问题。它不适用于模拟器,但它可以在设备上运行。你能试试吗?然而,我没有解决它,我甚至没有看到它,因为它在设备上完美运行,这确实是你的应用程序的主要目标。
编辑:
这来自Apple's doc:
currentLocale
返回当前用户的逻辑语言环境。
+ (id)currentLocale
返回值
当前用户的逻辑区域设置。语言环境由当前用户所选系统区域设置的设置与用户在“系统偏好设置”中指定的任何自定义设置重叠而形成。
讨论
您从此区域设置获得的设置不会更改为用户的设置 首选项已更改,以便您的操作保持一致。 通常,您对返回的对象执行某些操作,然后执行 允许它被处置。此外,由于返回的对象可能是 缓存,你不需要无限期地坚持下去。对比 autoupdatingCurrentLocale。
也许您可以尝试使用:
preferredLanguages
将用户的语言首选项顺序作为字符串数组返回。
+ (NSArray *)preferredLanguages
返回值
用户的语言首选项顺序为NSString对象数组,每个对象都是一个规范化的IETF BCP 47语言标识符。