Files
pipu-music/packages/i18n/locales/en/admin.json
T
mrleo1nid f1528de948
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m17s
ci / ts / ts (packages + web) (push) Successful in 3m13s
ci / api / api (push) Successful in 59s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m31s
ci / db / db (push) Successful in 2m50s
feat(admin): transfer user accounts and show local cover coverage
2026-10-23 02:17:06 +03:00

494 lines
23 KiB
JSON

{
"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": {
"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",
"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",
"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",
"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",
"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"
}
}
}