Précédent: Écrire de la documentation, Monter: Contribuer [Table des matières][Index]
É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.
guix
contient toutes les chaînes du logiciel Guix (le guide
d’installation du système, le gestionnaire de paquets, etc), en dehors des
paquets.
packages
contient le synopsis (une description courte en
une ligne) et la description (longue) des paquets de Guix.
website
contient le site web officiel de Guix, en dehors
des billets de blog et du contenu multimédia.
documentation-manual
correspond à ce manuel.
documentation-cookbook
est le composant du livre de recettes.
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.
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 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.
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
).
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.xx
où xx
est le code de votre langue. GNU Guix
Reference Manual
est le texte du lien. Vous pouvez le traduire comme bon
vous semble.
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.
Actuellement, certaines parties de Guix ne peuvent pas être traduites sur Weblate, nous avons besoin d’aide !
guix pull
peuvent être traduites dans news.scm, mais ne sont
pas disponibles sur Weblate. Si vous voulez fournir une traduction, vous
pouvez préparer un correctif comme décrit plus haut, ou simplement nous
envoyer votre traduction avec le nom de l’entrée que vous avez traduite et
votre langue. Voir Écrire des nouveautés de canaux, pour plus d’information sur les
nouvelles de canaux.
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%.
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.
guix
et packages
doivent
être enregistrés en ajoutant la nouvelle langue dans po/guix/LINGUAS
ou po/packages/LINGUAS.
documentation-manuel
doivent
être enregistrés en ajoutant le nom de fichier à DOC_PO_FILES
dans
po/doc/local.mk, le manuel généré %D%/guix.xx.texi à
info_TEXINFOS
dans doc/local.mk et les fichiers
%D%/guix.xx.texi et %D%/contributing.xx.texi à
TRANSLATED_INFO
aussi dans doc/local.mk.
documentation-cookbook
doivent
être enregistrés en ajoutant le nom de fichier à
DOC_COOKBOOK_PO_FILES
dans po/doc/local.mk, le manuel généré
%D%/guix-cookbook.xx.texi à info_TEXINFOS
dans
doc/local.mk et le fichier généré %D%/guix-cookbook.xx.texi à
TRANSLATED_INFO
aussi dans doc/local.mk.
website
doivent être ajoutés dans
le dépôt guix-artwork
, dans website/po/. Vous devez mettre à
jour website/po/LINGUAS et website/po/ietf-tags.scm en
fonction (voir website/i18n-howto.txt pour plus d’information sur le
processus).
Précédent: Écrire de la documentation, Monter: Contribuer [Table des matières][Index]