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

En este instructivo, se muestra cómo crear un flujo de trabajo que usa el conector de la API de Cloud Translation para traducir archivos a otros idiomas en modo de lote asíncrono. Esto proporciona un resultado en tiempo real a medida que se procesan las entradas.

Crea un bucket y archivos de entrada de Cloud Storage

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

  1. Crea un bucket de Cloud Storage para almacenar los archivos que se traducirán:

    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 bucket 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}

Implementa y ejecuta el flujo de trabajo

Un flujo de trabajo está compuesto por una serie de pasos descritos con la sintaxis de Workflows, que se pueden 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 para su ejecución.

  1. Crea un archivo de texto con el nombre de archivo 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 bucket de salida y, luego, inicia la traducción de los archivos y guarda los resultados en el bucket de salida.

  2. Después de crear el flujo de trabajo, impleméntalo:

    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 que se devolvió. Por ejemplo:

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

    El flujo de trabajo debe ser ACTIVE. Después de unos minutos, los archivos traducidos (en francés y español) se subirán al bucket de salida.

Enumera los objetos en el bucket de salida

Para confirmar que el flujo de trabajo funcionó según lo previsto, enumera los objetos en tu bucket de salida.

  1. Recupera el nombre de tu bucket de salida:

    gcloud storage ls

    El resultado es similar a este:

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

  2. Enumera los objetos en tu bucket de salida:

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

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