アプリが表示される言語/ロケールをユーザーが選択できるようにすることに興味があります。適切なバンドルをロードする方法、正しい文字列ファイルを選択する方法などを理解しました。制御できません。たとえば、コントロールを切り替えます。
ユーザーの現在のシステム設定ではなく、このアプリが特定の言語で動作する必要があることをシステムに伝える方法はありますか?
アプリが表示される言語/ロケールをユーザーが選択できるようにすることに興味があります。適切なバンドルをロードする方法、正しい文字列ファイルを選択する方法などを理解しました。制御できません。たとえば、コントロールを切り替えます。
ユーザーの現在のシステム設定ではなく、このアプリが特定の言語で動作する必要があることをシステムに伝える方法はありますか?
最もハッキーな方法はNSUserDefaults
次のとおりです。ロケールは(文字列としてのロケールID)によって決定され、言語は(言語IDの配列)AppleLocale
の最初の一致によって決定されます。アプリは、アプリに対してのみAppleLanguages
これらのデフォルトをオーバーライドできます。アプリによってオーバーライドされているかどうかを確認するには、のようなものを使用できます。オーバーライドを削除するには、を使用します。[defaults persistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]] objectForKey:@"AppleLocale"]
-removeObjectForKey:
どちらの方法でも、言語を変更するときはおそらくアプリを再起動する必要があります。OS XおよびiOSアプリは、実行時に言語を変更するように設計されていません(OS Xでは、新しく起動されたアプリのみが言語の変更を認識します。iOSでは、システムは言語を変更するためにすべてのアプリを強制終了します)。
この機能を追加して、開発/テストで言語を簡単に切り替えられるようにしました。これがAppStoreのレビュープロセスに失敗するかどうかはわかりません。