Iphone 本地化日期不转换日期

Iphone 本地化日期不转换日期,iphone,ios,localization,Iphone,Ios,Localization,以下是我如何本地化的日子: NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSString *dayFormat = [NSDateFormatter dateFormatFromTemplate:@"EEEE" options:0 locale:[NSLocale currentLocale]]; [dateFormatter setDateFormat:dayFormat]; [dateFormatter

以下是我如何本地化的日子:

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];
然而,它似乎回归了一周中的英语日(周一、周二等),而不是设备语言(在模拟器中设置为德语)

知道我哪里出错了吗

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


谢谢

我也有同样的问题。它不会在模拟器上工作,但会在设备上工作。你能试试吗?然而,我没有解决它,我甚至没有深入研究它,因为它在设备上工作得非常完美,而这正是你应用程序的主要目标


编辑:

这来自:

当前语言环境 返回当前用户的逻辑区域设置

+(id)currentLocale

返回值

当前用户的逻辑区域设置。区域设置由当前用户所选系统区域设置的设置与用户在系统首选项中指定的任何自定义设置叠加而成

讨论

从该区域设置获得的设置不会随着用户的更改而更改 首选项已更改,以便您的操作保持一致。 通常对返回的对象执行一些操作,然后 让它被处理掉。此外,由于返回的对象可能是 缓存,您不需要无限期地保留它。对比 自动更新CurrentLocale

或许您可以尝试使用:

首选语言 以字符串数组的形式返回用户的语言首选项顺序

+(NSArray*)首选语言

返回值

用户的语言首选项顺序为NSString对象数组,每个对象都是标准化的IETF BCP 47语言标识符


我也有同样的问题。它不会在模拟器上工作,但会在设备上工作。你能试试吗?然而,我没有解决它,我甚至没有深入研究它,因为它在设备上工作得非常完美,而这正是你应用程序的主要目标


编辑:

这来自:

当前语言环境 返回当前用户的逻辑区域设置

+(id)currentLocale

返回值

当前用户的逻辑区域设置。区域设置由当前用户所选系统区域设置的设置与用户在系统首选项中指定的任何自定义设置叠加而成

讨论

从该区域设置获得的设置不会随着用户的更改而更改 首选项已更改,以便您的操作保持一致。 通常对返回的对象执行一些操作,然后 让它被处理掉。此外,由于返回的对象可能是 缓存,您不需要无限期地保留它。对比 自动更新CurrentLocale

或许您可以尝试使用:

首选语言 以字符串数组的形式返回用户的语言首选项顺序

+(NSArray*)首选语言

返回值

用户的语言首选项顺序为NSString对象数组,每个对象都是标准化的IETF BCP 47语言标识符


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


无论如何,这就是原因。您必须更改语言和地区。

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


无论如何,这就是原因。您必须更改语言和地区。

dateFormatFromTemplate:@“EEEE”您有德语版的lproj吗?我正在尝试获取日期的本地化版本@“EEEE”是一整天的格式字符串,例如“Monday”而不是“Mon”或“M”。@AnoopVaidya是的,但我没有任何日期字符串,我假设它将由NSDateFormatter自动处理。什么是DateFormattFromTemplate:@“EEE”你有德语版的lproj吗?我正在尝试获取日期的本地化版本@“EEEE”是一整天的格式字符串,例如“Monday”而不是“Mon”或“M”。@AnoopVaidya是的,但我没有任何日期字符串,我假设它将由NSDateFormatter自动处理。我尝试了这个方法,但没有效果。但是,如果更改区域,它将更改日期语言,而不是更改语言。古怪的因此,我将设备设置为英式英语(语言),但德国(地区)和德语日期/@汤马斯克莱森:我编辑了我的答案。也许你可以试一下,但是小心,我一点也不确定这是不是一个好的解决方案!嗯,那可能是个好主意然而,我希望苹果的工作方式是预期的功能。我们很快就会知道的!:)我试过了,但没用。但是,如果更改区域,它将更改日期语言,而不是更改语言。古怪的因此,我将设备设置为英式英语(语言),但德国(地区)和德语日期/@汤马斯克莱森:我编辑了我的答案。也许你可以试一下,但是小心,我一点也不确定这是不是一个好的解决方案!嗯,那可能是个好主意然而,我希望苹果的工作方式是预期的功能。我们很快就会知道的!:)我知道这有点奇怪,但这是故意的。如果你在德国,但你会说英语,你可能不会将你的地区设置设置为德语,因为你会得到数字格式(1,0而不是1.0)以及日期和时间格式的德语标准。恰好,长日期格式需要一个表示日期和月份的单词,这些都是格式语言(Ge)