Lingo.dev + .arb (Flutter)

Lingo.dev CLI translates Flutter Application Resource Bundle (ARB) files while preserving metadata, placeholder definitions, and Flutter's l10n conventions. The CLI works seamlessly with flutter gen-l10n, maintains placeholder type definitions for IDE autocompletion, keeps developer context and documentation intact, and follows ARB specification standards exactly.

Quick Setup

Configure for Flutter's standard ARB file structure:

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

Reminder: [locale] is a placeholder that should remain in the config literally, as it's replaced with the actual locale during CLI run.

Translate ARB Files

npx lingo.dev@latest i18n

Preserves ARB metadata, placeholder definitions, and Flutter-specific formatting while translating content.

Flutter ARB Features

Placeholders with Types

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

Plural Forms

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

Metadata Preservation

ARB metadata (@key entries) remains untranslated:

  • Descriptions: Developer context preserved
  • Placeholders: Type definitions maintained
  • Examples: Usage examples kept intact
  • Custom Attributes: Any additional metadata preserved

Advanced Configuration

Multiple ARB Files

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

Lock Metadata Keys

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