私はこれらの方法を使用します
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"ar"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
実行時 (ユーザーがこれらのメソッドを呼び出すボタンをタップしたとき) にアプリのローカリゼーションを強制的に変更すると、完全に機能しますが、これらのメソッドは XIB 全体を新しい言語に切り替えるのに十分ではありません (これは私の言語にあります)。ケース、アラビア語)、HomeViewController.xib
XCode のディレクトリとして開く名前の XIB が 1 つあるとします。これは、2 つのファイルのディレクトリです。HomeViewController.xib (English)
各 HomeViewController.xib (Arabic)
ファイルには、言語に応じて独自のレイアウトがあります (たとえば、アラビア語の xib には右から左へのコントロール layout があります。 .)、私はremoveFromSuperView
現在のコントローラーのすべてのコントロールを呼び出してからコントロールを呼び出そうとしましaddSubView
たが、何も変更されていません。アプリはまだ英語の XIB を表示しています。
その言語ボタンがタップされたときに、実行時にアプリで XIB を正しいローカライズされたものに変更するにはどうすればよいですか。
ps システム設定でシミュレーター全体のローカライズを変更すると、アプリは期待どおりに動作します。つまり、正しいローカライズされた XIB が表示されます。