Files
TREK/shared/src/i18n/ru/admin.ts
T
Maurice 1e2ba0f842 feat(i18n): the paddle portage, time, wind, obstacle and region strings in every language
The strings of the paddle plan, the time estimate, the wind card, the obstacle card and notice and the admin's paddle water data, translated into the 25 locales that still lacked them, with the plural forms each language needs. The pinned count of Tours keys follows.
2026-10-16 23:22:09 +00:00

924 lines
90 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.
import type { TranslationStrings } from '../types';
const admin: TranslationStrings = {
'admin.notifications.title': 'Уведомления',
'admin.notifications.hint': 'Выберите канал уведомлений. Одновременно может быть активен только один.',
'admin.notifications.none': 'Отключено',
'admin.notifications.email': 'Эл. почта (SMTP)',
'admin.notifications.webhook': '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': 'Ошибка отправки тестового письма',
'admin.title': 'Администрирование',
'admin.subtitle': 'Управление пользователями и системные настройки',
'admin.tabs.users': 'Пользователи',
'admin.tabs.categories': 'Категории',
'admin.tabs.backup': 'Резервная копия',
'admin.tabs.audit': 'Аудит',
'admin.stats.users': 'Пользователя',
'admin.stats.users.one': 'Пользователь',
'admin.stats.users.few': 'Пользователя',
'admin.stats.users.many': 'Пользователей',
'admin.stats.trips': 'Поездки',
'admin.stats.trips.one': 'Поездка',
'admin.stats.trips.few': 'Поездки',
'admin.stats.trips.many': 'Поездок',
'admin.stats.places': 'Места',
'admin.stats.places.one': 'Место',
'admin.stats.places.few': 'Места',
'admin.stats.places.many': 'Мест',
'admin.stats.photos': 'Фото',
'admin.stats.files': 'Файла',
'admin.stats.files.one': 'Файл',
'admin.stats.files.few': 'Файла',
'admin.stats.files.many': 'Файлов',
'admin.table.user': 'Пользователь',
'admin.table.email': 'Эл. почта',
'admin.table.role': 'Роль',
'admin.table.created': 'Создан',
'admin.table.lastActive': 'Последняя активность',
'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.authMethods': 'Authentication Methods',
'admin.passwordLogin': 'Password Login',
'admin.passwordLoginHint': 'Allow users to sign in with email and password',
'admin.passwordRegistration': 'Password Registration',
'admin.passwordRegistrationHint': 'Allow new users to register with email and password',
'admin.oidcLogin': 'SSO Login',
'admin.oidcLoginHint': 'Allow users to sign in with SSO',
'admin.oidcRegistration': 'SSO Auto-Provisioning',
'admin.oidcRegistrationHint': 'Automatically create accounts for new SSO users',
'admin.envOverrideHint':
'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.',
'admin.lockoutWarning': 'At least one login method must remain enabled',
'admin.requireMfa': 'Требовать двухфакторную аутентификацию (2FA)',
'admin.requireMfaHint':
'Пользователи без 2FA должны завершить настройку в разделе «Настройки» перед использованием приложения.',
'admin.apiKeys': 'API-ключи',
'admin.apiKeysHint':
'Откуда берутся данные о местах. Указателю TREK ключ не нужен; два поставщика ниже необязательны.',
'admin.trekApi.badgeDefault': 'Рекомендуемый источник',
'admin.googleCaveat.badge': 'Не рекомендуется',
'admin.googleCaveat.body':
'TREK с открытым исходным кодом, и мы здесь не нейтральны. В таком масштабе отзывы и фотографии обычных заведений есть только у Google, и это и есть монополия. Поле здесь из-за отсутствия альтернативы, а не потому, что мы его советуем. Тогда каждый запрос уходит в Google.',
'admin.trekApi.tagline':
'Собственный указатель мест TREK. Поиск без ключа Google, без квоты и без того, чтобы кто-то считал ваши запросы.',
'admin.trekApi.factPlaces': '73,6 миллиона мест по всему миру',
'admin.trekApi.factNoKey': 'Без ключа, без квоты',
'admin.trekApi.factOffline': 'Страновые пакеты работают офлайн',
'admin.trekApi.factPrivacy': 'Запросы никогда не записываются',
'admin.trekApi.more': 'Что внутри',
'admin.trekApi.fieldPhone': 'Телефон',
'admin.trekApi.fieldStableId': 'Постоянный идентификатор',
'admin.trekApi.includedNote':
'Описания берутся с сайта самого места, часы работы — из OpenStreetMap там, где они указаны.',
'admin.trekApi.notRatings': 'Отзывы',
'admin.trekApi.notPhotos': 'Фотографии обычных заведений',
'admin.trekApi.notIncludedNote':
'Ни того, ни другого нет ни в одном открытом источнике ни за какие деньги. К этим двум ключ Google остаётся единственной дорогой.',
'admin.trekApi.sourcesLabel': 'Источники',
'admin.trekApi.sourcesNote': 'Каждое поле в ответе указывает, из какого из них оно пришло.',
'admin.trekApi.included': 'Входит',
'admin.trekApi.notIncluded': 'Не входит',
'admin.mapsKey': 'API-ключ Google Maps',
'admin.mapsKeyHint': 'Необходим для поиска мест. Получите на console.cloud.google.com',
'admin.mapsKeyHintLong':
'Без ключа Google API используется рекомендуемый TREK API. С ключом дополнительно загружаются фотографии, оценки и часы работы. Создать ключ можно на console.cloud.google.com.',
'admin.recommended': 'Рекомендуется',
'admin.weatherKey': 'API-ключ OpenWeatherMap',
'admin.weatherKeyHint': 'Для данных о погоде. Бесплатно на openweathermap.org',
'admin.unsplashKey': 'Ключ API Unsplash',
'admin.unsplashKeyHint': 'Для поиска изображений. Бесплатно на unsplash.com/developers',
'admin.amapKey': 'API-ключ Amap (高德地图)',
'admin.amapKeyHint':
'Для поиска мест в континентальном Китае, где Google недоступен, а данных OpenStreetMap мало. Нужен ключ типа «Web 服务» (веб-сервис), а не ключ JS API. Получить можно на console.amap.com.',
'admin.keyFromEnv': 'Задан через {name}',
'admin.placesProvider.title': 'Провайдер поиска мест',
'admin.placesProvider.subtitle':
'Собственный индекс TREK и OpenStreetMap отвечают на каждый поиск. Здесь выбирается, кого спросить дополнительно, если они ничего не нашли: «Автоматически» предпочитает Google при наличии ключа, затем Amap.',
'admin.placesProvider.auto': 'Автоматически',
'admin.placesProvider.google': 'Google Places',
'admin.placesProvider.amap': 'Amap (高德地图)',
'admin.placesProvider.openstreetmap': 'OpenStreetMap',
'admin.placesProvider.missingKey':
'Для выбранного поставщика не задан ключ API, поэтому на поиск мест отвечают только индекс TREK и OpenStreetMap.',
'admin.placesProvider.saved': 'Провайдер поиска мест сохранён',
'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. Вход и регистрация по паролю будут заблокированы.',
'admin.fileTypes': 'Разрешённые типы файлов',
'admin.fileTypesHint': 'Настройте, какие типы файлов могут загружать пользователи.',
'admin.fileTypesFormat': 'Расширения через запятую (напр. jpg,png,pdf,doc). Используйте * для разрешения всех типов.',
'admin.fileTypesSaved': 'Настройки типов файлов сохранены',
'admin.googleOptions': 'Для чего используется ключ',
'admin.googleOptionsSummary': 'включено {on} из {total}',
'admin.placesPhotos.title': 'Фотографии мест',
'admin.placesPhotos.subtitle':
'Загрузка фотографий из Google Places API. Отключите для экономии квоты API. Фотографии Wikimedia не затронуты.',
'admin.placesAutocomplete.title': 'Автодополнение мест',
'admin.placesAutocomplete.subtitle':
'Использование Google Places API для поисковых подсказок. Отключите для экономии квоты API.',
'admin.placesDetails.title': 'Сведения о месте',
'admin.placesDetails.subtitle':
'Загрузка подробной информации о месте (часы работы, рейтинг, веб-сайт) из Google Places API. Отключите для экономии квоты API.',
'admin.placesEnrich.title': 'Обогащение мест',
'admin.placesEnrich.subtitle':
'Показывает изображения и описание при добавлении места. Wikipedia и OpenStreetMap используются всегда; Google добавляется, если включены «Фото мест» или «Детали мест».',
'admin.placesGoogleOnly.title': 'Искать только через Google',
'admin.placesGoogleOnly.subtitle':
'Каждый поиск и каждая подсказка идут в Google Places. Выключено: сначала отвечают индекс TREK и OpenStreetMap, Google спрашивается, только если они ничего не нашли.',
'admin.placesGoogleOnly.missingKey':
'Нужен ключ Google Maps API. Без него поиск идёт через индекс TREK и OpenStreetMap независимо от этого переключателя.',
'admin.placesGoogleOnly.otherProvider':
'Требуется Google как провайдер мест. Если выбран Amap или OpenStreetMap, ни один поиск не уходит в Google, как бы ни стоял этот переключатель.',
'admin.googleQuota.title': 'Дневной лимит запросов к Google',
'admin.googleQuota.subtitle':
'Когда лимит исчерпан, TREK не обращается к Google до следующего дня (UTC) и ищет через OpenStreetMap. Пусто означает без лимита.',
'admin.googleQuota.placeholder': 'Без лимита',
'admin.googleQuota.usedToday': 'Сегодня: {used}',
'admin.googleQuota.usedOfLimit': 'Сегодня: {used} из {limit}',
'admin.googleQuota.reached': 'Лимит исчерпан ({used}), Google приостановлен до завтра',
'admin.googleQuota.saved': 'Дневной лимит сохранён',
'admin.transitProvider.title': 'Поставщик общественного транспорта',
'admin.transitProvider.subtitle': 'Какая служба отвечает на поиск общественного транспорта.',
'admin.transitProvider.transitous': 'Transitous (бесплатно)',
'admin.transitProvider.google': 'Google',
'admin.transitProvider.transitousHint': 'GTFS-фиды сообщества. Бесплатно и без ключа, с лучшим покрытием в Европе.',
'admin.transitProvider.googleHint':
'Использует указанный выше ключ Google для регионов, по которым у Transitous нет данных. Оплачивается за каждый поиск — пока ключ не задан, используется Transitous.',
'admin.transitProvider.noKeyWarning':
'Выбран Google, но ключ Google не настроен — поиск транспорта по-прежнему использует Transitous. Добавьте ключ в разделе «Ключи API» выше.',
'admin.transitProvider.personalKeyWarning':
'Задан только ваш собственный ключ Google, поэтому поиск других участников по-прежнему возвращается к Transitous. Сохраните ключ выше от имени администратора, чтобы он действовал для всей установки.',
'admin.placeShadow.title': 'Журнал поиска мест',
'admin.placeShadow.subtitle':
'Записывать, какой результат поиска был выбран, чтобы позже оценить другой индекс мест на реальных запросах. Ничего не покидает этот сервер, и администратор может в любой момент выгрузить или удалить журнал.',
'admin.bagTracking.title': 'Отслеживание багажа',
'admin.bagTracking.subtitle': 'Включить вес и привязку к багажу для вещей',
'admin.collab.chat.title': 'Чат',
'admin.collab.chat.subtitle': 'Обмен сообщениями для совместной работы',
'admin.collab.notes.title': 'Заметки',
'admin.collab.notes.subtitle': 'Общие заметки и документы',
'admin.collab.polls.title': 'Опросы',
'admin.collab.polls.subtitle': 'Групповые опросы и голосования',
'admin.collab.whatsnext.title': 'Что дальше',
'admin.collab.whatsnext.subtitle': 'Предложения активностей и следующие шаги',
'admin.tabs.config': 'Персонализация',
'admin.tabs.defaults': 'Настройки по умолчанию',
'admin.defaultSettings.title': 'Настройки пользователей по умолчанию',
'admin.defaultSettings.description':
'Задайте значения по умолчанию для всего экземпляра. Пользователи, не изменившие параметр, увидят эти значения. Их собственные изменения всегда имеют приоритет.',
'admin.defaultSettings.saved': 'Значение по умолчанию сохранено',
'admin.defaultSettings.reset': 'Сбросить до встроенного значения',
'admin.defaultSettings.resetToBuiltIn': 'сбросить',
'admin.tabs.templates': 'Шаблоны упаковки',
'admin.packingTemplates.title': 'Шаблоны упаковки',
'admin.packingTemplates.subtitle': 'Создавайте многоразовые списки вещей для поездок',
'admin.packingTemplates.create': 'Новый шаблон',
'admin.packingTemplates.namePlaceholder': 'Название шаблона (напр. Пляжный отдых)',
'admin.packingTemplates.empty': 'Шаблоны ещё не созданы',
'admin.packingTemplates.items': 'вещи',
'admin.packingTemplates.items.one': 'вещь',
'admin.packingTemplates.items.few': 'вещи',
'admin.packingTemplates.items.many': 'вещей',
'admin.packingTemplates.categories': 'категории',
'admin.packingTemplates.categories.one': 'категория',
'admin.packingTemplates.categories.few': 'категории',
'admin.packingTemplates.categories.many': 'категорий',
'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.deleteCategoryError': 'Не удалось удалить категорию',
'admin.packingTemplates.deleteItemError': 'Не удалось удалить элемент',
'admin.packingTemplates.saveError': 'Ошибка сохранения',
'admin.tabs.addons': 'Дополнения',
'admin.tabs.plugins': 'Плагины',
'admin.tabs.storage': 'Хранилище',
'admin.plugins.rescan': 'Пересканировать',
'admin.plugins.rescanned': 'Папка плагинов пересканирована',
'admin.plugins.upload': 'Загрузить плагин',
'admin.plugins.dropToUpload': 'Перетащите .zip плагина для установки',
'admin.plugins.uploaded': 'Плагин “{name}” загружен — активируйте для запуска',
'admin.plugins.sideloaded': 'Загружен вручную',
'admin.plugins.devLinkBadge': 'Dev-Link',
'admin.plugins.devLinkHint':
'Загружено из локального каталога сборки и горячо перезагружается с реальными данными — только для разработки',
'admin.plugins.devLinkTitle': 'Подключить локальный плагин',
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
'admin.plugins.devLinkButton': 'Подключить',
'admin.plugins.devLinkLinked': '{id} подключён — активируйте для запуска',
'admin.plugins.sideloadedHint': 'Загружено вручную — не из реестра, без подписи и проверки',
'admin.plugins.browse': 'Обзор плагинов',
'admin.plugins.installed': 'Установлен',
'admin.plugins.install': 'Установить',
'admin.plugins.registryEmpty': 'В реестре пока нет доступных плагинов.',
'admin.plugins.actionError': 'Не удалось выполнить действие',
'admin.plugins.activate': 'Активировать',
'admin.plugins.activated': 'Плагин активирован',
'admin.plugins.deactivate': 'Деактивировать',
'admin.plugins.deactivated': 'Плагин деактивирован',
'admin.plugins.viewErrors': 'Показать журнал ошибок',
'admin.plugins.errorLog': 'Журнал ошибок',
'admin.plugins.allowedHosts': 'Разрешённые хосты',
'admin.plugins.allowedHosts.hint':
'Этот плагин обращается к сервису, который можете указать только вы (self-hosted сервер). Добавьте хосты, к которым он может обращаться — к другим он не сможет.',
'admin.plugins.allowedHosts.none': 'Хосты пока не добавлены.',
'admin.plugins.allowedHosts.unsupported':
'Этот плагин не использует хосты, задаваемые оператором. Его разрешённые хосты зафиксированы в манифесте.',
'admin.plugins.allowedHosts.restartNote': 'Сохранение перезапускает плагин, чтобы он подхватил новый список.',
'admin.plugins.allowedHosts.add': 'Добавить разрешённый хост',
'admin.plugins.allowedHosts.count': '{n} разрешённого хоста',
'admin.plugins.allowedHosts.count.one': '{n} разрешённый хост',
'admin.plugins.allowedHosts.count.few': '{n} разрешённых хоста',
'admin.plugins.allowedHosts.count.many': '{n} разрешённых хостов',
'admin.plugins.operatorEgressPill': '+ добавленные вами хосты',
'admin.plugins.operatorEgressHint':
'Этот плагин обращается к сервису, который можете указать только вы (self-hosted сервер). После установки добавьте хосты в ⋯ → Разрешённые хосты. К другим он не сможет обратиться.',
'admin.plugins.noErrors': 'Ошибок не зафиксировано.',
'admin.plugins.uninstalled': 'Плагин удалён',
'admin.plugins.uninstallTitle': 'Удалить плагин?',
'admin.plugins.uninstallBody':
'Плагин будет остановлен, его код удалён, а все его данные стёрты. Это действие нельзя отменить.',
'admin.plugins.status.starting': 'Запуск…',
'admin.plugins.type.widget': 'Виджет',
'admin.plugins.type.page': 'Страница',
'admin.plugins.type.integration': 'Интеграция',
'admin.plugins.type.trip-page': 'Страница поездки',
'admin.plugins.reviewed': 'Проверен',
'admin.plugins.unreviewed': 'Не проверен',
'admin.plugins.updated': 'Плагин обновлён',
'admin.plugins.updateTo': 'Обновить → v{version}',
'admin.plugins.enabledToggle': 'Включить плагин',
'plugins.notFound': 'Плагин не найден',
'plugins.frameLoadFailed': 'This plugin could not be loaded.',
'admin.plugins.title': 'Плагины',
'admin.plugins.subtitle': 'Устанавливайте сторонние плагины и управляйте ими на вашем экземпляре.',
'admin.plugins.disabledTitle': 'Плагины отключены',
'admin.plugins.disabledBody':
'Среда выполнения плагинов выключена (TREK_PLUGINS_ENABLED). Плагины не смогут работать, пока администратор не включит её в конфигурации сервера.',
'admin.plugins.empty': 'Плагины пока не установлены.',
'admin.plugins.loadError': 'Не удалось загрузить плагины.',
'admin.plugins.scaffoldNote':
'Установка и активация плагинов появятся в одном из следующих обновлений. Пока эта панель только показывает установленные плагины.',
'admin.plugins.status.active': 'Активен',
'admin.plugins.status.inactive': 'Неактивен',
'admin.plugins.status.disabled': 'Отключён',
'admin.plugins.status.error': 'Ошибка',
'admin.plugins.status.incompatible': 'Несовместим',
'admin.plugins.details': 'Подробности',
'admin.plugins.detailError': 'Не удалось загрузить сведения о плагине.',
'admin.plugins.permissionsTitle': 'Разрешения',
'admin.plugins.noPermissions': 'Этот плагин не запрашивает особых разрешений.',
'admin.plugins.egressNote': 'Может подключаться к: {hosts}',
'admin.plugins.setupTitle': 'Настройка',
'admin.plugins.noSetup': 'Работает сразу — настраивать ничего не нужно.',
'admin.plugins.scope.instance': 'Для всего экземпляра',
'admin.plugins.scope.user': 'Для каждого пользователя',
'admin.plugins.fieldRequired': 'Обязательно',
'admin.plugins.sourceRepo': 'Репозиторий с исходным кодом',
'admin.plugins.reportIssue': 'Сообщить о проблеме',
'admin.plugins.homepage': 'Домашняя страница',
'admin.plugins.requiresTrek': 'Требуется TREK {version}+',
'admin.plugins.reviewedOn': 'Проверен {date}',
'admin.plugins.perm.db:own': 'Хранить собственные данные в изолированной базе данных',
'admin.plugins.perm.db:read:trips': 'Читать поездки, доступные текущему пользователю',
'admin.plugins.perm.db:read:users': 'Читать основную информацию профиля (имя, аватар — но не учётные данные)',
'admin.plugins.perm.db:read:costs': 'Читать расходы (статьи бюджета), доступные текущему пользователю',
'admin.plugins.perm.db:read:packing': 'Читать списки вещей поездок, доступных текущему пользователю',
'admin.plugins.perm.db:write:packing':
'Создавать, редактировать и удалять пункты списка вещей в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.weather:read': 'Читать кэшированный прогноз погоды хоста (по координатам)',
'admin.plugins.perm.db:read:categories': 'Читать глобальный список категорий мест',
'admin.plugins.perm.db:read:tags': 'Читать теги текущего пользователя',
'admin.plugins.perm.db:write:tags': 'Создавать, редактировать и удалять теги текущего пользователя',
'admin.plugins.perm.db:read:todos': 'Читать задачи поездок, доступных текущему пользователю',
'admin.plugins.perm.db:write:todos':
'Создавать, редактировать и удалять задачи в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:write:atlas':
'Отмечать страны и регионы как посещённые и управлять списком желаний текущего пользователя (требуется дополнение Atlas)',
'admin.plugins.perm.db:write:vacay':
'Переключать дни отпуска и корпоративные праздники в активном плане текущего пользователя (требуется дополнение Vacay)',
'admin.plugins.perm.db:write:journal':
'Создавать, редактировать и удалять записи в дневниках, которые текущий пользователь может редактировать (требуется дополнение Journey)',
'admin.plugins.perm.db:write:collections':
'Создавать и редактировать коллекции и сохранять в них места с ролью текущего пользователя в коллекции (требуется дополнение Collections)',
'admin.plugins.perm.db:write:files':
'Прикреплять файлы к поездкам, которые текущий пользователь может редактировать (лимит 10 МБ, заблокированные расширения отклоняются), и управлять их связями',
'admin.plugins.perm.db:write:collab':
'Публиковать заметки, опросы и сообщения чата в поездках, которые текущий пользователь может редактировать (требуется дополнение Collab)',
'admin.plugins.perm.db:write:members':
'Добавлять пользователей в поездки — предоставляет доступ к поездке; защищено правом управления участниками текущего пользователя',
'admin.plugins.perm.notify:send':
'Отправлять уведомление (колокольчик + email/ntfy) текущему пользователю или его поездке — никогда произвольному получателю',
'admin.plugins.perm.ai:invoke':
'Использовать настроенного администратором ИИ-провайдера (дополнение текста + извлечение из документов) от имени текущего пользователя — плагин никогда не хранит ключ',
'admin.plugins.perm.oauth:client':
'Подключаться к стороннему сервису от вашего имени через OAuth, посредником которого выступает хост (хост хранит токены, плагин их не видит)',
'admin.plugins.perm.db:read:files': 'Читать файлы поездок, доступных текущему пользователю',
'admin.plugins.perm.db:write:reservations':
'Создавать, редактировать и удалять бронирования в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:write:accommodations':
'Создавать, редактировать и удалять размещения в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:read:journal':
'Читать дневники путешествий текущего пользователя (требуется дополнение Journey)',
'admin.plugins.perm.db:read:atlas':
'Читать посещённые страны и регионы текущего пользователя (требуется дополнение Atlas)',
'admin.plugins.perm.db:read:vacay': 'Читать план отпуска текущего пользователя (требуется дополнение Vacay)',
'admin.plugins.perm.db:read:daynotes': 'Читать заметки дня поездок, доступных текущему пользователю',
'admin.plugins.perm.db:read:collections':
'Читать коллекции сохранённых мест текущего пользователя (требуется дополнение Collections)',
'admin.plugins.perm.db:write:daynotes':
'Создавать, редактировать и удалять заметки дня в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.jobs:run':
'Запускать объявленные фоновые задачи по расписанию (без контекста пользователя — не может читать данные пользователя)',
'admin.plugins.perm.db:write:costs':
'Создавать расходы (статьи бюджета) в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:write:places':
'Добавлять, изменять и удалять места в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:write:days':
'Добавлять, изменять и удалять дни в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:write:itinerary':
'Назначать и удалять места в днях поездок, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:write:trips':
'Изменять данные поездки (название, даты, валюту…) в поездках, которые текущий пользователь может редактировать',
'admin.plugins.perm.db:meta':
'Прикреплять собственные приватные данные к поездкам, местам и дням, к которым у текущего пользователя есть доступ',
'admin.plugins.perm.ws:broadcast:trip': 'Отправлять обновления в реальном времени участникам поездки',
'admin.plugins.perm.ws:broadcast:user': 'Отправлять обновления в реальном времени отдельным пользователям',
'admin.plugins.perm.hook:photo-provider': 'Предоставлять фотографии для «Воспоминаний»',
'admin.plugins.perm.hook:calendar-source': 'Предоставлять события для календаря',
'admin.plugins.perm.hook:place-detail-provider': 'Добавлять дополнительные сведения (отзывы, оценки, ссылки) к месту',
'admin.plugins.perm.hook:search-provider':
'Отвечать на поиск мест из собственного индекса, рядом с результатами TREK',
'admin.plugins.perm.hook:poi-category-provider':
'Добавлять собственные категории мест в «Поиск мест на карте»; при выборе одной из них плагин получает область карты, которую вы просматриваете',
'admin.plugins.perm.hook:trip-warning-provider':
'Выдавать предупреждения проверки для поездки (отображаются в планировщике)',
'admin.plugins.perm.hook:table-contributor':
'Добавлять столбцы и действия в представления поездки (бронирования, места, дни)',
'admin.plugins.perm.hook:map-marker-provider':
'Добавлять маркеры на карту поездки (например, показывать бронирования или POI)',
'admin.plugins.perm.hook:map-layer-provider': 'Рисовать маршруты, коридоры и зоны на карте поездки',
'admin.plugins.perm.hook:route-provider':
'Предоставлять профили маршрутизации, по которым планировщик строит маршруты дней (например, маршрутизация для электромобилей с остановками для зарядки)',
'admin.plugins.perm.hook:day-schedule-provider':
'Добавлять записи времени в план дня (остановки для зарядки, запас времени на контроль)',
'admin.plugins.perm.hook:day-tint-provider':
'Отмечать дни в плане цветом (например, к какому этапу поездки относится день)',
'admin.plugins.cap.mcpTools': 'Публикует ИИ-инструменты',
'admin.plugins.mcpToolsTitle': 'Публикуемые ИИ-инструменты',
'admin.plugins.mcpToolsHint':
'Ассистент может запускать их от имени пользователя. Каждый действует с правами, выданными выше.',
'admin.plugins.poiCategoriesTitle': 'Категории карты, которые он добавляет',
'admin.plugins.perm.mcp:tools':
'Публиковать инструменты, которые ИИ-ассистент может запускать от вашего имени (он действует с правами, выданными плагину здесь, а не со своими)',
'admin.plugins.perm.geolocation:read':
'Запрашивать ваше местоположение в реальном времени, пока открыто одно из его представлений (TREK читает его с разрешением на геолокацию для этого сайта, а не с отдельным разрешением плагина)',
'admin.plugins.perm.hook:pdf-section-provider': 'Добавлять текстовые разделы в PDF-экспорт поездки',
'admin.plugins.perm.hook:atlas-layer-provider':
'Выделять страны на карте мира в Атласе (например, списки желаний или предупреждения для путешественников)',
'admin.plugins.perm.hook:journal-entry-provider':
'Добавлять дополнительные строки (ссылки, статистику) к записям дневника',
'admin.plugins.perm.hook:user-data':
'Удаление или экспорт хранимых данных о пользователе (GDPR: удаление аккаунта и запросы данных)',
'admin.plugins.perm.hook:trip-card-provider':
'Добавлять небольшие значки (статус, счётчики) на карточки поездок на панели',
'admin.plugins.perm.hook:notification-channel': 'Доставлять ваши уведомления через дополнительный канал',
'admin.plugins.perm.events:subscribe':
'Реагировать на основные события активности (только название события и поездка, никогда содержимое)',
'admin.plugins.perm.http:outbound': 'Выполнять исходящие запросы к заявленным хостам',
'admin.plugins.perm.db:read:collab':
'Читать заметки, опросы и сообщения чата поездок, доступных текущему пользователю (требуется дополнение Collab)',
'admin.plugins.perm.db:read:files:content':
'Читать содержимое (байты) файлов поездок, доступных текущему пользователю',
'admin.plugins.perm.db:create:trips': 'Создавать новые поездки, принадлежащие текущему пользователю',
'admin.plugins.perm.rates:read': 'Читать кэшированные курсы валют хоста',
'admin.plugins.updateConsentTitle': 'Для этого обновления нужны новые разрешения',
'admin.plugins.updateConsentBody':
'{name} v{version} запрашивает права, которые вы ещё не предоставили. Новая версия установлена, но остаётся выключенной, пока вы её не одобрите.',
'admin.plugins.updateNewPermissions': 'Новые запрашиваемые разрешения',
'admin.plugins.updateNewEgress': 'Новые исходящие подключения',
'admin.plugins.updateApprove': 'Одобрить и включить',
'admin.plugins.updateLater': 'Пока оставить выключенным',
'admin.plugins.updateKeptOff': 'Обновление установлено — оставлено выключенным, пока вы не одобрите новые разрешения',
'admin.plugins.reviewedMeaning':
'«Проверен» означает, что сопровождающий TREK проверял этот плагин на вредоносный код в каждой версии — но не его качество или работоспособность. Это не гарантия того, что плагин безвреден.',
'admin.plugins.security.title': 'Как изолируются плагины — и в чём пределы',
'admin.plugins.security.isolationTitle': 'Каждый плагин работает в изоляции',
'admin.plugins.security.isolationBody':
'Плагин работает как отдельный ограниченный процесс, который может читать только собственные файлы. Он не может читать вашу базу данных, ваш секрет для входа или ключ шифрования, не может запускать другие программы и не может записывать файлы куда-либо. Его интерфейс работает в изолированном фрейме браузера, который не может прочитать вашу сессионную cookie или взаимодействовать с окружающей страницей TREK.',
'admin.plugins.security.permsTitle': 'Что означают разрешения',
'admin.plugins.security.permsBody':
'Разрешения, показанные перед установкой, — это жёсткий предел, который TREK соблюдает во время работы плагина: он буквально не может сделать ничего, чего нет в списке. Но они говорят вам, что плагин может делать, а не что он делает на самом деле. Плагин, которому разрешено читать ваши поездки и обращаться к серверу, может отправить ваши поездки на этот сервер, поэтому читайте разрешения и исходящие хосты, а не только описание.',
'admin.plugins.security.limitsTitle': 'Что мы не можем гарантировать',
'admin.plugins.security.limitsBody':
'Изоляция — это надёжная программная граница, но не абсолютная. Плагин действует ровно с теми правами, которые вы одобрили, поэтому в рамках этих прав он может вести себя иначе, чем описано, и может отправлять данные, которыми законно располагает, на заявленные им хосты. TREK не читает и не оценивает, что на самом деле делает код плагина.',
'admin.plugins.security.worstTitle': 'Худший случай',
'admin.plugins.security.worstBody':
'Вредоносный плагин, который вы включили, может злоупотребить данными и подключениями, которые вы ему предоставили, — например, слить поездки, которые ему разрешено читать. Он не может украсть пароли, подделать вход администратора, выполнять команды на вашем сервере или получить доступ к данным, которые вы не предоставили. Ущерб остаётся в пределах того, что вы одобрили, и выключение плагина его останавливает.',
'admin.plugins.security.reviewedTitle': 'Что означает «Проверен»',
'admin.plugins.security.reviewedBody':
'Проверенный плагин был вручную просканирован на вредоносный код сопровождающим TREK в каждой версии — проверен на вредоносный код, а не на то, насколько хорошо он работает. Это не обещание того, что плагин безвреден.',
'admin.plugins.security.signedTitle': 'Что означает «Подписан»',
'admin.plugins.security.signedBody':
'Контрольная сумма, которую TREK проверяет при каждой установке, доказывает, что файлы — ровно те, за которые ручается реестр. Подпись доказывает другое: что они пришли от автора и подписаны ключом, который есть только у него. У подписанного плагина есть и то, и другое. Неподписанный плагин не является небезопасным — просто у него одной гарантией меньше, и большинство плагинов в реестре сегодня не подписаны.',
'admin.plugins.signed': 'Подписан',
'admin.plugins.signedHint': 'При установке проверен по ключу подписи автора',
'admin.plugins.unsigned': 'Без подписи',
'admin.plugins.unsignedHint':
'Файлы совпадают с тем, за что ручается реестр, но ничто не связывает их с автором. Одной гарантией меньше — это не значит, что он небезопасен.',
'admin.plugins.updateBlocked': 'Обновление заблокировано — {reason}',
'admin.plugins.reviewBlock': 'Разобраться',
'admin.plugins.retrusted': 'Новый ключ подписи принят — плагин обновлён',
'admin.plugins.sig.title': 'Не удалось проверить подпись плагина «{name}»',
'admin.plugins.sig.keyChangedBody':
'Ключ подписи автора — не тот, с которым этот плагин был установлен. Авторы действительно меняют ключи, но злоумышленник, захвативший плагин, выглядел бы ровно так же.',
'admin.plugins.sig.invalidBody':
'Файлы не соответствуют подписи автора. Это не то, что автор подписал: они либо повреждены, либо изменены. Это нельзя обойти.',
'admin.plugins.sig.missingBody':
'Этот плагин был подписан, когда вы его устанавливали, но новая версия поставляется без подписи. TREK не примет такой откат молча. Это нельзя обойти.',
'admin.plugins.sig.incompleteBody':
'Запись в реестре подписана наполовину: в ней объявлен ключ автора, но у версии нет подписи (или наоборот). Это ошибка на стороне плагина. Это нельзя обойти.',
'admin.plugins.sig.pinnedKey': 'Ключ, с которым он был установлен',
'admin.plugins.sig.newKey': 'Ключ, который он предлагает сейчас',
'admin.plugins.sig.confirmOutOfBand':
'TREK не может отличить законную смену ключа от захвата — отсюда они выглядят одинаково. Прежде чем принять новый ключ, подтвердите его у автора по каналу, которому вы уже доверяете. После этого плагин будет обновлён, а новый ключ — запомнен.',
'admin.plugins.sig.retrustConfirm': 'Доверять новому ключу и обновить',
'admin.plugins.sig.cancel': 'Не доверять',
'admin.plugins.sig.consentUnsigned':
'Ничто не связывает эту версию с её автором — файлы совпадают с реестром, но не несут подписи автора.',
'admin.plugins.security.trustTitle': 'Итог',
'admin.plugins.security.trustBody':
'Установка плагина похожа на установку любого стороннего приложения: добавляйте только код от авторов, которым доверяете, а при сомнениях сначала проверьте его самостоятельно. TREK не несёт ответственности за сторонние плагины.',
'admin.plugins.runtimeOn': 'Среда выполнения включена',
'admin.plugins.tabDiscover': 'Каталог',
'admin.plugins.searchPlaceholder': 'Поиск плагинов…',
'admin.plugins.filterType': 'Тип',
'admin.plugins.filterStatus': 'Статус',
'admin.plugins.sortBy': 'Сортировка',
'admin.plugins.allTypes': 'Все типы',
'admin.plugins.allStatuses': 'Все',
'admin.plugins.stateOff': 'Выкл.',
'admin.plugins.filterUpdate': 'Есть обновление',
'admin.plugins.sortName': 'Название',
'admin.plugins.sortRecent': 'Недавно обновлённые',
'admin.plugins.sortUpdates': 'Сначала с обновлениями',
'admin.plugins.sortDownloads': 'По загрузкам',
'admin.plugins.updatesAvailable': 'Для ваших плагинов доступно {count} обновления.',
'admin.plugins.updatesAvailable.one': 'Для ваших плагинов доступно {count} обновление.',
'admin.plugins.updatesAvailable.few': 'Для ваших плагинов доступно {count} обновления.',
'admin.plugins.updatesAvailable.many': 'Для ваших плагинов доступно {count} обновлений.',
'admin.plugins.newerNeedsTrek': 'Доступна v{version} — требуется TREK {range}',
'admin.plugins.versionsTitle': 'Версии',
'admin.plugins.versionPickerTitle': 'Сменить версию — {name}',
'admin.plugins.versionSwitch': 'Перейти на {version}',
'admin.plugins.versionNeedsTrek': 'требуется TREK {range}',
'admin.plugins.changeVersion': 'Сменить версию…',
'admin.plugins.noVersions': 'В реестре не найдено опубликованных версий.',
'admin.plugins.downgradeTitle': 'Откатить этот плагин?',
'admin.plugins.downgradeBody':
'Переход с v{from} на v{to}: данные, записанные более новой версией, остаются на месте, и старая версия может их не понять.',
'admin.plugins.downgradeConfirm': 'Откатить',
'admin.plugins.updatesHeld': 'Обновления приостановлены на v{version}',
'admin.plugins.resumeUpdates': 'Возобновить обновления',
'admin.plugins.updatesResumed': 'Обновления возобновлены',
'admin.plugins.updateAll': 'Обновить все',
'admin.plugins.noMatchInstalled': 'Нет установленных плагинов по вашему запросу.',
'admin.plugins.noMatchRegistry': 'В реестре нет плагинов по вашему запросу.',
'admin.plugins.restart': 'Перезапустить',
'admin.plugins.restarted': 'Плагин перезапущен',
'admin.plugins.instanceSettings': 'Настройки экземпляра',
'admin.plugins.settingsSaved': 'Настройки сохранены',
'admin.plugins.settingsSavedRestarted': 'Настройки сохранены — плагин перезапущен',
'admin.plugins.actions': 'Действия',
'admin.plugins.actions.confirm': 'Выполнить это действие?',
'admin.plugins.actions.inactive': 'Активируйте плагин, чтобы выполнять его действия',
'admin.plugins.requiredMissing': '«{field}» обязательно',
'admin.plugins.cap.readsTrips': 'Читает ваши поездки',
'admin.plugins.cap.readsUsers': 'Читает основные профили',
'admin.plugins.cap.readsCosts': 'Читает ваши расходы',
'admin.plugins.cap.readsPacking': 'Читает списки вещей',
'admin.plugins.cap.readsFiles': 'Читает файлы поездок',
'admin.plugins.cap.writesCosts': 'Добавляет расходы',
'admin.plugins.cap.writesPlaces': 'Изменяет места',
'admin.plugins.cap.writesDays': 'Изменяет дни',
'admin.plugins.cap.writesItinerary': 'Изменяет маршрут',
'admin.plugins.cap.writesTrips': 'Изменяет поездки',
'admin.plugins.cap.metadata': 'Добавляет метаданные',
'admin.plugins.cap.widget': 'Виджет панели',
'admin.plugins.cap.heroWidget': 'Виджет посадочного талона',
'admin.plugins.cap.placeSlot': 'Детали места',
'admin.plugins.cap.daySlot': 'Детали дня',
'admin.plugins.cap.reservationSlot': 'Детали брони',
'admin.plugins.cap.replacesTabs': 'Заменяет вкладки планировщика',
'admin.plugins.cap.realtime': 'Обновления в реальном времени',
'admin.plugins.cap.notificationChannel': 'Канал уведомлений',
'admin.plugins.cap.photos': 'Предоставляет фото',
'admin.plugins.cap.calendar': 'Предоставляет события календаря',
'admin.plugins.cap.placeDetails': 'Обогащает места',
'admin.plugins.cap.search': 'Отвечает на поиск',
'admin.plugins.cap.poiCategories': 'Добавляет категории на карту',
'admin.plugins.cap.warnings': 'Отмечает проблемы',
'admin.plugins.cap.mapLayers': 'Рисует на карте',
'admin.plugins.cap.routing': 'Предоставляет маршрутизацию',
'admin.plugins.cap.daySchedule': 'Добавляет время в план',
'admin.plugins.cap.dayTint': 'Раскрашивает дни',
'admin.plugins.cap.geolocation': 'Считывает ваше местоположение',
'admin.plugins.cap.events': 'Реагирует на активность',
'admin.plugins.cap.requiresAddon': 'Требуется {addon}',
'admin.plugins.cap.dependsOn': 'Нужен {id} {version}',
'admin.plugins.dep.addonDisabledToast': 'Сначала включите необходимые дополнения: {addons}',
'admin.plugins.dep.addonDisabledToast.one': 'Сначала включите необходимое дополнение: {addons}',
'admin.plugins.dep.addonDisabledToast.few': 'Сначала включите необходимые дополнения: {addons}',
'admin.plugins.dep.addonDisabledToast.many': 'Сначала включите необходимые дополнения: {addons}',
'admin.plugins.dep.autoEnabled': 'Сначала включены необходимые плагины: {plugins}',
'admin.plugins.dep.autoEnabled.one': 'Сначала включён необходимый плагин: {plugins}',
'admin.plugins.dep.autoEnabled.few': 'Сначала включены необходимые плагины: {plugins}',
'admin.plugins.dep.autoEnabled.many': 'Сначала включены необходимые плагины: {plugins}',
'admin.plugins.dep.downloaded': '{id} загружен',
'admin.plugins.dep.resolveTitle': 'Отсутствуют зависимости',
'admin.plugins.dep.resolveBody': '«{name}» требует установки этих плагинов перед включением.',
'admin.plugins.dep.requires': 'Требуется {version}',
'admin.plugins.dep.mismatch': 'Нужна {wanted} — установлена {installed}',
'admin.plugins.dep.download': 'Загрузить',
'admin.plugins.dep.update': 'Обновить',
'admin.plugins.dep.resolveHint': 'Загружает последнюю совместимую версию вместе с её зависимостями.',
'admin.plugins.dep.trekIncompatible': 'Требуется TREK {range} — на этом сервере {host}',
'admin.plugins.dep.trekUnknown': 'Не указано, какие версии TREK поддерживаются',
'admin.plugins.installCompatible': 'Установить {version}',
'admin.plugins.installAnyway': 'Всё равно установить',
'admin.plugins.rangeBypass.pill': 'Проверки версии отключены',
'admin.plugins.rangeBypass.pillHint':
'Задано TREK_PLUGINS_IGNORE_TREK_RANGE — плагины можно устанавливать и запускать вне версий TREK, указанных их авторами',
'admin.plugins.rangeBypass.title': 'Вне поддерживаемых версий TREK',
'admin.plugins.rangeBypass.noticeTitle': 'Установлен вне поддерживаемых версий TREK',
'admin.plugins.rangeBypass.body':
'«{name}» заявляет поддержку TREK {range}, а этот сервер работает на {host}. TREK пропускает его только потому, что задано TREK_PLUGINS_IGNORE_TREK_RANGE. Автор не обновил диапазон версий плагина для этого TREK, так что работоспособность не гарантируется — а в редких случаях несовместимый плагин может повредить данные TREK. Продолжайте, только если принимаете этот риск.',
'admin.plugins.rangeBypass.bodyUnknown':
'«{name}» не указывает, какие версии TREK он поддерживает; этот сервер работает на {host}. TREK пропускает его только потому, что задано TREK_PLUGINS_IGNORE_TREK_RANGE. Ничто не говорит о том, что автор тестировал его на этом TREK, так что работоспособность не гарантируется — а в редких случаях несовместимый плагин может повредить данные TREK. Продолжайте, только если принимаете этот риск.',
'admin.plugins.dep.trekBypassed': 'Вне своего диапазона TREK ({range}) — проверки версии отключены',
'admin.plugins.dep.trekBypassedUnknown': 'Диапазон TREK не указан — проверки версии отключены',
'admin.plugins.incompatible': 'Несовместимо',
'admin.plugins.accessTitle': 'К чему есть доступ',
'admin.plugins.connectsTitle': 'Подключается к',
'admin.plugins.detailsTitle': 'Подробности',
'admin.plugins.noAccess': 'Особый доступ не требуется.',
'admin.plugins.metaVersion': 'Версия',
'admin.plugins.metaSize': 'Размер',
'admin.plugins.metaRequires': 'Требуется',
'admin.plugins.metaReviewed': 'Проверен',
'admin.plugins.downloads': 'Загрузки',
'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.catalog.roadtrip.name': 'Автопутешествие',
'admin.addons.catalog.roadtrip.description':
'Планируйте поездки с остановками: время в пути и прибытия пересчитывается автоматически',
'admin.addons.subtitleBefore': 'Включайте или отключайте функции для настройки ',
'admin.addons.subtitleAfter': ' под себя.',
'admin.addons.catalog.naver_list_import.name': 'Naver List Import',
'admin.addons.catalog.naver_list_import.description': 'Импорт мест из общего списка Naver Maps',
'admin.addons.catalog.airtrail.name': 'AirTrail',
'admin.addons.catalog.airtrail.description': 'Синхронизация рейсов с вашего сервера AirTrail',
'admin.addons.catalog.dawarich.name': 'Dawarich',
'admin.addons.catalog.dawarich.description':
'Чтение посещений и записанных маршрутов из экземпляра Dawarich, который каждый пользователь подключает сам',
'admin.addons.catalog.llm_parsing.name': 'Разбор с помощью ИИ',
'admin.addons.catalog.llm_parsing.description':
'Читает брони, которые не понимает встроенный анализатор, с помощью выбранной вами модели ИИ',
'admin.addons.llm.vision.auto': 'Автоматически',
'admin.addons.llm.vision.on': 'Да',
'admin.addons.llm.vision.off': 'Нет',
'admin.addons.llm.vision.hintLocal': '«Автоматически» спрашивает сервер Ollama, читает ли эта модель изображения.',
'admin.addons.llm.vision.hintCloud':
'Для облачной модели «Автоматически» означает «нет». Выберите «Да», если эта модель читает изображения.',
'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.group.count': 'Включено {enabled} из {total}',
'admin.addons.subOptions': '{count} параметра',
'admin.addons.subOptions.one': '{count} параметр',
'admin.addons.subOptions.few': '{count} параметра',
'admin.addons.subOptions.many': '{count} параметров',
'admin.addons.subOptionsOn': '{count} вкл.',
'admin.addons.subOptionsOn.one': '{count} вкл.',
'admin.addons.subOptionsOn.few': '{count} вкл.',
'admin.addons.subOptionsOn.many': '{count} вкл.',
'admin.toursWanderer.title': 'wanderer',
'admin.toursWanderer.subtitle':
'Пользователи могут подключить свой экземпляр wanderer и импортировать его маршруты как туры',
'admin.addons.noAddons': 'Нет доступных дополнений',
'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':
'Погода основана на первом месте с координатами в каждом дне. Если ни одно место не назначено на день, в качестве ориентира используется любое место из списка.',
'admin.tabs.mcpTokens': 'MCP-доступ',
'admin.mcpTokens.title': 'MCP-доступ',
'admin.mcpTokens.subtitle': 'Управление OAuth-сессиями и API-токенами всех пользователей',
'admin.mcpTokens.sectionTitle': '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': 'Не удалось загрузить токены',
'admin.oauthSessions.sectionTitle': 'OAuth-сессии',
'admin.oauthSessions.clientName': 'Клиент',
'admin.oauthSessions.owner': 'Владелец',
'admin.oauthSessions.scopes': 'Права доступа',
'admin.oauthSessions.created': 'Создано',
'admin.oauthSessions.empty': 'Нет активных OAuth-сессий',
'admin.oauthSessions.revokeTitle': 'Отозвать сессию',
'admin.oauthSessions.revokeMessage': 'Эта OAuth-сессия будет немедленно отозвана. Клиент потеряет доступ к MCP.',
'admin.oauthSessions.revokeSuccess': 'Сессия отозвана',
'admin.oauthSessions.revokeError': 'Не удалось отозвать сессию',
'admin.oauthSessions.loadError': 'Не удалось загрузить OAuth-сессии',
'admin.tabs.github': 'GitHub',
'admin.audit.subtitle':
'События, связанные с безопасностью и администрированием (резервные копии, пользователи, MFA, настройки).',
'admin.audit.empty': 'Записей аудита пока нет.',
'admin.audit.refresh': 'Обновить',
'admin.audit.loadMore': 'Загрузить ещё',
'admin.audit.showing': 'Загружено {count} записи · всего {total}',
'admin.audit.showing.one': 'Загружена {count} запись · всего {total}',
'admin.audit.showing.few': 'Загружено {count} записи · всего {total}',
'admin.audit.showing.many': 'Загружено {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.nonDockerText':
'Этот экземпляр TREK работает не в Docker. Чтобы обновиться до {version}, повторно запустите способ установки или обновления, который вы использовали, — например, в Proxmox Community Scripts выполните обновление из консоли LXC:',
'admin.update.wikiLink': 'Открыть руководство по обновлению',
'admin.update.reloadHint': 'Перезагрузите страницу через несколько секунд.',
'admin.tabs.permissions': 'Разрешения',
'admin.notifications.emailPanel.title': 'Email (SMTP)',
'admin.notifications.webhookPanel.title': 'Webhook',
'admin.notifications.webPushPanel.title': 'Web Push',
'admin.notifications.webPushPanel.hint':
'Позволяет пользователям получать уведомления на телефонах и компьютерах через браузер, даже когда TREK закрыт. Требуется HTTPS; на iPhone и iPad TREK нужно добавить на экран «Домой».',
'admin.notifications.inappPanel.title': 'In-App',
'admin.notifications.inappPanel.hint': 'Уведомления в приложении всегда активны и не могут быть отключены глобально.',
'admin.notifications.adminWebhookPanel.title': 'Вебхук администратора',
'admin.notifications.adminWebhookPanel.hint':
'Этот вебхук используется исключительно для уведомлений администратора (например, оповещения о версиях). Он независим от пользовательских вебхуков и отправляется автоматически при наличии URL.',
'admin.notifications.adminWebhookPanel.saved': 'URL вебхука администратора сохранён',
'admin.notifications.adminWebhookPanel.testSuccess': 'Тестовый вебхук успешно отправлен',
'admin.notifications.adminWebhookPanel.testFailed': 'Ошибка тестового вебхука',
'admin.notifications.adminWebhookPanel.alwaysOnHint':
'Вебхук администратора отправляется автоматически при наличии URL',
'admin.notifications.ntfy': 'Ntfy',
'admin.ntfy.hint':
'Позволяет пользователям настраивать собственные темы ntfy для push-уведомлений. Установите сервер по умолчанию ниже, чтобы предварительно заполнить настройки пользователей.',
'admin.notifications.testNtfy': 'Отправить тестовое Ntfy',
'admin.notifications.testNtfySuccess': 'Тестовое Ntfy успешно отправлено',
'admin.notifications.testNtfyFailed': 'Ошибка отправки тестового Ntfy',
'admin.notifications.adminNtfyPanel.title': 'Ntfy администратора',
'admin.notifications.adminNtfyPanel.hint':
'Эта тема Ntfy используется исключительно для уведомлений администратора (например, оповещения о версиях). Она независима от тем пользователей и всегда отправляется при наличии настройки.',
'admin.notifications.adminNtfyPanel.serverLabel': 'URL сервера Ntfy',
'admin.notifications.adminNtfyPanel.serverHint':
'Также используется как сервер по умолчанию для ntfy-уведомлений пользователей. Оставьте пустым, чтобы использовать ntfy.sh. Пользователи могут изменить это в своих настройках.',
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
'admin.notifications.adminNtfyPanel.topicLabel': 'Тема администратора',
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
'admin.notifications.adminNtfyPanel.tokenLabel': 'Токен доступа (необязательно)',
'admin.notifications.adminNtfyPanel.tokenCleared': 'Токен доступа администратора очищен',
'admin.notifications.adminNtfyPanel.saved': 'Настройки Ntfy администратора сохранены',
'admin.notifications.adminNtfyPanel.test': 'Отправить тестовое Ntfy',
'admin.notifications.adminNtfyPanel.testSuccess': 'Тестовое Ntfy успешно отправлено',
'admin.notifications.adminNtfyPanel.testFailed': 'Ошибка отправки тестового Ntfy',
'admin.notifications.adminNtfyPanel.alwaysOnHint':
'Ntfy администратора всегда отправляется при наличии настроенной темы',
'admin.notifications.adminNotificationsHint':
'Настройте, какие каналы доставляют уведомления администратора (например, оповещения о версиях). Вебхук отправляется автоматически, если задан URL вебхука администратора.',
'admin.notificationDefaults.title': 'Значения по умолчанию для пользователей',
'admin.notificationDefaults.hint':
'Так начинаются уведомления каждого пользователя. «Выкл.» пользователь может включить сам, «Заблокировано» отключает для всех и отображается с замком в их настройках. Действует для всех, кто не менял ячейку сам.',
'admin.notificationDefaults.on': 'Вкл.',
'admin.notificationDefaults.off': 'Выкл.',
'admin.notificationDefaults.blocked': 'Заблокировано',
'admin.notificationDefaults.cycle': 'Нажмите для: {next}',
'admin.notifications.tripReminders.title': 'Напоминания о поездках',
'admin.notifications.tripReminders.hint':
'Отправляет напоминание перед началом поездки (необходимо указать дни напоминания в параметрах поездки).',
'admin.notifications.tripReminders.enabled': 'Напоминания о поездках включены',
'admin.notifications.tripReminders.disabled': 'Напоминания о поездках отключены',
'admin.tabs.notifications': 'Уведомления',
'admin.addons.catalog.journey.name': 'Путешествие',
'admin.addons.catalog.journey.description':
'Отслеживание поездок и дневник путешествий с отметками, фото и ежедневными историями',
'admin.addons.catalog.collections.name': 'Коллекции',
'admin.addons.catalog.collections.description':
'Собирайте места из любых поездок в именованные списки и используйте их снова',
'admin.passkey.title': 'Вход по passkey',
'admin.passkey.cardHint': 'Разрешите пользователям входить с помощью passkeys (WebAuthn). По умолчанию выключено.',
'admin.passkey.login': 'Включить вход по passkey',
'admin.passkey.loginHint':
'Показывать вариант «Войти с помощью passkey» и разрешить пользователям регистрировать passkeys в своих настройках.',
'admin.passkey.notConfigured':
'Для этого развёртывания пока не определён домен WebAuthn. Задайте APP_URL или Relying Party ID ниже — до этого passkeys остаются скрытыми.',
'admin.passkey.rpId': 'Relying Party ID (домен)',
'admin.passkey.rpIdHint':
'Голый домен, к которому привязаны passkeys, напр. trek.example.org. Оставьте пустым, чтобы определить его из APP_URL. Последующее изменение делает существующие passkeys недействительными.',
'admin.passkey.origins': 'Разрешённые источники',
'admin.passkey.originsHint':
'Полные источники через запятую, напр. https://trek.example.org. Оставьте пустым, чтобы использовать APP_URL.',
'admin.passkey.reset': 'Сбросить passkeys',
'admin.passkey.resetHint':
'Удалить все passkeys этого пользователя (напр. при потере устройства). Он по-прежнему сможет войти по паролю.',
'admin.passkey.resetConfirm': 'Удалить все passkeys пользователя {name}?',
'admin.passkey.resetDone': 'Удалено passkeys: {count}',
'admin.passkey.resetDone.one': 'Удалено passkeys: {count}',
'admin.passkey.resetDone.few': 'Удалено passkeys: {count}',
'admin.passkey.resetDone.many': 'Удалено passkeys: {count}',
'admin.defaultSettings.mapProvider': 'Картографический движок',
'admin.defaultSettings.mapProviderHint':
'Карта по умолчанию для всех на этом сервере. Каждый пользователь по-прежнему может изменить её в своих настройках.',
'admin.defaultSettings.providerLeaflet': 'Стандартная (бесплатно)',
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
'admin.defaultSettings.mapboxToken': 'Общий токен Mapbox',
'admin.defaultSettings.mapboxTokenHint':
'Используется для каждого пользователя, который не ввёл собственный токен — так весь сервер получает Mapbox без необходимости делиться ключом по отдельности. Хранится в зашифрованном виде.',
'admin.defaultSettings.mapboxStyle': 'Стиль карты',
'admin.defaultSettings.mapboxStylePlaceholder': 'Выберите стиль…',
'admin.defaultSettings.mapbox3d': '3D-здания и рельеф',
'admin.defaultSettings.mapboxQuality': 'Режим высокого качества',
'admin.defaultSettings.cartoKey': 'Общий ключ CARTO',
'admin.defaultSettings.cartoKeyHint':
'Используется для каждого пользователя, который не ввёл собственный ключ, так весь сервер получает тайлы CARTO без водяного знака. Хранится в зашифрованном виде.',
'admin.group.users': 'Users',
'admin.group.config': 'Configuration',
'admin.group.integration': 'Integrations',
'admin.group.maintenance': 'Maintenance',
'admin.invite.tripLabel': 'Добавить в поездку (необязательно)',
'admin.invite.tripNone': 'Без поездки',
'admin.invite.tripHint': 'Новый пользователь автоматически добавляется в эту поездку при регистрации по ссылке.',
'admin.invite.boundTo': 'добавляет в {trip}',
'admin.placesUsageTitle': 'Для чего используется ключ',
'admin.mapsKeyHintShort': 'Добавляет фото, оценки и часы работы. Каждый запрос тогда идёт в Google.',
'admin.amapKeyHintShort': 'Для поиска мест в материковом Китае. Нужен ключ веб-сервиса, а не ключ JS API.',
'admin.collab.links.subtitle': 'Общие ссылки и закладки',
'admin.paddleRegions.title': 'Данные о водоёмах для сплава',
'admin.paddleRegions.hint':
'Водосливы, шлюзы и правила плавания из OpenStreetMap, считываются по регионам и заново каждый месяц.',
'admin.paddleRegions.search': 'Добавить регион',
'admin.paddleRegions.searchPlaceholder': 'Поиск в Geofabrik, например Oberpfalz',
'admin.paddleRegions.noHits': 'Нет региона с таким названием',
'admin.paddleRegions.added': 'Добавлен',
'admin.paddleRegions.empty': 'Пока нет регионов. Тогда сплавы показывают, что данных о препятствиях нет.',
'admin.paddleRegions.status.queued': 'Ожидает',
'admin.paddleRegions.status.importing': 'Считывание',
'admin.paddleRegions.status.ready': 'Готово',
'admin.paddleRegions.status.failed': 'Ошибка',
'admin.paddleRegions.phase.download': 'Загрузка',
'admin.paddleRegions.phase.read': 'Считывание',
'admin.paddleRegions.objects': '{count} объекта',
'admin.paddleRegions.objects.one': '{count} объект',
'admin.paddleRegions.asOf': 'По состоянию на {date}',
'admin.paddleRegions.keptData': 'Пока используются ранее считанные данные.',
'admin.paddleRegions.refresh': 'Считать заново',
'admin.paddleRegions.remove': 'Удалить регион',
'admin.paddleRegions.removeMessage':
'«{name}» и его данные о препятствиях будут удалены. Сплавы там тогда останутся без данных.',
'admin.paddleRegions.retry': 'Повторить',
'admin.paddleRegions.offline': 'Управлять регионами можно только при подключении.',
'admin.paddleRegions.catalogUnavailable': 'Geofabrik сейчас недоступен. Попробуйте позже.',
'admin.paddleRegions.attribution':
'Данные © участники OpenStreetMap (ODbL), региональные выгрузки от Geofabrik. Считываются заново 3-го числа каждого месяца.',
'admin.paddleRegions.toast.added': 'Регион добавлен. TREK считывает его в фоне.',
'admin.paddleRegions.toast.removed': 'Регион удалён',
'admin.paddleRegions.objects.few': '{count} объекта',
'admin.paddleRegions.objects.many': '{count} объектов',
};
export default admin;