К основному содержанию
скилл CX Codex

flutter-internationalization — скилл для Claude Code

Настраивает и чинит локализацию во Flutter через gen-l10n и ARB-файлы. Помогает перевести интерфейс, поддержать RTL и убрать устаревшие импорты package:flutter_gen.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add MADTeacher/mad-agents-skills --skill flutter-internationalization -a claude-code
Открыть на GitHub

Что делает flutter-internationalization

Скилл помогает развернуть и сопровождать интернационализацию во Flutter-проектах через стандартный инструмент gen-l10n. Он проверяет pubspec.yaml, создаёт конфигурацию l10n.yaml, генерирует шаблонные ARB-файлы и связывает класс AppLocalizations с MaterialApp или CupertinoApp. Вместо склейки строк здесь применяются плейсхолдеры и правила библиотеки intl.

Решение учитывает требования актуальных версий фреймворка. Скилл запрещает использовать устаревший флаг synthetic-package: true и импорты вида package:flutter_gen. Файлы генерируются прямо в дерево исходников проекта, а для валидации запускаются команды flutter gen-l10n и flutter analyze.

Для проектов со специфическими требованиями скилл поддерживает проверку выравнивания в RTL-локалях и работу с числовыми форматами. Если в кодовой базе уже настроен устаревший генератор на базе intl_translation, скилл распознаёт его, но предупреждает о необходимости перехода на gen-l10n.

Какие задачи решает

  • настроить gen-l10n и создать рабочий файл l10n.yaml
  • заменить захардкоженный текст в виджетах на ключи из ARB
  • добавить правила для множественного числа и форматирование дат через intl
  • очистить проект от устаревших импортов package:flutter_gen
  • проверить корректность отображения интерфейса для RTL-языков

Примеры запросов агенту

  • Сконфигурируй l10n.yaml и вынеси строки из lib/home_page.dart в app_en.arb
  • Добавь файл перевода app_ru.arb с формами множественного числа
  • Исправь ошибки сборки flutter gen-l10n и замени импорты package:flutter_gen

Как установить flutter-internationalization

1Через Skills CLI (Vercel)

npx skills add MADTeacher/mad-agents-skills --skill flutter-internationalization -a claude-code

2Вручную: положить файлы

~/.claude/skills/flutter-internationalization/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/flutter-internationalization/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о flutter-internationalization

Как установить flutter-internationalization в Claude Code?

Для установки выполните команду npx skills add MADTeacher/mad-agents-skills --skill flutter-internationalization -a claude-code в терминале.

Что делает flutter-internationalization?

Скилл настраивает интернационализацию во Flutter через gen-l10n, переносит строки в ARB-шаблоны, подключает делегаты локализации к приложению и валидирует результат через flutter analyze.

Почему скилл запрещает synthetic-package?

В современных версиях Flutter синтетические пакеты признаны устаревшими, поэтому скилл генерирует класс AppLocalizations напрямую в структуру файлов проекта.

Исходный текст

SKILL.md · MIT
---
name: flutter-internationalization
description: >-
  Add, fix, audit, and maintain Flutter internationalization with gen-l10n,
  ARB files, AppLocalizations, flutter_localizations, intl formatting,
  plural/select messages, RTL support, locale-specific number/date formatting,
  and localization build errors. Use when asked to add l10n or i18n, translate
  Flutter UI text, configure l10n.yaml, manage ARB translations, migrate away
  from package:flutter_gen imports, or troubleshoot generated localization code.
metadata:
  author: Stanislav [MADTeacher] Chernyshev
  version: "2.0"
---

# 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

| Task | Read or use | Why |
|---|---|---|
| Configure or debug `l10n.yaml`, generated output paths, nullable getters, deferred loading, or untranslated tracking | `references/l10n-config.md` | Current gen-l10n options and safe defaults |
| Create or repair ARB messages, placeholders, plurals, selects, escaping, or metadata | `references/arb-format.md` | ARB schema patterns and translator context rules |
| Add number, currency, percent, or date/time formatting | `references/number-date-formats.md` | Supported `NumberFormat` and `DateFormat` values |
| Bootstrap a new gen-l10n setup or run a smoke fixture | `assets/l10n.yaml`, `assets/app_en.arb` | Reusable minimal templates |

## gen-l10n Contract

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

```yaml
flutter:
  generate: true
```

```yaml
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:

```dart
import 'l10n/app_localizations.dart';
```

Prefer generated lists when possible:

```dart
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:

```bash
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.

© Stanislav [MADTeacher] Chernyshev · MIT · MADTeacher/mad-agents-skills

Похожие скиллы

Всё по теме «Мобильная разработка» →
vercel-react-native-skills vercel Набор правил по React Native и Expo для ИИ-агента: списки, анимации, навигация. Пригодится, когда агент правит мобильный код и надо, чтобы он делал это одинаково. CX Codex +1 255 200установок animate-expo emilkowalski Создаёт мобильные анимации для React Native и Expo на базе Reanimated и Gesture Handler. Помогает избежать просадок кадров на реальных устройствах. CX Codex +1 137 900установок mobile-native emilkowalski Убирает мелочи, из-за которых веб-приложение на телефоне выдаёт себя: залипающий hover, вспышку при тапе, ошибку с 100vh. CX Codex +1 86 600установок aso coreyhaines31 Анализирует страницы приложений в App Store и Google Play по правилам поисковой оптимизации. Находит слабые места в метаданных, графике и конверсии. CX Codex +1 75 400установок swiftui-pro Paul Hudson Проверяет SwiftUI-код на устаревшие API, ошибки в структуре и проблемы доступности. Пригодится для ревью и доработки проектов на SwiftUI. CX Codex +1 35 200установок orca-emulator stablyai Управляет iOS Simulator внутри Orca с живым экраном устройства. Пригодится для тапов, жестов, поворота экрана и сбора доказательств работы iOS-приложения. CX Codex +1 5 800установок

Из того же набора10

flutter-adaptive-ui Скилл направляет агента при разработке адаптивного UI во Flutter для мобильных экранов, десктопа и веба. Он заставляет опираться на ограничения окна, а не на имя платформы. CX Codex +1 2 000установок flutter-architecture Скилл для проектирования и ревью архитектуры Flutter-приложений: слои, MVVM, feature-first структура, DI и паттерны вроде Result и Command. CX Codex +1 1 700установок flutter-testing Скилл для написания, починки и отладки тестов Flutter: юнит-, виджет- и интеграционные тесты, моки, golden-проверки. CX Codex +1 1 500установок flutter-networking Скилл для работы с сетью во Flutter: HTTP/REST, WebSocket, авторизация, таймауты, ретраи, парсинг JSON и кэш. Пригодится, когда надо добавить запросы или разобрать сетевые ошибки. CX Codex +1 722установок flutter-drift Ведёт агента по работе с локальной базой на Drift: таблицы, запросы, реактивные стримы, миграции схемы и тесты. Пригодится, когда в проекте уже есть SQLite или вы только его заводите. CX Codex +1 671установок flutter-navigation Скилл для ИИ-агента, который разбирается с навигацией во Flutter: Navigator, go_router, диплинки, редиректы и история браузера. CX Codex +1 589установок dart-drift Скилл для работы с Drift в Dart CLI, серверных и десктопных приложениях без Flutter: таблицы, запросы, миграции, PostgreSQL. CX Codex +1 466установок agents-md-generator Создаёт и чистит AGENTS.md в корне репозитория и во вложенных модулях. Пригодится, когда инструкции для агента разрослись или противоречат друг другу. CX Codex +1 377установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой