Flutter localization
Skill ulpi-io/plugin-marketplace/plugins/flutter/skills/flutter-localization
A curated collection of 7,800+ agent skills for Claude Desktop, sourced from skills.sh
npx -y skills add ulpi-io/plugin-marketplace --skill flutter-localizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Configure your Flutter app to support different languages and regions
SKILL.md
6.1 KB, as published. Nobody here has run it
Flutter Localization Setup
Goal
Configures and implements internationalization (i18n) and localization (l10n) in a Flutter application. This skill manages dependency injection (flutter_localizations, intl), code generation configuration (l10n.yaml), root widget setup (MaterialApp, CupertinoApp, or WidgetsApp), .arb translation file management, and platform-specific configurations (iOS Xcode project updates). It ensures proper locale resolution and prevents common assertion errors related to missing localization delegates in specific widgets like TextField and CupertinoTabBar.
Decision Logic
- Determine App Root: Identify if the application uses
MaterialApp,CupertinoApp, orWidgetsAppto inject the correct global delegates. - Identify Target Platforms: If iOS is a target platform, Xcode project files (
Info.plist/project.pbxproj) must be updated to expose supported locales to the App Store. - Analyze Widget Tree: Check for isolated
TextFieldorCupertinoTabBarwidgets that might exist outside the root app's localization scope. If found, wrap them in explicitLocalizationswidgets. - Determine Locale Complexity: If supporting languages with multiple scripts/regions (e.g., Chinese
zh_Hans_CN), useLocale.fromSubtagsinstead of the defaultLocaleconstructor.
Instructions
-
Configure Dependencies Update
pubspec.yamlto include required packages and enable code generation.dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter intl: any flutter: generate: true -
Configure Code Generation Create an
l10n.yamlfile in the project root to define the localization tool's behavior.arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart synthetic-package: false -
Define Supported Locales STOP AND ASK THE USER: "Which languages and regions do you want to support? Please provide a list of language codes (e.g., 'en', 'es', 'zh_Hans_CN')."
-
Create ARB Files Generate the template
.arbfile (e.g.,lib/l10n/app_en.arb) and corresponding translation files. Implement placeholders, plurals, and selects as needed.{ "helloWorld": "Hello World!", "@helloWorld": { "description": "Standard greeting" }, "greeting": "Hello {userName}", "@greeting": { "description": "Greeting with a parameter", "placeholders": { "userName": { "type": "String" } } }, "nWombats": "{count, plural, =0{no wombats} =1{1 wombat} other{{count} wombats}}", "@nWombats": { "placeholders": { "count": { "type": "num", "format": "compact" } } } } -
Initialize Root App Import the generated localizations file and configure the root
MaterialApporCupertinoApp.import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:your_app_name/l10n/app_localizations.dart'; // Adjust path based on synthetic-package setting // Inside your root widget build method: return MaterialApp( title: 'Localized App', localizationsDelegates: const [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('en', ''), // English Locale('es', ''), // Spanish Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans', countryCode: 'CN'), ], home: const MyHomePage(), ); -
Handle Isolated Widgets (If Applicable) If a
TextFieldorCupertinoTabBarthrows a missingMaterialLocalizationsorLocalizationsancestor error, inject aLocalizationswidget directly above it.Localizations( locale: const Locale('en', 'US'), delegates: const <LocalizationsDelegate<dynamic>>[ DefaultWidgetsLocalizations.delegate, DefaultMaterialLocalizations.delegate, DefaultCupertinoLocalizations.delegate, ], child: CupertinoTabBar( items: const <BottomNavigationBarItem>[...], ), ) -
Configure iOS Project STOP AND ASK THE USER: "Does this project target iOS? If yes, I will provide instructions for updating the Xcode project." If yes, instruct the user to:
- Open
ios/Runner.xcodeprojin Xcode. - Select the
Runnerproject in the Project Navigator. - Go to the
Infotab. - Under Localizations, click
+to add all supported languages.
- Open
-
Validate and Fix Run
flutter gen-l10n. Verify thatapp_localizations.dartis generated successfully. If compilation fails with "No MaterialLocalizations found" or "CupertinoTabBar requires a Localizations parent", traverse up the widget tree from the failing widget and ensurelocalizationsDelegatesare properly provided.
Constraints
- No Synthetic Packages: Ensure
synthetic-package: falseis considered if the user's environment requires direct source generation, or rely on standardgenerate: truebehavior for modern Flutter versions. Do not usepackage:flutter_genimports ifsynthetic-package: falseis set. - Widget Requirements:
TextFieldMUST have aMaterialLocalizationsancestor.CupertinoTabBarMUST have aLocalizationsancestor. - Complex Locales: Always use
Locale.fromSubtagsfor languages requiring script codes (e.g., Chinesezh_Hans,zh_Hant). - ARB Syntax: Ensure all placeholders used in
.arbstrings are explicitly defined in the corresponding@metadata object. - Escaping: If literal curly braces
{}or single quotes'are needed in.arbfiles, enableuse-escaping: trueinl10n.yamland use consecutive single quotes''for escaping.