2011-06-28 5 views
1

iPhoneアプリでは、アプリの設定内で言語を変更できます(ユーザーはアプリを再起動する必要があります)。私はこのポストで言及したトリックを使用します:link。私はいくつかの変更を加えました。私はNSUserDefaultsで選択した言語を保存し、main.mで:アプリ設定内のiPhoneアプリの言語を設定してもアプリ名は変わりません

int main(int argc, char *argv[]) { 

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"language"] == nil) { 
     [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"hu"] forKey:@"AppleLanguages"]; 
    } else { 
     [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:[[NSUserDefaults standardUserDefaults] objectForKey:@"language"]] forKey:@"AppleLanguages"]; 
} 

    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
} 

「デフォルト」のInfo.plistファイルは英語で、私はプロジェクトのルートにそれを置きます。私はこの名前のハンガリー語の翻訳をアプリ名のために作った。このファイルはInfoPlist.stringsで、hu.lprojフォルダに配置しました。

CFBundleDisplayName = "Sör"; 

私が言語を変更した場合、アプリケーションを再起動すると、アプリケーション名以外はすべて正常に動作します(nibファイル、文字列)。それは変更されません...

誰かが私に問題を教えてもらえますか?

答えて

1

を入力してください。する必要があります。

また、アプリにローカライズされたアプリ名があるように指示する必要があります。これを行うには、アプリのinfo.plistに次のキーを追加します。

LSHasLocalizedDisplayName 

ブール値をtrueに設定します。

これを実行したら、の名前にローカライズする必要があります。

あなたはhere

EDIT詳細を読むことができます:あなたがする必要がある

もう一つはen.lprojフォルダにInfoPlist.stringsファイルを作成し、英語の等価物とそれに同じキーを追加することですこの添加のための

CFBundleDisplayName = "<Replace Me>"; 

クレジットがthis link

+0

はい、そうですが、このキーをInfo.plistに追加すると何も起こりません。ドキュメントでは、「ローカライズされた表示名情報にアクセスする関数は、情報を取得する前にこのキーの存在をチェックします」という意味は何ですか? – madik

+0

上記の編集を参照してください。 –

+0

編集した回答に関連して質問があります。私は、プロジェクトのルートにInfo.plistファイルがあり、ビルドの設定では、そのファイルを指していると言いました。このファイルには、アプリ名のキーもあります。今回は、hu.lprojフォルダにInfoPlist.stringsファイルが1つしかありません。このファイルをプロジェクトに追加しました。今、私はこのファイルをローカライズしなければなりません(そして、この '操作'の結果は、正しいフォルダに2つのInfoPlist.stringsファイルがあります)? – madik

0

まあ、あなたのアプリが設定されている言語に設定されていないiOSによってアプリ名が読み取られます。 システム言語に設定されているアプリの名前が表示されます。

+0

に行くこれはノーでありますt *厳密に* true、私の答えを参照してください –

+0

本当ですが、コードを使用して言語を変更し、OS言語を設定しない場合は変更されますか?式私のiPhoneが英語で、コードを使って私のアプリケーションをオランダ語に変更すると、OSはオランダ語または英語でアプリ名を表示します。 osにDisplayNameがローカライズされていると伝えるので、アプリケーション言語は実行後にのみ設定されるため、OSの言語の表示名を読み取ると思った。 – rckoenes

+0

正直なところ私はいつものように(*システム全体の言語の選択*を反映して)通常の方法でアプリケーションをローカライズしたので、このインスタンスで何が起こるかわかりません。 2番目の考えでは正しいかもしれないし、アプリ内の言語の変更を反映するためにアプリ名を取得できないかもしれませんが、一方でアプリ名はアプリが実行中に変更される可能性があります言語。私が知る最良の方法は、それを与えることだと思います。 –

関連する問題