const ru = { navigation: { library: 'Библиотека', filters: { all: 'Все', active: 'Активные', completed: 'Завершённые', unfinished: 'Незавершённые', }, categories: { musics: 'Музыка', movies: 'Фильмы', compressed: 'Архивы', documents: 'Документы', pictures: 'Изображения', applications: 'Программы', other: 'Другое', }, folders: 'Папки', queues: 'Очереди', tools: 'Инструменты', scheduler: 'Планировщик', speedLimiter: 'Ограничение скорости', logs: 'Журнал', settings: 'Настройки', }, actions: { hideSidebar: 'Скрыть боковую панель', showSidebar: 'Показать боковую панель', resizeSidebar: 'Изменить размер боковой панели', cancel: 'Отмена', continue: 'Продолжить', dismissNotification: 'Закрыть уведомление', queueName: 'Название очереди', addNewQueue: 'Добавить новую очередь', startQueue: 'Запустить очередь', pauseQueue: 'Приостановить очередь', renameQueue: 'Переименовать очередь', deleteQueue: 'Удалить очередь', }, dialogs: { errorBoundary: { title: 'Что-то пошло не так.', description: 'Произошла критическая ошибка в дереве компонентов React. Сведения об ошибке ниже помогут определить её причину.', reload: 'Перезапустить приложение', }, duplicateDownloads: { title: 'Обнаружены дубликаты загрузок', description: 'Некоторые из добавляемых загрузок уже есть в очереди или на диске. Выберите способ разрешения конфликтов.', rename: 'Переименовать', replace: 'Заменить', skip: 'Пропустить', }, removeDownload: { title: 'Удалить загрузку', confirmationSingle: 'Вы действительно хотите удалить этот элемент из списка? Вы также можете удалить файл с диска.', confirmationMultiple: 'Вы действительно хотите удалить выбранные элементы ({{count}}) из списка? Вы также можете удалить файлы с диска.', errorSummary: 'Удалено {{succeeded}}, с ошибкой {{failed}}: {{detail}}', remove: 'Удалить', deleteFile: 'Удалить файл', }, }, window: { controls: 'Управление окном', close: 'Закрыть', minimize: 'Свернуть', maximize: 'Развернуть', }, downloads: { actions: { moveUp: 'Переместить вверх', moveDown: 'Переместить вниз', pause: 'Приостановить', start: 'Запустить', resume: 'Возобновить', options: 'Параметры', }, size: { downloadedOf: 'Загружено {{downloaded}} из {{total}} {{unit}}', downloadedOfApproximate: 'Загружено {{downloaded}} из примерно {{total}} {{unit}}', }, status: { ready: 'Готово', staged: 'В очереди', queued: 'В очереди', downloading: 'Загрузка', processing: 'Обработка', paused: 'Приостановлено', completed: 'Завершено', failed: 'Ошибка', retrying: 'Повторная попытка', }, values: { processing: 'Обработка…', muxing: 'Мультиплексирование…', }, }, speedLimiter: { title: 'Ограничение скорости', unlimited: 'Без ограничений', saveLimit: 'Сохранить ограничение', globalSpeedLimit: 'Общее ограничение скорости', description: 'Применяется к новым и активным загрузкам aria2 и новым загрузкам медиа yt-dlp. Индивидуальные ограничения для отдельных загрузок сохраняются.', quickPresets: 'Быстрые пресеты', removePreset: 'Удалить пресет {{value}} {{unit}}', customPresetIn: 'Пользовательский пресет ({{unit}})', addQuickPreset: 'Добавить быстрый пресет', globalLimitSaved: 'Общее ограничение сохранено: {{value}} {{unit}}', globalLimitDisabled: 'Общее ограничение скорости отключено', saveFailed: 'Не удалось сохранить общее ограничение скорости: {{detail}}', presetAlreadyExists: 'Пресет {{value}} {{unit}} уже есть в быстрых пресетах', presetAdded: 'Добавлен быстрый пресет {{value}} {{unit}}', presetRemoved: 'Удалён быстрый пресет {{value}} {{unit}}', }, logs: { title: 'Журнал', entries: '({{count}} записей)', collecting: 'Сбор', off: 'Выкл.', allLevels: 'Все уровни', levels: { error: 'Ошибка', warn: 'Предупреждение', info: 'Информация', debug: 'Отладка', trace: 'Трассировка', }, pauseLogging: 'Приостановить ведение журнала', enableLogging: 'Включить ведение журнала', clearDisplayed: 'Очистить отображаемый журнал', export: 'Экспорт журнала', exportButton: 'Экспортировать журнал', logFiles: 'Файлы журнала', localDiagnostics: 'Локальная диагностика:', diagnosticsDescription: 'Сбор диагностики выполняется по желанию, ограничен по объёму и хранится локально. Конфиденциальные данные, параметры URL и пути к домашней папке скрываются при отображении и экспорте. Никакие данные не отправляются автоматически.', noEntries: 'Сохранённых записей журнала пока нет.', disabledDescription: 'Ведение журнала диагностики отключено. Существующие логи поддержки появятся здесь при наличии.', copy: 'Копировать', copied: 'Скопировано в буфер обмена', copyFailed: 'Не удалось скопировать в буфер обмена', exported: 'Журнал диагностики экспортирован', exportFailed: 'Не удалось экспортировать журнал: {{detail}}', cleared: 'Журнал очищен', clearFailed: 'Не удалось очистить журнал: {{detail}}', enabled: 'Ведение журнала диагностики включено', disabled: 'Ведение журнала диагностики отключено', updateFailed: 'Не удалось обновить ведение журнала диагностики: {{detail}}', }, scheduler: { title: 'Планировщик', running: 'Работает', disabled: 'Планировщик отключён', noScheduledDay: 'Дни выполнения не выбраны', unsavedChanges: 'Несохранённые изменения', runNow: 'Запустить сейчас', pause: 'Приостановить', saveSettings: 'Сохранить настройки', timing: 'Расписание', startTime: 'Время начала', stopTime: 'Время окончания', timingDescription: 'Если Firelink находится в спящем режиме во время запуска, он запустит выбранные очереди после пробуждения в этот же день, если время окончания ещё не наступило.', runEveryDay: 'Запускать каждый день', queuesToSchedule: 'Очереди для запуска', defaultQueue: 'Очередь по умолчанию', afterCompletion: 'После завершения', afterCompletionDescription: 'Выберите действие после завершения загрузок, запущенных планировщиком.', actionWarning: 'Это действие может прервать работу других программ на компьютере. Firelink выполнит его сразу после завершения запланированной очереди.', systemPermissions: 'Системные разрешения', macPermissionDescription: 'Для перехода в спящий режим, перезагрузки и выключения требуется разрешение macOS «Автоматизация» для System Events.', permissionGranted: 'Разрешение «Автоматизация» предоставлено', permissionChecking: 'Проверка разрешения «Автоматизация»…', permissionMissing: 'Отсутствует разрешение «Автоматизация»', revokePermission: 'Отозвать разрешение', grantPermission: 'Предоставить разрешение', permissionAvailable: 'Разрешение «Автоматизация» доступно.', permissionMissingDetails: 'Отсутствует разрешение «Автоматизация». В Системных настройках откройте раздел «Автоматизация» для System Events и включите Firelink.', revokePermissionDetails: 'macOS не позволяет отзывать разрешение «Автоматизация» напрямую из Firelink. Отключите доступ Firelink к System Events в Системных настройках, затем вернитесь в Firelink.', requestingPermission: 'Запрос разрешения «Автоматизация»…', enablePermissionDetails: 'В Системных настройках откройте раздел «Автоматизация» для System Events и включите Firelink, затем вернитесь в Firelink.', systemActions: 'Системные действия', windowsActionsDescription: 'Спящий режим, перезагрузка и выключение используют системные привилегии Windows. Firelink сообщит о любых отклонённых действиях при их запуске; постоянное разрешение заранее не запрашивается.', linuxActionsDescription: 'Спящий режим, перезагрузка и выключение используют системную политику и рабочий стол Linux. Firelink сообщит о любых отклонённых действиях при их запуске; постоянное разрешение заранее не запрашивается.', validationDay: 'Выберите хотя бы один день для планировщика', validationQueue: 'Выберите хотя бы одну очередь для планировщика', validationStopTime: 'Время окончания должно быть позже времени начала', saved: 'Настройки планировщика сохранены', trackingOne: 'Отслеживается 1 запланированная загрузка', trackingMany: 'Отслеживается {{count}} запланированных загрузок', noStartableDownloads: 'В выбранных очередях нет загрузок, которые можно запустить', pausedOne: 'Приостановлена 1 активная загрузка', pausedMany: 'Приостановлено {{count}} активных загрузок', noActiveDownloads: 'Нет активных загрузок', days: { su: 'Вс', mo: 'Пн', tu: 'Вт', we: 'Ср', th: 'Чт', fr: 'Пт', sa: 'Сб', }, postActions: { none: 'Ничего не делать', sleep: 'Спящий режим', restart: 'Перезагрузка', shutdown: 'Завершение работы', }, }, properties: { progress: 'Прогресс', size: 'Размер', speed: 'Скорость', eta: 'Осталось', connections: 'Соединения', connectionCount: '{{active}}/{{total}} активных', connectionCountUnknown: '—/{{total}} активных', connectionsUnavailable: '—', speedCap: 'Ограничение скорости', category: 'Категория', lastTry: 'Последняя попытка', dateAdded: 'Дата добавления', destination: 'Папка назначения', lastError: 'Последняя ошибка', saved: ' (сохранено)', defaultValue: ' (по умолчанию)', savedTooltip: 'Сохранено для этой загрузки. Изменения в Настройках будут применяться к новым загрузкам.', defaultTooltip: 'Используется текущее значение по умолчанию для новых загрузок.', identityReadOnly: 'Идентификация файла доступна только для чтения. Настройки передачи сохранены для повторного скачивания.', transferSettings: 'Настройки передачи можно изменить после остановки или приостановки. Текущие загрузки сохраняют свои параметры.', download: 'Загрузка', url: 'URL', fileName: 'Имя файла', saveLocation: 'Место сохранения', select: 'Выбрать', perFile: 'на файл', useCurrentDefault: 'По умолчанию ({{count}})', savedPerDownload: 'Сохранено для этой загрузки. Значение из Настроек применяется к новым загрузкам.', limit: 'Ограничение', siteLogin: 'Авторизация на сайте', siteLoginRedownload: 'Авторизация для повторного скачивания', matchingSiteLogin: 'Учётные данные сайта', customCredentials: 'Пользовательские учётные данные', noLogin: 'Без авторизации', useSavedLogin: 'Будет использован сохранённый логин, если он доступен.', advancedTransfer: 'Дополнительные параметры', advancedTransferRedownload: 'Дополнительные параметры повторного скачивания', checksum: 'Контрольная сумма', verify: 'Проверить', algorithm: 'Алгоритм', digest: 'Хеш', expectedDigest: 'Ожидаемый хеш', cookies: 'Файлы cookie', headers: 'Заголовки', mirrors: 'Зеркала', username: 'Имя пользователя', password: 'Пароль', enterValidUrl: 'Введите корректный URL.', fileNameEmpty: 'Имя файла не может быть пустым.', cancel: 'Отмена', save: 'Сохранить', }, keychain: { title: 'Требуется доступ к хранилищу учётных данных', stores: { portable: 'портативная папка Firelink', windows: 'Диспетчер учётных данных Windows', linux: 'хранилище учётных данных Linux', macos: 'Связка ключей macOS', system: 'системное хранилище учётных данных', siteCredentials: 'системное хранилище учётных данных', }, grantLabelPortable: 'Продолжить', grantLabelMacos: 'Предоставить доступ', grantLabelDefault: 'Включить защищённое хранилище', description: 'Firelink использует расширение браузера для перехвата загрузок. Чтобы расширение оставалось привязанным после перезапуска, Firelink сохраняет токен сопряжения в {{pairingStore}}. Дополнительные учётные данные сайтов хранятся в {{siteCredentialStore}}.', portableExplanation: 'Токен сопряжения переносится вместе с этой папкой. Учётные данные сайтов остаются в системном хранилище; после предоставления доступа может появиться системный запрос.', macosExplanation: 'macOS может показать запрос Связки ключей после предоставления доступа.', defaultExplanation: 'Обычно это происходит незаметно. Если служба учётных данных недоступна, Firelink покажет ошибку здесь, и расширение останется привязанным только на текущий сеанс.', note: 'Примечание:', portableNote: 'В портативном режиме в этой папке сохраняется только токен сопряжения. Пароли сайтов и учётные данные браузера не копируются.', defaultNote: 'Firelink создаёт только собственную изолированную запись учётных данных. Приложение не имеет доступа к другим сохранённым паролям вашей системы.', hint: 'Подсказка:', portableHint: 'Портативный токен сопряжения уже сохранён в этой папке. Вы можете включить его здесь или выбрать «Позже».', defaultHint: 'Если вы выберете «Позже», расширение будет работать только во время текущего сеанса.', enableFromSettings: 'Вы можете включить хранилище в любое время в меню «Настройки» > «Интеграции».', later: 'Позже', enabling: 'Включение…', timeout: 'Время ожидания запроса к хранилищу учётных данных истекло. Вы можете выбрать «Позже» и попробовать снова.', unavailable: 'Хранилище {{store}} недоступно.', accessRequired: 'Предоставьте доступ к хранилищу учётных данных перед повторной генерацией токена сопряжения.', storeUnavailable: 'Доступ к хранилищу учётных данных недоступен.', }, app: { loading: 'Загрузка…', settingsSaveFailed: 'Не удалось сохранить настройки. Проверьте разрешения хранилища и попробуйте снова.', systemActionCountdown: '{{action}} через 10 секунд.', systemActionCancelled: 'Системное действие отменено, так как есть активная или запланированная загрузка.', systemActionFailed: 'Не удалось выполнить запланированное системное действие: {{detail}}', downloadCompleteTitle: 'Загрузка завершена', downloadCompleteBody: 'Загрузка {{fileName}} завершена.', unknownFile: 'Файл', downloadFailedTitle: 'Ошибка загрузки', downloadFailedBody: 'Не удалось загрузить {{fileName}}.', initializeDownloadsFailed: 'Не удалось инициализировать сохранённые загрузки: {{detail}}', extensionDisconnected: 'Расширение браузера отключено, так как его токен сопряжения изменился.', copyToken: 'Скопировать токен', integrations: 'Интеграции', copyTokenFailed: 'Не удалось скопировать токен сопряжения: {{detail}}', credentialPersistenceFailed: 'Безопасное сохранение учётных данных недоступно. Сопряжение с браузером работает только в текущем сеансе: {{detail}}', resumeDownloadsFailed: 'Не удалось возобновить сохранённые загрузки: {{detail}}', updateAvailable: 'Доступна Firelink {{version}}.', viewRelease: 'Просмотреть релиз', sleepPreventionFailed: 'Не удалось обновить предотвращение перехода в спящий режим: {{detail}}', schedulerNoQueues: 'В планировщике не выбраны действительные очереди. Обновите настройки планировщика.', schedulerPauseOneFailed: 'Планировщик не смог приостановить 1 загрузку.', schedulerPauseManyFailed: 'Планировщик не смог приостановить {{count}} загрузок.', scheduledIncomplete: 'Не все запланированные загрузки были завершены. Системное действие после завершения очереди пропущено.', scheduledActionSkippedActive: 'Запланированное системное действие пропущено, так как есть активная или находящаяся в очереди загрузка.', notificationsDisabled: 'Системные уведомления отключены для Firelink.', notificationsFailed: 'Не удалось настроить уведомления: {{detail}}', }, sidebar: { deleteQueueConfirm: 'Удалить очередь «{{name}}»? Её незавершённые загрузки будут перемещены в Главную очередь.', deleteQueueFailed: 'Не удалось удалить очередь: {{detail}}', queueNameEmpty: 'Название очереди не может быть пустым', queueNameExists: 'Очередь с таким названием уже существует', startQueueFailed: 'Не удалось запустить очередь: {{detail}}', pauseQueueFailed: 'Не удалось приостановить очередь: {{detail}}', }, downloadTable: { unknownQueue: 'Неизвестная очередь', allDownloads: 'Все загрузки', active: 'Активные', completed: 'Завершённые', unfinished: 'Незавершённые', headers: { fileName: 'Имя файла', size: 'Размер', status: 'Статус', speed: 'Скорость', eta: 'Осталось', dateAdded: 'Дата добавления', }, columnOptions: { open: 'Параметры столбца «{{column}}»', dragToReorder: 'Перетащите для изменения порядка столбцов', alignContent: 'Выравнивание содержимого', left: 'По левому краю', center: 'По центру', right: 'По правому краю', resetLayout: 'Сбросить макет столбцов', }, addDownload: 'Добавить загрузку', resumeAll: 'Возобновить все', pauseAll: 'Приостановить все', summary: { items: '{{count}} элементов', selected: 'Выбрано: {{count}}', downloaded: 'Загружено', remaining: 'Осталось', active: 'Активные', unknown: 'Неизвестно', estimated: 'Около {{value}}', }, queueEmpty: 'Очередь пуста', noCompletedDownloads: 'Нет завершённых загрузок', noDownloads: 'Нет загрузок', queueEmptyDescription: 'Добавьте загрузки в эту очередь из меню элемента или окна добавления.', completedDescription: 'Завершённые загрузки будут отображаться здесь.', clickToAdd: 'Нажмите кнопку', addButtonOr: 'или', toAddDownloads: 'чтобы добавить загрузки', nonResumableOne: '1 загрузка не поддерживает возобновление. Если вы приостановите её, позже придётся начинать скачивание заново. Вы действительно хотите приостановить?', nonResumableMany: '{{count}} загрузок не поддерживают возобновление. Если вы приостановите их, позже придётся начинать скачивание заново. Вы действительно хотите приостановить?', interactionError: '{{message}}: {{detail}}', openFileFailed: 'Не удалось открыть скачанный файл', revealFileFailed: 'Не удалось показать файл в Finder', pauseFailed: 'Не удалось приостановить загрузку', resumeFailed: 'Не удалось возобновить {{fileName}}', moveManyFailed: 'Не удалось переместить загрузки в очередь', moveOneFailed: 'Не удалось переместить загрузку в очередь', copyAddressesFailed: 'Не удалось скопировать адреса', copyAddressFailed: 'Не удалось скопировать адрес', copyPathFailed: 'Не удалось скопировать путь к файлу', missingFileName: 'Отсутствует имя файла', redownloadFailed: 'Не удалось скачать повторно', startResume: 'Запустить/Возобновить', addToQueue: 'Добавить в очередь', copyAddress: 'Скопировать адрес', remove: 'Удалить', open: 'Открыть', showInFolder: 'Показать в папке', pause: 'Приостановить', start: 'Запустить', resume: 'Возобновить', redownload: 'Скачать повторно', copyFilePath: 'Скопировать путь к файлу', properties: 'Свойства', backendRejectedStart: 'Фоновый модуль отклонил запрос на запуск/возобновление.', transferActive: 'Нельзя изменять свойства во время активной передачи. Сначала приостановите её.', redownloadNotFound: 'Невозможно скачать повторно: загрузка не найдена.', redownloadActive: 'Невозможно повторно скачать загрузку в статусе «{{status}}». Сначала приостановите её или дождитесь завершения.', originalUrlMissing: 'Невозможно скачать повторно: исходный URL отсутствует.', pauseBeforeMove: 'Приостановите {{file}} перед перемещением в другую очередь.', }, addDownloads: { unknownSize: 'Неизвестный размер', unknown: 'Неизвестно', discardSetup: 'Отменить настройку этой загрузки?', speedInvalid: 'Ограничение скорости должно быть больше нуля', duplicateResolveFailed: 'Не удалось разрешить дубликаты загрузок: {{detail}}', addedWithFailures: 'Добавлено: {{added}}, с ошибкой: {{failed}}. {{detail}}', addedOne: 'Добавлена 1 загрузка', addedMany: 'Добавлено {{count}} загрузок', updatedOne: 'Обновлена 1 загрузка', updatedMany: 'Обновлено {{count}} загрузок', urlAlreadyQueued: 'URL уже находится в очереди', destinationConflict: 'Другая выбранная загрузка использует это место назначения', existingDownloadDestination: 'Существующая загрузка Firelink использует эту папку назначения', matchingDownloadFilename: 'Незавершённая загрузка уже использует это имя файла', fileExistsOnDisk: 'Файл уже существует на диске; переименуйте или пропустите его, чтобы не удалить сторонние данные', backendRejectedStart: 'Фоновый модуль отклонил запуск загрузки.', playlistNoEntries: 'Плейлист не содержит доступных элементов', invalidMediaMetadata: 'Некорректные метаданные медиа или форматы не найдены', noAvailableName: 'Не удалось найти доступное имя для {{file}}.', pauseBeforeReplace: 'Приостановите {{file}} перед заменой.', cannotReplace: 'Невозможно заменить {{file}}: файл не принадлежит загрузке Firelink.', downloadLinks: 'Ссылки для скачивания', pastePlaceholder: 'Вставьте сюда URL-адреса HTTP, HTTPS, FTP или SFTP…\n\nДля загрузки медиа вставляйте ссылки с YouTube, X, TikTok, Instagram, Reddit и т. д.', playlistSummary: 'Плейлист «{{title}}»: загружено {{loaded}} из {{total}} элементов{{truncated}}{{skipped}}', safeEntryLimit: ' (достигнут безопасный лимит элементов)', selectedSummary: 'Выбрано: {{ready}} готовых, {{fallback}} с резервными данными, {{mediaRetry}} повторов медиа, {{blocked}} заблокировано', clearSelection: 'Очистить выбор', selectAll: 'Выбрать все', refreshMetadata: 'Обновить метаданные', files: 'Файлы', required: 'Требуется', free: 'Свободно', preview: 'Предпросмотр', file: 'Файл', size: 'Размер', status: 'Статус', downloadPreview: 'Предпросмотр загрузки', noLinks: 'Ссылки ещё не добавлены.', selectItem: 'Выбрать {{file}}', fetchingPlaylist: 'Получение плейлиста…', fetching: 'Получение…', unsafeUrl: 'Небезопасный URL', playlistFailed: 'Ошибка плейлиста', metadataFailed: 'Ошибка метаданных', fallback: 'Резервный режим', invalid: 'Некорректный', ready: 'Готово', mediaFormat: 'Формат медиа', playlistItem: 'Элемент плейлиста {{index}}', fetchingMediaStreams: 'Получение медиапотоков…', availableStreams: 'Доступные потоки', availableMediaStreams: 'Доступные медиапотоки', metadataUnavailable: 'Метаданные недоступны. Обновите метаданные перед добавлением этого медиа.', saveLocation: 'Папка сохранения', browse: 'Обзор…', categoryFolders: 'Файлы будут распределены по папкам категорий.', sharedFolder: 'Все выбранные загрузки будут использовать эту папку.', dedicatedFolder: 'Сохранить в новую папку', dedicatedFolderName: 'Имя папки', dedicatedFolderDescription: 'Создаёт эту папку внутри каждой автоматической папки категории.', dedicatedFolderManualDescription: 'Создаёт эту папку внутри выбранного места сохранения.', saveFolderName: 'Имя папки сохранения', dedicatedFolderNameRequired: 'Введите имя папки перед сохранением.', transferSettings: 'Настройки передачи', connectionsPerFile: 'Соединений на файл', connectionsPerFileAria: 'Соединений на файл', limitSpeedPerFile: 'Ограничить скорость на файл', speedLimitPerFileAria: 'Ограничение скорости на файл', authorization: 'Авторизация', useAuthorization: 'Использовать авторизацию', username: 'Имя пользователя', password: 'Пароль', advancedTransfer: 'Дополнительные параметры', verifyChecksum: 'Проверять контрольную сумму', checksumAlgorithm: 'Алгоритм контрольной суммы', expectedDigest: 'Ожидаемый хеш', headers: 'Заголовки', requestHeaders: 'Заголовки запроса', cookies: 'Файлы cookie', cookiePlaceholder: 'name=value; other=value', mirrors: 'Зеркала', cancel: 'Отмена', startDownloads: 'Начать загрузку', addToQueue: 'Добавить в очередь', pasteOneOrMore: 'Вставьте одну или несколько ссылок.', selectAtLeastOne: 'Выберите хотя бы одну загрузку.', correctInvalidOne: 'Исправьте или удалите {{count}} некорректный URL-адрес перед продолжением.', correctInvalidFew: 'Исправьте или удалите {{count}} некорректных URL-адреса перед продолжением.', correctInvalidMany: 'Исправьте или удалите {{count}} некорректных URL-адресов перед продолжением.', waitingForMetadataOne: 'Ожидание метаданных для {{count}} загрузки…', waitingForMetadataFew: 'Ожидание метаданных для {{count}} загрузок…', waitingForMetadataMany: 'Ожидание метаданных для {{count}} загрузок…', removeUnsafeOne: 'Удалите {{count}} небезопасный URL-адрес перед продолжением.', removeUnsafeFew: 'Удалите {{count}} небезопасных URL-адреса перед продолжением.', removeUnsafeMany: 'Удалите {{count}} небезопасных URL-адресов перед продолжением.', mediaMetadataUnavailableSummaryOne: 'Метаданные медиа недоступны для {{count}} элемента. Обновите метаданные перед добавлением.', mediaMetadataUnavailableSummaryFew: 'Метаданные медиа недоступны для {{count}} элементов. Обновите метаданные перед добавлением.', mediaMetadataUnavailableSummaryMany: 'Метаданные медиа недоступны для {{count}} элементов. Обновите метаданные перед добавлением.', metadataUnavailableFallback: 'Метаданные недоступны. Загрузки всё равно можно добавить с резервными данными.', fallbackReadyOne: 'Готова {{ready}} загрузка; для {{failed}} будет использовано резервное имя файла и неизвестный размер.', fallbackReadyFew: 'Готовы {{ready}} загрузки; для {{failed}} будет использовано резервное имя файла и неизвестный размер.', fallbackReadyMany: 'Готово {{ready}} загрузок; для {{failed}} будет использовано резервное имя файла и неизвестный размер.', readyToAddOne: 'Готово к добавлению: {{count}} загрузка.', readyToAddFew: 'Готово к добавлению: {{count}} загрузки.', readyToAddMany: 'Готово к добавлению: {{count}} загрузок.', }, settings: { tabs: { downloads: 'Загрузки', lookAndFeel: 'Внешний вид', network: 'Сеть', locations: 'Папки', siteLogins: 'Учётные данные', power: 'Питание', engine: 'Движок', integrations: 'Интеграции', about: 'О программе', }, common: { thisOs: 'этой ОС', checking: 'Проверка…', ready: 'Готово', errorMissing: 'Ошибка / Отсутствует', hideTechnicalDetails: 'Скрыть технические детали', showTechnicalDetails: 'Показать технические детали', binary: 'Исполняемый файл', expected: 'Ожидается', error: 'Ошибка', tip: 'Совет', stderr: 'stderr', daemonProcessAlive: 'Процесс фоновой службы активен', rpcReady: 'RPC готов', rpcPort: 'Порт RPC', daemonStderr: 'stderr фоновой службы', packaging: 'Упаковка: PyInstaller onedir (требуется _internal)', internalDirectoryFound: 'Каталог _internal найден', pythonRuntimeFound: 'Среда выполнения Python найдена', externalOpenFailed: 'Не удалось открыть {{label}}: {{detail}}', updateUnexpectedResponse: 'Проверка обновлений вернула неожиданный ответ.', updateUntrustedReleaseUrl: 'Проверка обновлений вернула ненадёжный URL релиза.', updateFailed: 'Ошибка проверки обновлений: {{detail}}', }, downloads: { defaultConnections: 'Соединения по умолчанию:', defaultConnectionsDescription: 'Для новых загрузок; существующие элементы сохраняют своё значение', parallelDownloads: 'Параллельные загрузки:', parallelDownloadsDescription: 'Максимальное число одновременно активных файлов', automaticRetries: 'Автоматические повторы:', automaticRetriesDescription: 'При сбое соединения', systemNotification: 'Показывать системное уведомление по завершении загрузки', systemNotificationDescription: 'Использует настройки уведомлений вашей операционной системы', completionChime: 'Воспроизводить звуковой сигнал завершения в приложении', completionChimeDescription: 'Дополнительный звук Firelink, независимый от системных уведомлений', clipboardLinks: 'Добавлять ссылки из буфера обмена при активации Firelink', clipboardLinksDescription: 'Открывает скопированные поддерживаемые ссылки в окне добавления. По умолчанию отключено.', }, lookAndFeel: { language: 'Язык', languageDescription: 'Выберите язык интерфейса Firelink.', sidebarPosition: 'Положение боковой панели', sidebarPositionDescription: 'Выберите, где отображается боковая панель. В автоматическом режиме следует направлению интерфейса.', sidebarPositionAutomatic: 'Автоматически (рекомендуется)', sidebarPositionLeft: 'Слева', sidebarPositionRight: 'Справа', languageSystem: 'Системный по умолчанию', languageEnglish: 'Английский', languageChinese: 'Упрощённый китайский', languageHebrew: 'Иврит', languagePersian: 'Персидский', languageUkrainian: 'Украинский', languageRussian: 'Русский', appTheme: 'Тема приложения', theme: 'Тема', ariaLabel: 'Тема приложения', system: 'Системная', light: 'Светлая', dark: 'Тёмная', dracula: 'Dracula', nord: 'Nord', systemAppearance: 'Системная тема соответствует текущему светлому или тёмному оформлению {{platform}}.', display: 'Отображение', fontSize: 'Размер шрифта', fontSizeDescription: 'Масштабирует список загрузок и компактные элементы управления.', small: 'Мелкий', standard: 'Стандартный', large: 'Крупный', listDensity: 'Плотность списка', listDensityDescription: 'Изменяет высоту строк, отступы и масштаб индикатора прогресса.', compact: 'Компактный', comfortable: 'Удобный', relaxed: 'Просторный', osIntegration: 'Интеграция с ОС', dockBadge: 'Показывать счётчик на значке в Dock', dockBadgeDescription: 'Отображает количество активных загрузок на значке Firelink в Dock.', menuBarIcon: 'Показывать значок в строке меню', statusIndicatorIcon: 'Показывать значок состояния', systemTrayIcon: 'Показывать значок в системном трее', macosTrayDescription: 'Обеспечивает быстрый доступ из строки меню macOS.', windowsTrayDescription: 'Обеспечивает быстрый доступ из области уведомлений Windows.', linuxTrayDescription: 'Обеспечивает быстрый доступ из трея рабочего стола или области состояния Linux (при наличии).', defaultTrayDescription: 'Обеспечивает быстрый доступ из области системного трея ОС (при наличии).', }, network: { proxy: 'Прокси', mode: 'Режим', modeDescription: 'Управляет использованием прокси для новых запросов на загрузку.', noProxy: 'Без прокси', systemProxy: 'Системный прокси', customProxy: 'Собственный прокси', proxyHost: 'Хост прокси', proxyHostDescription: 'Имя хоста, IP-адрес или URL HTTP-прокси.', proxyHostPlaceholder: '127.0.0.1 или http://127.0.0.1', proxyPort: 'Порт прокси', proxyPortDescription: 'Допустимый диапазон от 1 до 65535.', noProxyDescription: 'Загрузки игнорируют настроенные прокси.', systemProxyDescription: 'Загрузки используют обнаруженный системный прокси {{platform}}. Для обычных загрузок файлов требуется HTTP- или HTTPS-прокси; для загрузки медиа можно использовать SOCKS.', customProxyDescription: 'Загрузки используют настроенный HTTP-прокси для получения метаданных и движков скачивания.', invalidCustomProxy: 'Введите корректный хост и порт HTTP-прокси, чтобы включить собственный прокси.', incompleteCustomProxy: 'Введите хост и порт прокси, чтобы включить собственный прокси.', checkingSystemProxy: 'Проверка конфигурации системного прокси…', detectedSystemProxy: 'Обнаружен системный прокси. Для обычных загрузок файлов требуется HTTP- или HTTPS-прокси; для загрузки медиа можно использовать SOCKS.', noSystemProxy: 'Подходящий системный прокси не обнаружен. Загрузки будут выполняться без прокси.', systemProxyReadFailed: 'Не удалось прочитать конфигурацию системного прокси. Выберите «Без прокси» или повторите попытку, когда она станет доступна.', identity: 'Идентификация', customUserAgent: 'Собственный User-Agent', userAgentDescription: 'Применяется при получении метаданных и работе движков загрузки.', userAgentPlaceholder: 'Оставьте пустым, чтобы использовать значение Firelink по умолчанию', userAgentOverrides: 'Переопределяет исходящий заголовок User-Agent. Оставьте пустым, чтобы использовать значения Firelink по умолчанию.', chromeWindows: 'Chrome (Windows)', chromeMacos: 'Chrome (macOS)', edgeWindows: 'Edge (Windows)', firefoxWindows: 'Firefox (Windows)', firefoxMacos: 'Firefox (macOS)', safariMacos: 'Safari (macOS)', windowsDesktop: 'Windows (ПК)', macosDesktop: 'macOS (ПК)', }, locations: { baseDownloadFolder: 'Основная папка загрузок', baseDownloadFolderDescription: 'Автоматические папки категорий создаются внутри этой папки.', browse: 'Обзор…', baseFolderCreateFailed: 'Основная папка сохранена, но не удалось создать папки категорий: {{detail}}', baseFolderUpdated: 'Основная папка загрузок обновлена', askWhereToSave: 'Запрашивать место сохранения при добавлении загрузок', rememberLastUsedDownloadDirectory: 'Запоминать последнюю использованную папку загрузки', rememberLastUsedDownloadDirectoryDescription: 'Использовать последнюю папку, выбранную в окне добавления, для следующей загрузки до перезапуска приложения.', automaticCategorySubfolders: 'Автоматически сохранять файлы в подпапки категорий', automaticCategorySubfoldersDescription: 'Если отключено, автоматические загрузки используют основную папку.', categorySubfolders: 'Подпапки категорий', relativeToBase: 'Относительно основной папки', disabled: 'Отключено', categorySubfolder: 'Подпапка «{{category}}»', customFolder: 'Собственная папка', useAutomatic: 'Автоматически', resetDefaults: 'Сбросить по умолчанию', resetToast: 'Настройки папок категорий сброшены по умолчанию', }, siteLogins: { title: 'Учётные данные сайтов', noSavedLogins: 'Нет сохранённых логинов.', user: 'Пользователь: {{username}}', deleteCredential: 'Удалить учётные данные', deletedCredential: 'Учётные данные удалены', deleteFailed: 'Не удалось удалить учётные данные: {{detail}}', addTitle: 'Добавить учётные данные сайта', urlPattern: 'Шаблон URL:', urlPatternPlaceholder: 'например *.example.com или example.com/downloads', username: 'Имя пользователя:', password: 'Пароль:', usernamePlaceholder: 'Имя пользователя', passwordPlaceholder: 'Пароль', saving: 'Сохранение…', addLogin: 'Добавить логин', urlPatternRequired: 'Требуется указать шаблон URL.', urlPatternWhitespace: 'Шаблон URL не может содержать пробелы.', usernameRequired: 'Требуется указать имя пользователя.', passwordRequired: 'Требуется указать пароль.', accessBeforeSave: 'Предоставьте доступ к хранилищу учётных данных перед сохранением логина сайта.', saveFailed: 'Не удалось безопасно сохранить учётные данные сайта.', addedCredential: 'Добавлены учётные данные сайта', }, power: { title: 'Управление питанием', preventSleep: 'Запрещать спящий режим системы во время активных загрузок', preventSleepDescription: 'Экран всё ещё может выключаться. Firelink предотвращает засыпание устройства только настолько, чтобы завершить активные передачи.', }, engine: { title: 'Загрузчик медиа и движки', description: 'Успешные результаты используются повторно в течение сеанса приложения. Повторная проверка запускает реальную валидацию заново.', recheck: 'Перепроверить движки', coreDownloader: 'Основной загрузчик (aria2)', version: 'Версия:', status: 'Статус:', mediaExtractors: 'Экстракторы медиа', browserCookiesSource: 'Источник файлов cookie браузера:', cookieDescription: 'yt-dlp читает файлы cookie браузера для обхода ограничений на загрузку видео или доступа к закрытым медиа. Firelink не сохраняет файлы cookie браузера.', none: 'Не использовать', }, integrations: { title: 'Подключение расширения браузера', description: 'Перехватывайте загрузки прямо из браузера за три простых шага.', portablePairingEnabled: 'Портативное сопряжение включено', pairingTokenPersisted: 'Токен сопряжения сохранён', portablePersistedDescription: 'Ваш токен сопряжения хранится в этой портативной папке Firelink и сохранится при перемещении папки. Относитесь к папке как к конфиденциальным данным.', systemPersistedDescription: 'Ваш токен сопряжения сохранён в системном хранилище учётных данных и сохранится после перезапуска.', portablePairingAvailable: 'Доступно портативное сопряжение', credentialStorageNeeded: 'Требуется доступ к хранилищу учётных данных', portableAvailableDescription: 'Ваш токен сопряжения хранится в этой портативной папке Firelink и сохранится после перезапуска. Включите его здесь, чтобы ознакомиться с предупреждением о портативном хранилище.', credentialStorageDescription: 'Firelink требуется доступ к системному хранилищу учётных данных для безопасного сохранения токена сопряжения между перезапусками приложения. В настоящее время ваше расширение будет оставаться подключённым только на время этого сеанса.', reviewPortablePairing: 'Проверить портативное сопряжение', grantCredentialAccess: 'Предоставить доступ к хранилищу', copyToken: 'Скопировать токен', tokenDescription: 'Этот защищённый токен авторизует ваше расширение браузера.', tokenCopied: 'Токен скопирован в буфер обмена!', tokenCopyFailed: 'Не удалось скопировать токен: {{detail}}', pairingTokenRegenerated: 'Токен сопряжения сгенерирован заново', regenerateFailed: 'Не удалось сгенерировать токен сопряжения заново: {{detail}}', getExtension: 'Получить расширение', extensionDescription: 'Установите Firelink Companion для браузеров Firefox или Chromium.', firefoxAddons: 'Дополнения Firefox', chromiumZip: 'Chromium ZIP', pasteConnect: 'Вставить и подключить', pasteConnectDescription: 'Нажмите на значок Firelink на панели инструментов браузера и вставьте скопированный токен.', extensionServerStatus: 'Статус сервера расширения:', listening: '● Прослушивание 127.0.0.1:{{port}}', unavailable: '● Сервер недоступен', }, about: { firelinkIcon: 'Значок Firelink', unknown: 'Неизвестно', version: 'Версия {{version}}', description: 'Кроссплатформенный менеджер загрузок для macOS, Windows и Linux.', sourceCode: 'Исходный код', source: 'Исходный код', upToDate: 'У вас установлена актуальная версия Firelink ({{version}}).', updateAvailable: 'Доступна новая версия Firelink {{version}}.', viewRelease: 'Просмотреть релиз', updates: 'Обновления', checkForUpdates: 'Проверить обновления', updateDescription: 'Firelink проверяет наличие новых версий в GitHub Releases.', checking: 'Проверка…', checkNow: 'Проверить сейчас', automaticUpdates: 'Автоматически проверять наличие обновлений', createdBy: 'Разработчик: NimBold', mitLicense: 'Лицензия MIT', credits: 'Благодарности: aria2, yt-dlp, FFmpeg и Deno.', copyright: 'Copyright © 2026 NimBold. Все права защищены.', }, }, status: { ready: 'Готово', active: '{{count}} активных', queued: '{{count}} в очереди', done: '{{count}} завершено', }, } as const; export default ru;