Documentación

Pruebas de Localización con pseudotraducción

Visualiza tus páginas con una traducción falsa, acentuada, más larga y invertida para idiomas de derecha a izquierda. Verás texto que el catálogo omitió, etiquetas recortadas y diseños que no se reflejan, antes de que nadie realice la traducción.

Una pseudotraducción reemplaza cada cadena por un texto falso reconocible. En un idioma de izquierda a derecha, cada letra lleva acento y la cadena crece dentro de corchetes: Guardar cambios se convierte en ⟦Šáṽé çĥáñĝéš··········⟧. En un idioma de derecha a izquierda, cada cadena se invierte con una sobreescritura de dirección, de modo que la página se lee de derecha a izquierda incluso antes de que existan el árabe o el hebreo.

En una página renderizada de esta manera, se hacen visibles tres problemas:

  • Texto plano no proviene del catálogo: se escribe en el código o se genera en tiempo de ejecución.
  • Texto recortado no dejó espacio para idiomas más largos.
  • Diseño de maquetación estable en una página de derecha a izquierda usa izquierda y derecha en lugar de inicio y fin.
alemán · Traducción pseudo-localizada/de-DE/
Tu cesta⟦Ţú çéšţá········⟧

Envío gratuito en todo pedido

Guardar cambios⟦Ĝúáŕðáŕ çáɱƀíóš············⟧

Los precios incluyen impuestos.⟦Ļóš þŕéçíóš íñçļúýéñ íɱþúéšţóš.·············⟧

árabe · Traducción pseudo-localizada/ar-SA/
Tu cesta‮Tu cesta‬

Envío gratuito en todo pedido

Guardar cambios‮Guardar cambios‬

Los precios incluyen impuestos.‮Los precios incluyen impuestos.‬

Lo que detectó la prueba
  1. Texto que no proviene del catálogo/{locale}/ · p#promo · “Envío gratuito en todo pedido” · runtime_text (de-DE, ar-SA)
  2. Texto recortado al expandirse/{locale}/ · button#save · “⟦Ĝúáŕðáŕ çáɱƀíóš············⟧” · clipped_text (de-DE)
  3. Diseño que no se refleja de derecha a izquierda/{locale}/ · p#note · “padding-left: 12px” · unmirrored_layout (ar-SA)

Lo que muestran las páginas pseudotraducidas: la misma página en alemán, con todas las cadenas acentuadas y más largas, y en árabe, invertida de derecha a izquierda. La sonda marca el texto escrito en el código, un botón que corta su texto y una regla que permanece a la izquierda. Datos ilustrativos.

En la comprobación de Globalización

Cuando el archivo de configuración indica cómo iniciar la aplicación, el Comprobación de Globalización renderiza sus páginas en cada cambio que detecta. Funciona sobre una copia del cambio en el entorno aislado propio de la comprobación, de modo que la pseudotraducción nunca llegue a tu repositorio ni a otras comprobaciones:

  1. Escribe la pseudotraducción en un idioma de izquierda a derecha y en uno de derecha a izquierda del proyecto.
  2. Instala las dependencias e inicia la aplicación.
  3. Abre cada página en ambos idiomas en un navegador configurado con ese idioma y lee lo que aparece en pantalla.
  4. Detiene la aplicación y elimina la copia.

Lo que encuentre se convertirá en los resultados de la comprobación:

CódigoLo que se encuentra
runtime_textTexto visible sin las marcas de pseudotraducción
clipped_textTexto pseudotraducido recortado por su contenedor, con overflow oculto o con elipsis
unmirrored_layoutEn una página de derecha a izquierda: una página que no sea de derecha a izquierda, texto alineado o flotante a la izquierda o derecha, o un elemento posicionado, con márgenes o rellenos a la izquierda o derecha

El mismo texto encontrado en ambos idiomas constituye un resultado. Los resultados aparecen en la sección Problemas encontrados indicando la página, el elemento, el texto y los idiomas, como /{locale}/ · p#promo · “Free shipping on every order” · runtime_text (de-DE, ar-SA).

Se registran y no bloquean nada hasta que tú lo decidas. Bajo Control de Calidad → Globalización, Renderizar páginas desactiva este paso, y Problemas de página que devuelven un cambio para su reparación elige qué códigos deben bloquearse.

Una aplicación que no se instala o inicia se reporta como no renderizada, con su salida, nunca como una renderización limpia. Retiene el cambio solo cuando bloqueas los problemas de página.

Configurarlo

Añadir world.render a .coroid/i18n.json:

{
  "world": {
    "render": {
      "start": "npm run dev",
      "pages": ["/{locale}/", "/{locale}/pricing", "/{locale}/checkout"]
    }
  }
}
CampoSignificado
startInicia la aplicación. Debe escuchar en el puerto indicado en $PORT; HOST es 127.0.0.1
pagesHasta diez rutas, desde la raíz de la aplicación. {locale} se convierte en la etiqueta del idioma, así que /{locale}/pricing abre /de-DE/pricing; usa /?lang={locale} si el idioma es un parámetro de consulta
directoryLa carpeta de la aplicación en el repositorio, cuando no es la raíz
installEl comando que instala las dependencias. Sin él, Coroid ejecuta npm cuando un package.json declara alguno
localesHasta tres idiomas objetivo para renderizar. Si no se especifica, se usan el primer idioma de izquierda a derecha y el primer idioma de derecha a izquierda
readyTimeoutMsEl tiempo máximo que puede tardar la aplicación en responder, 120.000 por defecto

El navegador también envía cada idioma como su idioma preferido, de modo que una aplicación que seleccione su idioma a partir del navegador funcione sin {locale}.

El campo requiere CLI 1.16.0 o una versión posterior en el cli pin; un motor más antiguo rechazará la configuración.

Lo que se omite

La comprobación solo lee lo que ve una persona. Omite los elementos ocultos, el código (code, pre, kbd, samp), los valores propios de los campos de formulario y los elementos marcados translate="no", aria-hidden="true", data-i18n-ignore o con la clase notranslate. Las palabras en la lista de world.allow , como los nombres de productos, nunca se reportan como texto plano.

El texto procedente de tus propios datos, como los nombres de productos o el contenido del usuario, tampoco lo traduce el catálogo. Marca su contenedor translate="no" o data-i18n-ignore, lo que también indica a las herramientas de traducción del navegador que lo ignoren.

Pruébalo tú mismo

La pseudotraducción forma parte de la herramienta de línea de comandos. Ejecútala en una copia temporal, porque reemplaza las traducciones del idioma:

coroid-i18n pseudo --locale de-DE                # accented and longer
coroid-i18n pseudo --locale ar-SA                # reversed, right to left
coroid-i18n pseudo --locale de-DE --style rtl    # choose the style yourself

Luego inicia la aplicación y abre sus páginas en ese idioma. Los marcadores de posición, las formas plurales y el formato se mantienen intactos, de modo que la aplicación funcione como siempre. Las páginas Markdown y MDX se dejan tal cual.