feat(lifecycle): i18n keys for Jornada do Cliente UI

Adds CAPTAIN_LIFECYCLE block (en + pt_BR) to captain.json with full
key set for Rules, Wizard, Settings, History and sidebar entry.

Also stages pre-existing uncommitted additions to captain.json from
prior work (KPI, PILLS, QUICK_DATE, CARD, ACTIONS extras for
CAPTAIN_RESERVATIONS) — those were already in the working tree and
belong to the same feature branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Rodribm10 2026-04-15 10:39:50 -03:00
parent fa1dd8b6cb
commit 1459655243
4 changed files with 374 additions and 4 deletions

View File

@ -41,7 +41,37 @@
"SORT_UPDATED": "Last update",
"SORT_CREATED": "Created at",
"APPLY": "Apply filters",
"CLEAR": "Clear filters"
"CLEAR": "Clear filters",
"HIDE": "Hide filters"
},
"KPI": {
"TOTAL": "Total on page",
"PENDING_PIX": "Awaiting PIX",
"CHECKIN_TODAY": "Check-in today",
"REVENUE_TODAY": "Revenue today"
},
"PILLS": {
"ALL": "All",
"DRAFT": "Draft",
"PENDING_PAYMENT": "Awaiting PIX",
"CONFIRMED": "Confirmed",
"CANCELLED": "Cancelled"
},
"QUICK_DATE": {
"TODAY": "Today",
"TOMORROW": "Tomorrow",
"WEEK": "7 days",
"ALL": "All"
},
"CARD": {
"CHECK_IN": "Check-in",
"AMOUNT": "Amount",
"TODAY": "Today",
"TOMORROW": "Tomorrow",
"YESTERDAY": "Yesterday",
"PIX_EXPIRED": "Expired",
"PIX_EXPIRES_IN_MIN": "Expires in {minutes}min",
"PIX_EXPIRES_IN_HR": "Expires in {hours}h"
},
"TABLE": {
"CUSTOMER": "Customer",
@ -64,7 +94,19 @@
},
"ACTIONS": {
"OPEN_CONVERSATION": "Open conversation",
"COPY_PIX": "Copy Pix"
"COPY_PIX": "Copy Pix",
"MORE": "More",
"REGENERATE_PIX": "Resend PIX",
"MARK_AS_PAID": "Mark as paid",
"MARK_AS_PAID_CONFIRM": "Mark this reservation as manually paid?",
"MARKED_AS_PAID": "Reservation marked as paid.",
"MARK_AS_PAID_FAILED": "Failed to mark as paid.",
"CANCEL": "Cancel reservation",
"CANCEL_REASON_PROMPT": "Cancellation reason (optional):",
"CANCELLED": "Reservation cancelled.",
"CANCEL_FAILED": "Failed to cancel.",
"PIX_REGENERATED": "New PIX generated and sent.",
"PIX_REGENERATE_FAILED": "Failed to resend PIX."
},
"KANBAN": {
"EMPTY_COLUMN": "No reservations in this status."
@ -511,5 +553,147 @@
"SUCCESS": "FAQ created successfully!",
"ERROR": "Error creating FAQ. Please try again."
}
},
"CAPTAIN_LIFECYCLE": {
"HEADER": "Customer Journey",
"SUBTITLE": "Automated WhatsApp messages along the reservation lifecycle",
"TABS": {
"RULES": "Rules",
"SETTINGS": "Settings",
"HISTORY": "History"
},
"RULES": {
"EMPTY": "No rules configured yet.",
"CREATE": "New rule",
"TEMPLATES_TITLE": "Ready-made templates",
"COLUMNS": {
"NAME": "Name",
"EVENT": "Event",
"OFFSET": "Offset",
"FILTER": "Filter",
"STATUS": "Status",
"ACTIONS": "Actions"
},
"STATUS": {
"ENABLED": "Active",
"DISABLED": "Disabled"
},
"ACTIONS": {
"EDIT": "Edit",
"DUPLICATE": "Duplicate",
"TOGGLE": "Enable/Disable",
"DELETE": "Delete"
},
"DELETE_CONFIRM": "Are you sure you want to delete this rule?",
"TOAST": {
"CREATED": "Rule created successfully.",
"UPDATED": "Rule updated.",
"DELETED": "Rule deleted."
},
"WIZARD": {
"TITLE_CREATE": "New rule",
"TITLE_EDIT": "Edit rule",
"STEP_WHEN": "When?",
"STEP_WHO": "Who?",
"STEP_WHAT": "What?",
"STEP_REVIEW": "Review",
"NEXT": "Next",
"BACK": "Back",
"SAVE": "Save",
"FIELDS": {
"NAME": "Rule name",
"DESCRIPTION": "Description",
"EVENT": "Trigger event",
"OFFSET_VALUE": "Value",
"OFFSET_UNIT": "Unit",
"OFFSET_DIRECTION": "Direction",
"UNITS": "Units",
"CATEGORIAS": "Suite categories",
"PERMANENCIAS": "Stay types",
"MESSAGE_TYPE": "Message type",
"MESSAGE_BODY": "Message body",
"PRIORITY": "Priority",
"ENABLED": "Rule active"
},
"OFFSET_UNITS": {
"MINUTES": "Minutes",
"HOURS": "Hours",
"DAYS": "Days"
},
"OFFSET_DIRECTIONS": {
"BEFORE": "Before",
"AFTER": "After"
},
"EVENTS": {
"RESERVATION_CONFIRMED": "Reservation confirmed (Pix paid)",
"CHECKIN_SCHEDULED_AT": "Check-in time",
"CHECKOUT_SCHEDULED_AT": "Check-out time",
"RESERVATION_CANCELLED": "Reservation cancelled",
"RESERVATION_NO_SHOW": "No-show"
},
"MESSAGE_TYPES": {
"TEXT": "Plain text",
"BUTTONS": "Text with buttons",
"LIST": "List menu",
"URL_BUTTON": "Link button"
}
}
},
"SETTINGS": {
"GUARDS_TITLE": "Anti-spam guards",
"QUIET_HOURS_ENABLED": "Enable quiet hours",
"QUIET_HOURS_FROM": "From",
"QUIET_HOURS_TO": "To",
"MIN_INTERVAL": "Minimum interval between messages (min)",
"MIN_INTERVAL_HELP": "0 disables",
"PAUSE_ON_REPLY": "Pause if customer replied",
"PAUSE_ON_REPLY_WINDOW": "Window (min)",
"OPT_OUT_LABEL": "Opt-out label",
"MAX_PER_RESERVATION_INFO": "Maximum of 5 messages per reservation (not configurable)",
"CONCIERGE_TITLE": "Concierge (Sofia) per Unit",
"CONCIERGE_INBOX": "WhatsApp Inbox",
"CONCIERGE_PERSONA": "Persona name",
"CONCIERGE_KNOWLEDGE": "Knowledge base (markdown)",
"CONCIERGE_VARIABLES": "Unit variables",
"CONCIERGE_VARIABLE_KEY": "Key",
"CONCIERGE_VARIABLE_VALUE": "Value",
"CONCIERGE_ADD_VARIABLE": "Add variable",
"SAVE": "Save changes",
"TOAST": {
"SAVED": "Settings saved.",
"CONCIERGE_SAVED": "Unit concierge updated."
}
},
"HISTORY": {
"EMPTY": "No deliveries recorded.",
"COLUMNS": {
"RULE": "Rule",
"CUSTOMER": "Customer",
"RESERVATION": "Reservation",
"STATUS": "Status",
"FIRE_AT": "Fired at",
"REASON": "Reason",
"ACTIONS": ""
},
"STATUS": {
"SCHEDULED": "Scheduled",
"SENT": "Sent",
"SKIPPED": "Skipped",
"FAILED": "Failed",
"CANCELLED": "Cancelled"
},
"FILTERS": {
"STATUS": "Status",
"RULE": "Rule",
"FROM": "From",
"TO": "To",
"ALL": "All"
},
"PREVIEW": "Preview",
"MODAL": {
"TITLE": "Message preview",
"CLOSE": "Close"
}
}
}
}

View File

@ -343,6 +343,7 @@
"CAPTAIN_PIX_UNITS": "Pix Units",
"CAPTAIN_GALLERY": "Gallery",
"CAPTAIN_RESERVATIONS": "Reservations",
"CAPTAIN_LIFECYCLE": "Customer Journey",
"CAPTAIN_REPORTS": "AI Reports",
"CAPTAIN_NOTIFICATIONS": "Automatic Notifications",
"HOME": "Home",

View File

@ -41,7 +41,37 @@
"SORT_UPDATED": "Última atualização",
"SORT_CREATED": "Data de criação",
"APPLY": "Aplicar filtros",
"CLEAR": "Limpar filtros"
"CLEAR": "Limpar filtros",
"HIDE": "Ocultar filtros"
},
"KPI": {
"TOTAL": "Total na página",
"PENDING_PIX": "Aguardando PIX",
"CHECKIN_TODAY": "Check-in hoje",
"REVENUE_TODAY": "Receita hoje"
},
"PILLS": {
"ALL": "Todas",
"DRAFT": "Rascunho",
"PENDING_PAYMENT": "Aguardando PIX",
"CONFIRMED": "Confirmadas",
"CANCELLED": "Canceladas"
},
"QUICK_DATE": {
"TODAY": "Hoje",
"TOMORROW": "Amanhã",
"WEEK": "7 dias",
"ALL": "Tudo"
},
"CARD": {
"CHECK_IN": "Check-in",
"AMOUNT": "Valor",
"TODAY": "Hoje",
"TOMORROW": "Amanhã",
"YESTERDAY": "Ontem",
"PIX_EXPIRED": "Expirado",
"PIX_EXPIRES_IN_MIN": "Expira em {minutes}min",
"PIX_EXPIRES_IN_HR": "Expira em {hours}h"
},
"TABLE": {
"CUSTOMER": "Cliente",
@ -64,7 +94,19 @@
},
"ACTIONS": {
"OPEN_CONVERSATION": "Abrir conversa",
"COPY_PIX": "Copiar Pix"
"COPY_PIX": "Copiar Pix",
"MORE": "Mais",
"REGENERATE_PIX": "Reenviar PIX",
"MARK_AS_PAID": "Marcar como paga",
"MARK_AS_PAID_CONFIRM": "Marcar esta reserva como paga manualmente?",
"MARKED_AS_PAID": "Reserva marcada como paga.",
"MARK_AS_PAID_FAILED": "Falha ao marcar como paga.",
"CANCEL": "Cancelar reserva",
"CANCEL_REASON_PROMPT": "Motivo do cancelamento (opcional):",
"CANCELLED": "Reserva cancelada.",
"CANCEL_FAILED": "Falha ao cancelar.",
"PIX_REGENERATED": "Novo PIX gerado e enviado.",
"PIX_REGENERATE_FAILED": "Falha ao reenviar PIX."
},
"KANBAN": {
"EMPTY_COLUMN": "Nenhuma reserva neste status."
@ -513,5 +555,147 @@
"SUCCESS": "FAQ criado com sucesso!",
"ERROR": "Erro ao criar FAQ. Tente novamente."
}
},
"CAPTAIN_LIFECYCLE": {
"HEADER": "Jornada do Cliente",
"SUBTITLE": "Automação de mensagens WhatsApp no ciclo de vida da reserva",
"TABS": {
"RULES": "Regras",
"SETTINGS": "Configurações",
"HISTORY": "Histórico"
},
"RULES": {
"EMPTY": "Nenhuma regra configurada ainda.",
"CREATE": "Nova regra",
"TEMPLATES_TITLE": "Templates prontos",
"COLUMNS": {
"NAME": "Nome",
"EVENT": "Evento",
"OFFSET": "Offset",
"FILTER": "Filtro",
"STATUS": "Status",
"ACTIONS": "Ações"
},
"STATUS": {
"ENABLED": "Ativo",
"DISABLED": "Desativado"
},
"ACTIONS": {
"EDIT": "Editar",
"DUPLICATE": "Duplicar",
"TOGGLE": "Ativar/Desativar",
"DELETE": "Excluir"
},
"DELETE_CONFIRM": "Tem certeza que deseja excluir esta regra?",
"TOAST": {
"CREATED": "Regra criada com sucesso.",
"UPDATED": "Regra atualizada.",
"DELETED": "Regra excluída."
},
"WIZARD": {
"TITLE_CREATE": "Nova regra",
"TITLE_EDIT": "Editar regra",
"STEP_WHEN": "Quando?",
"STEP_WHO": "Pra quem?",
"STEP_WHAT": "O quê?",
"STEP_REVIEW": "Revisão",
"NEXT": "Próximo",
"BACK": "Voltar",
"SAVE": "Salvar",
"FIELDS": {
"NAME": "Nome da regra",
"DESCRIPTION": "Descrição",
"EVENT": "Evento gatilho",
"OFFSET_VALUE": "Valor",
"OFFSET_UNIT": "Unidade",
"OFFSET_DIRECTION": "Direção",
"UNITS": "Unidades",
"CATEGORIAS": "Categorias de suíte",
"PERMANENCIAS": "Tipos de permanência",
"MESSAGE_TYPE": "Tipo de mensagem",
"MESSAGE_BODY": "Texto da mensagem",
"PRIORITY": "Prioridade",
"ENABLED": "Regra ativa"
},
"OFFSET_UNITS": {
"MINUTES": "Minutos",
"HOURS": "Horas",
"DAYS": "Dias"
},
"OFFSET_DIRECTIONS": {
"BEFORE": "Antes",
"AFTER": "Depois"
},
"EVENTS": {
"RESERVATION_CONFIRMED": "Reserva confirmada (Pix pago)",
"CHECKIN_SCHEDULED_AT": "Horário de check-in",
"CHECKOUT_SCHEDULED_AT": "Horário de check-out",
"RESERVATION_CANCELLED": "Reserva cancelada",
"RESERVATION_NO_SHOW": "No-show"
},
"MESSAGE_TYPES": {
"TEXT": "Texto simples",
"BUTTONS": "Texto com botões",
"LIST": "Menu de lista",
"URL_BUTTON": "Botão de link"
}
}
},
"SETTINGS": {
"GUARDS_TITLE": "Guards anti-spam",
"QUIET_HOURS_ENABLED": "Ativar quiet hours",
"QUIET_HOURS_FROM": "De",
"QUIET_HOURS_TO": "Até",
"MIN_INTERVAL": "Intervalo mínimo entre mensagens (min)",
"MIN_INTERVAL_HELP": "0 desativa",
"PAUSE_ON_REPLY": "Pausar se o cliente respondeu",
"PAUSE_ON_REPLY_WINDOW": "Janela (min)",
"OPT_OUT_LABEL": "Label de opt-out",
"MAX_PER_RESERVATION_INFO": "Máximo de 5 mensagens por reserva (não configurável)",
"CONCIERGE_TITLE": "Concierge (Sofia) por Unidade",
"CONCIERGE_INBOX": "Inbox WhatsApp",
"CONCIERGE_PERSONA": "Nome da persona",
"CONCIERGE_KNOWLEDGE": "Base de conhecimento (markdown)",
"CONCIERGE_VARIABLES": "Variáveis da unidade",
"CONCIERGE_VARIABLE_KEY": "Chave",
"CONCIERGE_VARIABLE_VALUE": "Valor",
"CONCIERGE_ADD_VARIABLE": "Adicionar variável",
"SAVE": "Salvar alterações",
"TOAST": {
"SAVED": "Configurações salvas.",
"CONCIERGE_SAVED": "Concierge da unidade atualizado."
}
},
"HISTORY": {
"EMPTY": "Nenhuma entrega registrada.",
"COLUMNS": {
"RULE": "Regra",
"CUSTOMER": "Cliente",
"RESERVATION": "Reserva",
"STATUS": "Status",
"FIRE_AT": "Disparado em",
"REASON": "Motivo",
"ACTIONS": ""
},
"STATUS": {
"SCHEDULED": "Agendada",
"SENT": "Enviada",
"SKIPPED": "Pulada",
"FAILED": "Falhou",
"CANCELLED": "Cancelada"
},
"FILTERS": {
"STATUS": "Status",
"RULE": "Regra",
"FROM": "De",
"TO": "Até",
"ALL": "Todas"
},
"PREVIEW": "Preview",
"MODAL": {
"TITLE": "Preview da mensagem",
"CLOSE": "Fechar"
}
}
}
}

View File

@ -342,6 +342,7 @@
"CAPTAIN_PIX_UNITS": "Unidades Pix",
"CAPTAIN_GALLERY": "Galeria",
"CAPTAIN_RESERVATIONS": "Reservas",
"CAPTAIN_LIFECYCLE": "Jornada do Cliente",
"CAPTAIN_REPORTS": "Relatórios IA",
"CAPTAIN_NOTIFICATIONS": "Notificações Automáticas",
"HOME": "Principal",