web-dev-qa-db-fra.com

Comment synchroniser les chaînes de storyboards localisés après avoir modifié le storyboard dans Xcode 5

Je commence juste à regarder IOS localisation des applications dans XCode 5 et j'ai essayé d'ajouter un localisation italienneAdding Italian Localization

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

XCode 5 generated file

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?

40
Gianni Costanzi

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.

20
Dschee

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:

File inspector is the leftmost icon.

Dans le volet droit qui apparaît, l'une des sections sera Localisation:

Localization section

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.

17
Rahav

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.

5
olik79

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/

4
Trond

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

identity inspector

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.

4
tryp

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.

https://developer.Apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/LocalizingYourApp/LocalizingYourApp.html#//Apple_ref/doc/uid/10000171i-CH5-SW9

Une autre option consiste à utiliser ibtool --export-strings-file directement.

https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ibtool.1.html

2
Quinn Taylor

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

0
Amrit Sidhu