Je commence juste à regarder IOS localisation des applications dans XCode 5 et j'ai essayé d'ajouter un localisation italienne:
Xcode 5 génère automatiquement le fichier Main.strings avec une seule entrée, pour la seule étiquette que j'ai placée dans le fichier Main.storyboard:
/* Class = "IBUILabel"; text = "Label"; ObjectID = "PeT-4z-NSf"; */
"PeT-4z-NSf.text" = "Etichetta";
Si je modifie plus tard le fichier Main.storyboard en ajoutant un nouveau bouton à la vue, comment dois-je dire Xcode 5, si possible, pour ajouter des chaînes de localisation manquantes au - Main.strings fichier? Dois-je ajouter une nouvelle entrée à la main en regardant le champ ID objet dans Interface Builder (cela fonctionne, mais je ne sais pas si c'est ainsi que cela est censé mettre à jour la localisation des storyboards)? Puis-je exécuter quelque chose comme genstrings sur le fichier Main.storyboard pour extraire le texte de toutes les étiquettes et ajouter les nouvelles aux localisées Main.strings = fichiers?
Checkout BartyCrouch, il résout parfaitement votre problème. Il est également open source , activement maintenu et peut être facilement installé et intégré dans votre projet.
Installer BartyCrouch via Homebrew :
brew install bartycrouch
Sinon, installez-le via Mint :
mint install Flinesoft/BartyCrouch
Mettez à jour progressivement vos fichiers Storyboards/XIBs Strings:
$ bartycrouch update
Cela fera exactement ce que vous cherchiez.
Afin de conserver vos fichiers Storyboards/XIBs Strings mis à jour au fil du temps I recommande fortement d'ajouter un script de construction (instructions sur la façon d'ajouter un script de construction ici ):
if which bartycrouch > /dev/null; then
bartycrouch update -x
bartycrouch lint -x
else
echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch"
fi
Outre la mise à jour incrémentielle de vos fichiers Storyboards/XIBs Strings, cela garantira également votre Localizable.strings
les fichiers restent à jour avec les clés nouvellement ajoutées dans le code en utilisant NSLocalizedString
et affichent des avertissements pour les clés en double ou les valeurs vides.
Assurez-vous de vérifier BartyCrouch sur GitHub pour plus d'informations.
Le fichier que Xcode ne met pas à jour automatiquement (pas au moins la version 5.x) est le Localizable Strings
De l'application. Vous pouvez créer un nouveau fichier à partir de Main.storyboard
Comme suit:
Dans le Navigateur du projet (volet le plus à gauche), cliquez sur le fichier Main.storyboard
. Dans le volet Utilitaires (le volet le plus à droite), cliquez sur l'icône Afficher l'inspecteur de fichiers. Il s'agit de l'icône la plus à gauche en bleu dans l'image ci-dessous:
.
Dans le volet droit qui apparaît, l'une des sections sera Localisation:
Décochez la ligne English (Localizable Strings)
et dans la fenêtre qui apparaît, vérifiez Supprimer les fichiers de ressources localisés du disque et cliquez sur le bouton Supprimer (vous ne le faites pas devez vérifier la suppression, auquel cas Xcode demandera une autorisation pour le remplacer lors de la prochaine construction).
Ensuite, vérifiez à nouveau English (Localizable Strings)
pour le construire à partir de zéro.
En utilisant Xcode 6, les éléments suivants ont fonctionné pour moi:
J'ai changé la localisation d'une langue de "Localizable Strings" en "Interface Builder ..." comme suggéré à la question SO publiée par h.orim . Cependant, la le paramètre n'a pas changé, il était toujours défini sur "Chaînes localisables". L'étape suivante consiste maintenant à le refaire, donc Xcode trouvera le Storyboard qu'il vient de créer et affichera une invite demandant s'il doit être utilisé ou remplacé. Maintenant, cliquez sur "Utiliser le fichier" au lieu de "Remplacer", sinon la même chose se reproduira.
Vous devez maintenant avoir un Storyboard localisé dans la langue souhaitée. Une fois que vous êtes revenu à "Chaînes localisables", vous aurez un fichier contenant toutes les chaînes actuelles utilisées dans le storyboard avec vos traductions précédentes toujours en place.
Vous pouvez utiliser un script appelé UpdatStoryboardStrings pour cela!
Obtenez-le ici: https://github.com/AppliedIS/iOSL10n
Instructions d'utilisation: http://blog.appliedis.com/2013/05/22/localization-of-an-xcode-ios-app-part-2/
Une autre façon consiste à le faire manuellement en sélectionnant sur le storyboard le champ à traduire. Accédez à "Inspecteur d'identité" et copiez l'ID d'objet (quelque chose comme HP8-op-SmX).
Après cela, ouvrez le fichier de langage du storyboard (Main.strings, la plupart des cas) et passez l'ID d'objet. Selon vos besoins, il vous suffit d'ajouter .text ou .placeholder.
"HP8-op-SmX.placeholder" = "My translated placeholder text";
"HP9-op-VvD.text" = "My translated text";
Enregistrez, nettoyez et construisez. C'est un peu pénible, mais cela peut vous faire gagner beaucoup de temps si vous n'avez besoin que de traduire peu de choses.
Avec Xcode 6+, les développeurs ne devraient idéalement pas avoir à gérer manuellement les fichiers de chaînes. Utilisez l'exportation XLIFF pour rassembler automatiquement les chaînes du langage de développement à envoyer aux traducteurs, puis utilisez l'importation XLIFF pour mettre à jour les fichiers de chaînes avec les traductions.
Une autre option consiste à utiliser ibtool --export-strings-file
directement.
https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ibtool.1.html
Il y a deux options:
Option 1
Xcode peut "recharger" le fichier en le convertissant en un type de fichier [Story Builder Cocoa Touch Storyboard] ou un type de fichier [Localizable Strings].
Sélectionnez votre fichier de storyboard de base dans le Navigateur du projet Recherchez la section Localisation dans l'inspecteur de fichiers Si votre fichier est actuellement un [Localizable Strings], remplacez-le par [Interface Builder Cocoa Touch Storyboard] ou vice-versa. Xcode aurait dû convertir votre storyboard dans la version actuelle, tout en préservant vos anciens efforts de localisation. Ici, vous pouvez rétablir le type de fichier d'origine si vous le souhaitez.
Option 2
Utilisez ibtool pour extraire les chaînes de votre storyboard.
Ouvrez l'application Terminal Recherchez votre répertoire Base.lproj Utilisez cette ligne pour extraire les chaînes:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings Une fois qu'ibtool a extrait les chaînes dans file_name.strings, vous pouvez les copier et les coller dans votre fichier .strings d'origine