Traducir

Traducir archivos de locales i18next y JSON

El JSON de locales está anidado y sus cadenas contienen variables como {{name}}. Una herramienta que solo ve texto puede renombrar una clave, aplanar la anidación o traducir la variable. KAERIS devuelve el archivo con la misma estructura, con cada variable en su lugar original.

KAERIS ha traducido esta página y revisado cada línea traduciéndola de vuelta. Un hablante nativo aún no la ha revisado. Original en inglés

Cómo se construye un archivo JSON de locales

Un archivo por idioma (en.json, de.json) o uno por espacio de nombres (locales/en/common.json). Las claves son el contrato con tu código, por lo que solo se traducen los valores. i18next escribe las formas plurales como claves separadas (inbox_one, inbox_other); next-intl, Vue I18n y FormatJS las incluyen en una sola cadena ICU.

Archivo fuenteen.json
{
  "nav": { "greeting": "Welcome back, {{name}}!" },
  "inbox_one": "{{count}} new message",
  "inbox_other": "{{count}} new messages"
}

Qué tener en cuenta en las traducciones JSON

Una ejecución real, antes y después

Una ejecución real: nuestro archivo de prueba de 97 cadenas, alemán, 26 de octubre de 2026, reducido a cuatro claves. La última línea muestra una pérdida que la verificación detectó en esa ejecución.

Antesen.json
{
  "ph": {
    "mustache": "Hi {{firstName}}, your order {{orderId}} has shipped.",
    "reactTrans": "By continuing you accept our <0>Terms</0> and <1>Privacy Policy</1>.",
    "nesting": "$t(nav.cart) has been updated"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Sold out} one {Only # copy left} other {Only # copies left}}"
  }
}
Despuésde.json
{
  "ph": {
    "mustache": "Hallo {{firstName}}, Ihre Bestellung {{orderId}} wurde versendet.",
    "reactTrans": "Durch die fortgesetzte Nutzung stimmen Sie unseren <0>Nutzungsbedingungen</0> und <1>Datenschutzrichtlinien</1> zu.",
    "nesting": "Der Warenkorb wurde aktualisiert"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Ausverkauft} one {Nur noch # Exemplar} other {Nur noch # Exemplare}}"
  }
}
Verificación gratuita en este archivo/check
error ph.nesting: lost placeholder $t(nav.cart)

Lo que KAERIS hace con él

Ejecuta en tres pasos

  1. Instala el CLI

    Ejecuta pip install kaeris. No se necesita cuenta para los límites gratuitos.

  2. Traduce el archivo

    Ejecuta kaeris translate en.json --langs de,ja --verify. Los archivos de.json y ja.json aparecen junto a la fuente.

  3. Verifica el resultado

    Ejecuta kaeris check --source en.json --langs de,ja. Sale con código 1 si una variable, número o clave está mal, para que CI pueda detener la fusión.

pip install kaeris
kaeris init --preset i18next
kaeris translate en.json --langs de,ja --verify
kaeris check --source en.json --langs de,ja

Preguntas

¿Qué formatos JSON funcionan?

Archivos planos y anidados de clave-valor, usados por i18next, Vue I18n, next-intl y FormatJS. El nivel superior debe ser un objeto, como {"greeting": "Hello"}. También se traducen arrays de cadenas.

¿Conserva las referencias {{count}} y $t(…)?

Las variables y referencias se comparan con la fuente tras la traducción. Una línea que pierde alguna se marca; el ejemplo arriba muestra una ejecución real donde se perdió $t(nav.cart) y la verificación lo detectó.

¿Es gratis?

Sí, sin cuenta: 10.000 caracteres por archivo y hasta 8 idiomas por ejecución. Una clave API gratuita eleva el límite de archivos a 50.000 caracteres. La licencia vitalicia cuesta $79 una vez, con tu propia clave OpenRouter; los planes mensuales empiezan en $19. Precios

¿Puedo ejecutarlo desde la terminal o en CI?

Sí. pip install kaeris, luego kaeris translate en.json --langs de,ja. La GitHub Action ejecuta la misma traducción en un pull request. Documentación CLI · GitHub Action

Seguir adelante

Referencia CLI · Referencia de verificación · Traducir en el navegador · Verificación gratuita · Convertir formatos · Pseudo-localización

Otros formatos: YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML