fix(i18n): shorten nav labels and complete translations in all locales

Nav bar labels that overflow their tab slot on phones are shortened to
idiomatic short forms: fr (Bibliothèque, Téléchargement, Recherche),
ru/bg/it (Live TV), pl (Home).

All 21 locales get the ~280 keys that were empty (falling back to
English at runtime): explore detail/badges/stats, fileInfo, startup
repair flow, mediaMenu delete dialogs, addServer, rating sources,
downloads sync-rule removal, and more.

settings.displayScale was missing entirely in 16 locales; the new
exoplayer playbackBuffer keys (upstream feat) are translated too.

Fixes mis-translations found in review: es/zh/zh-Hant sidecar-format
wording, sv adaptation, nb transcoding.

Regenerated with dart run slang; translation hygiene and i18n tests
pass.

Close #1823
This commit is contained in:
edde746
2026-08-07 10:15:48 +02:00
parent 4816e3928f
commit feb34caeb7
43 changed files with 20701 additions and 6215 deletions
+306 -306
View File
@@ -11,7 +11,7 @@
"waitingForAuth": "Ожидание аутентификации...\nВыполните вход в браузере.",
"useBrowser": "Использовать браузер",
"or": "или",
"connectToMediaBrowser": "",
"connectToMediaBrowser": "Подключиться к ${product}",
"useQuickConnect": "Использовать Quick Connect",
"quickConnectInstructions": "Откройте Quick Connect в Jellyfin и введите этот код.",
"quickConnectWaiting": "Ожидание подтверждения…",
@@ -66,17 +66,17 @@
"exitFullscreen": "Выйти из полноэкранного режима",
"pressBackAgainToExit": "Нажмите ещё раз для выхода",
"ratingSource": {
"critic": "",
"audience": "",
"imdb": "",
"tmdb": "",
"rottenTomatoes": "",
"simkl": "",
"mal": "",
"anilist": "",
"trakt": "",
"rottenTomatoesCritic": "",
"rottenTomatoesAudience": ""
"critic": "Критики",
"audience": "Зрители",
"imdb": "IMDb",
"tmdb": "TMDB",
"rottenTomatoes": "Rotten Tomatoes",
"simkl": "Simkl",
"mal": "MyAnimeList",
"anilist": "AniList",
"trakt": "Trakt",
"rottenTomatoesCritic": "Критики Rotten Tomatoes",
"rottenTomatoesAudience": "Зрители Rotten Tomatoes"
}
},
"screens": {
@@ -120,7 +120,7 @@
"darkTheme": "Тёмная",
"oledTheme": "OLED",
"libraryDensity": "Плотность библиотеки",
"displayScale": "",
"displayScale": "Масштаб отображения",
"compact": "Компактный",
"comfortable": "Комфортный",
"tvCornerSpotlightBackdrop": "Фоновое изображение в углу",
@@ -170,11 +170,11 @@
"bufferSizeMB": "${size}МБ",
"bufferSizeAuto": "Авто (Рекомендуется)",
"bufferSizeWarning": "Доступно памяти: ${heap} МБ. Буфер размером ${size} МБ может повлиять на воспроизведение.",
"playbackBuffer": "",
"playbackBufferAuto": "",
"playbackBufferLarge": "",
"playbackBufferExtraLarge": "",
"playbackBufferDescription": "",
"playbackBuffer": "Буфер воспроизведения",
"playbackBufferAuto": "Авто (рекомендуется)",
"playbackBufferLarge": "Большой",
"playbackBufferExtraLarge": "Очень большой",
"playbackBufferDescription": "Буферизирует больше при нестабильном соединении. Также ограничено размером буфера.",
"defaultQualityTitle": "Качество по умолчанию",
"musicQualityTitle": "Качество музыки",
"subtitleStyling": "Стиль субтитров",
@@ -208,9 +208,9 @@
"debugLoggingDescription": "Включить подробное журналирование для устранения неполадок",
"viewLogs": "Просмотр логов",
"viewLogsDescription": "Просмотр логов приложения",
"clearImageCache": "",
"clearImageCacheDescription": "",
"clearImageCacheSuccess": "",
"clearImageCache": "Очистить кэш изображений",
"clearImageCacheDescription": "Очистить кэшированные обложки и миниатюры. Изображения могут загружаться медленнее, пока не будут загружены снова.",
"clearImageCacheSuccess": "Кэш изображений успешно очищен",
"resetSettings": "Сбросить настройки",
"resetSettingsDescription": "Восстановить настройки по умолчанию. Это нельзя отменить.",
"resetSettingsSuccess": "Настройки успешно сброшены",
@@ -402,118 +402,118 @@
},
"fileInfo": {
"title": "Информация о файле",
"overview": "",
"overview": "Обзор",
"video": "Видео",
"audio": "Аудио",
"subtitles": "Субтитры",
"images": "",
"dataStreams": "",
"lyrics": "",
"images": "Встроенные изображения",
"dataStreams": "Потоки данных",
"lyrics": "Текст песни",
"file": "Файл",
"attachments": "",
"delivery": "",
"versionCounter": "",
"fileCounter": "",
"noStreams": "",
"copyPath": "",
"pathCopied": "",
"attachments": "Вложения",
"delivery": "Доставка",
"versionCounter": "Версия ${index} из ${count}",
"fileCounter": "Файл ${index} из ${count}",
"noStreams": "Сервер не сообщил о потоках для этого файла.",
"copyPath": "Копировать путь",
"pathCopied": "Путь к файлу скопирован",
"codec": "Кодек",
"codecTag": "",
"codecTag": "Тег кодека",
"resolution": "Разрешение",
"codedResolution": "",
"codedResolution": "Кодированное разрешение",
"bitrate": "Битрейт",
"frameRate": "Частота кадров",
"rotation": "",
"comment": "",
"audioDescription": "",
"headerCompression": "",
"sidecarFile": "",
"transportTimestamp": "",
"displayOffset": "",
"previewFailureCode": "",
"previewRetries": "",
"rotation": "Поворот",
"comment": "Комментарий",
"audioDescription": "Аудиоописание",
"headerCompression": "Сжатие заголовков",
"sidecarFile": "Файл-спутник",
"transportTimestamp": "Метка времени транспорта",
"displayOffset": "Смещение отображения",
"previewFailureCode": "Код ошибки превью",
"previewRetries": "Повторные попытки превью",
"aspectRatio": "Соотношение сторон",
"pixelAspectRatio": "",
"pixelAspectRatio": "Попиксельное соотношение сторон",
"profile": "Профиль",
"level": "",
"level": "Уровень",
"bitDepth": "Глубина цвета",
"pixelFormat": "",
"pixelFormat": "Формат пикселей",
"colorSpace": "Цветовое пространство",
"colorRange": "Цветовой диапазон",
"colorPrimaries": "Основные цвета",
"colorTransfer": "",
"colorTransfer": "Передача цвета",
"chromaSubsampling": "Субдискретизация цветности",
"chromaLocation": "",
"scanType": "",
"interlaced": "",
"anamorphic": "",
"referenceFrames": "",
"dynamicRange": "",
"dolbyVision": "",
"dolbyVisionLevel": "",
"dolbyVisionVersion": "",
"dolbyVisionLayers": "",
"baseLayerCompatibility": "",
"avcBitstream": "",
"nalLengthSize": "",
"scalingMatrix": "",
"streamIdentifier": "",
"streamIndex": "",
"streamId": "",
"language": "",
"languageCode": "",
"streamTitle": "",
"chromaLocation": "Расположение цветности",
"scanType": "Тип развёртки",
"interlaced": "Чересстрочный",
"anamorphic": "Анаморфный",
"referenceFrames": "Опорные кадры",
"dynamicRange": "Динамический диапазон",
"dolbyVision": "Dolby Vision",
"dolbyVisionLevel": "Уровень Dolby Vision",
"dolbyVisionVersion": "Версия Dolby Vision",
"dolbyVisionLayers": "Слои Dolby Vision",
"baseLayerCompatibility": "Совместимость базового слоя",
"avcBitstream": "Битовый поток AVC",
"nalLengthSize": "Размер длины NAL",
"scalingMatrix": "Пользовательская матрица масштабирования",
"streamIdentifier": "Идентификатор потока",
"streamIndex": "Индекс потока",
"streamId": "ID потока",
"language": "Язык",
"languageCode": "Код языка",
"streamTitle": "Название дорожки",
"channels": "Каналы",
"sampleRate": "",
"spatialAudio": "",
"textBased": "",
"subtitleFormat": "",
"provider": "",
"matchScore": "",
"externalDelivery": "",
"sidecarPath": "",
"sourceStream": "",
"temporary": "",
"timeBase": "",
"sampleRate": "Частота дискретизации",
"spatialAudio": "Пространственное аудио",
"textBased": "Текстовый",
"subtitleFormat": "Формат файла-спутника",
"provider": "Провайдер",
"matchScore": "Оценка совпадения",
"externalDelivery": "Может передаваться отдельно",
"sidecarPath": "Путь к файлу-спутнику",
"sourceStream": "Скопировано из",
"temporary": "Временный",
"timeBase": "Временная база",
"overallBitrate": "Общий битрейт",
"path": "Путь",
"fileName": "",
"fileName": "Имя файла",
"size": "Размер",
"totalSize": "",
"totalSize": "Общий размер",
"container": "Контейнер",
"duration": "Длительность",
"previewThumbnails": "",
"previewIndex": "",
"packetLength": "",
"filePresent": "",
"fileReadable": "",
"streamPath": "",
"previewThumbnails": "Миниатюры превью",
"previewIndex": "Индекс превью",
"packetLength": "Длина пакета",
"filePresent": "Файл присутствует",
"fileReadable": "Доступен для чтения сервером",
"streamPath": "Путь потока",
"optimizedForStreaming": "Оптимизировано для потоковой передачи",
"has64bitOffsets": "64-битные смещения",
"protocol": "",
"mediaType": "",
"sourceKind": "",
"optimizedVersion": "",
"optimizationTarget": "",
"deletedAt": "",
"remoteSource": "",
"infiniteStream": "",
"directPlay": "",
"directStream": "",
"transcoding": "",
"etag": "",
"versionId": "",
"fileId": "",
"defaultAudioTrack": "",
"defaultSubtitleTrack": "",
"subtitlesOff": "",
"flagDefault": "",
"flagForced": "",
"flagSelected": "",
"flagExternal": "",
"flagHearingImpaired": "",
"flagDub": "",
"flagOriginal": ""
"protocol": "Протокол",
"mediaType": "Тип медиа",
"sourceKind": "Тип источника",
"optimizedVersion": "Оптимизированная версия",
"optimizationTarget": "Цель оптимизации",
"deletedAt": "Удалено",
"remoteSource": "Удалённый источник",
"infiniteStream": "Бесконечный поток",
"directPlay": "Прямое воспроизведение",
"directStream": "Прямой поток",
"transcoding": "Транскодирование",
"etag": "ETag",
"versionId": "ID версии",
"fileId": "ID файла",
"defaultAudioTrack": "Аудиодорожка по умолчанию",
"defaultSubtitleTrack": "Дорожка субтитров по умолчанию",
"subtitlesOff": "Выкл.",
"flagDefault": "По умолчанию",
"flagForced": "Принудительная",
"flagSelected": "Выбрана",
"flagExternal": "Внешняя",
"flagHearingImpaired": "Для слабослышащих",
"flagDub": "Дубляж",
"flagOriginal": "Оригинал"
},
"mediaMenu": {
"markAsWatched": "Отметить как просмотренное",
@@ -524,41 +524,41 @@
"shufflePlay": "Случайное воспроизведение",
"shuffleNotAvailableOffline": "Перемешивание недоступно офлайн",
"fileInfo": "Информация о файле",
"deleteEpisodeFromServer": "",
"deleteSeasonFromServer": "",
"deleteShowFromServer": "",
"deleteMovieFromServer": "",
"deleteEpisodeTitle": "",
"deleteSeasonTitle": "",
"deleteShowTitle": "",
"deleteMovieTitle": "",
"deleteEpisodeConfirm": "",
"deleteSeasonConfirm": "",
"deleteShowConfirm": "",
"deleteMovieConfirm": "",
"deleteAnyway": "",
"confirmDeleteTarget": "",
"deleteEpisodeFromServer": "Удалить эпизод с сервера",
"deleteSeasonFromServer": "Удалить сезон с сервера",
"deleteShowFromServer": "Удалить сериал с сервера",
"deleteMovieFromServer": "Удалить фильм с сервера",
"deleteEpisodeTitle": "Удалить этот эпизод?",
"deleteSeasonTitle": "Удалить этот сезон?",
"deleteShowTitle": "Удалить этот сериал?",
"deleteMovieTitle": "Удалить этот фильм?",
"deleteEpisodeConfirm": "Удалить эпизод",
"deleteSeasonConfirm": "Удалить сезон",
"deleteShowConfirm": "Удалить сериал",
"deleteMovieConfirm": "Удалить фильм",
"deleteAnyway": "Всё равно удалить",
"confirmDeleteTarget": "Навсегда удалить ${title} с вашего сервера?",
"deleteMultipleWarning": "Это включает все эпизоды и их файлы.",
"deleteEpisodeCountWarning": {
"one": "",
"few": "",
"many": "",
"other": ""
"one": "Это удалит содержащийся в нём ${n} эпизод и его файл.",
"few": "Это удалит содержащиеся в нём ${n} эпизода и их файлы.",
"many": "Это удалит содержащиеся в нём ${n} эпизодов и их файлы.",
"other": "Это удалит содержащиеся в нём ${n} эпизодов и их файлы."
},
"deleteMultiPartWarning": {
"one": "",
"few": "",
"many": "",
"other": ""
"one": "Этот элемент хранится как ${n} файл, который будет удалён.",
"few": "Этот элемент хранится в ${n} файлах, и все они будут удалены.",
"many": "Этот элемент хранится в ${n} файлах, и все они будут удалены.",
"other": "Этот элемент хранится в ${n} файлах, и все они будут удалены."
},
"deleteSharedFileHeading": {
"one": "",
"few": "",
"many": "",
"other": ""
"one": "В этом же файле хранится ещё ${n} эпизод, и он тоже будет удалён:",
"few": "В этом же файле хранятся ещё ${n} эпизода, и они тоже будут удалены:",
"many": "В этом же файле хранятся ещё ${n} эпизодов, и они тоже будут удалены:",
"other": "В этом же файле хранятся ещё ${n} эпизодов, и они тоже будут удалены:"
},
"deleteScopeUnverifiedProbeFailed": "",
"deleteScopeUnverifiedNoFileInfo": "",
"deleteScopeUnverifiedProbeFailed": "Plezy не смог проверить, какие файлы будут удалены, поэтому может быть удалено больше, чем указанный выше элемент. Отмените и попробуйте снова либо удалите в любом случае.",
"deleteScopeUnverifiedNoFileInfo": "Ваш сервер не предоставил сведения о файлах для этого элемента, поэтому Plezy не может проверить, какие файлы будут удалены. Может быть удалено больше, чем указанный выше элемент.",
"mediaDeletedSuccessfully": "Медиаэлемент успешно удалён",
"mediaFailedToDelete": "Не удалось удалить медиаэлемент",
"rate": "Оценить",
@@ -634,9 +634,9 @@
"playNext": "Следующее",
"playButton": "Воспроизвести",
"pauseButton": "Пауза",
"playbackPaused": "",
"playbackResumed": "",
"loadingVideo": "",
"playbackPaused": "На паузе",
"playbackResumed": "Воспроизведение",
"loadingVideo": "Загрузка видео",
"showPlaybackControls": "Показать элементы управления воспроизведением",
"hidePlaybackControls": "Скрыть элементы управления воспроизведением",
"seekBackwardButton": "Перемотать назад на ${seconds} с",
@@ -710,7 +710,7 @@
},
"removedFromContinueWatching": "Удалено из «Продолжить просмотр»",
"errorLoading": "Ошибка: ${error}",
"searchPartialResults": "",
"searchPartialResults": "Поиск по некоторым медиасерверам не удался. Показываем доступные результаты.",
"streamInterrupted": "Поток прервался. Нажмите «Воспроизвести» или перемотайте, чтобы повторить попытку.",
"liveStreamInterrupted": "Прямая трансляция прервалась. Нажмите «Воспроизвести», чтобы повторить попытку.",
"fileInfoNotAvailable": "Информация о файле недоступна",
@@ -749,8 +749,8 @@
"switchingToCompatiblePlayer": "Переключение на совместимый плеер...",
"serverLimitTitle": "Ошибка воспроизведения",
"serverLimitBody": "Ошибка сервера (HTTP 500). Лимит пропускной способности/транскодирования, вероятно, отклонил сессию. Попросите владельца изменить настройки.",
"mediaUnreadableTitle": "",
"mediaUnreadableBody": "",
"mediaUnreadableTitle": "Файл недоступен",
"mediaUnreadableBody": "Сервер нашёл этот элемент, но не смог прочитать его файл (HTTP 404). Вероятно, файл был перемещён, удалён или его хранилище недоступно. Попросите владельца сервера проверить файл и пересканировать библиотеку.",
"logsUploaded": "Логи загружены",
"logsUploadFailed": "Не удалось загрузить логи",
"logId": "ID лога"
@@ -869,8 +869,8 @@
"sessionExpiredOne": "Сессия истекла для ${name}",
"sessionExpiredMany": "Сессия истекла для ${count} серверов",
"signInAgain": "Войти снова",
"editMediaBrowserTitle": "",
"editMediaBrowserIntro": ""
"editMediaBrowserTitle": "Изменить подключение ${product}",
"editMediaBrowserIntro": "Добавьте или удалите URL-адреса для ${serverName}. Plezy будет использовать доступный URL с наименьшей задержкой."
},
"discover": {
"title": "Обзор",
@@ -900,7 +900,7 @@
},
"errors": {
"searchFailed": "Ошибка поиска: ${error}",
"searchUnavailable": "",
"searchUnavailable": "Поиску не удалось связаться ни с одним медиасервером.",
"connectionTimeout": "Таймаут подключения при загрузке ${context}",
"connectionFailed": "Не удалось подключиться к медиасерверу",
"unableToLoad": "Не удалось загрузить ${context}. Повторите попытку.",
@@ -1028,36 +1028,36 @@
"uploadLogs": "Загрузить логи"
},
"startup": {
"failedTitle": "",
"failedBody": "",
"failedBodyRepairable": "",
"phaseLabel": "",
"showDetails": "",
"hideDetails": "",
"copyDetails": "",
"detailsCopied": "",
"uploadDetails": "",
"repairStorage": "",
"repairTitle": "",
"repairBodyCommon": "",
"repairBodyOneCredential": "",
"repairBodySignInsKept": "",
"repairBodySignInsLost": "",
"repairBodySessionsUncertain": "",
"repairConfirm": "",
"repairSucceeded": "",
"repairNeedsRestart": "",
"restartRequiredBody": "",
"quitPlezy": "",
"repairFailed": "",
"repairKeptSignIns": "",
"repairLostSignIns": "",
"repairLostSessions": "",
"backupTitle": "",
"backupWarning": "",
"deleteBackup": "",
"backupDeleted": "",
"previousFailureTitle": ""
"failedTitle": "Plezy не удалось запустить",
"failedBody": "Во время запуска что-то пошло не так. Сведения ниже показывают, что именно не удалось.",
"failedBodyRepairable": "Сохранённый файл настроек Plezy повреждён, и его необходимо пересоздать, прежде чем Plezy сможет запуститься. Повторные попытки не помогут — выберите «Восстановить хранилище».",
"phaseLabel": "Шаг",
"showDetails": "Показать сведения",
"hideDetails": "Скрыть сведения",
"copyDetails": "Копировать сведения",
"detailsCopied": "Сведения скопированы в буфер обмена",
"uploadDetails": "Отправить сведения",
"repairStorage": "Восстановить хранилище",
"repairTitle": "Восстановить сохранённые данные?",
"repairBodyCommon": "Файл настроек Plezy повреждён и не может быть прочитан. Восстановление сбросит все настройки к значениям по умолчанию.",
"repairBodyOneCredential": "Одна сохранённая учётная запись повреждена и не может быть прочитана. Восстановление удалит только её; остальные настройки не будут затронуты.",
"repairBodySignInsKept": "Вход в ваши серверы и профили будет сохранён.",
"repairBodySignInsLost": "Ключ, защищающий сохранённые входы, невозможно восстановить из этого файла, поэтому вам придётся снова войти на каждый сервер и в каждый профиль. На вашем медиасервере ничего не изменится.",
"repairBodySessionsUncertain": "Трекеры (MAL, AniList, Simkl, Trakt) и Seerr хранятся отдельно и могут сохраниться или нет. Plezy точно сообщит, что удалось сохранить.",
"repairConfirm": "Восстановить",
"repairSucceeded": "Хранилище восстановлено",
"repairNeedsRestart": "Хранилище восстановлено — требуется перезапуск",
"restartRequiredBody": "Ваши данные были восстановлены, но Plezy должен запуститься заново, чтобы использовать их. Закройте Plezy и откройте его снова.",
"quitPlezy": "Выйти из Plezy",
"repairFailed": "Не удалось восстановить",
"repairKeptSignIns": "Ваши серверы и профили по-прежнему в системе.",
"repairLostSignIns": "Ключ, защищающий сохранённые входы, не удалось восстановить. Вам придётся снова войти на каждый сервер и в каждый профиль.",
"repairLostSessions": "Потеряно как минимум одно подключение трекера или Seerr — его нужно восстановить.",
"backupTitle": "Сохранена копия повреждённого файла",
"backupWarning": "Она содержит ваши учётные данные для входа. Не загружайте и не передавайте её.",
"deleteBackup": "Удалить копию",
"backupDeleted": "Копия удалена.",
"previousFailureTitle": "В прошлый раз Plezy не удалось запустить"
},
"licenses": {
"relatedPackages": "Связанные пакеты",
@@ -1068,7 +1068,7 @@
"navigation": {
"libraries": "Библиотеки",
"downloads": "Загрузки",
"liveTv": "ТВ в прямом эфире",
"liveTv": "Прямой эфир",
"explore": "Обзор"
},
"explore": {
@@ -1117,140 +1117,140 @@
"searchPrompt": "Ищите фильмы и сериалы в ${source}.",
"searchFailed": "Ошибка поиска. Проверьте подключение и повторите попытку.",
"badge": {
"rankPopular": "",
"rankAiring": "",
"rankRated": "",
"rankFavorited": "",
"rankTrending": "",
"rankSeasonal": "",
"watchingNow": "",
"available": "",
"partiallyAvailable": "",
"availableIn4k": "",
"requested": "",
"pendingApproval": "",
"processing": "",
"declined": "",
"requestFailed": "",
"requested4k": "",
"seasonsAvailable": "",
"nextEpisodeIn": "",
"nextAiringIn": "",
"episodesShort": "",
"minutesPerEpisode": "",
"adult": ""
"rankPopular": "#${n} по популярности",
"rankAiring": "#${n} в эфире",
"rankRated": "#${n} по оценкам",
"rankFavorited": "#${n} по избранному",
"rankTrending": "#${n} в тренде",
"rankSeasonal": "#${n} в сезоне ${season}",
"watchingNow": "${n} смотрят",
"available": "Доступно",
"partiallyAvailable": "Доступно частично",
"availableIn4k": "Доступно в 4K",
"requested": "Запрошено",
"pendingApproval": "Ожидает одобрения",
"processing": "В обработке",
"declined": "Отклонено",
"requestFailed": "Запрос не удался",
"requested4k": "Запрошено в 4K",
"seasonsAvailable": "${available}/${total} сезонов",
"nextEpisodeIn": "Серия ${episode} через ${duration}",
"nextAiringIn": "Далее через ${duration}",
"episodesShort": "${n} эп.",
"minutesPerEpisode": "${n} мин/эп.",
"adult": "18+"
},
"stats": {
"listed": "",
"viewersDay": "",
"viewersWeek": "",
"viewersMonth": "",
"viewersYear": "",
"viewersAllTime": "",
"planning": "",
"favorited": "",
"dropRate": "",
"listed": "${n} в списках",
"viewersDay": "${n} посмотрели сегодня",
"viewersWeek": "${n} посмотрели на этой неделе",
"viewersMonth": "${n} посмотрели в этом месяце",
"viewersYear": "${n} посмотрели в этом году",
"viewersAllTime": "${n} зрителей",
"planning": "${n} планируют посмотреть",
"favorited": "${n} в избранном",
"dropRate": "${percent} бросили",
"comments": {
"one": "",
"few": "",
"many": "",
"other": ""
"one": "${n} комментарий",
"few": "${n} комментария",
"many": "${n} комментариев",
"other": "${n} комментариев"
},
"votes": "",
"watching": "",
"completed": "",
"onHold": "",
"dropped": ""
"votes": "${n} голосов",
"watching": "${n} смотрят",
"completed": "${n} завершили",
"onHold": "${n} отложили",
"dropped": "${n} бросили"
},
"season": {
"winter": "",
"spring": "",
"summer": "",
"fall": "",
"withYear": ""
"winter": "Зима",
"spring": "Весна",
"summer": "Лето",
"fall": "Осень",
"withYear": "${season} ${year}"
},
"format": {
"tv": "",
"tvShort": "",
"movie": "",
"special": "",
"ova": "",
"ona": "",
"music": "",
"other": ""
"tv": "ТВ",
"tvShort": "Короткометражное ТВ",
"movie": "Фильм",
"special": "Спецвыпуск",
"ova": "OVA",
"ona": "ONA",
"music": "Музыка",
"other": "Другое"
},
"sourceMaterial": {
"original": "",
"manga": "",
"lightNovel": "",
"novel": "",
"visualNovel": "",
"game": "",
"webComic": "",
"musicRelease": "",
"otherMedia": ""
"original": "Оригинал",
"manga": "Манга",
"lightNovel": "Ранобэ",
"novel": "Новелла",
"visualNovel": "Визуальная новелла",
"game": "Игра",
"webComic": "Веб-комикс",
"musicRelease": "Музыка",
"otherMedia": "Другое"
},
"creditRole": {
"director": "",
"writer": "",
"producer": "",
"creator": "",
"composer": ""
"director": "Режиссёр",
"writer": "Сценарист",
"producer": "Продюсер",
"creator": "Создатель",
"composer": "Композитор"
},
"relation": {
"prequel": "",
"sequel": "",
"sideStory": "",
"spinOff": "",
"alternativeVersion": "",
"summary": "",
"parentStory": "",
"adaptation": "",
"other": ""
"prequel": "Приквел",
"sequel": "Сиквел",
"sideStory": "Побочная история",
"spinOff": "Спин-офф",
"alternativeVersion": "Альтернативная версия",
"summary": "Краткое изложение",
"parentStory": "Основная история",
"adaptation": "Адаптация",
"other": "Связано"
},
"broadcast": "",
"broadcastWithZone": "",
"broadcast": "Выходит ${day} в ${time}",
"broadcastWithZone": "Выходит ${day} в ${time} ${timezone}",
"detail": {
"originalTitle": "",
"alsoKnownAs": "",
"studios": "",
"country": "",
"language": "",
"released": "",
"physicalRelease": "",
"ended": "",
"addedOn": "",
"yourRating": "",
"budget": "",
"revenue": "",
"contentAdvisory": "",
"tags": "",
"revealSpoilerTags": "",
"links": "",
"watchOn": "",
"watchTrailer": "",
"openOn": "",
"crew": "",
"ratings": "",
"schedule": "",
"originalTitle": "Оригинальное название",
"alsoKnownAs": "Также известен как",
"studios": "Студии",
"country": "Страна",
"language": "Язык",
"released": "Выпущено",
"physicalRelease": "На диске",
"ended": "Завершено",
"addedOn": "Добавлено ${date}",
"yourRating": "Ваша оценка",
"budget": "Бюджет",
"revenue": "Сборы",
"contentAdvisory": "Возрастные ограничения",
"tags": "Теги",
"revealSpoilerTags": "Показать теги со спойлерами",
"links": "Ссылки",
"watchOn": "Смотреть на",
"watchTrailer": "Смотреть трейлер",
"openOn": "Открыть на ${site}",
"crew": "Съёмочная группа",
"ratings": "Рейтинги",
"schedule": "Расписание",
"recommendedByUsers": {
"one": "",
"few": "",
"many": "",
"other": ""
"one": "Рекомендуют ${n} пользователь",
"few": "Рекомендуют ${n} пользователя",
"many": "Рекомендуют ${n} пользователей",
"other": "Рекомендуют ${n} пользователей"
},
"recommendedBy": "",
"favoritedBy": "",
"unairedEpisodes": "",
"recommendedByPercent": "",
"relatedTitles": "",
"background": ""
"recommendedBy": "Рекомендовано: ${who}",
"favoritedBy": "В избранном у ${who}",
"unairedEpisodes": "${n} ещё не вышли",
"recommendedByPercent": "Рекомендуют ${percent} зрителей",
"relatedTitles": "Связанные названия",
"background": "Фон"
},
"totalResults": {
"one": "",
"few": "",
"many": "",
"other": ""
"one": "${n} результат",
"few": "${n} результата",
"many": "${n} результатов",
"other": "${n} результатов"
}
},
"liveTv": {
@@ -1519,15 +1519,15 @@
"editSyncRule": "Редактировать правило синхронизации",
"removeSyncRule": "Удалить правило синхронизации",
"removeSyncRuleConfirm": "Прекратить синхронизацию «${title}»? Скачанные эпизоды будут сохранены.",
"removeListSyncRuleConfirm": "",
"deleteSyncRuleDownloads": "",
"deleteSyncRuleDownloadsDescription": "",
"removeListSyncRuleConfirm": "Прекратить синхронизацию \"${title}\"?",
"deleteSyncRuleDownloads": "Также удалить связанные загрузки",
"deleteSyncRuleDownloadsDescription": "Загрузки, используемые другим правилом синхронизации или профилем, будут сохранены.",
"syncRuleCreated": "Правило синхронизации создано — хранится ${count} непросмотренных эпизодов",
"syncRuleUpdated": "Правило синхронизации обновлено",
"syncRuleRemoved": "Правило синхронизации удалено",
"syncRuleAndDownloadsRemoved": "",
"syncRuleCleanupBusy": "",
"syncRuleCleanupUnavailable": "",
"syncRuleAndDownloadsRemoved": "Правило синхронизации и связанные загрузки удалены",
"syncRuleCleanupBusy": "Правила синхронизации сейчас обновляются. Попробуйте снова чуть позже.",
"syncRuleCleanupUnavailable": "Не удалось надёжно определить связанные загрузки. Переподключите сервер и повторите попытку либо удалите правило без удаления загрузок.",
"syncedNewEpisodes": "Синхронизировано ${count} новых эпизодов для ${title}",
"activeSyncRules": "Правила синхронизации",
"noSyncRules": "Нет правил синхронизации",
@@ -1892,7 +1892,7 @@
"anilist": "AniList",
"simkl": "Simkl",
"seerr": "Seerr",
"mdblist": ""
"mdblist": "MDBList"
},
"deviceCode": {
"title": "Активируйте Plezy в ${service}",
@@ -1925,12 +1925,12 @@
}
},
"addServer": {
"addMediaBrowserTitle": "",
"addMediaBrowserTitle": "Добавить сервер ${product}",
"serverUrls": "URL-адреса сервера",
"serverUrlsHelper": "Можно указать несколько URL через запятую.",
"findServer": "Найти сервер",
"searchingLocalMediaBrowserServers": "",
"localMediaBrowserServers": "",
"searchingLocalMediaBrowserServers": "Поиск локальных серверов ${product}...",
"localMediaBrowserServers": "Локальные серверы ${product}",
"username": "Имя пользователя",
"password": "Пароль",
"signIn": "Войти",
@@ -1942,15 +1942,15 @@
"addPlexTitle": "Войти через Plex",
"pinExpired": "Срок действия PIN истёк до входа. Попробуйте снова.",
"failedToRegisterAccount": "Не удалось зарегистрировать учётную запись: ${error}",
"enterMediaBrowserUrlError": "",
"enterMediaBrowserUrlError": "Введите URL вашего сервера ${product}",
"addConnectionTitle": "Добавить подключение",
"addConnectionTitleScoped": "Добавить в ${name}",
"signInWithPlexCard": "Войти через Plex",
"signInWithPlexCardSubtitle": "Авторизуйте это устройство. Общие серверы будут добавлены.",
"signInWithPlexCardSubtitleScoped": "Авторизуйте аккаунт Plex. Пользователи Home станут профилями.",
"connectToMediaBrowserCard": "",
"connectToMediaBrowserCardSubtitle": "",
"connectToMediaBrowserCardSubtitleScoped": "",
"connectToMediaBrowserCard": "Подключиться к ${product}",
"connectToMediaBrowserCardSubtitle": "Введите URL сервера, имя пользователя и пароль.",
"connectToMediaBrowserCardSubtitleScoped": "Войдите на свой сервер ${product}. Будет привязано к ${name}.",
"borrowFromAnotherProfile": "Использовать подключение другого профиля",
"borrowFromAnotherProfileSubtitle": "Повторно используйте подключение другого профиля. Для защищённых профилей потребуется PIN."
}