Traduce un archivo i18n JSON con todas las claves, los marcadores y los plurales intactos
Sube en.json (o varios archivos de espacios de nombres) y recibe es.json con las mismas claves anidadas, el mismo orden y la misma indentación. Solo se traducen los valores, y en cada cadena se comprueban todos los {name}, {{count}} y plurales ICU. Las primeras cadenas son gratis y sin registro; el trabajo completo, de hasta 5,000 cadenas, cuesta $5, con pago único.
- Las claves y su anidación nunca se traducen; los arrays, números y booleanos se dejan tal cual
- Marcadores comprobados: {name}, {{count}}, %s, :attribute, $t(key), @:key
- Los plurales ICU conservan su estructura y reciben las categorías que necesita el idioma de destino
- ARB de Flutter: se conserva @metadata y se usa como contexto, y se actualiza @@locale
- El archivo toma el nombre del idioma: en.json pasa a es.json y app_en.arb pasa a app_es.arb
{
"home.greeting": "Good morning, {name}Buenos días, {name}",
"home.nearby": "{count, plural, =0 {No trails near you yet} one {# trail near you} other {# trails near you}}{count, plural, =0 {Aún no hay rutas cerca de ti} one {# ruta cerca de ti} other {# rutas cerca de ti}}",
"trail.offline_done": "<b>{name}</b> is saved on this phone. You can use the map without a signal.<b>{name}</b> está guardado en este teléfono. Puedes usar el mapa sin señal.",
"trail.share_text": "I just finished {trail} with Trailbook! {km} km and {meters} m up. 🥾¡Acabo de terminar {trail} con Trailbook! {km} km y {meters} m de subida. 🥾",
"saved.empty": "You have not saved any trails yet.\nTap the heart on a trail to keep it here.Aún no has guardado ninguna ruta.\nToca el corazón en una ruta para guardarla aquí."
}
Amarillo: marcadores de posición y sintaxis de plurales ICU, comprobados en cada cadena. Turquesa: etiquetas, secuencias de escape y emoji, que se mantienen tal cual.
Mismas claves. Mismos marcadores. Idioma nuevo.
Solo cambian los valores. El archivo vuelve con la misma estructura y el mismo orden, con el nombre es.json, y cualquier cadena que pierda un marcador se vuelve a pedir antes de que llegue a tu compilación.
App de demostración creada para esta página; las cadenas en español son resultado real de la herramienta, a partir de un archivo de 85 cadenas.
Qué se traduce y qué no
Cada valor de texto se envía a traducir con su clave completa como contexto, de modo que "settings.save" y "cart.save" pueden dar palabras distintas. Las claves nunca se envían. Los valores que no son texto, como una URL, una dirección de correo electrónico o un valor formado solo por marcadores como "{count}", se dejan tal cual.
Las etiquetas de texto enriquecido que usan react-intl y bibliotecas similares, como <b>{name}</b> o <link>Undo</link>, se sustituyen por marcadores antes de traducir y se restituyen después. También deben sobrevivir las secuencias literales \n y los emoji; si una cadena pierde alguno, se vuelve a traducir, y si falla por segunda vez se mantiene el inglés y te indicamos la clave en una lista.
Plurales
Un mensaje ICU como {count, plural, one {# trail} other {# trails}} se traduce como una sola cadena. Al traductor se le indica qué categorías de plural usa el idioma de destino, por ejemplo one, few, many y other en ruso o polaco, y se comprueba que el resultado conserve el nombre de la variable y la palabra clave del plural. Los archivos i18next que usan claves separadas, como trail_one y trail_other, se traducen clave por clave; las claves que faltan para el idioma de destino (trail_few, trail_many) no se añaden.
Cómo funciona la herramienta, cuánto cuesta y cómo se tratan tus archivos está en la página de Traducir archivos de localización; los precios de todas las herramientas están en la página de precios.
Última actualización:
Preguntas y respuestas
¿Se mantendrá el formato de mi archivo?
Sí. La indentación (dos espacios, cuatro espacios o tabuladores), el orden de las claves, el espacio después de los dos puntos y el salto de línea final se copian de tu archivo. Un archivo minificado sigue en una sola línea.
¿Puedo subir varios archivos de espacios de nombres a la vez?
Sí, hasta 20 archivos en un mismo trabajo, como common.json, cart.json y errors.json. Se descargan juntos en un único ZIP.
¿Y las cadenas que no deben traducirse?
Indica los nombres de productos y marcas en "No traducir"; en cada cadena que contenga alguno se comprueba que se conserve. Los valores que son solo una URL, una dirección de correo electrónico o marcadores se omiten automáticamente.
¿Cuánto cuesta?
Las primeras cadenas de texto son gratis. El trabajo completo, de hasta 5,000 cadenas, cuesta $5 en un pago único. Ilimitado cubre hasta 15,000 cadenas por trabajo. Los trabajos pequeños son la excepción: un trabajo de hasta 300 cadenas es gratis por completo, descargas incluidas.