Files
pipu-music/packages/i18n/locales/ru/errors.json
T
mrleo1nidandClaude Opus 5.5 ca106e8eb1
ci / api / api (push) Successful in 46s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m3s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m22s
ci / ts / ts (packages + web) (push) Successful in 1m38s
feat(api): upload queue with quota, tus intake, processing and import (M5.5)
- Migration 00008: upload_batches, upload_files, upload_quota.
- Quota reserved under a row lock when a batch is created; every status
  change goes through one transition that frees space in the same
  transaction. SHA-256 duplicates are rejected before any upload.
- tus 1.0.0 core (HEAD/PATCH) for the author only; offset is the real
  staging file size, data beyond the declared size is refused (ADR-015).
- Processing worker: ffprobe checks, SHA-256 verification, exact and
  Chromaprint duplicates against library and queue, metadata from tags
  or the dropped folder path, possible_duplicate on metadata match, and
  the target path from write_template reusing existing folder spelling.
- Import worker: edited tags written with ffmpeg stream copy, file
  written by storage-agent, point scan of the new file, imported status;
  idempotent and resumed after restart. Stale uploads expire after 24 h,
  orphan staging files are removed at startup.
- API: quota, precheck, batches, my uploads, withdraw, admin list,
  metadata edit, bulk review, retry and queue settings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 17:23:05 +03:00

98 lines
6.7 KiB
JSON

{
"common": {
"internal": "Что-то пошло не так на сервере. Попробуйте ещё раз",
"bad_request": "Некорректный запрос",
"not_found": "Не найдено",
"method_not_allowed": "Действие не поддерживается",
"network": "Нет связи с сервером. Проверьте сеть"
},
"auth": {
"invalid_credentials": "Неверный логин или пароль",
"too_many_attempts": "Слишком много попыток входа. Подождите немного",
"user_blocked": "Учётная запись заблокирована. Обратитесь к администратору",
"unauthorized": "Войдите, чтобы продолжить",
"token_expired": "Сессия истекла, войдите снова",
"token_invalid": "Сессия недействительна, войдите снова",
"token_revoked": "Сессия завершена, войдите снова",
"refresh_invalid": "Сессия завершена, войдите снова",
"refresh_reused": "Сессия завершена из соображений безопасности, войдите снова",
"refresh_race": "Сессия обновляется, повторите действие",
"credentials_change_required": "Сначала смените логин и пароль администратора",
"password_change_required": "Сначала смените временный пароль",
"current_password_required": "Введите текущий пароль",
"current_password_invalid": "Текущий пароль указан неверно",
"bootstrap_not_required": "Учётные данные администратора уже изменены",
"session_not_found": "Сессия не найдена",
"forbidden": "Недостаточно прав для этого действия"
},
"validation": {
"password_too_short": "Пароль должен быть не короче {{min}} символов",
"password_too_long": "Пароль должен быть не длиннее {{max}} символов",
"password_same_as_username": "Пароль не должен совпадать с логином",
"password_too_common": "Этот пароль слишком распространён — придумайте другой",
"password_unchanged": "Новый пароль должен отличаться от текущего",
"username_invalid": "Логин: от {{min}} до {{max}} символов — латинские буквы, цифры, «.», «_», «-»",
"username_taken": "Этот логин уже занят",
"locale_unsupported": "Этот язык не поддерживается",
"display_name_too_long": "Имя должно быть не длиннее {{max}} символов",
"ui_prefs_invalid": "Недопустимое значение настройки",
"client_type_invalid": "Неизвестный тип приложения",
"role_invalid": "Неизвестная роль",
"cursor_invalid": "Список устарел, обновите страницу",
"pattern_invalid": "Ошибка в шаблоне: {{reason}}",
"nfs_invalid": "Недопустимое значение",
"local_path_invalid": "Папка не найдена",
"name_invalid": "Название — от 1 до {{max}} символов",
"scan_interval_invalid": "Интервал — не меньше {{min}} минут",
"source_type_invalid": "Неизвестный тип хранилища",
"query_empty": "Введите запрос",
"wave_activity_invalid": "Неизвестное занятие",
"wave_mood_invalid": "Неизвестное настроение",
"template_invalid": "Неверный шаблон пути: {{reason}}"
},
"users": {
"not_found": "Пользователь не найден",
"last_admin": "Нельзя понизить, заблокировать или удалить последнего администратора"
},
"library": {
"source_not_found": "Хранилище не найдено",
"scan_running": "Скан уже идёт",
"source_offline": "Хранилище не подключено",
"template_unavailable": "Не удалось подобрать шаблон: ни один регэксп хранилища не переводится в шаблон или в хранилище нет файлов"
},
"catalog": {
"not_found": "Не найдено"
},
"search": {
"unavailable": "Поиск временно недоступен"
},
"playback": {
"link_invalid": "Ссылка устарела — обновите страницу",
"track_unavailable": "Трек недоступен",
"transcode_failed": "Не удалось подготовить трек"
},
"wave": {
"session_not_found": "Сессия волны завершена"
},
"app": {
"update_unavailable": "Обновление недоступно"
},
"uploads": {
"queue_full": "В очереди на добавление нет места",
"user_quota_full": "Превышен ваш лимит в очереди на добавление",
"too_large": "Файл больше допустимого размера",
"duplicate": "Такой трек уже есть в библиотеке или в очереди",
"invalid_audio": "Файл не похож на аудио (нужен один аудиопоток длительностью от 5 с до 3 ч)",
"unsupported_format": "Формат не поддерживается: подойдут FLAC, MP3, M4A, OGG, Opus, WAV, AIFF, WavPack",
"not_found": "Загрузка не найдена",
"wrong_status": "Файл уже в другом статусе — обновите страницу",
"no_target": "Нет хранилища, принимающего загрузки (или их несколько и не выбрано по умолчанию)",
"no_template": "У хранилища не задан шаблон пути",
"missing_field": "Не хватает метаданных для пути в хранилище",
"offset_mismatch": "Загрузка рассинхронизировалась — повторите",
"size_mismatch": "Размер файла не совпал с заявленным",
"hash_mismatch": "Файл повредился при загрузке (не совпал SHA-256)",
"import_failed": "Не удалось записать файл в хранилище"
}
}