feat: Flutter client localisation (12 languages)
Add flutter_localizations + intl, 12 ARB files (en/ru/es/de/fr/it/pt/zh/ja/ko/ar/hi), replace all hardcoded Russian UI strings with AppLocalizations, detect system locale on first launch, localise bottom nav bar labels, document rule in CLAUDE.md. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
288
client/lib/l10n/app_localizations_ja.dart
Normal file
288
client/lib/l10n/app_localizations_ja.dart
Normal file
@@ -0,0 +1,288 @@
|
||||
// ignore: unused_import
|
||||
import 'package:intl/intl.dart' as intl;
|
||||
import 'app_localizations.dart';
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
/// The translations for Japanese (`ja`).
|
||||
class AppLocalizationsJa extends AppLocalizations {
|
||||
AppLocalizationsJa([String locale = 'ja']) : super(locale);
|
||||
|
||||
@override
|
||||
String get appTitle => 'FoodAI';
|
||||
|
||||
@override
|
||||
String get greetingMorning => 'おはようございます';
|
||||
|
||||
@override
|
||||
String get greetingAfternoon => 'こんにちは';
|
||||
|
||||
@override
|
||||
String get greetingEvening => 'こんばんは';
|
||||
|
||||
@override
|
||||
String get caloriesUnit => 'kcal';
|
||||
|
||||
@override
|
||||
String get gramsUnit => 'g';
|
||||
|
||||
@override
|
||||
String get goalLabel => '目標:';
|
||||
|
||||
@override
|
||||
String get consumed => '摂取済み';
|
||||
|
||||
@override
|
||||
String get remaining => '残り';
|
||||
|
||||
@override
|
||||
String get exceeded => '超過';
|
||||
|
||||
@override
|
||||
String get proteinLabel => 'タンパク質';
|
||||
|
||||
@override
|
||||
String get fatLabel => '脂質';
|
||||
|
||||
@override
|
||||
String get carbsLabel => '炭水化物';
|
||||
|
||||
@override
|
||||
String get today => '今日';
|
||||
|
||||
@override
|
||||
String get yesterday => '昨日';
|
||||
|
||||
@override
|
||||
String get mealsSection => '食事';
|
||||
|
||||
@override
|
||||
String get addDish => '料理を追加';
|
||||
|
||||
@override
|
||||
String get scanDish => 'スキャン';
|
||||
|
||||
@override
|
||||
String get menu => 'メニュー';
|
||||
|
||||
@override
|
||||
String get dishHistory => '料理履歴';
|
||||
|
||||
@override
|
||||
String get recommendCook => 'おすすめレシピ';
|
||||
|
||||
@override
|
||||
String get camera => 'カメラ';
|
||||
|
||||
@override
|
||||
String get gallery => 'ギャラリー';
|
||||
|
||||
@override
|
||||
String get analyzingPhoto => '写真を分析中...';
|
||||
|
||||
@override
|
||||
String get inQueue => '順番待ち中';
|
||||
|
||||
@override
|
||||
String queuePosition(int position) {
|
||||
return '$position番目';
|
||||
}
|
||||
|
||||
@override
|
||||
String get processing => '処理中...';
|
||||
|
||||
@override
|
||||
String get upgradePrompt => '順番をスキップ?アップグレード →';
|
||||
|
||||
@override
|
||||
String get recognitionFailed => '認識に失敗しました。もう一度お試しください。';
|
||||
|
||||
@override
|
||||
String get dishRecognition => '料理認識';
|
||||
|
||||
@override
|
||||
String get all => 'すべて';
|
||||
|
||||
@override
|
||||
String get dishRecognized => '料理を認識しました';
|
||||
|
||||
@override
|
||||
String get recognizing => '認識中…';
|
||||
|
||||
@override
|
||||
String get recognitionError => '認識エラー';
|
||||
|
||||
@override
|
||||
String get dishResultTitle => '料理を認識しました';
|
||||
|
||||
@override
|
||||
String get selectDish => '料理を選択';
|
||||
|
||||
@override
|
||||
String get dishNotRecognized => '料理を認識できませんでした';
|
||||
|
||||
@override
|
||||
String get tryAgain => 'もう一度試す';
|
||||
|
||||
@override
|
||||
String get nutritionApproximate => '栄養値は概算です — 写真から推定されました。';
|
||||
|
||||
@override
|
||||
String get portion => '量';
|
||||
|
||||
@override
|
||||
String get mealType => '食事タイプ';
|
||||
|
||||
@override
|
||||
String get dateLabel => '日付';
|
||||
|
||||
@override
|
||||
String get addToJournal => '日記に追加';
|
||||
|
||||
@override
|
||||
String get addFailed => '追加に失敗しました。もう一度お試しください。';
|
||||
|
||||
@override
|
||||
String get historyTitle => '認識履歴';
|
||||
|
||||
@override
|
||||
String get historyLoadError => '履歴の読み込みに失敗しました';
|
||||
|
||||
@override
|
||||
String get retry => '再試行';
|
||||
|
||||
@override
|
||||
String get noHistory => '認識履歴がありません';
|
||||
|
||||
@override
|
||||
String get profileTitle => 'プロフィール';
|
||||
|
||||
@override
|
||||
String get edit => '編集';
|
||||
|
||||
@override
|
||||
String get bodyParams => '身体パラメータ';
|
||||
|
||||
@override
|
||||
String get goalActivity => '目標 & 活動';
|
||||
|
||||
@override
|
||||
String get nutrition => '栄養';
|
||||
|
||||
@override
|
||||
String get settings => '設定';
|
||||
|
||||
@override
|
||||
String get height => '身長';
|
||||
|
||||
@override
|
||||
String get weight => '体重';
|
||||
|
||||
@override
|
||||
String get age => '年齢';
|
||||
|
||||
@override
|
||||
String get gender => '性別';
|
||||
|
||||
@override
|
||||
String get genderMale => '男性';
|
||||
|
||||
@override
|
||||
String get genderFemale => '女性';
|
||||
|
||||
@override
|
||||
String get goalLoss => '体重減少';
|
||||
|
||||
@override
|
||||
String get goalMaintain => '維持';
|
||||
|
||||
@override
|
||||
String get goalGain => '筋肉増量';
|
||||
|
||||
@override
|
||||
String get activityLow => '低い';
|
||||
|
||||
@override
|
||||
String get activityMedium => '普通';
|
||||
|
||||
@override
|
||||
String get activityHigh => '高い';
|
||||
|
||||
@override
|
||||
String get calorieGoal => 'カロリー目標';
|
||||
|
||||
@override
|
||||
String get mealTypes => '食事タイプ';
|
||||
|
||||
@override
|
||||
String get formulaNote => 'ミフリン・セントジョー式で計算';
|
||||
|
||||
@override
|
||||
String get language => '言語';
|
||||
|
||||
@override
|
||||
String get notSet => '未設定';
|
||||
|
||||
@override
|
||||
String get calorieHint => 'カロリー目標を計算するために身体パラメータを入力してください';
|
||||
|
||||
@override
|
||||
String get logout => 'ログアウト';
|
||||
|
||||
@override
|
||||
String get editProfile => 'プロフィールを編集';
|
||||
|
||||
@override
|
||||
String get cancel => 'キャンセル';
|
||||
|
||||
@override
|
||||
String get save => '保存';
|
||||
|
||||
@override
|
||||
String get nameLabel => '名前';
|
||||
|
||||
@override
|
||||
String get heightCm => '身長(cm)';
|
||||
|
||||
@override
|
||||
String get weightKg => '体重(kg)';
|
||||
|
||||
@override
|
||||
String get birthDate => '生年月日';
|
||||
|
||||
@override
|
||||
String get nameRequired => '名前を入力してください';
|
||||
|
||||
@override
|
||||
String get profileUpdated => 'プロフィールを更新しました';
|
||||
|
||||
@override
|
||||
String get profileSaveFailed => '保存に失敗しました';
|
||||
|
||||
@override
|
||||
String get mealTypeBreakfast => '朝食';
|
||||
|
||||
@override
|
||||
String get mealTypeSecondBreakfast => '第二朝食';
|
||||
|
||||
@override
|
||||
String get mealTypeLunch => '昼食';
|
||||
|
||||
@override
|
||||
String get mealTypeAfternoonSnack => 'おやつ';
|
||||
|
||||
@override
|
||||
String get mealTypeDinner => '夕食';
|
||||
|
||||
@override
|
||||
String get mealTypeSnack => '間食';
|
||||
|
||||
@override
|
||||
String get navHome => 'ホーム';
|
||||
|
||||
@override
|
||||
String get navProducts => '食品';
|
||||
|
||||
@override
|
||||
String get navRecipes => 'レシピ';
|
||||
}
|
||||
Reference in New Issue
Block a user