Столкнулся с проблемой — NSDateFormatter не умеет склонять даты (а с чего бы ему уметь, правда?). То есть, если я подсовываю ему формат вида «MMMM yyyy», то на выходе получаю «января 2011». Какие есть варианты решения? И, да, очень не хочется делать код языкозависимым, поэтому вариант с NSDictionary<января -> Январь> хотелось бы рассматривать в последнюю очередь.
Если не хотите реализовывать зависимые от языков механизмы, то представляйте даты в виде чисел для дня, месяца и года. Единственное, что надо будет учесть в настройках вашего приложения в этом случае, это порядок следования день-месяц-год и месяц-день-год.
В таком случае мне представляется выходом лишь выбор меньшего из зол. Реализовать код, который отвечает за языковые особенности в виде изолированного factory-класса. Который возвращает по запросу объект для форматирования даты для того или иного языка. Если запрашиваемый язык не поддерживается, то использовать английский, либо бросать исключение, в зависимости от ваших предпочтений.
Похоже в iOS стандартного решения нет.
Странно, что Apple не догадался сделать, как Microsoft в .NET, где формат месяца зависит от наличия в строке числа, то есть
'd MMMM yyyy' выдаст '12 Января 2011', а
'MMMM yyyy' выдаст 'Январь 2011'