Question

J'essaie de construire ma première application localisée. J'ai toutes les chaînes de code traduites à l'aide de NSLocalizedString (pour une utilisation avec genstrings outil). Maintenant je tombe ibtool. Comment fonctionne la localisation incrémentielle? En ce qui concerne la page manuelle, je devrais écrire quelque chose comme ceci:

$ ibtool --previous-file path/to/prev.xib \
--incremental-file path/to/inc.xib --localize-incremental \
--write path/to/new.xib mod.xib

Où dois-je obtenir le fichier incrémentiel? À ma compréhension, si j'utilise le contrôle de version (GIT / SVN), l'ancien fichier est à quelques engins, le fichier incrémentiel est le diff et path / to / new.xib est un fichier XIB nouvellement produit. mod.nib est un mystère pour moi. Quelqu'un peut-il m'expliquer comment cela fonctionne? Aussi - comment démarrer la localisation d'un XIB si aucune versions précédentes n'est disponible (c'est-à-dire ne faisant pas incrémentiel, mais localisation initiale)?

Était-ce utile?

La solution

Je pense que leur choix de terminologie, en particulier pour --incremental-file, provoque une confusion. L'idée est que vous avez une ancienne version de votre XIB en deux langues (source et cible) et que vous l'avez changé depuis dans votre langue source et que vous souhaitez mettre à jour la version en langue cible à correspondre.

Prenons un exemple. Vous aviez auparavant home.xib en anglais (langue source) et que quelqu'un le traduit en français (langue cible). Vous avez depuis développé une nouvelle fonctionnalité et vous avez maintenant une version mise à jour de Home.xib en anglais dans laquelle vous avez ajouté un Uilabel et un Uitextfield et déplacé les choses. La commande que vous avez montrée peut vous aider à obtenir une version mise à jour de Home.xib en français afin qu'il ait le nouvel Uilabel et Uitextfield et que les choses sont déplacées comme en anglais. Notez que tout contenu textuel que vous définissez dans votre nouvel Uilabel et UiteXtfield sera ajouté en anglais et devra ensuite être traduit dans le XIB français (mais vous pouvez automatiser cela en ajoutant --import-strings-file et fournir les traductions dans un autre fichier).

Donc, si nous cartographions la commande que vous avez montré à cet exemple:

  • --previous-file path/to/prev.xib Spécifie le vieil anglais XIB
  • --incremental-file path/to/inc.xib Spécifie le vieux XIB français
  • --write path/to/new.xib Spécifie le nouveau XIB français qui sera créé
  • mod.xib Spécifie le nouvel XIB anglais

Pour votre autre question sur la façon dont vous démarrez le processus, cela dépend vraiment de la façon dont vous localiserez vos XIB. Vous créerez évidemment les nouvelles versions linguistiques des XIB (dans Xcode, vous ajoutez simplement une langue à la liste de langue du XIB et les XIB localisés sont créés automatiquement). Et puis si vous les localisez dans Interface Builder vous-même, vous apporterez simplement les modifications pertinentes (traduction du texte et tout redimensionnement nécessaire) dans les XIB localisés. Ou vous pouvez extraire le texte dans les XIB dans .strings Fichiers, faites-les traduire et injectez-les dans la version linguistique pertinente de ces XIB. Pour cela, encore une fois, vous utiliserez iBtool mais avec --generate-strings-file pour la phase d'extrait et avec --import-strings-file pour la phase d'injecte.

Autres conseils

J'ai écrit un script pour les projets GIT qui automatise les étapes nécessaires (comme décrit dans le réponse ci-dessus) pour migrer un changement vers une langue différente.

Usage:

migrate_changes.sh <target_language> <xib file without ending>

Exemple:

Après avoir commis vos modifications dans le fichier XIB anglais, exécutez le script à la racine de votre dossier de ressources.

migrate_changes.sh de MyViewController

La source:

#!/bin/sh

LANG_FROM='en'
LANG_TO=$1
XIB_FILE=$2

FROM_FILE=${LANG_FROM}.lproj/${XIB_FILE}.xib
PREV_FILE=${LANG_FROM}.lproj/${XIB_FILE}_old.xib
TO_FILE=${LANG_TO}.lproj/${XIB_FILE}.xib

# checkout old version of xib file
git show `git log -2 --format="%H" $FROM_FILE | tail -n 1`:./$FROM_FILE > $PREV_FILE

# merge changes
ibtool --previous-file $PREV_FILE --incremental-file $TO_FILE --localize-incremental --write $TO_FILE $FROM_FILE

# remove previous version
rm $PREV_FILE
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top