Troubleshooting: Traducoes mostrando chave bruta
Sintoma
A UI mostra atendimentoChatExtra.callWaba em vez de “Ligar via WABA”
Diagnostico rapido (Python)
import json
with open('/home/deployzdg/zpro.io/frontend/src/i18n/locales/pt.json') as f:
d = json.load(f)
# Testar qualquer key:
ns = 'atendimentoChatExtra' # mudar aqui
key = 'callWaba' # mudar aqui
result = d.get(ns, {}).get(key)
print(f"{'OK: ' + result if result else 'FALTANDO em ' + ns}")
# Onde essa key existe?
for namespace, content in d.items():
if isinstance(content, dict) and key in content:
print(f"Encontrada em: {namespace}.{key} = {content[key]}")Causa
A key existe em outro namespace (ex: ticketDetail) mas o componente usa um namespace diferente.
O componente ChatHeader usa tE = useTranslations("atendimentoChatExtra").
Se a key so esta em ticketDetail, o ChatHeader nao encontra → mostra o nome completo.
Fix
Adicionar a key ANTES do } de fechamento do namespace correto em pt.json e en.json.
Localizar o namespace:
grep -n '"atendimentoChatExtra"' /home/deployzdg/zpro.io/frontend/src/i18n/locales/pt.jsonIr ate perto do fim do namespace e adicionar a key antes do }.
Verificacao completa
import json
REQUIRED = {
'atendimentoChatExtra': ['callWaba','wabaCallPermissionRequest','wabaCallPermissionSent',
'callContact','hangupCall','channelDataUnavailable','addTag','tagUpdateError',
'newOpportunityDialogTitle','newOpportunityDialogDesc','newOpportunityNameLabel',
'newOpportunityValueLabel','newOpportunityPipelineLabel','newOpportunitySelectPipeline',
'newOpportunityStageLabel','newOpportunitySelectStage','newOpportunityCreateBtn',
'defaultOpportunityName'],
'layoutSidebar.item': ['principal','kanbanNovo','templatesWaba'],
'layoutSidebar.cat': ['gestaoCrm','gestaoEquipe','redesSociais'],
'massaLayout': ['tabCriarTemplate','tabTemplate','tabTemplateVariavel','tabTexto','tabTextoVariavel'],
}
with open('/home/deployzdg/zpro.io/frontend/src/i18n/locales/pt.json') as f: d = json.load(f)
for path, keys in REQUIRED.items():
parts = path.split('.')
obj = d
for p in parts: obj = obj.get(p, {}) if isinstance(obj, dict) else {}
for k in keys:
status = 'OK' if k in obj else 'FALTA'
print(f"[{status}] {path}.{k}")