FlutterのARBファイルを翻訳する
.arbファイルはICUメッセージと各文字列の隣にある@keyメタデータブロックを含むJSONです。KAERISはメッセージを翻訳し、メタデータを保持し、ICU構文を後でチェックします。
KAERISはこのページを翻訳し、すべての行を逆翻訳して確認しました。ネイティブスピーカーによるレビューはまだ行われていません。 英語原文
ARBファイルの構築方法
プレーンなJSON。各メッセージは説明とプレースホルダーの型を持つ@messageエントリの隣にあり、@@localeが言語名を示します。複数形や選択はICU文字列です:{count, plural, =0 {…} other {…}}。
{
"@@locale": "en",
"welcome": "Welcome back, {name}!",
"@welcome": {
"description": "Greeting on the home screen",
"placeholders": { "name": { "type": "String" } }
},
"itemCount": "{count, plural, =0{No items} one{{count} item} other{{count} items}}",
"@itemCount": {
"placeholders": { "count": { "type": "int" } }
}
}
ARB翻訳で注意すべき点
ICU構文はコードです
波括弧の欠落や分岐の削除は生成されるDartコードを壊します。KAERISはICUブロックをソースと比較し、
=0のような正確な分岐の欠落を報告します。複数形の種類が多い言語
ロシア語は
oneとotherに加え、fewとmanyが必要です。該当言語で不足する形がある場合、チェックが報告します。メタデータはテンプレート用で翻訳用ではありません
@keyエントリ(説明、プレースホルダー型)は出力に保持され、@@localeは対象言語に書き換えられます。プレースホルダーは名前付きです
{name}は名前を保持する必要があります。生成器が@ブロックの型と結びつけているためです。
実際の実行例:ドイツ語に翻訳しチェック
実際の実行例、2026年10月27日、手動編集なし:kaeris translate app_en.arb --langs deをkaeris 0.2.35で実行、2.7秒、モデルはgoogle/gemini-2.5-flash-lite(無料プランのデフォルト)。以下は生成されたドイツ語ファイルとkaeris checkの結果です。
{
"@@locale": "de",
"welcome": "Willkommen zurück, {name}!",
"itemCount": "{count, plural, =0{Keine Artikel} one{{count} Artikel} other{{count} Artikel}}",
"@welcome": {
"description": "Greeting on the home screen",
"placeholders": {
"name": {
"type": "String"
}
}
},
"@itemCount": {
"placeholders": {
"count": {
"type": "int"
}
}
}
}
$ kaeris check --source app_en.arb --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
KAERIS が行うこと
メタデータは保持され、ロケールは書き換えられる
@keyブロックは引き継がれ、@@localeは対象言語に設定されます。ICU構文のチェック
欠落した分岐、変数、波括弧の破損はウェブサイトと同じチェックで検出されます。
新しいキーのみ
--only-newはARBで動作します:編集済みと新規キーのみ翻訳し、それ以外は再利用します。プリセット:kaeris init --preset flutter-arb。ターミナルでのチェック
kaeris checkはキーなしでARBソースを直接読み込みます。
3ステップで実行する
CLIをインストールする
pip install kaerisを実行します。テンプレートを翻訳する
kaeris translate lib/l10n/app_en.arb --langs de,jaを実行します。結果をチェックする
kaeris checkをソースと--pattern 'app_{lang}.arb'で実行します。変数やICUブロックに問題があると終了コード1で終了します。
pip install kaeris
kaeris init --preset flutter-arb
kaeris translate lib/l10n/app_en.arb --langs de,ja --verify
kaeris check --source lib/l10n/app_en.arb --langs de,ja --pattern 'app_{lang}.arb'
よくある質問
@metadataエントリは保持されますか?
はい。説明とプレースホルダーの型は各メッセージの隣に保持され、@@localeは対象言語に書き換えられます。
翻訳でICU複数形が間違っていたら?
チェックはICUブロックをソースと比較し、問題を特定します。例えば=0分岐の欠落などです。上記の実際の実行では複数形は3つの分岐すべてが戻り、チェックは問題を報告しませんでした。
無料ですか?
はい、アカウントなしで:ファイルあたり 10,000 文字、実行あたり最大 8 言語。無料の API キーでファイル制限が 50,000 文字に引き上げられます。一度限りの生涯プランは 79 ドルで、ご自身の OpenRouter キーを使用します。月額プランは 19 ドルから。 料金
ターミナルや CI から実行できますか?
はい。pip install kaerisの後、kaeris translate lib/l10n/app_en.arb --langs de,jaを実行します。Flutterも参照してください。GitHub Actionはプルリクエストで同じ翻訳を実行します。CLIドキュメント · GitHub Action
続ける
CLIリファレンス · チェックリファレンス · ブラウザで翻訳 · 無料チェック · フォーマット変換 · 疑似ローカリゼーション
その他のフォーマット:JSON · YAML · .po · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML