Skip to main content
LINE / Airbnb / Change.org / KakaoTalk

Consulta de internacionalização: Corrigir o que está a falhar, planear o que vem a seguir

Já sabe que a internacionalização (i18n) é difícil. Já vi os sintomas: layouts RTL que colapsam, texto em alemão a transbordar dos botões, respostas de API na língua errada e traduções que perdem a sincronização poucas semanas após o lançamento. Não vendo soluções milagrosas. Ajudo-o a desembaraçar a confusão específica em que a sua equipa se encontra — e a criar sistemas que não vão falhar da mesma forma duas vezes.

«Devíamos ter planeado isto mais cedo»

O custo oculto da arquitetura que está a pagar agora

Lançou em inglês. Funcionou. Depois adicionou francês «só para a página de destino». Agora está aqui porque:

A sua base de código tem verificações de lang= espalhadas por 47 ficheiros

Os gestores de produto perguntam «podemos fazer testes A/B ao texto?» e a engenharia responde «não sem reescrever tudo»

Tem três workflows de tradução diferentes e nenhum deles funciona de forma fiável

O que já vi correr mal:

  • Equipas a passar mais de 6 meses a adaptar i18n numa aplicação Next.js porque as strings estavam hard-coded nos componentes
  • Ficheiros de tradução a ficarem dessincronizados porque os programadores não sabem qual ficheiro atualizar
  • Períodos de «congelamento da localização» antes dos lançamentos porque ninguém confia no processo de tradução
  • Resistência a alterar qualquer conteúdo traduzido porque o fluxo de trabalho é demasiado penoso

Em que ajudo:

  • Estratégias de refatorização que lhe permitem adotar o i18n de forma incremental (não exijo «parar tudo e reescrever»)
  • Conceção de processos para manter as traduções sincronizadas sem bloquear o desenvolvimento
  • Revisões de arquitetura para identificar onde a sua abordagem atual vai falhar com mais de 10 línguas

i18n é arquitetura, não uma funcionalidade. Tentar adicioná-la depois é como decidir que a casa precisa de uma cave depois de já a ter construído.

Eu ajudo-o a escavar essa cave — ou a decidir se realmente precisa de uma.

RTL parte tudo

A sua UI não foi concebida para árabe, hebraico ou urdu.

Mudou para dir=«rtl» e viu o layout rebentar:

As listas suspensas abrem na direção errada
Os ícones apontam para o lado errado
Layouts Flexbox colapsam ou criam sobreposições estranhas
Os tooltips aparecem fora do ecrã
Os elementos flutuantes ignoram completamente a direção do texto

O que tenho visto:

  • Sistemas de design com mais de 200 componentes em que apenas 12 lidam corretamente com RTL
  • Equipas a usar float: left em vez de propriedades lógicas, a criar bugs RTL a cada nova funcionalidade
  • Popovers e modais que exigem substituições RTL específicas por componente
  • Frameworks que afirmam ter «suporte RTL», mas que apenas invertem a direção do layout e partem a lógica de posicionamento

Em que ajudo:

  • Migração para propriedades lógicas de CSS (margin-inline-start em vez de margin-left)
  • Auditorias ao sistema de design para detetar minas RTL antes do lançamento
  • Orientação específica por framework (Tailwind, shadcn, MUI) para estilização RTL-first

Corrigir manualmente erros RTL em cada componente é insustentável. Torno o suporte RTL sistemático, em vez de andar sempre a apagar fogos.

«O texto em alemão rebentou com o nosso botão»

UI que não foi pensada para tradução

O inglês cabe. O alemão não. O seu design partiu do princípio de que:

As etiquetas dos botões têm cerca de 10 caracteresOs nomes de utilizador cabem numa coluna de 200 pxAs mensagens de erro são de uma linha

Depois traduziu para alemão, finlandês ou tailandês e descobriu:

Botões cortados a meio da palavra

Tabelas com deslocamento horizontal em todas as linhas

Texto que se parte em blocos ilegíveis

Texto não latino truncado porque os contentores têm larguras fixas

Em que ajudo:

  • Padrões de UI elásticos que se adaptam ao tamanho do conteúdo
  • Planeamento do orçamento de caracteres (o alemão expande 30 %, o tailandês não usa espaços)
  • Sistemas de tipografia que lidam com CJK, árabe e devanágari sem problemas

Ajudo-o a criar uma UI que resiste à tradução — antes de ter pago por 10 000 palavras que não cabem.

Não precisa de uma lição sobre a importância do i18n. Precisa de alguém que já tenha feito debug de popovers RTL às 2 da manhã, discutido com o produto sobre limites de caracteres e criado pipelines de tradução que realmente funcionam.

As armadilhas de que ninguém lhe falou

Histórias de guerra de equipas que já passaram por isto

Isto não é teórico. São coisas que rebentaram em produção:

O inferno da pluralização

Inglês: «1 item» vs «2 items»

Polaco: «1 przedmiot» / «2 przedmioty» / «5 przedmiotów» (3 formas de plural)

Árabe: 6 formas de plural

A sua lógica count === 1 ? 'item' : 'items' já não funciona.

Caos de data e hora

Formatou as datas com toLocaleDateString(). Depois, os utilizadores no Japão viram «2025年2月9日» nas exportações CSV e o Excel bloqueou.

Incompatibilidade linguística na API

O seu frontend pede francês. A sua API devolve inglês porque o token de autenticação não inclui o locale. Agora tem uma interface com línguas misturadas e utilizadores que pensam que é um bug.

Testes com pseudo-localização

Não testou com [Ţĥîś îś ţéśţ ţéẋţ ţĥàţ éẋþàñðś 30 %] antes de colocar em produção. Agora, o seu site em polaco está inutilizável.

O pressuposto invisível

Partiu do princípio de que as strings são a única coisa que precisa de tradução. Depois deparou-se com datas, números, moedas, ordenação, pesquisa — tudo tem comportamento específico por localidade.

Em que ajudo:

  • Implementação de ICU MessageFormat (trata plurais, género, contexto)
  • Padrões de i18n para APIs (negociação de língua, estratégias de contingência)
  • Processos de QA que detetam estes problemas antes das agências de tradução

O fluxo de trabalho é a parte difícil

Como manter 8 línguas sincronizadas quando se lançam versões todos os dias?

Já domina a tecnologia. Agora está bloqueado no processo:

1

Os programadores fazem merge de código com novas strings em inglês. As traduções atrasam-se 2 semanas. Os utilizadores veem uma UI meio traduzida.

2

Não sabe quais strings é seguro eliminar (estão a ser usadas? traduzidas? em curso com uma agência?)

3

O produto quer atualizar o texto. Ninguém sabe se mudar «Submit» para «Send» vai partir 12 línguas.

4

Os ficheiros de tradução ficam dessincronizados com a produção durante semanas seguidas

Perguntas que as equipas me fazem:

«A nossa API deve devolver conteúdo traduzido ou deixar o frontend tratar disso?»
«Como é que versionamos as traduções?»
«Qual é a fonte de referência: o Figma, a base de código ou a ferramenta de tradução?»
«Como evitar que os programadores lancem funcionalidades apenas em inglês?»

O que já vi correr mal:

  • Ficheiros de tradução registados no git que divergem das strings em produção
  • Avisos de «Não mexam no ficheiro espanhol» porque ninguém sabe o que é seguro alterar
  • Funcionalidades lançadas em inglês e traduzidas 6 meses depois (se é que chegaram a ser)

Em que ajudo:

  • Conceção do pipeline de tradução (quando usar bibliotecas i18n, quando usar um TMS, quando usar IA)
  • Fluxos de trabalho Git para manter as strings de origem e as traduções sincronizadas
  • Automatização que bloqueia PRs se as novas strings não estiverem marcadas para tradução

A tecnologia tem solução. O fluxo de trabalho é que é o problema. Concebo fluxos de trabalho que não exigem heroísmos para manter.

Equipas com quem trabalhei

Produtos globais, especialização regional

Logótipo da LINE (Japão, Taiwan, Tailândia)

LINE (Japão, Taiwan, Tailândia)

Plataforma de mensagens presente em 3 mercados principais do Leste Asiático. Trabalhei em desafios específicos relacionados com o tratamento de caracteres CJK, a integração no ecossistema da plataforma e as expectativas de experiência do utilizador, que diferem entre o Japão, Taiwan e a Tailândia.

Logótipo da KakaoTalk (Coreia do Sul)

KakaoTalk (Coreia do Sul)

A plataforma de mensagens dominante na Coreia. Abordei requisitos específicos do mercado coreano, incluindo expectativas de formalidade linguística na interface e necessidades de integração com a plataforma.

Logótipo da Change.org (196 países, mais de 20 línguas prioritárias)

Change.org (196 países, mais de 20 línguas prioritárias)

Plataforma global de petições, onde a rapidez e a qualidade do conteúdo são essenciais. Ajudei a estruturar o fluxo de trabalho de tradução para conteúdo político e social gerado pelos utilizadores em mercados diversificados.

Logótipo da Airbnb (mais de 220 países, mais de 60 línguas)

Airbnb (mais de 220 países, mais de 60 línguas)

Mercado global com requisitos complexos de i18n. Prestei consultoria sobre desafios de confiança e segurança em várias línguas e adaptação cultural de conceitos da plataforma a diferentes mercados.

Logótipo da Intercom (mais de 30 línguas, B2B SaaS global)

Intercom (mais de 30 línguas, B2B SaaS global)

Plataforma de comunicação com clientes ao serviço de grandes empresas a nível global. Trabalhei na internacionalização do produto para ferramentas de suporte em tempo real e na localização da base de conhecimento.

Logótipo da Lilith Games (China, Japão, Coreia, EUA, UE)

Lilith Games (China, Japão, Coreia, EUA, UE)

Editora de jogos móveis com títulos distribuídos a nível global. Abordei desafios específicos de cada mercado, relacionados com a localização de conteúdos e os requisitos regionais das plataformas.

Mercados em que lancei:

Ásia Oriental (Japão, Coreia, China):

Tipografia CJK, integração no ecossistema da plataforma, suporte de texto vertical

Sudeste Asiático (Tailândia, Vietname, Indonésia):

Suporte a múltiplos sistemas de escrita, expectativas do utilizador orientadas para o móvel

MENA (regiões de língua árabe):

Requisitos de layout RTL, expectativas de registo formal vs. coloquial, adaptação cultural de conteúdo

Europa:

24 línguas oficiais, lançamentos de produto em vários países

Américas:

Variações regionais da língua (espanhol da América Latina vs. Espanha, português do Brasil), mercados bilingues

Vi o que funciona e o que falha nestes mercados — não com base em teoria, mas ao lançar produtos de que utilizadores reais dependem.

Vamos corrigir o que está a falhar

Não precisa de uma lição sobre a importância do i18n. Precisa de alguém que já tenha feito debug de popovers RTL às 2 da manhã, discutido com o produto sobre limites de caracteres e criado pipelines de tradução que realmente funcionam.

Revisão da arquitetura e estratégia (1-2 semanas):

Digo-lhe o que vai falhar quando adicionar as próximas 3 línguas e quanto custará corrigir

Apoio ao lançamento no mercado (4-8 semanas):

Está a lançar no Japão/MENA/UE e precisa de especialistas que já o tenham feito antes

Parceria contínua:

Consultoria integrada à medida que escala de 2 para 20 línguas

Não faço teoria. Faço triagem, roadmaps e lançamentos.