Executar uma tradução em lote usando o conector do Cloud Translation

Neste tutorial, mostramos como criar um fluxo de trabalho que usa o conector da API Cloud Translation para traduzir arquivos para outros idiomas no modo em lote assíncrono. Isso fornece saída em tempo real à medida que as entradas estão sendo processadas.

Criar um bucket e os arquivos do Cloud Storage

Use o Cloud Storage para armazenar objetos. Objetos são partes imutáveis de dados que consistem em um arquivo de qualquer formato e são armazenados em contêineres chamados buckets.

  1. Crie um bucket do Cloud Storage para armazenar os arquivos que serão traduzidos:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. Crie dois arquivos em inglês e faça upload deles para o 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}

Implantar e executar o fluxo de trabalho

Um fluxo de trabalho é composto por uma série de etapas descritas usando a sintaxe dos fluxos de trabalho, que pode ser escrita em formato YAML ou JSON. Essa é a definição do fluxo de trabalho. Depois de criar um fluxo de trabalho, implante-o para que ele fique disponível para execução.

  1. Crie um arquivo de texto com o nome de arquivo workflow.yaml com o seguinte conteúdo:

    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

    O fluxo de trabalho atribui variáveis, cria um bucket de saída e inicia a tradução dos arquivos, salvando os resultados no bucket de saída.

  2. Depois de criar o fluxo de trabalho, implante-o:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. Execute o fluxo de trabalho:

    gcloud workflows execute batch-translation
  4. Para ver o status do fluxo de trabalho, execute o comando retornado. Exemplo:

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

    O fluxo de trabalho precisa ser ACTIVE. Após alguns minutos, os arquivos traduzidos (em francês e espanhol) serão enviados ao bucket de saída.

Listar objetos no bucket de saída

É possível confirmar se o fluxo de trabalho funcionou conforme esperado listando os objetos no bucket de saída.

  1. Recupere o nome do bucket de saída:

    gcloud storage ls

    A saída será assim:

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

  2. Liste os objetos no bucket de saída.

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

    Após alguns minutos, os arquivos traduzidos em francês e espanhol (dois de cada) serão listados.