Как программно построить NSArray из локализованных названий календарных месяцев? - PullRequest
5 голосов
/ 25 февраля 2011

Я нахожусь в процессе локализации / интернационализации моего приложения для iPhone и у меня есть вопрос.В одном месте моего приложения я показываю список 12 месяцев года.Поскольку он в настоящее время не локализован, у меня просто месяцы январь-декабрь жестко запрограммированы в NSArray.Я хотел бы использовать NSCalendar, чтобы программно построить этот NSArray месяцев, основываясь на локали пользователя.Каков наилучший способ сделать это?

Ответы [ 3 ]

12 голосов
/ 25 февраля 2011

Вы можете получить локализованное название месяца из NSDateFormatter:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
for ( int i = 0; i < 12; ++i ) {
    NSString *monthName = [[df monthSymbols] objectAtIndex:i];
    [...]
}
[df release];
2 голосов
/ 16 сентября 2015

Нет необходимости выполнять итерацию, просто получите месяцы напрямую:

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

Swift:

let dateFormatter = NSDateFormatter()
print("Months = \(dateFormatter.monthSymbols)")
1 голос
/ 13 мая 2016

Swift версия .... пробовал на детской площадке

Укажите локаль или используйте 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"
...