Ejecutar una traducción por lotes con el conector de Cloud Translation

En este tutorial se muestra cómo crear un flujo de trabajo que utilice el conector de la API Cloud Translation para traducir archivos a otros idiomas en modo de lote asíncrono. De esta forma, se proporciona información en tiempo real a medida que se procesan las entradas.

Crea un segmento y archivos de Cloud Storage de entrada

Puedes usar Cloud Storage para almacenar objetos. Los objetos son fragmentos de datos inmutables que constan de un archivo en cualquier formato y se almacenan en contenedores llamados cubos.

  1. Crea un segmento de Cloud Storage para almacenar los archivos que quieras traducir:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. Crea dos archivos en inglés y súbelos al segmento de entrada:

    echo "Hello World!" > file1.txt
    gcloud storage cp file1.txt gs://${BUCKET_INPUT}
    echo "Workflows connectors simplify calling services." > file2.txt
    gcloud storage cp file2.txt gs://${BUCKET_INPUT}

Desplegar y ejecutar el flujo de trabajo

Un flujo de trabajo se compone de una serie de pasos descritos mediante la sintaxis de Workflows, que se puede escribir en formato YAML o JSON. Esta es la definición del flujo de trabajo. Después de crear un flujo de trabajo, debes implementarlo para que esté disponible.

  1. Crea un archivo de texto con el nombre workflow.yaml y el siguiente contenido:

    main:
      steps:
      - init:
          assign:
          - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
          - location: ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
          - inputBucketName: ${projectId + "-input-files"}
          - outputBucketName: ${projectId + "-output-files-" + string(int(sys.now()))}
      - createOutputBucket:
            call: googleapis.storage.v1.buckets.insert
            args:
              project: ${projectId}
              body:
                name: ${outputBucketName}
      - batchTranslateText:
          call: googleapis.translate.v3beta1.projects.locations.batchTranslateText
          args:
              parent: ${"projects/" + projectId + "/locations/" + location}
              body:
                  inputConfigs:
                    gcsSource:
                      inputUri: ${"gs://" + inputBucketName + "/*"}
                  outputConfig:
                      gcsDestination:
                        outputUriPrefix: ${"gs://" + outputBucketName + "/"}
                  sourceLanguageCode: "en"
                  targetLanguageCodes: ["es", "fr"]
          result: batchTranslateTextResult

    El flujo de trabajo asigna variables, crea un segmento de salida e inicia la traducción de los archivos, guardando los resultados en el segmento de salida.

  2. Después de crear el flujo de trabajo, despliégalo:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. Ejecuta el flujo de trabajo:

    gcloud workflows execute batch-translation
  4. Para ver el estado del flujo de trabajo, puedes ejecutar el comando devuelto. Por ejemplo:

    gcloud workflows executions describe eb4a6239-cffa-4672-81d8-d4caef7d8424 /
      --workflow batch-translation /
      --location us-central1

    El flujo de trabajo debe ser ACTIVE. Al cabo de unos minutos, los archivos traducidos (en francés y español) se suben al contenedor de salida.

Lista de objetos del segmento de salida

Para confirmar que el flujo de trabajo ha funcionado correctamente, enumera los objetos de tu segmento de salida.

  1. Recupera el nombre del segmento de salida:

    gcloud storage ls

    El resultado debería ser similar al siguiente:

    gs://PROJECT_ID-input-files/
    gs://PROJECT_ID-output-files-TIMESTAMP/

  2. Lista los objetos del segmento de salida:

    gcloud storage ls gs://PROJECT_ID-output-files-TIMESTAMP/** --recursive

    Al cabo de unos minutos, se mostrarán los archivos traducidos (dos de cada uno en francés y español).