UIDatePicker - Проблема Локализации

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

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

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

это приводит к английскому сборщику.

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

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

4 ответов


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

в любом случае, чтобы имитировать локализованный DatePicker в симуляторе:

  1. выйдите из приложения, перейдите в Настройки.
  2. Выберите Общие
  3. Выберите Международные
  4. выберите нижний вариант, формат регионе.
  5. перейдите в нужную область.
  6. перезапустите приложение и посмотрите новый UI Picker!

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

см. этот ответ:https://stackoverflow.com/a/12975871/1128896

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

   datePicker.locale = [NSLocale currentLocale];

Обновлено

хотя локаль теперь может быть установлена на UIDatePicker, по умолчанию она установлена на "Default" вместо любой конкретный язык. 'Default' проверит локаль устройства и установит себя на это. (см. комментарий Дэйва Делонга ниже). Таким образом, большинство новых проектов не должны быть затронуты этим изменением.

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


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


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