{ "release_lookup": { "groups_count": "Релизов в пачке: {{count}}", "groups_hint": "Каждый релиз проверяется отдельно. Метаданные и обложка применяются только к трекам выбранного релиза.", "group": "Релиз в пачке", "choose_group": "Выберите релиз", "apply_group_cover": "Добавить обложку выбранного релиза", "replace_group_cover": "Заменить обложку выбранного релиза", "select_group": "Выбрать загруженные строки релиза {{album}}", "audio_search": "Распознать по звуку", "audio_privacy": "В AcoustID отправляются только аудиоотпечатки и длительности, без аудиофайлов. До 50 треков за запрос.", "audio_setup": "Для распознавания по звуку задайте ACOUSTID_API_KEY в конфигурации сервера и примените изменения.", "audio_summary": "По звуку распознано: {{matched}} из {{total}} треков", "audio_editions": "Отпечаток определяет запись, но она может входить в разные издания. Проверьте выбранное издание и состав.", "audio_match": "Совпадение по звуку · AcoustID", "audio_ambiguous": "Неоднозначное или недостаточно уверенное совпадение", "audio_not_found": "Совпадений по звуку не найдено", "audio_unavailable": "Не удалось получить отпечаток: проверьте fpcalc и доступность файла", "title": "Сопоставление релиза", "open": "Проверить релиз", "intro": "MusicBrainz предлагает конкретные издания. Сверьте состав и различия ниже. Теги и обложка изменятся только после вашего выбора и применения.", "album": "Альбом", "single": "Сингл", "release": "Релиз", "complete": "Полный состав", "incomplete": "Неполный состав", "variants": "Найдено изданий: {{count}}", "choose_edition": "Выберите конкретное издание", "partial": "Требует проверки", "state_disabled": "Поиск отключён", "state_queued": "Релиз: в очереди", "state_searching": "Поиск релиза…", "state_ready": "Релиз найден", "state_not_found": "Релиз не найден", "state_needs_input": "Уточнить релиз", "state_error": "Поиск недоступен", "mbid": "MusicBrainz Release ID (необязательно)", "search": "Найти / повторить поиск", "edition": "Издание", "tracks_total": "дорожек: {{total}}", "confidence": "Уверенность сопоставления: {{value}}", "confidence_high": "высокая", "confidence_medium": "средняя", "confidence_low": "низкая", "coverage": "Сопоставлено {{matched}} из {{total}} дорожек · Дорожек без сопоставления: {{missing}} · Не сопоставлено файлов: {{extra}}", "existing": "Для {{count}} отсутствующих дорожек найдены совпадения в библиотеке по тегам и длительности. Это не делает загруженную пачку полной.", "uploaded": "Ваша загрузка", "catalogue": "В выбранном издании", "matched": "Файл сопоставлен", "matched_count": "сопоставлено {{matched}}/{{total}}", "missing": "Файл не сопоставлен", "tentative": "Предположительное совпадение — проверьте вручную", "apply_metadata": "Применить названия, исполнителей, альбом, год и нумерацию к совпавшим файлам", "preview_cover": "Показать обложку из каталога", "exact_cover": "Обложка этого издания · Cover Art Archive", "group_cover": "Обложка группы изданий — точное соответствие выбранному изданию не подтверждено", "replace_cover": "Заменить текущую обложку пачки этой обложкой", "apply_cover": "Добавить эту обложку в пачку", "apply": "Применить выбранное", "applied": "Выбранное издание применено" }, "users": { "change_username": "Изменить логин", "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}}", "review_uploads": "Аудит загрузок", "grant_review": "Дать аудит загрузок", "revoke_review": "Забрать аудит загрузок", "delete": "Удалить", "delete_confirm": "Удалить {{username}}? Его история и лайки пропадут.", "block_confirm": "Заблокировать {{username}}? Все его сессии завершатся.", "reset_confirm": "Сбросить пароль {{username}}? Все его сессии завершатся.", "reset_recommendations": "Сбросить рекомендации", "recs_confirm": "Сбросить рекомендации {{username}}? Волна начнёт подбирать музыку с нуля и снова спросит любимых исполнителей. Лайки и история останутся.", "recs_done": "Рекомендации {{username}} сброшены", "confirm": "Подтвердить", "you": "вы", "manage_updates": "Обновление сервера", "grant_updates": "Дать управление обновлениями", "revoke_updates": "Забрать управление обновлениями" }, "transfer": { "export": "Экспорт пользователей", "import": "Импорт пользователей", "apply": "Импортировать", "description": "Перенос учётных записей, ролей и прав доступа с сохранением паролей. Рекомендации, история, лайки и сессии не переносятся. Существующие логины будут пропущены без изменений.", "sensitive": "JSON-файл содержит хэши паролей. Храните его в защищённом месте.", "file": "Файл пользователей (.json)", "preview": "Учётных записей в файле: {{count}}", "invalid": "Некорректный файл. Выберите экспорт Pipu в формате JSON, версия 1, до 16 MiB и 10000 пользователей.", "result": "Создано: {{count}}. Пропущено существующих: {{skipped}}." }, "create": { "title": "Новый пользователь", "username": "Логин", "username_hint": "Латинские буквы, цифры, «.», «_», «-»", "display_name": "Имя", "role": "Роль", "review_uploads": "Аудит загрузок", "review_uploads_hint": "Сможет рассматривать очередь. Это не роль: можно выдать нескольким людям, у админа её может не быть.", "password_note": "Пароль сгенерирует сервер и покажет один раз.", "submit": "Создать" }, "temp_password": { "title": "Временный пароль", "text": "Передайте пароль пользователю {{username}}. Он виден только сейчас; при входе его попросят сменить.", "done": "Готово" }, "audit": { "title": "Журнал", "subtitle": "Действия администраторов и модераторов", "col_when": "Когда", "col_who": "Кто", "col_action": "Действие", "col_details": "Подробности", "system": "Система", "empty": "Записей пока нет", "more": "Показать ещё", "actions": { "users.export": "Экспортированы пользователи", "users.import": "Импортированы пользователи", "user.username_change": "Изменён логин", "user.bootstrap_create": "Создан стартовый администратор", "user.bootstrap_credentials": "Заданы учётные данные администратора", "user.create": "Создан пользователь", "user.rename": "Изменено имя", "user.role_change": "Изменена роль", "user.block": "Пользователь заблокирован", "user.unblock": "Пользователь разблокирован", "user.password_reset": "Сброшен пароль", "user.recommendations_reset": "Сброшены рекомендации", "user.delete": "Пользователь удалён", "user.manages_updates": "Изменены права обновления сервера" } }, "sources": { "cover_files": "Локальные обложки: {{count}} из {{total}} файлов", "cover_pending": "Альбомов ожидают обработки: {{count}}", "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": "Обход папок…", "excluded_dirs": "Не сканировать папки", "excluded_hint": "По одной папке в строке, путь от корня хранилища. Например: Downloads_PumpEars. Все подпапки тоже исключаются. Учитывается регистр; шаблоны со звёздочкой не поддерживаются. Анализ и его ошибки отключаются сразу после сохранения. Уже добавленные записи сохраняются. Пустой список возвращает папки в сканирование и анализ.", "excluded_running": "Дождитесь завершения сканирования, чтобы изменить исключения.", "excluded_count": "Исключено папок из сканирования: {{count}}", "scan_walk_progress": "Обход папок… Проверено папок: {{dirs}} · найдено аудиофайлов: {{found}}", "scan_current_dir": "Текущая папка: {{path}}", "scan_preparing": "Сопоставление файлов с библиотекой…", "scan_finalizing": "Завершение сканирования…", "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": "Переиндексация запущена", "analysis": "Аудиоанализ", "analysis_progress": "Проанализировано {{done}} из {{total}}", "analysis_failed": "Не удалось проанализировать: {{count}}", "analyzer": "Версия анализатора: {{ver}}", "wave": "Моя волна за 7 дней", "wave_served": "Выдано треков", "wave_sessions": "Сессий", "wave_listen": "Дослушано ≥ 50%", "wave_early_skip": "Ранние скипы", "wave_likes": "Лайков на 100", "wave_model": "Версия модели", "wave_by_model": "Сравнение версий модели волны", "analysis_retry": "Повторить", "analysis_show_errors": "Показать файлы", "analysis_errors_title": "Ошибки аудиоанализа", "analysis_errors_hint": "Для каждого трека показаны хранилище, путь относительно его корня и причина сбоя. Пути берутся из текущего каталога библиотеки.", "analysis_errors_empty": "Неудавшихся задач анализа нет.", "analysis_errors_more": "Показать ещё", "analysis_error_source": "Хранилище: {{name}}", "analysis_error_no_file": "В библиотеке больше нет файла этого трека.", "analysis_error_unknown": "Причина ошибки не указана." }, "write_template": { "auto_hint": "Если шаблон ещё не задан, определим его по преобладающей структуре файлов хранилища. Предложение можно изменить вручную; оно применяется только после сохранения.", "detecting": "Определяем структуру файлов хранилища…", "detected": "Предложенная структура совпадает с {{matched}} из {{total}} файлов выборки.", "title": "Приём загрузок и шаблон пути", "intro": "Сюда раскладываются одобренные треки из очереди на добавление — по шаблону, который повторяет структуру папок этого хранилища.", "accepts": "Принимать загрузки в это хранилище", "nfs_rw_hint": "Хранилище будет переподключено: агент смонтирует его ещё и на запись (видно только ему). На NFS-сервере нужны права записи для PIPU_FILE_UID.", "template": "Шаблон пути", "hint": "Например {albumartist}/{year} - {album}/{disc:1-}{track:02} - {title}.{ext}; [ … ] — необязательная часть", "suggest": "Подобрать по структуре", "check": "Проверить", "save": "Сохранить", "saved": "Сохранено", "required": "Чтобы принимать загрузки, задайте шаблон пути.", "no_tracks": "В хранилище пока нет треков — проверить шаблон не на чем.", "check_ok": "Шаблон обратим: {{round_trip}} из {{total}} путей разобраны без изменений, {{same_path}} совпали с реальными.", "check_warn": "Есть расхождения: разобрано без изменений {{round_trip}} из {{total}}, совпало с реальными {{same_path}} (нужно ≥ 90%). Новые файлы могут лечь не так, как старые.", "col_real": "Реальный путь", "col_rendered": "По шаблону", "col_problem": "Расхождение", "no_pattern": "не разобрал ни один регэксп", "other_path": "другой путь", "badge": "принимает загрузки", "write_ok": "Запись: ок", "write_fail": "Запись не удалась: {{message}}" }, "uploads": { "suggest_title": "Предложить треки", "suggest_subtitle": "Файлы попадут в очередь на добавление; администратор проверит и разложит их в хранилище", "drop_title": "Перетащите сюда файлы или папки с музыкой", "drop_hint": "Нужны FLAC, WAV или AIFF. MP3 — только в крайнем случае: качество хуже, и в очереди такой файл помечается «обратить внимание».", "drop_folders": "Структура папок поможет угадать исполнителя и альбом.", "format_attention": "Не lossless (FLAC, WAV, AIFF). MP3 присылайте, только если lossless нет.", "pick_files": "Выбрать файлы", "pick_folder": "Выбрать папку", "files": "Файлы для отправки", "skipped_one": "Пропущен {{count}} файл — не аудио", "skipped_few": "Пропущено {{count}} файла — не аудио", "skipped_many": "Пропущено {{count}} файлов — не аудио", "skipped_other": "Пропущено {{count}} файла — не аудио", "resume_hint_one": "Не докачан {{count}} файл. Выберите его снова — загрузка продолжится.", "resume_hint_few": "Не докачано {{count}} файла. Выберите их снова — загрузка продолжится.", "resume_hint_many": "Не докачано {{count}} файлов. Выберите их снова — загрузка продолжится.", "resume_hint_other": "Не докачано {{count}} файла. Выберите их снова — загрузка продолжится.", "resume_pick": "Выбрать файлы и продолжить", "comment": "Комментарий для администратора", "comment_hint": "Например: «ремастер 2011», «замена битых файлов»", "not_enough_space": "В очереди не хватает места: нужно {{need}}, свободно {{free}} — часть файлов не примут.", "clear": "Очистить список", "hashing_wait": "Проверяю файлы…", "send_one": "Отправить {{count}} файл · {{size}}", "send_few": "Отправить {{count}} файла · {{size}}", "send_many": "Отправить {{count}} файлов · {{size}}", "send_other": "Отправить {{count}} файла · {{size}}", "sent_one": "Готово: {{count}} файл загружен и обрабатывается. Статусы — в «Моих предложениях».", "sent_few": "Готово: {{count}} файла загружены и обрабатываются. Статусы — в «Моих предложениях».", "sent_many": "Готово: {{count}} файлов загружены и обрабатываются. Статусы — в «Моих предложениях».", "sent_other": "Готово: {{count}} файла загружены и обрабатываются. Статусы — в «Моих предложениях».", "failed_some_one": "Не загрузился {{count}} файл — место за ним зарезервировано, можно продолжить.", "failed_some_few": "Не загрузились {{count}} файла — место за ними зарезервировано, можно продолжить.", "failed_some_many": "Не загрузились {{count}} файлов — место за ними зарезервировано, можно продолжить.", "failed_some_other": "Не загрузились {{count}} файла — место за ними зарезервировано, можно продолжить.", "retry_failed": "Продолжить загрузку", "retry_file": "Повторить загрузку {{name}}", "uploading_now": "Загружаю…", "go_mine": "Мои предложения →", "more": "Загрузить ещё", "dup_found": "Такой трек уже есть в библиотеке или в очереди — загружать не нужно", "possible_dup": "Похожий трек уже есть (совпали исполнитель, название и длительность) — решит администратор", "file_error": "Ошибка: {{message}}", "remove": "Убрать {{name}}", "quota": "Очередь: {{used}} из {{limit}}", "quota_mine": "ваши: {{used}} из {{limit}}", "mine_title": "Мои предложения", "mine_subtitle": "Что вы загрузили и что решил администратор", "mine_empty": "Вы ещё ничего не предлагали", "filter": "Фильтр", "filter_all": "Все", "filter_pending": "В работе", "filter_imported": "Добавлены", "filter_declined": "Не приняты", "filter_withdrawn": "Отозванные", "expand_batch": "Развернуть пачку", "collapse_batch": "Свернуть пачку", "batch_cover_present": "Есть обложка", "batch_cover_absent": "Без обложки", "format_unknown": "формат неизвестен", "preview_http_error": "Не удалось загрузить аудио: HTTP {{status}}.", "preview_decode_error": "Браузер не смог прочитать аудио: проверьте доступ к файлу и поддержку формата.", "preview_error": "Не удалось загрузить аудио. Проверьте соединение и повторите попытку.", "col_file": "Трек", "col_status": "Статус", "col_size": "Размер", "col_date": "Загружен", "received": "принято {{pct}}% — откройте «Предложить треки» в той же вкладке, чтобы продолжить", "withdraw": "Отозвать", "select_visible": "Выбрать доступные файлы на странице", "bulk_withdraw": "Массовый отзыв предложений", "withdraw_selected": "Отозвать выбранные", "withdraw_failed": "Не удалось отозвать: {{count}}. {{reason}}", "load_more": "Показать ещё", "queue_title": "Очередь на добавление", "queue_subtitle": "Проверьте метаданные и путь в хранилище, затем одобрите или отклоните", "queue_empty": "Здесь пусто", "tab_review": "На рассмотрении", "tab_failed": "Ошибки импорта", "tab_progress": "В работе", "tab_imported": "Добавлены", "tab_declined": "Не приняты", "only_possible": "Только возможные дубли", "review_failed_one": "Не удалось применить решение к {{count}} файлу: {{reason}}", "review_failed_few": "Не удалось применить решение к {{count}} файлам: {{reason}}", "review_failed_many": "Не удалось применить решение к {{count}} файлам: {{reason}}", "review_failed_other": "Не удалось применить решение к {{count}} файлам: {{reason}}", "bulk": "Действия с выбранными", "selected_one": "Выбран {{count}} файл", "selected_few": "Выбрано {{count}} файла", "selected_many": "Выбрано {{count}} файлов", "selected_other": "Выбрано {{count}} файла", "approve": "Одобрить", "reject": "Отклонить", "batch_of": "Пачка от {{author}}", "batch_size_one": "{{count}} файл · {{size}}", "batch_size_few": "{{count}} файла · {{size}}", "batch_size_many": "{{count}} файлов · {{size}}", "batch_size_other": "{{count}} файла · {{size}}", "select_batch": "Выбрать всю пачку", "select_file": "Выбрать {{name}}", "disc": "диск {{n}}", "edited": "правлено", "flag_possible": "возможный дубль", "flag_quality": "лучше по качеству", "flag_attention": "обратить внимание", "listen": "Слушать {{name}}", "edit_batch": "На всю пачку", "batch_edit_title": "Правка пачки", "batch_edit_hint": "Пустые поля не меняются. Обложка запишется в файлы при импорте.", "batch_cover": "Обложка пачки", "batch_cover_clear": "Убрать обложку", "set_upgrade": "Принимать тот же трек в лучшем качестве", "flag_existing_album": "в существующий альбом", "flag_new_album": "новый альбом", "dup_level_sha256": "точная копия файла", "dup_level_fingerprint": "тот же трек по акустическому отпечатку", "dup_level_metadata": "совпали метаданные", "edit": "Править {{name}}", "retry": "Повторить", "edit_title": "Метаданные трека", "meta_artist": "Исполнитель", "meta_albumartist": "Исполнитель альбома", "meta_album": "Альбом", "meta_title": "Название", "meta_genre": "Жанр", "meta_year": "Год", "meta_track": "Номер трека", "meta_disc": "Диск", "target_source": "Хранилище", "cover_hint": "Обложку cover.jpg или cover.png из папки альбома загрузим вместе с треками. Если её нет, возьмём встроенную обложку из первого трека, где она есть.", "cover_found": "Обложка альбома: {{name}}", "cover_embedded": "Обложка альбома: из тегов трека", "destination": "Будет записано в", "destination_imported": "Записано в", "target_selected": "Выбранное хранилище", "target_not_selected": "Хранилище не выбрано", "target_path_missing": "Путь записи не рассчитан", "choose_destination": "Выбрать хранилище", "fix_destination": "Исправить размещение", "target_default": "По умолчанию", "tags_note": "Правленые поля запишутся в теги файла при импорте — путь и теги не разойдутся.", "save": "Сохранить", "saved": "Сохранено", "reject_title_one": "Отклонить {{count}} файл", "reject_title_few": "Отклонить {{count}} файла", "reject_title_many": "Отклонить {{count}} файлов", "reject_title_other": "Отклонить {{count}} файла", "reject_reason": "Причина (её увидит автор)", "settings_title": "Настройки очереди", "set_queue": "Лимит очереди, ГБ", "set_per_user": "Лимит на одного модератора, ГБ", "set_per_user_hint": "Пусто — без лимита", "set_max_file": "Максимальный размер файла, ГБ", "set_source": "Хранилище по умолчанию", "set_source_auto": "Единственное, принимающее загрузки", "set_note": "Уменьшение лимита ниже занятого ничего не удаляет: новые загрузки подождут, пока очередь освободится.", "status": { "uploading": "Загружается", "processing": "Обработка", "pending_review": "На рассмотрении", "approved": "Одобрен", "importing": "Импорт", "imported": "Добавлен", "import_failed": "Ошибка импорта", "duplicate": "Дубль", "invalid": "Не аудио", "rejected": "Отклонён", "withdrawn": "Отозван", "expired": "Не докачан" }, "stage": { "hashing": "Считаю контрольную сумму", "checking": "Проверяю на дубли", "ready": "Готов к отправке", "duplicate": "Уже есть", "too_large": "Слишком большой", "uploading": "Загружается", "done": "Загружен, обрабатывается", "rejected": "Не принят", "error": "Ошибка", "resume": "Ждёт файл, чтобы продолжить" } }, "server_settings": { "title": "Настройки сервера", "subtitle": "Параметры, которые действуют для всех пользователей" }, "management": { "server": "Управление сервером", "updates": "Обновления", "config": "Конфигурация", "updates_intro": "Выберите источник и версию. Сервер выполнит сборку и покажет результат.", "refresh": "Обновить статус", "current": "Установленная версия", "manual": "Обновления запускаются вручную. Последний стабильный релиз выбирается в момент запуска.", "update_target": "Следующее обновление", "sources": "Источники обновлений", "source": "Источник", "channel": "Тип обновления", "channel_latest": "Последний релиз", "channel_version": "Выбрать версию", "channel_main": "main", "hint_latest": "Будет установлен последний стабильный тег без release candidate.", "hint_version": "Можно выбрать опубликованный тег. Переход на старую версию требует ручного отката.", "hint_main": "Текущее состояние ветки main. Может содержать ещё не выпущенные изменения.", "version": "Версия", "choose_version": "Выберите версию", "source_unavailable": "Не удалось прочитать репозиторий. Проверьте адрес, доступ сервера и SSH-ключи.", "install": "Установить обновление", "confirm_update": "Обновить сервер?", "confirm_update_text": "Источник: {{source}}. Цель: {{target}}.", "update_warning": "Во время перезапуска сервис временно недоступен. Перед обновлением сделайте резервную копию базы. Миграции назад не откатываются.", "cancel": "Отмена", "sources_hint": "Git-репозитории с совместимой структурой Pipu. HTTP(S) или SSH; для приватных репозиториев настройте ключи на хосте агента. Не вставляйте токены в адрес.", "source_name": "Название", "repository": "URL Git-репозитория", "remove_source": "Удалить источник", "add_source": "Добавить источник", "save": "Сохранить", "job": "Последняя операция", "started": "Начало", "finished": "Завершение", "log": "Журнал выполнения", "waiting": "Ожидаем вывод команды…", "running_hint": "Задача выполняется на сервере. Страницу можно закрыть — выполнение продолжится.", "reconnecting": "Сервисы перезапускаются. Ждём восстановления связи с сервером…", "state": { "running": "Выполняется", "succeeded": "Готово", "failed": "Ошибка" }, "config_intro": "Настройки API, рекомендателя и развёртывания в deploy/config.local.", "priority": "Порядок приоритета", "defaults": "по умолчанию", "priority_hint": "Значения из .env перекрывают config.local. Сохранение и применение — отдельные действия.", "search": "Поиск по названию настройки", "group": "Раздел", "all": "Все разделы", "groups": { "api": "API", "deployment": "Развёртывание", "shared": "Общие", "recommender": "Рекомендатель" }, "config_files_hint": "Показаны поддерживаемые параметры. «После применения» — значение из .env, config.local или значение по умолчанию. Фиксированные пути и служебные параметры доступны для просмотра. Секреты можно заменить, их значения скрыты.", "value_source": { "env": "Из .env", "local": "Из config.local", "default": "По умолчанию" }, "effective": "После применения", "readonly": "Служебный параметр. Меняется на хосте с учётом конфигурации Compose.", "secret_saved": "Секрет сохранён", "will_reset": "Локальное значение будет удалено при сохранении.", "overridden": "В .env есть значение: оно имеет приоритет. Локальное изменение пока не вступит в силу.", "secret_hint": "Оставьте поле без изменений, чтобы сохранить секрет. Введите новое значение для замены.", "default": "По умолчанию", "reset": "Сбросить локальное", "no_results": "Настройки не найдены", "saved": "Изменения сохранены в config.local", "unsaved": "Несохранённых параметров: {{count}}", "pending_restart": "Сохранённые изменения ожидают применения", "no_changes": "Нет изменений для применения", "discard": "Отменить правки", "apply": "Применить и перезапустить", "apply_warning": "Контейнеры будут пересозданы с сохранённой конфигурацией. Сервис временно недоступен; данные в постоянных томах сохранятся. Значения из .env продолжат иметь приоритет.", "check_updates": "Проверить обновления", "unsaved_panel": "Несохранённые изменения", "availability": { "checking": "Проверяем выбранную версию…", "running": "Обновление выполняется", "available": "Доступно обновление", "current": "Эта версия уже установлена — обновлений нет", "ahead": "Установлена более новая сборка", "unknown": "Не удалось определить установленный commit. Обновите сервер вручную.", "unavailable": "Выбранная версия недоступна", "select_version": "Выберите версию для проверки" } } }