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 fonte em uma língua falsa para identificar problemas de internacionalização (i18n) antes que a tradução real comece. Este guia mostra como automatizar os testes de pseudo-localização usando o pacote pseudo-l10n npm.

O que é Pseudo-localização?

A pseudo-localização é o processo de transformar o texto fonte da sua aplicação em uma língua falsa alterada que imita como a interface do usuário se comporta após a tradução. Isso ajuda engenheiros de QA e desenvolvedores a identificar problemas de i18n cedo no ciclo de desenvolvimento.

Pseudo-localization example

Exemplo de 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 muitas vezes requer mais espaço.

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

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

  • Expõe quebras de layout causadas pela expansão de texto (o alemão e o finlandês são tipicamente 30-40% mais longos que o inglês).
  • Revela problemas de codificação ao adicionar caracteres acentuados para testar o suporte a UTF-8.
  • Garante que todas as strings sejam traduzíveis - texto codificado permanece inalterado e é fácil de identificar.
  • Revela manuseio inadequado 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 & Não-Latinos

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

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

Verificação de QA: Certifique-se de 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 línguas longas como o alemão ou o finlandês. Envolva com marcadores visuais para fácil detecção de recortes.

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

Verificação de QA: Use comparação automática de capturas de tela para detectar transbordamento da UI, recortes ou desalinhamento.

Teste de Estresse de Placeholders

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

Exemplo: "Você tem {{count}} itens" → "Você tem <COUNT> itens"

Verificação de QA: Execute testes de regressão; falhe se um marcador estiver faltando 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 línguas RTL.

Integração CI/CD

Adicione pseudo-localização ao seu pipeline de testes automatizados para capturar problemas de i18n antes que cheguem à produção.

Verificação de QA: Bloqueie a implantação 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 dos 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 os marcadores ⟦...⟧ para facilitar a identificação de texto não traduzido ou truncado.
  • Tratamento 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 na linha de comando:

npm install -g pseudo-l10n

Ou adicione como uma dependência de desenvolvimento:

npm install --save-dev pseudo-l10n

Uso Básico

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

pseudo-l10n input.json output.json

Transformação de Exemplo

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 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 ao Seu Fluxo de Trabalho

Scripts npm

Adicione a geração de pseudo-localização aos seus scripts 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 ao Processo de Build

Gere pseudo-locale 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 ao 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 Testes

  1. Gere pseudo-locale durante seu processo de build.
  2. Adicione pseudo-locale ao seu aplicativo (por exemplo, no seletor de idiomas).
  3. Teste seu aplicativo com pseudo-locale habilitado.
  4. Revise o aplicativo em busca de problemas comuns de i18n.

O que Procurar

  • Marcadores ⟦⟧ ausentes = strings não traduzidas (texto codificado).
  • Marcadores cortados = truncamento de texto ou overflow na UI.
  • Layout quebrado = espaço insuficiente para expansão de texto.
  • Texto embaralhado = problemas de codificação ou suporte de fonte ausente.
  • Direção de texto errada = problemas RTL (para pseudo-locais RTL).

De Testes a Tradução Real

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

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

Após garantir que seu aplicativo lida corretamente com a internacionalização com pseudo-localização, use l10n.dev para tradução profissional impulsionada por IA:

  • Preserva placeholders, formato e estrutura - assim como o pseudo-l10n protege durante os testes.
  • Suporta 165 idiomas com tradução de IA consciente do 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 manuais.

Fluxo de Trabalho Completo de i18n

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

Pronto para detectar problemas de i18n cedo e agilizar seu fluxo de trabalho de localização?