2011-02-25 52 views
5

我正在本地化/国际化我的iPhone应用程序,并有一个问题。在我的应用程序中的一个地方,我列出了今年的12个月的列表。因为它处于目前非本地化的状态,所以我只需将1月至12月的数月硬编码为NSArray。我想使用NSCalendar以编程方式基于用户的区域设置构建这个NSArray的月份。做这个的最好方式是什么?如何以编程方式构建本地化日历月份名称的NSArray?

回答

11

你可以从NSDateFormatter月份的本地化名称:

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
for (int i = 0; i < 12; ++i) { 
    NSString *monthName = [[df monthSymbols] objectAtIndex:i]; 
    [...] 
} 
[df release]; 
+4

爽!可惜它不能在模拟器中工作,一旦我认为它是一种错误的方法...直到我在设备上尝试它... tks Volker – meronix 2011-02-25 08:22:31

+0

感谢提到它不能在模拟器中工作,我疯了! – 2013-02-15 06:51:57

2

不需要做迭代,刚刚获得直接的几个月里:

NSDateFormatter dateFormatter = [[NSDateFormatter alloc] init]; 
NSLog(@"Months = %@", dateFormatter.monthSymbols); 

斯威夫特:

let dateFormatter = NSDateFormatter() 
print("Months = \(dateFormatter.monthSymbols)") 
0

斯威夫特版....在游乐场试过

提供的语言环境,或者使用currentlocale

var str = "Hello, playground" 

var formatter = NSDateFormatter() 

formatter.locale = NSLocale(localeIdentifier: "sv_SE") 
//formatter.locale = NSLocale.currentLocale() // use this to find it automatically 

print(formatter.monthSymbols) 

结果

"["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"]\n"