1

以下是我本地化日子的方式:

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];

然而,它似乎返回的是一周中的英语天(周一、周二等),而不是设备语言(在模拟器中已设置为德语)。

知道我哪里出错了吗?

在对设备进行一些研究后更新,我意识到它实际上是区域设置,而不是更改日期语言的语言设置。奇怪,但我想它是有原因的。

谢谢

4

2 回答 2

1

日期的语言是由地区而不是语言设置的。这必须是一个错误。如果我在德国,但会说英语,我肯定不想用德语约会吗?

无论如何,这就是为什么。您必须更改语言和地区。

于 2012-12-13T13:44:23.260 回答
0

我有同样的问题。它不适用于模拟器,但可以在设备上使用。你能试试吗?但是我没有解决它,我什至没有深入研究它,因为它在设备上完美运行,这确实是您应用程序的主要目标。


编辑:

这来自Apple的文档

当前语言环境

返回当前用户的逻辑语言环境。

+ (id)currentLocale

返回值

当前用户的逻辑语言环境。区域设置由当前用户选择的系统区域设置与用户在“系统偏好设置”中指定的任何自定义设置叠加而成。

讨论

您从此语言环境中获得的设置不会随着用户首选项的更改而更改,以便您的操作保持一致。通常,您对返回的对象执行一些操作,然后将其处理掉。此外,由于返回的对象可能会被缓存,因此您无需无限期地持有它。与 autoupdatingCurrentLocale 对比。

也许您可以尝试使用:

首选语言

以字符串数组的形式返回用户的语言偏好顺序。

+ (NSArray *)preferredLanguages

返回值

用户的语言偏好顺序为 NSString 对象数组,每个对象都是规范化的 IETF BCP 47 语言标识符。

于 2012-12-13T13:31:00.980 回答