Comparar un mensaje ICU con su traducción

Pega el mensaje original y su traducción para comparar la estructura. Confirma el resultado con la biblioteca ICU o i18n que use tu aplicación.

Se ejecuta localmente en tu navegador
Los mensajes se analizan por completo en este navegador. VoriTools no los sube, traduce ni almacena.
Mensaje ICU de origen
Mensaje ICU traducido
Informe de compatibilidad de mensajes
—Argumentos de origen
—Argumentos de traducción
—Problemas
  • INFOPega ambos mensajes y ejecuta la comprobación local de compatibilidad.

Detecta errores de contrato de traducción antes de renderizar

El comprobador valida estructuras prácticas de ICU MessageFormat, incluidos argumentos anidados, ramas select, alternativas plural/selectordinal y paridad de marcadores. Es una ayuda de revisión, no sustituye la biblioteca i18n de producción.

Cómo comparar dos mensajes ICU

Pega el mensaje de origen en «Mensaje ICU de origen» y su traducción en «Mensaje ICU traducido». Ambas cadenas se leen como ICU MessageFormat, se compara su estructura y cada hallazgo aparece en su propia línea con el prefijo OK, CHECK o ERROR.

Los tres contadores sobre la lista indican cuántos argumentos declara cada mensaje y cuántos hallazgos se han encontrado. Todo se analiza en este navegador: no se sube nada y la página sigue funcionando sin conexión una vez cargada.

  1. Pega el mensaje de origen en el campo izquierdo y la traducción en el derecho, o pulsa Cargar ejemplo para partir de un par que funciona.
  2. Pulsa Comprobar mensajes. Si el par es compatible aparece una sola línea OK; cualquier otra diferencia se muestra como CHECK o ERROR.
  3. Lee el informe: ERROR señala un contrato roto —un argumento o una rama other que la traducción ha perdido, o un mensaje que no se puede analizar—; CHECK señala una diferencia que conviene revisar, como un argumento de más, un tipo distinto o una rama select que solo tiene un lado.
  4. Pulsa Copiar informe para llevarte los hallazgos como texto plano, o Limpiar para vaciar ambos campos y empezar de nuevo.
  5. Renderiza los mensajes finales con la biblioteca ICU o i18n que uses en producción: esta página compara la estructura, no el texto traducido.

Qué compara el comprobador y qué deja fuera

Qué se compara

Los argumentos se emparejan por nombre entre los dos mensajes. Un argumento que solo existe en el origen es un ERROR, uno que solo existe en la traducción es un CHECK, y si el mismo nombre lleva un tipo distinto —plural en un mensaje y number en el otro— el informe lanza un CHECK con ambos tipos.

En los argumentos select se comparan las claves de rama una a una, de modo que una rama perdida o añadida en la traducción se indica con su nombre. Los argumentos plural y selectordinal deben conservar una rama other, y su ausencia es un ERROR atribuido al lado que la ha perdido. Los mensajes anidados dentro de una rama se analizan de forma recursiva, así que sus argumentos también se cuentan.

Qué no se compara

Las ramas de plural y selectordinal no se comparan una a una: un origen con one/other frente a una traducción que solo tiene other se considera compatible. El comprobador tampoco lee el texto traducido, ni comprueba qué categorías de plural necesita el idioma de destino (few, many…), ni renderiza el mensaje con valores.

Un informe en verde significa solo que los dos mensajes declaran los mismos argumentos y las mismas ramas select. Renderiza ambos con tu biblioteca de producción antes de publicar y ten en cuenta las reglas de plural del idioma de destino.

Sintaxis que acepta

El analizador lee argumentos {name}, argumentos plural, selectordinal y select con sus ramas, offset:N en la cabecera de plural, mensajes anidados, el marcador # dentro de ramas plural y el entrecomillado con apóstrofos: dos apóstrofos representan uno literal y uno solo abre y cierra texto entrecomillado. Los tipos como number, date o time se registran por su nombre, así que un esqueleto como {value, number, ::percent} se acepta.

Un mensaje que no se puede leer detiene la ejecución con un ERROR en lugar de un informe: una { sin cerrar, una } sin pareja, un apóstrofo sin cerrar, un nombre de argumento que no empieza por letra o guion bajo, o una rama sin su bloque { … }.

Herramientas recientes: