es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo usar un bucle for en Dataweave?

Necesito traducir la carga útil dada a 6 idiomas diferentes (utilicé la API de traductor), solo traduje un idioma usando el código a continuación:

%dw 2.0

output application/json

{
    "text": [payload],
    "source": "en",
    "target": "et"
}

CARGA ÚTIL DE ENTRADA:

"A quitter never wins and a winner never quits"

SALIDA:

lang-json
{
  "translations": [
    {
      "translation": "Kui sul on unistused, siis on sinu kohustus need teoks teha."
    }
 ],
  "word_count": 13,
  "character_count": 65
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para traducir la carga útil dada a 6 idiomas diferentes utilizando la API de traducción, el código se puede modificar de la siguiente manera:

    %dw 2.0
    output application/json
    var languages = ["es", "fr", "de", "ja", "ko", "zh-CN"]
    ---
    {
        text: [payload],
        translations: languages map {
            translation: (payload as String) as Translate text {
                source: "en",
                target: $
            }.translate.text
        },
        word_count: sizeOf(payload splitBy " "),
        character_count: sizeOf(payload)
    }
    

    En este código, se define una nueva variable languages para almacenar los 6 códigos de idioma diferentes (es, fr, de, ja, ko, zh-CN) a los que se debe traducir la carga útil. Luego, se crea el campo translations del objeto JSON de salida utilizando la función map para iterar sobre cada idioma en la variable languages. Dentro de la función map, se utiliza el módulo Translate para traducir la carga útil al idioma actual que se está iterando. Los idiomas source y target se especifican en la función translate.text, siendo el idioma target el idioma actual que se está iterando ($). El texto traducido se almacena en el campo translation del array translations.

    Además del campo translations, también se incluyen el recuento de palabras y el recuento de caracteres de la carga útil en el objeto JSON de salida. La función sizeOf se utiliza para calcular estos recuentos dividiendo la carga útil por espacios para obtener un array de palabras, y luego obteniendo el tamaño del array para el recuento de palabras y el tamaño de la cadena de la carga útil para el recuento de caracteres.

    La salida de este código será un objeto JSON con la siguiente estructura:

    {
      "text": ["A quitter never wins and a winner never quits"],
      "translations": [
        {"translation": "Un cobarde nunca gana y un ganador nunca se rinde"},
        {"translation": "Un lâche ne gagne jamais et un vainqueur ne abandonne jamais"},
        {"translation": "Ein Feigling gewinnt nie und ein Gewinner gibt nie auf"},
        {"translation": "根気がない人は勝ち得ることができず、勝者は決してあきらめない"},
        {"translation": "끝까지 포기하지 않는 사람만이 성공할 수 있다. 이기는 사람은 결코 포기하지 않는다."},
        {"translation": "一个败者永远不会成功,一个赢家永远不会放弃"}
      ],
      "word_count": 9,
      "character_count": 43
    }
    

    Esta salida incluye el texto de la carga útil original, las traducciones a 6 idiomas diferentes y el recuento de palabras y caracteres de la carga útil.

Comments are closed.