Open phgrosjean opened 1 month ago
Bon voilà, tout cela a été remanié. Les fonctions de traduction rmd2po()
et po2rmd()
sont maintenant dans un package R {rmdpo}. Le contenu de la branche "rmdpo" a été fusionné par pull request dans main (j'effacerai bientôt cette branche "rmdpo").
La traduction des vignettes de data.table se fait donc maintenant à l'aide des fonctions du package {rmdpo} (voir https://github.com/SciViews/rmdpo) lui-même basé sur mdpo sous Python. Il s'agit de fonctions spécialement écrite pour la traduction des vignettes de packages R, puisqu'il n'existe encore rien actuellement à cet effet. Il s'agit d'un travail collaboratif entre Christian Wiam et moi-même.
Trois vignettes sont entièrement traduites (datable-intro, datable-sd-usage et datatable-secondary-indices-and-auto-indexing). Les sept autres sont retraduites automatiquement en utilisant DeepL. Il faut naturellement vérifier et corriger toutes ces dernières traductions.
Les instructions et le script de compilation des fichiers .po et ensuite des versions traduites des vignettes se trouvent dans le sous-dossier rmdpo du dépôt.
Les vignettes à traduire sont dans le sous-dossier vignettes de data.table. Il contient lui-même un sous-dossier "fr" avec les versions françaises traduites et enfin "fr/po" qui contient les fichiers .po de traduction.
@ChristianWia Si je me suis éventuellement trompé quelque part, ou si j'ai oublié une de tes traductions, remplace les fichiers .po qui sont dans main, il se peut que j'aie loupé un truc ou l'autre, même si j'ai fait attention à bien être à jour.
J'ai vérifié en détail les 10 vignettes de data.table et ai encore trouvé des bogues dans mdpo (ce programme est assez bogué en comparaison à po4a, mais po4a ne fonctionne malheureusement pas sous Windows). J'ai implémenté des contournements de ces bogues dans la version 0.2.0 de {rmdpo}. Veuillez donc bien à faire la mise à jour avant de travailler sur la traduction des vignettes. Tous les fichiers .po sont préparés et pré-traduits par DeepL, mais donc, sept d'entre eux doivent encore être relus !
Deux aspects ne sont pas corrigés automatiquement :
"**Justification for Avoiding Blanket Imports:** =====1. ..."
Il n'est pas facile d'implémenter une contre-mesure pour corriger cette erreur dans rmd2po()
, mais par contre, la correction peut facilement se faire lors de la traduction du fragment en séparant les deux à l'aide d'un retour à la ligne à la place de l'espace entre le paragraphe précédent et le début de liste, comme ceci :
"**Justification pour éviter les importations globales:**\n=====1. ..."
rmd2po()
n'arrive pas à mettre en place une contre mesure pour éviter po2md() de faire ensuite n'importe quoi (il ne le fait que quand il trouve quatre espaces ou plus devant les blocs Markdown). Il faudrait corriger dans le fichier d'origine. Apparemment pandoc
accepte deux espaces à cet endroit, mais ce n'est pas une syntaxe Markdown correcte. Par conséquent, je n'essaye pas de corriger ce cas. La conséquence est mineure (blocs non intentés sous des éléments de liste, eux, correctement inventés). Il faudrait faire la correction dans le fichier d'origine en anglais.Tout le reste fonctionne bien.
Dans la branche rmdpo, vous trouverez du code et un exemple pour traduire les vignettes de data.table en passant par poEdit. Je suis parti de la proposition de Christian d'utiliser mdpo et j'ai écris deux fonctions
rmd2po()
etpo2rmd()
dans le sous-dossier rmdpo (c'est un script brut de décoffrage avec du code dupliqué dans les deux fonctions, clairement à retravailler, sachant que cela deviendra à terme un package R {rmdpo}). Au départ, je voulais utiliser {reticulate} et travailler avec du code en Python, mais c'est une complexification inutile à partir du moment où on peut appeler les fonctions nécessaires à la ligne de commander et où aucune interaction n'est nécessaire. J'utilise doncsystem()
etsystem2()
pour interagir avecmd2po
etpo2md
.Naturellement, il faut les installer, voir ici: https://mondeja.github.io/mdpo/latest/install.html. Ensuite, éventuellement indiquer le chemin d'accès dans une option (voir le script).
Dans le dossier data.table, j'ai placé les différentes vignettes de la dernière version de data.table. Ensuite, vous trouverez un sous-dossier "fr" qui contient lui-même un sous-dossier "po". Le fichier .po est créé à l'aide de
rmd2po()
après avoir source le code des fonctions. Ensuite, vous traduisez les chaînes dans poEdit et vous faitespo2rmd()
et le fichier .Rmd en français est créé ou mis à jour. Avec la vignette exemple que j'ai utilisée (la dernière), tout fonctionne sans devoir ajuster quoi que ce soit dans .Rmd final en français.Notez que j'ai inclu le code des chunks dans les traductions. La plupart du temps, il faut le recopier tel quel (Ctrl+B ou Cmd+B sur le Mac). Cela permet d'une part de traduire les commentaires éventuels en français dans ce code, et d'autre part, d'ajuster les chemins relatifs vers les fichiers (on a des jeux de données dans le dossier vignettes, par exemple "flights14.csv" appelé tel quel dans la vignette, mais comme la vignette traduite est dans le sous-dossier "fr", il faut transformer en "../flights14.csv" pour que cela fonctionne).
Voilà. Vos commentaires sont les bienvenus. Pour la seule et unique image, on peut en faire une version francisée dans le sous-dossier "fr", mais il faudra bien sûr que je trouve une solution plus générale.