localize.dev

Docs / Flutter

Localisation Flutter avec fichiers ARB, automatisé

Localisez une application Flutter : Text() et les chaînes de style hintText deviennent des recherches AppLocalizations avec des fichiers ARB, des pluriels ICU, des métadonnées de placeholders, et gen-l10n est configuré.

Comment ça marche

Text('…') et des arguments comme hintText:, labelText: et tooltip: deviennent AppLocalizations.of(context)!.key, avec des arguments de méthode pour les espaces réservés.

const est supprimé uniquement des widgets qui contiennent maintenant une recherche ; les chaînes sans BuildContext en scope sont signalées, non modifiées.

Avant et après

La sortie réelle du moteur pour ce fichier. Lors d'une exécution réelle, le modèle hébergé nomme les clés à partir du contexte.

lib/screens/cart_screen.dart · avant
import 'package:flutter/material.dart';

class CartScreen extends StatelessWidget {
  const CartScreen({super.key, required this.name});
  final String name;

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      const Text('Your cart'),
      Text('Welcome back, $name!'),
    ]);
  }
}
lib/screens/cart_screen.dart · après
import 'package:flutter/material.dart';

class CartScreen extends StatelessWidget {
  const CartScreen({super.key, required this.name});
  final String name;

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      Text(AppLocalizations.of(context)!.cartScreenYourCart),
      Text(AppLocalizations.of(context)!.cartScreenWelcomeBack(name)),
    ]);
  }
}
lib/l10n/app_en.arb
{
  "cartScreenYourCart": "Your cart",
  "cartScreenWelcomeBack": "Welcome back, {name}!"
}

Ce que l'installation ajoute

La première exécution configure flutter_localizations et gen-l10n si le projet ne l'a pas encore :

  • flutter_localizations, intl et generate: true dans pubspec.yaml
  • l10n.yaml et lib/l10n/app_<locale>.arb
  • Délégués MaterialApp et locales supportés, et la liste de langues iOS

Exécutez-le

La CLI nécessite Node.js 22 ou une version ultérieure, rien d'autre : npx l'exécute sans ajouter de package.json au projet. Pas de Node sur votre machine ? L'action GitHub ci-dessous l'exécute pour vous.

npx localize-dev login

# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de

# Or open a pull request instead
npx localize-dev pr -l es,fr,de

Ou ajoutez le Action GitHub et recevez une pull request à chaque push. Essayez-le d'abord sur votre propre code dans le playground.