web-dev-qa-db-ja.com

iOSアプリの言語をその場で変更する

私はiOSアプリを書いています。そこでは、ユーザーがiPhoneやiPadの言語に関係なくUI言語を変更できるようにしたいと思っています。問題は、言語が変更されたときに現在表示されているビューに適切なNIBファイルを再ロードする方法と、NSLocalizedStringが適切に機能するように適切な.stringsファイルをロードする方法です。

25
tommazzo

deがユーザーによって選択された新しい言語であると仮定すると、これでうまくいくはずです。また、現在のビューを再開していることを確認してください。

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil] 
                                          forKey:@"AppleLanguages"];
27
sorin

個人的には、NIBファイルを翻訳者に渡すというアイデアは好きではありません。代わりに、英語以外の言語用に十分なスペースがあるようにNIBを設計し(通常、テキスト用に50%多くのスペースが必要になります)、すべてのテキストリソースをLocalizable.stringsファイルに保存します。

次に、コードで各UIコントロールのテキストを設定します。

[_myButton setTitle:NSLocalizedString(@"My button title", 
                                      @"My description for translation file, e.g. including chars limit")
           forState:UIControlStateNormal];

これにより、翻訳プロセスの管理が容易になると思います。

元の質問に答えるには、このコードをviewWillAppearUIView関数に入れて、UIが再表示されるたびに再ロードされるようにします。

4
Dan J