[решено] Лoкализация UIDatePicker-a


#1

Кто-нибудь сталкивался? А то у меня всегда английский и am pm // если formatter.locale = Locale(identifier: “ru_RU”) … разумеется не будет изменяться … как вот сделать функцию, которая будет подставлять current? Подскажите, пожалуйста) ДатаПикер не из конструктора, а программно создается.


#2

У вас тот язык, который в симуляторе стоит. На устройстве всё будет норм. Чтобы посмотреть в симуляторе: в ИксКоде меню/product/scheme/edit scheme/ далее в пунктах aplication language и aplication region выставляете нужные. Сразу создавайте новую схему для каждого языка и потом переключайте быстро в окошке возле кнопок запуск/остановка приложения.


#3

у меня и стоит по умолчанию… но не переключается даже на реальном устройстве… а датаПикер не из конструктора, а создается кодом…


#4

Без разницы. По дефолту в симуляторе стоит америка, калифорния вроде :wink: Даты в пикере принимают вид в зависимости от локали (кстати, тоже самое про время: не обращайте внимание на тайм зон - она от локали в симуляторе зависит). Пользуйтесь схемами и будет понятно, как будет выглядеть пикер в разных странах, а он может отличаться по размерам (разные форматы дат) и в итоге не влазить (написание даты) в существующий интерфейс.


#5

Если актуален вопрос вечером отвечу. Если решили,то предупреди


#6

Да, актуален.
Спасибо)


#7

Стрелкой пометил. Делается это все при выделении DatePicker
Раздел “Locale”


#8

Спасибо, но у меня ДатаПикер не из конструктора, а программно создается. И нужно, чтобы он настраивался в зависимости от локализации пользователя… надо что-то дописать, вменяемой инфы нигде нет … а та, что есть, пока не сработала ((

let datePicker = UIDatePicker(frame: .zero)
    datePicker.minimumDate = currentDate
    datePicker.datePickerMode = .dateAndTime
    datePicker.minuteInterval = 1

Можно программно задать конкретно Россию, но тогда всегда будет только русская, не то…


#9

Я же вам отвечал: все локальные данные (даты, время, валюта и т.п.) и так настраиваются автоматом у каждого пользователя в зависимости от локали системы пользователя. Заставлять американца читать дату в нашем формате - издевательство ))

Чтобы посмотреть в симуляторе как будут выглядеть все локальные данные, измените регион в меню/product/scheme/edit scheme/ Это не зависит от того, каким способом создан пикер - данные отобразятся в том виде, как будут выглядеть для установленной локали.


#10

Тогда подскажите, пожалуйста, почему у меня datePicker на английском языке, хотя само устройство полностью на русском? (это на реальном устройстве)


#11

Возможно вам надо дописать параметры, которые стоят подефолту при создании пикера через сториборд, например: datePicker.locale = default - должно помочь. У меня при создании пикеров через сториборд все локали отображаются как надо.


#12

сделала полный ресет айфона, переустановила приложение, всё равно пикер на английском.

создала новый проект, чистый вьюКонтроллер + пикер из конструктора, а не программный, всё равно на английском.

resetSystemTimeZone() и Locale.autoupdatingCurrent тоже не помогли, что делать то блин ((


#13

Так еще раз, проблема возникает когда ты приложение запускаешь на телефоне или в сдк?


#14

Мне кажется я знаю куда копать: в коннекте какая локализация то? Если ничего не меняли, то может по дефолту стоят английская! Поскольку другой нет (одна же локализация настроена в коннекте?), то и Пикер соответсвует единственной розданной локализации.


#15

И на телефоне и в сдк, даже когда я специально создаю Scheme с русской локализацией, языком и тд. Всё равно на английском.

А у меня коннекта нет. Акк разработчика есть, но я там ничего не трогала ещё и тестирую пока устанавливая на телефон приложение.


#16

Попробуй поставить breakpoint вывести в терминал значение покера, потом программно поменять локализация и снова распечатать


#17

ох-хо-хо ну не знаю. Сейчас под рукой нет ИксКода, но очевидно, что если ставили только через ИксКод, то это связано с дефолтными настройками проекта - смотрите там. И поэтому, в том числе, лучше всегда для себя принять правило дефолтного языка - английского и от него соответствующие локализации.

Попробуйте тогда так: просто добавьте русскую локализацию в ИксКоде. Соответственно все файлы для локализации продублируются - в них и так будет русский (как исходники). И уже с локализацией установить - должно работать. Но если захотите добавить английский, то надо будет именно исходник менять, а потом и локализацию на русский повторно делать - это именно то, про что я говорил, что потом мозг сломаете, если изначально не английскую версию делаете (именно так на первом приложении споткнулся и много времени и сил потерял на переделку). Можно конечно дополнительно добавить английский язык как локализацию, но это конечно очень коряво будет и тут в нормальной работе локализации я не уверен.


#18

забыл сказать: естественно (по-моему) должны быть добавлены локализации в проекте для соответствующих языков :slight_smile:


#19

как успехи?__________


#20

Пока никак, особо не было времени из-за праздников. Займусь на днях :hugs: