2012-02-04 2 views
1

J'ai essayé d'ajouter une valeur localisée à l'aide des info.plist InfoPlist.strings recommandéesImpossible de localiser InfoPlist.strings

Ai-je besoin de garder la clé aussi dans Info.plist?

Mes Info.plist

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

Mes chaînes localisées

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"; 

Si je garde la clé dans Info.plist comme ci-dessus, dans le code, une variable qui doit avoir la valeur de clé

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

renvoie la chaîne qui se trouve dans Info.plist (myApp) Si j'enlève CFBundleName de Info.plist la chaîne est < nil>

Il y a un autre paramètre qui me manque? J'ai essayé d'ajouter et de supprimer les deux fichiers du paquet de copie (sans aucune modification).

Répondre

4

Il était plutôt « compliqué » pour rechercher, mais je trouve finalement il, j'espère que ce sera utile pour quelqu'un d'autre

_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

Renvoie un dictionnaire avec les clés de la liste de propriétés localisées du regroupement.

  • (NSDictionary *) localizedInfoDictionary

Valeur de retour Un dictionnaire avec les clés de la liste des propriétés localisée du faisceau (de InfoPlist.strings).

Discussion

Cette méthode utilise la localisation préférée pour l'utilisateur actuel lors de la détermination des ressources qui pour revenir. Si la localisation préférée n'est pas disponible, cette méthode choisit la localisation la plus appropriée trouvée dans l'ensemble.

0

Vous ne manquez pas un paramètre, vous n'appelez pas la bonne méthode. Vous devez appeler l'une des méthodes de chaînes localisées, telles que:

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

merci, mais cela n'a pas fonctionné. J'ai essayé '_localisedName = NSLocalizedString (@" CFBundleName ", nil);' et '_localisedName = [[[NSBundle mainBundle] infoDictionary] objetForKey: NSLocalizedString (@" CFBundleName ", nil)];', le premier retourne 'CFBundleName' , ce dernier < nil >. Et je vois bien la chaîne dans le paquet '/ Bibliothèque/Développeur/Xcode/DerivedData/MonApp-abcProducts/Debug-iphonesimulator/MonApp.app/fr.lproj/InfoPlist.strings' –