Central de Ajuda

Pseudo-localização para Testes Automatizados de i18n

A pseudo-localização é uma técnica de teste poderosa que transforma seu texto de origem em um idioma falso para identificar problemas de internacionalização (i18n) antes que a tradução real comece. Este guia mostra como automatizar testes de pseudo-localização usando o pacote npm pseudo-l10n.

O que é Pseudo-localização?

A pseudo-localização é o processo de transformar o texto de origem da sua aplicação em um idioma falso alterado que imita como a UI se comporta após a tradução. Isso ajuda engenheiros de QA e desenvolvedores a identificar problemas de i18n no início do ciclo de desenvolvimento.

Pseudo-localization example

Exemplo do uso de pseudo-localização para identificar possíveis problemas de internacionalização. A fonte e o tamanho são idênticos em ambos os lados, mas suportar outros scripts geralmente requer mais espaço.

Por que a Pseudo-localização é Útil

A pseudo-localização ajuda você a detectar problemas de i18n precocemente:

  • Expõe quebras de layout causadas pela expansão de texto (alemão e finlandês são tipicamente 30-40% mais longos que o inglês).
  • Revela problemas de codificação adicionando caracteres acentuados para testar o suporte a UTF-8.
  • Garante que todas as strings sejam traduzíveis - texto hard-coded permanece inalterado e é fácil de identificar.
  • Revela manuseio incorreto de placeholders - conteúdo dinâmico como {{name}} deve ser preservado.
  • Ajuda a definir limites de comprimento de tradução para componentes de UI com restrições de espaço.

Estratégias de Automação para QA

Aqui estão estratégias comprovadas para automatizar testes de i18n com pseudo-localização:

Caracteres Acentuados e Não Latinos

Substitua letras latinas por formas acentuadas ou scripts diferentes para testar a codificação de caracteres e o suporte a fontes.

Exemplo: "Save" → "Šàvē"

Verificação de QA: Garanta que todos os caracteres sejam exibidos corretamente e que nada quebre devido a problemas de codificação.

Simulação de Expansão de Texto

Expanda automaticamente cada string em ~30–40% para imitar idiomas longos como alemão ou finlandês. Envolva com marcadores visuais para fácil detecção de corte.

Exemplo: "Save" → ⟦Šàvēēēēē⟧

Verificação de QA: Use comparação automatizada de capturas de tela para detectar estouro de UI, corte ou desalinhamento.

Teste de Estresse de Placeholders

Substitua variáveis de interpolação (placeholders) por marcadores visíveis para verificar se são preservados durante a tradução.

Exemplo: "You have {{count}} items" → "You have <COUNT> items"

Verificação de QA: Execute testes de regressão; falhe se um marcador estiver ausente ou escapado incorretamente (&lt;COUNT&gt;).

Simulação RTL

Envolva o texto em marcadores da direita para a esquerda (RTL) usando caracteres de controle Unicode para simular árabe ou hebraico.

Verificação de QA: Verifique se o alinhamento, a direção do texto e o espelhamento estão corretos para idiomas RTL.

Integração CI/CD

Adicione a pseudo-localização ao seu pipeline de teste automatizado para detectar problemas de i18n antes que cheguem à produção.

Verificação de QA: Bloqueie o deploy se os testes detectarem traduções ausentes, placeholders quebrados ou problemas de layout.

Automatizando com o Pacote pseudo-l10n

O pacote npm pseudo-l10n automatiza a pseudo-localização para seus arquivos de tradução JSON, facilitando a integração de testes de i18n no seu fluxo de trabalho de desenvolvimento.

Principais Recursos

  • Expansão de Texto: Simula como o texto traduzido é frequentemente 30-40% mais longo que o inglês.
  • Caracteres Acentuados: Testa a codificação UTF-8 e o suporte a fontes com equivalentes acentuados.
  • Marcadores Visuais: Envolve strings com marcadores ⟦...⟧ para identificar facilmente texto não traduzido ou truncado.
  • Manuseio de Placeholders: Preserva placeholders como {{name}}, {count}, %key%, etc.
  • Simulação RTL: Simula idiomas da direita para a esquerda usando caracteres de controle Unicode.

Instalação

Instale o pseudo-l10n globalmente para uso via linha de comando:

npm install -g pseudo-l10n

Ou adicione-o como uma dependência de desenvolvimento:

npm install --save-dev pseudo-l10n

Uso Básico

Transforme seu arquivo de tradução de origem em uma versão pseudo-localizada:

pseudo-l10n input.json output.json

Exemplo de Transformação

Entrada (en.json):

{
  "welcome": "Welcome to our application",
  "greeting": "Hello, {{name}}!",
  "itemCount": "You have {{count}} items"
}

Saída (pseudo-en.json):

{
  "welcome": "⟦Ŵëļçõɱë ţõ õür àƥƥļïçàţïõñēēēēēēēēēēēēēēēēēē⟧",
  "greeting": "⟦Ĥëļļõēēēēēē, {{name}}!ēēēēē⟧",
  "itemCount": "⟦Ŷõü ĥàṽë {{count}} ïţëɱšēēēēēēēēēēēēēēēē⟧"
}

Recursos Avançados

Expansão Personalizada

pseudo-l10n en.json pseudo-en.json --expansion=30

Simulação RTL

Simule idiomas da direita para a esquerda como árabe ou hebraico:

pseudo-l10n en.json pseudo-ar.json --rtl

Substituir Placeholders para Testes Visuais

Substitua placeholders por marcadores em maiúsculas para facilitar a detecção visual:

pseudo-l10n en.json pseudo-en.json --replace-placeholders

# Input:  { "greeting": "Hello, {{name}}!" }
# Output: { "greeting": "⟦Ĥëļļõēēēēēē, <NAME>!ēēēēē⟧" }

Suporte para Diferentes Formatos de Placeholder

O pacote suporta vários formatos de placeholder usados por diferentes bibliotecas de i18n:

# For i18next (default)
pseudo-l10n en.json pseudo-en.json --placeholder-format="{{key}}"

# For Angular/React Intl
pseudo-l10n en.json pseudo-en.json --placeholder-format="{key}"

# For sprintf style
pseudo-l10n en.json pseudo-en.json --placeholder-format="%key%"

Uso Programático

Use o pseudo-l10n programaticamente em seus scripts Node.js ou processo de build:

const { generatePseudoLocaleSync, pseudoLocalize } = require('pseudo-l10n');

// Generate a pseudo-localized JSON file
generatePseudoLocaleSync('en.json', 'pseudo-en.json', {
  expansion: 40,
  rtl: false
});

// Pseudo-localize a single string
const result = pseudoLocalize('Hello, {{name}}!');
console.log(result);
// Output: ⟦Ĥëļļõēēēēēēēēēēēēēē, {{name}}!ēēēēē⟧

Integração no Seu Fluxo de Trabalho

Scripts npm

Adicione a geração de pseudo-localização aos seus scripts do package.json:

{
  "scripts": {
    "pseudo": "pseudo-l10n src/locales/en.json src/locales/pseudo-en.json",
    "pseudo:rtl": "pseudo-l10n src/locales/en.json src/locales/pseudo-ar.json --rtl"
  }
}

Integração no Processo de Build

Gere pseudo-locales como parte do seu processo de build:

// build.js
const { generatePseudoLocaleSync } = require('pseudo-l10n');

// Generate pseudo-locales as part of build
generatePseudoLocaleSync(
  './src/locales/en.json',
  './src/locales/pseudo-en.json',
  { expansion: 40 }
);

generatePseudoLocaleSync(
  './src/locales/en.json',
  './src/locales/pseudo-ar.json',
  { rtl: true }
);

Integração no Pipeline CI/CD

Integre a pseudo-localização ao seu pipeline de integração contínua:

# .github/workflows/test.yml
- name: Generate pseudo-locales
  run: |
    npm install -g pseudo-l10n
    pseudo-l10n src/locales/en.json src/locales/pseudo-en.json

- name: Run i18n tests
  run: npm run test:i18n

Estratégia de Teste

  1. Gere o pseudo-locale durante seu processo de build.
  2. Adicione o pseudo-locale à sua aplicação (por exemplo, no seletor de idioma).
  3. Teste sua aplicação com o pseudo-locale ativado.
  4. Revise a aplicação em busca de problemas comuns de i18n.

O que procurar

  • Marcadores ⟦⟧ ausentes = strings não traduzidas (texto hard-coded).
  • Marcadores cortados = truncamento de texto ou estouro de UI.
  • Layout quebrado = espaço insuficiente para expansão de texto.
  • Texto ilegível = problemas de codificação ou falta de suporte a fontes.
  • Direção de texto incorreta = problemas de RTL (para pseudo-locales RTL).

Do Teste à Tradução Real

Depois de validar sua implementação de i18n com pseudo-localização, é hora de traduzir sua aplicação para usuários reais. É aqui que entram os serviços de tradução via IA como o l10n.dev.

Por que l10n.dev para Tradução em Produção

Após garantir que sua aplicação lida corretamente com a internacionalização com a pseudo-localização, use o l10n.dev para tradução profissional via IA:

  • Preserva placeholders, formato e estrutura - exatamente como o pseudo-l10n protege durante os testes.
  • Suporta 165 idiomas com tradução via IA com consciência de contexto.
  • Lida automaticamente com formas plurais, interpolação e caracteres especiais.
  • Fornece integração CI/CD via API ou pacote npm (ai-l10n) para fluxos de trabalho automatizados.
  • Oferece extensão para VS Code e UI web para tradução e revisão manual.

Fluxo de trabalho de i18n completo

  1. Teste sua implementação de i18n com pseudo-l10n para detectar problemas precocemente.
  2. Corrija quaisquer problemas de layout, codificação ou placeholders descobertos durante o teste.
  3. Traduza seus arquivos de origem validados usando l10n.dev para traduções prontas para produção.

Pronto para detectar problemas de i18n precocemente e otimizar seu fluxo de trabalho de localização?