Phase 1: date strip now covers today + 7 future days; right chevron enabled; future pills rendered in lighter style. Phase 2: home screen shows DateContext (past/today/future): - future dates: hide calorie ring + macros, show PlanningBanner - plannedMealsProvider derives from cached menuProvider (no extra API call) - _MealCard shows ghost PlannedSlotTile for unconfirmed menu slots - "Mark as eaten" creates a diary entry (source: menu_plan) via existing API New l10n keys (12 locales): planningForDate, markAsEaten, plannedMealLabel Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
362 lines
7.1 KiB
Dart
362 lines
7.1 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Korean (`ko`).
|
|
class AppLocalizationsKo extends AppLocalizations {
|
|
AppLocalizationsKo([String locale = 'ko']) : 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 => 'Mifflin-St Jeor 공식으로 계산';
|
|
|
|
@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 => '레시피';
|
|
|
|
@override
|
|
String get addFromReceiptOrPhoto => '영수증 또는 사진으로 추가';
|
|
|
|
@override
|
|
String get chooseMethod => '방법 선택';
|
|
|
|
@override
|
|
String get photoReceipt => '영수증 촬영';
|
|
|
|
@override
|
|
String get photoReceiptSubtitle => '영수증의 모든 상품 인식';
|
|
|
|
@override
|
|
String get photoProducts => '식품 촬영';
|
|
|
|
@override
|
|
String get photoProductsSubtitle => '냉장고, 테이블, 선반 — 최대 3장';
|
|
|
|
@override
|
|
String get addPackagedFood => '포장 식품 추가';
|
|
|
|
@override
|
|
String get scanBarcode => '바코드 스캔';
|
|
|
|
@override
|
|
String get portionWeightG => '1회 제공량 (g)';
|
|
|
|
@override
|
|
String get productNotFound => '제품을 찾을 수 없습니다';
|
|
|
|
@override
|
|
String get enterManually => '직접 입력';
|
|
|
|
@override
|
|
String get perHundredG => '100g당';
|
|
|
|
@override
|
|
String get searchFoodHint => '식품 및 요리 검색...';
|
|
|
|
@override
|
|
String get recentlyUsedLabel => '최근 사용';
|
|
|
|
@override
|
|
String get productsSection => '식품';
|
|
|
|
@override
|
|
String get dishesSection => '요리';
|
|
|
|
@override
|
|
String noResultsForQuery(String query) {
|
|
return '\"$query\"에 대한 결과 없음';
|
|
}
|
|
|
|
@override
|
|
String get servingsLabel => '인분';
|
|
|
|
@override
|
|
String get addToDiary => '일기에 추가';
|
|
|
|
@override
|
|
String get scanDishPhoto => '사진 스캔';
|
|
|
|
@override
|
|
String planningForDate(String date) {
|
|
return '';
|
|
}
|
|
|
|
@override
|
|
String get markAsEaten => '';
|
|
|
|
@override
|
|
String get plannedMealLabel => '';
|
|
}
|