Lingo.dev + .arb (Flutter)

Lingo.dev CLI traduit les fichiers Application Resource Bundle (ARB) de Flutter tout en préservant les métadonnées, les définitions de placeholders et les conventions l10n de Flutter. Le CLI fonctionne parfaitement avec flutter gen-l10n, maintient les définitions de type de placeholder pour l'autocomplétion de l'IDE, conserve le contexte et la documentation des développeurs, et respecte rigoureusement les normes de spécification ARB.

Configuration rapide

Configuration pour la structure standard des fichiers ARB de Flutter :

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "flutter": {
      "include": ["lib/l10n/app_[locale].arb"]
    }
  }
}

Rappel : [locale] est un placeholder qui doit rester littéralement dans la configuration, car il est remplacé par la locale réelle lors de l'exécution du CLI.

Traduire les fichiers ARB

npx lingo.dev@latest i18n

Préserve les métadonnées ARB, les définitions de placeholders et le formatage spécifique à Flutter tout en traduisant le contenu.

Fonctionnalités ARB de Flutter

Placeholders avec types

{
  "welcomeMessage": "Hello {name}, you have {count} messages",
  "@welcomeMessage": {
    "description": "Welcome message with user name and count",
    "placeholders": {
      "name": {
        "type": "String"
      },
      "count": {
        "type": "int"
      }
    }
  }
}

Formes plurielles

{
  "itemCount": "{count, plural, =0{no items} =1{one item} other{{count} items}}",
  "@itemCount": {
    "description": "Number of items",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  }
}

Préservation des métadonnées

Les métadonnées ARB (entrées @key) restent non traduites :

  • Descriptions : contexte développeur préservé
  • Placeholders : définitions de type maintenues
  • Exemples : exemples d'utilisation conservés intacts
  • Attributs personnalisés : toutes les métadonnées supplémentaires préservées

Configuration avancée

Fichiers ARB multiples

"flutter": {
  "include": [
    "lib/l10n/app_[locale].arb",
    "lib/l10n/errors_[locale].arb"
  ]
}

Verrouiller les clés de métadonnées

"flutter": {
  "include": ["lib/l10n/app_[locale].arb"],
  "lockedKeys": ["@@locale", "@@last_modified"]
}