Files
MyTube/frontend/src/utils/locales/ru.ts
2025-12-02 00:04:34 -05:00

340 lines
24 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.
export const ru = {
// Header
myTube: "MyTube",
manage: "Управление",
settings: "Настройки",
logout: "Выйти",
pleaseEnterUrlOrSearchTerm: "Пожалуйста, введите URL видео или поисковый запрос",
unexpectedErrorOccurred: "Произошла непредвиденная ошибка. Пожалуйста, попробуйте снова.",
uploadVideo: "Загрузить видео",
enterUrlOrSearchTerm: "Введите URL YouTube/Bilibili или поисковый запрос",
manageVideos: "Управление видео",
// Home
pasteUrl: "Вставьте URL видео или коллекции",
download: "Скачать",
search: "Поиск",
recentDownloads: "Недавние загрузки",
noDownloads: "Загрузок пока нет",
downloadStarted: "Загрузка началась",
downloadFailed: "Ошибка загрузки",
loadingVideos: "Загрузка видео...",
searchResultsFor: "Результаты поиска для",
fromYourLibrary: "Из вашей библиотеки",
noMatchingVideos: "В вашей библиотеке нет подходящих видео.",
fromYouTube: "С YouTube",
loadingYouTubeResults: "Загрузка результатов YouTube...",
noYouTubeResults: "Результаты YouTube не найдены",
noVideosYet: "Видео пока нет. Отправьте URL YouTube, чтобы скачать ваше первое видео!",
views: "просмотров",
// Settings
general: "Общие",
security: "Безопасность",
videoDefaults: "Настройки плеера по умолчанию",
downloadSettings: "Настройки загрузки",
language: "Язык",
enableLogin: "Включить защиту входа",
password: "Пароль",
passwordHelper: "Оставьте пустым, чтобы сохранить текущий пароль, или введите новый для изменения",
passwordSetHelper: "Установите пароль для доступа к приложению",
autoPlay: "Автовоспроизведение видео",
autoLoop: "Автоповтор видео",
maxConcurrent: "Макс. одновременных загрузок",
saveSettings: "Сохранить настройки",
saving: "Сохранение...",
backToManage: "Назад к управлению",
settingsSaved: "Настройки успешно сохранены",
settingsFailed: "Не удалось сохранить настройки",
debugMode: "Режим отладки",
debugModeDescription: "Показать или скрыть сообщения консоли (требуется обновление)",
tagsManagement: "Управление тегами",
newTag: "Новый тег",
tags: "Теги",
tagsManagementNote: "Пожалуйста, не забудьте нажать «Сохранить настройки» после добавления или удаления тегов, чтобы применить изменения.",
// Database
database: "База данных",
migrateDataDescription: "Перенос данных из устаревших файлов JSON в новую базу данных SQLite. Это действие безопасно запускать несколько раз (дубликаты будут пропущены).",
migrateDataButton: "Перенести данные из JSON",
scanFiles: "Сканировать файлы",
scanFilesSuccess: "Сканирование завершено. Добавлено {count} новых видео.",
scanFilesFailed: "Сканирование не удалось",
scanFilesConfirmMessage: "Система просканирует корневую папку с видео, чтобы найти недовкументированные видеофайлы.",
scanning: "Сканирование...",
migrateConfirmation: "Вы уверены, что хотите перенести данные? Это может занять некоторое время.",
migrationResults: "Результаты миграции",
migrationReport: "Отчет о миграции",
migrationSuccess: "Миграция завершена. Подробности см. в оповещении.",
migrationNoData: "Миграция завершена, но данные не найдены.",
migrationFailed: "Ошибка миграции",
migrationWarnings: "ПРЕДУПРЕЖДЕНИЯ",
migrationErrors: "ОШИБКИ",
itemsMigrated: "элементов перенесено",
fileNotFound: "Файл не найден в",
noDataFilesFound: "Файлы данных для миграции не найдены. Пожалуйста, проверьте сопоставления томов.",
removeLegacyData: "Удалить устаревшие данные",
removeLegacyDataDescription: "Удалите старые файлы JSON (videos.json, collections.json и т.д.), чтобы освободить место на диске. Делайте это только после проверки успешной миграции ваших данных.",
removeLegacyDataConfirmTitle: "Удалить устаревшие данные?",
removeLegacyDataConfirmMessage: "Вы уверены, что хотите удалить устаревшие файлы данных JSON? Это действие нельзя отменить.",
legacyDataDeleted: "Устаревшие данные успешно удалены.",
deleteLegacyDataButton: "Удалить устаревшие данные",
cleanupTempFiles: "Очистить временные файлы",
cleanupTempFilesDescription: "Удалить все временные файлы загрузки (.ytdl, .part) из каталога загрузок. Это помогает освободить место на диске от незавершенных или отмененных загрузок.",
cleanupTempFilesConfirmTitle: "Очистить временные файлы?",
cleanupTempFilesConfirmMessage: "Это навсегда удалит все файлы .ytdl и .part в каталоге загрузок. Убедитесь, что нет активных загрузок перед продолжением.",
cleanupTempFilesActiveDownloads: "Невозможно очистить, пока активны загрузки. Пожалуйста, дождитесь завершения всех загрузок или сначала отмените их.",
cleanupTempFilesSuccess: "Успешно удалено {count} временных файлов.",
cleanupTempFilesFailed: "Не удалось очистить временные файлы",
// Cloud Drive
cloudDriveSettings: "Облачное хранилище (OpenList)",
enableAutoSave: "Включить автосохранение в облако",
apiUrl: "URL API",
apiUrlHelper: "напр. https://your-alist-instance.com/api/fs/put",
token: "Токен",
uploadPath: "Путь загрузки",
cloudDrivePathHelper: "Путь к каталогу в облаке, напр. /mytube-uploads",
// Manage
manageContent: "Управление контентом",
videos: "Видео",
collections: "Коллекции",
allVideos: "Все видео",
delete: "Удалить",
backToHome: "Назад на главную",
confirmDelete: "Вы уверены, что хотите удалить это?",
deleteSuccess: "Успешно удалено",
deleteFailed: "Не удалось удалить",
noVideos: "Видео не найдено",
noCollections: "Коллекции не найдены",
searchVideos: "Поиск видео...",
thumbnail: "Миниатюра",
title: "Название",
author: "Автор",
authors: "Авторы",
created: "Создано",
name: "Имя",
size: "Размер",
actions: "Действия",
deleteCollection: "Удалить коллекцию",
deleteVideo: "Удалить видео",
noVideosFoundMatching: "Видео, соответствующие вашему поиску, не найдены.",
// Video Player
playing: "Воспроизведение",
paused: "Пауза",
next: "Следующее",
previous: "Предыдущее",
loop: "Повтор",
autoPlayOn: "Автовоспроизведение вкл.",
autoPlayOff: "Автовоспроизведение выкл.",
videoNotFound: "Видео не найдено",
videoNotFoundOrLoaded: "Видео не найдено или не может быть загружено.",
deleting: "Удаление...",
addToCollection: "Добавить в коллекцию",
originalLink: "Оригинальная ссылка",
source: "Источник:",
addedDate: "Дата добавления:",
latestComments: "Последние комментарии",
noComments: "Комментарии недоступны.",
upNext: "Далее",
noOtherVideos: "Других видео нет",
currentlyIn: "Сейчас в:",
collectionWarning: "Добавление в другую коллекцию удалит его из текущей.",
addToExistingCollection: "Добавить в существующую коллекцию:",
selectCollection: "Выберите коллекцию",
add: "Добавить",
createNewCollection: "Создать новую коллекцию:",
collectionName: "Название коллекции",
create: "Создать",
removeFromCollection: "Удалить из коллекции",
confirmRemoveFromCollection: "Вы уверены, что хотите удалить это видео из коллекции?",
remove: "Удалить",
loadingVideo: "Загрузка видео...",
current: "(Текущее)",
rateThisVideo: "Оценить это видео",
enterFullscreen: "На весь экран",
exitFullscreen: "Выйти из полноэкранного режима",
editTitle: "Редактировать название",
titleUpdated: "Название успешно обновлено",
titleUpdateFailed: "Не удалось обновить название",
refreshThumbnail: "Обновить миниатюру",
thumbnailRefreshed: "Миниатюра успешно обновлена",
thumbnailRefreshFailed: "Не удалось обновить миниатюру",
videoUpdated: "Видео успешно обновлено",
videoUpdateFailed: "Не удалось обновить видео",
failedToLoadVideos: "Не удалось загрузить видео. Пожалуйста, попробуйте позже.",
videoRemovedSuccessfully: "Видео успешно удалено",
failedToDeleteVideo: "Не удалось удалить видео",
pleaseEnterSearchTerm: "Пожалуйста, введите поисковый запрос",
failedToSearch: "Поиск не удался. Пожалуйста, попробуйте снова.",
searchCancelled: "Поиск отменен",
// Login
signIn: "Войти",
verifying: "Проверка...",
incorrectPassword: "Неверный пароль",
loginFailed: "Ошибка проверки пароля",
defaultPasswordHint: "Пароль по умолчанию: 123",
// Collection Page
loadingCollection: "Загрузка коллекции...",
collectionNotFound: "Коллекция не найдена",
noVideosInCollection: "В этой коллекции нет видео.",
// Snackbar Messages
videoDownloading: "Видео скачивается",
downloadStartedSuccessfully: "Загрузка успешно началась",
collectionCreatedSuccessfully: "Коллекция успешно создана",
videoAddedToCollection: "Видео добавлено в коллекцию",
videoRemovedFromCollection: "Видео удалено из коллекции",
collectionDeletedSuccessfully: "Коллекция успешно удалена",
failedToDeleteCollection: "Не удалось удалить коллекцию",
back: "Назад",
// Author Videos
loadVideosError: "Не удалось загрузить видео. Пожалуйста, попробуйте позже.",
unknownAuthor: "Неизвестно",
noVideosForAuthor: "Видео этого автора не найдены.",
// Delete Collection Modal
deleteCollectionTitle: "Удалить коллекцию",
deleteCollectionConfirmation: "Вы уверены, что хотите удалить коллекцию",
collectionContains: "Эта коллекция содержит",
deleteCollectionOnly: "Удалить только коллекцию",
deleteCollectionAndVideos: "Удалить коллекцию и все видео",
// Common
loading: "Загрузка...",
error: "Ошибка",
success: "Успех",
cancel: "Отмена",
confirm: "Подтвердить",
save: "Сохранить",
on: "Вкл.",
off: "Выкл",
continue: "Продолжить",
// Video Card
unknownDate: "Неизвестная дата",
part: "Часть",
collection: "Коллекция",
// Upload Modal
selectVideoFile: "Выберите видеофайл",
pleaseSelectVideo: "Пожалуйста, выберите видеофайл",
uploadFailed: "Ошибка загрузки",
failedToUpload: "Не удалось загрузить видео",
uploading: "Загрузка...",
upload: "Загрузить",
// Bilibili Modal
bilibiliCollectionDetected: "Обнаружена коллекция Bilibili",
bilibiliSeriesDetected: "Обнаружена серия Bilibili",
multiPartVideoDetected: "Обнаружено многочастное видео",
collectionHasVideos: "В этой коллекции Bilibili {count} видео.",
seriesHasVideos: "В этой серии Bilibili {count} видео.",
videoHasParts: "В этом видео Bilibili {count} частей.",
downloadAllVideos: "Скачать все {count} видео",
downloadAllParts: "Скачать все {count} частей",
downloadThisVideoOnly: "Скачать только это видео",
downloadCurrentPartOnly: "Скачать только текущую часть",
processing: "Обработка...",
wouldYouLikeToDownloadAllParts: "Хотите скачать все части?",
wouldYouLikeToDownloadAllVideos: "Хотите скачать все видео?",
allPartsAddedToCollection: "Все части будут добавлены в эту коллекцию",
allVideosAddedToCollection: "Все видео будут добавлены в эту коллекцию",
queued: "В очереди",
waitingInQueue: "Ожидание в очереди",
// Downloads
downloads: "Загрузки",
activeDownloads: "Активные загрузки",
manageDownloads: "Управление загрузками",
queuedDownloads: "Загрузки в очереди",
downloadHistory: "История загрузок",
clearQueue: "Очистить очередь",
clearHistory: "Очистить историю",
noActiveDownloads: "Нет активных загрузок",
noQueuedDownloads: "Нет загрузок в очереди",
noDownloadHistory: "История загрузок пуста",
downloadCancelled: "Загрузка отменена",
queueCleared: "Очередь очищена",
historyCleared: "История очищена",
removedFromQueue: "Удалено из очереди",
removedFromHistory: "Удалено из истории",
status: "Статус",
progress: "Прогресс",
speed: "Скорость",
finishedAt: "Завершено в",
failed: "Ошибка",
// Batch Download
batchDownload: "Пакетная загрузка",
batchDownloadDescription: "Вставьте несколько URL ниже, по одному в строке.",
urls: "URL",
addToQueue: "Добавить в очередь",
batchTasksAdded: "Добавлено задач: {count}",
addBatchTasks: "Добавить пакетные задачи",
// Subscriptions
subscribeToAuthor: "Подписаться на автора",
subscribeConfirmationMessage: "Вы хотите подписаться на {author}?",
subscribeDescription: "Система будет автоматически проверять новые видео от этого автора и скачивать их.",
checkIntervalMinutes: "Интервал проверки (минуты)",
subscribe: "Подписаться",
subscriptions: "Подписки",
interval: "Интервал",
lastCheck: "Последняя проверка",
platform: "Платформа",
unsubscribe: "Отписаться",
confirmUnsubscribe: "Вы уверены, что хотите отписаться от {author}?",
subscribedSuccessfully: "Успешно подписаны",
unsubscribedSuccessfully: "Успешно отписаны",
subscriptionAlreadyExists: "Вы уже подписаны на этого автора.",
minutes: "минуты",
never: "Никогда",
// Instruction Page
instructionSection1Title: "1. Загрузка и управление задачами",
instructionSection1Desc: "Этот модуль включает функции получения видео, пакетных задач и импорта файлов.",
instructionSection1Sub1: "Загрузка по ссылке:",
instructionSection1Item1Label: "Базовая загрузка:",
instructionSection1Item1Text: "Вставьте ссылки с различных видеосайтов в поле ввода для прямой загрузки.",
instructionSection1Item2Label: "Разрешения:",
instructionSection1Item2Text: "Для сайтов, требующих членства или входа в систему, пожалуйста, сначала войдите в соответствующую учетную запись на новой вкладке браузера, чтобы получить разрешения на загрузку.",
instructionSection1Sub2: "Умное распознавание:",
instructionSection1Item3Label: "Подписка на автора YouTube:",
instructionSection1Item3Text: "Когда вставленная ссылка является каналом автора, система спросит, хотите ли вы подписаться. После подписки система может автоматически сканировать и загружать обновления автора через заданные интервалы.",
instructionSection1Item4Label: "Загрузка коллекции Bilibili:",
instructionSection1Item4Text: "Когда вставленная ссылка является избранным/коллекцией Bilibili, система спросит, хотите ли вы загрузить все содержимое коллекции.",
instructionSection1Sub3: "Расширенные инструменты (Страница управления загрузками):",
instructionSection1Item5Label: "Пакетное добавление задач:",
instructionSection1Item5Text: "Поддерживает вставку нескольких ссылок для загрузки одновременно (по одной в строке) для пакетного добавления.",
instructionSection1Item6Label: "Сканировать файлы:",
instructionSection1Item6Text: "Автоматически ищет все файлы в корневом каталоге хранения видео и папках первого уровня. Эта функция подходит для синхронизации файлов с системой после того, как администраторы вручную поместили их на сервер.",
instructionSection1Item7Label: "Загрузить видео:",
instructionSection1Item7Text: "Поддерживает загрузку локальных видеофайлов непосредственно с клиента на сервер.",
instructionSection2Title: "2. Управление видеотекой",
instructionSection2Desc: "Обслуживание и редактирование загруженных или импортированных видеоресурсов.",
instructionSection2Sub1: "Удаление коллекции/видео:",
instructionSection2Text1: "При удалении коллекции на странице управления система предлагает два варианта: удалить только элемент списка коллекции (сохранить файлы) или полностью удалить физические файлы внутри коллекции.",
instructionSection2Sub2: "Восстановление миниатюры:",
instructionSection2Text2: "Если у видео нет обложки после загрузки, нажмите кнопку обновления на миниатюре видео, и система повторно захватит первый кадр видео в качестве новой миниатюры.",
instructionSection3Title: "3. Настройки системы",
instructionSection3Desc: "Настройка параметров системы, обслуживание данных и расширение функций.",
instructionSection3Sub1: "Настройки безопасности:",
instructionSection3Text1: "Установите пароль для входа в систему (начальный пароль по умолчанию — 123, рекомендуется изменить после первого входа).",
instructionSection3Sub2: "Управление тегами:",
instructionSection3Text2: "Поддерживает добавление или удаление тегов классификации видео. Примечание: Вы должны нажать кнопку «Сохранить» внизу страницы, чтобы изменения вступили в силу.",
instructionSection3Sub3: "Обслуживание системы:",
instructionSection3Item1Label: "Очистить временные файлы:",
instructionSection3Item1Text: "Используется для очистки остаточных временных файлов загрузки, вызванных случайными сбоями бэкенда, для освобождения места.",
instructionSection3Item2Label: "Миграция базы данных:",
instructionSection3Item2Text: "Предназначено для пользователей ранних версий. Используйте эту функцию для миграции данных из JSON в новую базу данных SQLite. После успешной миграции нажмите кнопку удаления, чтобы очистить старые исторические данные.",
instructionSection3Sub4: "Расширенные сервисы:",
instructionSection3Item3Label: "Облачный диск OpenList:",
instructionSection3Item3Text: "(В разработке) Поддерживает подключение к развернутым пользователем сервисам OpenList. Добавьте конфигурацию здесь, чтобы включить интеграцию с облачным диском.",
};