Files
food-ai/client/lib/l10n/app_localizations_ru.dart
dbastrikin 9a6b7800a3 fix: unify date limits, fix ISO week calculation, refactor home screen plan button
- Fix _isoWeek: correct Sunday shift (-3 instead of +4), use floor+1 formula,
  match jan1 timezone to input — planned meals now appear correctly for UTC+ users
- Add kPlanningHorizonDays=28 / kMenuPastWeeks=8 constants; apply to home date
  strip, plan picker (strip + calendar), and menu screen prev/next navigation
- Menu screen week nav: disable arrows at min/max limits using compareTo
- Home screen: replace _GenerateActionCard/_WeekPlannedChip conditional with
  always-visible _FutureDayPlanButton(dateString); show _DayPlannedChip only
  when the specific day has planned meals; remove standalone _PlanMenuButton
- _FutureDayPlanButton uses selected date as defaultStart instead of lastPlanned+1
- Rename weekPlannedLabel -> dayPlannedLabel across all 12 locales

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 23:25:46 +02:00

424 lines
10 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Russian (`ru`).
class AppLocalizationsRu extends AppLocalizations {
AppLocalizationsRu([String locale = 'ru']) : super(locale);
@override
String get appTitle => 'FoodAI';
@override
String get greetingMorning => 'Доброе утро';
@override
String get greetingAfternoon => 'Добрый день';
@override
String get greetingEvening => 'Добрый вечер';
@override
String get caloriesUnit => 'ккал';
@override
String get gramsUnit => 'г';
@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 => 'Хотите без очереди? Upgrade →';
@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 => 'Рост (см)';
@override
String get weightKg => 'Вес (кг)';
@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 => 'Вес порции (г)';
@override
String get productNotFound => 'Продукт не найден';
@override
String get enterManually => 'Ввести вручную';
@override
String get perHundredG => 'на 100 г';
@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 'Планирование на $date';
}
@override
String get markAsEaten => 'Отметить как съеденное';
@override
String get plannedMealLabel => 'Запланировано';
@override
String get generateWeekLabel => 'Запланировать неделю';
@override
String get generateWeekSubtitle =>
'AI составит меню с завтраком, обедом и ужином на всю неделю';
@override
String get generatingMenu => 'Генерируем меню...';
@override
String get dayPlannedLabel => 'День запланирован';
@override
String get planMenuButton => 'Спланировать меню';
@override
String get planMenuTitle => 'Что запланировать?';
@override
String get planOptionSingleMeal => '1 приём пищи';
@override
String get planOptionSingleMealDesc => 'Выберите день и приём пищи';
@override
String get planOptionDay => '1 день';
@override
String get planOptionDayDesc => 'Все приёмы пищи за день';
@override
String get planOptionDays => 'Несколько дней';
@override
String get planOptionDaysDesc => 'Настроить период';
@override
String get planOptionWeek => 'Неделя';
@override
String get planOptionWeekDesc => '7 дней сразу';
@override
String get planSelectDate => 'Выберите дату';
@override
String get planSelectMealType => 'Приём пищи';
@override
String get planSelectRange => 'Выберите период';
@override
String get planGenerateButton => 'Запланировать';
@override
String get planGenerating => 'Генерирую план…';
@override
String get planSuccess => 'Меню запланировано!';
}