私はiOSアプリを書いています。そこでは、ユーザーがiPhoneやiPadの言語に関係なくUI言語を変更できるようにしたいと思っています。問題は、言語が変更されたときに現在表示されているビューに適切なNIBファイルを再ロードする方法と、NSLocalizedString
が適切に機能するように適切な.stringsファイルをロードする方法です。
de
がユーザーによって選択された新しい言語であると仮定すると、これでうまくいくはずです。また、現在のビューを再開していることを確認してください。
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil]
forKey:@"AppleLanguages"];
個人的には、NIBファイルを翻訳者に渡すというアイデアは好きではありません。代わりに、英語以外の言語用に十分なスペースがあるようにNIBを設計し(通常、テキスト用に50%多くのスペースが必要になります)、すべてのテキストリソースをLocalizable.stringsファイルに保存します。
次に、コードで各UIコントロールのテキストを設定します。
[_myButton setTitle:NSLocalizedString(@"My button title",
@"My description for translation file, e.g. including chars limit")
forState:UIControlStateNormal];
これにより、翻訳プロセスの管理が容易になると思います。
元の質問に答えるには、このコードをviewWillAppear
のUIView
関数に入れて、UIが再表示されるたびに再ロードされるようにします。