feat(web): storage admin, search and catalog pages (M2)
- Storage admin: local folders with a folder picker and NFS sources, connection test, scan and full scan with live progress, enable, disable, delete - path pattern editor with reorder, examples and a preview table that shows which pattern matched and what came from tags; compile errors land under the broken pattern - Library page with counters, scans and unreadable files; search reindex for admins - search box in the top bar: combobox with keyboard navigation, 150 ms debounce, cancelled stale requests, "/" and Ctrl+K, layout fix hint - search page with tabs and paging, artist and album pages, album cards and track lists; unavailable tracks are dimmed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c1160cccd3
commit
a685b1b7ca
27 files changed
+2505
-9
No files matched your search
@@ -62,5 +62,92 @@
|
||||
"user.password_reset": "Сброшен пароль",
|
||||
"user.delete": "Пользователь удалён"
|
||||
}
|
||||
},
|
||||
"sources": {
|
||||
"title": "Хранилища",
|
||||
"subtitle": "Откуда сервер берёт музыку: папка на диске сервера или NFS",
|
||||
"add": "Подключить хранилище",
|
||||
"empty": "Хранилищ пока нет. Подключите папку с музыкой, чтобы начать.",
|
||||
"type_local": "Папка на сервере",
|
||||
"type_nfs": "NFS",
|
||||
"status_pending": "Подключается",
|
||||
"status_mounted": "Подключено",
|
||||
"status_error": "Ошибка",
|
||||
"status_disabled": "Отключено",
|
||||
"last_scan": "Последний скан: {{date}}",
|
||||
"never_scanned": "Ещё не сканировалось",
|
||||
"scan": "Сканировать",
|
||||
"full_scan": "Полный скан",
|
||||
"test": "Проверить",
|
||||
"patterns": "Шаблоны путей",
|
||||
"edit": "Изменить",
|
||||
"delete": "Удалить",
|
||||
"disable": "Отключить",
|
||||
"enable": "Подключить",
|
||||
"delete_confirm": "Удалить «{{name}}»? Треки, которые есть только в этом хранилище, пропадут из библиотеки вместе с лайками.",
|
||||
"scanning": "Сканирование: {{processed}} из {{total}}",
|
||||
"scan_walking": "Обход папок…",
|
||||
"scan_done": "Найдено {{found}} · новых {{added}} · обновлено {{updated}} · перемещено {{moved}} · пропало {{missing}} · ошибок {{errors}}",
|
||||
"scan_failed": "Скан прервался: {{error}}",
|
||||
"test_ok": "Доступно, найдено аудиофайлов: {{count}}",
|
||||
"test_fail": "Нет доступа: {{message}}",
|
||||
"form_title_new": "Новое хранилище",
|
||||
"form_title_edit": "Хранилище",
|
||||
"name": "Название",
|
||||
"type": "Тип",
|
||||
"folder": "Папка",
|
||||
"folder_root": "Весь каталог",
|
||||
"folder_hint": "Подпапка каталога LIBRARY_HOST на сервере",
|
||||
"up": "Вверх",
|
||||
"nfs_server": "Сервер",
|
||||
"nfs_server_hint": "Имя или IP, например nas.lan",
|
||||
"nfs_export": "Экспорт",
|
||||
"nfs_export_hint": "Путь на сервере, например /export/music",
|
||||
"nfs_options": "Опции монтирования",
|
||||
"nfs_options_hint": "Только чтение добавляется автоматически",
|
||||
"tag_priority": "Что важнее",
|
||||
"tags_first": "Теги файлов",
|
||||
"path_first": "Шаблоны путей",
|
||||
"interval": "Автоскан",
|
||||
"interval_off": "Вручную",
|
||||
"interval_hours": "Каждые {{count}} ч",
|
||||
"save": "Сохранить"
|
||||
},
|
||||
"patterns": {
|
||||
"title": "Шаблоны путей: {{name}}",
|
||||
"intro": "Регулярные выражения RE2 с именованными группами применяются к пути файла относительно корня хранилища. Побеждает первое совпавшее.",
|
||||
"groups": "Группы: artist, albumartist, album, year, disc, track, title, genre; skip — игнорировать файл.",
|
||||
"add": "Добавить шаблон",
|
||||
"regex": "Шаблон {{n}}",
|
||||
"enabled": "Включён",
|
||||
"up": "Выше",
|
||||
"down": "Ниже",
|
||||
"remove": "Удалить",
|
||||
"preview": "Предпросмотр",
|
||||
"save": "Сохранить",
|
||||
"saved": "Сохранено. Запустите полный скан, чтобы применить к уже найденным файлам.",
|
||||
"col_path": "Путь",
|
||||
"col_pattern": "Шаблон",
|
||||
"col_result": "Результат",
|
||||
"no_match": "не совпал",
|
||||
"skipped": "пропускается",
|
||||
"unmatched": "Не совпал ни один шаблон: {{count}} из {{total}}",
|
||||
"from_tags": "из тегов",
|
||||
"error_at": "Ошибка в шаблоне {{n}}: {{reason}}",
|
||||
"examples": "Примеры"
|
||||
},
|
||||
"library": {
|
||||
"title": "Библиотека",
|
||||
"subtitle": "Состояние каталога и сканирования",
|
||||
"artists": "Исполнителей",
|
||||
"albums": "Альбомов",
|
||||
"tracks": "Треков",
|
||||
"files": "Файлов",
|
||||
"missing": "Пропавших файлов",
|
||||
"errors": "Не прочитано",
|
||||
"sources": "Хранилища",
|
||||
"error_files": "Файлы с ошибками",
|
||||
"reindex": "Переиндексировать поиск",
|
||||
"reindex_started": "Переиндексация запущена"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user