13

アプリで UIDatePicker を作成し、いくつかの言語もサポートしています。私の UIDatePicker は Interface Builder で作成され、UIDatePicker をカスタマイズできるように別のローカライズ XIB を作成しました。

IB で「Locale」オプションを設定しても、何も起こらないように見えます。Locale と NSCalender を使用してプログラムで DatePicker を変更しようとしても、次のコードでは何も実行されません。

NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"es_ES"];
datePicker.locale = locale;
datePicker.calender = [locale objectForKey:NSLocaleCalender];

これにより、英語のピッカーが生成されます。

しかし、これは本当に奇妙なことです。「今日」の単語が翻訳されます。添付のスクリーンショットに見られるように。(OK、画像の投稿は許可されていません。しかし、英語の「May」と「Ajourd'hui」と書かれた「Today」を含む日付と時刻のピッカーを想像してみてください。

私が読んだことに基づいて、 UIDatePicker をプログラムで追加してもあまり役に立たないようです。

4

5 に答える 5

12

さらに調査した結果、これは実際には iPhone の言語設定では処理されません。UIDatePicker は、言語ではなく「地域形式」設定に基づいて自動的にローカライズされます。日付がローカライズされているため、これは奇妙です。ピッカーのローカライズは、地域形式ではなく iDevice の言語にリンクされていると思われます。

とにかく、シミュレーターでローカライズされた DatePicker をシミュレートするには:

  1. アプリを終了し、[設定] に移動します。
  2. 一般を選択
  3. インターナショナルを選択
  4. 一番下のオプション、Region Format を選択します。
  5. 目的のリージョンに変更します。
  6. アプリを再起動すると、新しい UI ピッカーが表示されます。
于 2010-05-27T04:39:22.127 に答える
3

iOS 6 の時点で、UIDatePicker はロケール情報についてデバイスの設定を参照しなくなりました。手動で設定する必要があります。そうしないと、デフォルトのロケールが使用されます。NSLocale

この回答を参照してください: https://stackoverflow.com/a/12975871/1128896

簡単な解決策:

   datePicker.locale = [NSLocale currentLocale];

更新しました

UIDatePicker でロケールを設定できるようになりましたが、デフォルトでは、特定の言語ではなく「デフォルト」に設定されています。「デフォルト」は、デバイスのロケールを確認し、そのロケールに設定します。(以下の Dave DeLong のコメントを参照してください)。したがって、ほとんどの新しいプロジェクトは、この変更の影響を受けません。

iOS 6 に移行する古いプロジェクトで作業している場合、xibs で作成された UIDatePickers のロケールがデフォルトではなく「英語」または別の言語に設定されていることがあります。(iOS6 より前の私の古いプロジェクトはすべて、この動作に従っていることがわかりました)。これを修正するには、IB でロケールを「デフォルト」に変更するだけです。

于 2013-04-19T23:41:25.907 に答える
1

私が理解しているのはUIDatePicker、デバイスが設定されているロケールで が自動的に表示されるということです。オーバーライドする方法はわかりませんが、おそらくオーバーライドすべきではないようです。

于 2010-05-24T03:14:36.867 に答える
0

私の経験から、「今日」は info.plist の設定に従っています。何らかの理由で、彼らはこれを適応させるのを忘れていました。

于 2010-11-09T21:33:26.850 に答える