gt-cli@2.9.0
Обзор
CLI gt теперь поддерживает формат файлов Twilio Content JSON. Если вы используете Twilio Content Template Builder для отправки структурированных сообщений через WhatsApp, SMS или RCS, теперь вы можете переводить эти template с помощью того же процесса gt translate, который уже используете для своего приложения.
Почему это важно
Twilio Content Templates — это JSON-файлы, которые задают структуру сообщений: текст с переменными, кнопки быстрых ответов, карточки с медиафайлами и действиями. Эти шаблоны содержат строки, которые видит пользователь: подписи кнопок, текст сообщения, заголовки карточек. Если вы отправляете сообщения на нескольких языках, эти строки нужно переводить.
Сейчас для каждого языка обычно вручную создают отдельный контент-шаблон через Twilio Console или API. У каждого шаблона свой SID, свой цикл утверждения и свои трудозатраты на поддержку. Нет единого источника истины о том, что именно говорит сообщение на разных языках.
С этим обновлением CLI вы один раз создаёте шаблон на языке по умолчанию, а gt translate сделает всё остальное.
Пошаговый пример
Допустим, вы создаёте сценарий поддержки клиентов в WhatsApp с помощью Twilio. У вас есть template быстрого ответа, который приветствует пользователя и предлагает три варианта:
{
"friendly_name": "support_greeting",
"language": "en",
"variables": { "1": "Customer" },
"types": {
"twilio/quick-reply": {
"body": "Здравствуйте, {{1}}. Спасибо, что обратились в службу поддержки. Чем мы можем помочь?",
"actions": [
{ "title": "Проверить статус заказа", "id": "order_status" },
{ "title": "Вернуть товар", "id": "return_item" },
{ "title": "Связаться с оператором", "id": "speak_agent" }
]
},
"twilio/text": {
"body": "Здравствуйте, {{1}}. Спасибо, что обратились в службу поддержки. Чем мы можем помочь?"
}
}
}Поля body и значения title в actions — это строки, доступные для перевода. Заполнитель переменной {{1}}, поля id и структурные ключи — нет.
Шаг 1: Настройка
Добавьте 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/ и т. д.
Шаг 2: translate
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 как новый шаблон для конкретной локали.