ci / module boundaries / boundaries (push) Successful in 10s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m30s
ci / api / api (push) Successful in 58s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m1s
ci / db / db (push) Failing after 25s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m36s
ci / ts / ts (packages + web) (push) Failing after 6m3s
580 lines
27 KiB
JSON
580 lines
27 KiB
JSON
{
|
|
"release_lookup": {
|
|
"groups_count": "Releases in batch: {{count}}",
|
|
"groups_hint": "Each release is checked separately. Metadata and artwork apply only to tracks in the selected release.",
|
|
"group": "Release in batch",
|
|
"choose_group": "Choose a release",
|
|
"apply_group_cover": "Add artwork to the selected release",
|
|
"replace_group_cover": "Replace artwork of the selected release",
|
|
"select_group": "Select loaded rows of release {{album}}",
|
|
"audio_search": "Identify by audio",
|
|
"audio_privacy": "Only fingerprints and durations are sent to AcoustID, never audio files. Up to 50 tracks per request.",
|
|
"audio_setup": "Set ACOUSTID_API_KEY in server configuration and apply the changes to enable audio identification.",
|
|
"audio_summary": "Identified by audio: {{matched}} of {{total}} tracks",
|
|
"audio_editions": "A fingerprint identifies a recording, which may appear on different editions. Check the selected edition and track list.",
|
|
"audio_match": "Audio match · AcoustID",
|
|
"audio_ambiguous": "Ambiguous or low-confidence match",
|
|
"audio_not_found": "No audio match found",
|
|
"audio_unavailable": "Could not compute fingerprint: check fpcalc and file availability",
|
|
"title": "Match release",
|
|
"open": "Check release",
|
|
"intro": "MusicBrainz suggests specific editions. Review the track list and differences below. Tags and artwork only change after you select and apply them.",
|
|
"album": "Album",
|
|
"single": "Single",
|
|
"release": "Release",
|
|
"complete": "Complete track list",
|
|
"incomplete": "Incomplete track list",
|
|
"variants": "Editions found: {{count}}",
|
|
"choose_edition": "Choose a specific edition",
|
|
"partial": "Needs review",
|
|
"state_disabled": "Lookup disabled",
|
|
"state_queued": "Release queued",
|
|
"state_searching": "Finding release…",
|
|
"state_ready": "Release found",
|
|
"state_not_found": "Release not found",
|
|
"state_needs_input": "Refine release",
|
|
"state_error": "Lookup unavailable",
|
|
"mbid": "MusicBrainz Release ID (optional)",
|
|
"search": "Find / retry lookup",
|
|
"edition": "Edition",
|
|
"tracks_total": "tracks: {{total}}",
|
|
"confidence": "Match confidence: {{value}}",
|
|
"confidence_high": "high",
|
|
"confidence_medium": "medium",
|
|
"confidence_low": "low",
|
|
"coverage": "Matched {{matched}} of {{total}} tracks · Missing: {{missing}} · Unmatched files: {{extra}}",
|
|
"existing": "Metadata and duration matches were found in the library for {{count}} missing tracks. This does not make the uploaded batch complete.",
|
|
"uploaded": "Your upload",
|
|
"catalogue": "Selected edition",
|
|
"matched": "File matched",
|
|
"missing": "Not uploaded",
|
|
"tentative": "Tentative match — check manually",
|
|
"apply_metadata": "Apply titles, artists, album, year and numbering to matched files",
|
|
"preview_cover": "Preview catalogue cover",
|
|
"exact_cover": "Artwork for this edition · Cover Art Archive",
|
|
"group_cover": "Release-group artwork — an exact match to this edition is not confirmed",
|
|
"replace_cover": "Replace the batch's current artwork with this cover",
|
|
"apply_cover": "Attach this cover to the batch",
|
|
"apply": "Apply selection",
|
|
"applied": "Selected edition applied"
|
|
},
|
|
"users": {
|
|
"change_username": "Change username",
|
|
"title": "Users",
|
|
"subtitle": "Create users and moderators, manage roles, upload review, reset passwords, block accounts",
|
|
"create": "Create user",
|
|
"search": "Name or username",
|
|
"all": "All",
|
|
"col_user": "User",
|
|
"col_role": "Role",
|
|
"col_status": "Status",
|
|
"col_last_login": "Last seen",
|
|
"status_active": "Active",
|
|
"status_blocked": "Blocked",
|
|
"status_must_change": "Must change password",
|
|
"never": "Never signed in",
|
|
"empty": "Nobody found",
|
|
"more": "Show more",
|
|
"actions": "Actions for {{username}}",
|
|
"reset_password": "Reset password",
|
|
"block": "Block",
|
|
"unblock": "Unblock",
|
|
"make_role": "Make {{role}}",
|
|
"review_uploads": "Upload review",
|
|
"grant_review": "Grant upload review",
|
|
"revoke_review": "Revoke upload review",
|
|
"delete": "Delete",
|
|
"delete_confirm": "Delete {{username}}? Their history and likes will be lost.",
|
|
"block_confirm": "Block {{username}}? All their sessions will end.",
|
|
"reset_confirm": "Reset {{username}}'s password? All their sessions will end.",
|
|
"reset_recommendations": "Reset recommendations",
|
|
"recs_confirm": "Reset {{username}}'s recommendations? The wave will start learning their taste from scratch and ask for favourite artists again. Likes and history stay.",
|
|
"recs_done": "{{username}}'s recommendations were reset",
|
|
"confirm": "Confirm",
|
|
"you": "you",
|
|
"manage_updates": "Server updates",
|
|
"grant_updates": "Grant update management",
|
|
"revoke_updates": "Revoke update management"
|
|
},
|
|
"transfer": {
|
|
"export": "Export users",
|
|
"import": "Import users",
|
|
"apply": "Import",
|
|
"description": "Transfer accounts, roles and access permissions with existing passwords. Recommendations, history, likes and sessions are excluded. Existing usernames will be skipped without changes.",
|
|
"sensitive": "The JSON file contains password hashes. Keep it in a secure location.",
|
|
"file": "Users file (.json)",
|
|
"preview": "Accounts in file: {{count}}",
|
|
"invalid": "Invalid file. Select a Pipu JSON export, version 1, up to 16 MiB and 10000 users.",
|
|
"result": "Created: {{count}}. Existing accounts skipped: {{skipped}}."
|
|
},
|
|
"create": {
|
|
"title": "New user",
|
|
"username": "Username",
|
|
"username_hint": "Latin letters, digits, \".\", \"_\", \"-\"",
|
|
"display_name": "Name",
|
|
"role": "Role",
|
|
"review_uploads": "Upload review",
|
|
"review_uploads_hint": "They can review the upload queue. This is not a role: several people can have it, and an admin might not.",
|
|
"password_note": "The server will generate a password and show it once.",
|
|
"submit": "Create"
|
|
},
|
|
"temp_password": {
|
|
"title": "Temporary password",
|
|
"text": "Give this password to {{username}}. It is shown only now; they will be asked to change it on sign-in.",
|
|
"done": "Done"
|
|
},
|
|
"audit": {
|
|
"title": "Audit log",
|
|
"subtitle": "Actions of administrators and moderators",
|
|
"col_when": "When",
|
|
"col_who": "Who",
|
|
"col_action": "Action",
|
|
"col_details": "Details",
|
|
"system": "System",
|
|
"empty": "No entries yet",
|
|
"more": "Show more",
|
|
"actions": {
|
|
"users.export": "Users exported",
|
|
"users.import": "Users imported",
|
|
"user.username_change": "Username changed",
|
|
"user.bootstrap_create": "Initial administrator created",
|
|
"user.bootstrap_credentials": "Administrator credentials set",
|
|
"user.create": "User created",
|
|
"user.rename": "Name changed",
|
|
"user.role_change": "Role changed",
|
|
"user.block": "User blocked",
|
|
"user.unblock": "User unblocked",
|
|
"user.password_reset": "Password reset",
|
|
"user.recommendations_reset": "Recommendations reset",
|
|
"user.delete": "User deleted",
|
|
"user.manages_updates": "Server update permission changed"
|
|
}
|
|
},
|
|
"sources": {
|
|
"cover_files": "Local covers: {{count}} of {{total}} files",
|
|
"cover_pending": "Albums awaiting processing: {{count}}",
|
|
"title": "Storage",
|
|
"subtitle": "Where the server takes music from: a folder on the server or NFS",
|
|
"add": "Add storage",
|
|
"empty": "No storage yet. Connect a music folder to get started.",
|
|
"type_local": "Server folder",
|
|
"type_nfs": "NFS",
|
|
"status_pending": "Connecting",
|
|
"status_mounted": "Connected",
|
|
"status_error": "Error",
|
|
"status_disabled": "Disabled",
|
|
"last_scan": "Last scan: {{date}}",
|
|
"never_scanned": "Not scanned yet",
|
|
"scan": "Scan",
|
|
"full_scan": "Full scan",
|
|
"test": "Test",
|
|
"patterns": "Path patterns",
|
|
"edit": "Edit",
|
|
"delete": "Delete",
|
|
"disable": "Disable",
|
|
"enable": "Enable",
|
|
"delete_confirm": "Delete “{{name}}”? Tracks that exist only in this storage will disappear from the library along with their likes.",
|
|
"scanning": "Scanning: {{processed}} of {{total}}",
|
|
"scan_walking": "Walking folders…",
|
|
"excluded_dirs": "Folders to exclude from scanning",
|
|
"excluded_hint": "One folder per line, relative to the storage root. Example: Downloads_PumpEars. All subfolders are excluded too. Paths are case sensitive; wildcards are not supported. Analysis and its errors are excluded as soon as you save. Existing catalog records are retained. An empty list enables scanning and analysis again.",
|
|
"excluded_running": "Wait for the current scan to finish before editing exclusions.",
|
|
"excluded_count": "Folders excluded from scanning: {{count}}",
|
|
"scan_walk_progress": "Walking folders… Directories checked: {{dirs}} · audio files found: {{found}}",
|
|
"scan_current_dir": "Current folder: {{path}}",
|
|
"scan_preparing": "Matching files with the library…",
|
|
"scan_finalizing": "Finishing scan…",
|
|
"scan_done": "Found {{found}} · new {{added}} · updated {{updated}} · moved {{moved}} · missing {{missing}} · errors in this scan {{errors}}",
|
|
"scan_failed": "Scan stopped: {{error}}",
|
|
"test_ok": "Reachable, audio files found: {{count}}",
|
|
"test_fail": "Not reachable: {{message}}",
|
|
"form_title_new": "New storage",
|
|
"form_title_edit": "Storage",
|
|
"name": "Name",
|
|
"type": "Type",
|
|
"folder": "Folder",
|
|
"folder_root": "Whole folder",
|
|
"folder_hint": "A subfolder of LIBRARY_HOST on the server",
|
|
"up": "Up",
|
|
"nfs_server": "Server",
|
|
"nfs_server_hint": "Host name or IP, e.g. nas.lan",
|
|
"nfs_export": "Export",
|
|
"nfs_export_hint": "Path on the server, e.g. /export/music",
|
|
"nfs_options": "Mount options",
|
|
"nfs_options_hint": "Read-only is added automatically",
|
|
"tag_priority": "Prefer",
|
|
"tags_first": "File tags",
|
|
"path_first": "Path patterns",
|
|
"interval": "Auto scan",
|
|
"interval_off": "Manual",
|
|
"interval_hours": "Every {{count}} h",
|
|
"save": "Save"
|
|
},
|
|
"patterns": {
|
|
"title": "Path patterns: {{name}}",
|
|
"intro": "RE2 regular expressions with named groups are matched against the file path relative to the storage root. The first match wins.",
|
|
"groups": "Groups: artist, albumartist, album, year, disc, track, title, genre; skip ignores the file.",
|
|
"add": "Add pattern",
|
|
"regex": "Pattern {{n}}",
|
|
"enabled": "Enabled",
|
|
"up": "Up",
|
|
"down": "Down",
|
|
"remove": "Remove",
|
|
"preview": "Preview",
|
|
"save": "Save",
|
|
"saved": "Saved. Run a full scan to apply it to files already found.",
|
|
"col_path": "Path",
|
|
"col_pattern": "Pattern",
|
|
"col_result": "Result",
|
|
"no_match": "no match",
|
|
"skipped": "skipped",
|
|
"unmatched": "No pattern matched: {{count}} of {{total}}",
|
|
"from_tags": "from tags",
|
|
"error_at": "Error in pattern {{n}}: {{reason}}",
|
|
"examples": "Examples"
|
|
},
|
|
"library": {
|
|
"title": "Library",
|
|
"subtitle": "Catalog and scan status",
|
|
"artists": "Artists",
|
|
"albums": "Albums",
|
|
"tracks": "Tracks",
|
|
"files": "Files",
|
|
"missing": "Missing files",
|
|
"errors": "Unreadable",
|
|
"sources": "Storage",
|
|
"error_files": "Files with errors",
|
|
"reindex": "Rebuild search index",
|
|
"reindex_started": "Rebuild started",
|
|
"analysis": "Audio analysis",
|
|
"analysis_progress": "Analysed {{done}} of {{total}}",
|
|
"analysis_failed": "Could not analyse: {{count}}",
|
|
"analyzer": "Analyzer version: {{ver}}",
|
|
"wave": "My Wave, last 7 days",
|
|
"wave_served": "Tracks served",
|
|
"wave_sessions": "Sessions",
|
|
"wave_listen": "Played ≥ 50%",
|
|
"wave_early_skip": "Early skips",
|
|
"wave_likes": "Likes per 100",
|
|
"wave_model": "Model version",
|
|
"wave_by_model": "Wave model versions compared",
|
|
"analysis_retry": "Retry",
|
|
"analysis_show_errors": "Show files",
|
|
"analysis_errors_title": "Audio analysis errors",
|
|
"analysis_errors_hint": "Each track shows its storage, path relative to the storage root and failure reason. Paths come from the current library catalog.",
|
|
"analysis_errors_empty": "There are no failed analysis jobs.",
|
|
"analysis_errors_more": "Show more",
|
|
"analysis_error_source": "Storage: {{name}}",
|
|
"analysis_error_no_file": "This track no longer has a file in the library.",
|
|
"analysis_error_unknown": "No error reason was recorded."
|
|
},
|
|
"write_template": {
|
|
"auto_hint": "If no template is saved, we suggest the most common layout in the storage. You can edit it; it is applied only when you save.",
|
|
"detecting": "Detecting the storage file layout…",
|
|
"detected": "The suggested layout matches {{matched}} of {{total}} sampled files.",
|
|
"title": "Uploads and path template",
|
|
"intro": "Approved tracks from the upload queue are placed here using a template that repeats this storage's folder layout.",
|
|
"accepts": "Accept uploads into this storage",
|
|
"nfs_rw_hint": "The storage will be reconnected: the agent also mounts it for writing (visible only to the agent). The NFS export must allow writes for PIPU_FILE_UID.",
|
|
"template": "Path template",
|
|
"hint": "For example {albumartist}/{year} - {album}/{disc:1-}{track:02} - {title}.{ext}; [ … ] is an optional part",
|
|
"suggest": "Suggest from layout",
|
|
"check": "Check",
|
|
"save": "Save",
|
|
"saved": "Saved",
|
|
"required": "Set a path template to accept uploads.",
|
|
"no_tracks": "The storage has no tracks yet, so there is nothing to check the template against.",
|
|
"check_ok": "The template is reversible: {{round_trip}} of {{total}} paths parse back unchanged, {{same_path}} match the real ones.",
|
|
"check_warn": "Mismatches found: {{round_trip}} of {{total}} parse back unchanged, {{same_path}} match the real paths (90% needed). New files may be laid out differently from existing ones.",
|
|
"col_real": "Real path",
|
|
"col_rendered": "From template",
|
|
"col_problem": "Mismatch",
|
|
"no_pattern": "no pattern matched",
|
|
"other_path": "different path",
|
|
"badge": "accepts uploads",
|
|
"write_ok": "Write: ok",
|
|
"write_fail": "Write failed: {{message}}"
|
|
},
|
|
"uploads": {
|
|
"suggest_title": "Suggest tracks",
|
|
"suggest_subtitle": "Files go to the upload queue; an administrator reviews them and places them into a storage",
|
|
"drop_title": "Drop music files or folders here",
|
|
"drop_hint": "Use FLAC, WAV or AIFF. MP3 only as a last resort: the quality is worse, and the queue marks that file “needs attention”.",
|
|
"drop_folders": "Folder structure helps guess the artist and album.",
|
|
"format_attention": "Not lossless (FLAC, WAV, AIFF). Send MP3 only when there is no lossless file.",
|
|
"pick_files": "Choose files",
|
|
"pick_folder": "Choose folder",
|
|
"files": "Files to send",
|
|
"skipped_one": "{{count}} file skipped — not audio",
|
|
"skipped_few": "{{count}} files skipped — not audio",
|
|
"skipped_many": "{{count}} files skipped — not audio",
|
|
"skipped_other": "{{count}} files skipped — not audio",
|
|
"resume_hint_one": "{{count}} file was not finished. Pick it again to resume.",
|
|
"resume_hint_few": "{{count}} files were not finished. Pick them again to resume.",
|
|
"resume_hint_many": "{{count}} files were not finished. Pick them again to resume.",
|
|
"resume_hint_other": "{{count}} files were not finished. Pick them again to resume.",
|
|
"resume_pick": "Pick files and resume",
|
|
"comment": "Comment for the administrator",
|
|
"comment_hint": "For example: “2011 remaster”, “replacing broken files”",
|
|
"not_enough_space": "The queue is short of space: {{need}} needed, {{free}} free — some files will be refused.",
|
|
"clear": "Clear list",
|
|
"hashing_wait": "Checking files…",
|
|
"send_one": "Send {{count}} file · {{size}}",
|
|
"send_few": "Send {{count}} files · {{size}}",
|
|
"send_many": "Send {{count}} files · {{size}}",
|
|
"send_other": "Send {{count}} files · {{size}}",
|
|
"sent_one": "Done: {{count}} file is uploaded and being processed. See statuses in “My uploads”.",
|
|
"sent_few": "Done: {{count}} files are uploaded and being processed. See statuses in “My uploads”.",
|
|
"sent_many": "Done: {{count}} files are uploaded and being processed. See statuses in “My uploads”.",
|
|
"sent_other": "Done: {{count}} files are uploaded and being processed. See statuses in “My uploads”.",
|
|
"failed_some_one": "{{count}} file did not upload — its space is reserved, you can continue.",
|
|
"failed_some_few": "{{count}} files did not upload — their space is reserved, you can continue.",
|
|
"failed_some_many": "{{count}} files did not upload — their space is reserved, you can continue.",
|
|
"failed_some_other": "{{count}} files did not upload — their space is reserved, you can continue.",
|
|
"retry_failed": "Continue upload",
|
|
"retry_file": "Retry upload of {{name}}",
|
|
"uploading_now": "Uploading…",
|
|
"go_mine": "My uploads →",
|
|
"more": "Upload more",
|
|
"dup_found": "This track is already in the library or the queue — no need to upload",
|
|
"possible_dup": "A similar track exists (same artist, title and length) — the administrator will decide",
|
|
"file_error": "Error: {{message}}",
|
|
"remove": "Remove {{name}}",
|
|
"quota": "Queue: {{used}} of {{limit}}",
|
|
"quota_mine": "yours: {{used}} of {{limit}}",
|
|
"mine_title": "My uploads",
|
|
"mine_subtitle": "What you uploaded and what the administrator decided",
|
|
"mine_empty": "You have not suggested anything yet",
|
|
"filter": "Filter",
|
|
"filter_all": "All",
|
|
"filter_pending": "In progress",
|
|
"filter_imported": "Added",
|
|
"filter_declined": "Not accepted",
|
|
"filter_withdrawn": "Withdrawn",
|
|
"expand_batch": "Expand batch",
|
|
"collapse_batch": "Collapse batch",
|
|
"batch_cover_present": "Cover attached",
|
|
"batch_cover_absent": "No cover",
|
|
"format_unknown": "unknown format",
|
|
"preview_http_error": "Could not load audio: HTTP {{status}}.",
|
|
"preview_decode_error": "The browser could not read the audio: check file access and format support.",
|
|
"preview_error": "Could not load audio. Check your connection and retry.",
|
|
"col_file": "Track",
|
|
"col_status": "Status",
|
|
"col_size": "Size",
|
|
"col_date": "Uploaded",
|
|
"received": "{{pct}}% received — open “Suggest tracks” in the same tab to continue",
|
|
"withdraw": "Withdraw",
|
|
"select_visible": "Select eligible files on this page",
|
|
"bulk_withdraw": "Withdraw multiple submissions",
|
|
"withdraw_selected": "Withdraw selected",
|
|
"withdraw_failed": "Could not withdraw {{count}} files: {{reason}}",
|
|
"load_more": "Show more",
|
|
"queue_title": "Upload queue",
|
|
"queue_subtitle": "Check the metadata and the storage path, then approve or reject",
|
|
"queue_empty": "Nothing here",
|
|
"tab_review": "Awaiting review",
|
|
"tab_failed": "Import errors",
|
|
"tab_progress": "In progress",
|
|
"tab_imported": "Added",
|
|
"tab_declined": "Not accepted",
|
|
"only_possible": "Possible duplicates only",
|
|
"review_failed_one": "Could not apply the decision to {{count}} file: {{reason}}",
|
|
"review_failed_few": "Could not apply the decision to {{count}} files: {{reason}}",
|
|
"review_failed_many": "Could not apply the decision to {{count}} files: {{reason}}",
|
|
"review_failed_other": "Could not apply the decision to {{count}} files: {{reason}}",
|
|
"bulk": "Actions on selected",
|
|
"selected_one": "{{count}} file selected",
|
|
"selected_few": "{{count}} files selected",
|
|
"selected_many": "{{count}} files selected",
|
|
"selected_other": "{{count}} files selected",
|
|
"approve": "Approve",
|
|
"reject": "Reject",
|
|
"batch_of": "Batch from {{author}}",
|
|
"batch_size_one": "{{count}} file · {{size}}",
|
|
"batch_size_few": "{{count}} files · {{size}}",
|
|
"batch_size_many": "{{count}} files · {{size}}",
|
|
"batch_size_other": "{{count}} files · {{size}}",
|
|
"select_batch": "Select the whole batch",
|
|
"select_file": "Select {{name}}",
|
|
"disc": "disc {{n}}",
|
|
"edited": "edited",
|
|
"flag_possible": "possible duplicate",
|
|
"flag_quality": "better quality",
|
|
"flag_attention": "needs attention",
|
|
"listen": "Listen to {{name}}",
|
|
"edit_batch": "Whole batch",
|
|
"batch_edit_title": "Edit batch",
|
|
"batch_edit_hint": "Empty fields stay as they are. The cover is written into the files on import.",
|
|
"batch_cover": "Batch cover",
|
|
"batch_cover_clear": "Remove cover",
|
|
"set_upgrade": "Accept the same track in better quality",
|
|
"flag_existing_album": "existing album",
|
|
"flag_new_album": "new album",
|
|
"dup_level_sha256": "exact copy of a file",
|
|
"dup_level_fingerprint": "same track by acoustic fingerprint",
|
|
"dup_level_metadata": "metadata matched",
|
|
"edit": "Edit {{name}}",
|
|
"retry": "Retry",
|
|
"edit_title": "Track metadata",
|
|
"meta_artist": "Artist",
|
|
"meta_albumartist": "Album artist",
|
|
"meta_album": "Album",
|
|
"meta_title": "Title",
|
|
"meta_genre": "Genre",
|
|
"meta_year": "Year",
|
|
"meta_track": "Track number",
|
|
"meta_disc": "Disc",
|
|
"target_source": "Storage",
|
|
"cover_hint": "Album covers named cover.jpg or cover.png are uploaded with the tracks. Otherwise we use embedded artwork from the first track that contains it.",
|
|
"cover_found": "Album cover: {{name}}",
|
|
"cover_embedded": "Album cover: embedded artwork",
|
|
"destination": "Will be saved to",
|
|
"destination_imported": "Saved to",
|
|
"target_selected": "Selected storage",
|
|
"target_not_selected": "No storage selected",
|
|
"target_path_missing": "Destination path has not been calculated",
|
|
"choose_destination": "Choose storage",
|
|
"fix_destination": "Fix destination",
|
|
"target_default": "Default",
|
|
"tags_note": "Edited fields are written into the file tags on import, so path and tags stay consistent.",
|
|
"save": "Save",
|
|
"saved": "Saved",
|
|
"reject_title_one": "Reject {{count}} file",
|
|
"reject_title_few": "Reject {{count}} files",
|
|
"reject_title_many": "Reject {{count}} files",
|
|
"reject_title_other": "Reject {{count}} files",
|
|
"reject_reason": "Reason (the author will see it)",
|
|
"settings_title": "Queue settings",
|
|
"set_queue": "Queue limit, GB",
|
|
"set_per_user": "Limit per moderator, GB",
|
|
"set_per_user_hint": "Empty — no limit",
|
|
"set_max_file": "Maximum file size, GB",
|
|
"set_source": "Default storage",
|
|
"set_source_auto": "The only one accepting uploads",
|
|
"set_note": "Lowering the limit below the used space deletes nothing: new uploads wait until the queue frees up.",
|
|
"status": {
|
|
"uploading": "Uploading",
|
|
"processing": "Processing",
|
|
"pending_review": "Awaiting review",
|
|
"approved": "Approved",
|
|
"importing": "Importing",
|
|
"imported": "Added",
|
|
"import_failed": "Import failed",
|
|
"duplicate": "Duplicate",
|
|
"invalid": "Not audio",
|
|
"rejected": "Rejected",
|
|
"withdrawn": "Withdrawn",
|
|
"expired": "Expired"
|
|
},
|
|
"stage": {
|
|
"hashing": "Computing checksum",
|
|
"checking": "Checking for duplicates",
|
|
"ready": "Ready to send",
|
|
"duplicate": "Already exists",
|
|
"too_large": "Too large",
|
|
"uploading": "Uploading",
|
|
"done": "Uploaded, processing",
|
|
"rejected": "Not accepted",
|
|
"error": "Error",
|
|
"resume": "Waiting for the file to resume"
|
|
}
|
|
},
|
|
"server_settings": {
|
|
"title": "Server settings",
|
|
"subtitle": "Settings that apply to all users"
|
|
},
|
|
"management": {
|
|
"server": "Server management",
|
|
"updates": "Updates",
|
|
"config": "Configuration",
|
|
"updates_intro": "Choose a source and version. The server will build and report the result.",
|
|
"refresh": "Refresh status",
|
|
"current": "Installed version",
|
|
"manual": "Updates start manually. The latest stable release is resolved when you start the update.",
|
|
"update_target": "Next update",
|
|
"sources": "Update sources",
|
|
"source": "Source",
|
|
"channel": "Update target",
|
|
"channel_latest": "Latest release",
|
|
"channel_version": "Choose version",
|
|
"channel_main": "main",
|
|
"hint_latest": "Install the latest stable tag, excluding release candidates.",
|
|
"hint_version": "Choose a published tag. Downgrading to an older version requires a manual rollback.",
|
|
"hint_main": "The current main branch. May include unreleased changes.",
|
|
"version": "Version",
|
|
"choose_version": "Choose a version",
|
|
"source_unavailable": "Could not read the repository. Check its address, server access and SSH keys.",
|
|
"install": "Install update",
|
|
"confirm_update": "Update the server?",
|
|
"confirm_update_text": "Source: {{source}}. Target: {{target}}.",
|
|
"update_warning": "The service will be briefly unavailable during restart. Back up the database first. Database migrations are not rolled back.",
|
|
"cancel": "Cancel",
|
|
"sources_hint": "Git repositories compatible with Pipu. HTTP(S) or SSH; configure private repository keys on the agent host. Do not include tokens in the URL.",
|
|
"source_name": "Name",
|
|
"repository": "Git repository URL",
|
|
"remove_source": "Remove source",
|
|
"add_source": "Add source",
|
|
"save": "Save",
|
|
"job": "Last operation",
|
|
"started": "Started",
|
|
"finished": "Finished",
|
|
"log": "Execution log",
|
|
"waiting": "Waiting for command output…",
|
|
"running_hint": "The task runs on the server. You can close this page without interrupting it.",
|
|
"reconnecting": "Services are restarting. Waiting to reconnect to the server…",
|
|
"state": {
|
|
"running": "Running",
|
|
"succeeded": "Completed",
|
|
"failed": "Failed"
|
|
},
|
|
"config_intro": "API, recommender and deployment settings in deploy/config.local.",
|
|
"priority": "Priority order",
|
|
"defaults": "defaults",
|
|
"priority_hint": ".env values override config.local. Save and apply are separate actions.",
|
|
"search": "Search settings",
|
|
"group": "Section",
|
|
"all": "All sections",
|
|
"groups": {
|
|
"api": "API",
|
|
"deployment": "Deployment",
|
|
"shared": "Shared",
|
|
"recommender": "Recommender"
|
|
},
|
|
"config_files_hint": "Supported settings are listed here. “After applying” is the value from .env, config.local or a default. Fixed paths and service parameters are read-only. Secrets can be replaced; their values stay hidden.",
|
|
"value_source": {
|
|
"env": "From .env",
|
|
"local": "From config.local",
|
|
"default": "Default"
|
|
},
|
|
"effective": "After applying",
|
|
"readonly": "Service parameter. Change on the host together with its Compose configuration.",
|
|
"secret_saved": "Secret saved",
|
|
"will_reset": "The local value will be removed when saved.",
|
|
"overridden": "A value in .env takes priority. This local change will not take effect yet.",
|
|
"secret_hint": "Leave unchanged to keep the stored secret. Enter a new value to replace it.",
|
|
"default": "Default",
|
|
"reset": "Reset local value",
|
|
"no_results": "No settings found",
|
|
"saved": "Changes saved to config.local",
|
|
"unsaved": "Unsaved settings: {{count}}",
|
|
"pending_restart": "Saved changes are waiting to be applied",
|
|
"no_changes": "No changes to apply",
|
|
"discard": "Discard edits",
|
|
"apply": "Apply and restart",
|
|
"apply_warning": "Containers will be recreated with the saved configuration. The service will be briefly unavailable; persistent volume data is preserved. Values from .env will keep taking priority.",
|
|
"check_updates": "Check for updates",
|
|
"unsaved_panel": "Unsaved changes",
|
|
"availability": {
|
|
"checking": "Checking the selected version…",
|
|
"running": "Update in progress",
|
|
"available": "Update available",
|
|
"current": "This version is already installed — no updates",
|
|
"ahead": "A newer build is already installed",
|
|
"unknown": "Could not identify the installed commit. Update the server manually.",
|
|
"unavailable": "The selected version is unavailable",
|
|
"select_version": "Choose a version to check"
|
|
}
|
|
}
|
|
}
|