Translating an external workbench/fr

Dans les notes suivantes, "context" devrait être le nom de votre addon, ex. "MySuperAddon". C’est ainsi que toutes les traductions de votre addon seront rassemblées sous un même nom, pour être plus facilement identifiables par les traducteurs.

Généralités

 * Ajouter un dossier "translations". Vous pouvez le nommer autrement, mais ce sera plus facile car c'est la même chose dans FreeCAD. Dans ce dossier, vous placerez les fichiers .ts (les fichiers de traduction "source") et les fichiers .qm (fichiers de traduction compilés).
 * Seul le texte affiché à l'usage de l'utilisateur dans l'interface utilisateur de FreeCAD doit être traduit. Le texte affiché uniquement dans la console Python ne doit pas être traduit.

Dans chaque fichier .py:

 * Dans chaque fichier où vous devez traduire du texte, vous avez besoin d'une fonction translate définie. Un moyen simple consiste à utiliser celui de l'atelier Draft Workbench:
 * Tout le texte devant être traduit doit être placé dans la fonction translate. Ainsi,  devient  . Ceci peut être utilisé n’importe où: dans les fonctions print, FreeCAD.Console.PrintMessage, dans les dialogues Qt, etc. Dans les fonctions de FreeCAD.Console.Print*, il est nécessaire de terminer la chaîne avec le nouveau caractère de ligne (\n). Il est conseillé de laisser ce caractère en dehors de la traduction:
 * Si vous utilisez des fichiers .ui créés avec QtDesigner, vous ne devez rien faire de spécial.
 * Lors de la création de nouveaux objets, ne traduisez pas les noms d'objet. Traduisez plutôt les étiquettes d'objet
 * Lors de la création de propriétés pour vos objets, ne traduisez pas le nom de la propriété. Mais placez la description à l'intérieur de QT_TRANSLATE_NOOP:  (n'utilisez pas votre propre "contexte" dans ce cas particulier. Conservez "App::Property").
 * Ne traduisez pas le texte des transactions de document effectuées avec Document.openTransaction

Dans InitGui.py:

 * Ajoutez la ligne suivante, près du haut du fichier:
 * Pour traduire les noms de menu:
 * La macro QT_TRANSLATE_NOOP ne fait rien, mais marque les textes à récupérer ultérieurement par l’utilitaire lupdate. Puisqu'il ne traduit pas le texte dans FreeCAD (il ne fait rien), nous ne l'utilisons que dans des cas particuliers où FreeCAD s'occupe de tout.
 * Ajoutez le chemin d'accès à votre dossier "translations" dans la fonction Initialized: . Le fichier InitGui.py n’a pas d’attribut file, il est donc difficile de trouver l’emplacement relatif du dossier de traduction. Une solution simple consiste à importer un autre fichier du même dossier et dans ce fichier, effectuez

À l'intérieur de chaque command class: de FreeCAD

 * Ajoutez la ligne suivante, près du haut du fichier:
 * Traduisez le MenuText et l'info-bulle (Tooltip) de la commande comme ceci:

def GetResources(self):

return {'Pixmap' : &quot;path/to/icon.svg&quot;),                'MenuText': QT_TRANSLATE_NOOP(&quot;CommandName&quot;, &quot;My Command&quot;),                'ToolTip' : QT_TRANSLATE_NOOP(&quot;CommandName&quot;, &quot;Describes what the command does&quot;),                'Accel':    &quot;Shift+A&quot;}

Où CommandName est le nom de la commande, défini par

2. Rassemblez toutes les chaînes de votre module

 * Vous aurez besoin des outils lupdate, lconvert, lrelease et pylupdate installés sur votre système. Ils viennent généralement avec des paquets nommés pysie-tools ou pyside2-tools. Sur certains systèmes, lupdate est nommé lupdate4 ou lupdate5 ou lupdate-qt4. Même chose pour les autres outils. Vous pouvez généralement utiliser la version qt4 ou qt5 à votre choix.
 * Si vous avez des fichiers .ui, vous devez d’abord exécuter lupdate: . Ceci est récursif et trouvera des fichiers ui dans toute la structure de votre répertoire
 * Si vous avez des fichiers .py, vous devez également exécuter pylupdate:
 * Si vous avez exécuté les deux opérations, vous devez maintenant unifier ces deux fichiers en un:
 * Vérifiez le contenu des trois fichiers ts pour vous assurer qu'ils contiennent les chaînes, puis supprimez pyfile.ts et uifiles.ts.
 * vous pouvez tout faire dans un script bash comme ceci:

lupdate *.ui -ts translations/uifiles.ts pylupdate *.py -ts translations/pyfiles.ts lconvert -i translations/uifiles.ts translations/pyfiles.ts -o translations/MyModule.ts rm translations/pyfiles.ts rm translations/uifiles.ts
 * 1) !env sh

3. Envoyer le fichier .ts à une plateforme de traduction
Il est temps de faire traduire votre fichier .ts. Vous pouvez choisir de créer un compte sur une plateforme de traduction publique telle que Crowdin ou Transifex, ou vous pouvez bénéficier de notre compte FreeCAD existant. sur https://crowdin.com/project/freecad, qui compte déjà de nombreux utilisateurs et qui a donc plus de chance de faire traduire votre fichier rapidement par des personnes connaissant FreeCAD.

Si vous souhaitez héberger votre fichier sur le compte FreeCAD crowdin, contactez Yorik sur le forum.

 Remarque certaines plates-formes comme Crowdin peuvent s'intégrer à github et effectuer automatiquement tout le processus à partir des points 2, 3 et 4. Pour cela, vous ne pouvez pas utiliser le compte FreeCAD crowdin et vous devrez configurer le vôtre.

4. Fusionner les traductions
Une fois que votre fichier .ts a été traduit, même partiellement, vous pouvez télécharger les traductions à partir du site:


 * Vous téléchargerez généralement un fichier .zip contenant un .ts par langue
 * Placez tous les fichiers .ts traduits, ainsi que votre fichier .ts de base, dans le dossier "translations"

5. Compiler les traductions
Vous devriez trouver un fichier .qm pour chaque fichier .ts traduit. Les fichiers .qm sont ceux qui seront utilisés par Qt et FreeCAD au moment de l'exécution.

C’est tout ce dont vous avez besoin. Notez que certaines parties de votre atelier ne peuvent pas être retransformées à la volée et nécessitent un redémarrage de FreeCAD si vous changez de langue.

Pages associées

 * Ateliers externes
 * Localisation
 * Pour plus d'informations faites vos demandes ici sur le forum Translating external workbenches