Dividir publicaciones grandes para una traducción exitosa

Utilizo el plugin Translator con el servicio de Microsoft. Si la publicación es lo suficientemente grande, no se puede traducir y aparece el siguiente error:

Esta publicación es demasiado larga para que el traductor la traduzca.

¿Podrías implementar una función de traducción por párrafo para solucionar este problema?

2 Me gusta

Eso es una parte normal de Google Translate y creo que el límite de palabras es de alrededor de 500.

Si normalmente recibes algo más grande que eso, veo algunas opciones:

  1. Analizar manualmente el contenido para obtener bloques de texto menores a 500 palabras (o lo que sea el límite).
  2. Utilizar otra API de Google que realice traducción de documentos (no estoy seguro, pero creo que tienen una; tendrías que consultar con ellos).
  3. Utilizar otro sitio que ofrezca traducción de documentos y esperar que expongan sus API.

No olvides contarnos qué funcionó.

Uso la API de Microsoft, no la de Google.
Parece que Microsoft tiene un límite de 10.000 caracteres por solicitud individual: Service limits - Translator - Foundry Tools | Microsoft Learn

Supongo que lo más sencillo sería dividir la publicación por párrafos (“\r\n\r\n” o

), asumiendo que ningún párrafo superará los 10.000 caracteres.

1 me gusta

No he usado Microsoft Translate, así que en ese aspecto estás por delante de mí, aunque sospecho que, en teoría, los métodos serían los mismos.

Me gusta tu idea de analizar los saltos de párrafo, aunque no estoy seguro de asumir que todos los documentos tengan un final de línea CR/LF. Unix utiliza solo el carácter LF, Mac solo el carácter CR y Windows utiliza ambos. Otros documentos podrían usar un byte nulo como carácter de fin de línea.

Unicode presenta sus propios problemas, ya que cada carácter tiene dos bytes de longitud.

Posible solución: Analizar el final de línea en la primera o dos primeras oraciones, almacenarlo como un valor y luego convertir todos los finales de línea a “\n” antes de analizar el documento. Una vez completado el documento, se podría restablecer automáticamente al final de línea correcto.

Un método sería escanear hacia adelante hasta llegar a 10.000 palabras y luego escanear hacia atrás en busca de un salto de párrafo. Colocar un puntero de inicio al comienzo del bloque actual, escanear hacia adelante y, al encontrar el último salto de párrafo antes de las 10.000 palabras, colocar un puntero de final. Extraer ese bloque, traducirlo, moverlo al documento de resultado, mover el puntero de inicio a la posición del puntero de final y continuar.

==============================

Por cierto, el software de traducción puede ser pésimo, ya que a menudo la traducción es extremadamente sensible al contexto, contiene jerga o utiliza terminología especializada. Del mismo modo, los términos técnicos o palabras específicas de un oficio o habilidad en particular, que en muchos casos no deberían traducirse, se deforman horriblemente. Los documentos legales, médicos y de ingeniería/técnicos son casos clásicos.

Envié un documento médico complejo (el informe quirúrgico de una cirugía cerebral de alguien) a través de dos traductores diferentes: Google y Yandex, intentando traducirlo al ruso. ¡El resultado de ambas traducciones se parecía más a una lasaña mala que a un documento legible!

@jharris1993, asumo que me estás proponiendo implementar la función. Lamentablemente, no tengo experiencia con Ruby, y eso tomaría mucho más tiempo del que le tomaría a una persona con experiencia.
Por supuesto, puedo improvisar una solución, pero no será aceptada.

En mi foro, la traducción más solicitada es del ruso al inglés, de publicaciones técnicas. Microsoft hace un trabajo bastante bueno en este aspecto.

1 me gusta

¡Qué genial!

¿De qué foro se trata, por favor? Si puede hacer inglés => ruso, ¡quizás envíe mi próximo documento largo y complejo a través de él!

La traducción se realiza con el plugin discourse-translator. Pensé que había creado este tema en la categoría de plugins, pero quedó sin categoría.

1 me gusta