The first localization commit in most Flutter apps is a Map<String, String> keyed by language code, looked up through a global. It works for two languages and a hundred strings. It breaks the first time somebody needs “1 item” versus “2 items”, and it breaks badly the first time a translator asks what home_screen_label_2 is for. Flutter’s official answer is ARB files compiled by gen_l10n into a generated Dart class. The setup is short. What is worth understanding is the parts the quickstart does not cover: ICU plurals, placeholder types, locale resolution, and what happens on the day someone adds Arabic. Setup, once # pubspec.yaml dependencies : flutter_localizations : sdk : flutter intl : any flutter : generate : true # l10n.yaml at the project root arb-dir : lib/l10n template-arb-file : app_en.arb output-localization-file : app_localizations.dart nullable-getter : false nullable-getter: false is worth setting deliberately. With it, AppLocalizations...