Files
Casha/lib/core/l10n/app_strings.dart
T

386 lines
23 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.
enum AppLocale { en, ru }
class AppStrings {
final AppLocale locale;
const AppStrings(this.locale);
bool get _ru => locale == AppLocale.ru;
String get appTitle => _ru ? 'Мои финансы' : 'My Finances';
String get totalBalance => _ru ? 'ОБЩИЙ БАЛАНС' : 'TOTAL BALANCE';
String get tapAndHoldToEdit =>
_ru ? 'удерживайте для редактирования' : 'tap and hold to edit';
String get addAccount => _ru ? 'Добавить счёт' : 'Add account';
String get addTransactionDashboard => _ru ? 'Добавить' : 'Add';
String get transactions => _ru ? 'Транзакции' : 'Transactions';
String get searchHint =>
_ru ? 'Поиск транзакций...' : 'Search transactions...';
String get filterAll => _ru ? 'Все' : 'All';
String get filterIncome => _ru ? 'Доход' : 'Income';
String get filterExpense => _ru ? 'Расход' : 'Expense';
String get filterTransfer => _ru ? 'Перевод' : 'Transfer';
String get filterAllTime => _ru ? 'Всё время' : 'All Time';
String get filterMonth => _ru ? 'Месяц' : 'Month';
String get income => _ru ? 'Доход' : 'Income';
String get expenses => _ru ? 'Расходы' : 'Expenses';
String get noTransactions =>
_ru ? 'Транзакции не найдены' : 'No transactions found';
String get addFirstTx => _ru
? 'Нажмите + чтобы добавить первую транзакцию'
: 'Tap + to add your first transaction';
String get addTransaction => _ru ? 'Новая транзакция' : 'Add Transaction';
String get editTransaction => _ru ? 'Редактировать' : 'Edit Transaction';
String get amount => _ru ? 'Сумма' : 'Amount';
String get category => _ru ? 'Категория' : 'Category';
String get note => _ru ? 'Заметка' : 'Note';
String get date => _ru ? 'Дата' : 'Date';
String get time => _ru ? 'Время' : 'Time';
String get save => _ru ? 'Сохранить' : 'Save';
String get delete => _ru ? 'Удалить' : 'Delete';
String get cancel => _ru ? 'Отмена' : 'Cancel';
String get typeIncome => _ru ? 'Доход' : 'Income';
String get typeExpense => _ru ? 'Расход' : 'Expense';
String get confirmDelete =>
_ru ? 'Удалить транзакцию?' : 'Delete transaction?';
String get confirmDeleteBody =>
_ru ? 'Это действие нельзя отменить.' : 'This action cannot be undone.';
String get saveChanges => _ru ? 'Сохранить изменения' : 'Save Changes';
String get noteOptional =>
_ru ? 'Заметка (необязательно)' : 'Note (optional)';
String get addNote => _ru ? 'Добавить заметку...' : 'Add a note...';
String get settings => _ru ? 'Настройки' : 'Settings';
String get managePreferences =>
_ru ? 'Управление настройками' : 'Manage your preferences';
String get appearance => _ru ? 'Внешний вид' : 'Appearance';
String get theme => _ru ? 'Тема' : 'Theme';
String get themeDark => _ru ? 'Тёмная' : 'Dark';
String get themeLight => _ru ? 'Светлая' : 'Light';
String get themeSystem => _ru ? 'Системная' : 'System';
String get cardTextColor => _ru ? 'Цвет текста карточки' : 'Card text color';
String get cardTextColorWhite => _ru ? 'Белый' : 'White';
String get cardTextColorAdaptive => _ru ? 'Авто' : 'Adaptive';
String get cardTextColorBlack => _ru ? 'Чёрный' : 'Black';
String get darkMode => _ru ? 'Тёмная тема' : 'Dark Mode';
String get enabled => _ru ? 'Включено' : 'Enabled';
String get disabled => _ru ? 'Выключено' : 'Disabled';
String get hapticFeedback => _ru ? 'Тактильная отдача' : 'Haptic Feedback';
String get vibrationOnInteractions =>
_ru ? 'Вибрация при взаимодействии' : 'Vibration on interactions';
String get biometricLock => _ru ? 'Биометрия' : 'Biometric Lock';
String get requireFingerprint =>
_ru ? 'Отпечаток при запуске' : 'Require fingerprint to unlock';
String get currency => _ru ? 'Валюта' : 'Currency';
String get amountFormat => _ru ? 'Формат суммы' : 'Amount Format';
String get language => _ru ? 'Язык' : 'Language';
String get langRu => _ru ? 'Русский' : 'Russian';
String get langEn => _ru ? 'Английский' : 'English';
String get data => _ru ? 'Данные' : 'Data';
String get exportData => _ru ? 'Экспорт данных' : 'Export data';
String get clearData => _ru ? 'Очистить данные' : 'Clear all data';
String get clearAllTransactions =>
_ru ? 'Удалить транзакции' : 'Clear All Transactions';
String get clearDataConfirm =>
_ru ? 'Удалить транзакции?' : 'Clear all transactions?';
String get clearDataWarning => _ru
? 'Это навсегда удалит всю историю транзакций. Это действие нельзя отменить.'
: 'This will permanently delete all your transaction history. This cannot be undone.';
String get areYouSure =>
_ru ? 'Вы абсолютно уверены?' : 'Are you absolutely sure?';
String get allTransactionsDeleted =>
_ru ? 'Все транзакции удалены' : 'All transactions deleted';
String get noKeepThem => _ru ? 'Нет, оставить' : 'No, keep them';
String get yesDeleteEverything =>
_ru ? 'Да, удалить всё' : 'Yes, delete everything';
String get allTransactionsWillBeDeleted => _ru
? 'Все транзакции будут удалены навсегда. Восстановить их будет невозможно.'
: 'All transactions will be deleted forever. There is no way to recover them.';
String get dangerZone => _ru ? 'Опасная зона' : 'Danger Zone';
String get navDashboard => _ru ? 'Главная' : 'Dashboard';
String get navCategories => _ru ? 'Статистика' : 'Statistics';
String get navSettings => _ru ? 'Настройки' : 'Settings';
String get statistics => _ru ? 'Статистика' : 'Statistics';
String get allAccounts => _ru ? 'Все счета' : 'All accounts';
String get categories => _ru ? 'Категории' : 'Categories';
String get rankedByAmount => _ru ? 'По сумме' : 'Ranked by Amount';
String get overview => _ru ? 'Обзор' : 'Overview';
String get netBalance => _ru ? 'Чистый баланс' : 'Net Balance';
String get averageIncome => _ru ? 'Средний доход' : 'Average Income';
String get averageExpense => _ru ? 'Средний расход' : 'Average Expense';
String get transactionsCount => _ru ? 'Транзакции' : 'Transactions';
String get expenseStructure => _ru ? 'Структура категорий' : 'Category Structure';
String get topCategories => _ru ? 'Топ категорий' : 'Top Categories';
String get monthlyTrend => _ru ? 'Тренд по месяцам' : 'Monthly Trend';
String get topCategory => _ru ? 'Лидер категории' : 'Top Category';
String get shareOfTotal => _ru ? 'Доля от общего' : 'Share of Total';
String get thisPeriod => _ru ? 'За период' : 'This Period';
String get analyticsInsight => _ru ? 'Финансовый срез по выбранному диапазону и счёту' : 'Financial snapshot for the selected range and account';
String get noStatisticsYet => _ru ? 'Пока недостаточно данных' : 'Not enough data yet';
String get statisticsWillAppear => _ru ? 'Когда появятся операции, здесь будет красивый аналитический обзор' : 'Once you add transactions, a beautiful analytics overview will appear here';
String get addCategory => _ru ? 'Добавить категорию' : 'Add Category';
String get editCategory => _ru ? 'Редактировать' : 'Edit Category';
String get categoryName => _ru ? 'Название' : 'Name';
String get categoryIcon => _ru ? 'Иконка' : 'Icon';
String get categoryColor => _ru ? 'Цвет' : 'Color';
String get deleteCategory => _ru ? 'Удалить категорию' : 'Delete Category';
String get noCategoriesYet => _ru ? 'Нет категорий' : 'No categories yet';
String get noExpenseData => _ru ? 'Нет данных о расходах' : 'No expense data';
String get addExpensesToSeeBreakdown => _ru
? 'Добавьте расходы, чтобы увидеть разбивку'
: 'Add some expenses to see the breakdown';
String get noIncomeData => _ru ? 'Нет данных о доходах' : 'No income data';
String get addIncomeToSeeBreakdown => _ru
? 'Добавьте доходы, чтобы увидеть разбивку'
: 'Add some income to see the breakdown';
String get total => _ru ? 'Всего' : 'Total';
String get lastSixMonths => _ru ? 'Последние 6 месяцев' : 'Last 6 Months';
String categoryLabel(String key) {
if (!_ru) return key;
const map = {
'Food': 'Еда',
'Transport': 'Транспорт',
'Shopping': 'Покупки',
'Entertainment': 'Развлечения',
'Health': 'Здоровье',
'Housing': 'Жильё',
'Education': 'Образование',
'Travel': 'Путешествия',
'Salary': 'Зарплата',
'Freelance': 'Фриланс',
'Investment': 'Инвестиции',
'Gift': 'Подарок',
'Refund': 'Возврат',
'Other': 'Другое',
'Utilities': 'Коммунальные',
'Clothing': 'Одежда',
'Sports': 'Спорт',
'Beauty': 'Красота',
'Pets': 'Питомцы',
'Business': 'Бизнес',
'Savings': 'Накопления',
};
return map[key] ?? key;
}
String get colorPrimary => _ru ? 'Основной' : 'Primary';
String get colorSecondary => _ru ? 'Второй' : 'Second';
String get colorSecond => _ru ? 'Второй' : 'Second';
String get colorSolid => _ru ? 'Однотон' : 'Solid';
String get gradientLinear => _ru ? 'Линейный' : 'Linear';
String get gradientReverse => _ru ? 'Обратный' : 'Reverse';
String get gradientRadial => _ru ? 'Радиус' : 'Radial';
String get gradientSweep => _ru ? 'Круговой' : 'Sweep';
String get reset => _ru ? 'Сброс' : 'Reset';
String get apply => _ru ? 'Применить' : 'Apply';
String get accountsInfoTitle => _ru ? 'Счета' : 'Accounts';
String get accountsInfoBalance => _ru
? 'У каждого счёта свой баланс, валюта и цвет карточки.'
: 'Each account has its own balance, currency and card color.';
String get accountsInfoCustomize => _ru
? 'Удерживайте карточку для настройки градиента, названия и валюты.'
: 'Long-press any card to customize its gradient, name and currency.';
String get accountsInfoLimit =>
_ru ? 'Максимум 5 счетов.' : 'Maximum 5 accounts.';
String get currencyConversions =>
_ru ? 'Конвертация валют' : 'Currency conversions';
String get showConversionsOnCard =>
_ru ? 'Показывать на карточке' : 'Show on balance card';
String get selectSourceAccount =>
_ru ? 'Выберите счёт отправителя' : 'Select source account';
String get selectDestAccount =>
_ru ? 'Выберите счёт получателя' : 'Select destination account';
String get accountsMustDiffer =>
_ru ? 'Счета должны отличаться' : 'Accounts must differ';
String get transferLabel => _ru ? 'Перевод' : 'Transfer';
String get transferTo => _ru ? 'на' : 'to';
String get transferFrom => _ru ? 'с' : 'from';
String get selectAccount => _ru ? 'Выберите счёт' : 'Select account';
String get accountPlaceholder => _ru ? 'Счёт' : 'Account';
String get saveError => _ru ? 'Ошибка сохранения' : 'Save error';
String get manageCategories => _ru ? 'Категории' : 'Categories';
String get manageCategoriesSubtitle => _ru
? 'Создавайте и редактируйте свои категории'
: 'Create and edit your own categories';
String get customCategories => _ru ? 'Свои категории' : 'Custom categories';
String get defaultCategories =>
_ru ? 'Стандартные категории' : 'Default categories';
String get newCategory => _ru ? 'Новая категория' : 'New category';
String get nameEn => _ru ? 'Название (EN)' : 'Name (EN)';
String get nameRu => _ru ? 'Название (RU)' : 'Name (RU)';
String get nameEnHint => _ru ? 'Например, Coffee' : 'e.g. Coffee';
String get nameRuHint => _ru ? 'Например, Кофе' : 'e.g. Кофе';
String get autoTranslate => _ru ? 'Автоперевод' : 'Auto-translate';
String get applyTranslation => _ru ? 'Применить' : 'Apply';
String get translating => _ru ? 'Перевод...' : 'Translating...';
String get translationFailed =>
_ru ? 'Не удалось перевести' : 'Translation failed';
String get categoryNameRequired =>
_ru ? 'Введите название' : 'Enter a name';
String get deleteCategoryConfirm =>
_ru ? 'Удалить эту категорию?' : 'Delete this category?';
String get deleteCategoryWarning => _ru
? 'Категория будет удалена. Прошлые транзакции сохранятся.'
: 'The category will be removed. Past transactions are kept.';
String get noCustomCategories =>
_ru ? 'Вы ещё не добавили категории' : 'No custom categories yet';
String get noCustomCategoriesHint => _ru
? 'Нажмите +, чтобы создать свою категорию'
: 'Tap + to create your own category';
String get categoryType => _ru ? 'Тип' : 'Type';
String get categorySaved => _ru ? 'Категория сохранена' : 'Category saved';
String get dateLocale => _ru ? 'ru_RU' : 'en_US';
String get premium => _ru ? 'Премиум' : 'Premium';
String get premiumStatus => _ru ? 'Статус премиум' : 'Premium status';
String get premiumDescription => _ru
? 'Разблокируйте цвета карточек, высоту и до 8 счетов'
: 'Unlock card colors, card height and up to 8 accounts';
String get premiumEnabled => _ru ? 'Включён' : 'Enabled';
String get premiumDisabled => _ru ? 'Выключен' : 'Disabled';
String get premiumFeatureLocked =>
_ru ? 'Доступно в премиум' : 'Premium feature';
String get accountLimitReached => _ru
? 'Достигнут лиммт счетов. Обновите до премиум для большего количества.'
: 'Account limit reached. Upgrade to premium for more accounts.';
String accountsLimitLabel(int max) =>
_ru ? 'Максимум $max счетов.' : 'Maximum $max accounts.';
String get premiumFeatureColors =>
_ru ? 'Настройка цветов карточек' : 'Custom card colors';
String get premiumFeatureHeight =>
_ru ? 'Изменение высоты карточки' : 'Resizable card height';
String get premiumFeatureAccounts =>
_ru ? 'До 8 счетов' : 'Up to 8 accounts';
String get onboardingWelcome => _ru ? 'Добро пожаловать в' : 'Welcome to';
String get onboardingMultiCurrencyTitle =>
_ru ? 'Все деньги\nна одном экране' : 'All Your Money,\nOne View';
String get onboardingMultiCurrencyBody => _ru
? 'Счета в разных валютах с автоматической конвертацией по актуальным курсам'
: 'Accounts in different currencies, automatically converted at live exchange rates';
String get onboardingCardsTitle =>
_ru ? 'Живые карточки' : 'Cards That Come Alive';
String get onboardingCardsBody => _ru
? 'Наклоните телефон — и карточка оживает. Градиенты, цвета и высота — всё настраивается под вас'
: 'Tilt your phone and watch them respond. Customize gradients, colors and height to make them yours';
String get onboardingReadyTitle => _ru ? 'Всё готово' : "You're All Set";
String get onboardingReadyBody => _ru
? 'Если готовы — свайпните вправо, чтобы открыть приложение'
: "If you're ready — swipe right to open the app";
String get onboardingSwipeRight => _ru ? 'Свайп вправо' : 'Swipe Right';
String get proTitle => _ru ? 'Casha Pro' : 'Casha Pro';
String get proAboutPro => _ru ? 'Подробнее' : 'About Pro';
String get proSubtitle => _ru
? 'Раскройте весь потенциал Casha'
: 'Unlock the full power of Casha';
String get proBuy => _ru ? 'Купить Pro' : 'Buy Pro';
String get proFeatureCloudSync =>
_ru ? 'Облачная синхронизация' : 'Cloud Sync';
String get proFeatureCloudSyncDesc => _ru
? 'Синхронизация между всеми вашими устройствами'
: 'Sync across all your devices';
String get proFeatureBiometric =>
_ru ? 'Биометрическая защита' : 'Biometric Protection';
String get proFeatureBiometricDesc => _ru
? 'Защитите свои данные отпечатком пальца или Face ID'
: 'Secure your data with fingerprint or Face ID';
String get proFeatureAnalytics =>
_ru ? 'Детальная аналитика' : 'Detailed Analytics';
String get proFeatureAnalyticsDesc => _ru
? 'Графики и статистика по расходам и доходам'
: 'Charts and stats for income and spending';
String get proFeatureCustomization =>
_ru ? 'Кастомизация карточек' : 'Card Customization';
String get proFeatureCustomizationDesc => _ru
? 'Цвета, градиенты, высота — всё под вашим контролем'
: 'Colors, gradients, height — all under your control';
String get proFeatureAccounts =>
_ru ? 'До 8 счетов' : 'Up to 8 Accounts';
String get proFeatureAccountsDesc => _ru
? 'Создавайте больше счетов для разных целей'
: 'Create more accounts for different goals';
String get proTryPro => _ru ? 'Попробовать Pro' : 'Try Pro';
String get proRestorePurchases =>
_ru ? 'Восстановить покупки' : 'Restore Purchases';
String get proActive => _ru ? 'Pro активна' : 'Pro Active';
String get proSignInForSync =>
_ru ? 'Войдите, чтобы включить синхронизацию' : 'Sign in to enable sync';
String get proSignInGoogle =>
_ru ? 'Войти через Google' : 'Sign in with Google';
String get proSyncEnabled =>
_ru ? 'Синхронизация включена' : 'Sync enabled';
String get proLastBackup => _ru ? 'Последняя резервная копия' : 'Last backup';
String get proSignOut => _ru ? 'Выйти' : 'Sign Out';
String get proPurchaseSuccess =>
_ru ? 'Pro успешно активирована!' : 'Pro successfully activated!';
String get proPurchaseFailed =>
_ru ? 'Не удалось оформить подписку' : 'Purchase failed';
String get proRestoreSuccess =>
_ru ? 'Покупки восстановлены!' : 'Purchases restored!';
String get proRestoreNotFound =>
_ru ? 'Предыдущие покупки не найдены' : 'No previous purchases found';
String get proTapToClose =>
_ru ? 'Нажмите чтобы закрыть' : 'Tap anywhere to close';
String get proResetData =>
_ru ? 'Сбросить тестовые данные' : 'Reset Test Data';
String get proResetDataDesc => _ru
? 'Локально отменить подписку для тестирования'
: 'Locally cancel subscription for testing';
String get proResetDataConfirm => _ru
? 'Сбросить подписку? Это локально очистит ваш премиум статус.'
: 'Reset subscription? This will locally clear your premium status.';
String get proResetDataSuccess => _ru
? 'Премиум статус сброшен'
: 'Premium status reset';
String get proRestoreSuccessTitle =>
_ru ? 'Покупки восстановлены!' : 'Purchases Restored!';
String get backupTitle => _ru ? 'Резервная копия' : 'Backup';
String get backupCreate => _ru ? 'Создать резервную копию' : 'Create Backup';
String get backupRestore => _ru ? 'Восстановить из копии' : 'Restore Backup';
String get backupCreating => _ru ? 'Создание копии...' : 'Creating backup...';
String get backupRestoring => _ru ? 'Восстановление...' : 'Restoring...';
String get backupSuccess =>
_ru ? 'Резервная копия успешно создана!' : 'Backup created successfully!';
String get backupRestoreSuccess =>
_ru ? 'Данные успешно восстановлены!' : 'Data restored successfully!';
String get backupRestoreFailed =>
_ru ? 'Не удалось восстановить данные' : 'Failed to restore data';
String get backupNoFileFound =>
_ru ? 'Резервная копия не найдена' : 'No backup file found';
String get backupTokenMismatch =>
_ru
? 'Этот файл резервной копии принадлежит другому покупателю Premium'
: 'This backup file belongs to another Premium purchaser';
String get backupInvalidFormat =>
_ru ? 'Неверный формат файла резервной копии' : 'Invalid backup file format';
String get backupNoToken =>
_ru
? 'Файл резервной копии не содержит токен покупки'
: 'Backup file does not contain a purchase token';
String get backupRequiresPremium =>
_ru ? 'Резервная копия доступна только для Pro' : 'Backup is a Pro-only feature';
String get backupRequiresSignIn =>
_ru
? 'Войдите в Google аккаунт для работы с резервными копиями'
: 'Sign in to Google to manage backups';
String get backupLastBackup => _ru ? 'Последняя копия' : 'Last backup';
String get backupNever => _ru ? 'Никогда' : 'Never';
String get backupSyncWithDrive =>
_ru ? 'Синхронизация с Google Диском' : 'Google Drive Sync';
String get backupSyncDesc =>
_ru
? 'Резервное копирование данных на ваш Google Диск'
: 'Back up your data to your Google Drive';
}