Кто-нибудь сталкивался? А то у меня всегда английский и am pm // если formatter.locale = Locale(identifier: “ru_RU”) … разумеется не будет изменяться … как вот сделать функцию, которая будет подставлять current? Подскажите, пожалуйста) ДатаПикер не из конструктора, а программно создается.
[решено] Лoкализация UIDatePicker-a
У вас тот язык, который в симуляторе стоит. На устройстве всё будет норм. Чтобы посмотреть в симуляторе: в ИксКоде меню/product/scheme/edit scheme/
далее в пунктах aplication language и aplication region выставляете нужные. Сразу создавайте новую схему для каждого языка и потом переключайте быстро в окошке возле кнопок запуск/остановка приложения.
у меня и стоит по умолчанию… но не переключается даже на реальном устройстве… а датаПикер не из конструктора, а создается кодом…
Без разницы. По дефолту в симуляторе стоит америка, калифорния вроде Даты в пикере принимают вид в зависимости от локали (кстати, тоже самое про время: не обращайте внимание на тайм зон - она от локали в симуляторе зависит). Пользуйтесь схемами и будет понятно, как будет выглядеть пикер в разных странах, а он может отличаться по размерам (разные форматы дат) и в итоге не влазить (написание даты) в существующий интерфейс.
Спасибо, но у меня ДатаПикер не из конструктора, а программно создается. И нужно, чтобы он настраивался в зависимости от локализации пользователя… надо что-то дописать, вменяемой инфы нигде нет … а та, что есть, пока не сработала ((
let datePicker = UIDatePicker(frame: .zero)
datePicker.minimumDate = currentDate
datePicker.datePickerMode = .dateAndTime
datePicker.minuteInterval = 1
Можно программно задать конкретно Россию, но тогда всегда будет только русская, не то…
Я же вам отвечал: все локальные данные (даты, время, валюта и т.п.) и так настраиваются автоматом у каждого пользователя в зависимости от локали системы пользователя. Заставлять американца читать дату в нашем формате - издевательство ))
Чтобы посмотреть в симуляторе как будут выглядеть все локальные данные, измените регион в меню/product/scheme/edit scheme/ Это не зависит от того, каким способом создан пикер - данные отобразятся в том виде, как будут выглядеть для установленной локали.
Тогда подскажите, пожалуйста, почему у меня datePicker на английском языке, хотя само устройство полностью на русском? (это на реальном устройстве)
Возможно вам надо дописать параметры, которые стоят подефолту при создании пикера через сториборд, например: datePicker.locale = default
- должно помочь. У меня при создании пикеров через сториборд все локали отображаются как надо.
сделала полный ресет айфона, переустановила приложение, всё равно пикер на английском.
создала новый проект, чистый вьюКонтроллер + пикер из конструктора, а не программный, всё равно на английском.
resetSystemTimeZone() и Locale.autoupdatingCurrent тоже не помогли, что делать то блин ((
Мне кажется я знаю куда копать: в коннекте какая локализация то? Если ничего не меняли, то может по дефолту стоят английская! Поскольку другой нет (одна же локализация настроена в коннекте?), то и Пикер соответсвует единственной розданной локализации.
И на телефоне и в сдк, даже когда я специально создаю Scheme с русской локализацией, языком и тд. Всё равно на английском.
А у меня коннекта нет. Акк разработчика есть, но я там ничего не трогала ещё и тестирую пока устанавливая на телефон приложение.
Попробуй поставить breakpoint вывести в терминал значение покера, потом программно поменять локализация и снова распечатать
ох-хо-хо ну не знаю. Сейчас под рукой нет ИксКода, но очевидно, что если ставили только через ИксКод, то это связано с дефолтными настройками проекта - смотрите там. И поэтому, в том числе, лучше всегда для себя принять правило дефолтного языка - английского и от него соответствующие локализации.
Попробуйте тогда так: просто добавьте русскую локализацию в ИксКоде. Соответственно все файлы для локализации продублируются - в них и так будет русский (как исходники). И уже с локализацией установить - должно работать. Но если захотите добавить английский, то надо будет именно исходник менять, а потом и локализацию на русский повторно делать - это именно то, про что я говорил, что потом мозг сломаете, если изначально не английскую версию делаете (именно так на первом приложении споткнулся и много времени и сил потерял на переделку). Можно конечно дополнительно добавить английский язык как локализацию, но это конечно очень коряво будет и тут в нормальной работе локализации я не уверен.
забыл сказать: естественно (по-моему) должны быть добавлены локализации в проекте для соответствующих языков