Files
TREK/client/src/i18n/translations/ru.ts
Maurice 1aea2fcee8 Merge pull request #361 from lucaam/add_span_days_feature
Support multi-day spanning for reservations
2026-04-04 13:58:16 +02:00

1568 lines
104 KiB
TypeScript
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.
const ru: Record<string, string> = {
// Common
'common.save': 'Сохранить',
'common.cancel': 'Отмена',
'common.delete': 'Удалить',
'common.edit': 'Редактировать',
'common.add': 'Добавить',
'common.loading': 'Загрузка...',
'common.import': 'Импорт',
'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.saved': 'Сохранено',
'trips.reminder': 'Напоминание',
'trips.reminderNone': 'Нет',
'trips.reminderDay': 'день',
'trips.reminderDays': 'дней',
'trips.reminderCustom': 'Другое',
'trips.reminderDaysBefore': 'дней до отъезда',
'trips.reminderDisabledHint': 'Напоминания о поездках отключены. Включите их в Админ > Настройки > Уведомления.',
'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.members': 'Попутчики',
'dashboard.archive': 'Архивировать',
'dashboard.copyTrip': 'Копировать',
'dashboard.copySuffix': 'копия',
'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.toast.copied': 'Поездка скопирована!',
'dashboard.toast.copyError': 'Не удалось скопировать поездку',
'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-уведомления',
'settings.notificationsDisabled': 'Уведомления не настроены. Попросите администратора включить уведомления по электронной почте или webhook.',
'settings.notificationsActive': 'Активный канал',
'settings.notificationsManagedByAdmin': 'События уведомлений настраиваются администратором.',
'admin.notifications.title': 'Уведомления',
'admin.notifications.hint': 'Выберите канал уведомлений. Одновременно может быть активен только один.',
'admin.notifications.none': 'Отключено',
'admin.notifications.email': 'Эл. почта (SMTP)',
'admin.notifications.webhook': 'Webhook',
'admin.notifications.events': 'События уведомлений',
'admin.notifications.eventsHint': 'Выберите, какие события вызывают уведомления для всех пользователей.',
'admin.notifications.configureFirst': 'Сначала настройте SMTP или webhook ниже, затем включите события.',
'admin.notifications.save': 'Сохранить настройки уведомлений',
'admin.notifications.saved': 'Настройки уведомлений сохранены',
'admin.notifications.testWebhook': 'Отправить тестовый вебхук',
'admin.notifications.testWebhookSuccess': 'Тестовый вебхук успешно отправлен',
'admin.notifications.testWebhookFailed': 'Ошибка отправки тестового вебхука',
'admin.smtp.title': 'Почта и уведомления',
'admin.smtp.hint': 'Конфигурация SMTP для отправки уведомлений по электронной почте.',
'admin.smtp.testButton': 'Отправить тестовое письмо',
'admin.webhook.hint': 'Отправлять уведомления через внешний webhook (Discord, Slack и т.д.).',
'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.about': 'О приложении',
'settings.username': 'Имя пользователя',
'settings.email': 'Эл. почта',
'settings.role': 'Роль',
'settings.roleAdmin': 'Администратор',
'settings.oidcLinked': 'Связан с',
'settings.changePassword': 'Изменить пароль',
'settings.mustChangePassword': 'Вы должны сменить пароль перед продолжением. Пожалуйста, установите новый пароль ниже.',
'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.setNewPassword': 'Установить новый пароль',
'login.setNewPasswordHint': 'Вы должны сменить пароль, прежде чем продолжить.',
'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': 'Пароль должен содержать не менее 8 символов',
'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.addPrevYear': 'Добавить предыдущий год',
'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.searchCountry': 'Поиск страны...',
'atlas.month': 'Месяц',
'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.loadingPhotos': 'Загрузка фото мест...',
'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.importGoogleList': 'Список Google',
'places.googleListHint': 'Вставьте ссылку на общий список Google Maps для импорта всех мест.',
'places.googleListImported': '{count} мест импортировано из "{list}"',
'places.googleListError': 'Не удалось импортировать список Google Maps',
'places.viewDetails': 'Подробности',
'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': 'Участники',
'inspector.trackStats': 'Данные маршрута',
// 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': 'Без привязки (самостоятельное)',
'reservations.departureDate': 'Вылет',
'reservations.arrivalDate': 'Прилёт',
'reservations.departureTime': 'Время вылета',
'reservations.arrivalTime': 'Время прилёта',
'reservations.pickupDate': 'Получение',
'reservations.returnDate': 'Возврат',
'reservations.pickupTime': 'Время получения',
'reservations.returnTime': 'Время возврата',
'reservations.endDate': 'Дата окончания',
'reservations.meta.departureTimezone': 'TZ вылета',
'reservations.meta.arrivalTimezone': 'TZ прилёта',
'reservations.span.departure': 'Вылет',
'reservations.span.arrival': 'Прилёт',
'reservations.span.inTransit': 'В пути',
'reservations.span.pickup': 'Получение',
'reservations.span.return': 'Возврат',
'reservations.span.active': 'Активно',
'reservations.span.start': 'Начало',
'reservations.span.end': 'Конец',
'reservations.span.ongoing': 'Продолжается',
'reservations.validation.endBeforeStart': 'Дата/время окончания должны быть позже даты/времени начала',
// Budget
'budget.title': 'Бюджет',
'budget.exportCsv': 'Экспорт CSV',
'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.table.date': 'Дата',
'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': 'Ограничено 128 для совместимости со всеми месяцами',
'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.testFirst': 'Сначала проверьте подключение',
'memories.connected': 'Подключено',
'memories.disconnected': 'Не подключено',
'memories.connectionSuccess': 'Подключение к Immich установлено',
'memories.connectionError': 'Не удалось подключиться к Immich',
'memories.saved': 'Настройки Immich сохранены',
'memories.oldest': 'Сначала старые',
'memories.newest': 'Сначала новые',
'memories.allLocations': 'Все места',
'memories.addPhotos': 'Добавить фото',
'memories.linkAlbum': 'Привязать альбом',
'memories.selectAlbum': 'Выбрать альбом Immich',
'memories.noAlbums': 'Альбомы не найдены',
'memories.syncAlbum': 'Синхронизировать',
'memories.unlinkAlbum': 'Отвязать',
'memories.photos': 'фото',
'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.reply': 'Ответить',
'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': 'Закрытые',
// Permissions
'admin.tabs.permissions': 'Разрешения',
'perm.title': 'Настройки разрешений',
'perm.subtitle': 'Управляйте тем, кто может выполнять действия в приложении',
'perm.saved': 'Настройки разрешений сохранены',
'perm.resetDefaults': 'Сбросить по умолчанию',
'perm.customized': 'изменено',
'perm.level.admin': 'Только администратор',
'perm.level.tripOwner': 'Владелец поездки',
'perm.level.tripMember': 'Участники поездки',
'perm.level.everybody': 'Все',
'perm.cat.trip': 'Управление поездками',
'perm.cat.members': 'Управление участниками',
'perm.cat.files': 'Файлы',
'perm.cat.content': 'Контент и расписание',
'perm.cat.extras': 'Бюджет, сборы и совместная работа',
'perm.action.trip_create': 'Создавать поездки',
'perm.action.trip_edit': 'Редактировать детали поездки',
'perm.action.trip_delete': 'Удалять поездки',
'perm.action.trip_archive': 'Архивировать / разархивировать поездки',
'perm.action.trip_cover_upload': 'Загружать обложку',
'perm.action.member_manage': 'Добавлять / удалять участников',
'perm.action.file_upload': 'Загружать файлы',
'perm.action.file_edit': 'Редактировать метаданные файлов',
'perm.action.file_delete': 'Удалять файлы',
'perm.action.place_edit': 'Добавлять / редактировать / удалять места',
'perm.action.day_edit': 'Редактировать дни, заметки и назначения',
'perm.action.reservation_edit': 'Управлять бронированиями',
'perm.action.budget_edit': 'Управлять бюджетом',
'perm.action.packing_edit': 'Управлять списками вещей',
'perm.action.collab_edit': 'Совместная работа (заметки, опросы, чат)',
'perm.action.share_manage': 'Управлять ссылками для обмена',
'perm.actionHint.trip_create': 'Кто может создавать новые поездки',
'perm.actionHint.trip_edit': 'Кто может менять название, даты, описание и валюту поездки',
'perm.actionHint.trip_delete': 'Кто может безвозвратно удалить поездку',
'perm.actionHint.trip_archive': 'Кто может архивировать или разархивировать поездку',
'perm.actionHint.trip_cover_upload': 'Кто может загружать или менять обложку',
'perm.actionHint.member_manage': 'Кто может приглашать или удалять участников поездки',
'perm.actionHint.file_upload': 'Кто может загружать файлы в поездку',
'perm.actionHint.file_edit': 'Кто может редактировать описания и ссылки файлов',
'perm.actionHint.file_delete': 'Кто может перемещать файлы в корзину или безвозвратно удалять',
'perm.actionHint.place_edit': 'Кто может добавлять, редактировать или удалять места',
'perm.actionHint.day_edit': 'Кто может редактировать дни, заметки к дням и назначения мест',
'perm.actionHint.reservation_edit': 'Кто может создавать, редактировать или удалять бронирования',
'perm.actionHint.budget_edit': 'Кто может создавать, редактировать или удалять статьи бюджета',
'perm.actionHint.packing_edit': 'Кто может управлять вещами для сборов и сумками',
'perm.actionHint.collab_edit': 'Кто может создавать заметки, опросы и отправлять сообщения',
'perm.actionHint.share_manage': 'Кто может создавать или удалять публичные ссылки для обмена',
// Undo
'undo.button': 'Отменить',
'undo.tooltip': 'Отменить: {action}',
'undo.assignPlace': 'Место добавлено в день',
'undo.removeAssignment': 'Место удалено из дня',
'undo.reorder': 'Места переупорядочены',
'undo.optimize': 'Маршрут оптимизирован',
'undo.deletePlace': 'Место удалено',
'undo.moveDay': 'Место перемещено в другой день',
'undo.lock': 'Блокировка места изменена',
'undo.importGpx': 'Импорт GPX',
'undo.importGoogleList': 'Импорт из Google Maps',
// Notifications
'notifications.title': 'Уведомления',
'notifications.markAllRead': 'Отметить все прочитанными',
'notifications.deleteAll': 'Удалить все',
'notifications.showAll': 'Показать все уведомления',
'notifications.empty': 'Нет уведомлений',
'notifications.emptyDescription': 'Вы в курсе всех событий!',
'notifications.all': 'Все',
'notifications.unreadOnly': 'Непрочитанные',
'notifications.markRead': 'Отметить как прочитанное',
'notifications.markUnread': 'Отметить как непрочитанное',
'notifications.delete': 'Удалить',
'notifications.system': 'Система',
'memories.error.loadAlbums': 'Не удалось загрузить альбомы',
'memories.error.linkAlbum': 'Не удалось привязать альбом',
'memories.error.unlinkAlbum': 'Не удалось отвязать альбом',
'memories.error.syncAlbum': 'Не удалось синхронизировать альбом',
'memories.error.loadPhotos': 'Не удалось загрузить фотографии',
'memories.error.addPhotos': 'Не удалось добавить фотографии',
'memories.error.removePhoto': 'Не удалось удалить фотографию',
'memories.error.toggleSharing': 'Не удалось обновить настройки доступа',
'undo.addPlace': 'Место добавлено',
'undo.done': 'Отменено: {action}',
'notifications.test.title': 'Тестовое уведомление от {actor}',
'notifications.test.text': 'Это простое тестовое уведомление.',
'notifications.test.booleanTitle': '{actor} запрашивает подтверждение',
'notifications.test.booleanText': 'Тестовое уведомление с выбором.',
'notifications.test.accept': 'Подтвердить',
'notifications.test.decline': 'Отклонить',
'notifications.test.navigateTitle': 'Посмотрите на это',
'notifications.test.navigateText': 'Тестовое уведомление с переходом.',
'notifications.test.goThere': 'Перейти',
'notifications.test.adminTitle': 'Рассылка администратора',
'notifications.test.adminText': '{actor} отправил тестовое уведомление всем администраторам.',
'notifications.test.tripTitle': '{actor} написал в вашей поездке',
'notifications.test.tripText': 'Тестовое уведомление для поездки "{trip}".',
}
export default ru