/** Russian UI strings — natural phrasing for a music desktop app */ export const ruTranslation = { sidebar: { library: 'Медиатека', mainstage: 'Для вас', newReleases: 'Новинки', allAlbums: 'Все альбомы', randomAlbums: 'Случайные альбомы', randomPicker: 'Собрать микс', artists: 'Исполнители', composers: 'Композиторы', randomMix: 'Случайный микс', favorites: 'Избранное', nowPlaying: 'Сейчас играет', system: 'Система', statistics: 'Статистика', settings: 'Настройки', help: 'Справка', expand: 'Развернуть боковую панель', collapse: 'Свернуть боковую панель', downloadingTracks: 'Кэширование {{n}} треков…', syncingTracks: 'Синхронизация {{done}}/{{total}}…', cancelDownload: 'Отменить загрузку', offlineLibrary: 'Офлайн-библиотека', genres: 'Жанры', tracks: 'Треки', playlists: 'Плейлисты', smartPlaylists: 'Смарт-плейлисты', mostPlayed: 'Популярное', losslessAlbums: 'Lossless', radio: 'Онлайн-радио', folderBrowser: 'Браузер папок', deviceSync: 'Синхронизация устройства', libraryScope: 'Область медиатеки', allLibraries: 'Все библиотеки', expandPlaylists: 'Развернуть плейлисты', collapsePlaylists: 'Свернуть плейлисты', more: 'Ещё', feelingLucky: 'Мне повезёт', }, home: { hero: 'Подборка', starred: 'Личное избранное', recent: 'Недавно добавлено', mostPlayed: 'Популярное', recentlyPlayed: 'Недавно проиграно', losslessAlbums: 'Lossless-альбомы', discover: 'Обзор', discoverSongs: 'Открыть треки', loadMore: 'Ещё', discoverMore: 'Смотреть ещё', discoverArtists: 'Исполнители', discoverArtistsMore: 'Все исполнители', becauseYouLike: 'Потому что вы слушали…', becauseYouLikeFor: 'Потому что вы слушали {{artist}}', similarTo: 'Похоже на {{artist}}', becauseYouLikeTracks_one: '{{count}} трек', becauseYouLikeTracks_few: '{{count}} трека', becauseYouLikeTracks_many: '{{count}} треков', becauseYouLikeTracks_other: '{{count}} треков', }, hero: { eyebrow: 'Альбом дня', playAlbum: 'Воспроизвести альбом', enqueue: 'В очередь', enqueueTooltip: 'Добавить весь альбом в очередь', }, search: { placeholder: 'Исполнитель, альбом или трек…', noResults: 'Ничего не найдено по запросу «{{query}}»', artists: 'Исполнители', albums: 'Альбомы', songs: 'Треки', clearLabel: 'Очистить поиск', addedToQueueToast: '«{{title}}» добавлен в очередь', title: 'Поиск', resultsFor: 'Результаты по «{{query}}»', album: 'Альбом', advanced: 'Расширенный поиск', advancedSearchTerm: 'Поисковый запрос', advancedSearchPlaceholder: 'Название, альбом, исполнитель…', advancedGenre: 'Жанр', advancedAllGenres: 'Все жанры', advancedYear: 'Год', advancedYearFrom: 'от', advancedYearTo: 'до', advancedAll: 'Все', advancedSearch: 'Найти', advancedEmpty: 'Введите запрос или выберите фильтр.', advancedNoResults: 'Ничего не найдено.', advancedGenreNote: 'Треки выбираются случайно в рамках жанра.', recentSearches: 'Недавние запросы', browse: 'Обзор', emptyHint: 'Что хочешь послушать?', genres: 'Жанры', }, nowPlaying: { tooltip: 'Кто сейчас слушает?', title: 'Кто сейчас слушает?', loading: 'Загрузка…', nobody: 'Сейчас никто не слушает.', minutesAgo: '{{n}} мин назад', nothingPlaying: 'Пока ничего не играет — включите трек.', aboutArtist: 'Об исполнителе', fromAlbum: 'Из этого альбома', viewAlbum: 'Просмотр альбома', goToArtist: 'Перейти к исполнителю', readMore: 'Читать далее', showLess: 'Свернуть', genreInfo: 'Жанр', trackInfo: 'О треке', topSongs: 'Самое популярное у этого исполнителя', topSongsCredit: 'Топ-треки исполнителя {{name}}', trackPosition: 'Трек {{pos}}', playsCount_one: '{{count}} прослушивание', playsCount_few: '{{count}} прослушивания', playsCount_many: '{{count}} прослушиваний', playsCount_other: '{{count}} прослушиваний', releasedYearsAgo_one: '{{count}} год назад', releasedYearsAgo_few: '{{count}} года назад', releasedYearsAgo_many: '{{count}} лет назад', releasedYearsAgo_other: '{{count}} лет назад', discography: 'Дискография', lastfmStats: 'Статистика Last.fm', thisTrack: 'Этот трек', thisArtist: 'Этот исполнитель', listeners: 'слушателей', scrobbles: 'прослушиваний', yourScrobbles: 'вами', listenersN: '{{n}} слушателей', scrobblesN: '{{n}} прослушиваний', playsByYouN: 'прослушано вами {{n}}×', openTrackOnLastfm: 'Трек на Last.fm', openArtistOnLastfm: 'Исполнитель на Last.fm', rgTrackTooltip: 'ReplayGain (трек)', rgAlbumTooltip: 'ReplayGain (альбом)', rgAutoTooltip: 'ReplayGain (авто)', showMoreTracks: 'Показать ещё {{count}}', showLessTracks: 'Свернуть', hideCard: 'Скрыть карточку', layoutMenu: 'Макет', visibleCards: 'Видимые карточки', hiddenCards: 'Скрытые карточки', noHiddenCards: 'Нет скрытых карточек', resetLayout: 'Сбросить макет', emptyColumn: 'Перетащите карточки сюда', }, contextMenu: { playNow: 'Играть сейчас', playNext: 'Играть следующим', addToQueue: 'В конец очереди', enqueueAlbum: 'Альбом в очередь', enqueueAlbums_one: '{{count}} альбом в очередь', enqueueAlbums_few: '{{count}} альбома в очередь', enqueueAlbums_many: '{{count}} альбомов в очередь', enqueueAlbums_other: '{{count}} альбомов в очередь', startRadio: 'Радио по похожим', instantMix: 'Instant Mix', instantMixFailed: 'Не удалось собрать Instant Mix — ошибка сервера или плагина.', cliMixNeedsTrack: 'Ничего не играет — сначала начните воспроизведение, затем снова выполните команду микса.', lfmLove: 'Любимое на Last.fm', lfmUnlove: 'Убрать с Last.fm', favorite: 'В избранное', favoriteArtist: 'Исполнитель в избранное', favoriteAlbum: 'Альбом в избранное', unfavorite: 'Убрать из избранного', unfavoriteArtist: 'Убрать исполнителя из избранного', unfavoriteAlbum: 'Убрать альбом из избранного', removeFromQueue: 'Убрать из очереди', removeFromPlaylist: 'Убрать из плейлиста', openAlbum: 'Открыть альбом', goToArtist: 'К исполнителю', download: 'Скачать (ZIP)', addToPlaylist: 'В плейлист', selectedPlaylists: '{{count}} плейлистов выбрано', selectedAlbums: '{{count}} альбомов выбрано', selectedArtists: '{{count}} исполнителей выбрано', songInfo: 'Сведения о треке', shareLink: 'Копировать ссылку для обмена', shareCopied: 'Ссылка для обмена скопирована в буфер.', shareCopyFailed: 'Не удалось скопировать в буфер.', }, sharePaste: { notLoggedIn: 'Войдите и добавьте сервер, затем вставьте ссылку.', noMatchingServer: 'Ни один сохранённый сервер не совпадает с адресом из ссылки. Добавьте сервер: {{url}}', trackUnavailable: 'Трек на сервере не найден.', albumUnavailable: 'Альбом на сервере не найден.', artistUnavailable: 'Исполнитель на сервере не найден.', composerUnavailable: 'Композитор на сервере не найден.', openedTrack: 'Воспроизводится присланный трек.', openedAlbum: 'Открывается присланный альбом.', openedArtist: 'Открывается присланный исполнитель.', openedComposer: 'Открывается присланный композитор.', openedQueue_one: 'Воспроизводится присланная очередь: {{count}} трек.', openedQueue_few: 'Воспроизводится присланная очередь: {{count}} трека.', openedQueue_many: 'Воспроизводится присланная очередь: {{count}} треков.', openedQueue_other: 'Воспроизводится присланная очередь: {{count}} треков.', openedQueuePartial: 'Воспроизводится {{played}} из {{total}} треков по ссылке ({{skipped}} на этом сервере не найдены).', queueAllUnavailable: 'Ни один из треков по ссылке не найден на сервере.', genericError: 'Не удалось открыть ссылку для обмена.', }, albumDetail: { back: 'Назад', orbitDoubleClickHint: 'Двойной клик, чтобы добавить этот трек в очередь Orbit', playAll: 'Воспроизвести всё', shareAlbum: 'Поделиться альбомом', enqueue: 'В очередь', enqueueTooltip: 'Добавить весь альбом в очередь', artistBio: 'Биография', download: 'Скачать (ZIP)', downloading: 'Загрузка…', cacheOffline: 'Сохранить офлайн', offlineCached: 'Доступно офлайн', offlineDownloading: 'Кэширование… ({{n}} из {{total}})', removeOffline: 'Удалить офлайн-копию', offlineStorageFull: 'Место для офлайн закончилось (лимит {{mb}} МБ). Освободите место в офлайн-библиотеке или увеличьте лимит в настройках.', offlineStorageGoToLibrary: 'Офлайн-библиотека', offlineStorageGoToSettings: 'Настройки', favoriteAdd: 'В избранное', favoriteRemove: 'Убрать из избранного', favorite: 'Избранное', noBio: 'Биография недоступна.', moreByArtist: 'Ещё от {{artist}}', tracksCount: 'Композиций: {{n}}', goToArtist: 'Перейти к {{artist}}', moreLabelAlbums: 'Другие альбомы на {{label}}', trackTitle: 'Название', trackAlbum: 'Альбом', trackArtist: 'Исполнитель', trackGenre: 'Жанр', trackFormat: 'Формат', trackFavorite: 'Избранное', trackRating: 'Оценка', trackDuration: 'Длительность', trackTotal: 'Итого', columns: 'Колонки', resetColumns: 'Сбросить', notFound: 'Альбом не найден.', bioModal: 'Биография исполнителя', bioClose: 'Закрыть', ratingLabel: 'Оценка', enlargeCover: 'Увеличить обложку', filterSongs: 'Фильтр треков…', sortNatural: 'По умолчанию', sortByTitle: 'А–Я (название)', sortByArtist: 'А–Я (исполнитель)', sortByAlbum: 'А–Я (альбом)', }, entityRating: { albumShort: 'Оценка альбома', artistShort: 'Оценка исполнителя', albumAriaLabel: 'Оценка альбома', artistAriaLabel: 'Оценка исполнителя', selectedArtistsRatingAriaLabel: 'Звёздная оценка для выбранных исполнителей ({{count}})', selectedAlbumsRatingAriaLabel: 'Звёздная оценка для выбранных альбомов ({{count}})', saveFailed: 'Не удалось сохранить оценку.', }, artistDetail: { back: 'Назад', albums: 'Альбомы', album: 'Альбом', playAll: 'Воспроизвести всё', shareArtist: 'Поделиться исполнителем', shuffle: 'Перемешать', radio: 'Радио', loading: 'Загрузка…', noRadio: 'Похожие треки для этого исполнителя не найдены.', notFound: 'Исполнитель не найден.', albumsBy: 'Альбомы — {{name}}', topTracks: 'Популярные треки', noAlbums: 'Альбомов нет.', trackTitle: 'Название', trackAlbum: 'Альбом', trackDuration: 'Длительность', favoriteAdd: 'В избранное', favoriteRemove: 'Убрать из избранного', favorite: 'Избранное', albumCount_one: '{{count}} альбом', albumCount_few: '{{count}} альбома', albumCount_many: '{{count}} альбомов', albumCount_other: '{{count}} альбомов', openedInBrowser: 'Открыто в браузере', featuredOn: 'Также участвует в', similarArtists: 'Похожие исполнители', cacheOffline: 'Сохранить дискографию офлайн', offlineCached: 'Дискография сохранена', offlineDownloading: 'Кэширование… ({{done}} из {{total}} альбомов)', uploadImage: 'Загрузить фото исполнителя', uploadImageError: 'Не удалось загрузить изображение', releaseTypes: { album: 'Альбом', ep: 'EP', single: 'Сингл', compilation: 'Сборник', live: 'Концерт', soundtrack: 'Саундтрек', remix: 'Ремикс', other: 'Другое', }, }, favorites: { title: 'Избранное', empty: 'Пока ничего не отмечено звёздочкой.', artists: 'Исполнители', albums: 'Альбомы', songs: 'Треки', enqueueAll: 'Всё в очередь', playAll: 'Воспроизвести всё', removeSong: 'Убрать из избранного', stations: 'Радиостанции', showingFiltered: 'Показано {{filtered}} из {{total}} ({{artist}})', showingCount: 'Показано {{filtered}} из {{total}}', clearArtistFilter: 'Сбросить фильтр исполнителя', noFilterResults: 'Нет результатов с выбранными фильтрами.', allArtists: 'Все исполнители', topArtists: 'Топ исполнителей по избранному', topArtistsSongCount_one: '{{count}} трек', topArtistsSongCount_few: '{{count}} трека', topArtistsSongCount_many: '{{count}} треков', topArtistsSongCount_other: '{{count}} трека', }, randomLanding: { title: 'Собрать микс', mixByTracks: 'Микс по трекам', mixByTracksDesc: 'Случайная подборка треков со всей медиатеки', mixByAlbums: 'Микс по альбомам', mixByAlbumsDesc: 'Случайная подборка альбомов для открытий', mixByLucky: 'Мне повезёт', mixByLuckyDesc: 'Умный Instant Mix из топ-артистов, альбомов и высоких оценок', }, randomAlbums: { title: 'Случайные альбомы', refresh: 'Обновить', }, genres: { title: 'Жанры', genreCount: 'Жанры', albumCount_one: '{{count}} альбом', albumCount_few: '{{count}} альбома', albumCount_many: '{{count}} альбомов', albumCount_other: '{{count}} альбомов', loading: 'Загрузка жанров…', empty: 'Жанры не найдены.', albumsLoading: 'Загрузка альбомов…', albumsEmpty: 'В этом жанре альбомов нет.', loadMore: 'Ещё', back: 'Назад', }, randomMix: { title: 'Случайный микс', remix: 'Новый микс', remixTooltip: 'Подобрать другие случайные треки', remixGenre: 'Новый микс: {{genre}}', remixTooltipGenre: 'Подобрать другие треки жанра {{genre}}', playAll: 'Воспроизвести всё', trackTitle: 'Название', trackArtist: 'Исполнитель', trackAlbum: 'Альбом', trackFavorite: 'Избранное', trackDuration: 'Длительность', favoriteAdd: 'В избранное', favoriteRemove: 'Убрать из избранного', play: 'Играть', trackGenre: 'Жанр', mixSettingsHeader: 'Настройки микса', exclusionsHeader: 'Исключения', filterPanelInexactSizeNote: 'Размер микса — это цель. При больших запросах сервер может вернуть меньше уникальных треков, если его случайный пул иссякает.', mixSize: 'Размер списка', excludeAudiobooks: 'Исключать аудиокниги и радиоспектакли', excludeAudiobooksDesc: 'По ключевым словам в жанре, названии, альбоме и исполнителе — например Hörbuch, Audiobook, Spoken Word и т. п.', genreBlocked: 'Слово отфильтровано', genreAddedToBlacklist: 'Добавлено в список фильтра', genreAlreadyBlocked: 'Уже в списке', artistBlocked: 'Исполнитель отфильтрован', artistAddedToBlacklist: 'Исполнитель добавлен в фильтр', artistClickHint: 'Нажмите, чтобы скрыть этого исполнителя', blacklistToggle: 'Фильтр по словам', genreMixTitle: 'Микс по жанру', genreMixDesc: 'Топ-20 жанров по числу треков — нажмите, чтобы собрать микс', genreMixAll: 'Все треки', genreMixLoadMore: 'Ещё 10 жанров', genreMixNoGenres: 'На сервере нет данных о жанрах.', shuffleGenres: 'Другие жанры', filterPanelTitle: 'Фильтры', filterPanelDesc: 'Нажмите на тег жанра или имя исполнителя в списке ниже, чтобы исключить их из будущих миксов.', genreClickHint: 'Нажмите на тег жанра — слово попадёт в фильтр.\nУчитываются жанр, название, альбом и исполнитель.', }, luckyMix: { done: '«Мне повезёт» готово: {{count}} треков', failed: 'Не удалось собрать микс «Мне повезёт». Попробуйте ещё раз.', unavailable: '«Мне повезёт» недоступен на этом сервере.', cancelTooltip: 'Отменить сборку микса «Мне повезёт»', }, albums: { title: 'Все альбомы', sortByName: 'А–Я (альбом)', sortByArtist: 'А–Я (исполнитель)', sortNewest: 'Сначала новые', sortRandom: 'Случайно', yearFrom: 'С', yearTo: 'По', yearFilterClear: 'Сбросить год', yearFilterLabel: 'Год', compilationLabel: 'Сборники', compilationOnly: 'Только сборники', compilationHide: 'Скрыть сборники', compilationTooltipAll: 'Все альбомы · клик: только сборники', compilationTooltipOnly: 'Только сборники · клик: скрыть сборники', compilationTooltipHide: 'Сборники скрыты · клик: показать всё', select: 'Множественный выбор', startSelect: 'Включить множественный выбор', cancelSelect: 'Отмена', selectionCount: '{{count}} выбрано', downloadZips: 'Скачать ZIP-архивы', addOffline: 'Добавить офлайн', enqueueSelected_one: 'В очередь ({{count}})', enqueueSelected_few: 'В очередь ({{count}})', enqueueSelected_many: 'В очередь ({{count}})', enqueueSelected_other: 'В очередь ({{count}})', enqueueQueued_one: '{{count}} альбом добавлен в очередь', enqueueQueued_few: '{{count}} альбома добавлены в очередь', enqueueQueued_many: '{{count}} альбомов добавлены в очередь', enqueueQueued_other: '{{count}} альбомов добавлены в очередь', downloadingZip: 'Загрузка {{current}}/{{total}}: {{name}}', downloadZipDone: '{{count}} ZIP-архив(ов) загружено', downloadZipFailed: 'Не удалось скачать {{name}}', offlineQueuing: 'Добавление {{count}} альбом(ов) в офлайн…', offlineFailed: 'Не удалось добавить {{name}} офлайн', }, tracks: { title: 'Треки', subtitle: 'Листать. Искать. Открывать.', heroEyebrow: 'Трек момента', heroReroll: 'Выбрать другой', playSong: 'Воспроизвести', enqueueSong: 'В очередь', railRandom: 'Случайная подборка', railHighlyRated: 'Высоко оценённые', browseTitle: 'Просмотреть все треки', browseUnsupported: 'Этот сервер не возвращает всю библиотеку сразу. Воспользуйтесь поиском выше, чтобы найти конкретные треки.', searchPlaceholder: 'Найти трек по названию, исполнителю или альбому…', count_one: '{{count}} трек', count_few: '{{count}} трека', count_many: '{{count}} треков', count_other: '{{count}} треков', }, artists: { title: 'Исполнители', search: 'Поиск…', all: 'Все', gridView: 'Сетка', listView: 'Список', imagesOn: 'Фото исполнителей — больше трафика и нагрузка на систему', imagesOff: 'Только инициалы — экономнее по трафику', loadMore: 'Ещё', notFound: 'Исполнители не найдены.', albumCount_one: '{{count}} альбом', albumCount_few: '{{count}} альбома', albumCount_many: '{{count}} альбомов', albumCount_other: '{{count}} альбомов', selectionCount: '{{count}} выбрано', select: 'Множественный выбор', startSelect: 'Включить множественный выбор', cancelSelect: 'Отмена', addToPlaylist: 'В плейлист', }, composers: { title: 'Композиторы', search: 'Поиск…', notFound: 'Композиторы не найдены.', unsupported: 'Просмотр по композиторам требует Navidrome 0.55 или новее.', loadFailed: 'Не удалось загрузить композиторов.', retry: 'Повторить', involvedIn_one: 'Участие в {{count}} альбоме', involvedIn_other: 'Участие в {{count}} альбомах', }, composerDetail: { back: 'Назад', notFound: 'Композитор не найден.', about: 'Об этом композиторе', works: 'Произведения', noWorks: 'Произведения не найдены.', workCount_one: '{{count}} произведение', workCount_other: '{{count}} произведений', shareComposer: 'Поделиться композитором', unknownComposer: 'Композитор', }, login: { subtitle: 'Десктопный клиент для Navidrome', serverName: 'Название сервера (необязательно)', serverNamePlaceholder: 'Мой Navidrome', serverUrl: 'Адрес сервера', serverUrlPlaceholder: '192.168.1.100:4533 или https://music.example.com', username: 'Логин', usernamePlaceholder: 'admin', password: 'Пароль', showPassword: 'Показать пароль', hidePassword: 'Скрыть пароль', connect: 'Подключиться', connecting: 'Подключение…', connected: 'Готово!', error: 'Не удалось подключиться — проверьте данные.', urlRequired: 'Укажите адрес сервера.', savedServers: 'Сохранённые серверы', addNew: 'Или добавить новый сервер', orMagicString: 'Или magic string', magicStringPlaceholder: 'Вставьте строку приглашения (psysonic1-…)', magicStringInvalid: 'Неверная или нечитаемая magic string.', }, connection: { connected: 'Подключено', connectedTo: 'Сервер: {{server}}', disconnected: 'Нет связи', disconnectedFrom: 'Сервер {{server}} недоступен — нажмите для настроек', checking: 'Подключение…', extern: 'Внешний', offlineTitle: 'Нет связи с сервером', offlineSubtitle: 'Сервер {{server}} недоступен. Проверьте сеть и адрес.', offlineModeBanner: 'Офлайн — воспроизведение из локального кэша', offlineNoCacheBanner: 'Нет соединения с сервером — {{server}} недоступен', offlineLibraryTitle: 'Офлайн-библиотека', offlineLibraryEmpty: 'Пока ничего не сохранено. Подключитесь к сети, откройте альбом и нажмите «Сохранить офлайн».', offlineAlbumCount_one: '{{n}} альбом', offlineAlbumCount_few: '{{n}} альбома', offlineAlbumCount_many: '{{n}} альбомов', offlineAlbumCount_other: '{{n}} альбомов', offlineFilterAll: 'Всё', offlineFilterAlbums: 'Альбомы', offlineFilterPlaylists: 'Плейлисты', offlineFilterArtists: 'Дискографии', retry: 'Повторить', serverSettings: 'Настройки сервера', switchServerTitle: 'Сменить сервер', switchServerHint: 'Нажмите, чтобы выбрать другой сохранённый сервер.', manageServers: 'Управление серверами…', switchFailed: 'Не удалось переключиться — сервер недоступен.', lastfmConnected: 'Last.fm: @{{user}}', lastfmSessionInvalid: 'Сессия недействительна — подключите снова', }, common: { albums: 'Альбомы', album: 'Альбом', loading: 'Загрузка…', loadingMore: 'Загрузка…', loadingPlaylists: 'Загрузка плейлистов…', noAlbums: 'Альбомов нет.', downloading: 'Скачивание…', downloadZip: 'Скачать (ZIP)', back: 'Назад', cancel: 'Отмена', save: 'Сохранить', delete: 'Удалить', use: 'Использовать', add: 'Добавить', new: 'Новое', active: 'Активен', download: 'Скачать', chooseDownloadFolder: 'Выбрать папку', noFolderSelected: 'Папка не выбрана', rememberDownloadFolder: 'Запомнить папку', filterGenre: 'Фильтр по жанру', filterSearchGenres: 'Поиск жанров…', filterNoGenres: 'Нет совпадений', filterClear: 'Сбросить', favorites: 'Избранное', favoritesTooltipOff: 'Показывать только избранное', favoritesTooltipOn: 'Показать всё', play: 'Воспроизвести', bulkSelected: 'Выбрано: {{count}}', clearSelection: 'Сбросить выбор', bulkAddToPlaylist: 'В плейлист', bulkRemoveFromPlaylist: 'Убрать из плейлиста', bulkClear: 'Снять выделение', updaterAvailable: 'Доступно обновление', updaterVersion: 'Версия {{version}} доступна', updaterWebsite: 'Сайт', updaterModalTitle: 'Доступна новая версия', updaterChangelog: 'Что нового', updaterDownloadBtn: 'Скачать сейчас', updaterSkipBtn: 'Пропустить эту версию', updaterRemindBtn: 'Напомнить позже', updaterDone: 'Загрузка завершена', updaterShowFolder: 'Показать в папке', updaterInstallHint: 'Закройте Psysonic и запустите установщик вручную.', updaterAurHint: 'Установить обновление через AUR:', updaterErrorMsg: 'Ошибка загрузки', updaterRetryBtn: 'Повторить', durationHoursMinutes: '{{hours}}ч {{minutes}}мин', durationMinutesOnly: '{{minutes}}мин', updaterOpenGitHub: 'Открыть на GitHub', filters: 'Фильтры', more: 'еще', yearRange: 'Диапазон лет', clearAll: 'Очистить всё', }, settings: { title: 'Настройки', language: 'Язык', languageEn: 'English', languageDe: 'Deutsch', languageEs: 'Español', languageFr: 'Français', languageNl: 'Nederlands', languageNb: 'Norsk', languageRu: 'Русский', languageZh: '中文', font: 'Шрифт', fontHintOpenDyslexic: 'Подходит для дислексии · без поддержки китайского', theme: 'Тема', appearance: 'Оформление', servers: 'Серверы', serverName: 'Название', serverUrl: 'Адрес', serverUrlPlaceholder: '192.168.1.100:4533 или https://music.example.com', serverUsername: 'Логин', serverPassword: 'Пароль', addServer: 'Добавить сервер', addServerTitle: 'Новый сервер', useServer: 'Выбрать', deleteServer: 'Удалить', noServers: 'Нет сохранённых серверов.', serverActive: 'Активен', 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)', audiomuseDesc: 'Включите, если на этом сервере настроен плагин AudioMuse-AI для Navidrome. Появится 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', lfmTitle: 'Last.fm', lfmConnect: 'Подключить Last.fm', lfmConnecting: 'Ожидание авторизации…', lfmConfirm: 'Я разрешил доступ', lfmConnected: 'Аккаунт', lfmDisconnect: 'Отключить', lfmConnectDesc: 'Привяжите Last.fm для скробблинга и статуса «Сейчас слушаю» прямо из Psysonic — настраивать Navidrome не нужно.', lfmOpenBrowser: 'Откроется браузер. Разрешите доступ на Last.fm, затем нажмите кнопку ниже.', lfmScrobbles: 'Скробблов: {{n}}', lfmMemberSince: 'С {{year}} года', scrobbleEnabled: 'Скробблинг включён', scrobbleDesc: 'Отправлять прослушивания на Last.fm после 50% трека', behavior: 'Поведение', cacheTitle: 'Макс. размер кэша', cacheDesc: 'Обложки и фото исполнителей. При переполнении старые записи удаляются. Офлайн-альбомы не трогаются автоматически, но сотрутся при полной очистке кэша.', cacheUsedImages: 'Изображения:', cacheUsedOffline: 'Офлайн-треки:', cacheUsedHot: 'На диске:', hotCacheTrackCount: 'Треков в кэше:', cacheMaxLabel: 'Лимит', cacheClearBtn: 'Очистить кэш', waveformCacheClearBtn: 'Очистить кэш waveform', cacheClearWarning: 'Будут удалены и все офлайн-альбомы.', cacheClearConfirm: 'Очистить всё', cacheClearCancel: 'Отмена', waveformCacheCleared: 'Кэш waveform очищен ({{count}} строк).', waveformCacheClearFailed: 'Не удалось очистить кэш waveform.', 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: 'При закрытии окна не выходить из приложения, а оставаться в трее.', preloadMiniPlayer: 'Предзагрузка мини-плеера', preloadMiniPlayerDesc: 'Создаёт окно мини-плеера в фоне при запуске приложения, чтобы при первом открытии содержимое отображалось мгновенно. Использует немного больше памяти.', useCustomTitlebar: 'Своя строка заголовка', useCustomTitlebarDesc: 'Заменить системную строку заголовка встроенной, в стиле темы приложения. Отключите, чтобы использовать родную строку GNOME/GTK и т.д.', linuxWebkitSmoothScroll: 'Плавное колесо (Linux)', linuxWebkitSmoothScrollDesc: 'Вкл — инерция. Выкл — по шагам, как в GTK.', discordRichPresence: 'Статус в Discord', discordRichPresenceDesc: 'Показывать текущий трек в профиле и статусе Discord. Нужен запущенный клиент Discord.', discordCoverSource: 'Источник обложки', discordCoverSourceDesc: 'Откуда загружать обложку альбома для профиля Discord.', discordCoverNone: 'Нет (только иконка приложения)', discordCoverServer: 'Сервер (через информацию об альбоме)', discordCoverApple: 'Apple Music', discordOptions: 'Расширенные параметры Discord', discordTemplates: 'Пользовательские шаблоны текста', discordTemplatesDesc: 'Настройте, какая информация отображается в профиле Discord. Переменные: {title}, {artist}, {album}', discordTemplateDetails: 'Основная строка (details)', discordTemplateState: 'Вторичная строка (state)', discordTemplateLargeText: 'Подсказка альбома (largeText)', nowPlayingEnabled: 'Показывать в «Сейчас играет»', nowPlayingEnabledDesc: 'Отправлять на сервер, что вы сейчас слушаете. Отключите, чтобы не делиться этим.', 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', lyricsModeStandard: 'Стандарт', lyricsModeStandardDesc: 'Три источника в свободно настраиваемом порядке: серверные теги, LRCLIB, Netease.', lyricsModeLyricsplus: 'YouLyPlus (Караоке)', lyricsModeLyricsplusDesc: 'Синхронизация слово-в-слово из Apple Music, Spotify, Musixmatch и QQ (общественный бэкенд). При отсутствии результата незаметно возвращается к стандартным источникам.', 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 скрывает.', randomMixTitle: 'Чёрный список случайного микса', luckyMixMenuTitle: 'Показывать «Мне повезёт» в меню', luckyMixMenuDesc: 'Включает «Мне повезёт» в «Собрать микс», а при раздельной навигации — отдельным пунктом меню. Видно только при включённом AudioMuse на активном сервере.', randomMixBlacklistTitle: 'Свои слова-фильтры', randomMixBlacklistDesc: 'Треки скрываются, если слово встречается в жанре, названии, альбоме или исполнителе (когда включён фильтр выше).', randomMixBlacklistPlaceholder: 'Добавить слово…', randomMixBlacklistAdd: 'Добавить', randomMixBlacklistEmpty: 'Пока пусто.', randomMixHardcodedTitle: 'Встроенные слова (при включённом фильтре)', tabAudio: 'Звук', tabStorage: 'Офлайн и кэш', tabAppearance: 'Внешний вид', tabLibrary: 'Библиотека', tabServers: 'Серверы', tabLyrics: 'Тексты песен', tabPersonalisation: 'Персонализация', tabIntegrations: 'Интеграции', inputKeybindingsTitle: 'Горячие клавиши', aboutContributorsCount_one: '{{count}} вклад', aboutContributorsCount_few: '{{count}} вклада', aboutContributorsCount_many: '{{count}} вкладов', aboutContributorsCount_other: '{{count}} вклада', searchPlaceholder: 'Поиск в настройках…', searchNoResults: 'Ничего не найдено по вашему запросу.', aboutMaintainersLabel: 'Сопровождающие', integrationsPrivacyTitle: 'Уведомление о конфиденциальности', integrationsPrivacyBody: 'Все интеграции на этой вкладке включаются по желанию и при активации отправляют данные во внешние сервисы или на ваш сервер Navidrome. Last.fm получает вашу историю прослушивания, Discord показывает текущую композицию в вашем профиле, Bandsintown опрашивается по артисту для получения дат гастролей, а «Сейчас играет» делится текущей композицией с другими пользователями вашего сервера Navidrome. Если вы не хотите ничего из этого, просто оставьте соответствующий раздел отключённым.', homeCustomizerTitle: 'Главная', sidebarTitle: 'Боковая панель', sidebarReset: 'Сбросить порядок', artistLayoutTitle: 'Разделы страницы исполнителя', artistLayoutDesc: 'Перетаскивайте, чтобы изменить порядок, переключайте, чтобы скрыть отдельные разделы страницы исполнителя. Разделы без данных пропускаются автоматически.', artistLayoutReset: 'Сбросить', artistLayoutBio: 'Биография исполнителя', artistLayoutTopTracks: 'Топ-треки', artistLayoutSimilar: 'Похожие исполнители', artistLayoutAlbums: 'Альбомы', artistLayoutFeatured: 'Также участвует в', sidebarDrag: 'Перетащите для порядка', sidebarFixed: 'Всегда показывать', 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: 'Текущие настройки будут заменены. Продолжить?', backupSuccess: 'Копия сохранена', backupImportSuccess: 'Настройки восстановлены — перезапуск…', backupImportError: 'Файл повреждён или не подходит.', 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', preloadMode: 'Предзагрузка следующего трека', preloadModeDesc: 'Когда начинать буферизацию следующего в очереди', nextTrackBufferingTitle: 'Буферизация', preloadHotCacheMutualExclusive: 'Предзагрузка и Hot Cache выполняют одну функцию — одновременно может быть активна только одна. Включение одной автоматически отключает другую.', preloadOff: 'Выкл.', preloadBalanced: 'Умеренно (за 30 с до конца)', preloadEarly: 'Рано (через 5 с после старта)', preloadCustom: 'Свой интервал', preloadCustomSeconds: 'Секунд до конца: {{n}}', infiniteQueue: 'Бесконечная очередь', infiniteQueueDesc: 'Подмешивать случайные треки, когда очередь закончится', experimental: 'Экспериментально', fsPlayerSection: 'Полноэкранный плеер', fsShowArtistPortrait: 'Отображать фото артиста', fsShowArtistPortraitDesc: 'Показывать фото артиста (или обложку альбома) в правой части полноэкранного плеера.', fsPortraitDim: 'Затемнение фото', fsLyricsStyle: 'Стиль отображения текста', fsLyricsStyleRail: 'Рельс', fsLyricsStyleRailDesc: 'Классическая рамка из 5 строк.', fsLyricsStyleApple: 'Прокрутка', fsLyricsStyleAppleDesc: 'Полноэкранный список с прокруткой.', 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: 'Масштаб', }, changelog: { modalTitle: 'Что нового', dontShowAgain: 'Больше не показывать', close: 'Понятно', }, whatsNew: { title: 'Что нового', empty: 'Для этой версии пока нет записи в журнале изменений.', bannerTitle: 'Журнал изменений', bannerCollapsed: 'Что нового в v{{version}}', dismiss: 'Скрыть', close: 'Закрыть', }, help: { title: 'Справка', searchPlaceholder: 'Поиск по справке…', noResults: 'Ничего не найдено. Попробуйте другой запрос.', s1: 'С чего начать', q1: 'Какие серверы поддерживаются?', a1: 'Psysonic в первую очередь сделан для Navidrome и полностью совместим с Subsonic — Gonic, Airsonic, LMS и другие серверы Subsonic-API тоже работают. Некоторые расширенные функции (рейтинги, умные плейлисты, обмен Magic String, управление пользователями) требуют Navidrome.', q2: 'Как добавить сервер?', a2: 'Настройки → Серверы → Добавить сервер. Введите URL (например, http://192.168.1.100:4533), имя пользователя и пароль. Psysonic проверяет соединение перед сохранением — при ошибке ничего не сохраняется. Можно добавить сколько угодно серверов и переключаться между ними в шапке; одновременно активен только один.', q3: 'Краткий обзор интерфейса?', a3: 'Боковая панель (слева) для навигации, Mainstage / страницы по центру, плеер внизу, панель Очереди справа (открывается через иконку справа вверху рядом с индикатором Now Playing). Поиск вверху работает по всей библиотеке; «Now Playing» показывает, что слушают другие пользователи на том же сервере Navidrome.', s2: 'Воспроизведение и Очередь', q4: 'Как пользоваться очередью?', a4: 'Откройте панель Очереди справа вверху. Перетаскивайте строки, чтобы менять порядок, выносите их за пределы для удаления, или используйте панель инструментов для перемешивания, сохранения очереди как плейлиста или перехода к треку. Перетаскивайте строки из панели в другие места как способ переноса.', q5: 'Gapless и Crossfade — в чём разница?', a5: 'Gapless преднабуферизирует следующий трек, чтобы между песнями не было тишины (идеально для концертных альбомов и DJ-миксов). Crossfade плавно затухает текущий трек, пока следующий нарастает (1–10 с — для перемешанных миксов). Они взаимоисключающи — включение одного отключает другое. Настройте оба в Настройки → Аудио.', q6: 'Что такое Бесконечная очередь?', a6: 'Когда очередь заканчивается и Повтор выключен, Psysonic тихо добавляет похожие/случайные треки из вашей библиотеки, чтобы воспроизведение не останавливалось. Авто-добавленные треки появляются под разделителем «— Добавлено автоматически —». Включается иконкой бесконечности в шапке очереди; ограничьте автодобавление жанром в Настройки → Очередь.', q7: 'Множественный выбор и Shift+клик диапазона?', a7: 'Включите «Выбор» на Альбомах / Новинках / Random Albums / Плейлистах. Клик переключает элемент, затем удерживайте Shift и кликните другой элемент — всё между ними в видимом порядке выделится. Shift+клики расширяют от последнего кликнутого якоря. Панель инструментов сверху предлагает массовые действия (очередь, скачивание, удаление и т. д.).', q8: 'Сочетания клавиш и глобальные хоткеи?', a8: 'По умолчанию: Пробел = Воспроизведение / Пауза, Esc = выйти из полного экрана / закрыть модалки, F1 = памятка по сочетаниям. Настройки → Ввод позволяет переназначить любое внутри-приложенческое действие (включая аккорды вроде Ctrl+Shift+P) и задать системные глобальные сочетания, работающие даже когда Psysonic в фоне или свёрнут. Медиа-клавиши (Воспр./Пауза, Далее, Назад) работают на всех платформах.', s3: 'Аудио-инструменты', q9: 'Режимы Replay Gain?', a9: 'Настройки → Аудио → Replay Gain. Режим Трек нормализует каждую песню к целевому уровню. Режим Альбом сохраняет кривую громкости внутри альбома. Режим Авто выбирает Трек или Альбом в зависимости от того, происходит ли очередь из одного альбома. Треки без тегов Replay Gain используют настраиваемый предусилитель.', q10: 'Что такое Smart Loudness Normalization (LUFS)?', a10: 'Современная альтернатива Replay Gain в Настройки → Аудио. Psysonic анализирует каждый трек по LUFS / EBU R128 и сохраняет результат, чтобы громкость была единой по всей библиотеке — включая треки без Replay Gain тегов. Холодный анализ работает в фоне и использует 35–40 % CPU около 1 минуты, потом 0. Установите целевую громкость (по умолчанию −10 LUFS) один раз.', q11: 'EQ и AutoEQ?', a11: '10-полосный параметрический EQ в Настройки → Аудио → Эквалайзер с ручными полосами и пресетами. AutoEQ рядом подгружает измеренный профиль коррекции для модели ваших наушников из базы AutoEQ и применяет его к полосам автоматически — выберите наушники, EQ настроится на правильную кривую.', q12: 'Как переключить устройство вывода аудио?', a12: 'Настройки → Аудио → Устройство вывода. Psysonic перечисляет все доступные выходы и переключается мгновенно при выборе. Кнопка обновления находит устройства, подключённые после запуска. На Linux ALSA-имена вроде «sysdefault» автоматически очищаются для удобства чтения.', q13: 'Что такое Hot Cache?', a13: 'Hot Cache предзагружает текущий трек и следующие в RAM и на диск, чтобы воспроизведение начиналось без задержек буферизации — особенно полезно на медленных / удалённых серверах. Вытеснение срабатывает при достижении лимита размера. Настройте размер и задержку дебаунса (чтобы быстрые скипы не приводили к лишним загрузкам) в Настройки → Аудио.', s4: 'Библиотека и Открытие', q14: 'Как работают рейтинги и Skip-to-1★?', a14: 'Psysonic поддерживает рейтинг 1–5 звёзд через OpenSubsonic (Navidrome ≥ 0.53). Оценивайте треки в списках, в контекстном меню или в плеере под именем исполнителя; альбомы — на странице альбома; исполнителей — на странице исполнителя. Skip-to-1★ (Настройки → Библиотека → Рейтинги) автоматически ставит 1 звезду после настраиваемого числа последовательных скипов. Та же панель позволяет задать минимальный рейтинг как фильтр для генерируемых миксов.', q15: 'Как просматривать — Папки, Жанры, Треки?', a15: 'Просмотр папок (боковая панель) ходит по дереву музыкальной директории сервера в Miller-column раскладке — клик по папке для входа, клик по треку или иконке воспроизведения папки для проигрывания / добавления. Жанры используют tag-cloud вид с размером по числу треков; клик по жанру открывает его. Треки — это плоский хаб библиотеки с виртуальным списком, сортируемым по столбцам, и живым поиском.', q16: 'Поиск и расширенный поиск?', a16: 'Поиск в шапке выполняет живой поиск по исполнителям, альбомам и трекам по мере набора. Откройте Расширенный поиск (боковая панель) для более богатого вида: фильтры по году, жанру, рейтингу, формату, каналам, частоте дискретизации, BPM, настроению — комбинируемые. Правый клик по любому результату открывает то же контекстное меню, что и в других местах.', q17: 'Что такое Миксы (Random / Genre / Super Genre / Lucky)?', a17: 'Random Mix строит плейлист случайных треков из библиотеки; фильтр ключевых слов исключает аудиокниги, комедию и т. д. по подстрокам жанра / названия / альбома. Super Genre Mix группирует библиотеку в широкие стили (Рок, Метал, Электронная, Джаз, Классика…) и строит сфокусированный микс. Lucky Mix использует историю прослушивания, рейтинги и похожие треки AudioMuse-AI для составления мгновенного плейлиста по одному клику.', q18: 'Страница статистики?', a18: 'Статистика (боковая панель) показывает топ исполнителей, топ альбомов, топ треков, разбивку по жанрам, время прослушивания со временем и охват по библиотеке, если настроено несколько музыкальных папок. Несколько видов экспортируются как изображение-карточка для шаринга.', q19: 'Как скачать альбом как ZIP?', a19: 'Страница альбома → «Скачать (ZIP)». Сервер сначала упаковывает альбом — для больших или lossless альбомов (FLAC / WAV) индикатор прогресса появляется только после завершения упаковки и начала передачи. Это нормально.', s5: 'Тексты', q20: 'Откуда берутся тексты?', a20: 'Три источника, настраиваемые в Настройки → Тексты: ваш сервер Navidrome (встроенные / OpenSubsonic тексты), LRCLIB (синхронизированные тексты от сообщества) и NetEase Cloud Music (большой азиатский + международный каталог). Каждый источник можно включить / выключить и переставить перетаскиванием.', q21: 'Как смотреть тексты во время воспроизведения?', a21: 'Кликните на иконку микрофона в плеере, чтобы открыть вкладку Тексты в панели очереди. Синхронизированные тексты автоматически прокручиваются и поддерживают клик-для-перехода; обычный текст прокручивается как статический блок. Включите Полноэкранный плеер через обложку плеера для иммерсивного вида текстов с mesh-blob фоном.', s6: 'Шаринг и Социальные функции', q22: 'Что такое Magic Strings?', a22: 'Magic Strings — это короткие копи-паст токены для шаринга вещей между пользователями Psysonic без сторонних серверов. Server-Invite строки позволяют другу присоединиться к вашему Navidrome одной вставкой; Magic Strings альбомов / исполнителей / очередей открывают тот же альбом / исполнителя / очередь у получателя. Создавайте через меню «Поделиться», вставляйте в строку поиска для использования.', q23: 'Что такое Orbit?', a23: 'Orbit — это синхронное совместное прослушивание: хост проигрывает трек, каждый гость слышит его синхронно, и гости могут предлагать песни, которые хост может принять в очередь. Запустите сессию через кнопку Orbit в шапке, поделитесь ссылкой-приглашением, и другие могут присоединиться с любой установки Psysonic. Хост контролирует воспроизведение (скип, перемотка, очередь) — гости получают вид в реальном времени и поле для предложений. Сессии эфемерные и завершаются, когда хост их закрывает.', q24: 'Что такое выпадающее меню Now Playing?', a24: 'Иконка трансляции справа вверху показывает, что слушают другие пользователи на вашем сервере Navidrome прямо сейчас, обновляется каждые 10 секунд. Ваша запись исчезает в момент паузы. По серверам — пользователи на другом активном сервере не показываются.', s7: 'Персонализация', q25: 'Темы и планировщик тем?', a25: 'Настройки → Внешний вид → Тема выбирает из 60+ тем в 8 группах (Psysonic, Mediaplayer, Операционные системы, Игры, Фильмы, Сериалы, Соцсети, Open Source Classics — Catppuccin / Nord / Gruvbox / Nightfox / Dracula). Auto-Switch Theme позволяет задать дневную и ночную тему со временем переключения, чтобы Psysonic переключался автоматически.', q26: 'Можно настроить боковую панель, Главную и страницу исполнителя?', a26: 'Да — Настройки → Персонализация. Кастомизатор боковой панели позволяет перетаскивать nav-элементы в нужном порядке и скрывать те, что не используются. Кастомизатор Главной включает/выключает каждый ряд Mainstage (Hero, Recent, Discover, Recently Played, Starred…). Кастомизатор страницы исполнителя меняет порядок секций (Top Songs, Альбомы, Синглы, Сборники, Похожие исполнители и т. д.) и позволяет скрывать те, на которые вы не смотрите.', q27: 'Что такое Mini Player?', a27: 'Маленькое плавающее окно с обложкой, элементами управления воспроизведением и компактной очередью. Открывается из иконки mini-player в плеере или сочетанием клавиш. Окно запоминает позицию и размер между сессиями. На Windows mini-webview предсоздаётся при запуске для мгновенного открытия; Linux / macOS включают это опционально через Настройки → Внешний вид → Предзагружать mini player.', q28: 'Что такое Floating Player Bar?', a28: 'Опциональный стиль плеера (Настройки → Внешний вид), который отделяется от нижней границы с тематическим фоном, акцентной рамкой, скруглённой обложкой и центрированной секцией громкости. Полезно на высоких мониторах или с компактными темами.', q29: 'Превью трека по наведению?', a29: 'Наведите мышь на строку трека, кликните маленькую кнопку превью на обложке или вызовите превью из контекстного меню — Psysonic стримит первые ~15 с через тот же Rust-аудио-движок, чтобы применилась нормализация громкости. Полезно для быстрого знакомства с альбомом, который вы ещё не слушали.', q30: 'Таймер сна?', a30: 'Кликните иконку луны в плеере, чтобы открыть таймер сна. Выберите длительность (или «конец текущего трека») и Psysonic плавно затухнет и поставит на паузу в конце. На кнопке отображается круговое кольцо и обратный отсчёт во время работы таймера.', q31: 'Масштаб UI, шрифт, стиль seekbar?', a31: 'Настройки → Внешний вид — Масштаб интерфейса (80–125 % без влияния на системный размер шрифта), Шрифт (10 UI шрифтов, включая IBM Plex Mono, Fira Code, Geist, Golos Text…), Стиль Seekbar (Волна анализированная / pseudowave детерминированная / Линия и Точка / Полоса / Толстая полоса / Сегментированный / Неон / Импульсная волна / Шлейф частиц / Жидкое заполнение / Ретро-плёнка).', s8: 'Опытный пользователь', q32: 'Управление плеером из командной строки?', a32: 'Бинарь Psysonic также служит пультом дистанционного управления. Примеры: psysonic --player play / pause / next / prev, --player volume 75, --player seek 15, --player shuffle, --player repeat off|all|one, --player rating 1-5. Переключайте серверы, аудиоустройства, библиотеки; запускайте Instant Mix; ищите исполнителей / альбомы / треки. Полный список через psysonic --player --help. Shell-автодополнение для bash и zsh через psysonic completions.', q33: 'Умные плейлисты (Navidrome)?', a33: 'Умные плейлисты — это динамические плейлисты на стороне Navidrome, определяемые правилами (жанр = Рок И год > 2020 и т. д.). Страница Плейлисты в Psysonic позволяет создавать, редактировать и удалять их с визуальным редактором правил — Psysonic общается с Navidrome native API для этого. Они ведут себя как обычные плейлисты в остальной части приложения и обновляются автоматически при изменении библиотеки.', q34: 'Резервная копия и восстановление настроек?', a34: 'Настройки → Хранилище → Резервное копирование экспортирует профили серверов, темы, сочетания клавиш и другие настройки в один JSON файл. Импортируйте файл на другой машине или после переустановки, чтобы восстановить всё сразу. Пароли серверов включены — храните файл в надёжном месте.', q35: 'Где смотреть все open-source лицензии?', a35: 'Настройки → Система → Open Source Licenses. Полный список зависимостей (cargo crates и npm пакеты) поставляется со встроенными текстами лицензий. Кликните на запись для полного текста; выделенный блок сверху подсвечивает узнаваемые библиотеки (Tauri, React, rodio, symphonia и т. д.).', s9: 'Офлайн и Sync', q36: 'Офлайн-режим — кэширование альбомов и плейлистов?', a36: 'Откройте любой альбом или плейлист и кликните иконку загрузки в шапке — Psysonic кэширует каждый трек локально, чтобы он играл с диска без сетевого вызова. Страница Офлайн-библиотека (боковая панель) показывает всё кэшированное, прогресс текущих загрузок и позволяет удалять записи иконкой корзины (появляется после завершения загрузки).', q37: 'Лимит офлайн-хранилища?', a37: 'Настройки → Библиотека → Офлайн позволяет задать максимальный размер кэша. При достижении лимита кнопка загрузки на странице альбома показывает предупреждающий баннер. Освободите место, удалив альбомы или плейлисты со страницы Офлайн-библиотека.', q38: 'Device Sync — копирование музыки на USB / SD?', a38: 'Device Sync (боковая панель) копирует альбомы, плейлисты или целых исполнителей на внешний диск для офлайн-прослушивания на других устройствах. Выберите целевую папку, выберите источники из вкладок браузера, нажмите «Перенести на устройство». Psysonic пишет манифест (psysonic-sync.json), чтобы знать, какие файлы уже там, даже если переоткрыть Device Sync на другой ОС с другим шаблоном имени файла. Шаблоны поддерживают токены {artist} / {album} / {title} / {track_number} / {disc_number} / {year} с / как разделителем папок.', s10: 'Интеграции и Устранение неполадок', q39: 'Скробблинг Last.fm?', a39: 'Настройки → Интеграции → Last.fm. Подключите аккаунт один раз, и Psysonic скробблит напрямую в Last.fm — настройка Navidrome не нужна. Скроббл отправляется после прослушивания 50 % трека. Now-playing пинги отправляются в начале.', q40: 'Discord Rich Presence?', a40: 'Настройки → Интеграции → Discord показывает текущий трек в вашем профиле Discord. Выберите между иконкой приложения, обложками с вашего сервера (через getAlbumInfo2 — нужен публично доступный сервер) или обложками Apple Music. Кастомизируйте отображаемые строки (детали, состояние, тултип) с помощью токен-шаблонов.', q41: 'Даты туров Bandsintown?', a41: 'Включается в Настройки → Интеграции → Now-Playing Info. Вкладка Now Playing на странице Now Playing затем показывает предстоящие даты туров для играющего исполнителя через Bandsintown widget API. По умолчанию выключено — никаких запросов до включения.', q42: 'Internet Radio — воспроизведение живых стримов?', a42: 'Internet Radio (боковая панель) проигрывает любой live-стрим, сохранённый на вашем сервере Navidrome (добавляйте станции через Navidrome admin UI). Воспроизведение работает через HTML5 audio движок браузера — большинство настроек EQ / Replay Gain / Loudness не применяются к радио, но ICY-метаданные (текущее имя песни) отображаются. Поддерживает MP3, AAC, OGG Vorbis и большинство HLS стримов; поддержка кодеков зависит от платформы.', q43: 'Тест соединения не проходит — что делать?', a43: 'Дважды проверьте URL включая порт (например, http://192.168.1.100:4533). В локальной сети http:// часто работает там, где https:// не работает (нет сертификата). Убедитесь, что firewall не блокирует порт и что имя пользователя и пароль правильные. Если сервер за reverse proxy, попробуйте сначала прямой URL для изоляции причины.', q44: 'Обложки и изображения исполнителей загружаются медленно.', a44: 'Изображения подгружаются с сервера при первом просмотре, затем кэшируются локально на 30 дней. Если хранилище сервера медленное, первый визит на страницу может занять момент; последующие визиты мгновенные. Hot Cache также помогает с треками, но кэш изображений независим.', q45: 'Проблемы Linux — чёрный экран или нет звука?', a45: 'Чёрный экран обычно проблема GPU / EGL драйвера в WebKitGTK — запускайте с GDK_BACKEND=x11 WEBKIT_DISABLE_COMPOSITING_MODE=1 WEBKIT_DISABLE_DMABUF_RENDERER=1 (AUR / .deb / .rpm установщики устанавливают это автоматически). Для аудио убедитесь, что PipeWire или PulseAudio запущены. Пропадание звука после спящего режима / пробуждения теперь обрабатывается автоматически post-sleep recovery hook.', }, queue: { title: 'Очередь', savePlaylist: 'Сохранить как плейлист', updatePlaylist: 'Обновить плейлист', filterPlaylists: 'Фильтр плейлистов…', playlistName: 'Название плейлиста', cancel: 'Отмена', save: 'Сохранить', loadPlaylist: 'Загрузить плейлист', loading: 'Загрузка…', noPlaylists: 'Плейлистов нет.', load: 'Заменить очередь и играть', appendToQueue: 'Добавить в очередь', delete: 'Удалить', deleteConfirm: 'Удалить плейлист «{{name}}»?', clear: 'Очистить', shuffle: 'Перемешать', gapless: 'Без пауз', crossfade: 'Кроссфейд', infiniteQueue: 'Бесконечная очередь', autoAdded: '— Добавлено автоматически —', radioAdded: '— Радио —', hide: 'Скрыть', hideNowPlaying: 'Скрыть информацию о воспроизведении', showNowPlaying: 'Показать информацию о воспроизведении', close: 'Закрыть', nextTracks: 'Дальше', shareQueue: 'Копировать ссылку на очередь', shareQueueEmpty: 'Очередь пуста — нечем поделиться.', emptyQueue: 'Очередь пуста.', trackSingular: 'трек', trackPlural: 'треков', showRemaining: 'Осталось', showTotal: 'Всего', showEta: 'Показать ориентировочное окончание', replayGain: 'ReplayGain', rgTrack: 'Т {{db}} дБ', rgAlbum: 'А {{db}} дБ', rgPeak: 'Пик {{pk}}', sourceOffline: 'Играет из офлайн-библиотеки', sourceHot: 'Играет из кэша', sourceStream: 'Играет из сетевого потока', }, miniPlayer: { showQueue: 'Показать очередь', hideQueue: 'Скрыть очередь', pinOnTop: 'Поверх окон', pinOff: 'Открепить', openMainWindow: 'Открыть главное окно', close: 'Закрыть', emptyQueue: 'Очередь пуста', }, statistics: { title: 'Статистика', recentlyPlayed: 'Недавно проиграно', mostPlayed: 'Самые проигранные альбомы', highestRated: 'С высоким рейтингом', genreDistribution: 'Жанры (топ-20)', loadMore: 'Ещё', statArtists: 'Исполнители', statArtistsTooltip: 'Только исполнители альбомов — артисты, присутствующие лишь в треках (фичеринг, гость и т. д.) без собственного альбома, не учитываются.', statAlbums: 'Альбомы', statSongs: 'Треки', statGenres: 'Жанры', statPlaytime: 'Время звучания', genreInsights: 'По жанрам', formatDistribution: 'Форматы', formatSample: 'Выборка {{n}} треков', computing: 'Считаем…', genreSongs_one: '{{count}} композиция', genreSongs_few: '{{count}} композиции', genreSongs_many: '{{count}} композиций', genreSongs_other: '{{count}} композиций', genreAlbums_one: '{{count}} альбом', genreAlbums_few: '{{count}} альбома', genreAlbums_many: '{{count}} альбомов', genreAlbums_other: '{{count}} альбомов', recentlyAdded: 'Недавно добавлено', decadeDistribution: 'Альбомы по десятилетиям', decadeAlbums_one: '{{count}} альбом', decadeAlbums_few: '{{count}} альбома', decadeAlbums_many: '{{count}} альбомов', decadeAlbums_other: '{{count}} альбомов', decadeUnknown: 'Неизвестно', lfmTitle: 'Статистика Last.fm', lfmTopArtists: 'Топ исполнителей', lfmTopAlbums: 'Топ альбомов', lfmTopTracks: 'Топ треков', lfmPlays_one: '{{count}} прослушивание', lfmPlays_few: '{{count}} прослушивания', lfmPlays_many: '{{count}} прослушиваний', lfmPlays_other: '{{count}} прослушиваний', lfmPeriodOverall: 'За всё время', lfmPeriod7day: '7 дней', lfmPeriod1month: 'Месяц', lfmPeriod3month: '3 месяца', lfmPeriod6month: '6 месяцев', lfmPeriod12month: 'Год', lfmNotConnected: 'Подключите Last.fm в настройках.', lfmRecentTracks: 'Последние скробблы', lfmNowPlaying: 'Сейчас играет', lfmJustNow: 'только что', lfmMinutesAgo: '{{n}} мин назад', lfmHoursAgo: '{{n}} ч назад', lfmDaysAgo: '{{n}} дн. назад', topRatedSongs: 'Лучшие по рейтингу треки', topRatedArtists: 'Лучшие по рейтингу исполнители', noRatedSongs: 'Нет оценённых треков. Ставьте оценки в альбомах или плейлистах.', noRatedArtists: 'Нет оценённых исполнителей.', }, player: { regionLabel: 'Плеер', openFullscreen: 'Полноэкранный плеер', fullscreen: 'Полноэкранный режим', closeFullscreen: 'Выйти из полноэкранного', closeTooltip: 'Закрыть (Esc)', noTitle: 'Без названия', stop: 'Стоп', prev: 'Предыдущий трек', play: 'Играть', pause: 'Пауза', previewActive: 'Превью воспроизводится', previewLabel: 'Превью', delayModalTitle: 'Таймер', delayPauseSection: 'Пауза через', delayStartSection: 'Старт через', delayPreviewPause: 'Пауза в', delayPreviewStart: 'Старт в', delaySchedulePause: 'Запланировать паузу', delayScheduleStart: 'Запланировать старт', delayCancelPause: 'Отменить таймер паузы', delayCancelStart: 'Отменить таймер старта', delayInactivePause: 'Доступно только во время воспроизведения.', delayInactiveStart: 'Доступно на паузе при загруженном треке или радио.', delayCustomMinutes: 'Своя задержка (минуты)', delayCustomPlaceholder: 'напр. 2.5', closeDelayModal: 'Закрыть', delayIn: 'через', delayFmtSec: '{{n}} с', delayFmtMin: '{{n}} мин', delayFmtHr: '{{n}} ч', delayCancel: 'Отмена', delayApply: 'Применить', next: 'Следующий трек', repeat: 'Повтор', repeatOff: 'Выкл.', repeatAll: 'Все', repeatOne: 'Один', progress: 'Прогресс', volume: 'Громкость', toggleQueue: 'Очередь', collapseQueueResize: 'Свернуть очередь, изменить ширину', moreOptions: 'Дополнительно', equalizer: 'Эквалайзер', miniPlayer: 'Мини-плеер', lyrics: 'Текст', lyricsLoading: 'Загрузка текста…', lyricsNotFound: 'Текст не найден', lyricsSourceNetease: 'Источник: Netease', lyricsSourceLyricsplus: 'Источник: YouLyPlus', showDuration: 'Показать длительность', showRemainingTime: 'Показать оставшееся время', }, nowPlayingInfo: { tab: 'Инфо', empty: 'Включите воспроизведение, чтобы увидеть информацию', artist: 'Исполнитель', songInfo: 'О треке', onTour: 'В туре', noTourEvents: 'Нет предстоящих концертов', tourLoading: 'Загрузка…', poweredByBandsintown: 'Данные о туре через Bandsintown', bioReadMore: 'Читать дальше', bioReadLess: 'Свернуть', showMoreTours_one: 'Показать ещё {{count}}', showMoreTours_few: 'Показать ещё {{count}}', showMoreTours_many: 'Показать ещё {{count}}', showMoreTours_other: 'Показать ещё {{count}}', showLessTours: 'Свернуть', enableBandsintownPrompt: 'Показать предстоящие концерты?', enableBandsintownPromptDesc: 'Опционально. Загружает концерты текущего исполнителя через публичный API Bandsintown.', enableBandsintownPrivacy: 'При включении имя текущего исполнителя отправляется в API Bandsintown для получения дат концертов. Аккаунт и личные данные не передаются.', enableBandsintownAction: 'Включить', role: { artist: 'Исполнитель', albumArtist: 'Исполнитель альбома', composer: 'Композитор', }, }, songInfo: { title: 'О треке', songTitle: 'Название', artist: 'Исполнитель', album: 'Альбом', albumArtist: 'Альбомный исполнитель', year: 'Год', genre: 'Жанр', duration: 'Длительность', track: 'Номер', format: 'Формат', bitrate: 'Битрейт', sampleRate: 'Частота', bitDepth: 'Разрядность', channels: 'Каналы', fileSize: 'Размер файла', path: 'Путь', replayGainTrack: 'RG по треку', replayGainAlbum: 'RG по альбому', replayGainPeak: 'Пик RG', mono: 'Моно', stereo: 'Стерео', }, playlists: { title: 'Плейлисты', newPlaylist: 'Новый плейлист', unnamed: 'Без названия', createName: 'Название…', create: 'Создать', cancel: 'Отмена', empty: 'Плейлистов пока нет.', emptyPlaylist: 'Плейлист пуст.', addFirstSong: 'Добавьте первый трек', notFound: 'Плейлист не найден.', songs: 'Треков: {{n}}', playAll: 'Воспроизвести всё', shuffle: 'Перемешать', addToQueue: 'В очередь', back: 'К списку плейлистов', deletePlaylist: 'Удалить', confirmDelete: 'Нажмите ещё раз для подтверждения', removeSong: 'Убрать из плейлиста', addSongs: 'Добавить треки', searchPlaceholder: 'Поиск по библиотеке…', noResults: 'Ничего не найдено.', suggestions: 'Рекомендации', noSuggestions: 'Пока нет рекомендаций.', titleBadge: 'Плейлист', refreshSuggestions: 'Обновить подборку', addSong: 'В плейлист', preview: 'Превью (30 с)', previewStop: 'Остановить превью', playNextSuggestion: 'Играть следующим', suggestionsHint: 'Двойной клик по строке — добавить в плейлист', addSelected: 'Добавить выбранные', cacheOffline: 'Сохранить плейлист офлайн', offlineCached: 'Плейлист сохранён', removeOffline: 'Удалить из офлайн-кэша', offlineDownloading: 'Кэширование… ({{done}} из {{total}} альбомов)', publicLabel: 'Публичный', privateLabel: 'Личный', editMeta: 'Изменить плейлист', editNamePlaceholder: 'Название…', editCommentPlaceholder: 'Описание…', editPublic: 'Публичный плейлист', editSave: 'Сохранить', editCancel: 'Отмена', changeCover: 'Сменить обложку', changeCoverLabel: 'Сменить фото', removeCover: 'Убрать фото', coverUpdated: 'Обложка обновлена', metaSaved: 'Плейлист сохранён', downloadZip: 'Скачать (ZIP)', // Toast notifications for multi-select addSuccess: '{{count}} треков добавлено в {{playlist}}', addPartial: '{{added}} добавлено, {{skipped}} пропущено (дубликаты)', addAllSkipped: 'Все пропущены ({{count}} дубликатов)', addedAsDuplicates: '{{count}} треков добавлено в {{playlist}} (как дубликаты)', duplicateConfirmTitle: 'Уже в плейлисте', duplicateConfirmMessage: 'Все {{count}} треков уже есть в «{{playlist}}». Всё равно добавить их как дубликаты?', duplicateConfirmAction: 'Всё равно добавить', addError: 'Ошибка при добавлении треков', createAndAddSuccess: 'Плейлист "{{playlist}}" создан с {{count}} треками', createError: 'Ошибка при создании плейлиста', deleteSuccess: '{{count}} плейлистов удалено', deleteFailed: 'Ошибка при удалении {{name}}', deleteSelected: 'Удалить выбранные', deleteSelectedPartial: 'Можно удалить только {{n}} из {{total}} выбранных плейлистов (остальные принадлежат другим пользователям).', mergeSuccess: '{{count}} треков объединено в {{playlist}}', mergeNoNewSongs: 'Нет новых треков для добавления', mergeError: 'Ошибка при объединении плейлистов', mergeInto: 'Объединить в', selectionCount: '{{count}} выбрано', select: 'Выбрать', startSelect: 'Включить выбор', cancelSelect: 'Отмена', loadingAlbums: 'Загрузка {{count}} альбомов…', loadingArtists: 'Загрузка {{count}} исполнителей…', myPlaylists: 'Мои плейлисты', noOtherPlaylists: 'Нет других доступных плейлистов', addToPlaylistSuccess: '{{count}} треков добавлено в {{playlist}}', addToPlaylistNoNew: 'Нет новых треков для {{playlist}}', addToPlaylistError: 'Ошибка при добавлении в плейлист', removeSuccess: 'Трек убран из плейлиста', removeError: 'Ошибка при удалении из плейлиста', importCSV: 'Импорт CSV', importCSVTooltip: 'Импорт из CSV Spotify', csvImportReport: 'Отчёт об импорте CSV', csvImportTotal: 'Всего', csvImportAdded: 'Добавлено', csvImportDuplicates: 'Дубликаты', csvImportNotFound: 'Не найдено', csvImportNetworkErrors: 'Ошибки сети', csvImportDuplicatesTitle: 'Дубликаты (уже в плейлисте):', csvImportNotFoundTitle: 'Не найденные треки:', csvImportNetworkErrorsTitle: 'Ошибки сети (можно повторить импорт):', csvImportDownloadReport: 'Скачать отчёт', csvImportClose: 'Закрыть', csvImportNoValidTracks: 'В CSV-файле не найдено действительных треков', csvImportFailed: 'Не удалось импортировать CSV-файл', csvImportToast: '{{added}} добавлено, {{notFound}} не найдено, {{duplicates}} дубликатов', csvImportDownloadSuccess: 'Отчёт успешно скачан', csvImportDownloadError: 'Не удалось скачать отчёт', }, smartPlaylists: { sectionBasic: '1. База', sectionGenres: '2. Жанры', sectionYearsAndFilters: '3. Годы и фильтры', genreMode: 'Режим жанров', genreModeInclude: 'Включить жанры', genreModeExclude: 'Исключить жанры', genreSearchPlaceholder: 'Фильтр жанров...', availableGenres: 'Доступные', selectedGenres: 'Выбранные', yearMode: 'Режим годов', yearModeInclude: 'Включить диапазон', yearModeExclude: 'Исключить диапазон', name: 'Название (без префикса)', limit: 'Лимит', limitHint: 'Сколько треков включать в плейлист (1-{{max}}, обычно 50).', artistContains: 'Исполнитель содержит…', albumContains: 'Альбом содержит…', titleContains: 'Название содержит…', minRating: 'Мин. рейтинг', minRatingAria: 'Минимальный рейтинг для смарт-плейлиста', minRatingHint: '0 — без минимального порога; 1-5 — оставить треки с рейтингом выше выбранного.', fromYear: 'Год от', toYear: 'Год до', excludeUnrated: 'Исключить треки без рейтинга', compilationOnly: 'Только сборники', create: 'Создать смарт-плейлист', save: 'Сохранить смарт-плейлист', created: 'Создан {{name}}', updated: 'Обновлён {{name}}', createFailed: 'Не удалось создать смарт-плейлист.', updateFailed: 'Не удалось обновить смарт-плейлист.', navidromeOnly: 'Смарт-плейлисты можно создавать только на серверах Navidrome.', loadFailed: 'Не удалось загрузить смарт-плейлисты из Navidrome.', sortRandom: 'Сортировка: случайно', sortTitleAsc: 'Сортировка: название А-Я', sortTitleDesc: 'Сортировка: название Я-А', sortYearDesc: 'Сортировка: год по убыванию', sortYearAsc: 'Сортировка: год по возрастанию', sortPlayCountDesc: 'Сортировка: прослушивания по убыванию', }, mostPlayed: { title: 'Популярное', topArtists: 'Топ исполнителей', topAlbums: 'Топ альбомов', plays: '{{n}} прослушиваний', sortMost: 'Сначала популярные', sortLeast: 'Сначала малоизвестные', loadMore: 'Загрузить больше альбомов', noData: 'Пока нет данных о прослушивании. Начните слушать!', noArtists: 'Все исполнители отфильтрованы.', filterCompilations: 'Скрыть исполнителей сборников (Various Artists, Soundtracks и др.)', filterCompilationsShort: 'Скрыть сборники', }, losslessAlbums: { empty: 'В этой библиотеке пока нет lossless-альбомов.', unsupported: 'Этот сервер не предоставляет метаданные, необходимые для поиска lossless-альбомов.', slowFetchHint: 'Загружается медленнее других страниц альбомов — Psysonic проходит весь каталог песен по качеству.', }, radio: { title: 'Онлайн-радио', empty: 'Радиостанции не настроены.', addStation: 'Добавить станцию', editStation: 'Изменить', deleteStation: 'Удалить станцию', confirmDelete: 'Нажмите ещё раз для подтверждения', stationName: 'Название станции…', streamUrl: 'URL потока…', homepageUrl: 'Сайт станции (необязательно)', save: 'Сохранить', cancel: 'Отмена', live: 'ЭФИР', liveStream: 'Онлайн-радио', openHomepage: 'Открыть сайт', changeCoverLabel: 'Сменить обложку', removeCover: 'Убрать обложку', browseDirectory: 'Каталог станций', directoryPlaceholder: 'Поиск станций…', noResults: 'Станции не найдены.', stationAdded: 'Станция добавлена', filterAll: 'Все', filterFavorites: 'Избранное', sortManual: 'Вручную', sortAZ: 'А → Я', sortZA: 'Я → А', sortNewest: 'Сначала новые', favorite: 'В избранное', unfavorite: 'Убрать из избранного', noFavorites: 'Избранных станций нет.', listenerCount_one: '{{count}} слушатель', listenerCount_other: '{{count}} слушателей', recentlyPlayed: 'Недавно сыгранное', upNext: 'Следующий', }, folderBrowser: { empty: 'Папка пуста', error: 'Ошибка загрузки', }, deviceSync: { title: 'Синхронизация устройства', targetFolder: 'Папка назначения', noFolderChosen: 'Папка не выбрана', selectDrive: 'Выберите диск…', refreshDrives: 'Обновить диски', noDrivesDetected: 'Съёмные диски не обнаружены', browseManual: 'Обзор вручную…', free: 'свободно', notMountedVolume: 'Цель не находится на смонтированном томе. Диск мог быть отключён.', chooseFolder: 'Выбрать…', filenameTemplate: 'Шаблон имени файла', targetDevice: 'Целевое устройство', templateHint: 'Переменные: {artist}, {album}, {title}, {track_number}, {disc_number}, {year}', cleanupButton: 'Удалить файлы вне выборки', cleanupNothingToDelete: 'Нечего удалять — устройство уже синхронизировано.', confirmCleanup: 'Удалить {{count}} файл(ов) с устройства, не входящих в текущую выборку. Продолжить?', cleanupComplete: '{{count}} файл(ов) удалено с устройства.', selectedSources: 'Выбранные источники', noSourcesSelected: 'Источники не выбраны. Нажмите на элементы в браузере, чтобы добавить их.', clearAll: 'Очистить всё', tabPlaylists: 'Плейлисты', tabAlbums: 'Альбомы', tabArtists: 'Исполнители', searchPlaceholder: 'Поиск…', syncButton: 'Синхронизировать на устройство', actionTransfer: 'Перенести на устройство', actionDelete: 'Удалить с устройства', actionApplyAll: 'Применить все изменения', templatePreview: 'Предпросмотр', templatePresetStandard: 'Стандарт', templatePresetMultiDisc: 'Мульти-диск', templatePresetAltFolder: 'Альт. папка', tokenSlashHint: '/ = разделитель папок', cancel: 'Отмена', noTargetDir: 'Сначала выберите папку назначения.', noSources: 'Выберите хотя бы один источник.', noTracks: 'В выбранных источниках не найдено треков.', fetchError: 'Ошибка загрузки треков с сервера.', syncComplete: 'Синхронизация завершена.', dismiss: 'Закрыть', cancelSync: 'Отмена', syncCancelled: 'Синхронизация отменена ({{done}} / {{total}} перенесено).', colName: 'Название', colType: 'Тип', colStatus: 'Статус', onDevice: 'Управление устройством', addSources: 'Добавить…', syncResult: '{{done}} перенесено, {{skipped}} уже актуально ({{total}} всего)', deleteFromDevice: 'Пометить для удаления ({{count}})', confirmDelete: 'Удалить {{count}} запись(ей) с устройства: {{names}}?', deleteComplete: '{{count}} запись(ей) удалено с устройства.', manifestImported: 'Импортировано {{count}} источник(ов) из манифеста устройства.', statusSynced: 'Синхронизировано', statusPending: 'Ожидает', statusDeletion: 'Удаление', markForDeletion: 'Пометить для удаления', removeSource: 'Удалить', undoDeletion: 'Отменить удаление', syncInBackground: 'Синхронизация запущена в фоне — можно перейти в другой раздел.', syncInProgress: '{{done}} / {{total}} треков…', syncSummary: 'Сводка синхронизации', calculating: 'Вычисление необходимых данных…', filesToAdd: 'Файлы для добавления:', filesToDelete: 'Файлы для удаления:', netChange: 'Чистое изменение:', availableSpace: 'Доступное место на диске:', spaceWarning: 'Предупреждение: на целевом устройстве недостаточно сообщаемого места.', proceed: 'Продолжить синхронизацию', notEnoughSpace: 'Обнаружено недостаточно физического места на диске!', liveSearch: 'Live', randomAlbumsLabel: 'Случайные альбомы', }, orbit: { triggerLabel: 'Orbit', triggerTooltip: 'Начать или присоединиться к совместной сессии прослушивания', launchCreate: 'Создать сессию', launchJoin: 'Присоединиться к сессии', launchHelp: 'Как это работает?', launchHelpSoon: 'Скоро будет', joinModalTitle: 'Присоединиться к сессии Orbit', joinModalSub: 'Вставь ссылку-приглашение от хоста.', joinModalLinkLabel: 'Ссылка-приглашение', joinModalLinkPlaceholder: 'psysonic2-…', joinModalLinkHelper: 'Работает с любой действительной ссылкой Orbit. Должна указывать на сервер, на котором ты сейчас авторизован.', joinModalPasteTooltip: 'Вставить из буфера обмена', joinModalSubmit: 'Присоединиться', joinModalBusy: 'Подключение…', joinErrEmpty: 'Вставь ссылку-приглашение.', joinErrInvalid: 'Это не похоже на ссылку-приглашение Orbit.', closeAria: 'Закрыть', heroTitlePrefix: 'Слушай вместе с', heroTitleBrand: 'Orbit', heroSub: 'Начни сессию — другие пользователи на {{server}} будут слушать вместе и смогут предлагать треки.', fallbackServer: 'этот сервер', tipLan: 'Ты сейчас подключён через адрес домашней сети. Гости вне твоей сети не смогут присоединиться — переключись на публичный адрес сервера в настройках перед стартом.', tipRemote: 'Чтобы гости вне домашней сети могли присоединиться, адрес сервера должен быть публично доступен. Если сервер только внутренний, переключись перед стартом.', labelName: 'Название сессии', namePlaceholder: 'Velvet Orbit', reshuffleTooltip: 'Новое предложение', reshuffleAria: 'Предложить новое название', helperName: 'Как сессия будет отображаться у гостей — оставь или введи своё.', labelMax: 'Макс. гостей', helperMax: 'Ты не считаешься — это только ограничивает входящих гостей.', labelLink: 'Ссылка-приглашение', tooltipCopied: 'Скопировано', tooltipCopy: 'Копировать', ariaCopyLink: 'Копировать ссылку-приглашение', helperLink: 'Отправь эту ссылку гостям. Они могут вставить её в Psysonic в любом месте с помощью Ctrl+V.', labelClearQueue: 'Сначала очистить мою очередь', helperClearQueue: 'Начать сессию с пустой очередью. Выкл.: уже поставленные треки остаются и делятся с гостями.', btnCancel: 'Отмена', btnStarting: 'Запуск…', btnStart: 'Запустить Orbit', btnCopyAndStart: 'Копировать ссылку и запустить', errNameRequired: 'Пожалуйста, дай сессии название.', errStartFailed: 'Не удалось запустить.', hostLabel: 'Хост: {{name}}', participantsTooltip: 'Участники', settingsTooltip: 'Настройки сессии', shareTooltip: 'Поделиться ссылкой-приглашением', shuffleLabel: 'Следующее перемешивание через', catchUpLabel: 'догнать', catchUpTooltip: 'Перейти к текущей позиции хоста', hostAway: 'Хост оффлайн', hostOnline: 'Хост онлайн', endTooltip: 'Завершить сессию', leaveTooltip: 'Покинуть сессию', helpTooltip: 'Как работает Orbit', helpTitle: 'Как работает Orbit', helpIntro: 'Orbit превращает Psysonic в общую комнату прослушивания. Хост выбирает музыку; гости слушают синхронно и могут предлагать треки.', helpHostOnly: '(хост)', helpSec1Title: 'Что такое Orbit?', helpSec1Body: 'Режим «слушать вместе» — хост управляет воспроизведением, гости подключаются. Всё идёт через плейлисты на твоём собственном сервере Navidrome; никакой внешней инфраструктуры.', helpSec2Title: 'Хост и гости', helpSec2Body: 'Хост управляет воспроизведением (play / pause / skip / seek) и решает, когда завершить сессию. Гости следуют за воспроизведением хоста, могут предлагать треки и выходить или присоединяться в любое время. Только хост может исключать или навсегда банить участников.', helpSec2WarnHead: 'Важно: отдельные аккаунты.', helpSec2WarnBody: 'У каждого участника должен быть свой аккаунт Navidrome. Если хост и гость входят под одним и тем же пользователем, их отправки конфликтуют, и хост никогда не увидит предложения гостя.', helpSec3Title: 'Запуск и приглашение', helpSec3Body: 'Нажми кнопку «Orbit» → Создать сессию → стартовое окно покажет готовую ссылку для копирования и опционально позволит очистить текущую очередь. Делись ссылкой как угодно. Пока сессия активна, кнопка «Поделиться» в верхней панели сессии копирует ссылку в любой момент.', helpSec4Title: 'Присоединение', helpSec4Body: 'Вставь ссылку-приглашение в любом месте Psysonic с помощью Ctrl+V / Cmd+V — запрос на присоединение появится автоматически. Альтернатива: «Orbit» → Присоединиться к сессии → вставь в поле. Если ссылка указывает на сервер, где у тебя есть аккаунт, Psysonic переключит тебя автоматически. Если у тебя несколько аккаунтов на этом сервере, небольшой выбор спросит, какой использовать.', helpSec5Title: 'Предложение треков', helpSec5Body: 'В любом списке треков: двойной клик по строке или правый клик → «Добавить в сессию Orbit». Одиночный клик показывает подсказку вместо того, чтобы забрасывать весь альбом в общую очередь — это намеренно. Явные массовые действия вроде «Воспроизвести всё» или «Воспроизвести альбом» сначала запрашивают подтверждение, потом добавляют (никогда не заменяют).', helpSec6Title: 'Общая очередь', helpSec6Body: 'Очередь показывает предстоящие треки хоста — видно всем. Входящие массовые добавления всегда идут в конец, чтобы не потерять предложения гостей. Автоперемешивание периодически переупорядочивает очередь (настраивается: 1 / 5 / 10 / 15 / 30 мин). Если твоё воспроизведение отклоняется от хоста, кнопка «Догнать» в панели сессии возвращает тебя к live-позиции хоста.', helpSec7Title: 'Подтверждения', helpSec7Body: 'По умолчанию предложения гостей требуют ручного подтверждения — они появляются в полосе «Подтверждения» вверху панели очереди с кнопками принять / отклонить. В настройках сессии можно включить автоматическое подтверждение, и всё будет попадать сразу.', helpSec8Title: 'Участники и настройки', helpSec8Body: 'Открой иконку настроек в панели сессии для частоты перемешивания, автоподтверждения и быстрого «Перемешать сейчас». Нажми на количество участников, чтобы увидеть, кто подключён — исключить (может присоединиться снова по ссылке) или забанить (заблокирован для этой сессии). Гости тоже видят список участников, но только для чтения.', helpSec9Title: 'Завершение сессии', helpSec9Body: 'X хоста → диалог подтверждения → сессия закрывается для всех, серверные плейлисты очищаются автоматически. X гостя → гость выходит, сессия продолжается. Если хост молчит 5 минут, гость автоматически выходит с уведомлением; короткие переподключения в этом окне невидимы.', participantsInviteLabel: 'Ссылка-приглашение', participantsCountLabel: '{{count}} в сессии', participantsHost: 'хост', participantsEmpty: 'Пока нет гостей', participantsKickTooltip: 'Удалить из сессии', participantsKickAria: 'Удалить {{user}}', participantsRemoveTooltip: 'Удалить из сессии', participantsRemoveAria: 'Удалить {{user}} из этой сессии', participantsBanTooltip: 'Забанить навсегда', participantsBanAria: 'Забанить {{user}} навсегда', participantsMuteTooltip: 'Запретить предлагать треки', participantsUnmuteTooltip: 'Разрешить предлагать треки', participantsMuteAria: 'Запретить {{user}} предлагать треки', participantsUnmuteAria: 'Снова разрешить {{user}} предлагать треки', confirmRemoveTitle: 'Удалить из сессии?', confirmRemoveBody: '{{user}} будет удалён из сессии, но может присоединиться снова по твоей ссылке-приглашению.', confirmRemoveConfirm: 'Удалить', confirmBanTitle: 'Забанить навсегда?', confirmBanBody: '{{user}} будет удалён и заблокирован от повторного присоединения к этой сессии. Отменить нельзя на время сессии.', confirmBanConfirm: 'Забанить', confirmCancel: 'Отмена', confirmJoinTitle: 'Присоединиться к сессии Orbit?', confirmJoinBody: '{{host}} пригласил тебя в «{{name}}». Присоединиться к сессии?', confirmJoinConfirm: 'Присоединиться', confirmLeaveTitle: 'Покинуть сессию?', confirmLeaveBody: 'Покинуть «{{name}}»? Ты можешь присоединиться снова в любое время по ссылке-приглашению от {{host}}.', confirmLeaveConfirm: 'Покинуть', confirmEndTitle: 'Завершить сессию для всех?', confirmEndBody: '«{{name}}» закроется для всех участников. Плейлисты сессии очищаются автоматически.', confirmEndConfirm: 'Завершить сессию', invalidLinkTitle: 'Ссылка-приглашение больше недействительна', invalidLinkBody: 'Эта сессия Orbit больше не существует или уже завершена. Попроси хоста прислать новую ссылку.', settingsTitle: 'Настройки сессии', settingAutoApprove: 'Автоматически принимать предложения', settingAutoApproveHint: 'Предложения гостей сразу попадают в твою очередь. Выкл.: они остаются в списке сессии для последующего просмотра.', settingAutoShuffle: 'Автоперемешивание', settingAutoShuffleHint: 'Периодическое Fisher-Yates перемешивание предстоящей очереди. Выкл.: порядок меняется только при ручной перестановке.', settingShuffleInterval: 'Перемешивать каждые', settingShuffleIntervalHint: 'Как часто предстоящая очередь перемешивается во время сессии.', suggestBlockedMuted: 'Хост отключил тебе предложение треков на этой сессии.', settingShuffleIntervalValue_one: '{{count}} мин', settingShuffleIntervalValue_few: '{{count}} мин', settingShuffleIntervalValue_many: '{{count}} мин', settingShuffleIntervalValue_other: '{{count}} мин', settingShuffleNow: 'Перемешать сейчас', toastSuggested: '{{user}} предложил «{{title}}»', toastSuggestedMany: '{{count}} новых предложений в очереди', toastShuffled: 'Очередь перемешана', toastJoined: 'Присоединился к сессии', toastLoginFirst: 'Войди, прежде чем присоединяться к сессии', toastSwitchServer: 'Сначала переключись на {{url}}, потом вставь снова', toastNoAccountForServer: 'У тебя нет доступа к {{url}}. Попроси хоста прислать приглашение.', toastSwitchFailed: 'Не удалось переключиться на {{url}}', accountPickerTitle: 'Какой аккаунт?', accountPickerSub: 'У тебя несколько аккаунтов для {{url}}. Выбери тот, под которым хочешь присоединиться.', toastJoinFail: 'Не удалось присоединиться к сессии', joinErrNotFound: 'Сессия не найдена', joinErrEnded: 'Сессия завершена', joinErrFull: 'Сессия заполнена', joinErrKicked: 'Ты не можешь присоединиться к этой сессии', joinErrNoUser: 'Нет активного сервера', joinErrServerError: 'Не удалось присоединиться', ctxAddToSession: 'Добавить в сессию Orbit', ctxSuggestedToast: 'Предложено в сессию', ctxSuggestFailed: 'Не удалось предложить — не присоединён', ctxAddToSessionHost: 'Добавить в сессию Orbit', ctxAddedHostToast: 'Добавлено в сессию', ctxAddHostFailed: 'Не удалось добавить в сессию', bulkConfirmTitle: 'Добавить всё в очередь Orbit?', bulkConfirmBody: 'Это сбросит {{count}} треков в общую очередь за раз. Это много для твоих гостей. Продолжить?', bulkConfirmYes: 'Добавить всё', bulkConfirmNo: 'Отмена', guestLive: 'Live', guestPlaying: 'Сейчас играет', guestPaused: 'Пауза', guestLoading: 'Загрузка…', guestSuggestions: 'Предложения', guestUpNext: 'Далее', guestUpNextEmpty: 'В очереди пусто. Открой контекстное меню трека и выбери «Добавить в сессию Orbit», чтобы предложить что-то.', guestPendingTitle: 'Ожидание хоста', guestPendingHint: 'Предложено — появится в очереди, когда хост примет.', approvalTitle: 'Ожидают подтверждения', approvalFrom: 'Предложено {{user}}', approvalAccept: 'Принять', approvalDecline: 'Отклонить', guestUpNextMore: '+ ещё {{count}} в очереди хоста', guestSubmitter: 'от {{user}}', queueAddedByHost: 'Добавил хост', queueAddedByYou: 'Добавил(а) ты', queueAddedByUser: 'Добавил {{user}}', guestEmpty: 'Предложений пока нет. Открой контекстное меню трека и выбери «Добавить в сессию Orbit».', guestFooter: 'Хост управляет воспроизведением — ты не можешь изменять список.', exitKickedTitle: 'Тебя забанили в сессии', exitRemovedTitle: 'Тебя удалили из сессии', exitEndedTitle: 'Хост завершил сессию', exitHostTimeoutTitle: 'Хост недоступен', exitHostTimeoutBody: '{{host}} давно не присылал обновления, поэтому «{{name}}» закрыта на твоей стороне. Ты можешь присоединиться снова в любое время по ссылке.', exitKickedBody: '{{host}} забанил тебя в «{{name}}». Ты не можешь присоединиться снова.', exitRemovedBody: '{{host}} удалил тебя из «{{name}}». Ты можешь присоединиться снова в любое время по ссылке.', exitEndedBody: '«{{name}}» завершена. Надеюсь, тебе понравилось.', exitOk: 'ОК', }, tray: { playPause: 'Воспроизвести / Пауза', nextTrack: 'Следующий трек', previousTrack: 'Предыдущий трек', showHide: 'Показать / Скрыть', exitPsysonic: 'Закрыть Psysonic', nothingPlaying: 'Ничего не воспроизводится', }, licenses: { title: 'Лицензии открытого кода', intro: 'Psysonic построен на программном обеспечении с открытым исходным кодом. Список ниже показывает каждую зависимость, поставляемую с приложением, с версией, лицензией и полным текстом лицензии.', highlights: 'Ключевые зависимости', searchPlaceholder: 'Поиск по имени, версии или лицензии…', noResults: 'Нет совпадений.', loading: 'Загрузка лицензий…', loadError: 'Не удалось загрузить данные о лицензиях.', noLicenseText: 'Текст лицензии для этой зависимости не включён.', viewSource: 'Открыть исходник', totalLine: '{{total}} зависимостей — {{cargo}} cargo, {{npm}} npm', generatedAt: 'Последняя генерация {{date}}', }, };