Documentación / Flutter
Localización de Flutter con archivos ARB, automatizado
Localiza una app de Flutter: Text() y cadenas estilo hintText se convierten en búsquedas de AppLocalizations con archivos ARB, plurales ICU y metadatos de marcadores de posición, y gen-l10n está configurado.
Cómo funciona
Text('…') y argumentos como hintText:, labelText: y tooltip: se convierten en AppLocalizations.of(context)!.key, con argumentos de método para marcadores de posición.
const se elimina solo de los widgets que ahora contienen una búsqueda; los strings sin un BuildContext en alcance se reportan, no se cambian.
Antes y después
La salida real del motor para este archivo. En una ejecución real, el modelo alojado nombra las claves a partir del contexto.
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!'),
]);
}
}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)),
]);
}
}{
"cartScreenYourCart": "Your cart",
"cartScreenWelcomeBack": "Welcome back, {name}!"
}Lo que añade la configuración
La primera ejecución configura flutter_localizations y gen-l10n si el proyecto aún no lo tiene:
flutter_localizations,intlygenerate: trueen pubspec.yamll10n.yamlylib/l10n/app_<locale>.arb- Delegados de MaterialApp y locales soportados, y la lista de idiomas en iOS
Ejecutarlo
La CLI necesita Node.js 22 o posterior, nada más: npx lo ejecuta sin añadir un package.json al proyecto. ¿No tienes Node en tu máquina? La GitHub Action de abajo la ejecuta por ti.
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,deO añade la GitHub Action y obtén una pull request en cada push. Pruébalo primero en tu propio código en el playground.