Comme vous le savez peut-être, iOS 8 requirejs la key NSLocationWhenInUseUsageDescription pour utiliser l'location de l'user. J'ai ajouté cette key et quelques informations générales dans mon info plist.
Comment puis-je utiliser la string de traduction dans le file plist?
— Mettre à jour —
J'ai déjà une string Localizable. Je me request juste que je peux utiliser quelque chose comme NSLocalizedSsortingng (MYSTRING, nil) à l'intérieur de la string de plist. Je sais que je peux créer plusieurs files d'info.plist pour la localization, mais je me demandais s'il y aurait un moyen plus facile.
Vous devez utiliser le file InfoPlist.ssortingngs
pour localiser les valeurs de Info.plist
. Pour ce faire, allez dans File->New->File
, choisissez Ssortingngs File
sous l'onglet Resource
d' iOS
, nommez-le InfoPlist
et créez. Ouvrez et insérez les valeurs Info.plist
vous souhaitez localiser comme:
"NSLocationWhenInUseUsageDescription" = "Description of this";
Vous pouvez maintenant localiser le file InfoPlist.ssortingngs
avec les traductions. Bonne chance!
MODIFIER:
select les options de localization ou activez la localization si nécessaire,
vous devriez pouvoir voir le dossier également sur l'éditeur de côté gauche.
MODIFIER:
Voici la documentation officielle pour la localization des touches Info.plist
.
Tout ce qui précède n'a pas fonctionné pour moi (XCode 7.3) donc j'ai lu la reference d'Apple sur la façon de faire, et c'est beaucoup plus simple que décrit ci-dessus. Selon Apple:
Les valeurs localisées ne sont pas stockées dans le file Info.plist lui-même. Au lieu de cela, vous stockez les valeurs pour une localization particulière dans un file de strings avec le nom InfoPlist.ssortingngs. Vous placez ce file dans le même directory de projet spécifique à la langue que vous utilisez pour stocker d'autres ressources pour la même localization.
En conséquence, j'ai créé un file de string nommé InfoPlist.ssortingngs et l' ai placé dans le dossier xx.lproj de la langue "xx" (et l'ai ajouté au projet en utilisant File-> Add Files to …). C'est tout. Pas besoin de la key "Ressources localisées peuvent être mélangées" = YES, et pas besoin de InfoPlist.ssortingngs dans base.lproj ou en.lproj.
L'application utilise la valeur-key Info.plist comme valeur par défaut si elle ne parvient pas à find une key dans le file spécifique à la langue. Ainsi, j'ai mis ma valeur anglaise dans le file Info.plist et la traduite dans le file spécifique à la langue, testé et tout fonctionne.
En particulier, il n'est pas nécessaire de localiser InfoPlist.ssortingngs (qui crée une version du file dans les files base.lproj, en.lroj et xx.lproj), et dans mon cas cela ne fonctionnait pas.
Si quelque chose ne fonctionne pas, assurez-vous d'avoir ajouté:
"Les ressources localisées peuvent être mélangées" = OUI
dans l'info.plist. Dans mon cas, les files InfoPlist.ssortingngs ont été simplement ignorés.
Je recommand fortement de lire les guides d'Apple et de consulter les ressources de la WWDC listées ici: Thèmes de l'internationalisation et de la localization
Pour répondre spécifiquement à votre question, lorsque vous ajoutez une nouvelle langue à votre projet , vous avez la possibilité de choisir les files InfoPlist à inclure (si vous avez plusieurs cibles, vous aurez plusieurs files Info plist). Tout ce que vous devez faire pour get l'écran suivant est frappé le + sous Localizations et choisissez une nouvelle langue pour append un support pour.
Une fois que vous avez ajouté, il créera les files de strings nécessaires dans les directorys lproj appropriés pour la langue donnée.
–MODIFIER–
Juste pour être clair, iOS va échanger la string pour votre file Plist basé sur la langue actuellement sélectionnée de l'user en utilisant la key de l'input de la plist comme la key dans le file de strings localisées.
Comme dit RGML, vous pouvez créer un InfoPlist.ssortingngs, le localiser puis append votre key et la valeur comme ceci: "NSLocationWhenInUseUsageDescription" = "Aide pour me localiser!";
Il appenda la key à votre info.plist pour la langue spécifiée.
Pour toute personne rencontrant le problème de l'info.plist n'étant pas inclus lorsque vous essayez d'append des localizations, comme dans Xcode 9.
Vous devez créer le file info.plist localiazble en cliquant dessus et en cliquant sur le button localiser dans l'inspecteur de files, comme illustré ci-dessous.
L'info.plist sera alors inclus dans les ressources du file lorsque vous allez append de nouvelles localizations.
Dans mon cas, tout a été correctement configuré mais le file InfoPlist.ssortingngs n'a toujours pas été trouvé.
La seule chose qui a vraiment fonctionné était de supprimer et d'append à nouveau les files InfoPlist.ssortingngs au projet.