Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
madteacher avatar

Flutter Internationalization

  • 497 installs
  • 105 repo stars
  • Updated May 1, 2026
  • madteacher/mad-agents-skills

flutter-internationalization is a Claude Code skill at version 2.0 that adds, fixes, audits, and maintains Flutter i18n using gen-l10n, ARB files, and AppLocalizations for developers building multi-locale mobile apps.

About

flutter-internationalization is a madteacher/mad-agents-skills implementer skill (version 2.0) for Flutter localization with gen-l10n, ARB translation files, AppLocalizations, flutter_localizations, and intl number and date formatting. Developers reach for flutter-internationalization when adding l10n or i18n, translating Flutter UI strings, configuring l10n.yaml, managing ARB files, fixing plural and select messages, enabling RTL support, or troubleshooting generated localization build errors. The skill covers migration away from deprecated package:flutter_gen imports and locale-specific formatting rules. It ensures localized Flutter apps compile, generate correct AppLocalizations classes, and pass locale switching in production builds.

  • Handles gen-l10n, ARB files, AppLocalizations, flutter_localizations, and intl formatting
  • Supports plural/select messages, RTL, locale-specific number/date formatting
  • Fixes localization build errors and migrates away from package:flutter_gen imports
  • Decision guide for choosing between gen-l10n, legacy intl_translation, and custom map-based approaches
  • Enforces Principle 0: generated code must match current Flutter project and SDK

Flutter Internationalization by the numbers

  • 497 all-time installs (skills.sh)
  • +4 installs in the week ending Aug 2, 2026 (Skillselion tracking)
  • Ranked #626 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/madteacher/mad-agents-skills --skill flutter-internationalization

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs497
repo stars105
Last updatedMay 1, 2026
Repositorymadteacher/mad-agents-skills

How do you set up Flutter gen-l10n with ARB files?

Add, fix, audit, and maintain Flutter internationalization using gen-l10n, ARB files, and AppLocalizations.

Who is it for?

Flutter developers adding or maintaining multi-language support with gen-l10n, ARB files, and AppLocalizations in production apps.

Skip if: Backend translation management platforms or web-only i18n with react-i18next rather than Flutter localization tooling.

When should I use this skill?

A developer asks to add Flutter l10n, translate ARB files, fix AppLocalizations errors, configure l10n.yaml, or enable RTL locales.

What you get

Configured l10n.yaml, ARB translation files, generated AppLocalizations classes, and working locale switching with RTL and plural support.

  • l10n.yaml config
  • ARB translation files
  • Generated AppLocalizations code

By the numbers

  • Skill version 2.0 in madteacher/mad-agents-skills metadata

Files

SKILL.mdMarkdownGitHub ↗

Flutter Internationalization

You are a Flutter localization implementer. Make localized apps build, generate, and read naturally across target locales.

Principle 0

Generated localization code must match the current Flutter project and SDK. Do not copy stale package:flutter_gen imports or enable synthetic-package; use source-generated AppLocalizations imports unless the project proves it is on an older pinned Flutter workflow.

Decision Guide

  • Use gen-l10n for new work, most migrations, ARB management, plural/select

messages, generated AppLocalizations, and Material/Cupertino apps.

  • Use legacy intl_translation only when the project already uses

Intl.message() plus generated messages_all.dart, or the user explicitly asks to keep that workflow. Confirm intl_translation is a dependency before running its generators.

  • Use custom map-based localizations only for tiny prototypes or existing code

that intentionally avoids code generation. Name this limitation in the final response.

  • If the project has an existing localization setup, follow its paths, class

names, locale list, and generation style before introducing defaults.

Workflow

1. Inspect pubspec.yaml, l10n.yaml, existing *.arb files, generated imports, MaterialApp/CupertinoApp setup, and current translation usage. 2. Identify the requested change: bootstrap l10n, add a locale, replace hardcoded UI text, add placeholders/plurals/selects, format values, fix generation, or migrate stale imports/config. 3. Use the decision guide to choose gen-l10n, legacy intl_translation, or a custom fallback. Prefer the smallest change that fits the existing project. 4. Read only the routed references needed for the task. 5. Make the localization change:

  • add flutter_localizations and intl:any when missing;
  • set flutter: generate: true;
  • create or update l10n.yaml;
  • create or update ARB files with descriptions and placeholder metadata;
  • wire AppLocalizations into MaterialApp or CupertinoApp;
  • replace hardcoded UI strings with generated getters or methods.

6. Generate and validate with flutter gen-l10n. Then run the narrowest relevant project check, usually flutter analyze or affected tests. 7. Report changed files, generated behavior, validation run, and any locales or translation gaps that remain.

Resource Routing

TaskRead or useWhy
Configure or debug l10n.yaml, generated output paths, nullable getters, deferred loading, or untranslated trackingreferences/l10n-config.mdCurrent gen-l10n options and safe defaults
Create or repair ARB messages, placeholders, plurals, selects, escaping, or metadatareferences/arb-format.mdARB schema patterns and translator context rules
Add number, currency, percent, or date/time formattingreferences/number-date-formats.mdSupported NumberFormat and DateFormat values
Bootstrap a new gen-l10n setup or run a smoke fixtureassets/l10n.yaml, assets/app_en.arbReusable minimal templates

gen-l10n Contract

For new gen-l10n setup, the minimum current configuration is:

flutter:
  generate: true
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart

Use source imports that match the generated location, commonly:

import 'l10n/app_localizations.dart';

Prefer generated lists when possible:

localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,

If generated files are written to a custom output-dir, update imports to that directory. Do not import package:flutter_gen/gen_l10n/app_localizations.dart unless the local project is intentionally pinned to an older Flutter workflow.

Legacy Intl Fallback

When preserving Intl.message():

  • require intl_translation in dev dependencies before extraction/generation;
  • keep generated files and imports consistent with the existing project;
  • run extraction before generation;
  • on Windows or shells without wildcard expansion, list ARB files explicitly.

Typical commands:

dart run intl_translation:extract_to_arb --output-dir=lib/l10n lib/main.dart
dart run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main.dart lib/l10n/intl_*.arb

If this workflow is not already present, explain why gen-l10n is the safer default.

Constraints

  • Do not invent translations. If target-language text is not supplied, add clear

placeholder translations only when the user approved that, or report the missing translations.

  • Do not concatenate localized strings. Use placeholders, plural, or select

messages.

  • Do not manually format numbers, currency, percentages, dates, or times when

gen-l10n placeholder formatting can do it.

  • Do not add synthetic-package: true; current Flutter marks synthetic package

generation as deprecated and unavailable.

  • Set nullable-getter: false only when the project accepts non-null generated

getter behavior. Otherwise keep the project default and use the required null handling in code.

  • Keep translator-facing descriptions and examples in the template ARB file.
  • For RTL locales, check text direction, layout assumptions, mirrored icons, and

locale-specific widgets.

Validation

Always validate a completed localization change:

  • flutter gen-l10n succeeds with the project's l10n.yaml;
  • generated import paths compile;
  • every new ARB key exists in the template file and needed locale files;
  • placeholders in translated ARB values match template metadata;
  • plural/select messages include other;
  • number/date placeholders use supported formats from

references/number-date-formats.md;

  • relevant flutter analyze or tests pass, or blockers are reported.

For skill maintenance, also check YAML frontmatter, local markdown links, JSON validity for ARB assets, YAML validity for l10n.yaml, resource routing, and layer coherence between SKILL.md, references, and assets.

Related skills

How it compares

Pick this skill for hands-on Flutter gen-l10n implementation rather than generic i18n advice that ignores ARB and AppLocalizations specifics.

FAQ

What Flutter i18n tools does flutter-internationalization cover?

flutter-internationalization covers Flutter gen-l10n, ARB translation files, AppLocalizations, flutter_localizations, intl formatting, l10n.yaml configuration, and plural, select, and RTL message patterns.

What version is flutter-internationalization?

flutter-internationalization is version 2.0 in the madteacher/mad-agents-skills repository, authored by Stanislav Chernyshev (MADTeacher), with expanded build-error and migration guidance.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.