Files
Psychotoxical-psysonic/src/locales/ru/settings.ts
T
Psychotoxical 028eb65f7d feat(titlebar): selectable window button styles + minimize toggle (#1083)
* feat(titlebar): selectable window button styles + minimize toggle

Custom title bar (Linux) gains a window-button style picker, mirroring
the seekbar style picker pattern. Six form-named styles: dots, dotsGlyph,
flat, pill, outline, glyph. All buttons now carry minimize/maximize/close
glyphs for clear, colour-blind-friendly iconography; dots reveal glyphs on
hover, dotsGlyph always shows them.

- New authStore state windowButtonStyle (default dots) + showMinimizeButton,
  with rehydrate validation falling back to dots on unknown values.
- WindowButtonPreview reuses the real .titlebar-btn classes for WYSIWYG tiles.
- Picker + minimize toggle render under the Custom title bar setting, gated
  on the toggle being on.
- Monochrome styles use --text-primary glyphs and stronger borders for
  contrast on dark themes.
- Dev-build grey marker scoped to the real title bar so previews show true
  colours.
- i18n keys in all 9 locales; setter and rehydrate tests.

* docs(changelog): window button styles (#1083)
2026-06-13 23:52:56 +02:00

710 lines
63 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 settings = {
title: 'Настройки',
language: 'Язык',
languageEn: 'English',
languageDe: 'Deutsch',
languageEs: 'Español',
languageFr: 'Français',
languageNl: 'Nederlands',
languageNb: 'Norsk',
languageRu: 'Русский',
languageZh: '中文',
languageRo: 'Română',
font: 'Шрифт',
fontHintOpenDyslexic: 'Подходит для дислексии · без поддержки китайского',
theme: 'Тема',
appearance: 'Оформление',
servers: 'Серверы',
serverName: 'Название',
serverUrl: 'Адрес',
serverUrlPlaceholder: '192.168.1.100:4533 или https://music.example.com',
serverAlternateUrl: 'Второй адрес (необязательно)',
serverAlternateUrlPlaceholderPublic: 'https://music.example.com',
serverAlternateUrlPlaceholderLocal: '192.168.1.100:4533',
serverAlternateUrlHintAddPublic: 'Добавьте публичный адрес, чтобы подключаться вне домашней сети.',
serverAlternateUrlHintAddLocal: 'Добавьте локальный адрес для более быстрой связи дома.',
serverBothLanError: 'Оба адреса локальные — оставьте один или добавьте публичный.',
dualAddressVerifying: 'Проверяем, что оба адреса указывают на один и тот же сервер…',
dualAddressMismatch: 'Адреса ведут к разным серверам. Проверьте написание и попробуйте снова.',
dualAddressInsufficient: 'Не удалось убедиться, что это один сервер. Удалите один адрес, чтобы продолжить.',
dualAddressUnreachable: 'Не удалось достучаться до {{host}}. Проверьте адрес и сеть, затем попробуйте снова.',
urlRemigrationTitle: 'Переместить данные библиотеки?',
urlRemigrationMessage: 'Смена адреса перенесёт все данные библиотеки, анализа и кэша обложек с {{oldKey}} на {{newKey}}. Это нельзя отменить.',
urlRemigrationConfirm: 'Переместить данные',
urlRemigrationProgress: 'Перемещаем данные библиотеки…',
urlRemigrationFailureInspect: 'Не удалось проверить, что нужно перенести. Попробуйте снова или откройте журнал отладки.',
urlRemigrationFailureRun: 'Не удалось перенести данные библиотеки. Сохранённые данные не изменены — попробуйте снова.',
urlRemigrationFailureCoverRename: 'Данные библиотеки перенесены, но файлы обложек не удалось переименовать. Обложки восстановятся при следующем обращении.',
shareUsesLocalUrl: 'Использовать локальный адрес в ссылках общего доступа',
shareUsesLocalUrlDesc: 'Применяется к приглашениям Orbit и ссылкам на библиотеку. По умолчанию — публичный адрес.',
serverUsername: 'Логин',
serverPassword: 'Пароль',
addServer: 'Добавить сервер',
addServerTitle: 'Новый сервер',
editServer: 'Изменить',
editServerTitle: 'Изменить сервер',
useServer: 'Выбрать',
deleteServer: 'Удалить',
noServers: 'Нет сохранённых серверов.',
serverActive: 'Активен',
serverVersionUnknown: 'Версия сервера неизвестна',
confirmDeleteServer: 'Удалить сервер «{{name}}»?',
serverConnecting: 'Подключение…',
serverConnected: 'Подключено!',
serverFailed: 'Ошибка подключения.',
testBtn: 'Проверить',
testingBtn: 'Проверка…',
serverCompatible: 'Разработано для Navidrome. Другие Subsonic-совместимые серверы (Gonic, Airsonic, …) могут работать с ограничениями, так как Psysonic использует много специфичных для Navidrome API-эндпоинтов.',
userMgmtTitle: 'Управление пользователями',
userMgmtDesc: 'Управляйте пользователями этого сервера. Требуются права администратора.',
userMgmtNoAdmin: 'Для управления пользователями на этом сервере нужны права администратора.',
userMgmtLoadError: 'Не удалось загрузить пользователей.',
userMgmtLoadFriendly: 'Сервер не ответил — обычно разовая ошибка.',
userMgmtRetry: 'Повторить',
userMgmtEmpty: 'Пользователи не найдены.',
userMgmtYouBadge: 'Вы',
userMgmtAdminBadge: 'Админ',
userMgmtAddUser: 'Добавить пользователя',
userMgmtAddUserTitle: 'Новый пользователь',
userMgmtEditUserTitle: 'Изменить пользователя',
userMgmtUsername: 'Имя пользователя',
userMgmtName: 'Отображаемое имя',
userMgmtEmail: 'E-mail',
userMgmtPassword: 'Пароль',
userMgmtPasswordEditHint: 'Введите новый пароль, чтобы изменить его.',
userMgmtRoleAdmin: 'Админ',
userMgmtLibraries: 'Библиотеки',
userMgmtLibrariesAdminHint: 'Администраторы автоматически имеют доступ ко всем библиотекам.',
userMgmtLibrariesEmpty: 'На этом сервере нет доступных библиотек.',
userMgmtLibrariesValidation: 'Выберите хотя бы одну библиотеку.',
userMgmtLibrariesUpdateError: 'Пользователь сохранён, но не удалось назначить библиотеки',
userMgmtNoLibraries: 'Библиотеки не назначены',
userMgmtNeverSeen: 'Никогда',
userMgmtSave: 'Сохранить',
userMgmtCancel: 'Отмена',
userMgmtDelete: 'Удалить',
userMgmtEdit: 'Изменить',
userMgmtConfirmDelete: 'Удалить пользователя «{{username}}»? Действие нельзя отменить.',
userMgmtCreateError: 'Не удалось создать пользователя.',
userMgmtUpdateError: 'Не удалось обновить пользователя.',
userMgmtDeleteError: 'Не удалось удалить пользователя.',
userMgmtCreated: 'Пользователь создан.',
userMgmtUpdated: 'Пользователь обновлён.',
userMgmtDeleted: 'Пользователь удалён.',
userMgmtValidationMissing: 'Требуются имя пользователя, отображаемое имя и пароль.',
userMgmtValidationMissingIdentity: 'Укажите имя пользователя и отображаемое имя.',
userMgmtMagicStringGenerate: 'Сгенерировать magic string',
userMgmtSaveAndMagicString: 'Сохранить и получить magic string',
userMgmtMagicStringPasswordNavHint:
'Navidrome сохранит этот пароль для пользователя. Если он не совпадает с текущим, на сервере будет установлен новый пароль входа.',
userMgmtMagicStringPlaintextWarning:
'Передавайте magic string осторожно: в ней пароль в открытом виде (кодирование — не шифрование). У кого есть полная строка, тот может войти под этим пользователем.',
userMgmtMagicStringCopied: 'Magic string скопирован в буфер обмена.',
userMgmtMagicStringCopyFailed: 'Не удалось скопировать в буфер обмена.',
userMgmtMagicStringLoginFailed: 'Пароль не подошёл — не удалось проверить учётные данные.',
userMgmtMagicStringModalTitle: 'Сгенерировать magic string',
userMgmtMagicStringModalDesc: 'Введите пароль Subsonic для «{{username}}» — он попадёт в копируемую magic string.',
userMgmtMagicStringModalConfirm: 'Скопировать строку',
audiomuseTitle: 'AudioMuse-AI (Navidrome)',
audiomuseBadge: 'AudioMuse-AI',
audiomuseStatusActive: 'Активно',
audiomuseStatusChecking: 'Проверка…',
audiomuseStatusNotDetected: 'Не обнаружено',
audiomuseStatusProbeFailed: 'Ошибка проверки',
audiomuseDesc:
'Включите, если на этом сервере настроен <pluginLink>плагин AudioMuse-AI для Navidrome</pluginLink>. Появится Instant Mix для треков, а на странице исполнителя похожие будут браться с сервера вместо Last.fm.',
audiomuseIssueHint:
'Недавно не удалось собрать Instant Mix — проверьте плагин Navidrome и API AudioMuse. Похожие исполнители подтянутся с Last.fm, если сервер ничего не вернёт.',
connected: 'Подключено',
failed: 'Ошибка',
eqTitle: 'Эквалайзер',
eqEnabled: 'Включить эквалайзер',
eqPreset: 'Пресет',
eqPresetCustom: 'Свой',
eqPresetBuiltin: 'Встроенные',
eqPresetCustomGroup: 'Мои пресеты',
eqSavePreset: 'Сохранить как пресет',
eqPresetName: 'Название пресета…',
eqDeletePreset: 'Удалить пресет',
eqResetBands: 'Сбросить полосы',
eqPreGain: 'Предусиление',
eqResetPreGain: 'Сбросить предусиление',
eqAutoEqTitle: 'AutoEQ — поиск профиля наушников',
eqAutoEqPlaceholder: 'Модель наушников или IEM…',
eqAutoEqSearching: 'Поиск…',
eqAutoEqNoResults: 'Ничего не найдено',
eqAutoEqError: 'Ошибка поиска',
eqAutoEqRateLimit: 'Лимит GitHub — попробуйте через минуту',
eqAutoEqFetchError: 'Не удалось загрузить профиль EQ',
behavior: 'Поведение',
cacheTitle: 'Макс. размер кэша',
cacheDesc:
'Кэш обложек и фото исполнителей в хранилище приложения (IndexedDB). При нехватке места старые записи удаляются автоматически.',
cacheUsedImages: 'Изображения:',
cacheUsedOffline: 'Офлайн-треки:',
cacheUsedHot: 'На диске:',
hotCacheTrackCount: 'Треков в кэше:',
cacheMaxLabel: 'Лимит',
imageCacheScopeLabel: 'Область',
imageCacheSubTitle: 'Превью в приложении',
coverDiskCacheSubTitle: 'Обложки на диске',
coverCacheStrategyTitle: 'Кэш обложек',
coverCacheStrategyDesc: 'Для каждого сервера можно выбрать стратегию: Ленивый — загружать обложки по мере необходимости; Агрессивный — то же самое плюс дополнительный фоновый прогрев.',
coverCacheStrategyLabel: 'Стратегия',
coverCacheStrategyServerLabel: 'Сервер',
coverCacheStrategyProgressLabel: 'Кэш',
coverCacheStrategyActionsLabel: 'Действия',
coverCacheStrategyLazy: 'Ленивый',
coverCacheStrategyLazyDesc: 'Загружает обложки только когда они нужны.',
coverCacheStrategyAggressive: 'Агрессивный',
coverCacheStrategyAggressiveDesc: 'Как ленивый, но с дополнительным фоновым прогревом.',
coverCacheStrategyDiskUsage: 'На диске: {{size}}',
coverCacheStrategyProgressValue: '{{percent}}% ({{done}}/{{total}}) · {{size}}',
coverCacheStrategyClearAction: 'Очистить кэш обложек',
coverCacheStrategyClearTitle: 'Очистить кэш обложек?',
coverCacheStrategyClearDesc: 'Удалить все кэшированные обложки для {{server}}. При необходимости скачаются снова.',
coverCacheStrategyClearConfirm: 'Очистить',
coverCacheStrategyClearCancel: 'Отмена',
coverCacheStrategyClearSuccess: 'Кэш обложек для этого сервера очищен.',
coverCacheStrategyClearError: 'Не удалось очистить кэш обложек.',
coverCacheStrategyServerRemoved: 'удалённый сервер',
cacheClearBtn: 'Очистить кэш',
cacheClearWarning: 'Очистит кэш обложек и фото исполнителей в хранилище приложения. При необходимости скачаются снова.',
cacheClearConfirm: 'Очистить кэш изображений',
cacheClearCancel: 'Отмена',
waveformCacheCleared: 'Кэш waveform очищен ({{count}} строк).',
waveformCacheClearFailed: 'Не удалось очистить кэш waveform.',
storageTabTitle: 'Офлайн и кэш',
mediaDirTitle: 'Папка медиа',
mediaDirDesc: 'Корневая папка локального воспроизведения: офлайн-библиотека — library/, буфер очереди — cache/.',
mediaDirDefault: 'По умолчанию (данные приложения)',
mediaDirChange: 'Сменить папку',
mediaDirClear: 'Сбросить по умолчанию',
mediaDirHint: 'Новые загрузки пойдут в выбранную папку. Старые файлы останутся на прежних путях, пока вы их не удалите.',
offlineStorageTitle: 'Офлайн-хранилище',
offlineDirTitle: 'Офлайн-библиотека (в приложении)',
offlineDirDesc: 'Папка для треков, сохранённых для офлайн-прослушивания.',
offlineDirDefault: 'По умолчанию (данные приложения)',
offlineDirChange: 'Сменить папку',
offlineDirClear: 'Сбросить по умолчанию',
offlineDirHint: 'Новые загрузки пойдут в выбранную папку. Старые останутся на прежнем месте.',
hotCacheTitle: 'Горячий кэш воспроизведения',
hotCacheDisclaimer: 'Заранее подгружает следующие треки из очереди и сохраняет предыдущие. При включении использует место на диске и сеть.',
hotCacheDirDefault: 'По умолчанию (данные приложения)',
hotCacheDirChange: 'Сменить папку',
hotCacheDirClear: 'Сбросить по умолчанию',
hotCacheDirHint: 'При смене папки сбрасывается список в приложении; уже скачанные файлы остаются на старом пути, пока вы их не удалите.',
hotCacheEnabled: 'Включить горячий кэш воспроизведения',
hotCacheMaxMb: 'Максимальный размер кэша',
hotCacheDebounce: 'Задержка после изменения очереди',
hotCacheDebounceImmediate: 'Сразу',
hotCacheDebounceSeconds: '{{n}} с',
hotCacheClearBtn: 'Очистить горячий кэш',
audioOutputDevice: 'Устройство вывода звука',
audioOutputDeviceDesc: 'Выберите аудиоустройство для воспроизведения. Изменения применяются немедленно и перезапускают текущий трек.',
audioOutputDeviceDefault: 'Системное по умолчанию',
audioOutputDeviceRefresh: 'Обновить список устройств',
audioOutputDeviceOsDefaultNow: 'текущий системный вывод',
audioOutputDeviceListError: 'Не удалось загрузить список аудиоустройств.',
audioOutputDeviceNotInCurrentList: 'нет в текущем списке',
audioOutputDeviceMacNotice: 'В macOS воспроизведение в настоящее время всегда следует за системным устройством вывода по техническим причинам. Измените цель через Системные настройки → Звук или значок динамика в строке меню. Причина: CoreAudio запрашивает разрешение на использование микрофона при открытии не-стандартного потока — мы избегаем этого, всегда используя системный вывод по умолчанию.',
hiResTitle: 'Нативное воспроизведение Hi-Res',
hiResEnabled: 'Включить нативное Hi-Res воспроизведение',
hiResDesc: "По умолчанию вывод ограничен до 44,1 кГц для максимальной стабильности. Включайте только если оборудование и сеть надёжно поддерживают высокие частоты (88,2 кГц+).",
showArtistImages: 'Фото исполнителей',
showArtistImagesDesc:
'Показывать обложки в разделе «Исполнители». По умолчанию выключено — меньше нагрузки на диск и сеть.',
showOrbitTrigger: 'Показывать «Orbit» в шапке',
showOrbitTriggerDesc: 'Кнопка в шапке для запуска или присоединения к совместной сессии. Скрой, если не используешь Orbit — здесь же можно включить обратно.',
showTrayIcon: 'Иконка в трее',
showTrayIconDesc: 'Показывать Psysonic в области уведомлений / строке меню.',
minimizeToTray: 'Сворачивать в трей',
minimizeToTrayDesc: 'При закрытии окна не выходить из приложения, а оставаться в трее.',
clockFormat: 'Формат времени',
clockFormatDesc: 'Формат времени для ETA очереди и предпросмотра таймера сна.',
clockFormatAuto: 'Авто (системный)',
clockFormatTwentyFour: '24-часовой',
clockFormatTwelve: '12-часовой (AM/PM)',
preloadMiniPlayer: 'Предзагрузка мини-плеера',
preloadMiniPlayerDesc: 'Создаёт окно мини-плеера в фоне при запуске приложения, чтобы при первом открытии содержимое отображалось мгновенно. Использует немного больше памяти.',
useCustomTitlebar: 'Своя строка заголовка',
useCustomTitlebarDesc:
'Заменить системную строку заголовка встроенной, в стиле темы приложения. Отключите, чтобы использовать родную строку GNOME/GTK и т.д.',
windowButtonStyle: 'Кнопки окна',
windowButtonStyleDesc: 'Выберите вид кнопок свернуть, развернуть и закрыть.',
windowButtonsDots: 'Кружки',
windowButtonsDotsGlyph: 'Кружки + значки',
windowButtonsFlat: 'Плоские',
windowButtonsPill: 'Пилюля',
windowButtonsOutline: 'Контур',
windowButtonsGlyph: 'Минимал',
showMinimizeButton: 'Показывать кнопку «Свернуть»',
showMinimizeButtonDesc: 'Выключите, чтобы показывать только «Развернуть» и «Закрыть».',
linuxWebkitSmoothScroll: 'Плавное колесо (Linux)',
linuxWebkitSmoothScrollDesc: 'Вкл — инерция. Выкл — по шагам, как в GTK.',
linuxWebkitInputForceRepaint: 'Перерисовывать поля ввода при фокусе (Linux)',
linuxWebkitInputForceRepaintDesc: 'Обход проблемы WebKitGTK 2.50.x, когда текстовые поля зависают при клике. Иконки поиска кратко мигают при фокусе.',
linuxWaylandTextRender: 'Рендеринг текста Wayland (Linux)',
linuxWaylandTextRenderDesc:
'Сглаживание в интерфейсе меняется сразу. Политику ускорения WebKit (чёткий / GPU) сохраняем и применяем при следующем запуске — переключение на лету на части сборок зависает в WebKitGTK.',
linuxWaylandTextRenderBalanced: 'Сбалансированный',
linuxWaylandTextRenderSharp: 'Чёткий (меньше GPU)',
linuxWaylandTextRenderGpu: 'С приоритетом GPU',
linuxWaylandTextRenderMinimal: 'Минимальный (сглаживание по умолчанию)',
discordRichPresence: 'Статус в Discord',
discordRichPresenceDesc:
'Показывать текущий трек в профиле и статусе Discord. Нужен запущенный клиент Discord.',
discordRichPresenceNotice: 'Внимание: это встроенная Discord Rich Presence в Psysonic. Если вы хотите использовать официальный плагин Discord Rich Presence для Navidrome, оставьте эту функцию выключенной и вместо этого включите «Показывать в „Сейчас играет"» ниже на этой странице.',
discordCoverSource: 'Источник обложки',
discordCoverSourceDesc: 'Откуда загружать обложку альбома для профиля Discord.',
discordCoverNone: 'Нет (только иконка приложения)',
discordCoverServer: 'Сервер (через информацию об альбоме)',
discordCoverApple: 'Apple Music',
discordOptions: 'Расширенные параметры Discord',
discordTemplates: 'Пользовательские шаблоны текста',
discordTemplatesDesc: 'Настройте, какая информация отображается в профиле Discord. Переменные: {title}, {artist}, {album}',
discordTemplateDetails: 'Основная строка (details)',
discordTemplateState: 'Вторичная строка (state)',
discordTemplateLargeText: 'Подсказка альбома (largeText)',
discordTemplateName: 'Строка в списке пользователей (name)',
nowPlayingEnabled: 'Показывать в «Сейчас играет»',
nowPlayingEnabledDesc:
'Отправлять на сервер, что вы сейчас слушаете. Отключите, чтобы не делиться этим.',
nowPlayingPluginNote: 'Необходимо при использовании официального плагина Discord Rich Presence для Navidrome.',
enableBandsintown: 'Даты туров Bandsintown',
enableBandsintownDesc: 'Показывает предстоящие концерты текущего исполнителя на вкладке «Инфо». Данные берутся из публичного API Bandsintown.',
lyricsServerFirst: 'Предпочитать тексты с сервера',
lyricsServerFirstDesc: 'Проверять тексты песен, предоставленные сервером (встроенные теги, sidecar-файлы) перед запросом LRCLIB. Отключите, чтобы сначала использовать LRCLIB.',
enableNeteaselyrics: 'Тексты из Netease Cloud Music',
enableNeteaselyricsDesc: 'Использовать Netease Cloud Music как последний источник текстов, когда остальные способы не находят ничего. Лучшее покрытие для азиатской и международной музыки.',
lyricsSourcesTitle: 'Источники текстов',
lyricsSourcesDesc: 'Выберите источники для поиска текстов и их порядок. Перетаскивайте для сортировки. Отключённые источники пропускаются.',
lyricsSourceServer: 'Сервер',
lyricsSourceLrclib: 'LRCLIB',
lyricsSourceNetease: 'Netease Cloud Music',
lyricsYouLyPlus: 'YouLyPlus (Караоке)',
lyricsYouLyPlusDesc: 'Синхронизация слово-в-слово из общественного бэкенда (Apple Music, Spotify, Musixmatch, QQ). Пробуется первым; включённые источники ниже служат запасным вариантом.',
lyricsSourcesFallbackHint: 'Используются как запасной вариант, когда YouLyPlus ничего не находит. Перетащите для изменения порядка.',
lyricsSourcesPrimaryHint: 'Пробуются по порядку. Перетащите для изменения порядка. Всё выключено = текст отключён.',
lyricsStaticOnly: 'Показывать текст статично',
lyricsStaticOnlyDesc: 'Синхронизированный текст отображается без авто-прокрутки и подсветки слов.',
downloadsTitle: 'Экспорт ZIP и архивов',
downloadsFolderDesc: 'Куда сохранять альбомы в ZIP архиве на диск.',
downloadsDefault: 'Папка «Загрузки» по умолчанию',
pickFolder: 'Выбрать',
pickFolderTitle: 'Папка для загрузок',
clearFolder: 'Сбросить папку',
logout: 'Выйти',
aboutTitle: 'О Psysonic',
aboutDesc:
'Современный десктопный плеер, созданный для Navidrome. Использует API Subsonic плюс специфичные для Navidrome расширения. На Tauri v2 и нативном аудиодвижке на Rust — лёгкий и быстрый: волновая шкала, синхронные тексты, Last.fm, 10-полосный EQ, кроссфейд, воспроизведение без пауз, Replay Gain, жанры и много тем оформления.',
aboutLicense: 'Лицензия',
aboutLicenseText: 'GNU GPL v3 — свободное использование и изменение на тех же условиях.',
aboutRepo: 'Исходный код на GitHub',
aboutVersion: 'Версия',
aboutBuiltWith: 'Tauri · React · TypeScript · Rust/rodio',
aboutReleaseNotesLabel: 'Примечания к выпуску',
aboutReleaseNotesLink: 'Открыть «Что нового» этой версии',
aboutContributorsLabel: 'Участники',
showChangelogOnUpdate: 'Показывать «Что нового» после обновления',
showChangelogOnUpdateDesc: 'После обновления над «Сейчас играет» появится ненавязчивый баннер журнала изменений. Клик открывает заметки о выпуске, X скрывает.',
libraryGridMaxColumnsTitle: 'Сетки карточек в библиотеке',
libraryGridMaxColumnsPerfHint: 'Больше колонок — больше плиток в ряд и больше работы по вёрстке и отрисовке; на очень больших библиотеках или слабом железе это заметнее.',
libraryGridMaxColumnsRangeLabel: 'Максимум колонок ({{min}}{{max}})',
libraryGridMaxColumnsDesc: 'Действует для альбомов, исполнителей, плейлистов, радио, офлайн-библиотеки и других экранов с карточками. Меньше колонок — крупнее плитки и обычно меньше нагрузка на CPU.',
libraryIndexTitle: 'Локальный индекс библиотеки (preview)',
libraryIndexDesc: 'Локальная копия каталога каждого сервера для быстрого поиска и офлайн-доступа. Первичная индексация для всех серверов; офлайн-серверы синхронизируются позже автоматически.',
libraryIndexDeltaHint: 'Фоновая дельта-синхронизация проверяет привязанные серверы каждые 30 с и запускается по расписанию — обычно раз в 5–45 минут в зависимости от размера библиотеки и нагрузки.',
libraryIndexEnable: 'Включить локальный индекс',
libraryIndexEnableAllDesc: 'Индексировать и синхронизировать все настроенные серверы в фоне.',
libraryIndexNoServer: 'Сначала добавьте сервер.',
libraryIndexServerListTitle: 'Индексируемые серверы',
libraryIndexAllExcluded: 'Все серверы исключены из синхронизации.',
libraryIndexServerOffline: 'Сервер офлайн — синхронизация отложена',
libraryIndexServerDeferred: 'Отложено',
libraryIndexServerSyncing: 'Синхронизация…',
libraryIndexFullResync: 'Полная пересинхронизация',
libraryIndexDeltaSync: 'Быстрая дельта',
libraryIndexExcludeServer: 'Исключить из синхронизации',
libraryIndexExcludingServer: 'Отключается…',
libraryIndexExcludedTitle: 'Исключены из синхронизации',
libraryIndexIncludeServer: 'Включить снова',
libraryIndexIncludingServer: 'Подключается…',
libraryIndexStatus: 'Статус',
libraryIndexStatusIdle: 'Ожидание',
libraryIndexStatusProbing: 'Проверка сервера…',
libraryIndexStatusInitial: 'Первичная синхронизация…',
libraryIndexStatusReady: 'Готово ({{count}} треков)',
libraryIndexStatusError: 'Ошибка — см. логи',
libraryIndexProgressIngest: 'Проиндексировано {{count}} треков…',
libraryIndexProgressVerify: 'Проверено {{checked}} (удалено {{deleted}})',
libraryIndexSyncNow: 'Синхронизировать',
libraryIndexVerify: 'Проверить целостность',
libraryIndexCancel: 'Отмена',
libraryIndexAutoReconcile: 'Авто-сверка при падении счётчика',
libraryIndexAutoReconcileDesc: 'Автоматически искать удалённые треки, когда на сервере их меньше ожидаемого.',
libraryIndexSyncError: 'Ошибка синхронизации: {{error}}',
libraryIndexBindError: 'Не удалось включить индекс: {{error}}',
analyticsStrategyTitle: 'Стратегии анализа',
analyticsStrategyDesc:
'Для каждого сервера можно выбрать стратегию: Ленивый — анализ по мере прослушивания; Агрессивный — фоновый анализ всей библиотеки.',
analyticsStrategyLabel: 'Стратегия',
analyticsStrategyLazy: 'Ленивая',
analyticsStrategyLazyDesc:
'Анализирует только треки, которые вы слушаете или которые уже попали в кэш.',
analyticsStrategyAdvanced: 'Агрессивный',
analyticsStrategyAdvancedDesc:
'Запускает фоновый анализ всей библиотеки и скачивает треки для анализа.',
analyticsStrategyPriorityTitle: 'Приоритет анализа (всегда)',
analyticsStrategyPriorityHigh: '1 — Сейчас играет: скачивание и анализ в первую очередь (байты воспроизведения, loudness backfill или HTTP при необходимости).',
analyticsStrategyPriorityMiddle: '2 — Следующие: ~5 треков в очереди и соседи hot cache — анализ из уже скачанных байтов, HTTP backfill только при промахе.',
analyticsStrategyPriorityLow: '3 — Библиотечный batch (только Агрессивный): автоматическая фоновая очередь в хвосте; пополняется по watermark (~3× потоков), не дожидаясь полного опустошения.',
analyticsStrategyServerLabel: 'Сервер',
analyticsStrategyProgressLabel: 'Прогресс анализа:',
analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})',
analyticsStrategyActionsLabel: 'Действия',
analyticsStrategyParallelismLabel: 'Параллельные потоки',
analyticsStrategyParallelismValue: '{{n}} потоков',
analyticsStrategyParallelismDesc: 'Сколько треков одновременно скачивать и анализировать (HTTP + CPU). Больше значение — быстрее догоняет библиотеку, но выше нагрузка на сеть и CPU.',
analyticsStrategyAdvancedWarning:
'Агрессивный режим скачивает всю библиотеку для анализа и создаёт заметную нагрузку на сеть и процессор. Рекомендуется в локальной сети или для не очень больших библиотек.',
analyticsStrategyServerRemoved: 'Удалённый сервер',
analyticsStrategyClearAction: 'Очистить анализ',
analyticsStrategyClearTitle: 'Очистить анализ?',
analyticsStrategyClearDesc: 'Очистка анализа для {{server}} удалит кэш волн и loudness. При повторном добавлении сервера индексация может занять много времени.',
analyticsStrategyClearCancel: 'Отмена',
analyticsStrategyClearConfirm: 'Очистить анализ',
analyticsStrategyClearSuccess: 'Анализ удалён для удалённого сервера.',
analyticsStrategyClearError: 'Не удалось очистить анализ для удалённого сервера.',
analyticsStrategyProgressEmptyAfterFailed: '100% (0/0, треки помечены как проблемные)',
analyticsFailedTracksOpenTitle: 'Проблемных треков: {{count}}',
analyticsFailedTracksTitle: 'Проблемные треки анализа — {{server}}',
analyticsFailedTracksDesc: 'Эти треки многократно падали на decode/enrichment и исключены из фонового автоанализа.',
analyticsFailedTracksLoading: 'Загрузка списка проблемных треков…',
analyticsFailedTracksEmpty: 'Для этого сервера проблемных треков нет.',
analyticsFailedTracksClose: 'Закрыть',
analyticsFailedTracksExport: 'Экспорт списка',
analyticsFailedTracksExportSuccess: 'Список проблемных треков экспортирован ({{count}}).',
analyticsFailedTracksExportError: 'Не удалось экспортировать список проблемных треков.',
analyticsFailedTracksRescan: 'Рескан проблемных треков',
analyticsFailedTracksRescanSuccess: 'Рескан запланирован для {{count}} проблемных треков.',
analyticsFailedTracksRescanError: 'Не удалось запустить рескан проблемных треков.',
analyticsFailedTracksLoadError: 'Не удалось загрузить список проблемных треков.',
randomMixTitle: 'Чёрный список случайного микса',
luckyMixMenuTitle: 'Показывать «Мне повезёт» в меню',
luckyMixMenuDesc:
'Включает «Мне повезёт» в «Собрать микс», а при раздельной навигации — отдельным пунктом меню. Видно только при включённом AudioMuse на активном сервере.',
randomMixBlacklistTitle: 'Свои слова-фильтры',
randomMixBlacklistDesc:
'Треки скрываются, если слово встречается в жанре, названии, альбоме или исполнителе (когда включён фильтр выше).',
randomMixBlacklistPlaceholder: 'Добавить слово…',
randomMixBlacklistAdd: 'Добавить',
randomMixBlacklistEmpty: 'Пока пусто.',
randomMixHardcodedTitle: 'Встроенные слова (при включённом фильтре)',
tabAudio: 'Звук',
tabStorage: 'Офлайн и кэш',
tabAppearance: 'Внешний вид',
tabThemes: 'Темы',
themesYourThemesTitle: 'Ваши темы',
themesCvdTooltip: 'Безопасно при дальтонизме — дейтеранопия, протанопия, тританопия',
themeAnimationWarning: 'Эта тема использует анимации, которые могут повысить нагрузку на процессор в вашей конфигурации (Nvidia/Linux или композитинг выключен).',
themeStoreTitle: 'Магазин тем',
themeStoreSubmitText: 'Создали свою тему? Поделитесь с сообществом — подробности в репозитории тем.',
themeStoreSubmitLink: 'Открыть репозиторий тем',
themeStoreNetworkNotice: 'Магазин тем загружает каталог и превью с GitHub. Личные данные не отправляются.',
themeStoreStatsNotice: 'Даты последнего изменения обновляются раз в день (около 04:17 UTC).',
themeStoreSearchPlaceholder: 'Поиск тем…',
themeStoreFilterMode: 'Фильтр по режиму',
themeStoreModeAll: 'Все',
themeStoreModeDark: 'Тёмные',
themeStoreModeLight: 'Светлые',
themeStoreRefresh: 'Обновить',
themeStoreLoading: 'Загрузка тем…',
themeStoreError: 'Не удалось загрузить магазин тем. Проверьте подключение.',
themeStoreRetry: 'Повторить',
themeStoreOfflineTitle: 'Магазин тем недоступен',
themeStoreEmpty: 'Нет тем, соответствующих фильтрам.',
themeStoreActive: 'Активна',
themeStoreEnlarge: 'Увеличить превью',
themeStoreSortNewest: 'Новые',
themeStoreSortName: 'По алфавиту',
themeStoreByAuthor: 'от {{author}}',
themeStoreLastChanged: 'Изменён',
themeMigrationNoticeTitle: 'Тема перенесена в магазин',
themeMigrationNoticeBody: '{{themes}} больше не входит в приложение. Вы можете переустановить её из магазина тем (Настройки → Темы) или выбрать другую тему.',
themeMigrationNoticeOpen: 'Открыть магазин тем',
themeStoreOffline: 'Показан последний кэшированный каталог — похоже, вы офлайн.',
themeStoreInstall: 'Установить',
themeStoreInstalling: 'Установка…',
themeStoreApply: 'Применить',
themeStoreUpdate: 'Обновить',
themeStoreUpdating: 'Обновление…',
themeStoreUninstall: 'Удалить',
themeStoreInstallFailed: 'Ошибка установки',
themeStorePagePrev: 'Предыдущая страница',
themeStorePageNext: 'Следующая страница',
themeStorePageStatus: 'Страница {{page}} из {{total}}',
themeImportTitle: 'Импорт темы',
themeImportButton: 'Импортировать тему…',
themeImporting: 'Импорт…',
themeImportHint: 'Загружает тему, упакованную в .zip (manifest.json + theme.css).',
themeImportSuccess: '«{{name}}» импортирована.',
themeImportErrorTitle: 'Не удалось импортировать эту тему',
themeImportErrorBody: 'Он не соответствует формату тем Psysonic. Возможно, он создан для другой версии или файл неполный — проверьте, что выбрали правильный .zip, или обратитесь к автору темы.',
themeImportErrorDetails: 'Технические подробности',
themeImportConfirmTitle: 'Установить тему?',
themeImportConfirmBody: 'Установить «{{name}}» от {{author}}?',
themeImportConfirmRisk: 'Импортированные темы не проверяются — устанавливайте только темы, которым доверяете.',
tabLibrary: 'Библиотека',
tabServers: 'Серверы',
tabLyrics: 'Тексты песен',
tabPersonalisation: 'Персонализация',
tabIntegrations: 'Интеграции',
inputKeybindingsTitle: 'Горячие клавиши',
aboutContributorsCount_one: '{{count}} вклад',
aboutContributorsCount_few: '{{count}} вклада',
aboutContributorsCount_many: '{{count}} вкладов',
aboutContributorsCount_other: '{{count}} вклада',
searchPlaceholder: 'Поиск в настройках…',
searchNoResults: 'Ничего не найдено по вашему запросу.',
aboutMaintainersLabel: 'Сопровождающие',
integrationsPrivacyTitle: 'Уведомление о конфиденциальности',
integrationsPrivacyBody: 'Все интеграции на этой вкладке включаются <strong>по желанию</strong> и при активации отправляют данные во внешние сервисы или на ваш сервер Navidrome. Last.fm получает вашу историю прослушивания, Discord показывает текущую композицию в вашем профиле, Bandsintown опрашивается по артисту для получения дат гастролей, а «Сейчас играет» делится текущей композицией с другими пользователями вашего сервера Navidrome. Если вы не хотите ничего из этого, просто оставьте соответствующий раздел отключённым.',
homeCustomizerTitle: 'Для вас',
queueModeTitle: 'Режим отображения очереди',
queueModeQueueSub: 'Показывает только предстоящие треки. Текущий трек остаётся в заголовке и исчезает из списка после воспроизведения.',
queueModePlaylistSub: 'Сохраняет всю очередь в списке, текущий трек выделен вверху; воспроизведённые треки остаются.',
queueModeTimelineSub: 'Центрировать текущий трек: история воспроизведения сверху, предстоящие треки (в порядке перемешивания) снизу.',
queueToolbarTitle: 'Панель инструментов очереди',
queueToolbarReset: 'Сбросить',
queueToolbarSeparator: 'Разделитель',
sidebarTitle: 'Боковая панель',
sidebarReset: 'Сбросить порядок',
artistLayoutTitle: 'Разделы страницы исполнителя',
artistLayoutDesc: 'Перетаскивайте, чтобы изменить порядок, переключайте, чтобы скрыть отдельные разделы страницы исполнителя. Разделы без данных пропускаются автоматически.',
artistLayoutReset: 'Сбросить',
artistLayoutBio: 'Биография исполнителя',
artistLayoutTopTracks: 'Топ-треки',
artistLayoutSimilar: 'Похожие исполнители',
artistLayoutAlbums: 'Альбомы',
artistLayoutFeatured: 'Также участвует в',
playlistLayoutTitle: 'Макет страницы плейлиста',
playlistLayoutDesc: 'Показать или скрыть отдельные элементы на странице плейлиста.',
playlistLayoutReset: 'Сбросить',
playerBarTitle: 'Панель плеера',
playerBarReset: 'Сбросить',
playerBarStarRating: 'Оценка звёздами',
playerBarFavorite: 'Избранное (сердечко)',
playerBarLastfmLove: 'Кнопка «Нравится»',
playerBarPlaybackRate: 'Скорость',
playerBarEqualizer: 'Эквалайзер',
playerBarMiniPlayer: 'Мини-плеер',
playbackRateTitle: 'Скорость воспроизведения',
playbackRateEnabled: 'Включить изменение скорости',
playbackRateEnabledDesc: 'Глобальная скорость для всех треков. Не применяется к радио и превью.',
playbackRateStrategy: 'Стратегия',
playbackRateStrategySpeed: 'Скорость',
playbackRateStrategyVarispeed: 'С тоном',
playbackRateStrategyPreserve: 'Сдвиг тона',
playbackRateSpeed: 'Скорость',
playbackRatePitch: 'Тон',
playbackRateDerivedPitch: 'Сдвиг тона от скорости: {{value}}',
playbackRateAutoPitch: 'Тон корректируется автоматически.',
playbackRateHint: '«Скорость» сохраняет высоту тона при изменении темпа. «С тоном» меняет тон вместе со скоростью. «Сдвиг тона» — ручное смещение. Выше нагрузка на процессор, чем у режима «С тоном». Не для радио, превью и Orbit.',
playbackRateNeutral: 'При 1.0× и нулевом сдвиге тона воспроизведение обычное.',
playbackRateOrbitPaused: 'Во время сессии Orbit не применяется — воспроизведение остаётся 1.0× для синхронизации.',
playbackRateOrbitPausedShort: 'Orbit: 1.0× для синхронизации.',
advancedMode: 'Дополнительно',
advancedModeTooltip: 'Показывать расширенные параметры во всех вкладках настроек. Вклады сообщества, которые не обязательно соответствуют дизайн-философии мейнтейнеров Psysonic.',
advancedBadge: 'Дополнительно',
sidebarDrag: 'Перетащите для порядка',
sidebarFixed: 'Всегда показывать',
nowPlayingTopTitle: '«Сейчас играет» вверху',
nowPlayingTopDesc: 'Закрепить пункт «Сейчас играет» вверху боковой панели вместо нижней части.',
randomNavSplitTitle: 'Разделить навигацию микса',
randomNavSplitDesc:
'Показывать «Случайный микс», «Случайные альбомы» и «Мне повезёт» как отдельные пункты боковой панели вместо хаба «Собрать микс».',
tabInput: 'Ввод',
tabUsers: 'Пользователи',
tabSystem: 'Система',
loggingTitle: 'Логирование',
loggingModeDesc: 'Управляет подробностью логов backend в терминале.',
loggingModeOff: 'Выключено',
loggingModeNormal: 'Обычное',
loggingModeDebug: 'Дебаг',
loggingExport: 'Экспорт логов',
loggingExportSuccess: 'Логи экспортированы ({{count}} строк).',
loggingExportError: 'Не удалось экспортировать логи.',
ratingsSectionTitle: 'Рейтинги',
ratingsSkipStarTitle: 'Скипнуть для 1 звезды',
ratingsSkipStarDesc:
'При N скипов подряд ставить 1★ треку. Только для не оцененных ранее.',
ratingsSkipStarThresholdLabel: 'Скипов',
ratingsMixFilterTitle: 'Фильтрация по рейтингу',
ratingsMixFilterDesc:
'Фильтровать с низким рейтингом в «{{mix}}» и «{{albums}}». Повторный клик по выбранной звезде отключает порог.',
ratingsMixMinSong: 'Песни',
ratingsMixMinAlbum: 'Альбомы',
ratingsMixMinArtist: 'Исполнители',
ratingsMixMinThresholdAria: 'Минимум звёзд: {{label}}',
backupTitle: 'Резервная копия',
backupExport: 'Экспорт настроек',
backupExportDesc:
'Сохраняет настройки, серверы, Last.fm, тему, EQ и горячие клавиши в файл .psybkp. Пароли в открытом виде — храните файл в безопасности.',
backupImport: 'Импорт настроек',
backupImportDesc: 'Восстановить из .psybkp. Приложение перезапустится.',
backupImportConfirm: 'Текущие настройки будут заменены. Продолжить?',
backupImportAny: 'Импорт резервной копии',
backupImportAnyConfirm:
'Импортировать выбранный файл резервной копии и применить его содержимое (настройки, базы библиотеки или полный архив). Продолжить?',
backupSuccess: 'Копия сохранена',
backupImportSuccess: 'Настройки восстановлены — перезапуск…',
backupImportError: 'Файл повреждён или не подходит.',
backupModeFull: 'Полный',
backupModeLibrary: 'Базы библиотеки',
backupModeConfig: 'Настройки',
backupFullDesc: 'Архивирует настройки и базы библиотеки в один файл резервной копии.',
backupFullExport: 'Экспорт полного архива',
backupFullImport: 'Импорт полного архива',
backupFullImportConfirm:
'Настройки будут перезаписаны, текущие базы библиотеки будут заменены и сохранены в .bak. Продолжить?',
backupFullExportSuccess: 'Полный архив экспортирован.',
backupFullImportSuccess: 'Полный архив импортирован — перезапуск…',
backupFullImportError: 'Не удалось импортировать полный архив.',
backupLibraryExport: 'Экспорт баз',
backupLibraryExportDesc: 'Создаёт сжатый архив с чистыми SQLite-снимками баз библиотеки.',
backupLibraryImport: 'Импорт баз',
backupLibraryImportDesc:
'Восстанавливает базы библиотеки из архива. Текущие базы перед заменой переносятся в .bak.',
backupLibraryImportConfirm:
'Текущие базы библиотеки будут заменены и сохранены в .bak. Продолжить?',
backupLibraryExportSuccess: 'Копия баз экспортирована.',
backupLibraryImportSuccess: 'Копия баз импортирована.',
backupLibraryImportError: 'Не удалось импортировать копию баз.',
backupOverlayExportTitle: 'Создаём резервную копию…',
backupOverlayImportTitle: 'Восстанавливаем резервную копию…',
backupOverlayHint: 'Окно можно не закрывать, идёт обработка файлов. Ввод временно заблокирован.',
shortcutsReset: 'Сбросить',
shortcutListening: 'Нажмите клавишу…',
shortcutUnbound: '—',
globalShortcutsTitle: 'Глобальные сочетания',
globalShortcutsNote:
'Работают, когда окно не в фокусе. Нужен модификатор: Ctrl, Alt или Super.',
shortcutClear: 'Сбросить',
shortcutPlayPause: 'Пауза / воспроизведение',
shortcutNext: 'Следующий трек',
shortcutPrev: 'Предыдущий трек',
shortcutVolumeUp: 'Громче',
shortcutVolumeDown: 'Тише',
shortcutSeekForward: 'Вперёд на 10 с',
shortcutSeekBackward: 'Назад на 10 с',
shortcutToggleQueue: 'Показать / скрыть очередь',
shortcutOpenFolderBrowser: 'Открыть {{folderBrowser}}',
shortcutFullscreenPlayer: 'Полноэкранный плеер',
shortcutNativeFullscreen: 'Системный полный экран',
shortcutOpenMiniPlayer: 'Открыть мини-плеер',
shortcutStartSearch: 'Начать поиск',
shortcutStartAdvancedSearch: 'Начать расширенный поиск',
shortcutToggleSidebar: 'Переключить боковую панель',
shortcutMuteSound: 'Без звука',
shortcutToggleEqualizer: 'Открыть / переключить эквалайзер',
shortcutToggleRepeat: 'Переключить повтор',
shortcutOpenNowPlaying: 'Открыть «Сейчас играет»',
shortcutShowLyrics: 'Показать текст песни',
shortcutFavoriteCurrentTrack: 'Добавить текущий трек в избранное',
shortcutOpenHelp: 'Справка',
playbackTitle: 'Воспроизведение',
replayGain: 'Replay Gain',
replayGainDesc: 'Выравнивание громкости по метаданным ReplayGain',
replayGainMode: 'Режим',
replayGainAuto: 'Авто',
replayGainAutoDesc: 'Использует громкость альбома, когда соседние треки в очереди из того же альбома, иначе громкость трека.',
replayGainTrack: 'По треку',
replayGainAlbum: 'По альбому',
replayGainPreGain: 'Предусиление (файлы с тегами)',
replayGainPreGainDesc: 'Общая прибавка, добавляемая к каждому расчёту ReplayGain. Удобно, если библиотека в целом кажется тихой.',
replayGainFallback: 'Резерв (без тегов / радио)',
replayGainFallbackDesc: 'Применяется к трекам (и радиопотокам) без тегов ReplayGain, чтобы непомеченный контент не звучал громче остального.',
normalization: 'Нормализация',
normalizationDesc: 'Выровнять воспринимаемую громкость между треками, альбомами и радио.',
normalizationOff: 'Выкл.',
normalizationReplayGain: 'ReplayGain',
normalizationLufs: 'LUFS',
loudnessTargetLufs: 'Целевой LUFS',
loudnessTargetLufsDesc: 'Опорная громкость, к которой подгоняются все треки. Меньше число = громче на выходе. Стриминг-сервисы обычно держат около -14 LUFS.',
loudnessPreAnalysisAttenuation: 'Ослабление до измерения',
loudnessPreAnalysisAttenuationDesc:
'Насколько приглушить звук, пока для трека нет сохранённого измерения громкости. При стриме дальше идут лишь грубые оценки, не полный LUFS. 0 dB — без дополнительного приглушения; ниже — тише. Справа показывается фактическая поправка для текущей цели.',
loudnessPreAnalysisAttenuationRef: 'Фактически {{eff}} dB при цели {{tgt}} LUFS.',
loudnessPreAnalysisAttenuationReset: 'По умолчанию',
loudnessFirstPlayNote:
'При первом прослушивании нового трека громкость может ненадолго колебаться, пока идёт измерение. Со второго раза применяется уже сохранённое значение и всё стабильно. Следующие треки в очереди обычно анализируются во время предыдущей композиции, поэтому на практике это случается редко.',
crossfade: 'Кроссфейд',
crossfadeDesc: 'Плавный переход между треками',
crossfadeSecs: '{{n}} с',
notWithGapless: 'Недоступно при включённом режиме без пауз',
notWithCrossfade: 'Недоступно при включённом кроссфейде',
gapless: 'Без пауз между треками',
gaplessDesc: 'Заранее подгружать следующий трек, чтобы не было тишины',
preservePlayNextOrder: 'Сохранять порядок «Играть следующим»',
preservePlayNextOrderDesc: 'Новые элементы «Играть следующим» становятся в конец очереди, а не лезут вперёд.',
trackPreviewsTitle: 'Превью треков',
trackPreviewsToggle: 'Включить превью треков',
trackPreviewsDesc: 'Показывать встроенные кнопки воспроизведения и превью в списках треков для быстрого прослушивания фрагмента.',
trackPreviewStart: 'Начальная позиция',
trackPreviewStartDesc: 'С какого момента трека начинается превью (% от длительности).',
trackPreviewDuration: 'Длительность',
trackPreviewDurationDesc: 'Сколько играет каждое превью до автоматической остановки.',
trackPreviewDurationSecs: '{{n}} с',
trackPreviewLocationsTitle: 'Где показывать превью',
trackPreviewLocationsDesc: 'Выберите, в каких списках показывать кнопки превью.',
trackPreviewLocation_suggestions: 'В предложениях плейлиста',
trackPreviewLocation_albums: 'В списках треков альбома',
trackPreviewLocation_playlists: 'В плейлистах',
trackPreviewLocation_favorites: 'В избранном',
trackPreviewLocation_artist: 'В топ-треках исполнителя',
trackPreviewLocation_randomMix: 'В Random Mix',
nextTrackBufferingTitle: 'Буферизация',
infiniteQueue: 'Бесконечная очередь',
infiniteQueueDesc: 'Подмешивать случайные треки, когда очередь закончится',
experimental: 'Экспериментально',
sidebarLyricsStyle: 'Стиль прокрутки текста',
sidebarLyricsStyleClassic: 'Классический',
sidebarLyricsStyleClassicDesc: 'Активная строка центрируется.',
sidebarLyricsStyleApple: 'Apple Music-like',
sidebarLyricsStyleAppleDesc: 'Активная строка фиксируется сверху с плавной анимацией.',
seekbarStyle: 'Стиль прогресс-бара',
seekbarStyleDesc: 'Выбор внешнего вида полосы воспроизведения',
seekbarTruewave: 'Реальная форма волны',
seekbarPseudowave: 'Псевдо форма волны',
seekbarLinedot: 'Линия и точка',
seekbarBar: 'Полоса',
seekbarThick: 'Толстая полоса',
seekbarSegmented: 'Сегменты',
seekbarNeon: 'Неон',
seekbarPulsewave: 'Пульс-волна',
seekbarParticletrail: 'Частицы',
seekbarLiquidfill: 'Жидкость',
seekbarRetrotape: 'Ретро-лента',
themeSchedulerTitle: 'Расписание тем',
themeSchedulerEnable: 'Включить расписание тем',
themeSchedulerEnableSub: 'Автоматически переключается между двумя темами в зависимости от времени суток',
themeSchedulerDayTheme: 'Дневная тема',
themeSchedulerDayStart: 'День начинается в',
themeSchedulerNightTheme: 'Ночная тема',
themeSchedulerNightStart: 'Ночь начинается в',
themeSchedulerActiveHint: 'Расписание тем активно - темы переключаются автоматически.',
visualOptionsTitle: 'Визуальные Настройки',
coverArtBackground: 'Фон Обложки',
coverArtBackgroundSub: 'Показывать размытую обложку как фон в заголовках альбомов и плейлистов',
playlistCoverPhoto: 'Обложка Плейлиста',
playlistCoverPhotoSub: 'Показывать сетку обложек в детальном виде плейлиста',
showBitrate: 'Показывать Битрейт',
showBitrateSub: 'Отображать битрейт аудио в списках треков',
floatingPlayerBar: 'Плавающая панель плеера',
floatingPlayerBarSub: 'Держать панель плеера плавающей над содержимым',
uiScaleTitle: 'Масштаб интерфейса',
uiScaleLabel: 'Масштаб',
confirmDeleteServerLibrary: 'Также удалить локальный индекс библиотеки этого сервера? Нажмите «Отмена», чтобы сохранить кэш-копию для офлайн-использования.',
};