NSDateFormatter忽略NSUserDefaults中的AppleLanguages

时间:2011-08-03 09:36:32

标签: iphone objective-c localization

我的应用程序被翻译成多种语言,但是现在我想强制语言为荷兰语。我通过将standardUserDefaults中的AppleLanguages键设置为Dutch来强制语言为Dutch。这适用于本地化字符串和xib文件。

但是NSDateFormatter似乎完全忽略了这个值。它只是使用iPhones en_US语言环境来格式化日期,即使我自己在NSDateFormatter对象上设置了语言环境:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *dutch = [[NSLocale alloc] initWithLocaleIdentifier:@"nl_NL"];
[dateFormatter setLocale:dutch];
[dutch release];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
dateLabel.text = [dateFormatter stringFromDate:[BabyInfo getDate]];
[dateFormatter release];

有没有人知道如何解决这个问题?


更新:因此,似乎所有日期内容(如NSDateFormatter和NSDatePicker)都没有使用语言区域设置来确定要显示的日期类型,而是查看位置区域设置。不过,我不知道如何告诉格式器和选择器我希望他们用荷兰语显示他们的日期。所以任何帮助仍然是受欢迎的,但至少我现在明白问题所在。

2 个答案:

答案 0 :(得分:2)

也许这个答案来得太晚了,但请查看:

http://www.alexcurylo.com/blog/2011/02/16/tip-nsdateformatter-localization/

这将强制Formatter / Picker使用首选语言的语言环境,而无需更改iPhone / iPad设置。

答案 1 :(得分:2)

要使用所选语言作为日期格式化程序,请使用:

[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]];