Précédent: , Monter: Contribuer   [Table des matières][Index]


22.19 Traduire Guix

Écrire du code et des paquets n’est pas la seule manière possible de proposer une contribution intéressante à Guix. Traduire vers une langue que vous parlez est un autre exemple de contribution importante que vous pouvez faire. Cette section décrit le processus de traduction. Elle vous donner des conseils sur comment vous impliquer, ce qui peut être traduit, les erreurs à éviter et ce que vous pouvez faire pour nous aider !

Guix est un gros projet qui a plusieurs composants traduisibles. Nous coordonnons l’effort de traduction sur une instance Weblate hébergée par nos amis de Fedora. Vous aurez besoin d’un compte pour soumettre vos traductions.

Certains logiciels empaquetés par Guix contiennent aussi des traductions. Nous n’hébergeons pas de plateforme de traduction pour eux. Si vous voulez traduire un paquet fournit par Guix, vous devrez contacter ses développeurs ou trouver plus d’information sur son site web. Par exemple, vous pouvez trouver la page d’accueil du paquet hello en lançant guix show hello. Sur la ligne indiquant « homepage », vous verrez que la page d’accueil est https://www.gnu.org/software/hello/.

De nombreux paquets GNU et non-GNU peuvent être traduits sur le Projet de traduction. Certains projets avec de multiples composants ont leur propre plateforme. Par exemple, GNOME a sa propre plateforme, Damned Lies.

Guix a cinq composants hébergés sur Weblate.

Instructions générales

Une fois que vous aurez un compte, vous pourrez choisir un composant dans projet guix, et choisir une langue. Si votre langue n’apparaît pas dans la liste, allez en bas et cliquez sur le bouton « commencer une nouvelle traduction ». Choisissez la langue en laquelle vous voulez traduire dans la liste pour commencer votre nouvelle traduction.

Comme de nombreux autres logiciels libres, Guix utilise GNU Gettext pour ses traductions. Grâce à lui, les chaînes traduisibles sont extraites du code source en des fichier dits PO.

Même si les fichiers PO sont des fichiers textes, vous devriez les modifier non pas avec un éditeur de texte mais avec un logiciel d’édition de PO. Weblate intègre une fonctionnalité d’édition de PO. Autrement, vous pouvez utiliser n’importe lequel des divers outils libres pour remplir les traductions, dont Poedit est un exemple, et (après vous être connecté) téléverser le fichier modifié. Il y a aussi un mode d’édition de PO spécial pour GNU Emacs. Avec le temps vous trouverez les logiciels qui vous satisfont et les fonctionnalités dont vous avez besoin.

Sur Weblate, vous trouverez plusieurs liens vers l’éditeur, qui vous montreront divers sous-ensemble (ou la totalité) des chaînes. Explorez Weblate et consultez la documentation pour vous familiariser avec la plateforme.

Composants des traductions

Dans cette section, nous proposons un guide plus détaillé du processus de traduction, ainsi que des détails sur ce que vous devriez ou ne devriez pas faire. Si vous avez un doute, contactez-nous, nous serons ravis de vous aider !

guix

Guix est écrit dans le langage de programmation Guile, et certaines chaînes contiennent du formatage spécial interprété par Guile. Ce formatage spécial devrait être mis en évidence par Weblate. Il commence par ~ suivi d’un ou plusieurs caractères.

Lors de l’affichage des chaînes, Guile remplace les symboles de formatage spéciaux avec les vrais valeurs. Par exemple, la chaîne ‘ambiguous package specification `~a'’ serait modifiée pour contenir la spécification du paquet en question au lieu de ~a. Pour traduire cette chaîne correctement, vous devez garder le formatage dans vos traduction, même si vous pouvez le placer là où cela a le plus de sens dans votre langue. Par exemple, la traduction française dit ‘spécification du paquet « ~a » ambiguë’ parce que l’adjectif doit être placé à la fin de la phrase.

S’il y a plusieurs symboles de formatage, assurez-vous de respecter l’ordre. Guile ne sait pas dans quel ordre vous voulez qu’il lise la chaîne, donc il remplacera les symboles dans le même ordre que la phrase anglaise.

Par exemple, vous ne pouvez pas traduire ‘package '~a' has been superseded by '~a'’ par ‘« ~a » remplace le paquet « ~a »’, parce que le sens serait renversé. Si toto est remplacé par titi, la traduction dirait ‘« toto » remplace le paquet « titi »’. Pour éviter ce problème, il est possible d’utiliser un formatage plus avancé pour désigner une donnée particulière, au lieu de suivre l’ordre anglais par défaut. Voir Formatted Output dans GNU Guile Reference Manual, pour plus d’information sur le formatage en Guile.

paquets

Les descriptions de paquets contiennent parfois du balisage Texinfo (voir Synopsis et descriptions). Le balisage Texinfo ressemble à ‘@code{rm -rf}’, ‘@emph{important}’, etc. Lors de la traduction, laissez le balisage tel quel.

Les caractères après « @ » forment le nom de la balise, et le texte entre « { » et « } » est son contenu. En général, vous ne devriez pas traduire le contenu des balises comme @code, car elles contiennent littéralement du code qui ne change pas avec la langue. Vous pouvez traduire le contenu des balises de formatage comme @emph, @i, @itemize, @item. Cependant, ne traduisez pas le nom de la balise, ou elle ne sera plus reconnue. Ne traduisez pas le mot après @end, c’est le nom de la balise fermée à cet endroit (p. ex. @itemize ... @end itemize).

documentation-manual et documentation-cookbook

La première étape pour assurer la traduction du manuel est de trouver et traduire les chaîne suivantes en premier :

  • version.texi : Traduisez cette chaîne en version-xx.texi, où xx est le code de votre langue (celui affiché dans l’URL sur weblate).
  • contributing.texi : Traduisez cette chaîne en contributing.xx.texi, où xx est le même code de langue.
  • Top : Ne traduisez pas cette chaîne, c’est important pour Texinfo. Si vous la traduisez, le document sera vide (il manquera le nœud Top). Cherchez-là et utilisez Top comme traduction.

Traduire ces chaînes en premier s’assure que nous pouvez inclure vos traduction dans le dépôt guix sans casser le processus make ni la machinerie derrière guix pull.

Le manuel et le livre de recettes utilisent tous les deux Texinfo. Comme pour packages, gardez le balisage Texinfo intact. Il y a plus de types de balises possibles dans le manuel que dans les descriptions de paquets. En général, ne traduisez pas le contenu de @code, @file, @var, @value, etc. Vous devriez traduire le contenu des balises de formatage comme @emph, @i, etc.

Le manuel contient des sections auxquelles on peut se référer par leur nom avec @ref, @xref et @pxref. Nous avons mis en place un mécanisme pour que vous n’ayez pas besoin de traduire leur contenu. Si vous gardez le titre anglais, nous le remplacerons automatiquement par votre traduction de ce titre. Cela s’assure que Texinfo sera toujours capable de trouver le nœud. Si vous décidez de changer la traduction du titre, les références seront automatiquement mises à jour et vous n’aurez pas à les mettre à jour vous-même.

Lorsque vous traduirez des références de livre de recettes vers le manuel, vous devrez remplacer le nom du manuel et le nom de la section. Par exemple, pour traduire @pxref{Defining Packages,,, guix, GNU Guix Reference Manual}, vous devrez remplacer Defining Packages par le titre de cette section dans le manuel traduit seulement si ce titre est traduit. Si le titre n’est pas encore traduit dans votre langue, ne le traduisez pas ici, ou le lien sera cassé. Remplacez guix par guix.xxxx est le code de votre langue. GNU Guix Reference Manual est le texte du lien. Vous pouvez le traduire comme bon vous semble.

website

Les pages du site web sont écrite en SXML, une manière d’écrire du HTML, le langage de base du web, avec des s-expressions. Nous avons un processus pour extraire les chaînes traduisibles dans les sources, et pour remplacer les s-expressions complexes avec du balisage XML plus familier, où chaque balise est numérotée. Vous pouvez changer l’ordre comme bon vous semble, comme dans l’exemple suivant.

#. TRANSLATORS: Defining Packages is a section name
#. in the English (en) manual.
#: apps/base/templates/about.scm:64
msgid "Packages are <1>defined<1.1>en</1.1><1.2>Defining-Packages.html</1.2></1> as native <2>Guile</2> modules."
msgstr "Pakete werden als reine <2>Guile</2>-Module <1>definiert<1.1>de</1.1><1.2>Pakete-definieren.html</1.2></1>."

Remarquez que vous devez inclure les même balises. Vous ne devez pas en oublier.

Si vous faites une erreur, le composant peut échouer à construire correctement dans votre langue, voir casser guix pull. Pour éviter cela, nous avons mis en place un processus pour vérifier le contenu des fichiers avant de les pousser dans notre dépôt. Nous ne pourrons alors pas mettre à jour la traduction en votre langue dans Guix, donc nous vous notifierons (à travers weblate ou par courriel) pour que vous puissez corriger le problème.

En dehors de Weblate

Actuellement, certaines parties de Guix ne peuvent pas être traduites sur Weblate, nous avons besoin d’aide !

Conditions d’inclusion

Il n’y a pas de condition particulière pour ajouter de nouvelles traductions aux composants guix et guix-packages, en dehors du fait qu’elles doivent avoir au moins une chaîne traduite. Les nouvelles langues seront ajoutées à Guix le plus tôt possible. Les fichiers peuvent être supprimés s’ils ne sont plus synchronisés et qu’ils n’ont plus aucune chaîne traduite.

Étant donné que le site web est prévu pour les nouveaux utilisateurs, nous souhaitons que ses traductions soient les plus complètes possible avant de les inclure dans le menu des langues. Pour qu’une nouvelle langue soit ajoutée, elle doit atteindre au moins les 80% de complétion. Lorsqu’une langue est incluse, elle peut être supprimée dans le futur si elle reste désynchronisée et que sa complétion descend en dessous des 60%.

Le manuel et le livre de recettes sont automatiquement ajoutés à la cible de compilation par défaut. Chaque fois que nous synchronisons les traductions, les développeurs et développeuses doivent recompiler tous les manuels et les livres de recettes traduits. C’est inutile s’il s’agit en grande partie du manuel ou du livre de recettes en anglais. De ce fait, nous n’inclurons les nouvelles langues que si elles atteignent 10% de complétion dans le composant en question. Lorsqu’une langue est ajoutée, elle pourra être supprimée dans le futur si elle reste désynchronisée et que son taux de complétion descend en dessous des 5%.

Infrastructure de traduction

Weblate s’appuie sur un dépôt git à partir duquel il découvre les nouvelles chaînes à traduire et vers lequel il pousse les nouvelles traductions. Normalement, il suffirait de lui donner accès en commit à nos dépôts. Cependant, nous avons préféré utiliser un dépôt séparé pour deux raisons. Tout d’abord, nous aurions du donner à Weblate l’accès en commit et autoriser sa clé de signature, mais nous ne lui faisons pas autant confiance qu’aux développeurs de guix, d’autant plus que nous ne gérons pas l’instance nous-même. Ensuite, si les traducteurs et les traductrices font une erreur, cela peut casser la génération du site web ou guix pull pour tout le monde, quelle que soit la langue.

Pour ces raisons, nous utilisons un dépôt dédié pour héberger les traductions, et nous le synchronisons avec nos dépôts guix et artwork après avoir vérifié qu’aucun problème n’est introduit par les traductions.

vous pouvez télécharger les derniers fichiers PO de weblate dans le dépôt Guix en lançant la commande make download-po. Cela télécharge automatiquement les derniers fichiers de weblate, les reformate vers une forme canonique, et vérifie qu’ils ne contiennent pas de problème. Le manuel doit être reconstruit pour vérifier qu’il n’y a pas de problème supplémentaire qui ferait planter Texinfo.

Avant de pousser de nouveaux fichiers de traduction, qui n’existaient pas avant, vous devez les ajouter à la machinerie make pour que les traductions soit effectivement disponibles. Le processus diffère en fonction des composants.


Précédent: Écrire de la documentation, Monter: Contribuer   [Table des matières][Index]