使用 Cloud Translation 连接器运行批量翻译


本教程介绍了如何创建一个工作流,以使用 Cloud Translation API 连接器以异步批量模式将文件翻译成其他语言。这样可在处理输入时提供实时输出。

目标

在此教程中,您将学习以下操作:

  1. 创建输入 Cloud Storage 存储桶。
  2. 使用英语创建两个文件,并将它们上传到输入存储桶。
  3. 创建一个工作流,该工作流使用 Cloud Translation API 连接器将两个文件翻译为法语和西班牙语,并将结果保存在输出存储桶中。
  4. 部署和执行工作流以编排整个流程。

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

准备工作

您的组织定义的安全限制条件可能会导致您无法完成以下步骤。如需了解相关问题排查信息,请参阅在受限的 Google Cloud 环境中开发应用

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。
  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  4. 创建或选择 Google Cloud 项目

    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目 名称。

  5. 确保您的 Google Cloud 项目已启用结算功能

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

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  7. 安装 Google Cloud CLI。
  8. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  9. 创建或选择 Google Cloud 项目

    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目 名称。

  10. 确保您的 Google Cloud 项目已启用结算功能

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

    gcloud services enable storage.googleapis.com translate.googleapis.com workflows.googleapis.com
  12. 更新 gcloud 组件:
    gcloud components update
  13. 使用您的账号登录:
    gcloud auth login
  14. 设置本教程中使用的默认位置:
    gcloud config set workflows/location us-central1
    

    由于本教程使用位于 us-central1 中的默认 AutoML Translation 模型,因此您必须将位置设置为 us-central1

    如果使用的是非默认模型或术语表,请确保其与连接器调用位于同一位置;否则,系统会返回 INVALID_ARGUMENT (400) 错误。如需了解详情,请参阅 batchTranslateText 方法

创建输入 Cloud Storage 存储桶和文件

您可以使用 Cloud Storage 来存储对象。对象是由任意格式的文件组成的不可变的数据段,存储在称为存储分区的容器中。

  1. 创建 Cloud Storage 存储桶以保存要翻译的文件:

    BUCKET_INPUT=${GOOGLE_CLOUD_PROJECT}-input-files
    gsutil mb gs://${BUCKET_INPUT}
  2. 使用英语创建两个文件,并将它们上传到输入存储桶:

    echo "Hello World!" > file1.txt
    gsutil cp file1.txt gs://${BUCKET_INPUT}
    echo "Workflows connectors simplify calling services." > file2.txt
    gsutil cp file2.txt gs://${BUCKET_INPUT}

部署和执行工作流

工作流由一系列使用 Workflows 语法描述的步骤组成,该语法可以采用 YAML 或 JSON 格式编写。这是工作流的定义。创建工作流后,可以进行部署,使其可以执行。

  1. 创建一个文件名为 workflow.yaml 且包含以下内容的文本文件:

    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

    工作流会分配变量、创建输出存储桶并启动文件翻译,并将结果保存到输出存储桶。

  2. 创建工作流后,对其进行部署:

    gcloud workflows deploy batch-translation --source=workflow.yaml
  3. 执行工作流:

    gcloud workflows execute batch-translation
  4. 如需查看工作流状态,您可以运行返回的命令。例如:

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

    工作流应为 ACTIVE。几分钟后,翻译好的文件(法语和西班牙语)将上传到输出存储桶。

列出输出存储桶中的对象

通过列出输出存储桶中的对象,您可以确认工作流是否按预期工作。

  1. 检索输出存储桶名称:

    gsutil ls

    输出类似于以下内容:

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

  2. 列出输出存储桶中的对象:

    gsutil ls -r gs://PROJECT_ID-output-files-TIMESTAMP/**

    几分钟后,系统会列出翻译好的文件(法语和西班牙语各两个)。

清理

如果您为本教程创建了一个新项目,请删除项目。 如果您使用的是现有项目,希望保留此项目且不保留本教程中添加的任何更改,请删除为教程创建的资源

删除项目

若要避免产生费用,最简单的方法是删除您为本教程创建的项目。

要删除项目,请执行以下操作:

  1. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除教程资源

  1. 移除您在教程设置过程中添加的 gcloud 默认配置:

    gcloud config unset workflows/location
    
  2. 删除在本教程中创建的工作流:

    gcloud workflows delete WORKFLOW_NAME
    
  3. 删除在本教程中创建的存储桶:

    gsutil rm -r gs://BUCKET_NAME

    其中 BUCKET_NAME 是要删除的存储桶的名称,例如 my-bucket

    响应类似于以下示例:

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

后续步骤