Локализовать метку UIDatePicker «Сегодня»

#ios #uikit #uidatepicker

#iOS #uikit #uidatepicker

Вопрос:

Как я могу локализовать метку «сегодня» в режиме даты и времени UIDatePicker ?

Мне нужен русский язык, поэтому я установил UIDatePicker locale, установил region и language в настройках устройства, установил «Localization native development region» и свойство «Localizations» в info.plist значение «ru», но это не имело никакого значения — все метки месяцев и дней являются русскими, но метка «сегодня» по-прежнему «сегодня».

Ответ №1:

С помощью следующего кода весь текст в средстве выбора даты был локализован, включая строку «Сегодня»:

 //Localizing the datepicker
    NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:NSLocalizedString(@"en_US",nil)];
    datePicker.locale = locale;
    datePicker.calendar.locale = locale;
  

Здесь я использую NSLocalizedString для замены «en_US» (ключ) на соответствующий идентификатор локали (значение).Это делается с помощью соответствующего файла Localizable.strings для той конкретной локали / языка, на котором вам нужно добавить:

 /*==== Locale identifier ====*/   
"en_US"="it_IT";
  

Здесь я использовал итальянский (Италия).

Комментарии:

1. Здесь datepicker.calendar.locale=locale; является избыточным

Ответ №2:

Проблема была решена путем создания локализованного ресурса .xib (просто добавьте локализацию в IB в .xib с помощью DatePicker и больше ничего не делайте).

Может кто-нибудь объяснить, почему?

Ответ №3:

Да, есть два компонента для локализации. первый — это ваш файл strings.lproj, который содержит ваши пары ключ-значение для каждого языка, а второй, и не менее важный, — это локализованные xibb или раскадровки. Эти два файла автоматически связываются друг с другом с помощью Xcode. Итак, требуется локализуемый файл ru.lproj.strings, а также локализованный русский Xib в вашем случае.