0

特定のロケール識別子で NSLocale を初期化しようとしている場合、それが正当な識別子であるかどうかをどのように確認できますか? 私がどんな識別子を渡しても、それがゴミであっても、NSLocale は何かに初期化されます。

たとえば、「ar_NO」、言語がアラビア語、(無効な) 国コードが NO のロケールを渡すと、得られる NSLocale オブジェクトは正当に見えます。たとえば、-[NSCalendar firstWeekday]そのロケールのカレンダーから呼び出すと、月曜日が返されます。私の質問は、それはどこから来ているのですか? 指定された識別子を使用できない場合、iOS は別のロケールにフォールバックしますか? ベースの「ar」にフォールバックすると思いますが、最初の「ar」は平日なので、そうではありません。

注: 識別子が ISO BCP 47 仕様で指定されていることは知っており、[NSLocale availableLocaleIdentifiers]関数についても知っていますが、そのリストにない識別子を使用しても NSLocale が取得されるため、実際には役に立ちません。

誰にも考えはありますか?前もって感謝します

4

1 に答える 1

0

指定された NSLocale が無効な場合、ローカルのデフォルト設定にフォールバックすると思います。ローカル デバイスの設定を変更してみて、どうなるか見てみましょう。無効なロケールを設定したら、[NSLocale currentLocale]; を出力します。そしてそれが何を返すかを見てください。

于 2012-09-19T21:51:24.587 に答える