Documenti / Flutter
Localizzazione Flutter con file ARB, automatizzata
Localizza un'app Flutter: le stringhe Text() e hintText diventano lookup AppLocalizations con file ARB, plurali ICU e metadati dei segnaposto, e gen-l10n è configurato.
Come funziona
Text('…') e argomenti come hintText:, labelText: e tooltip: diventano AppLocalizations.of(context)!.key, con argomenti di metodo per i segnaposto.
const viene rimosso solo dai widget che ora contengono un lookup; le stringhe senza un BuildContext nello scope vengono segnalate, non modificate.
Prima e dopo
L'output effettivo del motore per questo file. In un'esecuzione reale, il modello ospitato nomina le chiavi dal contesto.
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}!"
}Cosa aggiunge la configurazione
La prima esecuzione imposta flutter_localizations e gen-l10n se il progetto non lo ha ancora:
flutter_localizations,intlegenerate: truein pubspec.yamll10n.yamlelib/l10n/app_<locale>.arb- MaterialApp delega ai locali supportati e alla lista delle lingue iOS
Eseguilo
La CLI richiede Node.js 22 o versioni successive, nient'altro: npx lo esegue senza aggiungere un package.json al progetto. Non hai Node sulla tua macchina? La GitHub Action qui sotto lo esegue per te.
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,deOppure aggiungi la GitHub Action e ottieni una pull request a ogni push. Provalo prima sul tuo codice nel playground.