App-Greple-xlate
view release on metacpan or search on metacpan
i18n/src/xlate.deepl-FR.pod view on Meta::CPAN
=encoding utf-8
=head1 NAME
App::Greple::xlate - module d'aide à la traduction pour greple
=head1 SYNOPSIS
greple -Mxlate --xlate-engine gpt5 --xlate pattern target-file
greple -Mxlate --xlate-engine deepl --xlate pattern target-file
=head1 VERSION
Version 2.00
=head1 DESCRIPTION
B<Greple> B<xlate> : le module recherche les blocs de texte souhaités et les remplace par le texte traduit. Le moteur principal est GPT-5.5 (F<llm/gpt5.pm>), qui appelle la commande L<llm|https://llm.datasette.io/> ; DeepL (F<deepl.pm>) et les moteu...
Les traductions sont mises en cache par fichier ; ainsi, relancer une commande ne coûte rien pour le texte inchangé. Lorsquâun document est modifié, seuls les paragraphes modifiés sont renvoyés à lâAPI ; un moteur sensible au contexte reço...
Si vous souhaitez traduire des blocs de texte normaux dans un document rédigé dans le style pod de Perl, utilisez la commande B<greple> avec les modules C<--xlate-engine gpt5> et C<perl> comme suit :
greple -Mxlate --xlate-engine gpt5 -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm
Dans cette commande, la chaîne de caractères C<^([\w\p].*\n)+> signifie des lignes consécutives commençant par des lettres alphanumériques et de ponctuation. Cette commande permet de mettre en évidence la zone à traduire. L'option B<-tout> est...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/select-area.png">
</p>
Ajoutez ensuite lâoption C<--xlate> pour traduire la zone sélectionnée. Le moteur de traduction identifiera alors les sections souhaitées et les remplacera par le résultat de la traduction.
Par défaut, les textes originaux et traduits sont imprimés dans le format "marqueur de conflit" compatible avec L<git(1)>. En utilisant le format C<ifdef>, vous pouvez facilement obtenir la partie souhaitée par la commande L<unifdef(1)>. Le format...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/format-conflict.png">
</p>
Si vous souhaitez traduire un texte entier, utilisez l'option B<--match-all>. Il s'agit d'un raccourci pour spécifier le modèle C<(?s).+> qui correspond à un texte entier.
Les données au format marqueur de conflit peuvent être visualisées côte à côte par la commande L<sdif|App::sdif> avec l'option C<-V>. Ãtant donné qu'il n'est pas utile de comparer chaque chaîne de caractères, il est recommandé d'utiliser l...
sdif -V --no-filename --no-tc --no-cdif data_shishin.deepl-EN-US.cm
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/sdif-cm-view.png">
</p>
=head1 NORMALIZATION
Le traitement se fait par unités spécifiées, mais dans le cas d'une séquence de plusieurs lignes de texte non vide, elles sont converties ensemble en une seule ligne. Cette opération s'effectue comme suit :
=over 2
=item *
Supprimer les espaces blancs au début et à la fin de chaque ligne.
=item *
Si une ligne se termine par un caractère de ponctuation de pleine largeur, concaténer avec la ligne suivante.
=item *
Si une ligne se termine par un caractère de pleine largeur et que la ligne suivante commence par un caractère de pleine largeur, concaténer les lignes.
=item *
Si la fin ou le début d'une ligne n'est pas un caractère de pleine largeur, concaténer les lignes en insérant un caractère d'espacement.
=back
Les données mises en cache sont gérées sur la base du texte normalisé, de sorte que même si des modifications sont apportées sans affecter les résultats de la normalisation, les données de traduction mises en cache resteront effectives.
Ce processus de normalisation n'est effectué que pour le premier (0e) motif et les motifs pairs. Ainsi, si deux motifs sont spécifiés comme suit, le texte correspondant au premier motif sera traité après normalisation, et aucun processus de norm...
greple -Mxlate -E normalized -E not-normalized
Par conséquent, utilisez le premier motif pour le texte qui doit être traité en combinant plusieurs lignes en une seule, et utilisez le second motif pour le texte préformaté. S'il n'y a pas de texte à faire correspondre dans le premier motif, u...
=head1 MASKING
Il arrive que des parties de texte ne soient pas traduites. Par exemple, les balises dans les fichiers markdown. DeepL suggère que dans de tels cas, la partie du texte à exclure soit convertie en balises XML, traduite, puis restaurée une fois la t...
--xlate-setopt maskfile=MASKPATTERN
Cela interprétera chaque ligne du fichier C<MASKPATTERN> comme une expression régulière, traduira les chaînes qui correspondent et reviendra en arrière après le traitement. Les lignes commençant par C<#> sont ignorées.
Les motifs complexes peuvent être écrits sur plusieurs lignes en utilisant des sauts de ligne échappés par une barre oblique inversée.
L'option B<--xlate-mask> permet de voir comment le texte est transformé par le masquage.
Le masquage empêche le balisage dâêtre traduit. Pour masquer des chaînes sensibles vis-à -vis du service de traduction lui-même, consultez L</ANONYMIZATION AND TEMPLATES> ; les deux méthodes peuvent être utilisées conjointement.
Cette interface est expérimentale et peut être modifiée à l'avenir.
=head1 ANONYMIZATION AND TEMPLATES
Les chaînes sensibles peuvent être masquées avant dâêtre envoyées à lâAPI de traduction, puis restaurées dans le résultat final. Trois sources de règles dâanonymisation sont disponibles : un fichier de dictionnaire (B<--xlate-anonymize...
Pour les documents de type formulaire (rapports trimestriels et autres), définissez les acteurs au préalable et faites-y référence dans le corps du texte :
---
å ±åè
: å±±ç°å¤ªé
çºæ³¨ä¼ç¤¾: ã¢ã¯ã¡æ ªå¼ä¼ç¤¾
---
æ¬ä»¶ã«ã¤ã㦠{{ å ±åè
}} ã調æ»ãè¡ã£ãã
Traduisez le modèle une fois par langue avec C<--xlate-template> (et C<--xlate-frontmatter> lorsque les valeurs sont conservées dans le fichier), puis générez chaque cas en mode autonome avec B<pandoc-embedz> â les valeurs situées sous C<globa...
greple -Mxlate --xlate --xlate-engine=gpt5 --xlate-to=EN-US \
--xlate-template= --xlate-format=xtxt \
--match-paragraph --all --need=0 \
report-template.md > report-template.EN.md
pandoc-embedz --standalone report-template.EN.md \
-c case-123.yaml -o report-123.EN.md < /dev/null
Pour les balises en ligne, fournir une configuration de définition de macro permet au même modèle traduit dâafficher soit les noms réels, soit une version expurgée :
# macros.yaml # macros-redacted.yaml
preamble: | preamble: |
{% macro person(name) %}{{ name }}{% endmacro %}
{% macro person(name) %}(é¢ä¿è
){% endmacro %}
Excluez les blocs embedz de la traduction lorsquâun document en contient :
--exclude '^```embedz\n(?s:.*?)^```\n'
=head1 OPTIONS
=over 7
=item B<--xlate>
=item B<--xlate-color>
=item B<--xlate-fold>
=item B<--xlate-fold-width>=I<n> (Default: 70)
Invoquez le processus de traduction pour chaque zone appariée.
Sans cette option, B<greple> se comporte comme une commande de recherche normale. Vous pouvez donc vérifier quelle partie du fichier fera l'objet de la traduction avant d'invoquer le travail réel.
Le résultat de la commande va vers la sortie standard, donc redirigez vers le fichier si nécessaire, ou envisagez d'utiliser le module L<App::Greple::update>.
L'option B<--xlate> appelle l'option B<--xlate-color> avec l'option B<--color=never>.
Avec l'option B<--xlate-fold>, le texte converti est plié selon la largeur spécifiée. La largeur par défaut est de 70 et peut être définie par l'option B<--xlate-fold-width>. Quatre colonnes sont réservées à l'opération de rodage, de sorte ...
=item B<--xlate-engine>=I<engine>
Spécifie le moteur de traduction à utiliser.
à l'heure actuelle, les moteurs suivants sont disponibles
=over 2
=item * B<gpt5>: gpt-5.5 (via the C<llm> command)
=item * B<deepl>: DeepL API (via the C<deepl> command)
=item * B<gpt3>: gpt-3.5-turbo (legacy, via the C<gpty> command)
=item * B<gpt4o>: gpt-4o-mini (legacy, via the C<gpty> command)
=back
Les modules du moteur sont dâabord recherchés dans les espaces de noms du backend (C<llm>, puis C<gpty>), puis directement sous C<App::Greple::xlate>. Ainsi, C<gpt5> charge C<App::Greple::xlate::llm::gpt5> qui appelle la commande C<llm>, tandis qu...
=item B<--xlate-labor>
=item B<--xlabor>
Au lieu d'appeler le moteur de traduction, vous êtes censé travailler pour lui. Après avoir préparé le texte à traduire, il est copié dans le presse-papiers. Vous devez les coller dans le formulaire, copier le résultat dans le presse-papiers ...
=item B<--xlate-to> (Default: C<EN-US>)
Spécifiez la langue cible. Les moteurs LLM acceptent tout nom ou code de langue compris par le modèle ; celui-ci est interpolé dans la ligne de commande de traduction. Vous pouvez obtenir la liste des langues disponibles via la commande C<deepl la...
=item B<--xlate-from> (Default: C<ORIGINAL>)
Ãtiquette utilisée pour le texte dâorigine dans les formats de sortie C<conflict>, C<colon> et C<ifdef>. Avec le moteur B<DeepL>, une valeur non par défaut est également transmise en tant que langue source.
=item B<--xlate-format>=I<format> (Default: C<conflict>)
Spécifiez le format de sortie pour le texte original et le texte traduit.
Les formats suivants autres que C<xtxt> supposent que la partie à traduire est une collection de lignes. En fait, il est possible de ne traduire qu'une partie d'une ligne, mais la spécification d'un format autre que C<xtxt> ne produira pas de résu...
=over 4
=item B<conflict>, B<cm>
Le texte original et le texte converti sont imprimés au format L<git(1)> marqueur de conflit.
<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA
Vous pouvez récupérer le fichier original par la commande L<sed(1)> suivante.
sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
=item B<colon>, I<:::::::>
Le texte original et le texte traduit sont édités dans un style de conteneur personnalisé de markdown.
::::::: ORIGINAL
original text
:::::::
::::::: JA
translated Japanese text
:::::::
Le texte ci-dessus sera traduit en HTML.
<div class="ORIGINAL">
original text
</div>
<div class="JA">
translated Japanese text
</div>
Le nombre de deux-points est de 7 par défaut. Si vous spécifiez une séquence de deux points comme C<:::::>, elle est utilisée à la place des 7 points.
=item B<ifdef>
Le texte original et le texte converti sont imprimés au format L<cpp(1)> C<#ifdef>.
#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif
Vous pouvez récupérer uniquement le texte japonais par la commande B<unifdef> :
unifdef -UORIGINAL -DJA foo.ja.pm
=item B<space>
=item B<space+>
Le texte original et le texte converti sont imprimés séparés par une seule ligne blanche. Pour C<space+>, le texte converti est également suivi d'une nouvelle ligne.
=item B<xtxt>
Si le format est C<xtxt> (texte traduit) ou inconnu, seul le texte traduit est imprimé.
=back
=item B<--xlate-maxlen>=I<chars> (Default: 0)
Spécifiez la longueur maximale du texte à envoyer à lâAPI en une seule fois. La valeur par défaut 0 correspond à la limite propre au moteur : pour le service DeepL en compte gratuit, elle est de 128K pour lâAPI (B<--xlate>) et de 5000 pour l...
=item B<--xlate-maxline>=I<n> (Default: 0)
Indiquez le nombre maximal de lignes de texte à envoyer à l'API en une seule fois.
Définissez cette valeur sur 1 si vous souhaitez traduire une ligne à la fois. Cette option est prioritaire sur l'option C<--xlate-maxlen>.
=item B<--xlate-prompt>=I<text>
Spécifiez une invite personnalisée à envoyer au moteur de traduction. Cette option est disponible pour les moteurs LLM (C<gpt3>, C<gpt4o>, C<gpt5>), mais pas pour DeepL. Vous pouvez personnaliser le comportement de traduction en fournissant des in...
=item B<--xlate-context>=I<text>
Spécifiez des informations contextuelles supplémentaires à envoyer au moteur de traduction. Cette option peut être utilisée plusieurs fois pour fournir plusieurs chaînes de contexte. Les informations contextuelles aident le moteur de traduction...
=item B<--xlate-context-window>=I<n>
(Context-aware engines only, e.g. C<gpt5> on the llm backend)
Nombre de blocs traduits environnants transmis comme contexte de référence lors de la retraduction des blocs modifiés (valeur par défaut : 2). Le contexte inclut également le texte source brut entourant la zone modifiée (titres, structure de li...
=item B<--xlate-cache-seed>=I<file>
Initialise le cache dâun nouveau document à partir du fichier de cache dâun autre document. Utile pour les rapports périodiques : initialise le cache du nouveau numéro avec celui du numéro précédent, de sorte que les paragraphes inchangés ...
=item B<--xlate-anonymize>=I<file>
Anonymiser les chaînes sensibles avant leur envoi à lâAPI de traduction, puis les restaurer dans la sortie. Le fichier de dictionnaire contient une entrée par élément : au format JSON (canonique, générable par une machine)
[ { "category": "person", "text": "å±±ç°å¤ªé" },
{ "category": "company", "regex": "ã¢ã¯ã¡(æ ªå¼ä¼ç¤¾)?" } ]
ou au format ligne simple (C<category pattern>, C</.../> pour les expressions régulières). Chaque élément est remplacé par une balise de catégorie telle que C<< <person id=1 /> >> ; une même chaîne reçoit toujours la même balise, ce qui per...
Un dictionnaire peut être généré par un outil externe â par exemple un modèle local extrayant des entités sensibles :
llm -m <local-model> \
-s 'Extract sensitive entities as a JSON array of objects
with "category" and "text" fields.' \
< report.md > report.anon.json
greple -Mxlate --xlate-anonymize=report.anon.json ...
La présence dâun BOM UTF-8 dans le fichier est tolérée. Les valeurs au format « front matter » peuvent comporter un commentaire final uniquement sur leur propre ligne, et non après la valeur.
=item B<--xlate-anonymize-mark>[=I<regex>]
Collectez les entrées dâanonymisation à partir des balises intégrées dans le document lui-même. Marquez la première occurrence comme C<{{ person("å±±ç°å¤ªé") }}> et chaque occurrence de la chaîne dans lâensemble du document sera anonymi...
Notez quâavec une option à valeur facultative comme celle-ci, un argument de fichier suivant serait considéré comme la valeur : écrivez C<--xlate-anonymize-mark=> (suivi de C<=>) lorsque vous utilisez la notation par défaut.
Dâautres notations peuvent être configurées, par exemple C<< --xlate-anonymize-mark='@@(?<category>[a-z][a-z0-9_]*):(?<text>[^\n]+?)@@' >> pour les balises de type C<@@person:NAME@@>, ou une forme de commentaire HTML qui reste invisible dans le M...
=item B<--xlate-template>[=I<regex>]
Traitez les expressions de modèle (par défaut : Jinja2 C<{{ ... }}>, C<{% ... %}>, C<{# ... #}>) comme des espaces réservés opaques : demandez au modèle de les copier telles quelles et vérifiez, bloc par bloc, que la réponse contient exactemen...
Notez quâavec une option à valeur facultative comme celle-ci, un argument de fichier suivant serait considéré comme la valeur : écrivez C<--xlate-template=> (suivi de C<=>) lorsque vous utilisez la notation par défaut.
=item B<--xlate-frontmatter>
Traitez un bloc commençant par C<---> ... C<---> comme une partie dâen-tête YAML : lâexclure de la traduction et des tranches de contexte de la phase 2, et ajouter ses valeurs plates C<key: value> aux règles dâanonymisation (catégorie C<var...
Laissez toujours une ligne vide après la balise de fermeture C<--->. Avec un modèle de correspondance de type paragraphe, le front matter qui se fond directement dans le corps du texte forme un bloc chevauchant que lâexclusion ne peut pas supprim...
=item B<--xlate-glossary>=I<glossary>
Spécifier un identifiant de glossaire à utiliser pour la traduction. Cette option n'est disponible que lors de l'utilisation du moteur DeepL. L'ID du glossaire doit être obtenu à partir de votre compte DeepL et garantit une traduction cohérente ...
=item B<--xlate-dryrun>
Nâappelez pas lâAPI de traduction ; affichez plutôt, via la barre de progression, chaque charge utile exactement telle quâelle serait transmise (après anonymisation et masquage). Utile pour vérifier ce qui sort de la machine et pour estimer ...
=item B<-->[B<no->]B<xlate-progress> (Default: True)
Consultez le résultat de la traduction en temps réel dans la sortie STDERR. La charge utile C<From> est affichée telle quâelle est transmise, après anonymisation et masquage.
=item B<--xlate-stripe>
Utilisez le module L<App::Greple::stripe> pour afficher la partie correspondante sous forme de bandes zébrées. Ceci est utile lorsque les parties correspondantes sont connectées dos à dos.
La palette de couleurs est modifiée en fonction de la couleur d'arrière-plan du terminal. Si vous souhaitez le spécifier explicitement, vous pouvez utiliser B<--xlate-stripe-light> ou B<--xlate-stripe-dark>.
=item B<--xlate-mask>
( run in 0.421 second using v1.01-cache-2.11-cpan-cd2fffc590a )