kovpas
@kovpas

IPhone localization — склонение даты?

Доброе время суток.


Столкнулся с проблемой — NSDateFormatter не умеет склонять даты (а с чего бы ему уметь, правда?). То есть, если я подсовываю ему формат вида «MMMM yyyy», то на выходе получаю «января 2011». Какие есть варианты решения? И, да, очень не хочется делать код языкозависимым, поэтому вариант с NSDictionary<января -> Январь> хотелось бы рассматривать в последнюю очередь.
  • Вопрос задан
  • 7743 просмотра
Решения вопроса 1
iStyx
@iStyx
NSDateFormatter *mf = [[[NSDateFormatter alloc] init] autorelease];
NSArray *months = [mf standaloneMonthSymbols];


В массиве months — названия месяцев в виде «Январь, Февраль, ...» в зависимости от текущей локали.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Kentzo
@Kentzo
Смотри метод 'dateFormatFromTemplate:options:locale:' DateFormatter'а

NSString *format = [NSDateFormatter dateFormatFromTemplate:@«MMMMyyyy» options:0 locale:[NSLocale currentLocale]]
NSString *dateString = [aDateFormatter stringFromDate:aDate];

А вообще, для stand-alone имен (читай без падежей) предназначен символ L (http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns)
Ответ написан
@CHiPloveNY
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"LLLL"]; //Сентябрь
Ответ написан
Комментировать
Если не хотите реализовывать зависимые от языков механизмы, то представляйте даты в виде чисел для дня, месяца и года. Единственное, что надо будет учесть в настройках вашего приложения в этом случае, это порядок следования день-месяц-год и месяц-день-год.
Ответ написан
Похоже в iOS стандартного решения нет.
Странно, что Apple не догадался сделать, как Microsoft в .NET, где формат месяца зависит от наличия в строке числа, то есть
'd MMMM yyyy' выдаст '12 Января 2011', а
'MMMM yyyy' выдаст 'Январь 2011'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы