const ru: Record<string, string> = {
  // Common
  'common.save': 'Сохранить',
  'common.cancel': 'Отмена',
  'common.delete': 'Удалить',
  'common.edit': 'Редактировать',
  'common.add': 'Добавить',
  'common.loading': 'Загрузка...',
  'common.error': 'Ошибка',
  'common.back': 'Назад',
  'common.all': 'Все',
  'common.close': 'Закрыть',
  'common.open': 'Открыть',
  'common.upload': 'Загрузить',
  'common.search': 'Поиск',
  'common.confirm': 'Подтвердить',
  'common.ok': 'ОК',
  'common.yes': 'Да',
  'common.no': 'Нет',
  'common.or': 'или',
  'common.none': 'Нет',
  'common.date': 'Дата',
  'common.rename': 'Переименовать',
  'common.name': 'Имя',
  'common.email': 'Эл. почта',
  'common.password': 'Пароль',
  'common.saving': 'Сохранение...',
  'common.update': 'Обновить',
  'common.change': 'Изменить',
  'common.uploading': 'Загрузка…',
  'common.backToPlanning': 'Вернуться к планированию',
  'common.reset': 'Сбросить',

  // Navbar
  'nav.trip': 'Поездка',
  'nav.share': 'Поделиться',
  'nav.settings': 'Настройки',
  'nav.admin': 'Админ',
  'nav.logout': 'Выйти',
  'nav.lightMode': 'Светлая тема',
  'nav.darkMode': 'Тёмная тема',
  'nav.autoMode': 'Авто',
  'nav.administrator': 'Администратор',

  // Dashboard
  'dashboard.title': 'Мои поездки',
  'dashboard.subtitle.loading': 'Загрузка поездок...',
  'dashboard.subtitle.trips': '{count} поездок ({archived} в архиве)',
  'dashboard.subtitle.empty': 'Начните свою первую поездку',
  'dashboard.subtitle.activeOne': '{count} активная поездка',
  'dashboard.subtitle.activeMany': '{count} активных поездок',
  'dashboard.subtitle.archivedSuffix': ' · {count} в архиве',
  'dashboard.newTrip': 'Новая поездка',
  'dashboard.gridView': 'Плитка',
  'dashboard.listView': 'Список',
  'dashboard.currency': 'Валюта',
  'dashboard.timezone': 'Часовые пояса',
  'dashboard.localTime': 'Местное',
  'dashboard.timezoneCustomTitle': 'Свой часовой пояс',
  'dashboard.timezoneCustomLabelPlaceholder': 'Название (необязательно)',
  'dashboard.timezoneCustomTzPlaceholder': 'напр. America/New_York',
  'dashboard.timezoneCustomAdd': 'Добавить',
  'dashboard.timezoneCustomErrorEmpty': 'Введите идентификатор часового пояса',
  'dashboard.timezoneCustomErrorInvalid': 'Неверный часовой пояс. Используйте формат Europe/Berlin',
  'dashboard.timezoneCustomErrorDuplicate': 'Уже добавлен',
  'dashboard.emptyTitle': 'Нет поездок',
  'dashboard.emptyText': 'Создайте свою первую поездку и начните планировать!',
  'dashboard.emptyButton': 'Создать первую поездку',
  'dashboard.nextTrip': 'Следующая поездка',
  'dashboard.shared': 'Общая',
  'dashboard.sharedBy': 'Поделился {name}',
  'dashboard.days': 'Дни',
  'dashboard.places': 'Места',
  'dashboard.archive': 'Архивировать',
  'dashboard.restore': 'Восстановить',
  'dashboard.archived': 'В архиве',
  'dashboard.status.ongoing': 'В процессе',
  'dashboard.status.today': 'Сегодня',
  'dashboard.status.tomorrow': 'Завтра',
  'dashboard.status.past': 'Прошло',
  'dashboard.status.daysLeft': 'осталось {count} дн.',
  'dashboard.toast.loadError': 'Не удалось загрузить поездки',
  'dashboard.toast.created': 'Поездка создана!',
  'dashboard.toast.createError': 'Не удалось создать поездку',
  'dashboard.toast.updated': 'Поездка обновлена!',
  'dashboard.toast.updateError': 'Не удалось обновить поездку',
  'dashboard.toast.deleted': 'Поездка удалена',
  'dashboard.toast.deleteError': 'Не удалось удалить поездку',
  'dashboard.toast.archived': 'Поездка архивирована',
  'dashboard.toast.archiveError': 'Не удалось архивировать поездку',
  'dashboard.toast.restored': 'Поездка восстановлена',
  'dashboard.toast.restoreError': 'Не удалось восстановить поездку',
  'dashboard.confirm.delete': 'Удалить поездку «{title}»? Все места и планы будут безвозвратно удалены.',
  'dashboard.editTrip': 'Редактировать поездку',
  'dashboard.createTrip': 'Создать новую поездку',
  'dashboard.tripTitle': 'Название',
  'dashboard.tripTitlePlaceholder': 'напр. Лето в Японии',
  'dashboard.tripDescription': 'Описание',
  'dashboard.tripDescriptionPlaceholder': 'О чём эта поездка?',
  'dashboard.startDate': 'Дата начала',
  'dashboard.endDate': 'Дата окончания',
  'dashboard.noDateHint': 'Дата не указана — будет создано 7 дней по умолчанию. Вы можете изменить это в любое время.',
  'dashboard.coverImage': 'Обложка',
  'dashboard.addCoverImage': 'Добавить обложку',
  'dashboard.addMembers': 'Попутчики',
  'dashboard.addMember': 'Добавить участника',
  'dashboard.coverSaved': 'Обложка сохранена',
  'dashboard.coverUploadError': 'Ошибка загрузки',
  'dashboard.coverRemoveError': 'Ошибка удаления',
  'dashboard.titleRequired': 'Название обязательно',
  'dashboard.endDateError': 'Дата окончания должна быть позже даты начала',

  // Settings
  'settings.title': 'Настройки',
  'settings.subtitle': 'Настройте свои персональные параметры',
  'settings.map': 'Карта',
  'settings.mapTemplate': 'Шаблон карты',
  'settings.mapTemplatePlaceholder.select': 'Выберите шаблон...',
  'settings.mapDefaultHint': 'Оставьте пустым для OpenStreetMap (по умолчанию)',
  'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  'settings.mapHint': 'URL-шаблон для тайлов карты',
  'settings.latitude': 'Широта',
  'settings.longitude': 'Долгота',
  'settings.saveMap': 'Сохранить карту',
  'settings.apiKeys': 'API-ключи',
  'settings.mapsKey': 'API-ключ Google Maps',
  'settings.mapsKeyHint': 'Для поиска мест. Требуется Places API (New). Получите на console.cloud.google.com',
  'settings.weatherKey': 'API-ключ OpenWeatherMap',
  'settings.weatherKeyHint': 'Для данных о погоде. Бесплатно на openweathermap.org/api',
  'settings.keyPlaceholder': 'Введите ключ...',
  'settings.configured': 'Настроено',
  'settings.saveKeys': 'Сохранить ключи',
  'settings.display': 'Отображение',
  'settings.colorMode': 'Цветовая схема',
  'settings.light': 'Светлая',
  'settings.dark': 'Тёмная',
  'settings.auto': 'Авто',
  'settings.language': 'Язык',
  'settings.temperature': 'Единица температуры',
  'settings.timeFormat': 'Формат времени',
  'settings.routeCalculation': 'Расчёт маршрута',
  'settings.blurBookingCodes': 'Скрыть коды бронирования',
  'settings.notifications': 'Уведомления',
  'settings.notifyTripInvite': 'Приглашения в поездку',
  'settings.notifyBookingChange': 'Изменения бронирований',
  'settings.notifyTripReminder': 'Напоминания о поездке',
  'settings.notifyVacayInvite': 'Приглашения слияния Vacay',
  'settings.notifyPhotosShared': 'Общие фото (Immich)',
  'settings.notifyCollabMessage': 'Сообщения чата (Collab)',
  'settings.notifyPackingTagged': 'Список вещей: назначения',
  'settings.notifyWebhook': 'Webhook-уведомления',
  'admin.smtp.title': 'Почта и уведомления',
  'admin.smtp.hint': 'Настройка SMTP для уведомлений по почте. Необязательно: Webhook URL для Discord, Slack и т.д.',
  'admin.smtp.testButton': 'Отправить тестовое письмо',
  'admin.smtp.testSuccess': 'Тестовое письмо успешно отправлено',
  'admin.smtp.testFailed': 'Ошибка отправки тестового письма',
  'dayplan.icsTooltip': 'Экспорт календаря (ICS)',
  'share.linkTitle': 'Публичная ссылка',
  'share.linkHint': 'Создайте ссылку, по которой любой сможет просмотреть эту поездку без входа в систему. Только чтение — редактирование невозможно.',
  'share.createLink': 'Создать ссылку',
  'share.deleteLink': 'Удалить ссылку',
  'share.createError': 'Не удалось создать ссылку',
  'common.copy': 'Копировать',
  'common.copied': 'Скопировано',
  'share.permMap': 'Карта и план',
  'share.permBookings': 'Бронирования',
  'share.permPacking': 'Вещи',
  'shared.expired': 'Ссылка устарела или недействительна',
  'shared.expiredHint': 'Эта ссылка на поездку больше не активна.',
  'shared.readOnly': 'Режим только для чтения',
  'shared.tabPlan': 'План',
  'shared.tabBookings': 'Бронирования',
  'shared.tabPacking': 'Багаж',
  'shared.tabBudget': 'Бюджет',
  'shared.tabChat': 'Чат',
  'shared.days': 'дней',
  'shared.places': 'мест',
  'shared.other': 'Прочее',
  'shared.totalBudget': 'Общий бюджет',
  'shared.messages': 'сообщений',
  'shared.sharedVia': 'Поделено через',
  'shared.confirmed': 'Подтверждено',
  'shared.pending': 'Ожидает',
  'share.permBudget': 'Бюджет',
  'share.permCollab': 'Чат',
  'settings.on': 'Вкл.',
  'settings.off': 'Выкл.',
  'settings.mcp.title': 'Настройка MCP',
  'settings.mcp.endpoint': 'MCP-эндпоинт',
  'settings.mcp.clientConfig': 'Конфигурация клиента',
  'settings.mcp.clientConfigHint': 'Замените <your_token> на API-токен из списка ниже. Путь к npx может потребовать настройки для вашей системы (например, C:\\PROGRA~1\\nodejs\\npx.cmd в Windows).',
  'settings.mcp.copy': 'Копировать',
  'settings.mcp.copied': 'Скопировано!',
  'settings.mcp.apiTokens': 'API-токены',
  'settings.mcp.createToken': 'Создать токен',
  'settings.mcp.noTokens': 'Токенов пока нет. Создайте один для подключения MCP-клиентов.',
  'settings.mcp.tokenCreatedAt': 'Создан',
  'settings.mcp.tokenUsedAt': 'Использован',
  'settings.mcp.deleteTokenTitle': 'Удалить токен',
  'settings.mcp.deleteTokenMessage': 'Этот токен перестанет работать немедленно. Любой MCP-клиент, использующий его, потеряет доступ.',
  'settings.mcp.modal.createTitle': 'Создать API-токен',
  'settings.mcp.modal.tokenName': 'Название токена',
  'settings.mcp.modal.tokenNamePlaceholder': 'напр. Claude Desktop, Рабочий ноутбук',
  'settings.mcp.modal.creating': 'Создание…',
  'settings.mcp.modal.create': 'Создать токен',
  'settings.mcp.modal.createdTitle': 'Токен создан',
  'settings.mcp.modal.createdWarning': 'Этот токен будет показан только один раз. Скопируйте и сохраните его сейчас — восстановить его будет невозможно.',
  'settings.mcp.modal.done': 'Готово',
  'settings.mcp.toast.created': 'Токен создан',
  'settings.mcp.toast.createError': 'Не удалось создать токен',
  'settings.mcp.toast.deleted': 'Токен удалён',
  'settings.mcp.toast.deleteError': 'Не удалось удалить токен',
  'settings.account': 'Аккаунт',
  'settings.username': 'Имя пользователя',
  'settings.email': 'Эл. почта',
  'settings.role': 'Роль',
  'settings.roleAdmin': 'Администратор',
  'settings.oidcLinked': 'Связан с',
  'settings.changePassword': 'Изменить пароль',
  'settings.currentPassword': 'Текущий пароль',
  'settings.currentPasswordRequired': 'Текущий пароль обязателен',
  'settings.newPassword': 'Новый пароль',
  'settings.confirmPassword': 'Подтвердите новый пароль',
  'settings.updatePassword': 'Обновить пароль',
  'settings.passwordRequired': 'Введите текущий и новый пароль',
  'settings.passwordTooShort': 'Пароль должен содержать не менее 8 символов',
  'settings.passwordMismatch': 'Пароли не совпадают',
  'settings.passwordWeak': 'Пароль должен содержать заглавные, строчные буквы и цифру',
  'settings.passwordChanged': 'Пароль успешно изменён',
  'settings.deleteAccount': 'Удалить аккаунт',
  'settings.deleteAccountTitle': 'Удалить ваш аккаунт?',
  'settings.deleteAccountWarning': 'Ваш аккаунт и все поездки, места и файлы будут безвозвратно удалены. Это действие нельзя отменить.',
  'settings.deleteAccountConfirm': 'Удалить безвозвратно',
  'settings.deleteBlockedTitle': 'Удаление невозможно',
  'settings.deleteBlockedMessage': 'Вы единственный администратор. Назначьте другого пользователя администратором перед удалением своего аккаунта.',
  'settings.roleUser': 'Пользователь',
  'settings.saveProfile': 'Сохранить профиль',
  'settings.mfa.title': 'Двухфакторная аутентификация (2FA)',
  'settings.mfa.description': 'Добавляет второй шаг при входе. Используйте приложение-аутентификатор (Google Authenticator, Authy и др.).',
  'settings.mfa.requiredByPolicy': 'Администратор требует двухфакторную аутентификацию. Настройте приложение-аутентификатор ниже, прежде чем продолжить.',
  'settings.mfa.backupTitle': 'Резервные коды',
  'settings.mfa.backupDescription': 'Используйте эти одноразовые коды, если потеряете доступ к приложению-аутентификатору.',
  'settings.mfa.backupWarning': 'Сохраните их сейчас. Каждый код можно использовать только один раз.',
  'settings.mfa.backupCopy': 'Скопировать коды',
  'settings.mfa.backupDownload': 'Скачать TXT',
  'settings.mfa.backupPrint': 'Печать / PDF',
  'settings.mfa.backupCopied': 'Резервные коды скопированы',
  'settings.mfa.enabled': '2FA включена для вашего аккаунта.',
  'settings.mfa.disabled': '2FA не включена.',
  'settings.mfa.setup': 'Настроить аутентификатор',
  'settings.mfa.scanQr': 'Отсканируйте QR-код приложением или введите ключ вручную.',
  'settings.mfa.secretLabel': 'Секретный ключ (ручной ввод)',
  'settings.mfa.codePlaceholder': '6-значный код',
  'settings.mfa.enable': 'Включить 2FA',
  'settings.mfa.cancelSetup': 'Отмена',
  'settings.mfa.disableTitle': 'Отключить 2FA',
  'settings.mfa.disableHint': 'Введите пароль аккаунта и текущий код из аутентификатора.',
  'settings.mfa.disable': 'Отключить 2FA',
  'settings.mfa.toastEnabled': 'Двухфакторная аутентификация включена',
  'settings.mfa.toastDisabled': 'Двухфакторная аутентификация отключена',
  'settings.mfa.demoBlocked': 'Недоступно в демо-режиме',
  'settings.toast.mapSaved': 'Настройки карты сохранены',
  'settings.toast.keysSaved': 'API-ключи сохранены',
  'settings.toast.displaySaved': 'Настройки отображения сохранены',
  'settings.toast.profileSaved': 'Профиль сохранён',
  'settings.uploadAvatar': 'Загрузить фото профиля',
  'settings.removeAvatar': 'Удалить фото профиля',
  'settings.avatarUploaded': 'Фото профиля обновлено',
  'settings.avatarRemoved': 'Фото профиля удалено',
  'settings.avatarError': 'Ошибка загрузки',

  // Login
  'login.error': 'Ошибка входа. Проверьте свои учётные данные.',
  'login.tagline': 'Ваши поездки.\nВаш план.',
  'login.description': 'Планируйте поездки совместно с интерактивными картами, бюджетами и синхронизацией в реальном времени.',
  'login.features.maps': 'Интерактивные карты',
  'login.features.mapsDesc': 'Google Places, маршруты и кластеризация',
  'login.features.realtime': 'Синхронизация в реальном времени',
  'login.features.realtimeDesc': 'Планируйте вместе через WebSocket',
  'login.features.budget': 'Контроль бюджета',
  'login.features.budgetDesc': 'Категории, графики и расходы на человека',
  'login.features.collab': 'Совместная работа',
  'login.features.collabDesc': 'Многопользовательский режим с общими поездками',
  'login.features.packing': 'Списки вещей',
  'login.features.packingDesc': 'Категории, прогресс и подсказки',
  'login.features.bookings': 'Бронирования',
  'login.features.bookingsDesc': 'Авиабилеты, отели, рестораны и многое другое',
  'login.features.files': 'Документы',
  'login.features.filesDesc': 'Загружайте и управляйте документами',
  'login.features.routes': 'Умные маршруты',
  'login.features.routesDesc': 'Автооптимизация и экспорт в Google Maps',
  'login.selfHosted': 'Самостоятельный хостинг · Открытый код · Ваши данные остаются у вас',
  'login.title': 'Вход',
  'login.subtitle': 'С возвращением',
  'login.signingIn': 'Вход…',
  'login.signIn': 'Войти',
  'login.createAdmin': 'Создать аккаунт администратора',
  'login.createAdminHint': 'Настройте первый аккаунт администратора для TREK.',
  'login.createAccount': 'Создать аккаунт',
  'login.createAccountHint': 'Зарегистрируйте новый аккаунт.',
  'login.creating': 'Создание…',
  'login.noAccount': 'Нет аккаунта?',
  'login.hasAccount': 'Уже есть аккаунт?',
  'login.register': 'Регистрация',
  'login.emailPlaceholder': 'ваш@email.com',
  'login.username': 'Имя пользователя',
  'login.oidc.registrationDisabled': 'Регистрация отключена. Обратитесь к администратору.',
  'login.oidc.noEmail': 'Провайдер не предоставил адрес эл. почты.',
  'login.mfaTitle': 'Двухфакторная аутентификация',
  'login.mfaSubtitle': 'Введите 6-значный код из приложения-аутентификатора.',
  'login.mfaCodeLabel': 'Код подтверждения',
  'login.mfaCodeRequired': 'Введите код из приложения-аутентификатора.',
  'login.mfaHint': 'Откройте Google Authenticator, Authy или другое TOTP-приложение.',
  'login.mfaBack': '← Назад к входу',
  'login.mfaVerify': 'Подтвердить',
  'login.oidc.tokenFailed': 'Аутентификация не удалась.',
  'login.oidc.invalidState': 'Недействительная сессия. Попробуйте снова.',
  'login.demoFailed': 'Ошибка демо-входа',
  'login.oidcSignIn': 'Войти через {name}',
  'login.oidcOnly': 'Вход по паролю отключён. Используйте вашего провайдера SSO для входа.',
  'login.demoHint': 'Попробуйте демо — регистрация не требуется',

  // Register
  'register.passwordMismatch': 'Пароли не совпадают',
  'register.passwordTooShort': 'Пароль должен содержать не менее 6 символов',
  'register.failed': 'Ошибка регистрации',
  'register.getStarted': 'Начать',
  'register.subtitle': 'Создайте аккаунт и начните планировать поездки мечты.',
  'register.feature1': 'Неограниченные планы поездок',
  'register.feature2': 'Интерактивная карта',
  'register.feature3': 'Управление местами и категориями',
  'register.feature4': 'Отслеживание бронирований',
  'register.feature5': 'Создание списков вещей',
  'register.feature6': 'Хранение фото и файлов',
  'register.createAccount': 'Создать аккаунт',
  'register.startPlanning': 'Начните планировать свои поездки',
  'register.minChars': 'Мин. 6 символов',
  'register.confirmPassword': 'Подтвердите пароль',
  'register.repeatPassword': 'Повторите пароль',
  'register.registering': 'Регистрация...',
  'register.register': 'Зарегистрироваться',
  'register.hasAccount': 'Уже есть аккаунт?',
  'register.signIn': 'Войти',

  // Admin
  'admin.title': 'Администрирование',
  'admin.subtitle': 'Управление пользователями и системные настройки',
  'admin.tabs.users': 'Пользователи',
  'admin.tabs.categories': 'Категории',
  'admin.tabs.backup': 'Резервная копия',
  'admin.tabs.audit': 'Журнал аудита',
  'admin.stats.users': 'Пользователи',
  'admin.stats.trips': 'Поездки',
  'admin.stats.places': 'Места',
  'admin.stats.photos': 'Фото',
  'admin.stats.files': 'Файлы',
  'admin.table.user': 'Пользователь',
  'admin.table.email': 'Эл. почта',
  'admin.table.role': 'Роль',
  'admin.table.created': 'Создан',
  'admin.table.lastLogin': 'Последний вход',
  'admin.table.actions': 'Действия',
  'admin.you': '(Вы)',
  'admin.editUser': 'Редактировать пользователя',
  'admin.newPassword': 'Новый пароль',
  'admin.newPasswordHint': 'Оставьте пустым, чтобы сохранить текущий пароль',
  'admin.deleteUser': 'Удалить пользователя «{name}»? Все поездки будут безвозвратно удалены.',
  'admin.deleteUserTitle': 'Удалить пользователя',
  'admin.newPasswordPlaceholder': 'Введите новый пароль…',
  'admin.toast.loadError': 'Не удалось загрузить данные администрирования',
  'admin.toast.userUpdated': 'Пользователь обновлён',
  'admin.toast.updateError': 'Ошибка обновления',
  'admin.toast.userDeleted': 'Пользователь удалён',
  'admin.toast.deleteError': 'Ошибка удаления',
  'admin.toast.cannotDeleteSelf': 'Нельзя удалить собственный аккаунт',
  'admin.toast.userCreated': 'Пользователь создан',
  'admin.toast.createError': 'Ошибка создания пользователя',
  'admin.toast.fieldsRequired': 'Имя пользователя, эл. почта и пароль обязательны',
  'admin.createUser': 'Создать пользователя',
  'admin.invite.title': 'Ссылки-приглашения',
  'admin.invite.subtitle': 'Создание одноразовых ссылок для регистрации',
  'admin.invite.create': 'Создать ссылку',
  'admin.invite.createAndCopy': 'Создать и скопировать',
  'admin.invite.empty': 'Ссылки-приглашения ещё не созданы',
  'admin.invite.maxUses': 'Макс. использований',
  'admin.invite.expiry': 'Действует',
  'admin.invite.uses': 'использовано',
  'admin.invite.expiresAt': 'истекает',
  'admin.invite.createdBy': 'от',
  'admin.invite.active': 'Активна',
  'admin.invite.expired': 'Истекла',
  'admin.invite.usedUp': 'Исчерпана',
  'admin.invite.copied': 'Ссылка-приглашение скопирована',
  'admin.invite.copyLink': 'Копировать ссылку',
  'admin.invite.deleted': 'Ссылка-приглашение удалена',
  'admin.invite.createError': 'Ошибка при создании ссылки',
  'admin.invite.deleteError': 'Ошибка при удалении ссылки',
  'admin.tabs.settings': 'Настройки',
  'admin.allowRegistration': 'Разрешить регистрацию',
  'admin.allowRegistrationHint': 'Новые пользователи могут регистрироваться самостоятельно',
  'admin.requireMfa': 'Требовать двухфакторную аутентификацию (2FA)',
  'admin.requireMfaHint': 'Пользователи без 2FA должны завершить настройку в разделе «Настройки» перед использованием приложения.',
  'admin.apiKeys': 'API-ключи',
  'admin.apiKeysHint': 'Необязательно. Включает расширенные данные о местах, такие как фото и погода.',
  'admin.mapsKey': 'API-ключ Google Maps',
  'admin.mapsKeyHint': 'Необходим для поиска мест. Получите на console.cloud.google.com',
  'admin.mapsKeyHintLong': 'Без API-ключа используется OpenStreetMap для поиска мест. С ключом Google API можно загружать фото, рейтинги и часы работы. Получите ключ на console.cloud.google.com.',
  'admin.recommended': 'Рекомендуется',
  'admin.weatherKey': 'API-ключ OpenWeatherMap',
  'admin.weatherKeyHint': 'Для данных о погоде. Бесплатно на openweathermap.org',
  'admin.validateKey': 'Проверить',
  'admin.keyValid': 'Подключено',
  'admin.keyInvalid': 'Недействителен',
  'admin.keySaved': 'API-ключи сохранены',
  'admin.oidcTitle': 'Единый вход (OIDC)',
  'admin.oidcSubtitle': 'Разрешить вход через внешних провайдеров, таких как Google, Apple, Authentik или Keycloak.',
  'admin.oidcDisplayName': 'Отображаемое имя',
  'admin.oidcIssuer': 'URL издателя',
  'admin.oidcIssuerHint': 'URL издателя OpenID Connect провайдера. Напр. https://accounts.google.com',
  'admin.oidcSaved': 'Конфигурация OIDC сохранена',
  'admin.oidcOnlyMode': 'Отключить вход по паролю',
  'admin.oidcOnlyModeHint': 'При включении разрешён только вход через SSO. Вход и регистрация по паролю будут заблокированы.',

  // File Types
  'admin.fileTypes': 'Разрешённые типы файлов',
  'admin.fileTypesHint': 'Настройте, какие типы файлов могут загружать пользователи.',
  'admin.fileTypesFormat': 'Расширения через запятую (напр. jpg,png,pdf,doc). Используйте * для разрешения всех типов.',
  'admin.fileTypesSaved': 'Настройки типов файлов сохранены',

  'admin.bagTracking.title': 'Отслеживание багажа',
  'admin.bagTracking.subtitle': 'Включить вес и привязку к багажу для вещей',
  'admin.tabs.config': 'Конфигурация',
  'admin.tabs.templates': 'Шаблоны упаковки',
  'admin.packingTemplates.title': 'Шаблоны упаковки',
  'admin.packingTemplates.subtitle': 'Создавайте многоразовые списки вещей для поездок',
  'admin.packingTemplates.create': 'Новый шаблон',
  'admin.packingTemplates.namePlaceholder': 'Название шаблона (напр. Пляжный отдых)',
  'admin.packingTemplates.empty': 'Шаблоны ещё не созданы',
  'admin.packingTemplates.items': 'вещей',
  'admin.packingTemplates.categories': 'категорий',
  'admin.packingTemplates.itemName': 'Название вещи',
  'admin.packingTemplates.itemCategory': 'Категория',
  'admin.packingTemplates.categoryName': 'Название категории (напр. Одежда)',
  'admin.packingTemplates.addCategory': 'Добавить категорию',
  'admin.packingTemplates.created': 'Шаблон создан',
  'admin.packingTemplates.deleted': 'Шаблон удалён',
  'admin.packingTemplates.loadError': 'Ошибка загрузки шаблонов',
  'admin.packingTemplates.createError': 'Ошибка создания шаблона',
  'admin.packingTemplates.deleteError': 'Ошибка удаления шаблона',
  'admin.packingTemplates.saveError': 'Ошибка сохранения',

  // Addons
  'admin.tabs.addons': 'Дополнения',
  'admin.addons.title': 'Дополнения',
  'admin.addons.subtitle': 'Включайте или отключайте функции для настройки TREK под себя.',
  'admin.addons.catalog.memories.name': 'Фото (Immich)',
  'admin.addons.catalog.memories.description': 'Делитесь фотографиями из поездок через Immich',
  'admin.addons.catalog.mcp.name': 'MCP',
  'admin.addons.catalog.mcp.description': 'Протокол контекста модели для интеграции с ИИ-ассистентами',
  'admin.addons.catalog.packing.name': 'Сборы',
  'admin.addons.catalog.packing.description': 'Чек-листы для подготовки багажа к каждой поездке',
  'admin.addons.catalog.budget.name': 'Бюджет',
  'admin.addons.catalog.budget.description': 'Отслеживайте расходы и планируйте бюджет поездки',
  'admin.addons.catalog.documents.name': 'Документы',
  'admin.addons.catalog.documents.description': 'Храните и управляйте документами для путешествий',
  'admin.addons.catalog.vacay.name': 'Vacay',
  'admin.addons.catalog.vacay.description': 'Личный планировщик отпусков с календарём',
  'admin.addons.catalog.atlas.name': 'Atlas',
  'admin.addons.catalog.atlas.description': 'Карта мира с посещёнными странами и статистикой путешествий',
  'admin.addons.catalog.collab.name': 'Collab',
  'admin.addons.catalog.collab.description': 'Заметки в реальном времени, опросы и чат для планирования поездок',
  'admin.addons.subtitleBefore': 'Включайте или отключайте функции для настройки ',
  'admin.addons.subtitleAfter': ' под себя.',
  'admin.addons.enabled': 'Включено',
  'admin.addons.disabled': 'Отключено',
  'admin.addons.type.trip': 'Поездка',
  'admin.addons.type.global': 'Глобально',
  'admin.addons.type.integration': 'Интеграция',
  'admin.addons.tripHint': 'Доступно как вкладка внутри каждой поездки',
  'admin.addons.globalHint': 'Доступно как отдельный раздел в основной навигации',
  'admin.addons.integrationHint': 'Фоновые сервисы и API-интеграции без отдельной страницы',
  'admin.addons.toast.updated': 'Дополнение обновлено',
  'admin.addons.toast.error': 'Не удалось обновить дополнение',
  'admin.addons.noAddons': 'Нет доступных дополнений',
  // Weather info
  'admin.weather.title': 'Данные о погоде',
  'admin.weather.badge': 'С 24 марта 2026',
  'admin.weather.description': 'TREK использует Open-Meteo как источник данных о погоде. Open-Meteo — бесплатный сервис с открытым кодом, API-ключ не требуется.',
  'admin.weather.forecast': 'Прогноз на 16 дней',
  'admin.weather.forecastDesc': 'Ранее 5 дней (OpenWeatherMap)',
  'admin.weather.climate': 'Исторические климатические данные',
  'admin.weather.climateDesc': 'Средние значения за последние 85 лет для дней за пределами 16-дневного прогноза',
  'admin.weather.requests': '10 000 запросов / день',
  'admin.weather.requestsDesc': 'Бесплатно, API-ключ не требуется',
  'admin.weather.locationHint': 'Погода основана на первом месте с координатами в каждом дне. Если ни одно место не назначено на день, в качестве ориентира используется любое место из списка.',

  // MCP Tokens
  'admin.tabs.mcpTokens': 'MCP-токены',
  'admin.mcpTokens.title': 'MCP-токены',
  'admin.mcpTokens.subtitle': 'Управление API-токенами всех пользователей',
  'admin.mcpTokens.owner': 'Владелец',
  'admin.mcpTokens.tokenName': 'Название токена',
  'admin.mcpTokens.created': 'Создан',
  'admin.mcpTokens.lastUsed': 'Последнее использование',
  'admin.mcpTokens.never': 'Никогда',
  'admin.mcpTokens.empty': 'MCP-токены ещё не созданы',
  'admin.mcpTokens.deleteTitle': 'Удалить токен',
  'admin.mcpTokens.deleteMessage': 'Токен будет немедленно отозван. Пользователь потеряет доступ к MCP через этот токен.',
  'admin.mcpTokens.deleteSuccess': 'Токен удалён',
  'admin.mcpTokens.deleteError': 'Не удалось удалить токен',
  'admin.mcpTokens.loadError': 'Не удалось загрузить токены',

  // GitHub
  'admin.tabs.github': 'GitHub',

  'admin.audit.subtitle': 'События, связанные с безопасностью и администрированием (резервные копии, пользователи, MFA, настройки).',
  'admin.audit.empty': 'Записей аудита пока нет.',
  'admin.audit.refresh': 'Обновить',
  'admin.audit.loadMore': 'Загрузить ещё',
  'admin.audit.showing': 'Загружено: {count} · всего {total}',
  'admin.audit.col.time': 'Время',
  'admin.audit.col.user': 'Пользователь',
  'admin.audit.col.action': 'Действие',
  'admin.audit.col.resource': 'Объект',
  'admin.audit.col.ip': 'IP',
  'admin.audit.col.details': 'Подробности',

  'admin.github.title': 'История релизов',
  'admin.github.subtitle': 'Последние обновления из {repo}',
  'admin.github.latest': 'Последний',
  'admin.github.prerelease': 'Пре-релиз',
  'admin.github.showDetails': 'Показать подробности',
  'admin.github.hideDetails': 'Скрыть подробности',
  'admin.github.loadMore': 'Загрузить ещё',
  'admin.github.loading': 'Загрузка...',
  'admin.github.support': 'Помогает продолжать разработку TREK',
  'admin.github.error': 'Не удалось загрузить релизы',
  'admin.github.by': 'от',

  'admin.update.available': 'Доступно обновление',
  'admin.update.text': 'Доступна версия TREK {version}. У вас установлена {current}.',
  'admin.update.button': 'Посмотреть на GitHub',
  'admin.update.install': 'Установить обновление',
  'admin.update.confirmTitle': 'Установить обновление?',
  'admin.update.confirmText': 'TREK будет обновлён с {current} до {version}. Сервер перезапустится автоматически.',
  'admin.update.dataInfo': 'Все ваши данные (поездки, пользователи, API-ключи, загрузки, Vacay, Atlas, бюджеты) будут сохранены.',
  'admin.update.warning': 'Приложение будет кратковременно недоступно во время перезапуска.',
  'admin.update.confirm': 'Обновить сейчас',
  'admin.update.installing': 'Обновление…',
  'admin.update.success': 'Обновление установлено! Сервер перезапускается…',
  'admin.update.failed': 'Ошибка обновления',
  'admin.update.backupHint': 'Рекомендуем создать резервную копию перед обновлением.',
  'admin.update.backupLink': 'Перейти к резервным копиям',
  'admin.update.howTo': 'Как обновить',
  'admin.update.dockerText': 'Ваш экземпляр TREK работает в Docker. Для обновления до {version} выполните следующие команды на сервере:',
  'admin.update.reloadHint': 'Перезагрузите страницу через несколько секунд.',

  // Vacay addon
  'vacay.subtitle': 'Планируйте и управляйте днями отпуска',
  'vacay.settings': 'Настройки',
  'vacay.year': 'Год',
  'vacay.addYear': 'Добавить год',
  'vacay.removeYear': 'Удалить год',
  'vacay.removeYearConfirm': 'Удалить {year}?',
  'vacay.removeYearHint': 'Все записи об отпуске и корпоративные выходные за этот год будут безвозвратно удалены.',
  'vacay.remove': 'Удалить',
  'vacay.persons': 'Люди',
  'vacay.noPersons': 'Никто не добавлен',
  'vacay.addPerson': 'Добавить человека',
  'vacay.editPerson': 'Редактировать',
  'vacay.removePerson': 'Удалить человека',
  'vacay.removePersonConfirm': 'Удалить {name}?',
  'vacay.removePersonHint': 'Все записи об отпуске этого человека будут безвозвратно удалены.',
  'vacay.personName': 'Имя',
  'vacay.personNamePlaceholder': 'Введите имя',
  'vacay.color': 'Цвет',
  'vacay.add': 'Добавить',
  'vacay.legend': 'Легенда',
  'vacay.publicHoliday': 'Государственный праздник',
  'vacay.companyHoliday': 'Корпоративный выходной',
  'vacay.weekend': 'Выходные',
  'vacay.modeVacation': 'Отпуск',
  'vacay.modeCompany': 'Корпоративный выходной',
  'vacay.entitlement': 'Право на отпуск',
  'vacay.entitlementDays': 'Дни',
  'vacay.used': 'Использовано',
  'vacay.remaining': 'Осталось',
  'vacay.carriedOver': 'из {year}',
  'vacay.blockWeekends': 'Блокировать выходные',
  'vacay.blockWeekendsHint': 'Запретить записи об отпуске в субботу и воскресенье',
  'vacay.weekendDays': 'Выходные дни',
  'vacay.mon': 'Пн',
  'vacay.tue': 'Вт',
  'vacay.wed': 'Ср',
  'vacay.thu': 'Чт',
  'vacay.fri': 'Пт',
  'vacay.sat': 'Сб',
  'vacay.sun': 'Вс',
  'vacay.publicHolidays': 'Государственные праздники',
  'vacay.publicHolidaysHint': 'Отмечать государственные праздники в календаре',
  'vacay.selectCountry': 'Выберите страну',
  'vacay.selectRegion': 'Выберите регион (необязательно)',
  'vacay.companyHolidays': 'Корпоративные выходные',
  'vacay.companyHolidaysHint': 'Разрешить отмечать корпоративные выходные дни',
  'vacay.companyHolidaysNoDeduct': 'Корпоративные выходные не вычитаются из дней отпуска.',
  'vacay.carryOver': 'Перенос',
  'vacay.carryOverHint': 'Автоматически переносить оставшиеся дни отпуска на следующий год',
  'vacay.sharing': 'Общий доступ',
  'vacay.sharingHint': 'Поделитесь планом отпуска с другими пользователями TREK',
  'vacay.owner': 'Владелец',
  'vacay.shareEmailPlaceholder': 'Эл. почта пользователя TREK',
  'vacay.shareSuccess': 'План успешно предоставлен',
  'vacay.shareError': 'Не удалось поделиться планом',
  'vacay.dissolve': 'Разделить объединение',
  'vacay.dissolveHint': 'Снова разделить календари. Ваши записи будут сохранены.',
  'vacay.dissolveAction': 'Разделить',
  'vacay.dissolved': 'Календарь разделён',
  'vacay.fusedWith': 'Объединён с',
  'vacay.you': 'вы',
  'vacay.noData': 'Нет данных',
  'vacay.changeColor': 'Изменить цвет',
  'vacay.inviteUser': 'Пригласить пользователя',
  'vacay.inviteHint': 'Пригласите другого пользователя TREK для совместного календаря отпусков.',
  'vacay.selectUser': 'Выберите пользователя',
  'vacay.sendInvite': 'Отправить приглашение',
  'vacay.inviteSent': 'Приглашение отправлено',
  'vacay.inviteError': 'Не удалось отправить приглашение',
  'vacay.pending': 'ожидание',
  'vacay.noUsersAvailable': 'Нет доступных пользователей',
  'vacay.accept': 'Принять',
  'vacay.decline': 'Отклонить',
  'vacay.acceptFusion': 'Принять и объединить',
  'vacay.inviteTitle': 'Запрос на объединение',
  'vacay.inviteWantsToFuse': 'хочет объединить календарь отпусков с вами.',
  'vacay.fuseInfo1': 'Вы оба будете видеть все записи об отпуске в одном общем календаре.',
  'vacay.fuseInfo2': 'Обе стороны могут создавать и редактировать записи друг для друга.',
  'vacay.fuseInfo3': 'Обе стороны могут удалять записи и изменять право на отпуск.',
  'vacay.fuseInfo4': 'Настройки, такие как праздники и корпоративные выходные, становятся общими.',
  'vacay.fuseInfo5': 'Объединение можно отменить в любое время любой из сторон. Ваши записи будут сохранены.',
  'vacay.addCalendar': 'Добавить календарь',
  'vacay.calendarColor': 'Цвет',
  'vacay.calendarLabel': 'Название',
  'vacay.noCalendars': 'Нет календарей',
  'nav.myTrips': 'Мои поездки',

  // Atlas addon
  'atlas.subtitle': 'Ваш след путешествий по всему миру',
  'atlas.countries': 'Страны',
  'atlas.trips': 'Поездки',
  'atlas.places': 'Места',
  'atlas.days': 'Дни',
  'atlas.visitedCountries': 'Посещённые страны',
  'atlas.cities': 'Города',
  'atlas.noData': 'Данных о поездках пока нет',
  'atlas.noDataHint': 'Создайте поездку и добавьте места, чтобы увидеть карту мира',
  'atlas.lastTrip': 'Последняя поездка',
  'atlas.nextTrip': 'Следующая поездка',
  'atlas.daysLeft': 'дней осталось',
  'atlas.streak': 'Серия',
  'atlas.year': 'год',
  'atlas.years': 'лет',
  'atlas.yearInRow': 'год подряд',
  'atlas.yearsInRow': 'лет подряд',
  'atlas.tripIn': 'поездка в',
  'atlas.tripsIn': 'поездок в',
  'atlas.since': 'с',
  'atlas.europe': 'Европа',
  'atlas.asia': 'Азия',
  'atlas.northAmerica': 'Сев. Америка',
  'atlas.southAmerica': 'Юж. Америка',
  'atlas.africa': 'Африка',
  'atlas.oceania': 'Океания',
  'atlas.other': 'Другое',
  'atlas.firstVisit': 'Первая поездка',
  'atlas.lastVisitLabel': 'Последняя поездка',
  'atlas.tripSingular': 'Поездка',
  'atlas.tripPlural': 'Поездки',
  'atlas.placeVisited': 'Посещённое место',
  'atlas.placesVisited': 'Посещённые места',
  'atlas.statsTab': 'Статистика',
  'atlas.bucketTab': 'Список желаний',
  'atlas.addBucket': 'Добавить в список желаний',
  'atlas.bucketNamePlaceholder': 'Место или направление...',
  'atlas.bucketNotesPlaceholder': 'Заметки (необязательно)',
  'atlas.bucketEmpty': 'Ваш список желаний пуст',
  'atlas.bucketEmptyHint': 'Добавьте места, которые мечтаете посетить',
  'atlas.unmark': 'Удалить',
  'atlas.confirmMark': 'Отметить эту страну как посещённую?',
  'atlas.confirmUnmark': 'Удалить эту страну из списка посещённых?',
  'atlas.markVisited': 'Отметить как посещённую',
  'atlas.markVisitedHint': 'Добавить эту страну в список посещённых',
  'atlas.addToBucket': 'В список желаний',
  'atlas.addPoi': 'Добавить место',
  'atlas.bucketNamePlaceholder': 'Название (страна, город, место…)',
  'atlas.month': 'Месяц',
  'atlas.year': 'Год',
  'atlas.addToBucketHint': 'Сохранить как место для посещения',
  'atlas.bucketWhen': 'Когда вы планируете поехать?',

  // Trip Planner
  'trip.tabs.plan': 'План',
  'trip.tabs.reservations': 'Бронирования',
  'trip.tabs.reservationsShort': 'Брони',
  'trip.tabs.packing': 'Список вещей',
  'trip.tabs.packingShort': 'Вещи',
  'trip.tabs.budget': 'Бюджет',
  'trip.tabs.files': 'Файлы',
  'trip.loading': 'Загрузка поездки...',
  'trip.mobilePlan': 'План',
  'trip.mobilePlaces': 'Места',
  'trip.toast.placeUpdated': 'Место обновлено',
  'trip.toast.placeAdded': 'Место добавлено',
  'trip.toast.placeDeleted': 'Место удалено',
  'trip.toast.selectDay': 'Сначала выберите день',
  'trip.toast.assignedToDay': 'Место назначено на день',
  'trip.toast.reorderError': 'Ошибка изменения порядка',
  'trip.toast.reservationUpdated': 'Бронирование обновлено',
  'trip.toast.reservationAdded': 'Бронирование добавлено',
  'trip.toast.deleted': 'Удалено',
  'trip.confirm.deletePlace': 'Вы уверены, что хотите удалить это место?',

  // Day Plan Sidebar
  'dayplan.emptyDay': 'На этот день мест не запланировано',
  'dayplan.addNote': 'Добавить заметку',
  'dayplan.editNote': 'Редактировать заметку',
  'dayplan.noteAdd': 'Добавить заметку',
  'dayplan.noteEdit': 'Редактировать заметку',
  'dayplan.noteTitle': 'Заметка',
  'dayplan.noteSubtitle': 'Заметка на день',
  'dayplan.totalCost': 'Общая стоимость',
  'dayplan.days': 'Дни',
  'dayplan.dayN': 'День {n}',
  'dayplan.calculating': 'Расчёт...',
  'dayplan.route': 'Маршрут',
  'dayplan.optimize': 'Оптимизировать',
  'dayplan.optimized': 'Маршрут оптимизирован',
  'dayplan.routeError': 'Не удалось рассчитать маршрут',
  'dayplan.toast.needTwoPlaces': 'Для оптимизации маршрута нужно минимум два места',
  'dayplan.toast.routeOptimized': 'Маршрут оптимизирован',
  'dayplan.toast.noGeoPlaces': 'Не найдено мест с координатами для расчёта маршрута',
  'dayplan.confirmed': 'Подтверждено',
  'dayplan.pendingRes': 'Ожидание',
  'dayplan.pdf': 'PDF',
  'dayplan.pdfTooltip': 'Экспортировать план дня в PDF',
  'dayplan.pdfError': 'Ошибка экспорта PDF',
  'dayplan.cannotReorderTransport': 'Бронирования с фиксированным временем нельзя перемещать',
  'dayplan.confirmRemoveTimeTitle': 'Удалить время?',
  'dayplan.confirmRemoveTimeBody': 'У этого места фиксированное время ({time}). При перемещении время будет удалено, и станет доступна свободная сортировка.',
  'dayplan.confirmRemoveTimeAction': 'Удалить время и переместить',
  'dayplan.cannotDropOnTimed': 'Элементы нельзя размещать между записями с фиксированным временем',
  'dayplan.cannotBreakChronology': 'Это нарушит хронологический порядок запланированных элементов и бронирований',

  // Places Sidebar
  'places.addPlace': 'Добавить место/активность',
  'places.importGpx': 'Импорт GPX',
  'places.gpxImported': '{count} мест импортировано из GPX',
  'places.gpxError': 'Ошибка импорта GPX',
  'places.urlResolved': 'Место импортировано из URL',
  'places.assignToDay': 'Добавить в какой день?',
  'places.all': 'Все',
  'places.unplanned': 'Незапланированные',
  'places.search': 'Поиск мест...',
  'places.allCategories': 'Все категории',
  'places.categoriesSelected': 'категорий',
  'places.clearFilter': 'Сбросить фильтр',
  'places.count': '{count} мест',
  'places.countSingular': '1 место',
  'places.allPlanned': 'Все места запланированы',
  'places.noneFound': 'Места не найдены',
  'places.editPlace': 'Редактировать место',
  'places.formName': 'Название',
  'places.formNamePlaceholder': 'напр. Эйфелева башня',
  'places.formDescription': 'Описание',
  'places.formDescriptionPlaceholder': 'Краткое описание...',
  'places.formAddress': 'Адрес',
  'places.formAddressPlaceholder': 'Улица, город, страна',
  'places.formLat': 'Широта (напр. 48.8566)',
  'places.formLng': 'Долгота (напр. 2.3522)',
  'places.formCategory': 'Категория',
  'places.noCategory': 'Без категории',
  'places.categoryNamePlaceholder': 'Название категории',
  'places.formTime': 'Время',
  'places.startTime': 'Начало',
  'places.endTime': 'Конец',
  'places.endTimeBeforeStart': 'Время окончания раньше времени начала',
  'places.timeCollision': 'Пересечение по времени с:',
  'places.formWebsite': 'Сайт',
  'places.formNotesPlaceholder': 'Личные заметки...',
  'places.formReservation': 'Бронирование',
  'places.reservationNotesPlaceholder': 'Заметки о бронировании, номер подтверждения...',
  'places.mapsSearchPlaceholder': 'Поиск мест...',
  'places.mapsSearchError': 'Ошибка поиска мест.',
  'places.osmHint': 'Поиск через OpenStreetMap (без фото, часов работы и рейтингов). Добавьте API-ключ Google в настройках для полной информации.',
  'places.osmActive': 'Поиск через OpenStreetMap (без фото, рейтингов и часов работы). Добавьте API-ключ Google в настройках для расширенных данных.',
  'places.categoryCreateError': 'Не удалось создать категорию',
  'places.nameRequired': 'Введите название',
  'places.saveError': 'Ошибка сохранения',
  // Place Inspector
  'inspector.opened': 'Открыто',
  'inspector.closed': 'Закрыто',
  'inspector.openingHours': 'Часы работы',
  'inspector.showHours': 'Показать часы работы',
  'inspector.files': 'Файлы',
  'inspector.filesCount': '{count} файлов',
  'inspector.removeFromDay': 'Убрать из дня',
  'inspector.addToDay': 'Добавить в день',
  'inspector.confirmedRes': 'Подтверждённое бронирование',
  'inspector.pendingRes': 'Ожидающее бронирование',
  'inspector.google': 'Открыть в Google Maps',
  'inspector.website': 'Открыть сайт',
  'inspector.addRes': 'Бронирование',
  'inspector.editRes': 'Редактировать бронирование',
  'inspector.participants': 'Участники',

  // Reservations
  'reservations.title': 'Бронирования',
  'reservations.empty': 'Пока нет бронирований',
  'reservations.emptyHint': 'Добавьте бронирования на авиабилеты, отели и другое',
  'reservations.add': 'Добавить бронирование',
  'reservations.addManual': 'Ручное бронирование',
  'reservations.placeHint': 'Совет: бронирования лучше создавать прямо из места, чтобы связать их с планом дня.',
  'reservations.confirmed': 'Подтверждено',
  'reservations.pending': 'Ожидание',
  'reservations.summary': '{confirmed} подтв., {pending} ожид.',
  'reservations.fromPlan': 'Из плана',
  'reservations.showFiles': 'Показать файлы',
  'reservations.editTitle': 'Редактировать бронирование',
  'reservations.status': 'Статус',
  'reservations.datetime': 'Дата и время',
  'reservations.startTime': 'Время начала',
  'reservations.endTime': 'Время окончания',
  'reservations.date': 'Дата',
  'reservations.time': 'Время',
  'reservations.timeAlt': 'Время (альтернативное, напр. 19:30)',
  'reservations.notes': 'Заметки',
  'reservations.notesPlaceholder': 'Дополнительные заметки...',
  'reservations.meta.airline': 'Авиакомпания',
  'reservations.meta.flightNumber': 'Номер рейса',
  'reservations.meta.from': 'Откуда',
  'reservations.meta.to': 'Куда',
  'reservations.meta.trainNumber': 'Номер поезда',
  'reservations.meta.platform': 'Платформа',
  'reservations.meta.seat': 'Место',
  'reservations.meta.checkIn': 'Заезд',
  'reservations.meta.checkOut': 'Выезд',
  'reservations.meta.linkAccommodation': 'Жильё',
  'reservations.meta.pickAccommodation': 'Привязать к жилью',
  'reservations.meta.noAccommodation': 'Нет',
  'reservations.meta.hotelPlace': 'Жильё',
  'reservations.meta.pickHotel': 'Выбрать жильё',
  'reservations.meta.fromDay': 'С',
  'reservations.meta.toDay': 'По',
  'reservations.meta.selectDay': 'Выбрать день',
  'reservations.type.flight': 'Авиабилет',
  'reservations.type.hotel': 'Жильё',
  'reservations.type.restaurant': 'Ресторан',
  'reservations.type.train': 'Поезд',
  'reservations.type.car': 'Аренда авто',
  'reservations.type.cruise': 'Круиз',
  'reservations.type.event': 'Мероприятие',
  'reservations.type.tour': 'Экскурсия',
  'reservations.type.other': 'Другое',
  'reservations.confirm.delete': 'Вы уверены, что хотите удалить бронирование «{name}»?',
  'reservations.confirm.deleteTitle': 'Удалить бронирование?',
  'reservations.confirm.deleteBody': '«{name}» будет удалено навсегда.',
  'reservations.toast.updated': 'Бронирование обновлено',
  'reservations.toast.removed': 'Бронирование удалено',
  'reservations.toast.fileUploaded': 'Файл загружен',
  'reservations.toast.uploadError': 'Ошибка загрузки',
  'reservations.newTitle': 'Новое бронирование',
  'reservations.bookingType': 'Тип бронирования',
  'reservations.titleLabel': 'Название',
  'reservations.titlePlaceholder': 'напр. Lufthansa LH123, Hotel Adlon, ...',
  'reservations.locationAddress': 'Местоположение / Адрес',
  'reservations.locationPlaceholder': 'Адрес, аэропорт, отель...',
  'reservations.confirmationCode': 'Код бронирования',
  'reservations.confirmationPlaceholder': 'напр. ABC12345',
  'reservations.day': 'День',
  'reservations.noDay': 'Без дня',
  'reservations.place': 'Место',
  'reservations.noPlace': 'Без места',
  'reservations.pendingSave': 'будет сохранено…',
  'reservations.uploading': 'Загрузка...',
  'reservations.attachFile': 'Прикрепить файл',
  'reservations.linkExisting': 'Привязать существующий файл',
  'reservations.toast.saveError': 'Ошибка сохранения',
  'reservations.toast.updateError': 'Ошибка обновления',
  'reservations.toast.deleteError': 'Ошибка удаления',
  'reservations.confirm.remove': 'Удалить бронирование для «{name}»?',
  'reservations.linkAssignment': 'Привязать к назначению дня',
  'reservations.pickAssignment': 'Выберите назначение из вашего плана...',
  'reservations.noAssignment': 'Без привязки (самостоятельное)',

  // Budget
  'budget.title': 'Бюджет',
  'budget.emptyTitle': 'Бюджет ещё не создан',
  'budget.emptyText': 'Создайте категории и записи для планирования бюджета поездки',
  'budget.emptyPlaceholder': 'Введите название категории...',
  'budget.createCategory': 'Создать категорию',
  'budget.category': 'Категория',
  'budget.categoryName': 'Название категории',
  'budget.table.name': 'Название',
  'budget.table.total': 'Итого',
  'budget.table.persons': 'Человек',
  'budget.table.days': 'Дней',
  'budget.table.perPerson': 'На человека',
  'budget.table.perDay': 'В день',
  'budget.table.perPersonDay': 'Чел. / день',
  'budget.table.note': 'Заметка',
  'budget.newEntry': 'Новая запись',
  'budget.defaultEntry': 'Новая запись',
  'budget.defaultCategory': 'Новая категория',
  'budget.total': 'Итого',
  'budget.totalBudget': 'Общий бюджет',
  'budget.byCategory': 'По категориям',
  'budget.editTooltip': 'Нажмите для редактирования',
  'budget.confirm.deleteCategory': 'Вы уверены, что хотите удалить категорию «{name}» с {count} записями?',
  'budget.deleteCategory': 'Удалить категорию',
  'budget.perPerson': 'На человека',
  'budget.paid': 'Оплачено',
  'budget.open': 'Не оплачено',
  'budget.noMembers': 'Участники не назначены',
  'budget.settlement': 'Взаиморасчёт',
  'budget.settlementInfo': 'Нажмите на аватар участника в строке бюджета, чтобы отметить его зелёным — это значит, что он заплатил. Взаиморасчёт покажет, кто кому и сколько должен.',
  'budget.netBalances': 'Чистые балансы',

  // Files
  'files.title': 'Файлы',
  'files.count': '{count} файлов',
  'files.countSingular': '1 файл',
  'files.uploaded': '{count} загружено',
  'files.uploadError': 'Ошибка загрузки',
  'files.dropzone': 'Перетащите файлы сюда',
  'files.dropzoneHint': 'или нажмите для выбора',
  'files.allowedTypes': 'Изображения, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV · Макс. 50 МБ',
  'files.uploading': 'Загрузка...',
  'files.filterAll': 'Все',
  'files.filterPdf': 'PDF',
  'files.filterImages': 'Изображения',
  'files.filterDocs': 'Документы',
  'files.filterCollab': 'Заметки Collab',
  'files.sourceCollab': 'Из заметок Collab',
  'files.empty': 'Файлов пока нет',
  'files.emptyHint': 'Загрузите файлы, чтобы прикрепить их к поездке',
  'files.openTab': 'Открыть в новой вкладке',
  'files.confirm.delete': 'Вы уверены, что хотите удалить этот файл?',
  'files.toast.deleted': 'Файл удалён',
  'files.toast.deleteError': 'Не удалось удалить файл',
  'files.sourcePlan': 'План дня',
  'files.sourceBooking': 'Бронирование',
  'files.attach': 'Прикрепить',
  'files.pasteHint': 'Также можно вставить изображения из буфера обмена (Ctrl+V)',
  'files.trash': 'Корзина',
  'files.trashEmpty': 'Корзина пуста',
  'files.emptyTrash': 'Очистить корзину',
  'files.restore': 'Восстановить',
  'files.star': 'В избранное',
  'files.unstar': 'Из избранного',
  'files.assign': 'Назначить',
  'files.assignTitle': 'Назначить файл',
  'files.assignPlace': 'Место',
  'files.assignBooking': 'Бронирование',
  'files.unassigned': 'Не назначен',
  'files.unlink': 'Удалить связь',
  'files.toast.trashed': 'Перемещено в корзину',
  'files.toast.restored': 'Файл восстановлен',
  'files.toast.trashEmptied': 'Корзина очищена',
  'files.toast.assigned': 'Файл назначен',
  'files.toast.assignError': 'Ошибка назначения',
  'files.toast.restoreError': 'Ошибка восстановления',
  'files.confirm.permanentDelete': 'Безвозвратно удалить этот файл? Это действие нельзя отменить.',
  'files.confirm.emptyTrash': 'Безвозвратно удалить все файлы из корзины? Это действие нельзя отменить.',
  'files.noteLabel': 'Заметка',
  'files.notePlaceholder': 'Добавить заметку...',

  // Packing
  'packing.title': 'Список вещей',
  'packing.empty': 'Список вещей пуст',
  'packing.import': 'Импорт',
  'packing.importTitle': 'Импорт списка вещей',
  'packing.importHint': 'Один предмет на строку. Категория и количество — через запятую, точку с запятой или табуляцию: Название, Категория, Количество',
  'packing.importPlaceholder': 'Зубная щётка\nСолнцезащитный крем, Гигиена\nФутболки, Одежда, 5\nПаспорт, Документы',
  'packing.importCsv': 'Загрузить CSV/TXT',
  'packing.importAction': 'Импортировать {count}',
  'packing.importSuccess': '{count} предметов импортировано',
  'packing.importError': 'Ошибка импорта',
  'packing.importEmpty': 'Нет предметов для импорта',
  'packing.progress': '{packed} из {total} собрано ({percent}%)',
  'packing.clearChecked': 'Удалить {count} отмеченных',
  'packing.clearCheckedShort': 'Удалить {count}',
  'packing.suggestions': 'Подсказки',
  'packing.suggestionsTitle': 'Добавить подсказки',
  'packing.allSuggested': 'Все подсказки добавлены',
  'packing.allPacked': 'Всё собрано!',
  'packing.addPlaceholder': 'Добавить вещь...',
  'packing.categoryPlaceholder': 'Категория...',
  'packing.filterAll': 'Все',
  'packing.filterOpen': 'Не собрано',
  'packing.filterDone': 'Собрано',
  'packing.emptyTitle': 'Список вещей пуст',
  'packing.emptyHint': 'Добавьте вещи или используйте подсказки',
  'packing.emptyFiltered': 'Нет вещей, соответствующих фильтру',
  'packing.menuRename': 'Переименовать',
  'packing.menuCheckAll': 'Отметить все',
  'packing.menuUncheckAll': 'Снять отметки',
  'packing.menuDeleteCat': 'Удалить категорию',
  'packing.addItem': 'Добавить вещь',
  'packing.addItemPlaceholder': 'Название...',
  'packing.addCategory': 'Добавить категорию',
  'packing.newCategoryPlaceholder': 'Название категории (напр. Одежда)',
  'packing.applyTemplate': 'Применить шаблон',
  'packing.template': 'Шаблон',
  'packing.templateApplied': '{count} вещей добавлено из шаблона',
  'packing.templateError': 'Ошибка применения шаблона',
  'packing.assignUser': 'Назначить пользователя',
  'packing.noMembers': 'Нет участников',
  'packing.bags': 'Багаж',
  'packing.noBag': 'Не назначено',
  'packing.totalWeight': 'Общий вес',
  'packing.bagName': 'Название...',
  'packing.addBag': 'Добавить багаж',
  'packing.changeCategory': 'Изменить категорию',
  'packing.confirm.clearChecked': 'Вы уверены, что хотите удалить {count} отмеченных вещей?',
  'packing.confirm.deleteCat': 'Вы уверены, что хотите удалить категорию «{name}» с {count} вещами?',
  'packing.defaultCategory': 'Другое',
  'packing.toast.saveError': 'Ошибка сохранения',
  'packing.toast.deleteError': 'Ошибка удаления',
  'packing.toast.renameError': 'Ошибка переименования',
  'packing.toast.addError': 'Ошибка добавления',

  // Packing suggestions
  'packing.suggestions.items': [
    { name: 'Паспорт', category: 'Документы' },
    { name: 'Удостоверение личности', category: 'Документы' },
    { name: 'Страховка', category: 'Документы' },
    { name: 'Авиабилеты', category: 'Документы' },
    { name: 'Банковская карта', category: 'Финансы' },
    { name: 'Наличные', category: 'Финансы' },
    { name: 'Виза', category: 'Документы' },
    { name: 'Футболки', category: 'Одежда' },
    { name: 'Брюки', category: 'Одежда' },
    { name: 'Нижнее бельё', category: 'Одежда' },
    { name: 'Носки', category: 'Одежда' },
    { name: 'Куртка', category: 'Одежда' },
    { name: 'Пижама', category: 'Одежда' },
    { name: 'Купальник', category: 'Одежда' },
    { name: 'Дождевик', category: 'Одежда' },
    { name: 'Удобная обувь', category: 'Одежда' },
    { name: 'Зубная щётка', category: 'Гигиена' },
    { name: 'Зубная паста', category: 'Гигиена' },
    { name: 'Шампунь', category: 'Гигиена' },
    { name: 'Дезодорант', category: 'Гигиена' },
    { name: 'Солнцезащитный крем', category: 'Гигиена' },
    { name: 'Бритва', category: 'Гигиена' },
    { name: 'Зарядное устройство', category: 'Электроника' },
    { name: 'Внешний аккумулятор', category: 'Электроника' },
    { name: 'Наушники', category: 'Электроника' },
    { name: 'Адаптер для розеток', category: 'Электроника' },
    { name: 'Фотоаппарат', category: 'Электроника' },
    { name: 'Обезболивающее', category: 'Здоровье' },
    { name: 'Пластыри', category: 'Здоровье' },
    { name: 'Антисептик', category: 'Здоровье' },
  ],

  // Members / Sharing
  'members.shareTrip': 'Поделиться поездкой',
  'members.inviteUser': 'Пригласить пользователя',
  'members.selectUser': 'Выберите пользователя…',
  'members.invite': 'Пригласить',
  'members.allHaveAccess': 'У всех пользователей уже есть доступ.',
  'members.access': 'Доступ',
  'members.person': 'человек',
  'members.persons': 'человек',
  'members.you': 'вы',
  'members.owner': 'Владелец',
  'members.leaveTrip': 'Покинуть поездку',
  'members.removeAccess': 'Отозвать доступ',
  'members.confirmLeave': 'Покинуть поездку? Вы потеряете доступ.',
  'members.confirmRemove': 'Отозвать доступ у этого пользователя?',
  'members.loadError': 'Не удалось загрузить участников',
  'members.added': 'добавлен',
  'members.addError': 'Ошибка добавления',
  'members.removed': 'Участник удалён',
  'members.removeError': 'Ошибка удаления',

  // Categories (Admin)
  'categories.title': 'Категории',
  'categories.subtitle': 'Управление категориями мест',
  'categories.new': 'Новая категория',
  'categories.empty': 'Категорий пока нет',
  'categories.namePlaceholder': 'Название категории',
  'categories.icon': 'Иконка',
  'categories.color': 'Цвет',
  'categories.customColor': 'Выбрать свой цвет',
  'categories.preview': 'Предпросмотр',
  'categories.defaultName': 'Категория',
  'categories.update': 'Обновить',
  'categories.create': 'Создать',
  'categories.confirm.delete': 'Удалить категорию? Места в этой категории не будут удалены.',
  'categories.toast.loadError': 'Не удалось загрузить категории',
  'categories.toast.nameRequired': 'Введите название',
  'categories.toast.updated': 'Категория обновлена',
  'categories.toast.created': 'Категория создана',
  'categories.toast.saveError': 'Ошибка сохранения',
  'categories.toast.deleted': 'Категория удалена',
  'categories.toast.deleteError': 'Ошибка удаления',

  // Backup (Admin)
  'backup.title': 'Резервная копия',
  'backup.subtitle': 'База данных и все загруженные файлы',
  'backup.refresh': 'Обновить',
  'backup.upload': 'Загрузить копию',
  'backup.uploading': 'Загрузка…',
  'backup.create': 'Создать копию',
  'backup.creating': 'Создание…',
  'backup.empty': 'Резервных копий нет',
  'backup.createFirst': 'Создать первую копию',
  'backup.download': 'Скачать',
  'backup.restore': 'Восстановить',
  'backup.confirm.restore': 'Восстановить копию «{name}»?\n\nВсе текущие данные будут заменены данными из копии.',
  'backup.confirm.uploadRestore': 'Загрузить и восстановить файл копии «{name}»?\n\nВсе текущие данные будут перезаписаны.',
  'backup.confirm.delete': 'Удалить копию «{name}»?',
  'backup.toast.loadError': 'Не удалось загрузить резервные копии',
  'backup.toast.created': 'Резервная копия создана',
  'backup.toast.createError': 'Не удалось создать резервную копию',
  'backup.toast.restored': 'Копия восстановлена. Страница перезагрузится…',
  'backup.toast.restoreError': 'Ошибка восстановления',
  'backup.toast.uploadError': 'Ошибка загрузки',
  'backup.toast.deleted': 'Резервная копия удалена',
  'backup.toast.deleteError': 'Ошибка удаления',
  'backup.toast.downloadError': 'Ошибка скачивания',
  'backup.toast.settingsSaved': 'Настройки автокопирования сохранены',
  'backup.toast.settingsError': 'Не удалось сохранить настройки',
  'backup.auto.title': 'Автокопирование',
  'backup.auto.subtitle': 'Автоматическое резервное копирование по расписанию',
  'backup.auto.enable': 'Включить автокопирование',
  'backup.auto.enableHint': 'Резервные копии будут создаваться автоматически по выбранному расписанию',
  'backup.auto.interval': 'Интервал',
  'backup.auto.hour': 'Запуск в час',
  'backup.auto.hourHint': 'Местное время сервера (формат {format})',
  'backup.auto.dayOfWeek': 'День недели',
  'backup.auto.dayOfMonth': 'День месяца',
  'backup.auto.dayOfMonthHint': 'Ограничено 1–28 для совместимости со всеми месяцами',
  'backup.auto.scheduleSummary': 'Расписание',
  'backup.auto.summaryDaily': 'Каждый день в {hour}:00',
  'backup.auto.summaryWeekly': 'Каждый {day} в {hour}:00',
  'backup.auto.summaryMonthly': '{day}-го числа каждого месяца в {hour}:00',
  'backup.auto.envLocked': 'Docker',
  'backup.auto.envLockedHint': 'Автокопирование настроено через переменные окружения Docker. Чтобы изменить параметры, обновите docker-compose.yml и перезапустите контейнер.',
  'backup.auto.copyEnv': 'Скопировать переменные окружения Docker',
  'backup.auto.envCopied': 'Переменные окружения Docker скопированы в буфер обмена',
  'backup.auto.keepLabel': 'Удалять старые копии через',
  'backup.dow.sunday': 'Вс',
  'backup.dow.monday': 'Пн',
  'backup.dow.tuesday': 'Вт',
  'backup.dow.wednesday': 'Ср',
  'backup.dow.thursday': 'Чт',
  'backup.dow.friday': 'Пт',
  'backup.dow.saturday': 'Сб',
  'backup.interval.hourly': 'Каждый час',
  'backup.interval.daily': 'Ежедневно',
  'backup.interval.weekly': 'Еженедельно',
  'backup.interval.monthly': 'Ежемесячно',
  'backup.keep.1day': '1 день',
  'backup.keep.3days': '3 дня',
  'backup.keep.7days': '7 дней',
  'backup.keep.14days': '14 дней',
  'backup.keep.30days': '30 дней',
  'backup.keep.forever': 'Хранить вечно',

  // Photos
  'photos.allDays': 'Все дни',
  'photos.noPhotos': 'Фото пока нет',
  'photos.uploadHint': 'Загрузите фото из путешествия',
  'photos.clickToSelect': 'или нажмите для выбора',
  'photos.linkPlace': 'Привязать место',
  'photos.noPlace': 'Без места',
  'photos.uploadN': '{n} фото загружено',

  // Backup restore modal
  'backup.restoreConfirmTitle': 'Восстановить копию?',
  'backup.restoreWarning': 'Все текущие данные (поездки, места, пользователи, загрузки) будут безвозвратно заменены данными из копии. Это действие нельзя отменить.',
  'backup.restoreTip': 'Совет: создайте резервную копию текущего состояния перед восстановлением.',
  'backup.restoreConfirm': 'Да, восстановить',

  // PDF
  'pdf.travelPlan': 'План поездки',
  'pdf.planned': 'Запланировано',
  'pdf.costLabel': 'Стоимость EUR',
  'pdf.preview': 'Предпросмотр PDF',
  'pdf.saveAsPdf': 'Сохранить как PDF',

  // Planner
  'planner.places': 'Места',
  'planner.bookings': 'Бронирования',
  'planner.packingList': 'Список вещей',
  'planner.documents': 'Документы',
  'planner.dayPlan': 'План дня',
  'planner.reservations': 'Бронирования',
  'planner.minTwoPlaces': 'Нужно минимум 2 места с координатами',
  'planner.noGeoPlaces': 'Нет мест с координатами',
  'planner.routeCalculated': 'Маршрут рассчитан',
  'planner.routeCalcFailed': 'Не удалось рассчитать маршрут',
  'planner.routeError': 'Ошибка расчёта маршрута',
  'planner.routeOptimized': 'Маршрут оптимизирован',
  'planner.reservationUpdated': 'Бронирование обновлено',
  'planner.reservationAdded': 'Бронирование добавлено',
  'planner.confirmDeleteReservation': 'Удалить бронирование?',
  'planner.reservationDeleted': 'Бронирование удалено',
  'planner.days': 'Дни',
  'planner.allPlaces': 'Все места',
  'planner.totalPlaces': 'Всего {n} мест',
  'planner.noDaysPlanned': 'Дни ещё не запланированы',
  'planner.editTrip': 'Редактировать поездку \u2192',
  'planner.placeOne': '1 место',
  'planner.placeN': '{n} мест',
  'planner.addNote': 'Добавить заметку',
  'planner.noEntries': 'На этот день записей нет',
  'planner.addPlace': 'Добавить место/активность',
  'planner.addPlaceShort': '+ Добавить место/активность',
  'planner.resPending': 'Бронирование ожидает · ',
  'planner.resConfirmed': 'Бронирование подтверждено · ',
  'planner.notePlaceholder': 'Заметка…',
  'planner.noteTimePlaceholder': 'Время (необязательно)',
  'planner.noteExamplePlaceholder': 'напр. S3 в 14:30 с вокзала, паром с причала 7, обеденный перерыв…',
  'planner.totalCost': 'Общая стоимость',
  'planner.searchPlaces': 'Поиск мест…',
  'planner.allCategories': 'Все категории',
  'planner.noPlacesFound': 'Места не найдены',
  'planner.addFirstPlace': 'Добавить первое место',
  'planner.noReservations': 'Нет бронирований',
  'planner.addFirstReservation': 'Добавить первое бронирование',
  'planner.new': 'Новое',
  'planner.addToDay': '+ День',
  'planner.calculating': 'Расчёт…',
  'planner.route': 'Маршрут',
  'planner.optimize': 'Оптимизировать',
  'planner.openGoogleMaps': 'Открыть в Google Maps',
  'planner.selectDayHint': 'Выберите день из списка слева для просмотра плана дня',
  'planner.noPlacesForDay': 'На этот день мест пока нет',
  'planner.addPlacesLink': 'Добавить места \u2192',
  'planner.minTotal': 'мин. всего',
  'planner.noReservation': 'Нет бронирования',
  'planner.removeFromDay': 'Убрать из дня',
  'planner.addToThisDay': 'Добавить в день',
  'planner.overview': 'Обзор',
  'planner.noDays': 'Дней нет',
  'planner.editTripToAddDays': 'Отредактируйте поездку для добавления дней',
  'planner.dayCount': '{n} дней',
  'planner.clickToUnlock': 'Нажмите для разблокировки',
  'planner.keepPosition': 'Сохранить позицию при оптимизации маршрута',
  'planner.dayDetails': 'Подробности дня',
  'planner.dayN': 'День {n}',

  // Dashboard Stats
  'stats.countries': 'Страны',
  'stats.cities': 'Города',
  'stats.trips': 'Поездки',
  'stats.places': 'Места',
  'stats.worldProgress': 'Прогресс по миру',
  'stats.visited': 'посещено',
  'stats.remaining': 'осталось',
  'stats.visitedCountries': 'Посещённые страны',

  // Day Detail Panel
  'day.precipProb': 'Вероятность осадков',
  'day.precipitation': 'Осадки',
  'day.wind': 'Ветер',
  'day.sunrise': 'Восход',
  'day.sunset': 'Закат',
  'day.hourlyForecast': 'Почасовой прогноз',
  'day.climateHint': 'Исторические средние — реальный прогноз доступен за 16 дней до этой даты.',
  'day.noWeather': 'Данные о погоде недоступны. Добавьте место с координатами.',
  'day.overview': 'Обзор дня',
  'day.accommodation': 'Жильё',
  'day.addAccommodation': 'Добавить жильё',
  'day.hotelDayRange': 'Применить к дням',
  'day.noPlacesForHotel': 'Сначала добавьте места в поездку',
  'day.allDays': 'Все',
  'day.checkIn': 'Заезд',
  'day.checkOut': 'Выезд',
  'day.confirmation': 'Подтверждение',
  'day.editAccommodation': 'Редактировать жильё',
  'day.reservations': 'Бронирования',

  // Memories / Immich
  'memories.title': 'Фото',
  'memories.notConnected': 'Immich не подключён',
  'memories.notConnectedHint': 'Подключите Immich в настройках, чтобы видеть фотографии из поездок.',
  'memories.noDates': 'Добавьте даты поездки для загрузки фотографий.',
  'memories.noPhotos': 'Фотографии не найдены',
  'memories.noPhotosHint': 'В Immich нет фотографий за период этой поездки.',
  'memories.photosFound': 'фото',
  'memories.fromOthers': 'от других',
  'memories.sharePhotos': 'Поделиться фото',
  'memories.sharing': 'Общий доступ',
  'memories.reviewTitle': 'Проверьте ваши фото',
  'memories.reviewHint': 'Нажмите на фото, чтобы исключить его из общего доступа.',
  'memories.shareCount': 'Поделиться ({count} фото)',
  'memories.immichUrl': 'URL сервера Immich',
  'memories.immichApiKey': 'API-ключ',
  'memories.testConnection': 'Проверить подключение',
  'memories.connected': 'Подключено',
  'memories.disconnected': 'Не подключено',
  'memories.connectionSuccess': 'Подключение к Immich установлено',
  'memories.connectionError': 'Не удалось подключиться к Immich',
  'memories.saved': 'Настройки Immich сохранены',
  'memories.oldest': 'Сначала старые',
  'memories.newest': 'Сначала новые',
  'memories.allLocations': 'Все места',
  'memories.addPhotos': 'Добавить фото',
  'memories.selectPhotos': 'Выбрать фото из Immich',
  'memories.selectHint': 'Нажмите на фото, чтобы выбрать их.',
  'memories.selected': 'выбрано',
  'memories.addSelected': 'Добавить {count} фото',
  'memories.alreadyAdded': 'Добавлено',
  'memories.private': 'Приватное',
  'memories.stopSharing': 'Прекратить доступ',
  'memories.tripDates': 'Даты поездки',
  'memories.allPhotos': 'Все фото',
  'memories.confirmShareTitle': 'Поделиться с участниками поездки?',
  'memories.confirmShareHint': '{count} фото станут видны всем участникам этой поездки. Вы сможете сделать отдельные фото приватными позже.',
  'memories.confirmShareButton': 'Поделиться фото',

  // Collab Addon
  'collab.tabs.chat': 'Чат',
  'collab.tabs.notes': 'Заметки',
  'collab.tabs.polls': 'Опросы',
  'collab.whatsNext.title': 'Что дальше',
  'collab.whatsNext.today': 'Сегодня',
  'collab.whatsNext.tomorrow': 'Завтра',
  'collab.whatsNext.empty': 'Нет предстоящих активностей',
  'collab.whatsNext.until': 'до',
  'collab.whatsNext.emptyHint': 'Активности со временем будут отображаться здесь',
  'collab.chat.send': 'Отправить',
  'collab.chat.placeholder': 'Введите сообщение...',
  'collab.chat.empty': 'Начните разговор',
  'collab.chat.emptyHint': 'Сообщения видны всем участникам поездки',
  'collab.chat.emptyDesc': 'Делитесь идеями, планами и новостями с вашей группой',
  'collab.chat.today': 'Сегодня',
  'collab.chat.yesterday': 'Вчера',
  'collab.chat.deletedMessage': 'удалил(а) сообщение',
  'collab.chat.loadMore': 'Загрузить старые сообщения',
  'collab.chat.justNow': 'только что',
  'collab.chat.minutesAgo': '{n} мин. назад',
  'collab.chat.hoursAgo': '{n} ч. назад',
  'collab.notes.title': 'Заметки',
  'collab.notes.new': 'Новая заметка',
  'collab.notes.empty': 'Заметок пока нет',
  'collab.notes.emptyHint': 'Начните записывать идеи и планы',
  'collab.notes.all': 'Все',
  'collab.notes.titlePlaceholder': 'Название заметки',
  'collab.notes.contentPlaceholder': 'Напишите что-нибудь...',
  'collab.notes.categoryPlaceholder': 'Категория',
  'collab.notes.newCategory': 'Новая категория...',
  'collab.notes.category': 'Категория',
  'collab.notes.noCategory': 'Без категории',
  'collab.notes.color': 'Цвет',
  'collab.notes.save': 'Сохранить',
  'collab.notes.cancel': 'Отмена',
  'collab.notes.edit': 'Редактировать',
  'collab.notes.delete': 'Удалить',
  'collab.notes.pin': 'Закрепить',
  'collab.notes.unpin': 'Открепить',
  'collab.notes.daysAgo': '{n} дн. назад',
  'collab.notes.categorySettings': 'Управление категориями',
  'collab.notes.create': 'Создать',
  'collab.notes.website': 'Сайт',
  'collab.notes.websitePlaceholder': 'https://...',
  'collab.notes.attachFiles': 'Прикрепить файлы',
  'collab.notes.noCategoriesYet': 'Категорий пока нет',
  'collab.notes.emptyDesc': 'Создайте заметку, чтобы начать',
  'collab.polls.title': 'Опросы',
  'collab.polls.new': 'Новый опрос',
  'collab.polls.empty': 'Опросов пока нет',
  'collab.polls.emptyHint': 'Задайте вопрос группе и голосуйте вместе',
  'collab.polls.question': 'Вопрос',
  'collab.polls.questionPlaceholder': 'Что нам делать?',
  'collab.polls.addOption': '+ Добавить вариант',
  'collab.polls.optionPlaceholder': 'Вариант {n}',
  'collab.polls.create': 'Создать опрос',
  'collab.polls.close': 'Закрыть',
  'collab.polls.closed': 'Закрыт',
  'collab.polls.votes': '{n} голосов',
  'collab.polls.vote': '{n} голос',
  'collab.polls.multipleChoice': 'Множественный выбор',
  'collab.polls.multiChoice': 'Множественный выбор',
  'collab.polls.deadline': 'Срок',
  'collab.polls.option': 'Вариант',
  'collab.polls.options': 'Варианты',
  'collab.polls.delete': 'Удалить',
  'collab.polls.closedSection': 'Закрытые',
}

export default ru
