App-Greple-xlate
view release on metacpan or search on metacpan
i18n/src/xlate.deepl-ES.pod view on Meta::CPAN
=encoding utf-8
=head1 NAME
App::Greple::xlate - módulo de traducción para 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.01
=head1 DESCRIPTION
B<Greple> B<xlate>: el módulo busca los bloques de texto deseados y los sustituye por el texto traducido. El motor principal es GPT-5.5 (F<llm/gpt5.pm>), que ejecuta el comando L<llm|https://llm.datasette.io/>; También se incluyen DeepL (F<deepl.pm...
Las traducciones se almacenan en caché por archivo, por lo que volver a ejecutar un comando no supone ningún coste para el texto que no haya cambiado. Cuando se edita un documento, solo se envÃan de nuevo a la API los párrafos modificados; ademá...
Si deseas traducir bloques de texto normales en un documento escrito en el estilo pod de Perl, utiliza el comando B<greple> con los módulos C<--xlate-engine gpt5> y C<perl> de la siguiente manera:
greple -Mxlate --xlate-engine gpt5 -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm
En este comando, la cadena de patrones C<^([\w\pP].*\n)+> significa lÃneas consecutivas que comienzan con letras alfanuméricas y de puntuación. Este comando muestra resaltada el área a traducir. La opción B<--all> se utiliza para producir el tex...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/select-area.png">
</p>
A continuación, añade la opción C<--xlate> para traducir el área seleccionada. De este modo, el sistema localizará las secciones deseadas y las sustituirá por el resultado del motor de traducción.
Por defecto, el texto original y traducido se imprime en el formato "marcador de conflicto" compatible con L<git(1)>. Usando el formato C<ifdef>, puede obtener la parte deseada mediante el comando L<unifdef(1)> fácilmente. El formato de salida puede...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/format-conflict.png">
</p>
Si desea traducir todo el texto, utilice la opción B<--match-all>. Es un atajo para especificar el patrón C<(?s).+> que coincide con todo el texto.
Los datos en formato de marcador de conflicto pueden visualizarse en estilo lado a lado mediante el comando L<sdif|App::sdif> con la opción C<-V>. Dado que no tiene sentido comparar cadena por cadena, se recomienda la opción C<--no-cdif>. Si no nec...
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
El procesamiento se realiza en unidades especificadas, pero en el caso de una secuencia de varias lÃneas de texto no vacÃas, se convierten juntas en una sola lÃnea. Esta operación se realiza del siguiente modo:
=over 2
=item *
Se eliminan los espacios en blanco al principio y al final de cada lÃnea.
=item *
Si una lÃnea termina con un carácter de puntuación de ancho completo, concaténela con la lÃnea siguiente.
=item *
Si una lÃnea termina con un carácter de ancho completo y la lÃnea siguiente comienza con un carácter de ancho completo, concatene las lÃneas.
=item *
Si el final o el principio de una lÃnea no es un carácter de ancho completo, concaténelas insertando un carácter de espacio.
=back
Los datos de la caché se gestionan en función del texto normalizado, por lo que aunque se realicen modificaciones que no afecten a los resultados de la normalización, los datos de traducción almacenados en la caché seguirán siendo efectivos.
Este proceso de normalización sólo se realiza para el primer patrón (0) y los patrones pares. Por lo tanto, si se especifican dos patrones como los siguientes, el texto que coincida con el primer patrón se procesará después de la normalización...
greple -Mxlate -E normalized -E not-normalized
Por lo tanto, utilice el primer patrón para texto que deba procesarse combinando varias lÃneas en una sola, y utilice el segundo patrón para texto preformateado. Si no hay texto que coincidir en el primer patrón, utilice un patrón que no coincid...
=head1 MASKING
En ocasiones, hay partes del texto que no desea traducir. Por ejemplo, las etiquetas de los archivos markdown. DeepL sugiere que, en tales casos, la parte del texto que debe excluirse se convierta en etiquetas XML, se traduzca y, una vez finalizada l...
--xlate-setopt maskfile=MASKPATTERN
Esto interpretará cada lÃnea del archivo C<MASKPATTERN> como una expresión regular, traducirá las cadenas que coincidan con ella y revertirá después del procesamiento. Las lÃneas que comienzan con C<#> se ignoran.
Los patrones complejos pueden escribirse en varias lÃneas con saltos de lÃnea escapados mediante la barra invertida.
Cómo se transforma el texto mediante el enmascaramiento puede verse con la opción B<--xlate-mask>.
El enmascaramiento evita que se traduzcan los elementos de marcado. Para ocultar cadenas sensibles al propio servicio de traducción, consulta L</ANONYMIZATION AND TEMPLATES>; ambas opciones pueden utilizarse conjuntamente.
Esta interfaz es experimental y está sujeta a cambios en el futuro.
=head1 ANONYMIZATION AND TEMPLATES
Las cadenas sensibles pueden ocultarse antes de enviarlas a la API de traducción y restaurarse en el resultado. Hay tres fuentes de reglas de anonimización disponibles: un archivo de diccionario (B<--xlate-anonymize>), marcas en lÃnea en el propio...
Para los documentos de formulario (informes trimestrales y similares), define los actores desde el principio y haz referencia a ellos en el cuerpo:
---
å ±åè
: å±±ç°å¤ªé
çºæ³¨ä¼ç¤¾: ã¢ã¯ã¡æ ªå¼ä¼ç¤¾
---
æ¬ä»¶ã«ã¤ã㦠{{ å ±åè
}} ã調æ»ãè¡ã£ãã
Traduce la plantilla una vez por idioma con C<--xlate-template> (y C<--xlate-frontmatter> cuando los valores se mantengan en el archivo); a continuación, genera cada caso con B<pandoc-embedz> en modo autónomo; los valores bajo C<global:> en una con...
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
En el caso de las marcas en lÃnea, proporcionar una configuración de definición de macro hace que la misma plantilla traducida muestre los nombres reales o una versión censurada:
# macros.yaml # macros-redacted.yaml
preamble: | preamble: |
{% macro person(name) %}{{ name }}{% endmacro %}
{% macro person(name) %}(é¢ä¿è
){% endmacro %}
Excluye los bloques «embedz» de la traducción cuando un documento los contenga:
--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)
Invoca el proceso de traducción para cada área coincidente.
Sin esta opción, B<greple> se comporta como un comando de búsqueda normal. Por lo tanto, puede comprobar qué parte del archivo será objeto de la traducción antes de invocar el trabajo real.
El resultado del comando va a la salida estándar, asà que redirÃjalo al archivo si es necesario, o considere usar el módulo L<App::Greple::update>.
La opción B<--xlate> llama a la opción B<--xlate-color> con la opción B<--color=nunca>.
Con la opción B<--xlate-fold>, el texto convertido se dobla por el ancho especificado. La anchura por defecto es 70 y puede ajustarse con la opción B<--xlate-fold-width>. Se reservan cuatro columnas para la operación de repliegue, por lo que cada ...
=item B<--xlate-engine>=I<engine>
Especifica el motor de traducción que se va a utilizar.
En este momento, están disponibles los siguientes motores
=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
Los módulos del motor se buscan primero en los espacios de nombres del backend (C<llm>, luego C<gpty>), y después directamente bajo C<App::Greple::xlate>. AsÃ, C<gpt5> carga C<App::Greple::xlate::llm::gpt5>, que a su vez llama al comando C<llm>, m...
=item B<--xlate-labor>
=item B<--xlabor>
En lugar de llamar al motor de traducción, se espera que trabajen para. Después de preparar el texto a traducir, se copia en el portapapeles. Se espera que los pegue en el formulario, copie el resultado en el portapapeles y pulse Retorno.
=item B<--xlate-to> (Default: C<EN-US>)
Especifica el idioma de destino. Los motores LLM aceptan cualquier nombre o código de idioma que el modelo comprenda; este se interpolará en la solicitud de traducción. Puedes obtener los idiomas disponibles mediante el comando C<deepl languages> ...
=item B<--xlate-from> (Default: C<ORIGINAL>)
Etiqueta utilizada para el texto original en los formatos de salida C<conflict>, C<colon> y C<ifdef>. Con el motor B<DeepL>, también se pasa un valor no predeterminado como idioma de origen.
=item B<--xlate-format>=I<format> (Default: C<conflict>)
Especifique el formato de salida del texto original y traducido.
Los siguientes formatos distintos de C<xtxt> asumen que la parte a traducir es una colección de lÃneas. De hecho, es posible traducir sólo una parte de una lÃnea, pero especificar un formato distinto de C<xtxt> no producirá resultados significat...
=over 4
=item B<conflict>, B<cm>
El texto original y el convertido se imprimen en formato de marcador de conflicto L<git(1)>.
<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA
Puede recuperar el archivo original con el siguiente comando L<sed(1)>.
sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
=item B<colon>, I<:::::::>
El texto original y el traducido salen en un estilo contenedor personalizado de markdown.
::::::: ORIGINAL
original text
:::::::
::::::: JA
translated Japanese text
:::::::
El texto anterior se traducirá a lo siguiente en HTML.
<div class="ORIGINAL">
original text
</div>
<div class="JA">
translated Japanese text
</div>
El número de dos puntos es 7 por defecto. Si especifica una secuencia de dos puntos como C<:::::>, se utiliza en lugar de 7 dos puntos.
=item B<ifdef>
El texto original y el convertido se imprimen en formato L<cpp(1)> C<#ifdef>.
#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif
Puede recuperar sólo el texto japonés mediante el comando B<unifdef>:
unifdef -UORIGINAL -DJA foo.ja.pm
=item B<space>
=item B<space+>
El texto original y el convertido se imprimen separados por una sola lÃnea en blanco. Para C<espacio+>, también se imprime una nueva lÃnea después del texto convertido.
=item B<xtxt>
Si el formato es C<xtxt> (texto traducido) o desconocido, sólo se imprime el texto traducido.
=back
=item B<--xlate-maxlen>=I<chars> (Default: 0)
Especifica la longitud máxima del texto que se enviará a la API de una sola vez. El valor por defecto 0 se refiere al lÃmite propio del motor: para el servicio gratuito de DeepL, este es de 128K para la API (B<--xlate>) y de 5000 para la interfaz ...
=item B<--xlate-maxline>=I<n> (Default: 0)
Especifique el número máximo de lÃneas de texto que se enviarán a la API de una sola vez.
Establezca este valor en 1 si desea traducir una lÃnea cada vez. Esta opción tiene prioridad sobre la opción C<--xlate-maxlen>.
=item B<--xlate-prompt>=I<text>
Especifica una indicación personalizada que se enviará al motor de traducción. Esta opción está disponible para los motores LLM (C<gpt3>, C<gpt4o>, C<gpt5>), pero no para DeepL. Puedes personalizar el comportamiento de la traducción proporciona...
=item B<--xlate-context>=I<text>
Especifique la información de contexto adicional que se enviará al motor de traducción. Esta opción puede utilizarse varias veces para proporcionar varias cadenas de contexto. La información de contexto ayuda al motor de traducción a comprender...
=item B<--xlate-context-window>=I<n>
(Context-aware engines only, e.g. C<gpt5> on the llm backend)
Número de bloques traducidos circundantes que se pasan como contexto de referencia al volver a traducir los bloques modificados (por defecto, 2). El contexto también incluye el texto fuente sin procesar que rodea la región modificada (encabezados,...
=item B<--xlate-cache-seed>=I<file>
Inicializa la caché de un nuevo documento a partir del archivo de caché de otro documento. Resulta útil para informes periódicos: se inicializa la caché del nuevo número con la del número anterior, de modo que los párrafos que no han cambiado...
=item B<--xlate-anonymize>=I<file>
Anonimiza las cadenas sensibles antes de enviarlas a la API de traducción y las restaura en la salida. El archivo de diccionario proporciona una entrada por elemento: en JSON (canónico, generable por máquina)
[ { "category": "person", "text": "å±±ç°å¤ªé" },
{ "category": "company", "regex": "ã¢ã¯ã¡(æ ªå¼ä¼ç¤¾)?" } ]
o en un formato de lÃnea simple (C<category pattern>, C</.../> para expresiones regulares). Cada elemento se sustituye por una etiqueta de categorÃa como C<< <person id=1 /> >>; a la misma cadena siempre se le asigna la misma etiqueta, de modo que ...
Se puede generar un diccionario mediante una herramienta externa âpor ejemplo, un modelo local que extraiga entidades 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 ...
Se tolera la presencia de un BOM UTF-8 en el archivo. Los valores en formato de lÃnea de encabezado pueden incluir un comentario al final, pero solo en su propia lÃnea, no después del valor.
=item B<--xlate-anonymize-mark>[=I<regex>]
Recopila las entradas de anonimización a partir de las marcas en lÃnea del propio documento. Marca la primera aparición como C<{{ person("å±±ç°å¤ªé") }}> y todas las apariciones de la cadena en todo el documento quedarán anonimizadas. La marca...
Ten en cuenta que, con una opción de valor opcional como esta, se tomarÃa como valor cualquier argumento de archivo que le siguiera: escribe C<--xlate-anonymize-mark=> (con un C<=> al final) cuando utilices la notación predeterminada.
Se pueden configurar notaciones alternativas, por ejemplo, C<< --xlate-anonymize-mark='@@(?<category>[a-z][a-z0-9_]*):(?<text>[^\n]+?)@@' >> para marcas de estilo C<@@person:NAME@@>, o un formato de comentario HTML que permanece invisible en el Markd...
=item B<--xlate-template>[=I<regex>]
Trata las expresiones de plantilla (por defecto: Jinja2 C<{{ ... }}>, C<{% ... %}>, C<{# ... #}>) como marcadores de posición opacos: indica al modelo que las copie sin cambios y verifica, por bloque, que la respuesta contenga exactamente las mismas...
Ten en cuenta que, con una opción de valor opcional como esta, se tomarÃa como valor cualquier argumento de archivo que le siguiera: escribe C<--xlate-template=> (con un C<=> al final) cuando utilices la notación predeterminada.
=item B<--xlate-frontmatter>
Trata un bloque que comience por C<---> ... C<---> como «front matter» de YAML: exclúyelo de la traducción y de los fragmentos de contexto de la fase 2, y añade sus valores planos C<key: value> a las reglas de anonimización (categorÃa C<var>) ...
Deja siempre una lÃnea en blanco después del cierre C<--->. Con un patrón de coincidencia de estilo párrafo, el front matter que se adentra directamente en el cuerpo del texto forma un bloque que abarca ambos y que la exclusión no puede suprimir...
=item B<--xlate-glossary>=I<glossary>
Especifique un ID de glosario que se utilizará para la traducción. Esta opción sólo está disponible cuando se utiliza el motor DeepL. El ID del glosario debe obtenerse de su cuenta de DeepL y garantiza la traducción coherente de términos espec...
=item B<--xlate-dryrun>
No llames a la API de traducción; en su lugar, muestra, a través de la pantalla de progreso, cada carga útil exactamente tal y como se transmitirÃa (tras la anonimización y el enmascaramiento). Resulta útil para comprobar qué sale de la máqui...
=item B<-->[B<no->]B<xlate-progress> (Default: True)
Consulta el resultado de la traducción en tiempo real en la salida de STDERR. La carga útil C<From> se muestra tal y como se transmite, tras la anonimización y el enmascaramiento.
=item B<--xlate-stripe>
Utilice el módulo L<App::Greple::stripe> para mostrar las partes coincidentes en forma de rayas de cebra. Esto es útil cuando las partes coincidentes están conectadas espalda con espalda.
La paleta de colores cambia según el color de fondo del terminal. Si desea especificarlo explÃcitamente, puede utilizar B<--xlate-stripe-light> o B<--xlate-stripe-dark>.
=item B<--xlate-mask>
Realiza la función de enmascaramiento y muestra el texto convertido tal cual sin restaurar.
=item B<--match-all>
Establece todo el texto del fichero como área de destino.
=item B<--lineify-cm>
=item B<--lineify-colon>
En el caso de los formatos C<cm> y C<colon>, la salida se divide y formatea lÃnea por lÃnea. Por lo tanto, si sólo se quiere traducir una parte de una lÃnea, no se puede obtener el resultado esperado. Estos filtros corrigen la salida que se corro...
En la implementación actual, si se traducen varias partes de una lÃnea, se emiten como lÃneas independientes.
=back
=head1 CACHE OPTIONS
El módulo B<xlate> puede almacenar en caché el texto traducido de cada fichero y leerlo antes de la ejecución para eliminar la sobrecarga de preguntar al servidor. Con la estrategia de caché por defecto C<auto>, mantiene los datos de caché sólo...
Utilice B<--xlate-cache=clear> para iniciar la gestión de la caché o para limpiar todos los datos de caché existentes. Una vez ejecutado con esta opción, se creará un nuevo archivo de caché si no existe y se mantendrá automáticamente después...
=over 7
=item --xlate-cache=I<strategy>
=over 4
=item C<auto> (Default)
Mantener el archivo de caché si existe.
=item C<create>
Crear un archivo de caché vacÃo y salir.
=item C<always>, C<yes>, C<1>
Mantener caché de todos modos hasta que el destino sea un archivo normal.
=item C<clear>
Borrar primero los datos de la caché.
=item C<never>, C<no>, C<0>
No utilizar nunca el archivo de caché aunque exista.
=item C<accumulate>
Por defecto, los datos no utilizados se eliminan del archivo de caché. Si no desea eliminarlos y mantenerlos en el archivo, utilice C<acumular>.
=back
=item B<--xlate-update>
Esta opción obliga a actualizar el archivo de caché aunque no sea necesario.
=back
=head1 COMMAND LINE INTERFACE
Puede utilizar fácilmente este módulo desde la lÃnea de comandos mediante el comando C<xlate> incluido en la distribución. Consulte la página del manual C<xlate> para más información.
El comando C<xlate> admite opciones largas al estilo GNU como C<--to-lang>, C<--from-lang>, C<--engine> y C<--file>. Utilice C<xlate -h> para ver todas las opciones disponibles.
El comando C<xlate> funciona conjuntamente con el entorno Docker, por lo que incluso si no tiene nada instalado a mano, puede utilizarlo siempre que Docker esté disponible. Utilice la opción C<-D> o C<-C>.
Las operaciones Docker son manejadas por L<App::dozo>, que también se puede utilizar como un comando independiente. El comando C<dozo> es compatible con el archivo de configuración C<.dozorc> para la configuración persistente del contenedor.
Además, como se proporcionan makefiles para varios estilos de documento, la traducción a otros idiomas es posible sin especificación especial. Utilice la opción C<-M>.
También puedes combinar las opciones Docker y C<make> para poder ejecutar C<make> en un entorno Docker.
Ejecutar como C<xlate -C> lanzará un shell con el repositorio git de trabajo actual montado.
Lea el artÃculo japonés en la sección L</SEE TAMBIÃN> para más detalles.
=head1 EMACS
Cargue el fichero F<xlate.el> incluido en el repositorio para usar el comando C<xlate> desde el editor Emacs. La función C<xlate-region> traduce la región dada. El idioma por defecto es C<EN-US> y puede especificar el idioma invocándolo con el arg...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/emacs.png">
</p>
=head1 ENVIRONMENT
=over 7
=item DEEPL_AUTH_KEY
Establezca su clave de autenticación para el servicio DeepL.
=item OPENAI_API_KEY
Clave de autenticación de OpenAI, utilizada por los motores heredados B<gpty>. El motor B<gpt5> basado en C<llm> también lee esta variable, pero las claves almacenadas con C<llm keys set openai> también funcionan.
=item GREPLE_XLATE_CACHE
Establece la estrategia de caché por defecto (véase L</CACHE OPTIONS>).
=back
=head1 INSTALL
=head2 CPANMINUS
$ cpanm App::Greple::xlate
=head2 TOOLS
Instala la herramienta de lÃnea de comandos para el motor que utilices: C<llm> para el motor B<gpt5>, C<deepl> para DeepL, C<gpty> para los motores GPT heredados.
L<https://llm.datasette.io/>
L<https://github.com/DeepLcom/deepl-python>
L<https://github.com/tecolicom/App-gpty>
=head1 SEE ALSO
=head2 MODULES
L<App::Greple::xlate::llm>, L<App::Greple::xlate::deepl>
L<App::dozo> - Corredor Docker genérico utilizado por xlate para operaciones de contenedor.
=head2 RELATED MODULES
=over 2
=item * L<App::Greple>
Vea el manual B<greple> para los detalles sobre el patrón de texto objetivo. Utilice las opciones B<--inside>, B<--outside>, B<--include>, B<--exclude> para limitar el área de coincidencia.
=item * L<App::Greple::update>
Puede utilizar el módulo C<-Mupdate> para modificar archivos según el resultado del comando B<greple>.
=item * L<App::sdif>
Utilice B<sdif> para mostrar el formato del marcador de conflicto junto con la opción B<-V>.
=item * L<App::Greple::stripe>
Uso del módulo Greple B<stripe> mediante la opción B<--xlate-stripe>.
=back
=head2 RESOURCES
=over 2
=item * L<https://hub.docker.com/r/tecolicom/xlate>
Imagen de contenedor Docker.
=item * L<https://github.com/tecolicom/getoptlong>
La biblioteca C<getoptlong.sh> utilizada para el análisis sintáctico de opciones en el script C<xlate> y L<App::dozo>.
=item * L<https://llm.datasette.io/>
El comando C<llm> utilizado por el motor B<gpt5> para acceder a los modelos LLM.
=item * L<https://github.com/DeepLcom/deepl-python>
DeepL LibrerÃa Python y comando CLI.
=item * L<https://github.com/openai/openai-python>
Biblioteca OpenAI Python
=item * L<https://github.com/tecolicom/App-gpty>
Interfaz de lÃnea de comandos de OpenAI
=back
=head2 ARTICLES
=over 2
=item * L<https://qiita.com/kaz-utashiro/items/1c1a51a4591922e18250>
Módulo Greple para traducir y sustituir sólo las partes necesarias con DeepL API (en japonés)
=item * L<https://qiita.com/kaz-utashiro/items/a5e19736416ca183ecf6>
Generación de documentos en 15 idiomas con el módulo API DeepL (en japonés)
=item * L<https://qiita.com/kaz-utashiro/items/1b9e155d6ae0620ab4dd>
Entorno Docker de traducción automática con DeepL API (en japonés)
( run in 1.020 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )