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 программно не очень помогает.
Ответы
Ответ 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. По некоторым причинам они забыли адаптировать это.