Изменить язык для дня недели и месяца NSDate

Я хочу отображать дату следующим образом: рабочий день 7 месяцев. Я сделал это, и у меня правильный синтаксис.

NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEEE dd MMMM"];
[df setTimeZone:[NSTimeZone localTimeZone]];

Зарегистрированный результат: суббота, 16 марта. Я просто хочу, чтобы свидание было французским, а не английским. Я пытаюсь установить местный часовой пояс, но это ничего не меняет. У вас есть идея, как это сделать?


person Seb    schedule 16.03.2013    source источник


Ответы (2)


Вы устанавливаете язык средства форматирования даты, используя соответствующий объект NSLocale.

Кроме того, будьте осторожны с такими жестко запрограммированными форматами даты. Вашим пользователям может не нравиться видеть даты в таком формате, поэтому вам следует сначала запустить строку формата через +[NSDateFormatter dateFormatFromTemplate:options:locale:]. На сессии WWDC 2012 «Советы и рекомендации по интернационализации» было много полезной информации об этом.

person Dave DeLong    schedule 16.03.2013

инициализировать локаль с помощью идентификатора. вы можете получить все доступные идентификаторы из

[NSLocale availableLocaleIdentifiers];

я полагаю, что @"fr_BI" является одним из французских идентификаторов

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_BI"];
[dateFormatter setLocale:locale];
person tzl    schedule 16.03.2013
comment
Чтобы выбрать соответствующий французский идентификатор, используйте следующий код: NSArray * bb = [NSLocale availableLocaleIdentifiers]; NSPredicate * bPredicate = [предикат NSPredicateWithFormat: @SELF начинается с [c] 'fr']; NSArray * beginWithFr = [bb filteredArrayUsingPredicate:bPredicate]; for (NSString * elt in beginWithFr) { NSLog(@%@ : %@,elt, [[[NSLocale alloc] initWithLocaleIdentifier:elt] localizedStringForLocaleIdentifier:elt]); } - person XLE_22; 13.03.2018