Centro de ayuda

Pseudo-localización para pruebas automatizadas de i18n

La pseudo-localización es una técnica de prueba potente que transforma tu texto fuente en un idioma falso para identificar problemas de internacionalización (i18n) antes de que comience la traducción real. Esta guía te muestra cómo automatizar las pruebas de pseudo-localización usando el paquete npm pseudo-l10n.

¿Qué es la pseudo-localización?

La pseudo-localización es el proceso de transformar el texto fuente de tu aplicación en un idioma falso alterado que imita cómo se comporta la interfaz de usuario después de la traducción. Ayuda a los ingenieros de QA y a los desarrolladores a identificar problemas de i18n al principio del ciclo de desarrollo.

Pseudo-localization example

Ejemplo de uso de pseudo-localización para identificar posibles problemas de internacionalización. La fuente y el tamaño son idénticos en ambos lados, pero soportar otros scripts a menudo requiere más espacio.

¿Por qué es útil la pseudo-localización?

La pseudo-localización te ayuda a detectar problemas de i18n desde el principio:

  • Expone roturas de diseño causadas por la expansión de texto (el alemán y el finlandés suelen ser entre un 30 y un 40 % más largos que el inglés).
  • Saca a la luz problemas de codificación añadiendo caracteres acentuados para probar el soporte de UTF-8.
  • Asegura que todas las cadenas sean traducibles: el texto codificado de forma rígida permanece sin cambios y es fácil de detectar.
  • Revela un manejo incorrecto de los marcadores de posición: el contenido dinámico como {{name}} debe preservarse.
  • Ayuda a definir límites de longitud de traducción para componentes de interfaz de usuario con restricciones de espacio.

Estrategias de automatización para QA

Aquí tienes estrategias probadas para automatizar las pruebas de i18n con pseudo-localización:

Caracteres acentuados y no latinos

Reemplaza las letras latinas con formas acentuadas o diferentes scripts para probar la codificación de caracteres y el soporte de fuentes.

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

Verificación de QA: Asegúrate de que todos los caracteres se muestren correctamente y que nada se rompa debido a problemas de codificación.

Simulación de expansión de texto

Expande automáticamente cada cadena en un ~30–40 % para imitar idiomas largos como el alemán o el finlandés. Envuelve con marcadores visuales para una fácil detección de recortes.

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

Verificación de QA: Usa la comparación automática de capturas de pantalla para detectar desbordamientos, recortes o desalineaciones en la interfaz de usuario.

Pruebas de estrés de marcadores de posición

Reemplaza las variables de interpolación (marcadores de posición) con marcadores visibles para verificar que se conserven durante la traducción.

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

Verificación de QA: Ejecuta pruebas de regresión; falla si falta un marcador o si está escapado incorrectamente (&lt;COUNT&gt;).

Simulación RTL

Envuelve el texto en marcadores de derecha a izquierda (RTL) usando caracteres de control Unicode para simular árabe o hebreo.

Verificación de QA: Verifica que la alineación, la dirección del texto y la duplicación sean correctas para los idiomas RTL.

Integración CI/CD

Añade la pseudo-localización a tu canalización de pruebas automatizadas para detectar problemas de i18n antes de que lleguen a producción.

Verificación de QA: Bloquea el despliegue si las pruebas detectan traducciones faltantes, marcadores de posición rotos o problemas de diseño.

Automatización con el paquete pseudo-l10n

El paquete npm pseudo-l10n automatiza la pseudo-localización para tus archivos de traducción JSON, facilitando la integración de pruebas de i18n en tu flujo de trabajo de desarrollo.

Características clave

  • Expansión de texto: simula cómo el texto traducido suele ser un 30-40 % más largo que el inglés.
  • Caracteres acentuados: prueba la codificación UTF-8 y el soporte de fuentes con equivalentes acentuados.
  • Marcadores visuales: envuelve las cadenas con marcadores ⟦...⟧ para detectar fácilmente texto no traducido o truncado.
  • Manejo de marcadores de posición: conserva marcadores de posición como {{name}}, {count}, %key%, etc.
  • Simulación RTL: simula idiomas de derecha a izquierda usando caracteres de control Unicode.

Instalación

Instala pseudo-l10n globalmente para su uso en la línea de comandos:

npm install -g pseudo-l10n

O añádelo como dependencia de desarrollo:

npm install --save-dev pseudo-l10n

Uso básico

Transforma tu archivo de traducción fuente en una versión pseudo-localizada:

pseudo-l10n input.json output.json

Ejemplo de transformación

Entrada (en.json):

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

Salida (pseudo-en.json):

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

Características avanzadas

Expansión personalizada

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

Simulación RTL

Simula idiomas de derecha a izquierda como el árabe o el hebreo:

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

Reemplazar marcadores de posición para pruebas visuales

Reemplaza los marcadores de posición con marcadores en mayúsculas para una detección visual más sencilla:

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

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

Soporte para diferentes formatos de marcadores de posición

El paquete soporta varios formatos de marcadores de posición utilizados 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

Usa pseudo-l10n programáticamente en tus scripts de Node.js o proceso de compilación:

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}}!ēēēēē⟧

Integración en tu flujo de trabajo

Scripts de npm

Añade la generación de pseudo-localización a tus scripts de 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"
  }
}

Integración del proceso de compilación

Genera pseudo-locales como parte de tu proceso de compilación:

// 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 }
);

Integración de la canalización CI/CD

Integra la pseudo-localización en tu canalización de integración continua:

# .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

Estrategia de pruebas

  1. Genera pseudo-locale durante tu proceso de compilación.
  2. Añade pseudo-locale a tu aplicación (p. ej., en el selector de idioma).
  3. Prueba tu aplicación con pseudo-locale habilitado.
  4. Revisa la aplicación en busca de problemas comunes de i18n.

Qué buscar

  • Marcadores ⟦⟧ faltantes = cadenas no traducidas (texto codificado de forma rígida).
  • Marcadores cortados = truncamiento de texto o desbordamiento de la interfaz de usuario.
  • Diseño roto = espacio insuficiente para la expansión del texto.
  • Texto ilegible = problemas de codificación o falta de soporte de fuentes.
  • Dirección de texto incorrecta = problemas RTL (para pseudo-locales RTL).

De las pruebas a la traducción real

Una vez que hayas validado tu implementación de i18n con pseudo-localización, es hora de traducir tu aplicación para usuarios reales. Aquí es donde entran los servicios de traducción potenciados por IA como l10n.dev.

¿Por qué l10n.dev para la traducción de producción?

Después de asegurar que tu aplicación maneja la internacionalización correctamente con la pseudo-localización, usa l10n.dev para una traducción profesional potenciada por IA:

  • Preserva marcadores de posición, formato y estructura, al igual que pseudo-l10n protege durante las pruebas.
  • Soporta 165 idiomas con traducción por IA consciente del contexto.
  • Maneja formas plurales, interpolación y caracteres especiales automáticamente.
  • Proporciona integración de CI/CD mediante API o paquete npm (ai-l10n) para flujos de trabajo automatizados.
  • Ofrece extensión de VS Code e interfaz web para traducción y revisión manual.

Flujo de trabajo de i18n completo

  1. Prueba tu implementación de i18n con pseudo-l10n para detectar problemas a tiempo.
  2. Corrige cualquier problema de diseño, codificación o marcador de posición descubierto durante las pruebas.
  3. Traduce tus archivos fuente validados usando l10n.dev para obtener traducciones listas para producción.

¿Listo para detectar problemas de i18n a tiempo y optimizar tu flujo de trabajo de localización?