gt-cli@2.9.0
Обзор
Интерфейс командной строки (CLI) gt теперь поддерживает формат файлов Twilio Content JSON. Если вы используете Twilio Content Template Builder для отправки структурированных сообщений через WhatsApp, SMS или RCS, теперь вы можете переводить эти шаблоны в том же процессе gt translate, который уже используете для своего приложения.
Почему это важно
Twilio Content Templates — это JSON-файлы, которые описывают структурированные сообщения — текст с переменными, кнопки быстрых ответов, карточки с медиафайлами и действиями. Эти шаблоны содержат строки, которые видит пользователь: подписи кнопок, текст сообщения, заголовки карточек. Если вы отправляете сообщения на нескольких языках, эти строки нужно переводить.
Сейчас для каждого языка приходится вручную создавать отдельный шаблон контента через консоль Twilio или API. У каждого шаблона свой SID, свой цикл утверждения и своя нагрузка по сопровождению. Нет единого источника истины, который определял бы содержание сообщения на всех языках.
С этим обновлением Интерфейса командной строки (CLI) вы один раз создаёте шаблон на языке по умолчанию, а gt translate берёт остальное на себя.
Пошаговый пример
Допустим, вы создаёте сценарий поддержки клиентов в WhatsApp с помощью Twilio. У вас есть шаблон быстрого ответа, который приветствует пользователя и предлагает три варианта:
{
"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 и значения title в actions — это строки, которые можно переводить. Заполнитель переменной {{1}}, поля id и структурные ключи — нет.
Шаг: Настроить
Добавьте twilioContentJson в конфигурацию файла gt.config.json:
{
"defaultLocale": "en",
"locales": ["en", "es", "fr", "ja"],
"files": {
"twilioContentJson": {
"include": ["twilio/[locale]/**/*.json"]
}
}
}Заполнитель [locale] в пути include указывает CLI, где искать исходные файлы и куда сохранять переводы. Исходные файлы считываются из twilio/en/, а переведённые файлы сохраняются в twilio/es/, twilio/fr/ и т. д.
Шаг: Перевести
npx gt@latest translateПереводы генерируются для каждой настроенной локали. Вывод сохраняет структуру JSON Twilio -- изменяются только строковые значения.
Вывод на испанском языке может выглядеть так:
{
"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?"
}
}
}Каждый переведённый файл представляет собой валидный JSON-шаблон Twilio Content, который можно напрямую загрузить в Twilio Content API как новый шаблон для конкретной локали.