我正在尝试显示本地化日期(以字母表示的周日和月份)取决于手机的语言(不是区域格式)。
我试过了:
// Date formatter
NSDateFormatter* df = [[NSDateFormatter alloc] init];
NSLocale* locale = [NSLocale currentLocale];
NSLog(@"locale : %@", locale.localeIdentifier);
[df setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"EEEE dd MMMM" options:0 locale:[NSLocale currentLocale]]];
但是当我改变手机的语言时,它什么都没改变,它仍然以法语显示。我怎样才能使它发挥作用?
答案 0 :(得分:8)
试试这个;
首先我们获取设备语言,然后设置NSDateFormatter
的语言环境
用那种语言。
NSString * deviceLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
NSDateFormatter * dateFormatter = [NSDateFormatter new];
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:deviceLanguage];
[dateFormatter setDateFormat:@"EEEE dd MMMM"];
[dateFormatter setLocale:locale];
NSString * dateString = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@", dateString);
答案 1 :(得分:1)
你测试错了。您应该做的是更改Region Format
,而不是设备的Language
。
转到Settings->General->International->Region Format
进行更改并再次测试。
我希望它有所帮助。
编辑:使用Language
不是一个好主意。 iOS没有翻译成那么多语言。但是它支持很多区域格式。
示例:我住在保加利亚。 iOS未翻译为保加利亚语,因此实际菜单和应用程序使用英语,但由于我已将Region Format
设置为保加利亚,因此所有日期格式,日期标签和货币标签都是保加利亚语。
答案 2 :(得分:0)
使用Desdenova的答案来获得有效的代码。
要测试它(例如截取屏幕截图),您需要更改设备的语言和区域格式。
如果您只更改设备的语言,它可能会稍微更改日期,但月份和日期(名称)仍将采用区域格式的语言。