235 lines
7.0 KiB
Markdown
235 lines
7.0 KiB
Markdown
# 翻訳実装状況 (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)
|