Comme vous le savez peut-être, la clé iOS 8 requiert NSLocationWhenInUseUsageDescription clé pour utiliser l'emplacement de l'utilisateur. J'ai ajouté cette clé et des informations générales dans mon pliste d'informations.
Comment utiliser une chaîne de traduction dans le fichier plist?
-- Mettre à jour --
J'ai déjà une chaîne Localizable. Je me demande simplement si je peux utiliser quelque chose comme NSLocalizedString (MYSTRING, nil) à l'intérieur de la chaîne de plist. Je sais que je peux créer plusieurs fichiers de info.plist pour la localisation, mais je me demandais s'il existait un moyen plus simple.
Vous devez utiliser le fichier InfoPlist.strings
pour localiser les valeurs de Info.plist
. Pour ce faire, accédez à File->New->File
, choisissez Strings File
sous l'onglet Resource
de iOS
, appelez-le InfoPlist
et créez-le. Ouvrez et insérez les valeurs Info.plist
que vous voulez localiser comme:
"NSLocationWhenInUseUsageDescription" = "Description of this";
Vous pouvez maintenant localiser le fichier InfoPlist.strings
avec les traductions. Bonne chance!
MODIFIER:
sélectionner les options de localisation ou activer la localisation si nécessaire,
vous devriez pouvoir voir le fichier aussi dans l'éditeur de gauche.
MODIFIER:
Ici est la documentation officielle pour la localisation des clés Info.plist
.
Tout ce qui précède n'a pas fonctionné pour moi (XCode 7.3), j'ai donc lu les références d'Apple sur la marche à suivre, ce qui est beaucoup plus simple que ce qui est décrit ci-dessus. Selon Apple:
Les valeurs localisées ne sont pas stockées dans le fichier Info.plist lui-même . Au lieu de cela, vous stockez les valeurs pour une localisation particulière dans un fichier Fichier de chaînes portant le nom InfoPlist.strings. Vous placez ce fichier dans le même répertoire de projet spécifique à la langue que vous utilisez pour stocker autres ressources pour la même localisation.
En conséquence, j'ai créé un fichier de chaîne nommé InfoPlist.strings et l'ai placé dans le dossier xx.lproj du langage "xx" (et l'a ajouté au projet en utilisant Fichier-> Ajouter des fichiers à ...). C'est tout. Pas besoin de la clé "Les ressources localisées peuvent être mélangées" = OUI, et pas besoin de InfoPlist.strings dans base.lproj ou en.lproj.
L'application utilise la valeur-clé Info.plist comme valeur par défaut si elle ne peut pas trouver de clé dans le fichier spécifique à la langue. Ainsi, je mets ma valeur en anglais dans le fichier Info.plist et celle traduite dans le fichier spécifique à la langue, testé et tout fonctionne.
En particulier, il n'est pas nécessaire de localiser InfoPlist.strings (qui crée une version du fichier dans les fichiers base.lproj, en.lroj et xx.lproj) et, dans mon cas, cette méthode n'a pas fonctionné.
Si quelque chose ne fonctionne pas, assurez-vous d'avoir ajouté:
"Les ressources localisées peuvent être mélangées" = YES
dans l'info.plist. Dans mon cas, les fichiers InfoPlist.strings ont été simplement ignorés.
Je recommande vivement de lire les guides Apple et de consulter les ressources WWDC répertoriées ici: Sujets relatifs à l’internationalisation et à la localisation
Pour répondre spécifiquement à votre question lorsque vous ajoutez une nouvelle langue à votre projet, vous avez la possibilité de choisir les fichiers InfoPlist à inclure (si vous avez plusieurs cibles, vous aurez plusieurs fichiers Plist Info). Pour obtenir l’écran suivant, il vous suffit de cliquer sur le signe + sous Localisation et de choisir une nouvelle langue pour prendre en charge la propriété .
Une fois que vous avez ajouté, il créera les fichiers de chaîne nécessaires dans les répertoires lproj appropriés pour la langue donnée.
--MODIFIER--
Juste pour clarifier, iOS échangera la chaîne de votre fichier Plist en fonction de la langue actuellement sélectionnée par l'utilisateur, en utilisant la clé de l'entrée Plist comme clé dans le fichier de chaînes localisé.
Conseils
N'oubliez pas que le simulateur iOS exploite par défaut votre langue système. Modifiez également la langue (et la région) dans le paramètre Simulateur iOS afin de tester vos traductions.
La chaîne de localisation (voir Apple docs here ) devrait être
NSLocationWhenInUseUsageDescription = "Description of this";
et non (avec citation "...")
"NSLocationWhenInUseUsageDescription" = "Description of this";
Comme le dit RGML, vous pouvez créer un InfoPlist.strings, le localiser puis ajouter votre clé et la valeur suivante:
Il ajoutera la clé à votre info.plist pour la langue spécifiée.
Pour tous ceux qui rencontrent le problème du non-inclusion de l'info.plist lors de la tentative d'ajout de localisations, comme dans Xcode 9.
Vous devez rendre le fichier info.plist localiazble en y accédant et en cliquant sur le bouton de localisation dans l'inspecteur de fichier, comme indiqué ci-dessous.
Le fichier info.plist sera alors inclus dans les ressources de fichiers pour ajouter de nouvelles localisations.
Localisez pas à pas Info.plist:
"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";
"NSLocationAlwaysUsageDescription" = "blabla2";
Tout cela fonctionne et vous devez localiser votre fichier info.plist!
Dans mon cas, tout a été configuré correctement mais le fichier InfoPlist.strings est toujours introuvable.
La seule chose qui a vraiment fonctionné était de supprimer et d'ajouter les fichiers InfoPlist.strings au projet.
Dans mon cas, la localisation non travaillée cause le symbole '-' dans le nom. Exemple: "aero-Info.plist" Et fichiers localisés: "aero-InfoPlist.strings" et "aeroInfoPlist.strings" ne fonctionnaient pas.