Execute uma tradução em lote através do conetor do Cloud Translation

Este tutorial mostra-lhe como criar um fluxo de trabalho que usa o conector da Cloud Translation API para traduzir ficheiros para outros idiomas no modo de lote assíncrono. Isto fornece um resultado em tempo real à medida que as entradas são processadas.

Crie um contentor e ficheiros do Cloud Storage de entrada

Pode usar o Cloud Storage para armazenar objetos. Os objetos são partes de dados imutáveis compostas por um ficheiro de qualquer formato e são armazenados em contentores denominados depósitos.

  1. Crie um contentor do Cloud Storage para guardar os ficheiros a traduzir:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. Crie dois ficheiros em inglês e carregue-os para o contentor 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}

Implemente e execute o fluxo de trabalho

Um fluxo de trabalho é composto por uma série de passos descritos através da sintaxe Workflows, que pode ser escrita no formato YAML ou JSON. Esta é a definição do fluxo de trabalho. Depois de criar um fluxo de trabalho, implementa-o para o disponibilizar para execução.

  1. Crie um ficheiro de texto com o nome de ficheiro workflow.yaml e 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 contentor de saída e inicia a tradução dos ficheiros, guardando os resultados no contentor de saída.

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

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

    gcloud workflows execute batch-translation
  4. Para ver o estado do fluxo de trabalho, pode executar o comando devolvido. Por exemplo:

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

    O fluxo de trabalho deve ser ACTIVE. Após alguns minutos, os ficheiros traduzidos (em francês e espanhol) são carregados para o contentor de saída.

Liste objetos no contentor de saída

Pode confirmar se o fluxo de trabalho funcionou conforme esperado listando os objetos no seu contentor de saída.

  1. Obtenha o nome do contentor de saída:

    gcloud storage ls

    O resultado é semelhante ao seguinte:

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

  2. Liste os objetos no seu contentor de saída:

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

    Após alguns minutos, são apresentados os ficheiros traduzidos, dois de cada em francês e espanhol.