web-dev-qa-db-fra.com

Est-il possible de mettre à jour les chaînes d'un storyboard localisé?

J'ai localisé une partie de mon application en créant un storyboard base.lproj et en 3 fichiers de chaîne. Il y a un mois, j'ai ajouté un nouveau contrôleur de vue à l'application, mais les boutons et les étiquettes de ce contrôleur n'apparaissent pas dans les fichiers de chaîne.

Est-il possible de mettre à jour ces 3 chaînes de caractères attachées au storyboard ou dois-je ajouter de nouvelles traductions de chaînes par programmation à l'aide de NSLocalizableString et Localizable.strings?

210
GeLB

Il y a deux options:

Option 1

Xcode peut "recharger" le fichier en le convertissant en un type de fichier [Interface Builder Cocoa Touch Storyboard] ou en un fichier [Type de fichier localisable] .

  1. Sélectionnez votre fichier de storyboard de base dans Project Navigator.
  2. Recherchez la section Localisation dans l'inspecteur de fichier.
  3. Si votre fichier est actuellement une [Chaînes pouvant être localisées], changez-le en [Interface Builder Cocoa Touch Storyboard] ou inversement.
  4. Xcode devrait avoir converti votre storyboard à la version actuelle, tout en préservant vos efforts de localisation anciens. Ici, vous pouvez modifier le fichier pour revenir au type de fichier d'origine si vous le souhaitez.

Option 2

Utilisez ibtool pour extraire les chaînes de votre story-board.

  1. Ouvrez l'application Terminal
  2. Localisez votre répertoire Base.lproj
  3. Utilisez cette ligne pour extraire les chaînes:

    ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

  4. Une fois que ibtool a extrait les chaînes dans nom_fichier.strings, vous pouvez les copier et les coller dans votre fichier .strings d'origine.

Visitez pour plus d'informations: https://conyac.cc/business/columns/localization_guide_ios

258
Tha Leang

Découvrez BartyCrouch, cela résoudra parfaitement votre problème. En outre, il est open source , activement maintenu et peut être facilement installé et intégré dans votre projet.


Installez BartyCrouch via Homebrew :

brew install bartycrouch

Vous pouvez également l'installer via Mint :

mint install Flinesoft/BartyCrouch

Mettez à jour de manière incrémentielle vos fichiers Storyboards/XIBs Strings:

$ bartycrouch update

Cela fera exactement ce que vous cherchiez.


Afin de garder vos fichiers de Storyboards/XIBs Strings mis à jour au fil du temps I Il est vivement recommandé d’ajouter un script de construction (instructions sur l’ajout d’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

En plus de la mise à jour incrémentielle de vos fichiers Storyboards/XIBs Strings, cela permettra également de vous assurer que vos fichiers Localizable.strings restent à jour avec les clés récemment ajoutées dans le code en utilisant NSLocalizedString et affiche des avertissements pour les clés dupliquées ou les valeurs vides.

Assurez-vous de vérifier BartyCrouch sur GitHub ou cet article détaillé pour plus d'informations.

64
Dschee

Vous pouvez ajouter manuellement une clé dans votre fichier de localisation. Vous pouvez trouver l'objet clé en le sélectionnant dans l'éditeur de storyboard. Regardons Object-ID dans l'inspecteur d'identité. Il ressemble à "nwc-b2-19c"

Sur votre mise à jour de localisation ou ajouter une traduction. Par exemple :

"nwc-b2-19c.title" = "Translated title";
53
iLandes

Celui-ci n'est pas pour tout le monde, mais il ne nécessite aucun outil supplémentaire dans le terminal et il est facile pour de petites modifications manuelles. (N'envisagez pas cela lorsque vous souhaitez automatiser votre processus.)

Étape 0: Configuration de la langue du scénarimage

  • Base (avec textes anglais)
  • Anglais (le fichier de chaînes localisable n'existe pas car le fichier de base est anglais)
  • autres langues (fichiers de chaînes localisables)

base configuration

Cette étape n'est faite qu'une fois.

Maintenant, quand j'ajoute quelque chose au storyboard, je fais ce qui suit

Étape 1: ajoutez le fichier de chaînes localisables anglais

Add English

il suffit de marquer l'élément de campagne en anglais.

Cela crée un tout nouveau fichier de chaînes localisables en anglais avec toutes les lignes.

Étape 2: copiez les nouveaux éléments de ligne dans les autres fichiers de langue

et les traduire

Étape 3: désélectionnez l'anglais, supprimez le fichier de chaînes localisable correspondant

le fichier n'était nécessaire que pour obtenir les nouveaux éléments de campagne

C'est un processus facile et rapide, tout est fait dans l'éditeur de storyboard

Modifier:

Ce processus fonctionne très bien avec les petits scénarimages. Par exemple, j'ai un projet basé sur des onglets et j'ai un storyboard pour chaque onglet.

Recherchez "référence du storyboard" pour trouver des tutoriels.

Bon exemple: référence du Storyboard dans Xcode, où devrions-nous l’utiliser?

Ainsi, chaque petit storyboard n'a que quelques chaînes à localiser.

27
Gerd Castan

Enfin, ma solution était (rudimentaire mais efficace) de copier les traductions précédentes et de les coller dans un nouveau fichier créé en décochant et en cochant la case Langue de localisation.

Cela serait utile dans certains cas, comme le mien, lorsque vous ne devez modifier qu'un ou deux textes.

15
jpl850

Je pense que le meilleur moyen consiste à utiliser les localisations d'exportation/importation intégrées:

  1. Dans Project Navigator, choisissez le dossier de votre projet.
  2. Choisissez Editeur> Exporter pour la localisation,
  3. Toutes les traductions sont restées à leur place et XCode ajoute automatiquement les chaînes manquantes. En outre, avant l'importation, vous pouvez modifier .xliff dans l'éditeur XLIFF (par exemple, en ligne - http://xliff.brightec.co.uk ). Vous n'avez pas besoin de le faire dans XCode. .
  4. puis Editeur> Importer des localisations et choisissez le fichier .xliff enregistré.

P.S. Si vous ne souhaitez pas modifier dans XLIFF Editor et avez ignoré l'étape 3, XCode peut ne pas enregistrer de nouvelles chaînes. Dans ce cas, ouvrez .xliff dans XLIFF Editor, enregistrez à nouveau sans modifications et importez un nouveau fichier.

13
Igor

Lorsque vous cliquez dans votre scénario, par exemple Main.storyboard ... Sur le côté droit, vous pouvez voir le menu de localisation (voir l’image attachée). Si vous décochez et cochez à nouveau une longueur, le fichier sera généré à nouveau. Donc, d'habitude, je copie le contenu, je génère à nouveau le fichier, puis je colle le contenu que j'ai copié et déjà traduit.

C’est la méthode que j’utilise pour mettre à jour le dictionnaire.

enter image description here

5
J. Fdez

Voici n script pour extraire des chaînes de storyboards et de xibs, et les fusionner avec des traductions existantes.

Pour exécuter le script automatiquement lorsque vous générez un projet, placez-le dans le répertoire racine de votre projet et ajoutez une phase Exécuter le script avec la ligne suivante à un cibler les phases de construction dans les paramètres de votre projet.

./mergegenstrings.py PathToSourceDir

Ou vous pouvez exécuter le script manuellement sur Terminal lorsque vous le souhaitez.

Le script exécute ibtool à la réponse de Tha Leang. Il exécute également genstrings pour extraire et fusionner les chaînes identifiées par NSLocalizedString dans votre code source. Le script est basé sur n script de cet article , qui fusionne les chaînes après l'exécution de genstrings.

4
Yoichi Tagaya

J'ai un énorme story-board avec beaucoup de ficelles. Deux langues de base anglais et un autre arabe. La tâche consistait à ajouter des champs et des étiquettes au storyboard, ainsi qu’à les localiser sans scripts ni NSLocalizableStrings.

Pour moi aidé ensuite:

First : Assurez-vous que vous disposez de git pour empêcher des modifications inattendues.

  1. Allez à l'écran cible dans xcode et appuyez sur Editor -> Export For Localization.... Enregistrez le fichier ar.xliff quelque part.
  2. Télécharger XLIFF Edtior .
  3. Ouvrez le fichier ar.xliff et apportez des modifications.
  4. Importez ce fichier dans xcode. Terminé! Vous avez mis à jour le fichier de chaînes de storyboard.
4
Nik Kov

Il y a une application un outil de ligne de commande de Apple nommé AppleGlot qui prend en charge la localisation incrémentielle. Je ne l'ai pas encore essayé, mais il ressemble exactement à l'outil que vous avez recherché (il y a quelque temps).

4
tilo

L'approche la plus simple et la moins risquée consiste à copier l'ID d'objet à partir du storyboard et à ajouter une nouvelle clé pour la clé dans le fichier localisé, comme dans l'exemple ci-dessous:

1: Copiez l'ID d'objet comme ci-dessous dans le storyboard pour le composant:

enter image description here

2: Ajouter une nouvelle clé dans un fichier localisé comme ci-dessous:

"DjF-dn-0ay.text" = "Borrar datos y restablecer";

Remarque: Cette approche est très moins risquée si vous souhaitez mettre à jour uniquement un composant, sinon vous pouvez recréer un fichier localisé pour le storyboard.

2
Alok

C’est mon moyen facile de mettre à jour un nouveau texte à partir de storyboard ou de xib en chaîne de localisation

1- utilisez ce script (http://tredje.se/dev/trouble/?x=entry:entry150917-204052

2- sélectionnez votre chaîne de localisation que vous souhaitez mettre à jour et remplacez votre chaîne de langue par "Chaîne de localisation" par "storyboard de constructeur d'interface".

3- le remettre en place :)

Fait.

enter image description here

0
Fadi Abuzant