Files
MyTube/frontend/src/utils/locales/ru.ts
2025-12-12 14:32:08 -05:00

460 lines
30 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 видео или поисковый запрос",
manageVideos: "Управление видео",
instruction: "Инструкция",
// Home
pasteUrl: "Вставьте URL видео или коллекции",
download: "Скачать",
search: "Поиск",
recentDownloads: "Недавние загрузки",
noDownloads: "Загрузок пока нет",
downloadStarted: "Загрузка началась",
downloadFailed: "Ошибка загрузки",
loadingVideos: "Загрузка видео...",
searchResultsFor: "Результаты поиска для",
fromYourLibrary: "Из вашей библиотеки",
noMatchingVideos: "В вашей библиотеке нет подходящих видео.",
proxyOnlyApplyToYoutube: 'Прокси применяется только к Youtube',
moveSubtitlesToVideoFolder: 'Расположение субтитров',
moveSubtitlesToVideoFolderOn: 'Вместе с видео',
moveSubtitlesToVideoFolderOff: 'В изолированной папке субтитров',
moveSubtitlesToVideoFolderDescription: 'Если включено, файлы субтитров будут перемещены в ту же папку, что и видеофайл. Если отключено, они будут перемещены в изолированную папку субтитров.',
loadingYouTubeResults: "Загрузка результатов YouTube...",
noYouTubeResults: "Результаты YouTube не найдены",
noVideosYet: "Видео пока нет. Отправьте URL видео, чтобы скачать первое!",
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} новых видео.",
scanFilesDeleted: " Удалено {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: "Устаревшие данные успешно удалены.",
formatLegacyFilenames: "Format Legacy Filenames",
formatLegacyFilenamesDescription:
"Batch rename all video files, thumbnails, and subtitles to the new standard format: Title-Author-YYYY. This operation will modify filenames on the disk and update the database logic.",
formatLegacyFilenamesButton: "Форматировать имена файлов",
formatFilenamesSuccess:
"Обработано: {processed}\nПереименовано: {renamed}\nОшибки: {errors}",
formatFilenamesDetails: "Подробности:",
formatFilenamesMore: "...и еще {count}",
formatFilenamesError: "Не удалось отформатировать имена файлов: {error}",
deleteLegacyDataButton: "Удалить устаревшие данные",
cleanupTempFiles: "Очистить временные файлы",
cleanupTempFilesDescription:
"Удалить все временные файлы загрузки (.ytdl, .part) из каталога загрузок. Это помогает освободить место на диске от незавершенных или отмененных загрузок.",
cleanupTempFilesConfirmTitle: "Очистить временные файлы?",
cleanupTempFilesConfirmMessage:
"Это навсегда удалит все файлы .ytdl и .part в каталоге загрузок. Убедитесь, что нет активных загрузок перед продолжением.",
cleanupTempFilesActiveDownloads:
"Невозможно очистить, пока активны загрузки. Пожалуйста, дождитесь завершения всех загрузок или сначала отмените их.",
itemsPerPage: "Элементов на странице",
itemsPerPageHelper: "Количество видео на странице (По умолчанию: 12)",
cleanupTempFilesSuccess: "Успешно удалено {count} временных файлов.",
cleanupTempFilesFailed: "Не удалось очистить временные файлы",
// Cookie Settings
cookieSettings: "Настройки Cookie",
cookieUploadDescription:
'Загрузите cookies.txt, чтобы пройти проверку ботов YouTube и включить скачивание субтитров Bilibili. Файл будет автоматически переименован в cookies.txt. (Пример: используйте расширение "Get cookies.txt LOCALLY" для экспорта cookie)',
uploadCookies: "Загрузить Cookie",
onlyTxtFilesAllowed: "Разрешены только файлы .txt",
cookiesUploadedSuccess: "Cookie успешно загружены",
cookiesUploadFailed: "Не удалось загрузить cookie",
cookiesFound: "cookies.txt найден",
cookiesNotFound: "cookies.txt не найден",
deleteCookies: "Удалить Cookie",
confirmDeleteCookies:
"Вы уверены, что хотите удалить файл cookie? Это повлияет на возможность скачивания видео с возрастными ограничениями или только для участников.",
cookiesDeletedSuccess: "Cookie успешно удалены",
cookiesDeleteFailed: "Не удалось удалить cookie",
// 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: "Успешно удалено",
previouslyDeletedVideo: "Ранее удаленное видео",
previouslyDeleted: "Ранее удалено",
videoWasDeleted: "Это видео было ранее загружено, но удалено.",
deleteFailed: "Не удалось удалить",
noVideos: "Видео не найдено",
noCollectionsFound: "Коллекции не найдены",
noCollections: "Коллекции не найдены",
searchVideos: "Поиск видео...",
thumbnail: "Миниатюра",
title: "Название",
author: "Автор",
authors: "Авторы",
created: "Создано",
name: "Имя",
size: "Размер",
actions: "Действия",
deleteCollection: "Удалить коллекцию",
deleteVideo: "Удалить видео",
noVideosFoundMatching: "Видео, соответствующие вашему поиску, не найдены.",
// Video Player
playing: "Воспроизведение",
paused: "Пауза",
next: "Следующее",
previous: "Предыдущее",
loop: "Повтор",
autoPlayOn: "Автовоспроизведение вкл.",
autoPlayOff: "Автовоспроизведение выкл.",
autoPlayNext: "Автовоспроизведение следующего",
videoNotFound: "Видео не найдено",
videoNotFoundOrLoaded: "Видео не найдено или не может быть загружено.",
deleting: "Удаление...",
addToCollection: "Добавить в коллекцию",
originalLink: "Оригинальная ссылка",
source: "Источник:",
addedDate: "Дата добавления:",
hideComments: "Скрыть комментарии",
showComments: "Показать комментарии",
latestComments: "Последние комментарии",
noComments: "Комментарии недоступны.",
upNext: "Далее",
noOtherVideos: "Других видео нет",
currentlyIn: "Сейчас в:",
collectionWarning: "Добавление в другую коллекцию удалит его из текущей.",
addToExistingCollection: "Добавить в существующую коллекцию:",
selectCollection: "Выберите коллекцию",
add: "Добавить",
createNewCollection: "Создать новую коллекцию:",
collectionName: "Название коллекции",
create: "Создать",
removeFromCollection: "Удалить из коллекции",
confirmRemoveFromCollection:
"Вы уверены, что хотите удалить это видео из коллекции?",
remove: "Удалить",
loadingVideo: "Загрузка видео...",
current: "(Текущее)",
rateThisVideo: "Оценить это видео",
enterFullscreen: "На весь экран",
exitFullscreen: "Выйти из полноэкранного режима",
share: "Поделиться",
editTitle: "Редактировать название",
titleUpdated: "Название успешно обновлено",
titleUpdateFailed: "Не удалось обновить название",
refreshThumbnail: "Обновить миниатюру",
thumbnailRefreshed: "Миниатюра успешно обновлена",
thumbnailRefreshFailed: "Не удалось обновить миниатюру",
videoUpdated: "Видео успешно обновлено",
videoUpdateFailed: "Не удалось обновить видео",
failedToLoadVideos:
"Не удалось загрузить видео. Пожалуйста, попробуйте позже.",
videoRemovedSuccessfully: "Видео успешно удалено",
failedToDeleteVideo: "Не удалось удалить видео",
pleaseEnterSearchTerm: "Пожалуйста, введите поисковый запрос",
failedToSearch: "Поиск не удался. Пожалуйста, попробуйте снова.",
searchCancelled: "Поиск отменен",
openInExternalPlayer: "Открыть во внешнем плеере",
playWith: "Воспроизвести с помощью...",
// Login
signIn: "Войти",
verifying: "Проверка...",
incorrectPassword: "Неверный пароль",
loginFailed: "Ошибка проверки пароля",
defaultPasswordHint: "Пароль по умолчанию: 123",
checkingConnection: "Проверка соединения...",
connectionError: "Ошибка соединения",
backendConnectionFailed:
"Не удалось подключиться к серверу. Убедитесь, что сервер запущен и порт открыт, затем повторите попытку.",
retry: "Повторить",
linkCopied: "Ссылка скопирована в буфер обмена",
copyFailed: "Не удалось скопировать ссылку",
// 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: "Продолжить",
expand: "Развернуть",
collapse: "Свернуть",
// 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. Добавьте конфигурацию здесь, чтобы включить интеграцию с облачным диском.",
history: "История",
downloading: "Скачивание...",
poweredBy: "Работает на MyTube",
existingVideoDetected: "Обнаружено существующее видео",
videoAlreadyDownloaded: "Это видео уже загружено.",
viewVideo: "Посмотреть видео",
downloadAgain: "Скачать снова",
downloadedOn: "Скачано",
deletedOn: "Удалено",
existingVideo: "Существующее видео",
skipped: "Пропущено",
videoSkippedExists: "Видео уже существует, загрузка пропущена",
videoSkippedDeleted: "Видео было ранее удалено, загрузка пропущена",
// Sorting
sort: "Сортировка",
sortBy: "Сортировать по",
dateDesc: "Дата добавления (Сначала новые)",
dateAsc: "Дата добавления (Сначала старые)",
viewsDesc: "Просмотры (По убыванию)",
viewsAsc: "Просмотры (По возрастанию)",
nameAsc: "Имя (А-Я)",
random: "Случайно",
// yt-dlp Configuration
ytDlpConfiguration: "Конфигурация yt-dlp",
ytDlpConfigurationDescription: "Настройте параметры загрузки yt-dlp. См.",
ytDlpConfigurationDocs: "документацию",
ytDlpConfigurationDescriptionEnd: "для получения дополнительной информации.",
customize: "Настроить",
hide: "Скрыть",
reset: "Сбросить",
more: "Ещё",
};