web-dev-qa-db-fra.com

Comment localiser une chaîne dans le fichier iOS info.plist?

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. enter image description here

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.

205
Soheil

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,

right side editor

vous devriez pouvoir voir le fichier aussi dans l'éditeur de gauche.

left side editor

MODIFIER:

Ici est la documentation officielle pour la localisation des clés Info.plist.

400
Fahri Azimov

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é.

26
Zvi

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.

14
tuvok

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 projetenter image description here, 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é .enter image description here

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é. 

8
Matt S.

Conseils

  1. 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. 

  2. La chaîne de localisation (voir Apple docs here ) devrait être

    NSLocationWhenInUseUsageDescription = "Description of this";
    

    et non (avec citation "...")

    "NSLocationWhenInUseUsageDescription" = "Description of this";
    
4
Giuseppe Beccari

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.

3
Cap

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.

 enter image description here

3
Edward

Localisez pas à pas Info.plist:

  1. Trouver dans le code x le dossier Ressources (est placé dans la racine)
  2. Sélectionnez le dossier Ressources
  3. Ensuite, appuyez sur le menu principal Fichier-> Nouveau-> Fichier ...
  4. Sélectionnez dans la section "Ressource" Fichier de chaînes et appuyez sur Suivant
  5. Ensuite, dans le champ Enregistrer sous, écrivez InfoPlist SEULEMENT ("I" majuscule et "P" majuscule)
  6. Puis appuyez sur Créer
  7. Sélectionnez ensuite le fichier InfoPlist.strings créé dans le dossier Ressources et cliquez dans le menu de droite sur le bouton "Localiser".
  8. Ensuite, sélectionnez le projet dans le navigateur de projet et sélectionnez la liste Le projet à partir du projet.
  9. Dans l'onglet d'information en bas, vous pouvez utiliser autant de langue que vous le souhaitez (il y a dans la section Localisations)
  10. La langue que vous pouvez voir dans le dossier de ressources
  11. Pour localiser les valeurs ("clé") du fichier info.plist, vous pouvez ouvrir avec un éditeur de texte et obtenir toutes les clés que vous souhaitez localiser
  12. Vous écrivez une clé comme exemple dans n'importe quel InfoPlist.strings comme l'exemple ci-dessus

"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";

"NSLocationAlwaysUsageDescription" = "blabla2";

Tout cela fonctionne et vous devez localiser votre fichier info.plist!

1
Costas Bakoulias

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. 

0
d.ennis

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.

0
Mike Glukhov