configuration des traductions

Les traduction de la documentation de darktable sont maintenues via Weblate.

🔗Aperçu de la configuration et du flux d’informations pour les traductions utilisant Weblate

En bref:

  1. Les documents sont avant-tout conservés en anglais dans les fichiers .md présents dans content/*.md.
  2. À partir de là, un fichier POT (po/content.pot) de toutes les chaînes traduisibles est maintenu.
  3. Weblate maintient les fichiers PO individuels de chaque langue (po/content.{lang}.po) qui contiennent les chaînes traduites.
  4. Lors du déploiement des documents, les fichiers .md spécifiques à la langue sont générés à l’aide de generate-translations.sh que hugo restitue ensuite aux fichiers .html et aux variantes EPUB et PDF.

🔗GitHub vers Weblate : synchronisation des chaînes sources

  1. Les fichiers anglais originaux (content/*.md) sont modifiés via une pull request sur GitHub (voir flux de travail).

  2. Une action GitHub nocturne met à jour le fichier POT (po/content.pot) contenant toutes les chaînes traduisibles avec generate-translations.sh --no-translations. Remarque : le script met à jour les fichiers POT et PO, mais nous ne validons pas les fichiers PO mis à jour dans le référentiel car dans notre configuration, les fichiers PO sont entièrement gérés par Weblate pour éviter les conflits de fusion.

  3. Weblate extrait automatiquement le fichier POT mis à jour (déclenché par l’application GitHub Weblate) et remplit en interne le fichier PO de chaque langue traduite avec des chaînes nouvelles/mises à jour

  4. Weblate valide les modifications sur GitHub en ouvrant une pull request.

  5. La pull request est fusionnée après examen.

🔗Weblate vers GitHub : synchronisation de traduction

  1. Les traductions ont lieu sur Weblate. Consultez guide des traducteurs pour un guide sur la façon de traduire.

  2. Weblate met à jour en interne le fichier PO de chaque langue et les valide sur GitHub via une pull request. Pour limiter le nombre de demandes d’extraction, cela se produit par lots.

🔗Déploiement des traductions

Lors du déploiement sur docs.darktable.org, les fichiers .md traduits sont générés à partir des fichiers PO dans /po/ à l’aide de generate-translations.sh --no-update. Cette étape est désactivée pour la construction automatique Pages GitHub.

🔗Ajouter une nouvelle langue

  1. Ajouter une nouvelle langue à Weblate. Consultez la documentation de Weblate pour savoir comment procéder. Assurez-vous que le fichier PO nouvellement créé est validé dans le référentiel dtdocs.

  2. Dans les fichiers config.yaml, config-pdf.yaml et config-epub.yaml, localisez la ligne languages:.

  3. Ajoutez la langue que vous souhaitez traduire. Par exemple, l’anglais ressemble à ceci :

      en-us:
        title: darktable user manual
        weight: 1
    

🔗Activation et désactivation des langues

Les langues sont contrôlées par deux systèmes indépendants qui doivent être synchronisés manuellement :

  • config.yaml et config-pdf.yaml — configuration de Hugo. Les langues répertoriées ici obtiennent leur propre section du site Web créé ou du PDF.

  • disable-languages — Une liste séparée par des espaces de codes de langue dans le répertoire de base du référentiel. generate-translations.sh lit ce fichier et ignore la génération de fichiers .{lang}.md pour toute langue répertoriée ici, qu’un fichier PO existe ou non pour elle.

Le sélecteur de langue dans le thème répertorie uniquement une langue lorsque des fichiers .{lang}.md traduits existent pour la page courante — il utilise le .IsTranslated de Hugo et des variables .Translations, qui reflètent les fichiers réels sur le disque, et non les entrées config.yaml. Une langue présente dans config.yaml mais répertoriée dans disable-languages n’apparaîtra donc pas dans le commutateur, car aucun fichier traduit n’est généré pour elle. Son entrée config.yaml est inactive jusqu’à ce qu’elle soit supprimée de disable-languages.

Pour activer une langue, elle doit être présente dans config.yaml, config-pdf.yaml et config-epub.yaml et absente de disable-languages.

Pour désactiver une langue, elle doit être répertoriée dans disable-languages. Les entrées config.yaml, config-pdf.yaml et config-epub.yaml peuvent rester en place lorsque la langue est réactivée.

🔗Traduction de chaînes de thèmes pour site Web, EPUB et PDF

La documentation de darktable comporte trois thèmes : un pour le site Web HTML, un pour EPUB et un pour le PDF. Chacun comporte un petit ensemble de chaînes d’interface utilisateur (par exemple « Table des matières », « Copyright », « Recherche ») qui doivent être traduits manuellement — ces chaînes ne sont pas gérées par Weblate..

  1. Allez dans themes/hugo-darktable-docs-themes/i18n.

  2. Dupliquez le fichier en-us.yaml et nommez le nouveau fichier d’après votre langue à l’aide d’un code régional avec tiret (par exemple de-de.yaml, fr-fr.yaml).

  3. Traduisez les chaines de texte du nouveau fichier yaml.

  4. Vérifiez le fichier yaml traduit dans git, envoyez-le sur GitHub et passez une PR pour que vos modifications soient acceptées.

  5. Répétez l’opération pour themes/hugo-darktable-docs-epub-theme/i18n et themes/hugo-darktable-docs-pdf-theme/i18n. Ces thèmes utilisent des codes régionaux plus courts, utilisant uniquement le code de langue (par exemple de.yaml) ou un trait de soulignement pour les variantes régionales (par exemple pt_br.yaml).

🔗generate-translations.sh

Ce script est utilisé lors d’une action GitHub nocturne et peut également être exécuté localement par les mainteneurs qui doivent mettre à jour les traductions manuellement ou déboguer la build.

Le script est un wrapper autour de po4a pour orchestrer l’interaction entre les fichiers .md originaux et les traductions. Le script lit le fichier disable-languages dans le répertoire de base du référentiel, filtre les langues désactivées, crée un fichier de configuration temporaire po4a contenant tous les fichiers content/**/*.md, puis appelle po4a $1 --verbose $po4a_conf — l’indicateur est transmis directement à po4a. Cela nécessite l’un des trois arguments.

--no-translations
Génère des fichiers POT et PO (po/content.pot et po/content.{lang}.po) à partir des fichiers source .md (content/*.md). Ne produit pas de fichiers de sortie traduits. Les chaînes nouvelles ou modifiées des fichiers sources sont extraites dans les fichiers POT/PO, mais aucun fichier *.{lang}.md n’est créé. Ceci est utilisé après les mises à jour des fichiers sources anglais pour préparer les fichiers POT et PO pour Weblate.
--no-update
Génère les fichiers Markdown traduits à partir des fichiers PO existants, sans mettre à jour les fichiers POT/PO. Cela signifie que les fichiers sources (content/*.md) ne sont pas relus ; les traductions existantes sont rendues directement dans des fichiers .{lang}.md localisés
--rm-translations
Supprime les fichiers traduits générés. po4a supprime les fichiers de sortie localisés *.{lang}.md précédemment créés par --no-update. Les fichiers PO/POT restent intacts.

translations