Skip to main content
AI agent network visualization

Vertaal Flutter ARB-bestanden in enkele seconden

Metadata blijft intact, placeholders behouden en meervoudsvormen correct volgens CLDR. Je ARB-bestanden worden vertaald zonder flutter gen-l10n stuk te maken.

Door ARB-vertalingen mislukken Flutter-builds

ARB-bestanden zien eruit als JSON, maar zijn dat niet. Ze bevatten metadata-items met het voorvoegsel @, placeholderdefinities met typeannotaties en ICU-meervoudsvormen die de CLDR-regels exact moeten volgen. Algemene vertaaltools beschadigen al deze onderdelen, waarna flutter gen-l10n geruisloos mislukt of cryptische fouten geeft.

Metadata-items met het voorvoegsel @ worden vertaald of verwijderd, waardoor placeholderdefinities en beschrijvingen stukgaan

Placeholdernamen tussen accolades worden vertaald, hernoemd of verwijderd, waardoor de app tijdens runtime crasht

ICU-meervoudsvormen vereisen per taal exacte CLDR-categorieën, maar algemene tools slaan deze over of genereren ongeldige structuren

De @@locale-header raakt beschadigd of komt niet meer overeen, waardoor flutter gen-l10n vertalingen aan de verkeerde taal toewijst

Bron (Engels)
lib/l10n/app_en.arb
{
  "@@locale": "en",
  "appTitle": "My Flutter App",
  "@appTitle": {
    "description": "The title of the application"
  },
  "greeting": "Hello, {name}!",
  "@greeting": {
    "description": "A greeting with the user's name",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "John"
      }
    }
  },
  "itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}",
  "@itemCount": {
    "description": "Number of items in the cart",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "lastLogin": "Last login: {date}",
  "@lastLogin": {
    "placeholders": {
      "date": {
        "type": "DateTime",
        "format": "yMMMd"
      }
    }
  }
}
Vertaald (Japans)
lib/l10n/app_ja.arb
{
  "@@locale": "de",
  "appTitle": "Meine Flutter-App",
  "@appTitle": {
    "description": "The title of the application"
  },
  "greeting": "Hallo, {name}!",
  "@greeting": {
    "description": "A greeting with the user's name",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "John"
      }
    }
  },
  "itemCount": "{count, plural, =0{Keine Artikel} =1{1 Artikel} other{{count} Artikel}}",
  "@itemCount": {
    "description": "Number of items in the cart",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "lastLogin": "Letzte Anmeldung: {date}",
  "@lastLogin": {
    "placeholders": {
      "date": {
        "type": "DateTime",
        "format": "yMMMd"
      }
    }
  }
}

Wat i18n Agent behoudt

Metadata-items met @

Alle metadata met het voorvoegsel @, zoals beschrijvingen, placeholders en typeannotaties, blijft exact behouden zoals gedefinieerd

Veilige placeholders

Benoemde placeholders zoals {userName}, {count} en {price} worden herkend en blijven in alle vertalingen ongewijzigd

CLDR-meervoudsvormen

ICU-meervoudscategorieën (zero, one, two, few, many, other) worden volgens de CLDR-regels correct gegenereerd voor elke doeltaal

JSON-structuur

De sleutelvolgorde, geneste structuur en ARB-specifieke opmaak komen overeen met je bronbestand, zodat verschillen overzichtelijk blijven

Werkt met je Flutter-stack

flutter gen-l10n (officieel)
Easy Localization
GetX-internationalisatie

Hoe het werkt

How i18n Agent works: Install, Translate, Done
1
2
3
terminal
$translate_filesrc/messages/en.json
 --target["de", "ja", "es"]
Done.3 languages, 142 keys translated.

Niet handmatig kopiëren en plakken. Geen strings extraheren. Alleen vertaalde bestanden.

Probeer i18n Agent nu

Zet je vertaalbestand hier neer

JSON, YAML, PO, XML, CSV, Markdown, Properties

of klik om een bestand te selecteren

Doeltalen

Geen registratie nodigDirecte prijsindicatie

Veelgestelde vragen

Ontwikkelaar?

Installeer de CLI-tool en vertaal je eerste bestand binnen 2 minuten.

CLI-tool installeren

Enterprise-team?

Nog steeds gebonden aan een TMS-contract? Laten we de overstap bespreken.