JUSTWIT
000
← ブログ一覧に戻る
技術解説

アプリの多言語対応を生成AIで回す — 機械翻訳との違いが出る文脈の渡し方

#Flutter#多言語対応#i18n#生成AI#モバイルアプリ

はじめに

アプリを日英対応させる際、「ARB/JSONファイルを生成AIに渡して一括翻訳」で済ませたくなりますが、実際にやるとボタンに収まらない訳文・トーンの不統一・UIを知らない直訳が量産されます。

最近のアプリ開発で日英対応を生成AI主体で進め、破綻せずに回るフローができたので記録します。ポイントは翻訳を「文字列変換」ではなく「UIコピーの書き起こし」として扱うことです。


一括翻訳が破綻する3つの理由

  1. 文脈がない: "start": "開始" だけ渡されても、タイマーの開始ボタンなのか、オンボーディングの次へなのか分からない。英語では "Start" / "Begin" / "Go" でトーンが変わります
  2. 物理制約がない: 日本語で3文字のラベルが英語で20文字になると、ボタンやタブが崩れます
  3. 用語が揺れる: 「セッション」「集中時間」など、アプリ内の固有概念が画面ごとに違う訳語になります

手順1: 文字列に文脈メタデータを付ける

翻訳を依頼する前に、キーごとの文脈情報を整備します。ARB なら @ 付きの description が使えます。

{
  "sessionStart": "開始",
  "@sessionStart": {
    "description": "ホーム画面中央の主ボタン。タップで集中セッションが始まる。英語は1単語、最大8文字目安"
  },
  "streakLabel": "連続日数",
  "@streakLabel": {
    "description": "統計画面のカード見出し。名詞。'Streak' 系の簡潔な表現"
  }
}

この description 自体も、画面スクリーンショットとキー一覧を渡して生成AIにドラフトさせられます。人間は「最大文字数」と「主ボタンかどうか」だけ直せば十分でした。

手順2: 用語集を先に固定する

アプリ内の固有概念は、翻訳前に対訳表を確定させます。

日本語英語備考
集中セッションFocus session略す場合も Session で統一
休憩BreakRest は使わない
連続記録Streak
週間サマリーWeekly summary

生成AIには「この用語集にない訳語を新規に作る場合は、翻訳せず TODO でマークして報告」と指示します。勝手な造語を止められるのが大きいです。

手順3: 画面単位で翻訳させる

ファイル一括ではなく、画面単位で依頼します。1画面分のキー・スクリーンショット・用語集を渡す形です。

ホーム画面の文字列を英訳してください。
- 添付のスクリーンショットでレイアウト上の余白を確認すること
- description の文字数目安を超える場合は、短縮案と共に報告
- トーン: 落ち着いた・簡潔・命令形は避ける("Start your session" ではなく "Start")

画面単位にすると、同一画面内のトーン不統一(丁寧語と体言止めの混在など)がなくなります。手間に見えますが、後から直すコストを考えると画面単位が最速でした。

手順4: 「逆翻訳レビュー」で意味のズレを検出する

訳文のレビューは、英語ネイティブがいない体制では難しい工程です。うちでは生成AIに逆翻訳+差分説明をさせて一次レビューにしています。

この英語UI文字列を日本語に逆翻訳し、元の日本語との意味差分を列挙してください。
ニュアンスの差(強制的に聞こえる、カジュアルすぎる等)も含めること。

「Delete all history — この表現は取り消し不能な印象が原文より強い」のような指摘が返ってくるので、意図的か確認して直します。完璧ではありませんが、明らかな誤訳・トーン事故はこの段階でほぼ拾えます。

手順5: レイアウト崩れの機械検出

最後に、両言語でスクリーンショットを撮って崩れを検出します。Flutter なら integration test でロケールを切り替えながら全画面を撮影し、生成AIに比較させます。

同一画面の ja / en スクリーンショットです。
テキストの見切れ・折り返しによる崩れ・ボタン内のはみ出しを検出してください。

英語で1行に収まらず2行になったボタンなどを一覧で返してくれるため、目視の全画面チェックが不要になりました。


運用: 文字列追加のたびに回す

このフローは初回対応より継続運用で真価が出ます。文字列を追加する PR では、

  1. 新キーに description を書く(生成AIがドラフト)
  2. 用語集と照合して翻訳(画面単位のコンテキスト付き)
  3. 逆翻訳レビュー

を通すルールにしました。1キーあたり数分で、翻訳漏れ・品質劣化なく増やせています。

まとめ

  • 一括翻訳は文脈・制約・用語の欠如で破綻する
  • description(文脈+文字数制約)と用語集が品質の土台
  • 依頼は画面単位。トーン統一と物理制約の確認がしやすい
  • 逆翻訳レビューとスクリーンショット比較で、ネイティブ不在でも事故を減らせる