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.

Objetivos

Neste tutorial, você aprenderá a:

  1. criar um bucket de entrada do Cloud Storage;
  2. criar dois arquivos em inglês e fazer upload deles no bucket de entrada;
  3. criar um fluxo de trabalho que use o conector da API Cloud Translation para traduzir os dois arquivos para francês e espanhol e salvar os resultados em um bucket de saída;
  4. implantar e executar o fluxo de trabalho para orquestrar todo o processo.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito do Google Cloud.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  7. Install the Google Cloud CLI.
  8. To initialize the gcloud CLI, run the following command:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  11. Enable the Cloud Storage, Translation, and Workflows APIs:

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  12. Atualize os componentes da gcloud:
    gcloud components update
  13. Faça login usando sua conta:
    gcloud auth login
  14. Defina o local padrão usado neste tutorial:
    gcloud config set workflows/location us-central1

    Como este tutorial usa o modelo padrão do AutoML Translation, que está em us-central1, defina o local como us-central1.

    Se você estiver usando um modelo ou glossário de tradução do AutoML diferente do padrão, verifique se ele está no mesmo local que a chamada para o conector. Caso contrário, um erro INVALID_ARGUMENT (400) será retornado. Para mais detalhes, consulte o método batchTranslateText.

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.

Limpar

Se você criou um novo projeto para este tutorial, exclua o projeto. Se você usou um projeto atual e quer mantê-lo sem as alterações incluídas neste tutorial, exclua os recursos criados para o tutorial.

Exclua o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

delete-tutorial-resources

  1. Remova as configurações padrão da gcloud que você adicionou durante a configuração do tutorial:

    gcloud config unset workflows/location
  2. Exclua o fluxo de trabalho criado neste tutorial:

    gcloud workflows delete WORKFLOW_NAME
  3. Exclua os buckets criado neste tutorial:

    gcloud storage rm gs://BUCKET_NAME --recursive

    Em que BUCKET_NAME é o nome do bucket a ser excluído. Por exemplo, my-bucket.

    A resposta é semelhante a:

    Removing gs://my-bucket/...

A seguir