返回

gt-cli@2.9.0

Ernest McCarter avatarErnest McCarter
gt-cliv2.9.0twiliocontent-templatesi18nwhatsappsms

概述

gt 命令行界面 (CLI) 现已支持将 Twilio Content JSON 作为文件格式处理。如果你使用 Twilio 的 Content Template Builder 通过 WhatsApp、SMS 或 RCS 发送结构化消息,现在也可以使用与你当前应用相同的 gt translate 工作流来翻译这些模板。

为什么这很重要

Twilio Content Templates 是用于定义结构化消息的 JSON 文件——包括带变量的文本、快速回复按钮,以及带媒体和操作的卡片。这些模板包含面向用户的字符串:按钮标签、正文文本、卡片标题。如果你要发送多种语言的消息,这些字符串就需要翻译。

目前的做法是通过 Twilio Console 或 API,手动为每种语言分别创建一个内容模板。每个模板都有自己的 SID、自己的审批流程,以及各自的维护成本。对于一条消息在不同语言中的具体内容,并没有一个统一的可信来源。

通过这次命令行界面 (CLI) 更新,你只需用默认语言编写一次模板,其余部分交给 gt translate 处理。

操作示例

假设你正在使用 Twilio 通过 WhatsApp 搭建客户支持流程。你有一个快速回复模板,用于向用户打招呼并提供三个选项:

{
  "friendly_name": "support_greeting",
  "language": "en",
  "variables": { "1": "Customer" },
  "types": {
    "twilio/quick-reply": {
      "body": "Hi, {{1}}. Thanks for contacting support. How can we help?",
      "actions": [
        { "title": "Check order status", "id": "order_status" },
        { "title": "Return an item", "id": "return_item" },
        { "title": "Speak with an agent", "id": "speak_agent" }
      ]
    },
    "twilio/text": {
      "body": "Hi, {{1}}. Thanks for contacting support. How can we help?"
    }
  }
}

body 字段和 actions 中的 title 值都是可翻译的字符串。{{1}} 变量占位符、id 字段以及结构键则不可翻译。

第 1 步:配置

gt.config.json 文件中添加 twilioContentJson 配置:

{
  "defaultLocale": "en",
  "locales": ["en", "es", "fr", "ja"],
  "files": {
    "twilioContentJson": {
      "include": ["twilio/[locale]/**/*.json"]
    }
  }
}

include 路径中的 [locale] 占位符用于告诉命令行界面 (CLI) 到哪里查找源文件,以及将翻译文件保存到哪里。源文件从 twilio/en/ 读取,翻译后的文件会保存到 twilio/es/twilio/fr/ 等目录中。

第 2 步:翻译

npx gt@latest translate

系统会为每个已配置的语言区域生成翻译。输出会保留 Twilio JSON 的结构——只有字符串值会变化。

西班牙语输出可能如下所示:

{
  "friendly_name": "support_greeting",
  "language": "es",
  "variables": { "1": "Customer" },
  "types": {
    "twilio/quick-reply": {
      "body": "Hola, {{1}}. Gracias por contactar con soporte. ¿En qué podemos ayudarte?",
      "actions": [
        { "title": "Ver estado del pedido", "id": "order_status" },
        { "title": "Devolver un artículo", "id": "return_item" },
        { "title": "Hablar con un agente", "id": "speak_agent" }
      ]
    },
    "twilio/text": {
      "body": "Hola, {{1}}. Gracias por contactar con soporte. ¿En qué podemos ayudarte?"
    }
  }
}

每个翻译后的文件都是有效的 Twilio Content JSON 模板,可作为新的特定语言区域模板直接上传到 Twilio Content API。

链接