Подтвердить что ты не робот

UIDatePicker - локализация проблем

Я создал UIDatePicker в своем приложении, и у меня также есть поддержка нескольких языков. Мой UIDatePicker создан в Interface Builder, и я создал отдельный XIS локализации, чтобы настроить свой UIDatePicker.

Настройка опции "Локаль" в IB, похоже, ничего не делает. Попытка изменить свой DatePicker программно с помощью Locale и NSCalender также ничего не делает с помощью следующего кода:

NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"];
datePicker.locale = locale;
datePicker.calender = [locale objectForKey:NSLocaleCalender];

В результате получается английский сборщик.

Здесь действительно странно. Слово "Сегодня" переведено. Как видно на прилагаемом скриншоте. (ОК, мне не разрешено размещать изображения, но представьте себе сборщик даты и времени с "май" на английском и "сегодня", написанный "Ajourd'hui".

Основываясь на том, что я читал, добавление UIDatePicker программно не очень помогает.

4b9b3361

Ответ 1

После дальнейшего изучения это фактически не обрабатывается языковыми настройками iPhone. UIDatePicker автоматически локализуется на основе параметра "Формат региона", а не языка. Это странно, потому что даты локализованы, поэтому вы думаете, что локализация сборщика будет связана с языком iDevice, а не с форматом Region.

Во всяком случае, для имитации локализованного DatePicker в симуляторе:

  • Закройте приложение, перейдите в раздел "Настройки".
  • Выберите "Общие"
  • Выберите Международный
  • Выберите нижний параметр, Region Format.
  • Перейдите в нужный регион.
  • Перезагрузите приложение и посмотрите новый пользовательский интерфейс!

Ответ 2

Начиная с iOS 6 UIDatePicker больше не смотрит на настройки устройства для информации о локали. Вы должны установить NSLocale вручную или использовать локаль по умолчанию.

Смотрите этот ответ: fooobar.com/questions/298761/...

Простое решение:

   datePicker.locale = [NSLocale currentLocale];

Забастовкa > Обновление

В то время как локаль теперь может быть установлена ​​на UIDatePicker, по умолчанию она устанавливается на "по умолчанию", а не на какой-либо конкретный язык. "По умолчанию" проверяет локаль устройства и устанавливает его. (см. комментарий Dave DeLong ниже). Поэтому на эти новые изменения не должно влиять большинство новых проектов.

Если вы работаете с старыми проектами, перейдя на iOS 6, вы можете обнаружить, что UIDatePickers, созданные в xibs, по умолчанию для своего локали соответствуют "английскому" или другому языку, а не "по умолчанию", (Я нашел все мои старые проекты, pre iOS6, следил за этим поведением). Чтобы исправить это, просто измените локаль на "По умолчанию" в IB.

Ответ 3

То, что мне дано понять, - это то, что UIDatePicker автоматически отображается в локали, на которой установлено устройство. Я не уверен, как его переопределить, но похоже, что вы, вероятно, не должны переопределять его.

Ответ 4

По моему опыту, "Сегодня" соответствует настройкам, которые у вас есть в вашем info.plist. По некоторым причинам они забыли адаптировать это.