Eseguire una traduzione collettiva utilizzando il connettore Cloud Translation

Questo tutorial mostra come creare un flusso di lavoro che utilizza il connettore dell'API Cloud Translation per tradurre i file in altre lingue in modalità batch asincrona. In questo modo, l'output viene generato in tempo reale durante l'elaborazione degli input.

Crea un bucket Cloud Storage di input e i file

Puoi utilizzare Cloud Storage per archiviare oggetti. Gli oggetti sono dati immutabili costituiti da un file di qualsiasi formato e vengono archiviati in contenitori chiamati bucket.

  1. Crea un bucket Cloud Storage per contenere i file da tradurre:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gcloud storage buckets create gs://${BUCKET_INPUT}
  2. Crea due file in inglese e caricali nel bucket di input:

    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}

Esegui il deployment del workflow ed eseguilo

Un flusso di lavoro è costituito da una serie di passaggi descritti utilizzando la sintassi di Workflows, che può essere scritta in formato YAML o JSON. Questa è la definizione del flusso di lavoro. Dopo aver creato un flusso di lavoro, lo esegui per renderlo disponibile per l'esecuzione.

  1. Crea un file di testo con il nome file workflow.yaml e il seguente contenuto:

    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

    Il flusso di lavoro assegna le variabili, crea un bucket di output e avvia la traduzione dei file, salvando i risultati nel bucket di output.

  2. Dopo aver creato il flusso di lavoro, esegui il deployment:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. Esegui il workflow:

    gcloud workflows execute batch-translation
  4. Per visualizzare lo stato del flusso di lavoro, puoi eseguire il comando restituito. Ad esempio:

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

    Il flusso di lavoro dovrebbe essere ACTIVE. Dopo alcuni minuti, i file tradotti (in francese e spagnolo) vengono caricati nel bucket di output.

Elenca gli oggetti nel bucket di output

Per verificare che il flusso di lavoro abbia funzionato come previsto, elenca gli oggetti nel bucket di output.

  1. Recupera il nome del bucket di output:

    gcloud storage ls

    L'output è simile al seguente:

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

  2. Elenca gli oggetti nel bucket di output:

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

    Dopo alcuni minuti, vengono elencati i file tradotti, due per ciascuno in francese e spagnolo.