2012-02-04 48 views
1

をローカライズすることはできません私は、Info.plistの中でも、キーを維持する必要がありますか?は、私がお勧めInfoPlist.strings</p> <p>を使用してのInfo.plistためにローカライズされた値を追加しようとしましたinfoplist.strings

私のInfo.plist

<key>CFBundleName</key> 
<string>${PRODUCT_NAME}</string> 

私のローカライズされた文字列

en.proj 
    -> InfoPlist.strings 
    /* Localized versions of Info.plist keys */ 
    CFBundleName = "ABC-EN"; 

it.proj 
    -> InfoPlist.strings 
    /* Localized versions of Info.plist keys */ 
    CFBundleName = "ABC-IT"; 

私はコードで、上記のようにInfo.plistの中でキーを続けると

、キー値を持つべき変数

_localisedName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]; 

は、Info.plist(myApp)内にある文字列を返しています 削除した場合CFBundleName Info.plistの文字列は<です。nil>

もう1つ設定がありますか? コピーバンドルから両方のファイルを追加して削除しようとしましたが、変更はありません。

答えて

4

それは、それを検索するためにではなく、「複雑」でしたが、私は最終的にそれを見つけ、私はそれが他の誰か

のために役立つことを願っています
_localisedName = [[[NSBundle mainBundle] localizedInfoDictionary] objectForKey:@"CFBundleName"]; 

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSBundle_Class/Reference/Reference.html#//apple_ref/occ/instm/NSBundle/localizedInfoDictionary

localizedInfoDictionary

バンドルのローカライズされたプロパティーリストのキーを含む辞書を返します。

  • (NSDictionaryの*)localizedInfoDictionary

戻り値 バンドルのローカライズされたプロパティリスト(InfoPlist.strings)からのキーを持つ辞書。

議論

どのリソースを返すように判断した場合、この方法は、現在のユーザーのために好適な局在化を使用します。優先ローカライゼーションが利用できない場合、このメソッドはバンドル内で見つかった最も適切なローカリゼーションを選択します。

0

設定が間違っているわけではありませんが、間違った方法を呼び出しています。あなたのような、ローカライズされた文字列のメソッドのいずれかを呼び出す必要があります:

_localisedName = NSLocalizedString(@"CFBundleName", nil); 
+0

ありがとうございますが、動作しませんでした。私は '_localisedName = NSLocalizedString(@" CFBundleName "、nil);と' _localisedName = [[[NSBundle mainBundle] infoDictionary] objectForKeyを試しました:NSLocalizedString(@ "CFBundleName"、nil)]; '、前者は' CFBundleName'を返しています後者は< nil >です。そして、私はバンドル '/ Library/Developer/Xcode/DerivedData/MyApp-abcProducts/Debug-iphonesimulator/MyApp.app/en.lproj/InfoPlist.strings'の文字列をよく見ます –

関連する問題