- 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>
154 lines
7.6 KiB
JSON
154 lines
7.6 KiB
JSON
{
|
||
"users": {
|
||
"title": "Пользователи",
|
||
"subtitle": "Создание пользователей и модераторов, роли, сброс пароля, блокировка",
|
||
"create": "Создать пользователя",
|
||
"search": "Имя или логин",
|
||
"all": "Все",
|
||
"col_user": "Пользователь",
|
||
"col_role": "Роль",
|
||
"col_status": "Статус",
|
||
"col_last_login": "Был в сети",
|
||
"status_active": "Активен",
|
||
"status_blocked": "Заблокирован",
|
||
"status_must_change": "Ждёт смены пароля",
|
||
"never": "Ещё не входил",
|
||
"empty": "Никого не нашли",
|
||
"more": "Показать ещё",
|
||
"actions": "Действия с {{username}}",
|
||
"reset_password": "Сбросить пароль",
|
||
"block": "Заблокировать",
|
||
"unblock": "Разблокировать",
|
||
"make_role": "Сделать: {{role}}",
|
||
"delete": "Удалить",
|
||
"delete_confirm": "Удалить {{username}}? Его история и лайки пропадут.",
|
||
"block_confirm": "Заблокировать {{username}}? Все его сессии завершатся.",
|
||
"reset_confirm": "Сбросить пароль {{username}}? Все его сессии завершатся.",
|
||
"confirm": "Подтвердить",
|
||
"you": "вы"
|
||
},
|
||
"create": {
|
||
"title": "Новый пользователь",
|
||
"username": "Логин",
|
||
"username_hint": "Латинские буквы, цифры, «.», «_», «-»",
|
||
"display_name": "Имя",
|
||
"role": "Роль",
|
||
"password_note": "Пароль сгенерирует сервер и покажет один раз.",
|
||
"submit": "Создать"
|
||
},
|
||
"temp_password": {
|
||
"title": "Временный пароль",
|
||
"text": "Передайте пароль пользователю {{username}}. Он виден только сейчас; при входе его попросят сменить.",
|
||
"done": "Готово"
|
||
},
|
||
"audit": {
|
||
"title": "Журнал",
|
||
"subtitle": "Действия администраторов и модераторов",
|
||
"col_when": "Когда",
|
||
"col_who": "Кто",
|
||
"col_action": "Действие",
|
||
"col_details": "Подробности",
|
||
"system": "Система",
|
||
"empty": "Записей пока нет",
|
||
"more": "Показать ещё",
|
||
"actions": {
|
||
"user.bootstrap_create": "Создан стартовый администратор",
|
||
"user.bootstrap_credentials": "Заданы учётные данные администратора",
|
||
"user.create": "Создан пользователь",
|
||
"user.rename": "Изменено имя",
|
||
"user.role_change": "Изменена роль",
|
||
"user.block": "Пользователь заблокирован",
|
||
"user.unblock": "Пользователь разблокирован",
|
||
"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": "Переиндексация запущена"
|
||
}
|
||
}
|