Adicionei 5 Idiomas ao DIALØGUE em 48 Horas
Criei documentos de planejamento que ensinaram o Claude Code a localizar — não só traduzir — e então observei ele executar em 5 idiomas em paralelo, transformando frases literais em textos que soam nativos.
Alguns dias atrás, um usuário perguntou se o DIALØGUE suportava espanhol.
Não suportava.
48 horas depois, ele suporta cinco idiomas — espanhol, vietnamita, japonês, coreano e mandarim. Não botões de UI traduzidos. Localização nativa completa. Podcasts que soam como se tivessem sido feitos para cada mercado.
Cinco idiomas em 48 horas parece que contratei uma equipe ou virei a noite trabalhando. Não foi assim.
Dei ao Claude Code direção de alto nível. Ele escreveu os documentos de planejamento e depois os executou — muitas vezes rodando agentes paralelos em diferentes arquivos simultaneamente.
---
O Segredo: Planeje Uma Vez, Execute Rápido
Aqui está a parte interessante: não escrevi os documentos de planejamento. O Claude Code fez — com minha orientação.
Descrevi o que queria: "Crie um guia de estilo de localização que explique como traduzir naturalmente, não literalmente. Inclua exemplos para espanhol, vietnamita, japonês, coreano e chinês. Aborde níveis de formalidade e contexto cultural."
O Claude Code produziu um guia de estilo com mais de 1.000 linhas, um checklist abrangente e um playbook de pipeline de backend. Depois seguiu seus próprios planos para executar o trabalho.
1. O Guia de Estilo
Não um glossário de tradução — um documento de filosofia. Explica *como* localizar, com exemplos de antes/depois para cada idioma.
Exemplo de entrada para espanhol:
| Inglês | Literal (Errado) | Natural (Certo) |
|---------|-----------------|-----------------|
| "Ideas, Produced" | "Ideas, Producidas" | "De la Idea, al Podcast" |
| "Researched, Not Recycled" | "Investigado, No Reciclado" | "Contenido Original, Sin Copiar" |
| "You Direct" | "Tú Diriges" | "Tú Decides" |
As traduções literais são gramaticalmente corretas mas soam como Google Translate. As versões naturais capturam a *intenção* — são o que um profissional de marketing em espanhol realmente escreveria.
O guia cobre níveis de formalidade (japonês usa a forma です/ます, coreano usa 합쇼체), contexto cultural, erros comuns a evitar. Quando o Claude Code traduz, segue esses princípios — os que ele mesmo escreveu — automaticamente.
2. O Checklist de Localização
Um checklist abrangente de cada arquivo que precisa ser alterado para um novo idioma:
Obrigatórios (devem ter):
- Frontend: `messages/{locale}.json` (~2.200 chaves)
- Backend: `locales/{locale}.json` (~82 chaves)
- Utilitários de Idioma: 3 funções em `language_utils.py`
- Geração de Fala: 1 função em `gemini_voice_instructions.py`
- Preview de Voz: 7 frases localizadas
- Moderação de Conteúdo: Palavras-chave + prompts
- Testes de Fumaça: Adicionar à matriz de testes
Opcionais (qualidade aprimorada):
- Perfis de apresentador/público por estilo
- Templates de prompt localizados
- Instruções de voz por estilo
Esse checklist garante que nada seja esquecido. O Claude Code passa por ele sistematicamente.
3. O Playbook de Backend
Documenta exatamente como a geração de podcasts trata o idioma:
- Como a geração de esboços usa o Gemini 3 Flash com instruções de idioma
- Como a geração de diálogo usa o Claude Sonnet 4.5 com contexto cultural
- Como a geração de fala usa o Gemini TTS com orientação específica por idioma
Com esses três documentos em mãos, adicionar um novo idioma se torna mecânico. O Claude Code lê o checklist, segue o guia de estilo e atualiza os arquivos de acordo com o playbook.
---
O Problema com "Só Traduz"
Tenho que admitir, meu primeiro instinto foi passar tudo por uma API de tradução e encerrar o assunto. "Create Podcast" vira "Criar Podcast" e todo mundo segue em frente, certo?
Essa abordagem cria lixo. Aprendi isso da forma difícil crescendo entre o vietnamita e o inglês — a tradução literal mata a alma do que você está tentando dizer.
Tradução preserva palavras, localização preserva significado. O guia de estilo codifica essa diferença.
| Idioma | Tradução Literal | Localização Nativa |
|----------|--------------------|--------------------|
| Vietnamita | "Ý tưởng, Được Sản Xuất" | "Từ Ý Tưởng → Đến Podcast" |
| Japonês | "アイデア、制作された" | "アイデアを、カタチに" (Ideias em forma) |
| Coreano | "아이디어, 제작됨" | "아이디어를, 현실로" (Ideias em realidade) |
| Espanhol | "Ideas, Producidas" | "De la Idea, al Podcast" |
| Chinês | "想法,已制作" | "从想法,到播客" |
Cada idioma exigiu esse nível de atenção. Cada botão, cada mensagem de erro, cada texto de marketing.
E isso é só a UI. A geração real de podcasts é mais difícil.
---
Podcasts Precisam de Apresentadores Nativos
Aqui está algo que não antecipei: os nomes dos apresentadores importam. Muito.
Na versão em inglês, os apresentadores padrão são Alex e Maya. Genéricos, esquecíveis, funciona bem.
Mas se você está gerando um podcast em vietnamita e os apresentadores ainda se chamam Alex e Maya? Soa estranho. Como vietnamita, posso te dizer — parece uma dublagem ruim de um programa americano :D
Então cada idioma ganhou nomes nativos de apresentadores:
| Idioma | Apresentador 1 | Apresentador 2 |
|----------|--------|--------|
| Inglês | Alex | Maya |
| Vietnamita | Minh | Lan |
| Japonês | 太郎 (Tarō) | 花子 (Hanako) |
| Coreano | 민준 (Minjun) | 수진 (Sujin) |
| Espanhol | Carlos | María |
| Chinês | 明辉 | 雅琴 |
Mas nomes sozinhos não são suficientes. A IA precisa entender o contexto cultural.
Um podcast de tecnologia no Japão tem normas conversacionais diferentes de um nos EUA. O nível de formalidade, a forma como o desacordo é expresso, o ritmo de troca e resposta — tudo é diferente.
Então criei instruções de prompt de IA específicas por idioma. As instruções em vietnamita especificam "bạn" (o "você" informal mas respeitoso). As instruções em japonês especificam a forma です/ます (educado mas amigável). As instruções em coreano especificam 합쇼체 (polido formal).
Esse é o tipo de coisa que você não consegue automatizar. Dos anos trabalhando em mercados da Ásia-Pacífico, conheço esses padrões de comunicação intuitivamente — o truque foi codificar esse conhecimento cultural em prompts que uma IA pudesse seguir. Mas uma vez codificados, o Claude Code os aplica consistentemente em milhares de strings.
---
A Seleção de Modelos de IA Que Realmente Funciona
Aqui é onde fica interessante do ponto de vista técnico.
O DIALØGUE usa três modelos de IA diferentes para três tarefas diferentes. Não porque eu queria complexidade, mas porque cada modelo é genuinamente melhor no seu trabalho específico.
Tarefa 1: Pesquisa e Esboço → Gemini 3 Flash
Quando um usuário digita um tópico, o primeiro passo é a pesquisa. A IA precisa:
1. Buscar na web por informações atuais
2. Sintetizar os achados em um esboço estruturado
3. Citar fontes adequadamente
Isso requer grounding (busca na web em tempo real) E saída estruturada (conformidade com schema JSON).
Aqui está o problema: a maioria dos modelos não consegue fazer os dois simultaneamente. O Gemini 2.5 Flash suporta grounding. Suporta saída estruturada. Mas não juntos. Você tem que escolher um.
Gemini 3 Flash Preview é o único modelo que encontrei que suporta ambas as funcionalidades ao mesmo tempo. Então ele trata a geração do esboço.
```python
GEMINI_MODEL = "gemini-3-flash-preview"
# Capacidade-chave:
GEMINI_MODEL_CONFIGS = \{
"gemini-3-flash-preview": {
"supports_grounding": True,
"supports_structured_output": True,
"supports_grounding_with_structured_output": True, # Essa é a chave
\}
}
```
O esboço volta em cerca de 60 segundos com fontes reais, devidamente estruturado.
Tarefa 2: Geração de Diálogo → Claude Sonnet 4.5
Uma vez que o usuário aprova o esboço, a IA escreve o roteiro completo — cada palavra que os dois apresentadores vão dizer.
Isso é escrita criativa. Precisa de personalidade, ritmo natural, a sensação de uma conversa real.
Testei isso com vários modelos. O diálogo do Claude consistentemente soa mais humano. O vai e vem parece autêntico. Os apresentadores se interrompem naturalmente. Constroem sobre os pontos um do outro.
É subjetivo, mas depois de gerar centenas de podcasts de teste, a diferença é perceptível. O Claude Sonnet 4.5 trata a geração de diálogo.
```python
ANTHROPIC_MODEL = "claude-sonnet-4-5-20250929"
```
Tarefa 3: Geração de Áudio → Gemini 2.5 Flash TTS
Por fim, o roteiro precisa se tornar áudio. Duas vozes, ritmo adequado, expressão emocional.
Gemini 2.5 Flash TTS oferece 30 vozes distintas com suporte a múltiplos falantes. Você pode ter Charon (informativo, masculino) e Kore (firme, feminino) no mesmo arquivo de áudio, alternando naturalmente entre os falantes.
A qualidade é boa o suficiente para que os usuários frequentemente perguntem se são atores de voz reais.
```python
# Síntese com múltiplos falantes com o Gemini TTS
response = client.models.generate_content(
model="gemini-2.5-flash-preview-tts",
contents=transcript,
config=types.GenerateContentConfig(
response_modalities=["AUDIO"],
speech_config=types.SpeechConfig(
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
speaker_voice_configs=speaker_configs
)
)
)
)
```
O Pipeline
Então o fluxo completo é:
```
Input do Usuário
↓
[Gemini 3 Flash] Pesquisa + Esboço Estruturado (~60 seg)
↓
Revisão e Feedback do Usuário
↓
[Claude Sonnet 4.5] Roteiro de Diálogo Completo (~2-3 min)
↓
Revisão e Edição do Usuário
↓
[Gemini 2.5 Flash TTS] Áudio com Múltiplos Falantes (~3-5 min)
↓
Podcast Finalizado
```
Cada modelo faz o que é melhor. O tempo total de geração é cerca de 8-10 minutos para um podcast de 15-30 minutos.
---
Uma Funcionalidade Que Me Surpreendeu
Os usuários pediram algo que eu não havia considerado: gerar podcasts em um idioma diferente do da UI.
Um usuário vietnamita pode estar confortável navegando o app em vietnamita mas querer criar um podcast em inglês para um público internacional. Ou um profissional de marketing que fala espanhol pode querer testar conteúdo em japonês.
Então adicionei um seletor de idioma para podcast. Sua UI pode estar em inglês enquanto você gera um podcast em mandarim. Os apresentadores terão nomes chineses (明辉 e 雅琴), o diálogo seguirá padrões conversacionais chineses e o áudio usará vozes apropriadas.
É um recurso pequeno, mas expande dramaticamente o que os usuários podem fazer.
---
Agentes Paralelos: O Multiplicador de Força
A velocidade real veio dos agentes paralelos. O checklist observa isso explicitamente:
> "Execute agentes paralelos para arquivos de backend - os arquivos de backend são menores e podem ser processados em paralelo (language_utils.py, content_moderation.py, gemini_voice_instructions.py, locales/{locale}.json)."
Quando eu dizia "Adicione suporte ao coreano", o Claude Code criava múltiplos agentes:
- Um agente atualizando o arquivo de tradução do frontend
- Outro adicionando casos em coreano ao `language_utils.py`
- Outro atualizando `gemini_voice_instructions.py`
- Outro adicionando coreano ao `content_moderation.py`
Todos rodando simultaneamente. Quando terminavam, o Claude Code mesclava as alterações e rodava os testes.
É por isso que o checklist distingue arquivos "Obrigatórios" de arquivos "Opcionais" — para que o Claude Code saiba o que paralelizar versus o que pode esperar.
Para o arquivo de tradução do frontend (~2.200 chaves), o checklist especifica uma estratégia de chunking:
- Chunk 1: `common`, `nav`, `bottomNav` (~110 chaves)
- Chunk 2: `homepage`, `auth` (~180 chaves)
- Chunk 3: `dashboard`, `create` (~330 chaves)
- E assim por diante...
Isso evita problemas de limite de tokens e permite que o Claude Code traduza namespace por namespace, revisando cada um em relação ao guia de estilo.
O escopo:
- 5 idiomas adicionados
- ~2.500 strings de tradução no total por idioma
- 10+ templates de prompt de IA por idioma
- 1 podcast de demonstração gerado por idioma
- Múltiplos agentes paralelos por idioma
O insight principal: não escrevi código. Não escrevi planos. Dei direção, revisei o output e deixei o Claude Code cuidar do resto — frequentemente em paralelo. Ainda me impressiona um pouco :P
---
O Que Vem a Seguir
Os seis idiomas cobrem cerca de 2 bilhões de usuários em potencial. É um alcance significativo.
Mas já estou pensando no que está faltando (o profissional de marketing em mim nunca para):
1. Árabe - Suporte a layout da direita para esquerda é complexo
2. Hindi - Mercado enorme, script diferente
3. Português - O Brasil é um mercado enorme de podcasts
4. Francês - Expansão europeia
5. Tagalo - Forte comunidade de criadores filipinos
Cada um requer o mesmo nível de cuidado. Localização nativa, não tradução. Prompts culturais, não templates copiados. (Isso só foi possível porque eu tinha acabado de reconstruir o app inteiro em 14 dias com uma arquitetura limpa.)
A boa notícia: os documentos de planejamento são reutilizáveis. Adicionar o próximo idioma deve ser ainda mais rápido. E a localização se estende ao app nativo para iOS que estou construindo agora — todos os 7 idiomas, mesmo backend Supabase.
---
Experimente Você Mesmo
Estou genuinamente orgulhoso de como isso ficou — especialmente a localização em vietnamita. Ouvir um podcast que parece ter sido feito para um público vietnamita, não traduzido para eles, me tocou de um jeito que não esperava.
O DIALØGUE agora suporta:
- Inglês - O original
- Vietnamita - Từ Ý Tưởng → Đến Podcast
- Japonês - アイデアを、カタチに
- Coreano - 아이디어를, 현실로
- Espanhol - De la Idea, al Podcast
- Chinês - 从想法,到播客
Crie um podcast no seu idioma →
A UI seguirá sua preferência escolhida. E lembre-se — você pode gerar podcasts em qualquer um desses idiomas independentemente da configuração de UI.
Novos usuários ganham 2 podcasts gratuitos para testar.
---
O Que Aprendi
Olhando para trás, o que mais me surpreendeu foi o quanto minha experiência em publicidade importou. Anos adaptando campanhas em mercados asiáticos me ensinaram que localização nunca é só sobre palavras — é sobre intuição cultural. Não esperava que essa fosse a habilidade mais valiosa que trouxe para um projeto de programação com IA.
Para construtores usando assistentes de código com IA:
1. Dê direção, não escreva. Não escrevi os documentos de planejamento — descrevi o que queria e o Claude Code os produziu. Depois seguiu seus próprios planos. Isso pareceu estranho no início, como delegar para alguém que também escreve seu próprio briefing. Mas funciona.
2. Estrutura permite escala. Guias de estilo, checklists, playbooks — não são mais só para humanos. Acho que esse é o maior desbloqueio: estruture seus requisitos para que um agente de IA possa executar sistematicamente. (Meus anos escrevendo briefings de marketing finalmente valeram em um jeito inesperado.)
3. Combine o modelo à tarefa. Posso estar errado, mas acredito que ainda não há um único modelo melhor em tudo. Para o DIALØGUE:
- Gemini 3 Flash para pesquisa fundamentada e estruturada
- Claude Sonnet 4.5 para diálogo natural
- Gemini 2.5 Flash TTS para áudio com múltiplos falantes
4. Localize, não traduza. Seus usuários percebem a diferença. Não consigo enfatizar isso o suficiente — como alguém que viveu em três países e trabalhou em mais de uma dúzia de mercados, já vi o que a tradução preguiçosa faz a um produto. Codifique o conhecimento cultural nos seus prompts e deixe a IA aplicá-lo consistentemente.
É isso de mim neste aqui. Se você está construindo algo multilíngue — ou até pensando nisso — adoraria saber como você está abordando a localização. Está usando IA para isso? Indo pelo caminho tradicional de agência? Concorda que o contexto cultural é a parte difícil, não a tradução em si? Me conta.
Abraços,
Chandler





