flutter-internationalization
Flutter アプリの国際化(i18n / l10n)をまとめて管理するスキルです。gen-l10n・ARB ファイル・AppLocalizations・flutter_localizations・intl によるフォーマット・複数形/select メッセージ・RTL 対応・ロケール別の数値/日付フォーマット・ビルドエラーの修正まで対応します。「Flutter UI のテキストを翻訳したい」「l10n.yaml を設定したい」「ARB ファイルを管理したい」「package:flutter_gen からの移行やローカライズ生成コードのトラブル解消をしたい」といった場面で活用してください。
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.
SKILL.md 本文
Flutter 多言語対応
あなたは Flutter ローカライゼーション実装者です。ターゲット言語環境全体にわたって、ローカライズされたアプリが構築、生成、自然に読めるようにします。
原則 0
生成されたローカライゼーションコードは、現在の Flutter プロジェクトと SDK と一致する必要があります。古い package:flutter_gen インポートをコピーしたり、synthetic-package を有効にしたりしないでください。プロジェクトが古いピン留めされた Flutter ワークフローを使用していることが確認されない限り、ソース生成された AppLocalizations インポートを使用してください。
判断ガイド
- 新しい作業、ほとんどの移行、ARB 管理、複数形/選択メッセージ、生成された
AppLocalizations、および Material/Cupertino アプリにはgen-l10nを使用してください。 - 従来の
intl_translationは、プロジェクトが既にIntl.message()と生成されたmessages_all.dartを使用している場合、またはユーザーが明示的にそのワークフローを継続するよう求めた場合のみ使用してください。ジェネレータを実行する前に、intl_translationが依存関係であることを確認してください。 - カスタムマップベースのローカライゼーションは、小さなプロトタイプまたはコード生成を意図的に回避する既存コードのみに使用してください。最終的な応答でこの制限に名前を付けてください。
- プロジェクトが既存のローカライゼーションセットアップを持っている場合、デフォルトを導入する前に、そのパス、クラス名、ロケールリスト、および生成スタイルに従ってください。
ワークフロー
pubspec.yaml、l10n.yaml、既存の*.arbファイル、生成されたインポート、MaterialApp/CupertinoAppセットアップ、および現在の翻訳使用法を検査します。- 要求されたロケールの変更を識別します: ローカライゼーションのブートストラップ、ロケールの追加、ハードコードされた UI テキストの置換、プレースホルダー/複数形/選択の追加、値のフォーマット、生成のバグ修正、または古いインポート/設定の移行。
- 判断ガイドを使用して、
gen-l10n、従来のintl_translation、またはカスタムフォールバックを選択します。既存プロジェクトに合う最小限の変更を優先します。 - タスクに必要なルーティング参照のみを読んでください。
- ローカライゼーション変更を行います:
- 不足している場合は
flutter_localizationsとintl:anyを追加; flutter: generate: trueを設定;l10n.yamlを作成または更新;- 説明とプレースホルダーメタデータを含む ARB ファイルを作成または更新;
AppLocalizationsをMaterialAppまたはCupertinoAppに配線;- ハードコードされた UI 文字列を生成されたゲッターまたはメソッドに置換。
- 不足している場合は
flutter gen-l10nで生成して検証します。その後、通常はflutter analyzeまたは影響を受けるテストで、最も狭い関連プロジェクトチェックを実行します。- 変更されたファイル、生成された動作、検証実行、および残されているロケールまたは翻訳ギャップをレポートします。
リソースルーティング
| タスク | 読む、または使用 | 理由 |
|---|---|---|
l10n.yaml の設定またはデバッグ、生成出力パス、nullable ゲッター、遅延ロード、または未翻訳追跡 | references/l10n-config.md | 現在の gen-l10n オプションと安全なデフォルト |
| ARB メッセージ、プレースホルダー、複数形、選択、エスケープ、またはメタデータを作成または修復 | references/arb-format.md | ARB スキーマパターンと翻訳者コンテキストルール |
| 数値、通貨、パーセント、または日付/時刻フォーマットを追加 | references/number-date-formats.md | サポートされている NumberFormat および DateFormat 値 |
| 新しい gen-l10n セットアップをブートストラップするか、スモークフィクスチャを実行 | assets/l10n.yaml、assets/app_en.arb | 再利用可能な最小テンプレート |
gen-l10n コントラクト
新しい gen-l10n セットアップの最小限の現在設定は:
flutter:
generate: true
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
生成された場所と一致するソースインポートを使用してください。一般的には:
import 'l10n/app_localizations.dart';
可能な場合は生成されたリストを優先してください:
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
生成されたファイルがカスタム output-dir に書き込まれている場合は、そのディレクトリへのインポートを更新してください。ローカルプロジェクトが古い Flutter ワークフローに意図的にピン留めされていない限り、package:flutter_gen/gen_l10n/app_localizations.dart をインポートしないでください。
従来の Intl フォールバック
Intl.message() を保持する場合:
- 抽出/生成を実行する前に、dev 依存関係で
intl_translationが必要であることを確認; - 生成されたファイルとインポートを既存プロジェクトと一致させ続ける;
- 生成前に抽出を実行;
- Windows またはワイルドカードが展開されないシェルでは、ARB ファイルを明示的にリストアップ。
一般的なコマンド:
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
このワークフローが既に存在しない場合は、gen-l10n がより安全なデフォルトである理由を説明してください。
制約
- 翻訳を発明しないでください。ターゲット言語テキストが提供されていない場合は、ユーザーが承認した場合にのみ明確なプレースホルダー翻訳を追加するか、不足している翻訳をレポートしてください。
- ローカライズされた文字列を連結しないでください。プレースホルダー、複数形、または選択メッセージを使用してください。
- gen-l10n プレースホルダーフォーマットが対応できる場合、数値、通貨、パーセント、日付、時刻を手動でフォーマットしないでください。
synthetic-package: trueを追加しないでください。現在の Flutter は合成パッケージ生成を非推奨およびサポート不可としてマークしています。- プロジェクトが非 null の生成ゲッター動作を受け入れる場合のみ
nullable-getter: falseを設定してください。そうでない場合は、プロジェクトのデフォルトを保持し、コードで必要な null 処理を使用してください。 - テンプレート ARB ファイルに翻訳者向けの説明と例を保持してください。
- RTL ロケールについては、テキスト方向、レイアウト仮定、ミラーリングされたアイコン、およびロケール固有のウィジェットを確認してください。
検証
完了したローカライゼーション変更を常に検証してください:
- プロジェクトの
l10n.yamlでflutter gen-l10nが成功; - 生成されたインポートパスがコンパイル;
- 新しい各 ARB キーがテンプレートファイルと必要なロケールファイルに存在;
- 翻訳された ARB 値のプレースホルダーがテンプレートメタデータと一致;
- 複数形/選択メッセージに
otherが含まれている; - 数値/日付プレースホルダーが
references/number-date-formats.mdからサポートされているフォーマットを使用; - 関連する
flutter analyzeまたはテストが成功、またはブロッカーがレポートされている。
スキルメンテナンスのために、YAML frontmatter、ローカルマークダウンリンク、ARB アセットの JSON 有効性、l10n.yaml の YAML 有効性、リソースルーティング、および SKILL.md、参照、およびアセット間のレイヤー一貫性も確認してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- madteacher
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/madteacher/mad-agents-skills / ライセンス: MIT
関連スキル
secure-code-guardian
認証・認可の実装、ユーザー入力の保護、OWASP Top 10の脆弱性対策が必要な場合に使用します。bcrypt/argon2によるパスワードハッシング、パラメータ化ステートメントによるSQLインジェクション対策、CORS/CSPヘッダーの設定、Zodによる入力検証、JWTトークンの構築などのカスタムセキュリティ実装に対応します。認証、認可、入力検証、暗号化、OWASP Top 10対策、セッション管理、セキュリティ強化全般で活用できます。ただし、構築済みのOAuth/SSO統合や単独のセキュリティ監査が必要な場合は、より特化したスキルの検討をお勧めします。
claude-authenticity
APIエンドポイントが本物のClaudeによって支えられているか(ラッパーやプロキシ、偽装ではないか)を、claude-verifyプロジェクトを模した9つの重み付きルールベースチェックで検証できます。また、Claudeの正体を上書きしているプロバイダーから注入されたシステムプロンプトも抽出します。完全に自己完結しており、httpx以外の追加パッケージは不要です。Claude APIキーまたはエンドポイントを検証したい場合、サードパーティのClaudeサービスが本物か確認したい場合、APIプロバイダーのClaude正当性を監査したい場合、複数モデルを並行してテストしたい場合、またはプロバイダーが注入したシステムプロンプトを特定したい場合に使用できます。
anth-security-basics
Anthropic Claude APIのセキュリティベストプラクティスを適用し、キー管理、入力値の検証、プロンプトインジェクション対策を実施します。APIキーの保護、Claudeに送信する前のユーザー入力検証、コンテンツセーフティガードレールの実装が必要な場合に活用できます。「anthropic security」「claude api key security」「secure anthropic」「prompt injection defense」といったフレーズでトリガーされます。
x-ray
x-ray.mdプレ監査レポートを生成します。概要、強化された脅威モデル(プロトコルタイプのプロファイリング、Gitの重み付け攻撃面分析、時間軸リスク分析、コンポーザビリティ依存関係マッピング)、不変条件、統合、ドキュメント品質、テスト分析、開発者・Gitの履歴をカバーしています。「x-ray」「audit readiness」「readiness report」「pre-audit report」「prep this protocol」「protocol prep」「summarize this protocol」のキーワードで実行されます。
semgrep
Semgrepスタティック分析スキャンを実行し、カスタム検出ルールを作成します。Semgrepでのコードスキャン、セキュリティ脆弱性の検出、カスタムYAMLルールの作成、または特定のバグパターンの検出が必要な場合に使用します。重要:ユーザーが「バグをスキャンしたい」「コード品質を確認したい」「脆弱性を見つけたい」「スタティック分析」「セキュリティlint」「コード監査」または「コーディング標準を適用したい」と尋ねた場合も、Semgrepという名称を明記していなくても、このスキルを使用してください。Semgrepは30以上の言語に対応したパターンベースのコードスキャンに最適なツールです。
ghost-bits-cast-attack
Java「ゴーストビッツ」/キャストアタック プレイブック(Black Hat Asia 2026)。16ビット文字が8ビットバイトに暗黙的に縮小されるJavaサービスへの攻撃時に使用します。WAF/IDSを回避して、SQLインジェクション、デシリアライゼーション型RCE、ファイルアップロード(Webシェル)、パストトラバーサル、CRLF インジェクション、リクエストスマグリング、SMTPインジェクションを実行できます。Tomcat、Spring、Jetty、Undertow、Vert.x、Jackson、Fastjson、Apache Commons BCEL、Apache HttpClient、Angus Mail、JDK HttpServer、Lettuce、Jodd、XMLWriterに影響し、WAFバイパスにより多くの「パッチ済み」CVEを再度有効化します。