Exécuter une traduction par lot à l'aide du connecteur Cloud Translation

Ce tutoriel explique comment créer un workflow qui utilise le connecteur d'API Cloud Translation pour traduire des fichiers dans d'autres langues en mode de traitement par lot asynchrone. Cette méthode fournit une sortie en temps réel, au fur et à mesure du traitement des entrées.

Créer un bucket et des fichiers Cloud Storage d'entrée

Vous pouvez utiliser Cloud Storage pour stocker des objets. Les objets sont des données immuables. Ils sont constitués d'un fichier dans n'importe quel format et stockés dans des conteneurs appelés "buckets".

  1. Créez un bucket Cloud Storage pour stocker les fichiers à traduire :

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. Créez deux fichiers en anglais et importez-les dans le bucket d'entrée :

    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}

Déployer et exécuter le workflow

Un workflow est constitué d'une série d'étapes décrites à l'aide de la syntaxe Workflows, qui peut être écrite au format YAML ou JSON. Il s'agit de la définition du workflow. Après avoir créé un workflow, vous pouvez le déployer pour le rendre disponible en exécution.

  1. Créez un fichier texte avec le nom de fichier workflow.yaml et le contenu suivant :

    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

    Le workflow attribue des variables, crée un bucket de sortie et lance la traduction des fichiers, en enregistrant les résultats dans le bucket de sortie.

  2. Une fois le workflow créé, déployez-le :

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. Exécutez le workflow :

    gcloud workflows execute batch-translation
  4. Pour afficher l'état du workflow, vous pouvez exécuter la commande renvoyée. Exemple :

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

    Le workflow doit être ACTIVE. Après quelques minutes, les fichiers traduits (en français et en espagnol) sont importés dans le bucket de sortie.

Lister les objets du bucket de sortie

Vous pouvez vérifier que le workflow a fonctionné comme prévu en listant les objets dans votre bucket de sortie.

  1. Récupérez le nom de votre bucket de sortie :

    gcloud storage ls

    Le résultat ressemble à ce qui suit :

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

  2. Listez les objets d'un bucket :

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

    Après quelques minutes, les fichiers traduits, deux de chaque en français et en espagnol, sont listés.