Вопрос

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?

Это было полезно?

Решение

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)")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top