ユーザーがアプリ内からアラビア語と英語を切り替えるオプションを追加しようとしています(iPhone全体の言語をリセットする必要はありません)。AppDelegateでこのメソッドを使用することで、正しく行うことができました。 .mファイル:
-(void)switchTolanguage:(NSString *)lang{
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:lang] forKey:@"AppleLanguages"];
NSBundle *bnd = [NSBundle bundleWithPath:[[NSBundle mainBundle]pathForResource:lang ofType:@"lproj" ]];
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:bnd];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
self.window.rootViewController = initViewController;
}
メソッドをテストするためにアプリのビューコントローラーの1つに2つ配置UIButtons
しましたが、うまく機能UILabels
しました。新しくロードされた(ローカライズされた)ストーリーボードのすべて、文字列などが正しい選択言語で表示されますが、1つの例外があります:新しいロードされたストーリーボードは、ローカライズされた画像を取得(ロード)しません。古いストーリーボード(古いバンドル)の画像を取得します。つまり、アプリが現在英語のバンドルで実行されており、ユーザーが言語をアラビア語に切り替えるボタンをタップした場合、アプリ正しいアラビア語のコントロールと文字列で表示されますが、英語の画像では、英語に戻すとすべて問題ありません(英語の文字列、ラベル、画像...)
ストーリーボードのローカライズ方法は次のとおりです。
各画像のローカライズ方法は次のとおりです。
ユーザーがアプリの言語を切り替えたときに正しいバンドル画像を読み込むにはどうすればよいですか?
更新:これが私が言っていることのサンプルプロジェクトへ
のリンクです、サンプルを実行すると、アプリ内から言語を変更すると、画像が変更できないことに気付くでしょう...そしてまた、ローカライズされたストーリーボードは、デザインエディタに適切な画像をロードしません...
PSは、顧客の要件であるため、このようなシナリオを使用して言語を切り替える理由についてコメントを追加しません。