Traducir

Traduce archivos Flutter ARB

Un archivo .arb es JSON con mensajes ICU y un bloque @key de metadatos junto a cada cadena. KAERIS traduce los mensajes, conserva los metadatos y verifica la sintaxis ICU después.

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 ARB

JSON simple. Cada mensaje está junto a una entrada @message con su descripción y tipos de marcadores; @@locale nombra el idioma. Los plurales y selectores son cadenas ICU: {count, plural, =0{…} one{…} other{…}}.

Archivo fuenteapp_en.arb
{
  "@@locale": "en",
  "welcome": "Welcome back, {name}!",
  "@welcome": {
    "description": "Greeting on the home screen",
    "placeholders": { "name": { "type": "String" } }
  },
  "itemCount": "{count, plural, =0{No items} one{{count} item} other{{count} items}}",
  "@itemCount": {
    "placeholders": { "count": { "type": "int" } }
  }
}

Qué vigilar en las traducciones ARB

Una ejecución real: traducido al alemán y verificado

Una ejecución real, 27 de octubre de 2026, nada editado a mano: kaeris translate app_en.arb --langs de con kaeris 0.2.35, 2.7 segundos, modelo google/gemini-2.5-flash-lite, el predeterminado gratuito. Abajo, el archivo alemán que escribió y lo que kaeris check dice sobre él.

Resultado en alemánapp_de.arb
{
  "@@locale": "de",
  "welcome": "Willkommen zurück, {name}!",
  "itemCount": "{count, plural, =0{Keine Artikel} one{{count} Artikel} other{{count} Artikel}}",
  "@welcome": {
    "description": "Greeting on the home screen",
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "@itemCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  }
}
kaeris checkexit code 0
$ kaeris check --source app_en.arb --langs de
✓ de: complete & placeholder-safe
✓ all locales complete & placeholder-safe

Lo que KAERIS hace con él

Ejecuta en tres pasos

  1. Instala el CLI

    Ejecuta pip install kaeris.

  2. Traduce la plantilla

    Ejecuta kaeris translate lib/l10n/app_en.arb --langs de,ja.

  3. Verifica el resultado

    Ejecuta kaeris check con la fuente y --pattern 'app_{lang}.arb'; sale con código 1 si hay una variable rota o bloque ICU dañado.

pip install kaeris
kaeris init --preset flutter-arb
kaeris translate lib/l10n/app_en.arb --langs de,ja --verify
kaeris check --source lib/l10n/app_en.arb --langs de,ja --pattern 'app_{lang}.arb'

Preguntas

¿Se conservan las entradas @metadata?

Sí. Las descripciones y tipos de marcadores permanecen junto a cada mensaje; @@locale se reescribe para el idioma destino.

¿Qué pasa si el plural ICU está mal en una traducción?

La verificación compara los bloques ICU con la fuente y nombra el problema, por ejemplo una rama =0 omitida. En la ejecución real arriba el plural regresó con las tres ramas y la verificación no reportó nada.

¿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 lib/l10n/app_en.arb --langs de,ja. Véase también Flutter. El 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: JSON · YAML · .po · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML