# 翻訳実装状況 (Translation Implementation Status) **実装日**: 2026-01-20 **方式**: Map-based inline translations **対応言語**: 日本語 (ja) / 英語 (en) --- ## 📊 実装メトリクス - **翻訳ファイルサイズ**: 109行 (`lib/utils/translations.dart`) - **翻訳キー数**: 61個 - **翻訳済み画面数**: 3画面 (MainScreen, HomeScreen, SoulScreen) - **翻訳率**: 約15% (コアUI要素のみ) --- ## ✅ 翻訳済みの範囲 ### 1. ナビゲーション (MainScreen) - [x] BottomNavigationBar タブラベル (個人モード5個 + ビジネスモード4個) - ホーム / Home - スキャン / Scan - ソムリエ / Sommelier - マップ / Map - マイページ / My Page - 販促 / Promo - 分析 / Analytics - 店舗 / Shop ### 2. ホーム画面 (HomeScreen) - [x] AppBar タイトル - お品書き作成 / Menu Creation - [x] 検索バー - プレースホルダー: 銘柄・酒蔵・都道府県... / Brand, Brewery, Prefecture... - [x] ツールチップ - 並び替え / Sort - 都道府県で絞り込み / Filter by Prefecture - お気に入りのみ / Favorites Only - ヘルプ・ガイド / Help & Guide - [x] 並び替えメニュー - 並び替え / Sort - 新しい順(登録日) / Newest (Registration) - 古い順(登録日) / Oldest (Registration) - 名前順(あいうえお) / By Name (A-Z) - カスタム(ドラッグ配置) / Custom (Drag & Drop) - [x] 空状態メッセージ - お品書きに追加されたお酒はありません / No sake added to menu - リスト画面に戻って... / Go back to list and select sake... - [x] SpeedDial (ビジネスモード) - お品書きを作成 / Create Menu - セットを作成 / Create Set - ギャラリーから選択 / Select from Gallery - カメラで撮影 / Take Photo - [x] ビジネスモードガイド - ビジネスモードへようこそ / Welcome to Business Mode - セット商品の作成 / Create Set Products - インスタ販促 / Instagram Promotion - 売上分析 / Sales Analytics ### 3. マイページ画面 (SoulScreen) - [x] AppBar タイトル - マイページ / My Page - [x] プロフィールセクション - プロフィール (ID) / Profile (ID) - ニックネーム / Nickname - 性別 / Gender - 生年月日 / Date of Birth - MBTI診断 / MBTI Type - 未設定 / Not Set - [x] 性別選択ダイアログ - 男性 / Male - 女性 / Female - その他 / Other - 回答しない / Prefer not to say - [x] ダイアログ - ニックネーム変更 / Change Nickname - 呼び名を入力 / Enter your name - MBTIタイプ選択 / Select MBTI Type - [x] 共通アクション - 保存 / Save - キャンセル / Cancel - 削除 / Delete - [x] ガイドボタン - ガイド・ヘルプを見る / View Guide & Help - [x] 設定セクション - その他 / Others - [x] ゲーミフィケーション (Coach Marks) - レベル&称号 / Level & Title - バッジコレクション / Badge Collection --- ## ❌ 未翻訳の範囲 ### コアUI(優先度:高) - [ ] ScanScreen (スキャン画面) - [ ] CameraScreen (カメラ画面) - [ ] SakeDetailScreen (詳細画面) - [ ] SettingsScreen (設定画面の一部) ### ダイアログ・SnackBar(優先度:中) - [ ] エラーメッセージ - [ ] 成功通知 - [ ] 確認ダイアログ ### プレースホルダー画面(優先度:低) - [ ] SommelierScreen (AIソムリエ) - [ ] BreweryMapScreen (酒蔵マップ) - [ ] InstagramPromoScreen (インスタ販促) - [ ] AnalyticsScreen (分析) ### 専門用語(優先度:低) - [ ] 日本酒タイプ (純米大吟醸、山廃など) - [ ] 味わい用語 (辛口、甘口、フルーティーなど) - [ ] 都道府県名 --- ## 🎯 翻訳の方針 ### ✅ 翻訳するもの - **UIラベル**: ボタン、タブ、メニュー項目 - **メッセージ**: エラー、成功、確認ダイアログ - **説明文**: ヘルプ、ガイド、ツールチップ - **共通アクション**: 保存、削除、キャンセル ### ❌ 翻訳しないもの - **銘柄名**: 「獺祭」「八海山」→ そのまま表示 - **酒蔵名**: 「旭酒造」→ そのまま表示 - **ユーザー入力データ**: レビュー、メモなど ### 🌐 専門用語の扱い - **ローマ字 + 英語説明** - 例: 純米大吟醸 → "Junmai Daiginjo (Premium sake)" - 例: 山廃 → "Yamahai (Traditional brewing method)" --- ## 📁 ファイル構成 ``` lib/ ├── utils/ │ └── translations.dart # 翻訳定義 (109行、61キー) ├── screens/ │ ├── main_screen.dart # ✅ 翻訳済み │ ├── home_screen.dart # ✅ 翻訳済み │ └── soul_screen.dart # ✅ 翻訳済み └── widgets/ └── settings/ └── language_selector.dart # 言語選択UI ``` --- ## 🔄 将来の移行計画 (ARBファイルへ) ### Why ARB? - Flutter公式の標準フォーマット - 翻訳者にやさしい (JSON形式) - パラメータ埋め込み対応 - 複数形・性別対応 - IDEサポート ### 移行手順 (予定作業時間: 2-3時間) 1. `l10n.yaml` 作成 2. 現在のMapを `app_ja.arb` / `app_en.arb` に変換 3. `flutter pub get` でコード生成 4. 各画面で `AppLocalizations.of(context)` に置き換え ### 移行のタイミング - 翻訳キーが100個を超えたら - 3言語目 (フランス語/ドイツ語) 追加時 - パラメータ埋め込みが必要になった時 --- ## 🧪 テスト方法 ### 手動テスト 1. 設定画面で「言語 / Language」を開く 2. 「🇺🇸 English」を選択 3. 以下を確認: - BottomNavigationBarのタブが英語に変わる - ホーム画面のAppBarが "Menu Creation" になる - ソート画面が英語表示になる - マイページが英語表示になる ### 翻訳漏れチェック ```dart // 開発中に使用 final t = Translations('en'); print(t['存在しないキー']); // → '存在しないキー' (フォールバック) ``` --- ## 📈 今後の拡張予定 ### Phase 2A: コアUI翻訳拡張 (4-6時間) - [ ] スキャン画面 - [ ] カメラ画面 - [ ] 詳細画面 - [ ] エラーメッセージ ### Phase 2B: 専門用語翻訳 (2-3時間) - [ ] 日本酒タイプ (20種類) - [ ] 味わい用語 (15種類) - [ ] 都道府県名 (47都道府県) ### Phase 3: ARBファイル移行 (2-3時間) - [ ] l10n.yaml作成 - [ ] ARBファイル生成 - [ ] コード置き換え ### Phase 4: 多言語対応 (言語ごとに4-6時間) - [ ] フランス語 (fr) - [ ] ドイツ語 (de) - [ ] 中国語 (zh) --- ## 🐛 既知の問題 なし (現時点で正常動作) --- ## 📚 参考資料 - [Flutter公式: Internationalizing Flutter apps](https://docs.flutter.dev/ui/accessibility-and-localization/internationalization) - [ARB Format Specification](https://github.com/google/app-resource-bundle/wiki/ApplicationResourceBundleSpecification) - [intl Package Documentation](https://pub.dev/packages/intl)