2012-02-01 9 views
0

私のアプリケーションでは、ユーザーは言語を選択できるので、私のアプリケーションで言語を変更することはできますが、機能しません。このコードはオンラインで見つかりました:iPhone - カスタム言語の設定

// Force languages 
NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"]; 
NSLog(@"language %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleLanguages"]); 
if ([lang isEqualToString:@"castella"]) { 

    [[NSUserDefaults standardUserDefaults] 
    setObject:[NSArray arrayWithObject:@"es"] 
    forKey:@"AppleLanguages"]; 
} //else just default user lang 

このコードは機能しません。私はもう一つの好み設定を設定していると思う。私は本当にロケールを変更したい。ローカライズされたいくつかの文字列と、NIBファイルの一部があるので、最初の位置にロケールを優先するスペイン語を追加したいと思いますが、どうやってそれを行うのか本当に分かりません。

アプリケーションの設定では、言語を選択するオプションがあります。それは私の頑固さからだけではありません。ここでは地域のラグジュアリーが重要であり、時にはiPhoneがサポートを提供しない場合がありますが、私は翻訳を宣伝します。私は、ロケールをいじりあきらめることにしましたが、(en.projまたはes.projからの)異なるNIBファイルを表示することも可能であろう答えから


?私はすでに最初の部分を持っています:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"]; 

     if ([lang isEqualToString:@"castella"]) { 
      //Load NIB filer from "es.proj". 
     } 
    } 
    return self; 
} 

それは可能ですか?

答えて

0

ロケールはiPhoneの設定でユーザーが設定する必要があります。私があなたのアプリからこのパラメータを強制すると、サンドボックスから出てアプリが拒否される可能性があります。

代わりに、localizationsをNIBファイルに追加します。Localizable.stringsをプロジェクトに追加してください。あなたのアプリは自動的にユーザーのために最適な言語を表示します。

アプリ内の言語を変更したい場合は、ロケール設定を変更しないで、アプリ内の画面に表示する内容を変更してください。

あなたはこのパラメータに応じて、あなたが[NSUserDefaults standardUserDefaults]にする言語を保存し、ラベルを表示することができます。

if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"English"]) { 
    aLabel.text = @"This is English."; 
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Italian"]) { 
    aLabel.text = @"Questo e' italiano."; 
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Japanese"]) { 
    aLabel.text = @"これは日本語です。"; 
} 
+0

thnksを、私はそれを行うにはしたくない拒否することができますが、どのように私は示すことができた場合es.projのnibまたはen.projからのユーザーのデフォルト設定へのアロイ – vallllll

+0

iOSは、ユーザーの設定に従って自動的に最適な選択肢を表示します。つまり、ユーザーが「es」言語を選択すると、アプリはNIBファイルの「es」バージョンを表示します。 – Beppe

+0

私はesについて知っていますが、ほんの一例にすぎません。いくつかの珍しい言語では、それを回避する方法はありませんか? – vallllll

0

ユーザーが言語を2回選択するようにするのは良い方法ではありません(初めてiPhoneを設定したとき)。現在のロケールを取得し、そこから言語設定を取得することをお勧めします。

関連する問題