web-dev-qa-db-ja.com

NSLocale PreferredLanguages objectAtIndex:0は常に「en」を返します

シミュレータの言語はすでに日本語に変更されていますが、なぜ_[[NSLocale preferredLanguages] objectAtIndex:0]_ 常に return _"en"_?

優先言語も地域も「en」とは関係ありません。_"en"_はどこから来たのですか?

Here is screenshot

_[[NSLocale preferredLanguages] objectAtIndex:_2 _]_を取得しようとしましたが、クラッシュすると*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (2) beyond bounds (1)が表示されます

シミュレーターに言語が設定されていないということですか?とても奇妙!

これは、iOS8.1 /7.1でXcode6.1にアップグレードする前には発生しませんでした。

その間、私のiPhone 5で同じことを試しましたが、コンソールは正しいことを出力しました。

なぜそんなに奇妙なのですか?誰かがそのような問題を抱えていますか?

更新:1

  • Xcodeとシミュレータを削除し、Macストアからダウンロードして再インストールします。
  • 新しいシンプルなプロジェクトを作成し、シミュレーターの言語を変更します
  • それでも常に「en」を取得します。

ああ!どうしましたか....


更新:2

  • 今日、HDを再フォーマットして真新しいYosemiteを再インストールしました
  • Xcode6.1をダウンロードする
  • 新しい単純なデフォルトプロジェクトを開始します
  • これらのコードを入れてください
  • シミュレーターの言語の変更/追加、日本語、オランダ語、英語、
  • 実行
  • ああ、神様!再び_"en"_だけを手に入れました、日本語と英語が見つかりません!

なぜまだ1つの_"en"_しか見つからなかったのですか?日本語と英語はどこにありますか?

シミュレーターはどうなりましたか?

見逃したことはありますか?

25
S1U

これはバグです。それは私を夢中にさせていました。 Appleはすでにそれを知っています。

この回答を参照してください:

iOS8.1シミュレーターは、ドイツ語のハードウェアキーボードにもかかわらず、常にUSキーボードレイアウトを使用します

この:

iOS 8.1シミュレータのローカリゼーションが壊れています(NSLocalizedString)

(回答には、スキーマを変更する一時的な修正があります)

最高、ジジ

29
J.Williams

私のiOSシミュレーターは、突然"en"ではなく"en-US"の報告を開始したため、この問題はまだ発生しているようです。

で再現:

  • Xcode 8.2.1、iOS 10
  • Xcode 9.4.1、iOS 11

私は言語設定に入り、英語と米国が選択されました。カナダとフランス語を選択して、"fr-CA"を取得しました。それから私はそれを元に戻し、再び"en-US"を取得し始めました。それ以来、"en"の問題を再現できませんでした。

したがって、[NSLocale preferredLanguages]の値は、言語と地域のペアであると想定して渡すことはできないようです。

0
pkamb