UIDatePicker - Локализация проблемы - PullRequest
11 голосов
/ 24 мая 2010

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

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

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

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

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

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

Ответы [ 4 ]

10 голосов
/ 27 мая 2010

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

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

  1. Выйдите из приложения, перейдите в «Настройки».
  2. Выберите Общие
  3. Выберите международный
  4. Выберите нижнюю опцию, Формат области.
  5. Перейдите в нужный регион.
  6. Перезапустите ваше приложение и увидите новый пользовательский интерфейс!
3 голосов
/ 20 апреля 2013

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

См. Этот ответ: https://stackoverflow.com/a/12975871/1128896

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

   datePicker.locale = [NSLocale currentLocale];

Обновлено

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

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

1 голос
/ 24 мая 2010

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

0 голосов
/ 10 ноября 2010

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

...