How to programmatically build NSArray of localized calendar month names?
I am in the process of localizing/internationalizing my iPhone app and have a question. In one place in my app, I show a list of the 12 months of the year. As it is in its currently non-localized state, I simply have the months January - December hard-coded into an NSArray. I'd like to use NSCalen开发者_开发问答dar to programmatically build this NSArray of months based on the user's locale. What is the best way to do this?
You can get the localized name of the month from the NSDateFormatter:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
for ( int i = 0; i < 12; ++i ) {
NSString *monthName = [[df monthSymbols] objectAtIndex:i];
[...]
}
[df release];
Swift version....tried in playground
Provide the locale or use 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)
RESULT
"["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"]\n"
No need to do the iteration, just get the months directly:
NSDateFormatter dateFormatter = [[NSDateFormatter alloc] init];
NSLog(@"Months = %@", dateFormatter.monthSymbols);
Swift:
let dateFormatter = NSDateFormatter()
print("Months = \(dateFormatter.monthSymbols)")
精彩评论