Translating an external workbench/fr

Dans les notes suivantes, doit être le nom de votre addon ou de votre atelier, par exemple,  ou, etc. Ce contexte permet de regrouper toutes les traductions de votre code sous le même nom, afin qu'elles soient plus facilement identifiables par les traducteurs. C'est-à-dire qu'ils sauront exactement à quel addon ou atelier une chaîne particulière appartient.

Généralités

 * Ajouter un dossier . 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 (les fichiers de traduction "source") et les fichiers  (fichiers de traduction compilés).
 * Seul le texte affiché pour l'utilisateur dans l'interface de FreeCAD doit être traduit. Le texte affiché uniquement dans la console Python ne doit pas être traduit.
 * Le texte imprimé sur apparaît dans la "Vue Rapport" et doit donc être traduit. La "vue Rapport" est différente depuis la console Python.

Dans chaque fichier Python .py :

 * Dans chaque fichier où vous devez traduire du texte, vous devez définir une fonction . Un moyen simple consiste à utiliser celui de l'atelier Draft :

A partir de FreeCAD 0.19, le module FreeCAD définit également une fonction de traduction (translate), il est préférable d'utiliser celle-ci :


 * Tout le texte devant être traduit doit être passé à travers la fonction.

devient

Ceci peut être utilisé n’importe où : dans, dans , dans les boîtes de dialogue Qt, etc. Les fonctions n’ajoutent pas automatiquement le caractère de nouvelle ligne  ; vous pouvez l'ajouter à la fin si vous le souhaitez. Ce caractère n'a pas non plus besoin de traduction, il peut donc être en dehors de la fonction de traduction :


 * Si vous utilisez des fichiers créés avec QtDesigner il n'y a rien d’autre à fait avec eux.
 * Lors de la création de nouveaux objets, ne traduisez pas le "Name" de l'objet. Traduisez plutôt le "Label" de l'objet. La différence est qu'un "Name" est unique ; il reste le même pendant toute la vie de l'objet ; alors qu'un "Label" peut être modifiée par l'utilisateur à sa guise.
 * 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 :

N'utilisez pas votre propre dans ce cas particulier. Conservez.
 * Ne traduisez pas le texte des transactions de document effectuées avec

Dans InitGui.py :

 * Ajoutez la ligne suivante, près du haut du fichier :


 * Pour traduire les noms de menu :


 * La macro ne fait rien, mais marque les textes qui seront lus ultérieurement par l'utilitaire . Comme 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 dans la fonction initialisée :

Le fichier n'a pas d'attribut fichier. Il est donc difficile de trouver l'emplacement relatif du dossier de traductions. Un moyen facile de contourner ce problème consiste à importer un autre fichier à partir du même dossier, puis dans ce fichier, par

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

 * Ajoutez la ligne suivante, près du haut du fichier :
 * Traduisez les et  de la commande comme ceci :

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

Rassemblez toutes les chaînes de votre module

 * Vous aurez besoin des outils, , et  installés sur votre système. Dans les distribution Linux, ils viennent généralement avec des paquets nommés   ou . Sur certains systèmes  est nommé  ou  ou . 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, vous devez d’abord exécuter :

Ceci est récursif et trouvera des fichiers dans toute la structure de vos répertoires.
 * Si vous avez des fichiers, vous devez également exécuter :


 * 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 pour vous assurer qu'ils contiennent les chaînes, puis supprimez  et.
 * Vous pouvez tout faire dans un script bash comme ceci :

Envoyer le fichier .ts à une plateforme de traduction
Il est temps de faire traduire votre fichier. 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 Crowdin, 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 FreeCAD.

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 ; vous devrez configurer vôtre propre compte.

Fusionner les traductions
Une fois que votre fichier 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 contenant un  par langue
 * Placez tous les fichiers traduits, ainsi que votre fichier  de base, dans le dossier

Compiler les traductions
Maintenant, lancez le programme sur chaque fichier que vous avez.

Vous pouvez automatiser le processus

Vous devriez trouver un fichier pour chaque fichier  traduit. Les fichiers 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 traduites à la volée si vous décidez de changer de langue. Si tel est le cas, vous devrez redémarrer FreeCAD pour que la nouvelle langue prenne effet.

Testing translations

 * 1) Switch FreeCAD to a language you have translated (ex. German)
 * 2) Load translation into FreeCAD, ex.
 * 3) Test something, ex.

Result: This should give you the German translation. If this works ok, then the basic setup is OK. Then we can look at something else. For ex, command names should always use a special context that is the name of the command as registered to FreeCAD.

Important notes

 * Make sure you are using a *context* and *string* that actually are in the ts/qm file of course.

Références importantes

 * Pourquoi et comment traduire les fonctions (fil de discussion)

Pages associées

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