mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 23:05:46 +00:00
f3a0b3f7af
* fix(artist-detail): keep ext-link border visible on hover Hover used --border-subtle, which on Catppuccin matches --bg-card and visually erased the rim while only the fill changed. Match btn-surface: --ctp-surface1 border, --ctp-overlay0 on hover. * docs(changelog): credit zunoz on Psysonic Discord for PR #966 * fix(playlists): tooltips on Play/Add Songs and song count pluralization Add data-tooltip to Play and Add Songs in playlist hero; switch playlists.songs to count-based _one/_other forms (was {{n}} without i18next plural suffix, breaking spacing and singular). * fix(playlists): render BPM and optional cols in Suggested Songs rows PlaylistSuggestions shared column headers with the main tracklist but its row switch omitted bpm, genre, playCount, and lastPlayed.
105 lines
6.0 KiB
TypeScript
105 lines
6.0 KiB
TypeScript
export const playlists = {
|
||
title: 'Плейлисты',
|
||
newPlaylist: 'Новый плейлист',
|
||
unnamed: 'Без названия',
|
||
createName: 'Название…',
|
||
create: 'Создать',
|
||
cancel: 'Отмена',
|
||
empty: 'Плейлистов пока нет.',
|
||
emptyPlaylist: 'Плейлист пуст.',
|
||
addFirstSong: 'Добавьте первый трек',
|
||
notFound: 'Плейлист не найден.',
|
||
songs_one: '{{count}} трек',
|
||
songs_other: '{{count}} треков',
|
||
playAll: 'Воспроизвести всё',
|
||
playTooltip: 'Воспроизвести плейлист',
|
||
shuffle: 'Перемешать',
|
||
addToQueue: 'В очередь',
|
||
back: 'К списку плейлистов',
|
||
deletePlaylist: 'Удалить',
|
||
confirmDelete: 'Нажмите ещё раз для подтверждения',
|
||
removeSong: 'Убрать из плейлиста',
|
||
addSongs: 'Добавить треки',
|
||
addSongsTooltip: 'Найти треки в библиотеке и добавить в плейлист',
|
||
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: 'Не удалось скачать отчёт',
|
||
};
|