🎉

UIDatePickerViewをcountDownTimerモードで使うとローカライズが利かない場合の対処

2022/06/29に公開

時間を入力するのに便利なUIPickerViewのcountDownTimerモード。
ふと気がつくと「時間」と「分」のラベルが「hour」と「min」のままで、ローカライズされていない。

というわけで、ローカライズの方法をメモ。

UIDatePickerViewとiPhoneの設定を確認する

まずInterfaceBuilderでDatePickerViewのLocaleプロパティを確認。これは「Default」になっているので現在選択されている日本で表示されるはず。

念のためにコードでもlocaleを現在設定されている値にしてみたが変わりなし。

self.datePickerView.locale = Locale.autoupdatingCurrent

もちろんiPhoneの設定にある言語と地域は日本語と日本に設定されている。

ちなみにcountDownTimerモードでなく普通に日付を選択する画面にすると日本語になる。

なぜcountDownTimerモードの時だけ英語表記のままなのか?

Localized resources can be mixed ???

ググって出てきたのが下記のページ。

https://tutorialmeta.com/question/changing-locale-of-uidatepicker-in-countdown-timer-mode

理由まではわからないが、info.plistでLocalized resources can be mixedをYESにすれば良いらしい。

やってみた。

結果、ローカライズされた。

補足

プロジェクトのLocalizationでBaseとEnglish - Development Languageになっているのがヒント?
今回は特に何もしていないけどキチンとローカライズするとLocalized resources can be mixed使わなくてもローカライズされて表記されるということ?
いつも英語のままで作ってラベルにもボタンにも日本語使ってなかったから気づかなかったのかもしれない…。

Discussion