ponshu-room-lite/docs/TRANSLATION_STATUS.md

235 lines
7.0 KiB
Markdown
Raw Normal View History

# 翻訳実装状況 (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)