How to programmatically build NSArray of localized calendar month names?
-
20-12-2020 - |
Question
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 NSCalendar to programmatically build this NSArray of months based on the user's locale. What is the best way to do this?
Solution
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];
OTHER TIPS
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)")
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow