Adds an "Open Folder" button in the LocalLibrary > Folders tree toolbar that lets the user point QBZ at any folder on disk and play it without adding anything to local_tracks. Lets the app act as an ad-hoc media player for downloaded albums, external drives, etc. Backend: - New ephemeral_library module: in-memory HashMap<i64, LocalTrack> keyed by synthetic negative ids. Reuses LibraryScanner and MetadataExtractor to walk the folder and build LocalTrack records. - Three V2 commands: v2_ephemeral_open_folder (scan + populate, replaces any prior session), v2_ephemeral_clear, v2_ephemeral_get_track. - v2_library_play_track gets a small branch at the top: track_id < 0 resolves through the ephemeral state and goes straight to the regular local-file playback path (read file, hand to player). DB-backed paths (Qobuz cache, CUE start positions) are skipped — ephemeral tracks can't be any of those. Frontend: - "Open Folder" button (FolderOpen icon) next to the collapse-all button in the tree toolbar. Click opens the OS file picker, the result lands in a new ephemeralFolder $state. - Right pane gets a new branch above the existing album/folder views: when ephemeralFolder is set, render a dedicated pane with header (folder name, path, track count, Play All, Close) and a flat track list with play-on-click rows. - Lifecycle per spec: a session survives until (1) a different album or tree folder is selected — handled via $effect that watches selectedAlbum and selectedFolderPath, (2) the user clicks the Close button, or (3) the backend reports the file/directory is gone (caught in the play handler and folded into the same close path). - Translations for en, es, de, fr, pt. Notes: - The audio_cache key is `track_id as u64`, which for negative ids wraps to a large u64 value — unique and safe (DB ids are positive). - Edit-metadata gating for ephemeral tracks is deferred: there is no edit trigger from the new pane yet, so the sidecar/direct toggle behaviour is unchanged. Will gate when an edit path lands. cc
3052 lines
135 KiB
JSON
3052 lines
135 KiB
JSON
{
|
||
"about": {
|
||
"description": "A native music streaming client for Linux, designed for audiophiles who need bit-perfect Hi-Fi playback without browser sample rate limitations.",
|
||
"release": "Release",
|
||
"website": "Website",
|
||
"buildInfo": {
|
||
"heading": "Build Info",
|
||
"version": "Version",
|
||
"codename": "Codename",
|
||
"license": "License",
|
||
"platform": "Platform",
|
||
"build": "Build"
|
||
},
|
||
"attributions": {
|
||
"heading": "Acknowledgments",
|
||
"qobuzDesc": "Music streaming service and API",
|
||
"tauriDesc": "Application framework",
|
||
"svelteDesc": "UI framework",
|
||
"rodioSymphoniaDesc": "Audio playback engine",
|
||
"lucideDesc": "Icon library",
|
||
"kawarpDesc": "WebGL animated background renderer",
|
||
"musicBrainzDesc": "Music metadata database",
|
||
"songLinkOdesliDesc": "Music link aggregation API",
|
||
"lrclibDesc": "Synced lyrics provider",
|
||
"lyricsOVHDesc": "Lyrics API"
|
||
},
|
||
"author": "Author",
|
||
"contributors": "Contributors",
|
||
"signatureDetail": "Hatred towards all those companies that discriminate against the Linux community and don't provide us with a decent client for their product."
|
||
},
|
||
"actions": {
|
||
"play": "Play",
|
||
"playAll": "Play All",
|
||
"playNow": "Play Now",
|
||
"playRadio": "Play Radio",
|
||
"shuffle": "Shuffle",
|
||
"shuffleAll": "Shuffle All",
|
||
"playNext": "Play Next",
|
||
"addToQueue": "Add to Queue",
|
||
"addToPlaylist": "Add to Playlist",
|
||
"addToFavorites": "Add to Library",
|
||
"removeFromFavorites": "Remove from Library",
|
||
"removeFromPlaylist": "Remove from Playlist",
|
||
"selectedTracks": "{count, plural, one {# track selected} other {# tracks selected}}",
|
||
"select": "Select",
|
||
"cancelSelection": "Cancel Selection",
|
||
"makeAvailableOffline": "Make available offline",
|
||
"refreshOfflineCopy": "Refresh offline copy",
|
||
"share": "Share",
|
||
"viewAlbum": "View Album",
|
||
"viewArtist": "View Artist",
|
||
"goToArtist": "Go to Artist",
|
||
"goToAlbum": "Go to Album",
|
||
"trackInfo": "Track Info",
|
||
"more": "More",
|
||
"back": "Back",
|
||
"seeAll": "See All",
|
||
"cancel": "Cancel",
|
||
"save": "Save",
|
||
"saving": "Saving...",
|
||
"delete": "Delete",
|
||
"edit": "Edit",
|
||
"close": "Close",
|
||
"open": "Open",
|
||
"show": "Show",
|
||
"refresh": "Refresh",
|
||
"retry": "Retry",
|
||
"repair": "Repair",
|
||
"clear": "Clear",
|
||
"clearAll": "Clear All",
|
||
"confirm": "Confirm",
|
||
"copy": "Copy",
|
||
"yes": "Yes",
|
||
"no": "No",
|
||
"ok": "OK",
|
||
"add": "Add",
|
||
"create": "Create",
|
||
"deleteConfirm": "Delete?",
|
||
"loading": "Loading...",
|
||
"loadMore": "Load More",
|
||
"collapse": "Collapse sidebar",
|
||
"expand": "Expand sidebar",
|
||
"moreOptions": "More options",
|
||
"shareQobuz": "Share (Qobuz)",
|
||
"albumCredits": "Album credits",
|
||
"startArtistRadio": "Start Artist Radio",
|
||
"radio": {
|
||
"startArtistRadio": "Start Artist Radio"
|
||
},
|
||
"previousAlbums": "Previous albums",
|
||
"nextAlbums": "Next albums",
|
||
"artistNetwork": "Artist network",
|
||
"hide": {
|
||
"hideArtist": "Hide artist",
|
||
"hideArtistOptions": "Hide artist options",
|
||
"hiddenArtist": "Hidden artist",
|
||
"showArtist": "Show artist"
|
||
},
|
||
"newFolder": "New folder",
|
||
"previousArtists": "Previous artists",
|
||
"nextArtists": "Next artists",
|
||
"qobuzLink": "Qobuz™ link",
|
||
"switchToSplitView": "Switch to Split View (V)",
|
||
"switchToImmersiveView": "Switch to Immersive View (V)",
|
||
"gotIt": "Got it",
|
||
"copyCommand": "Copy command",
|
||
"downloadOnGitHub": "Download on GitHub",
|
||
"visitReleasePage": "Visit release page",
|
||
"downloadAndInstall": "Download & Install",
|
||
"downloadManually": "Download manually",
|
||
"okClose": "OK, close",
|
||
"tryAgain": "Try Again",
|
||
"startOffline": "Start Offline",
|
||
"selectAll": "Select All",
|
||
"clearSelection": "Clear selection",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"backToHome": "Back to home",
|
||
"playTrackOnly": "Play track only",
|
||
"playFromHere": "Play from here",
|
||
"findAvailableVersion": "Find available version",
|
||
"removeOfflineCopy": "Remove offline copy"
|
||
},
|
||
"album": {
|
||
"tracks": "tracks",
|
||
"track": "track",
|
||
"by": "by",
|
||
"released": "Released",
|
||
"releaseDate": "Release Date",
|
||
"releasedBy": "Released by",
|
||
"releasedOn": "on",
|
||
"label": "Label",
|
||
"genre": "Genre",
|
||
"duration": "Duration",
|
||
"quality": "Quality",
|
||
"play": "Play",
|
||
"shuffle": "Shuffle",
|
||
"addToQueue": "Add to Queue",
|
||
"addToPlaylist": "Add to Playlist",
|
||
"makeAvailableOffline": "Make available offline",
|
||
"makeAllAvailableOffline": "Make all available offline",
|
||
"disc": "Disc",
|
||
"loadError": "Could not load album tracks. Please try again.",
|
||
"addCover": "Add custom album cover",
|
||
"changeCover": "Change custom album cover",
|
||
"removeCover": "Remove custom album cover",
|
||
"openInBrowser": "Open in browser",
|
||
"saveAs": "Save as...",
|
||
"customCoverSet": "Album cover updated",
|
||
"customCoverRemoved": "Custom album cover removed",
|
||
"customCoverError": "Failed to update album cover",
|
||
"booklet": "Booklet",
|
||
"viewBooklet": "View Booklet",
|
||
"bookletLoading": "Loading booklet...",
|
||
"bookletError": "Could not load booklet",
|
||
"bookletFitWidth": "Fit to width",
|
||
"bookletRotate": "Rotate",
|
||
"bookletDownload": "Save booklet",
|
||
"sameArtist": "By the same artist",
|
||
"seeFullDiscography": "See full discography",
|
||
"readMore": "Read more",
|
||
"readLess": "Show less",
|
||
"sidebar": {
|
||
"label": "Label",
|
||
"awards": "Awards"
|
||
},
|
||
"loading": "Loading…"
|
||
},
|
||
"app": {
|
||
"name": "QBZ",
|
||
"tagline": "Qobuz™ Player"
|
||
},
|
||
"artist": {
|
||
"albums": "Albums",
|
||
"discography": "Discography",
|
||
"eps": "EPs & Singles",
|
||
"epsSingles": "EPs & Singles",
|
||
"live": "Live Albums",
|
||
"liveAlbums": "Live Albums",
|
||
"compilations": "Compilations",
|
||
"appearsOn": "Appears On",
|
||
"popularTracks": "Popular Tracks",
|
||
"similarArtists": "Similar Artists",
|
||
"biography": "Biography",
|
||
"readMore": "Read More",
|
||
"readLess": "Read Less",
|
||
"followers": "followers",
|
||
"loadMore": "Load More",
|
||
"noAlbums": "No albums",
|
||
"noBiography": "No biography available",
|
||
"tributes": "Tributes & Covers",
|
||
"others": "Others",
|
||
"playlists": "Playlists",
|
||
"addImage": "Add custom artist image",
|
||
"changeImage": "Change custom artist image",
|
||
"removeImage": "Remove custom artist image",
|
||
"customImageSet": "Artist image updated",
|
||
"customImageRemoved": "Custom artist image removed",
|
||
"customImageError": "Failed to update artist image",
|
||
"imageSaved": "Artist image saved",
|
||
"labels": "Labels",
|
||
"youMayAlsoLike": "You may also like",
|
||
"dismissRecommendation": "Not a good recommendation",
|
||
"founded": "Founded:",
|
||
"disbanded": "Disbanded:",
|
||
"born": "Born:",
|
||
"died": "Died:",
|
||
"foundedIn": "Founded in:",
|
||
"bornIn": "Born in:",
|
||
"from": "From:",
|
||
"loadingOrigin": "Loading origin...",
|
||
"sceneFrom": "{location} scene",
|
||
"sceneBased": "Based on {artist} · {genres}",
|
||
"noSceneResults": "No matching artists from this scene are currently available on Qobuz.",
|
||
"sceneStep1": "Searching MusicBrainz for {genre} artists...",
|
||
"sceneStep2": "Analyzing genre affinity across {count} candidates...",
|
||
"sceneStep3": "Verifying availability on Qobuz...",
|
||
"sceneStep4": "Preparing results...",
|
||
"jumpTo": "Jump to",
|
||
"about": "About",
|
||
"artistIsBlacklisted": "Show this artist in searches, playlists, discover, etc.",
|
||
"artistIsNotBlacklisted": "Don't show this artist in searches, playlists, discover, etc.",
|
||
"manageBlacklistFromSettings": "Blacklist can be managed from settings.",
|
||
"blacklistBanner": "This artist is hidden. Their music won't appear in search, radio, or suggestions.",
|
||
"search": {
|
||
"previousResult": "Previous result",
|
||
"nextResult": "Next result",
|
||
"close": "Close search",
|
||
"searchInPage": "Search in this page"
|
||
},
|
||
"noAlbumsFound": "No albums found",
|
||
"bandProjects": "Bands & Projects",
|
||
"noAlbumAppearancesFound": "No album appearances found"
|
||
},
|
||
"audioBadges": {
|
||
"castingTo": "Casting to",
|
||
"outputDevice": "Output Device",
|
||
"streaming": "{protocol} Streaming",
|
||
"audioSettings": "Audio Settings",
|
||
"hwDirectBitPerfect": "Hardware Direct: Bit-perfect ALSA",
|
||
"kHzNative": "{rate} kHz native",
|
||
"resamplingError": "ERROR: PipeWire is resampling",
|
||
"resamplingDetail": "File: {trackRate} kHz → Hardware: {hwRate} kHz",
|
||
"resamplingFix": "Fix: Configure PipeWire sample rate switching",
|
||
"dacPassthroughActive": "DAC Passthrough: Active",
|
||
"dacDisabled": "DAC Passthrough: Disabled",
|
||
"exclusiveMode": "Exclusive Mode"
|
||
},
|
||
"auth": {
|
||
"login": "Login",
|
||
"email": "Email",
|
||
"password": "Password",
|
||
"loginButton": "Sign In",
|
||
"loggingIn": "Signing in...",
|
||
"loginError": "Login failed. Please check your credentials.",
|
||
"welcomeBack": "Welcome back",
|
||
"rememberMe": "Remember me",
|
||
"ineligibleSubscription": "No active subscription. QBZ will run in offline mode only.",
|
||
"v2AuthFailed": "Authentication with Qobuz failed. Please try again.",
|
||
"v2NotInitialized": "Could not connect to Qobuz. Please restart the app.",
|
||
"connectionFailed": "Failed to connect to Qobuz™. Check your network and try again.",
|
||
"oauthButton": "Sign in via Browser",
|
||
"oauthLoading": "Opening browser...",
|
||
"systemBrowserButton": "Use your system browser instead",
|
||
"systemBrowserLoading": "Waiting for login...",
|
||
"captchaHint": "Having trouble with captcha? The built-in browser may not support it well.",
|
||
"trySystemBrowser": "Cancel and try your system browser instead",
|
||
"activeSubscriptionRequired": "QBZ requires an active Qobuz™ subscription. Your credentials are sent directly to Qobuz™.",
|
||
"APIUse": "This application uses the Qobuz API but is not certified by Qobuz."
|
||
},
|
||
"award": {
|
||
"kicker": "Award",
|
||
"empty": "No award-winning releases yet.",
|
||
"section": {
|
||
"releases": "Acclaimed Releases",
|
||
"new-releases": "New Releases",
|
||
"classics": "Classics"
|
||
},
|
||
"follow": "Follow award",
|
||
"unfollow": "Unfollow award",
|
||
"otherAwards": "Other awards"
|
||
},
|
||
"collectionDetail": {
|
||
"rename": "Rename",
|
||
"editDescription": "Edit description",
|
||
"uploadCover": "Upload cover",
|
||
"clearCustomCover": "Clear custom cover",
|
||
"changePlayMode": "Change play mode",
|
||
"convertToCollection": "Convert to Collection",
|
||
"convertToMixtape": "Convert to Mixtape",
|
||
"reorderBy": "Reorder by",
|
||
"reorderByManual": "Manual",
|
||
"reorderByYearAsc": "Year ascending",
|
||
"reorderByYearDesc": "Year descending",
|
||
"reorderByTitle": "Title",
|
||
"reorderByArtist": "Artist",
|
||
"delete": "Delete",
|
||
"deleteConfirm": "Delete \"{name}\"? This cannot be undone.",
|
||
"itemActions": "Item actions",
|
||
"changeReleaseType": "Change release type",
|
||
"removeItem": "Remove",
|
||
"coverUploaded": "Cover updated",
|
||
"coverUploadFailed": "Failed to upload cover",
|
||
"coverRemoved": "Custom cover removed",
|
||
"coverRemoveFailed": "Failed to remove cover",
|
||
"selectItem": "Select item",
|
||
"sort": "Sort",
|
||
"filter": "Filter",
|
||
"sortByPosition": "Position",
|
||
"sortByName": "Name",
|
||
"sortByYear": "Year",
|
||
"sortByTracks": "Tracks",
|
||
"filterAll": "All types",
|
||
"viewMode": "View mode",
|
||
"viewList": "List",
|
||
"viewGrid": "Grid",
|
||
"viewExpanded": "Expanded",
|
||
"searchPlaceholder": "Search albums & tracks…"
|
||
},
|
||
"collections": {
|
||
"nav": "Collections",
|
||
"empty": {
|
||
"title": "No collections yet",
|
||
"cta": "+ New Collection"
|
||
},
|
||
"create": {
|
||
"title": "Create Collection"
|
||
},
|
||
"label": "COLLECTION",
|
||
"artistLabel": "ARTIST",
|
||
"buildFromArtist": "Build Artist Collection",
|
||
"searchPlaceholder": "Search collections…",
|
||
"sortByItems": "Items",
|
||
"sortByUpdated": "Recently updated",
|
||
"kindFilterAll": "All kinds",
|
||
"kindFilterCollection": "Collections",
|
||
"kindFilterArtistCollection": "Artist Collections"
|
||
},
|
||
"common": {
|
||
"name": "Name",
|
||
"addToMixtapeOrCollection": "Add to Mixtape/Collection",
|
||
"alreadyInToast": "Already in {name}",
|
||
"addedToMixtapeOrCollection": "Added to {name}",
|
||
"playAllInOrder": "Play",
|
||
"shuffleAlbums": "Shuffle albums",
|
||
"playModeInOrder": "In order",
|
||
"playModeAlbumShuffle": "Album shuffle",
|
||
"trackCount": "{count} tracks",
|
||
"shuffleTracksMix": "Random queue from this collection"
|
||
},
|
||
"confirm": {
|
||
"deletePlaylist": "Are you sure you want to delete this playlist?",
|
||
"clearQueue": "Clear all tracks from queue?",
|
||
"clearCache": "Clear all cached data?",
|
||
"logout": "Are you sure you want to log out?"
|
||
},
|
||
"dacWizard": {
|
||
"triggerTooltip": "DAC Setup Guide",
|
||
"tooltip": {
|
||
"title": "The Hi-Fi Wizard",
|
||
"desc": "If you haven't already, he can help you set up bit-perfect on your DAC"
|
||
},
|
||
"welcome": {
|
||
"title": "Guided DAC Setup",
|
||
"subtitle": "This wizard helps you configure your DAC for bit-perfect playback on Linux.",
|
||
"intro": "QBZ will not modify your system automatically.\nEach step shows the exact commands to run, explains what they do, and lets you decide when to proceed.",
|
||
"disclaimerTitle": "Before continuing, please note:",
|
||
"bulletResponsibility": "You are responsible for creating, keeping, and restoring your own backups",
|
||
"bulletNoGuarantee": "QBZ follows official documentation and recommended practices, but cannot guarantee results on systems with:",
|
||
"bulletHelper": "This guide is provided as a helper, not a system recovery tool",
|
||
"systemIssue1": "Previous custom audio configurations",
|
||
"systemIssue2": "Manually modified PipeWire, Pulse, or WirePlumber setups",
|
||
"systemIssue3": "Commands skipped or executed out of order",
|
||
"recovery": "If anything goes wrong, you can restore your previous configuration using the backup created during this process.",
|
||
"readyText": "When you're ready, continue step by step.\nNothing will run unless you run it.",
|
||
"checkbox": "I understand and accept these terms",
|
||
"start": "Start"
|
||
},
|
||
"precheck": {
|
||
"title": "Check Audio Stack",
|
||
"subtitle": "Confirm PipeWire and WirePlumber are running.",
|
||
"hint": "Look for 'active (running)' for all services",
|
||
"inactiveWarning": "If any service is inactive, stop here and fix it before continuing.",
|
||
"checkbox": "I ran this command and services are active",
|
||
"installTitle": "Install Required Packages",
|
||
"installSubtitle": "Select your distribution to see the install command.",
|
||
"distros": {
|
||
"debian": "Ubuntu / Debian / Mint / Pop!_OS",
|
||
"fedora": "Fedora / RHEL",
|
||
"arch": "Arch / Manjaro / EndeavourOS",
|
||
"opensuse": "openSUSE",
|
||
"gentoo": "Gentoo / Funtoo (OpenRC)",
|
||
"void": "Void Linux (runit)",
|
||
"other": "Other"
|
||
},
|
||
"otherHint": "Ensure these packages (or equivalents) are installed: pipewire, pipewire-pulse, wireplumber, alsa-utils"
|
||
},
|
||
"detectDac": {
|
||
"title": "Identify Default DAC",
|
||
"subtitle": "We need the exact PipeWire node name.",
|
||
"step1": "Find your DAC under 'Audio > Sinks'. Note the number (e.g., 46).",
|
||
"step2": "Then run with that number:",
|
||
"inputLabel": "Enter node.name",
|
||
"inputWarning": "This must match exactly. One character off will break the rule.",
|
||
"inputPlaceholder": "alsa_output.usb-...",
|
||
"validation": {
|
||
"validFormat": "Valid format",
|
||
"invalidFormat": "Invalid format - should start with alsa_output. or alsa_input.",
|
||
"usbDac": "USB DAC - bit-perfect supported",
|
||
"pciDac": "Internal audio - bit-perfect depends on hardware",
|
||
"bluetoothDac": "Bluetooth device - bit-perfect not possible",
|
||
"virtualDac": "Virtual device - bit-perfect not applicable"
|
||
},
|
||
"query": {
|
||
"button": "Query DAC Capabilities",
|
||
"querying": "Querying...",
|
||
"device": "Device",
|
||
"sampleRates": "Sample Rates",
|
||
"formats": "Formats",
|
||
"channels": "Channels",
|
||
"disclaimer": "If these values don't match your DAC specs, check the manufacturer documentation."
|
||
}
|
||
},
|
||
"backup": {
|
||
"title": "Create Backup",
|
||
"subtitle": "Required before any changes.",
|
||
"hint": "You are responsible for keeping this backup until you verify everything works.",
|
||
"checkbox": "I created the backup"
|
||
},
|
||
"pipewireConfig": {
|
||
"title": "Allow Multiple Sample Rates",
|
||
"subtitle": "Enables automatic switching without forcing 48kHz.",
|
||
"explanation": "By default, PipeWire locks to 48kHz. This config allows your DAC to switch to the track's native sample rate.",
|
||
"selectRates": "Select sample rates your DAC supports:",
|
||
"noRatesHint": "No rates selected. Default values will be used."
|
||
},
|
||
"pulseConfig": {
|
||
"title": "Choose Apps for Bit-Perfect",
|
||
"subtitle": "Add QBZ and any players you want without resampling. Uses PipeWire stream rules (applies to all audio APIs).",
|
||
"apps": {
|
||
"qbz": "QBZ",
|
||
"qobuzPlayer": "qobuz-player (TUI)",
|
||
"vlc": "VLC",
|
||
"deadbeef": "DeaDBeeF",
|
||
"strawberry": "Strawberry",
|
||
"clementine": "Clementine",
|
||
"custom": "Custom..."
|
||
},
|
||
"customPlaceholder": "Binary name (e.g., my-player)",
|
||
"warning": "Best results: use app-scoped bit-perfect only. Global Pulse bit-perfect can break browsers and apps that output fixed 48kHz.",
|
||
"customApps": "Custom apps:"
|
||
},
|
||
"wireplumberConfig": {
|
||
"title": "Target Your DAC Only",
|
||
"subtitle": "Apply rules only to the detected sink.",
|
||
"targeting": "This targets:",
|
||
"rulesNote": "These rules apply only to the detected DAC."
|
||
},
|
||
"restart": {
|
||
"title": "Restart Audio Services",
|
||
"subtitle": "Required to apply changes.",
|
||
"hint": "Audio may briefly stop. This is normal.",
|
||
"checkbox": "I restarted services"
|
||
},
|
||
"verify": {
|
||
"title": "Verify Sample-Rate Switching",
|
||
"subtitle": "Play different sample rates and confirm RATE changes.",
|
||
"instructions": "1. Open a terminal and run: pw-top\n2. In QBZ, play a 44.1kHz track\n3. Check that RATE shows 44100\n4. Play a 96kHz track\n5. Check that RATE shows 96000",
|
||
"success": "RATE should change to match each track's sample rate.",
|
||
"passed": "Passed",
|
||
"failed": "Failed",
|
||
"skip": "Skip",
|
||
"rollbackTitle": "Restore Backup",
|
||
"rollbackHint": "Run these commands to restore your previous configuration:",
|
||
"postCloseHint": "Close this wizard first, then verify in a terminal. These instructions are for reference — you can always re-open the wizard from Settings > Audio."
|
||
},
|
||
"done": {
|
||
"title": "Setup Complete",
|
||
"subtitle": "Your DAC is configured for bit-perfect playback.",
|
||
"configuredFor": "Configured for:",
|
||
"summary": "Created configs:",
|
||
"close": "Close"
|
||
},
|
||
"error": {
|
||
"title": "Need Help?",
|
||
"body": "If something went wrong, check these resources:",
|
||
"pipewireDocs": "PipeWire Official Documentation",
|
||
"archWiki": "Arch Wiki - PipeWire",
|
||
"pipewireUrl": "https://docs.pipewire.org/",
|
||
"archWikiUrl": "https://wiki.archlinux.org/title/PipeWire"
|
||
},
|
||
"buttons": {
|
||
"next": "Next",
|
||
"back": "Back",
|
||
"close": "Close",
|
||
"copy": "Copy",
|
||
"copied": "Copied!"
|
||
},
|
||
"steps": {
|
||
"welcome": "Welcome",
|
||
"precheck": "Pre-check",
|
||
"detectDac": "Detect DAC",
|
||
"backup": "Backup",
|
||
"pipewireConfig": "PipeWire",
|
||
"pulseConfig": "Apps",
|
||
"wireplumberConfig": "WirePlumber",
|
||
"restart": "Restart",
|
||
"verify": "Verify",
|
||
"done": "Done"
|
||
},
|
||
"title": "DAC Wizard"
|
||
},
|
||
"degraded": {
|
||
"title": "Service degraded",
|
||
"description": "Qobuz servers are experiencing issues. Playback may require more retries or lower quality."
|
||
},
|
||
"discographyBuilder": {
|
||
"title": "Build Artist Collection: {artist}",
|
||
"orderBy": "Order by",
|
||
"orderByReleaseDate": "Release date",
|
||
"orderByTitle": "Title",
|
||
"orderByManual": "Manual",
|
||
"alternateLabel": "alternate",
|
||
"compilationLabel": "compilation",
|
||
"selectedCount": "{selected} of {total} albums selected",
|
||
"createBtn": "Create Collection",
|
||
"colYear": "Year",
|
||
"colType": "Type",
|
||
"colAlbum": "Album",
|
||
"colTracks": "Tracks",
|
||
"colSource": "Source",
|
||
"colQuality": "Quality",
|
||
"releaseType": {
|
||
"album": "Album",
|
||
"ep": "EP",
|
||
"single": "Single",
|
||
"live": "Live",
|
||
"compilation": "Compilation"
|
||
},
|
||
"checkAll": "Select all",
|
||
"uncheckAll": "Deselect all",
|
||
"typeOverrideHint": "Click to override release type",
|
||
"typeOverrideReset": "Use auto-detected"
|
||
},
|
||
"discover": {
|
||
"newReleases": "New Releases",
|
||
"idealDiscography": "Ideal Discography",
|
||
"topAlbums": "Top Albums",
|
||
"loadingMore": "Loading more...",
|
||
"noResults": "No albums found",
|
||
"searchPlaceholder": "Search albums...",
|
||
"allGenres": "All Genres",
|
||
"backToHome": "Back to Home",
|
||
"qobuzissimes": "Qobuzissimes",
|
||
"albumsOfTheWeek": "Albums of the Week",
|
||
"pressAccolades": "Press Accolades",
|
||
"qobuzPlaylists": "Qobuz Playlists",
|
||
"searchPlaylistsPlaceholder": "Search playlists...",
|
||
"noPlaylistResults": "No playlists found",
|
||
"releaseWatch": {
|
||
"title": "Release Watch",
|
||
"subtitle": "Releases from artists, labels and awards you follow."
|
||
}
|
||
},
|
||
"download": {
|
||
"makeAvailable": "Make available offline",
|
||
"queued": "Queued for offline",
|
||
"preparing": "Preparing for offline",
|
||
"ready": "Available offline (click to remove)",
|
||
"failed": "Failed to cache for offline (click to retry)"
|
||
},
|
||
"empty": {
|
||
"noAlbums": "No albums yet",
|
||
"noArtists": "No artists yet",
|
||
"noTracks": "No tracks yet",
|
||
"noPlaylists": "No playlists yet",
|
||
"noFavorites": "Nothing in your Library yet",
|
||
"queueEmpty": "Queue is empty",
|
||
"noResults": "No results found",
|
||
"noContent": "No content available"
|
||
},
|
||
"errors": {
|
||
"generic": "Something went wrong",
|
||
"networkError": "Network error. Please check your connection.",
|
||
"notFound": "Not found",
|
||
"unauthorized": "Please log in to continue",
|
||
"trackNotAvailable": "This track is not available for streaming",
|
||
"qualityNotAvailable": "Requested quality is not available",
|
||
"loadFailed": "Failed to load",
|
||
"playbackFailed": "Playback failed",
|
||
"cachingFailed": "Failed to prepare for offline",
|
||
"saveFailed": "Failed to save",
|
||
"failedToLoad": "Failed to load"
|
||
},
|
||
"favMixes": {
|
||
"title": "FavQ",
|
||
"subtitle": "Your library, remixed",
|
||
"cardDesc": "A fresh shuffle from your personal library.",
|
||
"algorithmInfo": "Randomly selects up to 50 tracks from your Qobuz library.",
|
||
"emptyFavorites": "No tracks in your Library yet. Start adding to build your mix!"
|
||
},
|
||
"favorites": {
|
||
"title": "Library",
|
||
"albums": "Albums",
|
||
"tracks": "Tracks",
|
||
"artists": "Artists",
|
||
"labels": "Labels",
|
||
"playlists": "Playlists",
|
||
"noFavorites": "Nothing in your Library yet",
|
||
"noFavoriteTracks": "No tracks in Library yet",
|
||
"noFavoriteAlbums": "No albums in Library yet",
|
||
"noFavoriteArtists": "No artists in Library yet",
|
||
"noFavoriteLabels": "No labels followed yet",
|
||
"noFavoritePlaylists": "No playlists in Library yet",
|
||
"noTracksMatch": "No tracks match \"{query}\"",
|
||
"noAlbumsMatch": "No albums match \"{query}\"",
|
||
"noArtistsMatch": "No artists match \"{query}\"",
|
||
"noLabelsMatch": "No labels match \"{query}\"",
|
||
"noPlaylistsMatch": "No playlists match \"{query}\"",
|
||
"noAlbumsFound": "No albums found",
|
||
"likeTracksHint": "Like tracks to see them here",
|
||
"likeAlbumsHint": "Like albums to see them here",
|
||
"likeArtistsHint": "Like artists to see them here",
|
||
"likeLabelsHint": "Follow labels to see them here",
|
||
"likePlaylistsHint": "Click the heart icon on playlists to add them here",
|
||
"noFollowingPlaylists": "Not following any playlists",
|
||
"followPlaylistsHint": "Follow playlists on Qobuz to see them here",
|
||
"playlistSubTabs": {
|
||
"favorites": "Library",
|
||
"following": "Following"
|
||
},
|
||
"randomAlbum": "Play random album",
|
||
"randomArtist": "Go to random artist",
|
||
"selectArtistHint": "Select an artist to see their albums",
|
||
"loadingAlbums": "Loading albums...",
|
||
"failedLoadAlbums": "Failed to load albums",
|
||
"failedLoadFavorites": "Failed to load Library",
|
||
"loadingFavorites": "Loading Library...",
|
||
"loadingPlaylists": "Loading playlists...",
|
||
"addedToFavorites": "Added to Library",
|
||
"removedFromFavorites": "Removed from Library",
|
||
"editSettings": "Edit Library Settings",
|
||
"settingsModalTitle": "Library Settings",
|
||
"iconSectionTitle": "Icon",
|
||
"iconSectionDescription": "Choose an icon for the Library page header",
|
||
"uploadCustomImage": "Upload Custom Image",
|
||
"tabOrderSectionTitle": "Tab Order",
|
||
"tabOrderSectionDescription": "Reorder tabs in the Library page navigation",
|
||
"tabLabels": {
|
||
"tracks": "Tracks",
|
||
"albums": "Albums",
|
||
"artists": "Artists",
|
||
"labels": "Labels",
|
||
"playlists": "Playlists"
|
||
},
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"save": "Save",
|
||
"saving": "Saving...",
|
||
"cancel": "Cancel",
|
||
"footer": {
|
||
"viewCompilationsAndContent": "To view compilations and other content",
|
||
"goToArtistPage": "go to {artist}'s page"
|
||
}
|
||
},
|
||
"fileFormat": {
|
||
"flac": "FLAC",
|
||
"mp3": "MP3",
|
||
"aac": "AAC",
|
||
"opus": "Opus",
|
||
"alac": "ALAC"
|
||
},
|
||
"filter": {
|
||
"all": "All",
|
||
"hidden": "Hidden",
|
||
"visible": "Visible"
|
||
},
|
||
"genreFilter": {
|
||
"title": "Filter by genre",
|
||
"genreAll": "Genre: All",
|
||
"genrePrefix": "Genre:",
|
||
"genresCount": "{count} genres",
|
||
"rememberSelection": "Remember selection",
|
||
"advancedView": "Advanced view",
|
||
"toggleAdvancedView": "Toggle advanced view",
|
||
"clearSearch": "Clear search",
|
||
"collapse": "Collapse",
|
||
"expand": "Expand",
|
||
"clearFilter": "Clear filter"
|
||
},
|
||
"home": {
|
||
"title": "Home",
|
||
"featuredForYou": "Featured for you",
|
||
"recentlyPlayed": "Recently Played Albums",
|
||
"newReleases": "New Releases",
|
||
"pressAwards": "Press Accolades",
|
||
"madeForYou": "Made for You",
|
||
"topPicks": "Top Picks",
|
||
"yourPlaylists": "Your Playlists",
|
||
"seeAll": "See All",
|
||
"loading": "Loading your home",
|
||
"loadingDescription": "Building recommendations from your listening history.",
|
||
"customizeHome": "Customize Home",
|
||
"loadError": "Could not load Home",
|
||
"popularAlbums": "Popular Albums",
|
||
"qobuzissimes": "Qobuzissimes",
|
||
"editorPicks": "Albums of the Week",
|
||
"qobuzPlaylists": "Qobuz Playlists",
|
||
"essentialDiscography": "Essential Discography",
|
||
"allTags": "All",
|
||
"continueListening": "Recently Played Tracks",
|
||
"yourTopArtists": "Your Top Artists",
|
||
"artistPlays": "{count} plays",
|
||
"moreFromFavorites": "More From Your Library",
|
||
"startListening": "Start Listening",
|
||
"startListeningDescription": "Play music or add favorites to activate recommendations.",
|
||
"tabEditorPicks": "Editor's Picks",
|
||
"tabForYou": "For You",
|
||
"radioStations": "Radio Stations",
|
||
"radioStationsDesc": "Tune into new frequencies.",
|
||
"radioLabel": "RADIO",
|
||
"qobuzRadioStation": "Qobuz Radio Station",
|
||
"similarTo": "Similar to",
|
||
"rediscoverLibrary": "Rediscover your Library",
|
||
"rediscoverLibraryDesc": "Bring forgotten favourites back to the spotlight.",
|
||
"artistsToFollow": "Artists to Follow",
|
||
"artistsToFollowDesc": "Follow artists to stay updated on their latest releases and build your personal feed.",
|
||
"followArtist": "Follow",
|
||
"essentials": "Essentials {genre}",
|
||
"spotlight": "Spotlight",
|
||
"spotlightDesc": "Shine a light on one of your favourite artists.",
|
||
"spotlightArtist": "Artist",
|
||
"topTracks": "Top tracks",
|
||
"topTracksLabel": "TOP TRACKS",
|
||
"topTracksBy": "By {artist}",
|
||
"andMore": "and more",
|
||
"playlistLabel": "PLAYLIST",
|
||
"mostStreamed": "Popular albums",
|
||
"recentAlbums": "Recently Played Albums",
|
||
"continueTracks": "Recently Played Tracks",
|
||
"topArtists": "Your Top Artists",
|
||
"favoriteAlbums": "More From Your Library",
|
||
"releaseWatch": "Release Watch",
|
||
"qobuzMixes": "Qobuz Mixes"
|
||
},
|
||
"homeSettings": {
|
||
"greeting": "Greeting",
|
||
"showGreeting": "Show greeting",
|
||
"showGreetingDesc": "Display personalized greeting at top",
|
||
"customGreeting": "Custom greeting",
|
||
"customGreetingDesc": "Use {name} for your name. Leave empty for time-based.",
|
||
"customGreetingPlaceholder": "Good vibes, {name}!",
|
||
"goodMorning": "Good morning, {name}",
|
||
"goodAfternoon": "Good afternoon, {name}",
|
||
"goodEvening": "Good evening, {name}",
|
||
"goodNight": "Good night, {name}",
|
||
"sections": "Sections",
|
||
"sectionsDesc": "Reorder with arrows. Toggle visibility with switch.",
|
||
"moveUp": "Move up",
|
||
"moveDown": "Move down",
|
||
"resetToDefaults": "Reset to defaults",
|
||
"itemsToShow": "Items to show"
|
||
},
|
||
"integrations": {
|
||
"connecting": "Connecting..."
|
||
},
|
||
"itemType": {
|
||
"album": "Album",
|
||
"track": "Track",
|
||
"playlist": "Playlist"
|
||
},
|
||
"keybindings": {
|
||
"title": "Keyboard Shortcuts",
|
||
"customize": "Customize Shortcuts",
|
||
"pressKeys": "Press keys...",
|
||
"modified": "modified",
|
||
"resetToDefault": "Reset to default",
|
||
"resetAll": "Reset All to Defaults",
|
||
"resetAllConfirmTitle": "Reset All Shortcuts?",
|
||
"resetAllConfirmText": "This will reset all {count} modified shortcuts to their default values.",
|
||
"conflict": "\"{shortcut}\" is already used by \"{action}\"",
|
||
"categories": {
|
||
"playback": "Playback",
|
||
"navigation": "Navigation",
|
||
"ui": "Interface",
|
||
"focus": "Immersive",
|
||
"mini": "Mini Player"
|
||
},
|
||
"actions": {
|
||
"playbackToggle": "Play / Pause",
|
||
"playbackNext": "Next Track",
|
||
"playbackPrev": "Previous Track",
|
||
"navBack": "Go Back",
|
||
"navForward": "Go Forward",
|
||
"navSearch": "Search",
|
||
"uiSidebar": "Toggle Sidebar",
|
||
"uiFocusMode": "Immersive Mode",
|
||
"uiQueue": "Queue",
|
||
"uiEscape": "Close / Dismiss",
|
||
"uiShowShortcuts": "Show Shortcuts",
|
||
"uiOpenLink": "Open Music Link",
|
||
"uiMiniPlayer": "Toggle Mini Player",
|
||
"focusSeekForward": "Seek Forward (5s)",
|
||
"focusSeekBack": "Seek Back (5s)",
|
||
"focusSeekForwardLong": "Seek Forward (10s)",
|
||
"focusSeekBackLong": "Seek Back (10s)",
|
||
"miniMicro": "Micro View",
|
||
"miniCompact": "Compact View",
|
||
"miniArtwork": "Artwork View",
|
||
"miniQueue": "Queue View",
|
||
"miniLyrics": "Lyrics View"
|
||
},
|
||
"descriptions": {
|
||
"playbackToggle": "Toggle playback",
|
||
"playbackNext": "Skip to next track",
|
||
"playbackPrev": "Go to previous track",
|
||
"navBack": "Navigate to previous page",
|
||
"navForward": "Navigate to next page",
|
||
"navSearch": "Focus search field",
|
||
"uiSidebar": "Expand or collapse the sidebar",
|
||
"uiFocusMode": "Toggle immersive mode",
|
||
"uiQueue": "Toggle queue panel",
|
||
"uiEscape": "Close active panel or modal",
|
||
"uiShowShortcuts": "Show keyboard shortcuts modal",
|
||
"uiOpenLink": "Open a Qobuz link in the app",
|
||
"uiMiniPlayer": "Toggle mini player mode",
|
||
"focusSeekForward": "Seek forward 5 seconds",
|
||
"focusSeekBack": "Seek back 5 seconds",
|
||
"focusSeekForwardLong": "Seek forward 10 seconds",
|
||
"focusSeekBackLong": "Seek back 10 seconds",
|
||
"miniMicro": "Switch to micro view",
|
||
"miniCompact": "Switch to compact view",
|
||
"miniArtwork": "Switch to artwork view",
|
||
"miniQueue": "Switch to queue view",
|
||
"miniLyrics": "Switch to lyrics view"
|
||
}
|
||
},
|
||
"keys": {
|
||
"enter": "Enter",
|
||
"esc": "Esc",
|
||
"shift": "Shift"
|
||
},
|
||
"label": {
|
||
"title": "Label",
|
||
"about": "About",
|
||
"otherLabels": "Other labels",
|
||
"popularTracks": "Popular Tracks",
|
||
"releases": "Releases",
|
||
"criticsPicks": "Critics' Picks",
|
||
"playlists": "Playlists",
|
||
"artists": "Artists",
|
||
"moreLabels": "More labels",
|
||
"readMore": "READ MORE",
|
||
"readLess": "READ LESS",
|
||
"seeAll": "See all",
|
||
"showMore": "Show more",
|
||
"showLess": "Show less",
|
||
"follow": "Follow label",
|
||
"unfollow": "Unfollow label",
|
||
"followShort": "Follow",
|
||
"followingShort": "Following"
|
||
},
|
||
"labelReleases": {
|
||
"albumCount": "{count} albums",
|
||
"searchPlaceholder": "Search albums...",
|
||
"searchAlbums": "Search albums",
|
||
"results": "results",
|
||
"showingOf": "Showing {shown} of {total}",
|
||
"noAlbums": "No albums found for this label",
|
||
"noResults": "No matching albums",
|
||
"loadingMore": "Loading more albums...",
|
||
"filterHiRes": "Hi-Res only",
|
||
"sort": "Sort",
|
||
"sortNewest": "Newest",
|
||
"sortOldest": "Oldest",
|
||
"sortTitleAZ": "Title A-Z",
|
||
"sortTitleZA": "Title Z-A",
|
||
"sortArtistAZ": "Artist A-Z",
|
||
"groupByArtist": "Group by artist"
|
||
},
|
||
"legal": {
|
||
"brandingLine": "This application uses the Qobuz API but is not certified by Qobuz™.",
|
||
"brandingLineSuffix": "This application uses the Qobuz™ API but is not certified by Qobuz™.",
|
||
"tosAgreementPrefix": "I have read the",
|
||
"tosLinkText": "Qobuz™ Terms of Service",
|
||
"tosRequiredToLogin": "Please confirm that you have read the Qobuz™ Terms of Service to continue.",
|
||
"trademarkNotice": "Qobuz™ is a trademark of Qobuz. QBZ is an open-source application licensed under the MIT License and is not affiliated with, endorsed by, or certified by Qobuz."
|
||
},
|
||
"library": {
|
||
"title": "Local Library",
|
||
"browse": "Browse Library",
|
||
"albums": "Albums",
|
||
"artists": "Artists",
|
||
"tracks": "Tracks",
|
||
"folders": "Folders",
|
||
"foldersTree": {
|
||
"modeLabel": "Tree",
|
||
"flatLabel": "Flat",
|
||
"selectAFolder": "Select a folder to view its content.",
|
||
"treeFolderTracks": "{count, plural, one {# track} other {# tracks}}",
|
||
"treeLoading": "Loading…",
|
||
"treeEmpty": "This folder is empty.",
|
||
"playAllRecursive": "Play all tracks in this folder",
|
||
"resizeHandle": "Resize folder tree sidebar",
|
||
"searchTracksPlaceholder": "Search tracks…",
|
||
"searchTracksLabel": "Search tracks in this album",
|
||
"searchNoResults": "No tracks match your search.",
|
||
"collapseAll": "Collapse all folders",
|
||
"searchPlaceholder": "Search folders…",
|
||
"searchAriaLabel": "Search folders in tree",
|
||
"searchAlbumsPlaceholder": "Search albums…",
|
||
"searchAlbumsLabel": "Search albums in this folder",
|
||
"viewModeLabel": "View mode",
|
||
"gridView": "Grid",
|
||
"listView": "List",
|
||
"viewArtwork": "View album art"
|
||
},
|
||
"ephemeralFolder": {
|
||
"buttonLabel": "Open Folder",
|
||
"tooltip": "Open a folder ad-hoc — its tracks load into the content pane and remain available until the app closes. Nothing is added to your library.",
|
||
"dialogTitle": "Choose a folder to play",
|
||
"contextLabel": "Open Folder",
|
||
"subtitle": "{count, plural, one {# track} other {# tracks}} · {path}",
|
||
"playAll": "Play all",
|
||
"close": "Close folder",
|
||
"empty": "No supported audio files found in this folder.",
|
||
"opened": "Opened {count, plural, one {# track} other {# tracks}}",
|
||
"openedWithSkips": "Opened {count, plural, one {# track} other {# tracks}}, skipped {skipped, plural, one {# file} other {# files}}",
|
||
"openFailed": "Could not open folder: {error}",
|
||
"playFailed": "Playback failed: {error}",
|
||
"gone": "Folder is no longer available — session cleared."
|
||
},
|
||
"explicit": "Explicit",
|
||
"folderListTitle": "Library Folders",
|
||
"editTabs": {
|
||
"title": "Edit Library Tabs",
|
||
"help": "Drag to reorder. Toggle visibility.",
|
||
"save": "Save",
|
||
"cancel": "Cancel",
|
||
"reset": "Reset to defaults",
|
||
"showTab": "Show tab",
|
||
"hideTab": "Hide tab"
|
||
},
|
||
"noAlbums": "No albums in library",
|
||
"noArtists": "No artists in library",
|
||
"noTracks": "No tracks in library",
|
||
"noFolders": "No folders added yet. Add a folder to start building your library.",
|
||
"addFolder": "Add Folder",
|
||
"removeFolder": "Remove",
|
||
"editFolder": "Edit Folder",
|
||
"editFolderHint": "Select exactly one folder to edit",
|
||
"removeSelectedFolders": "Remove selected folders",
|
||
"scan": "Scan",
|
||
"scanning": "Scanning...",
|
||
"stopScan": "Stop",
|
||
"scanComplete": "Scan complete",
|
||
"scanCancelled": "Scan cancelled",
|
||
"scanError": "Scan error",
|
||
"scanThisFolder": "Scan This Folder",
|
||
"searchPlaceholder": "Search...",
|
||
"searchAlbums": "Search albums...",
|
||
"searchArtists": "Search artists...",
|
||
"searchTracks": "Search tracks, albums, artists...",
|
||
"searchAlbumTracks": "Search tracks...",
|
||
"trackCount": "{count} tracks",
|
||
"albumCount": "{count} albums",
|
||
"artistCount": "{count} artists",
|
||
"groupBy": "Group by",
|
||
"sortBy": "Sort by",
|
||
"viewAs": "View as",
|
||
"grid": "Grid",
|
||
"list": "List",
|
||
"fetchingArtwork": "Fetching artwork...",
|
||
"folderSettings": "Folder Settings",
|
||
"folderAlias": "Alias",
|
||
"folderAliasPlaceholder": "My Music, NAS, etc.",
|
||
"folderAliasHint": "A friendly name to identify this folder",
|
||
"folderEnabled": "Enabled",
|
||
"folderEnabledHint": "Disabled folders won't be scanned and their content won't appear in the library",
|
||
"isNetworkFolder": "Network Folder",
|
||
"networkFolderHint": "Detected automatically. Enable if this is a network location (NAS, shared drive, etc.)",
|
||
"networkOverrideHint": "You have manually changed this setting",
|
||
"networkOverrideMarkedNetwork": "Marked as network folder, but not detected as one. Content will be hidden in offline mode.",
|
||
"networkOverrideMarkedLocal": "Marked as local, but detected as network folder. May be unavailable in offline mode.",
|
||
"networkFsType": "Filesystem Type",
|
||
"networkFsTypeHint": "Usually detected automatically. Set manually if needed.",
|
||
"lastScanned": "Last scanned",
|
||
"neverScanned": "Never",
|
||
"folderAccessible": "Folder is accessible",
|
||
"folderInaccessible": "Folder is not accessible",
|
||
"folderDisabledNoScan": "Enable the folder first to scan",
|
||
"folderInaccessibleNoScan": "Folder is not accessible",
|
||
"networkFolderDetected": "This folder appears to be on a network drive. It may be unavailable in offline mode.",
|
||
"disabled": "Disabled",
|
||
"unavailable": "Unavailable",
|
||
"changeFolder": "Change folder location",
|
||
"selectFolder": "Select folder",
|
||
"networkFs": {
|
||
"auto": "Auto-detect",
|
||
"other": "Other"
|
||
},
|
||
"stats": "{albums} albums • {tracks} tracks • {duration} • {size}",
|
||
"scanLibrary": "Scan Library",
|
||
"viewHiddenAlbums": "View Hidden Albums",
|
||
"showActiveAlbums": "Show Active Albums",
|
||
"fetchMissingArtwork": "Fetch Missing Artwork",
|
||
"maintenance": "MAINTENANCE",
|
||
"dangerZone": "DANGER ZONE",
|
||
"cleanupMissingFiles": "Cleanup missing files",
|
||
"clearDatabase": "Clear Library Database",
|
||
"filters": "Filters",
|
||
"quality": "Quality",
|
||
"albumName": "Album Name",
|
||
"releaseYear": "Release Year",
|
||
"artistName": "Artist Name",
|
||
"alphabetical": "Alphabetical",
|
||
"group": "Group:",
|
||
"backToLibrary": "Back to Library",
|
||
"yourCollection": "Your local music collection",
|
||
"playlistOfflineMode": "Playlist management is disabled in offline mode. You can still play your local tracks.",
|
||
"artworkOffline": "Artwork fetching unavailable offline",
|
||
"loadingLibrary": "Loading library...",
|
||
"failedLoadLibrary": "Failed to load library",
|
||
"backToActiveAlbums": "Back to Active Albums",
|
||
"noHiddenAlbums": "No hidden albums",
|
||
"noAlbumsInLibrary": "No albums in library",
|
||
"addFoldersHint": "Add folders and scan to build your library",
|
||
"clearAllFilters": "Clear all",
|
||
"source": "Source",
|
||
"localFiles": "Local files",
|
||
"offlineCache": "Offline cache",
|
||
"plexLibrary": "Plex library",
|
||
"syncPlexLibrary": "Sync Plex library",
|
||
"syncingPlexLibrary": "Syncing Plex...",
|
||
"plexSyncDone": "Plex library synchronized",
|
||
"plexSyncFailed": "Failed to synchronize Plex library",
|
||
"noAlbumsMatch": "No albums match your search",
|
||
"tryDifferentSearch": "Try a different artist or album name",
|
||
"noArtistsInLibrary": "No artists in library",
|
||
"noArtistsMatch": "No artists match your search",
|
||
"noAlbumsFound": "No albums found",
|
||
"selectArtist": "Select an artist to view their albums",
|
||
"noTracksInLibrary": "No tracks in library",
|
||
"editAlbumInfo": "Edit album info",
|
||
"editAlbumMetadataTitle": "Edit album metadata for LocalLibrary indexing and search",
|
||
"hideAlbum": "Hide this album from library",
|
||
"hideAlbumHint": "Hidden albums can be viewed from Settings",
|
||
"localTrackIndicator": "Local track - only available on this device",
|
||
"singleFileAlbumNotice": "This album appears to be a single file containing the full disc. Individual track navigation requires the Plex server to split the file (e.g., via cue sheet scanner).",
|
||
"plexTrackIndicator": "Plex track - served from your local Plex library",
|
||
"qobuzTrackIndicator": "Qobuz streaming track",
|
||
"qobuzPurchaseIndicator": "Purchased from Qobuz",
|
||
"refreshMetadata": "Refresh metadata",
|
||
"albumSettings": "Album settings",
|
||
"albumArtwork": "Album Artwork",
|
||
"uploadCover": "Upload cover",
|
||
"folderName": "Name",
|
||
"background": "Background"
|
||
},
|
||
"linkResolver": {
|
||
"title": "Open Music Link",
|
||
"placeholder": "Paste a link from Qobuz, Spotify, Apple Music, Tidal, Deezer, or song.link...",
|
||
"go": "Go",
|
||
"resolving": "Resolving...",
|
||
"invalidLink": "Invalid or unsupported music link.",
|
||
"notOnQobuz": "This content is not available on Qobuz.",
|
||
"playlistDetected": "This is a playlist. Use the Playlist Importer for playlists.",
|
||
"openPlaylistImporter": "Open Playlist Importer"
|
||
},
|
||
"metadata": {
|
||
"editMetadata": "Edit metadata",
|
||
"albumName": "Album name",
|
||
"albumArtist": "Album artist",
|
||
"year": "Year",
|
||
"genre": "Genre",
|
||
"catalogNumber": "Catalog / Release ID",
|
||
"resultsCount": "{count} results",
|
||
"noResultsTryDifferent": "No results, try different search",
|
||
"openInBrowser": "Open in browser",
|
||
"apply": "Apply",
|
||
"track": "Track",
|
||
"trackTitle": "Track title",
|
||
"disc": "Disc",
|
||
"of": "of",
|
||
"albumPath": "Album path",
|
||
"persistence": "Persistence",
|
||
"persistenceSidecar": "QBZ sidecar (does not modify files)",
|
||
"persistenceDirect": "Write to audio files (embedded tags)",
|
||
"writesToDisk": "Writes to files on disk.",
|
||
"writingProgress": "Writing {current} of {total}...",
|
||
"writingTags": "Writing tags..."
|
||
},
|
||
"mixtapes": {
|
||
"nav": "Mixtapes",
|
||
"empty": {
|
||
"title": "No mixtapes yet",
|
||
"cta": "+ New Mixtape"
|
||
},
|
||
"create": {
|
||
"title": "Create Mixtape"
|
||
},
|
||
"label": "MIXTAPE",
|
||
"searchPlaceholder": "Search mixtapes…",
|
||
"albumCount": "{count, plural, one {# album} other {# albums}}",
|
||
"bulkAdded": "Added {count} to {name}",
|
||
"bulkAddTitle": "{count} items",
|
||
"dupSummary": "{count, plural, one {# item already in} other {# items already in}} {name}",
|
||
"dupFreshHint": "{count, plural, one {# other item} other {# other items}} will be added regardless.",
|
||
"dupAddAnyway": "Add anyway",
|
||
"dupSkip": "Skip duplicates"
|
||
},
|
||
"musician": {
|
||
"knownFor": "Known for",
|
||
"viewArtistPage": "View Artist Page"
|
||
},
|
||
"nav": {
|
||
"home": "Discover",
|
||
"search": "Search",
|
||
"library": "Library",
|
||
"albums": "Albums",
|
||
"artists": "Artists",
|
||
"tracks": "Tracks",
|
||
"playlists": "Playlists",
|
||
"favorites": "Library",
|
||
"settings": "Settings",
|
||
"newReleases": "New Releases",
|
||
"pressAwards": "Press Accolades",
|
||
"radio": "Radio",
|
||
"recentlyAdded": "Recently Added",
|
||
"backTo": "Back to",
|
||
"updates": "Updates",
|
||
"flatpak": "Flatpak",
|
||
"snap": "Snap",
|
||
"purchases": "Purchases",
|
||
"myQbz": "My QBZ"
|
||
},
|
||
"notifications": {
|
||
"trackAdded": "Track added to queue",
|
||
"tracksAdded": "{count} tracks added to queue",
|
||
"albumAdded": "Album added to queue",
|
||
"addedToPlaylist": "Added to playlist",
|
||
"removedFromPlaylist": "Removed from playlist",
|
||
"playlistCreated": "Playlist created",
|
||
"collectionCreated": "Artist Collection created",
|
||
"collectionCreateFailed": "Failed to create collection",
|
||
"playlistDeleted": "Playlist deleted",
|
||
"cachingStarted": "Preparing for offline",
|
||
"cachedForOffline": "Now available offline",
|
||
"cachingFailed": "Failed to cache for offline",
|
||
"scanComplete": "Library scan complete",
|
||
"scanCancelled": "Library scan cancelled",
|
||
"scanFailed": "Library scan failed",
|
||
"settingsSaved": "Settings saved",
|
||
"copied": "Copied to clipboard"
|
||
},
|
||
"offline": {
|
||
"title": "Offline Mode",
|
||
"message": "Connect to the internet to access Qobuz™ content.",
|
||
"noNetwork": "No Network Connection",
|
||
"noNetworkMessage": "Check your internet connection to access Qobuz™ streaming.",
|
||
"notLoggedIn": "Not Logged In",
|
||
"notLoggedInMessage": "Log in to your Qobuz™ account to access streaming content.",
|
||
"manualMode": "Offline Mode Enabled",
|
||
"manualModeMessage": "You have manually enabled offline mode. Your local library is still available.",
|
||
"goToLibrary": "Go to Local Library",
|
||
"enableManual": "Enable Offline Mode",
|
||
"enableManualDesc": "Manually switch to offline mode even with internet",
|
||
"showPartialPlaylists": "Show Partial Playlists",
|
||
"showPartialPlaylistsDesc": "Show playlists with some local content in offline mode",
|
||
"status": "Status",
|
||
"online": "Online",
|
||
"offlineReason": "Offline",
|
||
"indicator": "Offline",
|
||
"allLocal": "Fully Available Offline",
|
||
"someLocal": "Partially Available Offline",
|
||
"notAvailable": "Not Available Offline",
|
||
"trackNotAvailable": "This track is not available offline",
|
||
"trackNotAvailableOffline": "\"{title}\" isn't saved for offline playback",
|
||
"featureDisabled": "This feature requires internet connection",
|
||
"startWithoutLogin": "Start offline (no access to Qobuz™ services)",
|
||
"noPreviousSession": "You need to log in at least once before using offline mode. Connect to the internet and log in to create your profile.",
|
||
"noNetworkToast": "No internet connection available",
|
||
"checkingNetwork": "Checking network connection...",
|
||
"available": "Fully Available Offline",
|
||
"partiallyAvailable": "Partially Available",
|
||
"notAvailableOffline": "Not Available Offline",
|
||
"viewOnly": "View Only (Offline)",
|
||
"allowCast": "Allow Chromecast",
|
||
"allowCastDesc": "Enable Chromecast streaming while in manual offline mode",
|
||
"allowImmediateScrobbling": "Immediate Scrobbling",
|
||
"allowImmediateScrobblingDesc": "Send scrobbles to Last.fm immediately while in manual offline mode",
|
||
"allowAccumulatedScrobbling": "Accumulated Scrobbling",
|
||
"allowAccumulatedScrobblingDesc": "Queue scrobbles for later when back online",
|
||
"scrobbleTimeLimit": "Last.fm accepts scrobbles up to 2 weeks old",
|
||
"showNetworkFolders": "Show Network Folder Content",
|
||
"showNetworkFoldersDesc": "Display content from network-mounted folders (NAS, Samba, etc.) while in manual offline mode",
|
||
"checkNow": "Check now"
|
||
},
|
||
"offlineManager": {
|
||
"title": "Offline cache",
|
||
"stats": {
|
||
"totals": "{tracks} tracks · {albums} albums · {artists} artists",
|
||
"usage": "{used} of {limit}",
|
||
"unlimited": "{used} of unlimited"
|
||
},
|
||
"sort": {
|
||
"label": "Sort",
|
||
"alpha": "A–Z",
|
||
"recent": "Most recent",
|
||
"largest": "Largest first",
|
||
"smallest": "Smallest first"
|
||
},
|
||
"filter": {
|
||
"showOnlyFailed": "Show only failed"
|
||
},
|
||
"row": {
|
||
"completeNTracks": "Complete · {count} tracks",
|
||
"partialNCached": "Partial · {count} cached",
|
||
"mixedQuality": "Mixed",
|
||
"nFailed": "{count} failed",
|
||
"actions": {
|
||
"redownloadAlbum": "Re-download all tracks",
|
||
"removeAlbum": "Remove from offline",
|
||
"retryFailed": "Retry failed",
|
||
"goToAlbum": "Go to album"
|
||
}
|
||
},
|
||
"track": {
|
||
"actions": {
|
||
"redownloadTrack": "Re-download track",
|
||
"removeTrack": "Remove from offline"
|
||
}
|
||
},
|
||
"confirmRemoveAlbum": {
|
||
"title": "Remove from offline cache?",
|
||
"body": "Remove \"{album}\" from offline cache. This will free {size}."
|
||
},
|
||
"confirmRemoveTrack": {
|
||
"title": "Remove track from offline cache?",
|
||
"body": "Remove \"{title}\" from offline cache."
|
||
},
|
||
"toast": {
|
||
"redownloadingAlbum": "Re-downloading {count} tracks…",
|
||
"redownloadingTrack": "Re-downloading track…",
|
||
"removedAlbum": "Removed {album} ({size} freed)",
|
||
"removedTrack": "Removed track",
|
||
"limitTooLow": "Limit must be at least 5 GB",
|
||
"limitSaved": "Cache limit saved"
|
||
},
|
||
"limitModal": {
|
||
"title": "Cache size limit",
|
||
"helper": "Minimum 5 GB. High-quality tracks need space.",
|
||
"inputLabel": "Limit (GB)",
|
||
"editAria": "Edit cache size limit"
|
||
},
|
||
"empty": {
|
||
"title": "No offline content yet",
|
||
"body": "Mark tracks as available offline from any album or playlist.",
|
||
"cta": "Go to Favorites"
|
||
},
|
||
"singlesPseudoAlbum": "Singles & loose tracks",
|
||
"discographyHeading": "Discography",
|
||
"albumsCount": "{count} albums"
|
||
},
|
||
"performerRoles": {
|
||
"a&R": "Artists and Repertoire",
|
||
"a&RDirector": "Artists and Repertoire Director",
|
||
"aAndRCoordinator": "A&R Coordinator",
|
||
"accordion": "Accordion",
|
||
"acousticGuitar": "Acoustic Guitar",
|
||
"additionalEngineer": "Additional Engineer",
|
||
"additionalKeyboard": "Additional Keyboard",
|
||
"additionalMusic": "Additional Music",
|
||
"additionalProduction": "Additional Production",
|
||
"additionalProgrammer": "Additional Programmer",
|
||
"additionalStudioProducer": "Additional Studio Producer",
|
||
"additionalVocalist": "Additional Vocalist",
|
||
"additionalVocals": "Additional Vocals",
|
||
"arranger": "Arranger",
|
||
"artDirector": "Art Director",
|
||
"artist": "Artist",
|
||
"assistant": "Assistant",
|
||
"assistantEngineer": "Assistant Engineer",
|
||
"assistantMixer": "Assistant Mixer",
|
||
"assistantMixingEngineer": "Assistant Mixing Engineer",
|
||
"associatedPerformer": "Associated Performer",
|
||
"associatedProducer": "Associated Producer",
|
||
"author": "Author",
|
||
"backingVocals": "Backing Vocals",
|
||
"backgroundVocal": "Background Vocal",
|
||
"backgroundVocalist": "Background Vocalist",
|
||
"backgroundVocals": "Background Vocals",
|
||
"baritoneSaxophone": "Baritone Saxophone",
|
||
"bass": "Bass",
|
||
"bassGuitar": "Bass Guitar",
|
||
"celesta": "Celesta",
|
||
"cello": "Cello",
|
||
"chamberOrchestra": "Chamber Orchestra",
|
||
"choir": "Choir",
|
||
"choirArranger": "Choir Arranger",
|
||
"choirConductor": "Choir Conductor",
|
||
"coachVocals": "Coach Vocals",
|
||
"composer": "Composer",
|
||
"composerLyricist": "Composer Lyricist",
|
||
"conductor": "Conductor",
|
||
"consultant": "Consultant",
|
||
"contractor": "Contractor",
|
||
"coProducer": "Co-Producer",
|
||
"designer": "Designer",
|
||
"digitalEditingEngineer": "Digital Editing Engineer",
|
||
"doubleBass": "Double Bass",
|
||
"drum": "Drum",
|
||
"drumMachine": "Drum Machine",
|
||
"drumProgrammer": "Drum Programmer",
|
||
"drumProgramming": "Drum Programming",
|
||
"drumKit": "Drum Kit",
|
||
"drums": "Drums",
|
||
"editingEngineer": "Editing Engineer",
|
||
"electricBassGuitar": "Electric Bass Guitar",
|
||
"electricGuitar": "Electric Guitar",
|
||
"engineer": "Engineer",
|
||
"executiveProducer": "Executive Producer",
|
||
"featuredArtist": "Featured Artist",
|
||
"fiddle": "Fiddle",
|
||
"frenchHorn": "French Horn",
|
||
"glockenspiel": "Glockenspiel",
|
||
"guitar": "Guitar",
|
||
"hammondOrgan": "Hammond Organ",
|
||
"harp": "Harp",
|
||
"horn": "Horn",
|
||
"horns": "Horns",
|
||
"instrumentation": "Instrumentation",
|
||
"keyboard": "Keyboard",
|
||
"keyboards": "Keyboards",
|
||
"leadGuitar": "Lead Guitar",
|
||
"leadViolin": "Lead Violin",
|
||
"leadVocals": "Lead Vocals",
|
||
"lyricist": "Lyricist",
|
||
"mainArtist": "Main Artist",
|
||
"manager": "Manager",
|
||
"masterer": "Masterer",
|
||
"masteringEngineer": "Mastering Engineer",
|
||
"mixer": "Mixer",
|
||
"mixEngineer": "Mix Engineer",
|
||
"mixingEngineer": "Mixing Engineer",
|
||
"mixingSecondEngineer": "Mixing Second Engineer",
|
||
"music": "Music",
|
||
"musicDirector": "Music Director",
|
||
"musicEditor": "Music Editor",
|
||
"musicPublisher": "Music Publisher",
|
||
"musicSupervisor": "Music Supervisor",
|
||
"nylonStringGuitar": "Nylon String Guitar",
|
||
"orchestra": "Orchestra",
|
||
"orchestralContractor": "Orchestral Contractor",
|
||
"orchestration": "Orchestration",
|
||
"organ": "Organ",
|
||
"other": "Other",
|
||
"oud": "Oud",
|
||
"percussion": "Percussion",
|
||
"performance": "Performance",
|
||
"performer": "Performer",
|
||
"piano": "Piano",
|
||
"producer": "Producer",
|
||
"production": "Production",
|
||
"programmer": "Programmer",
|
||
"programming": "Programming",
|
||
"programmingEngineer": "Programming Engineer",
|
||
"rapVocalist": "Rap Vocalist",
|
||
"recordedby": "Recorded By",
|
||
"recordingArranger": "Recording Arranger",
|
||
"recordingEngineer": "Recording Engineer",
|
||
"recordingProducer": "Recording Producer",
|
||
"recordingSecondEngineer": "Recording Second Engineer",
|
||
"remasteringEngineer": "Remastering Engineer",
|
||
"remixer": "Remixer",
|
||
"remixingSecondEngineer": "Remixing Second Engineer",
|
||
"rhythmGuitar": "rhythmGuitar",
|
||
"samples": "Samples",
|
||
"saxophone": "Saxophone",
|
||
"secondEngineer": "Second Engineer",
|
||
"singer": "Singer",
|
||
"slideguitar&Pad": "Slide Guitar & Pad",
|
||
"songwriter": "Songwriter",
|
||
"stringArranger": "String Arranger",
|
||
"strings": "Strings",
|
||
"studioAssistant": "Studio Assistant",
|
||
"studioPersonnel": "Studio Personnel",
|
||
"synthesizer": "Synthesizer",
|
||
"synthesizerProgrammer": "Synthesizer Programmer",
|
||
"synthesizerProgramming": "Synthesizer Programming",
|
||
"technicalAssistant": "Technical Assistant",
|
||
"technicalEngineer": "Technical Engineer",
|
||
"technician": "Technician",
|
||
"trombone": "Trombone",
|
||
"trumpet": "Trumpet",
|
||
"tuba": "Tuba",
|
||
"ukulele": "Ukulele",
|
||
"unknown": "Unknown",
|
||
"vibraphone": "Vibraphone",
|
||
"viola": "Viola",
|
||
"violin": "Violin",
|
||
"vocal": "Vocal",
|
||
"vocalArranger": "Vocal Arranger",
|
||
"vocalEditingEngineer": "Vocal Editing Engineer",
|
||
"vocalEngineer": "Vocal Engineer",
|
||
"vocalProducer": "Vocal Producer",
|
||
"vocalist": "Vocalist",
|
||
"vocals": "Vocals",
|
||
"vocals&Guitar": "Vocals & Guitar",
|
||
"voice": "Voice",
|
||
"workArranger": "Work Arranger",
|
||
"writer": "Writer"
|
||
},
|
||
"placeholders": {
|
||
"search": "Search...",
|
||
"searchDevices": "Search devices...",
|
||
"searchGenres": "Search genres...",
|
||
"searchFolders": "Search folders...",
|
||
"searchPlaylists": "Search playlists...",
|
||
"searchAlbums": "Search albums...",
|
||
"searchInPage": "Search in this page...",
|
||
"searchInPlaylist": "Search in playlist...",
|
||
"filterFolders": "Filter folders...",
|
||
"myPlaylist": "My Playlist",
|
||
"addDescription": "Add a description...",
|
||
"enterFolderName": "Enter folder name",
|
||
"enterApiKey": "Enter your API key",
|
||
"enterSharedSecret": "Enter your shared secret",
|
||
"pasteToken": "Paste your ListenBrainz token",
|
||
"yearExample": "e.g., 1999",
|
||
"genreExample": "e.g., ROCK, POP"
|
||
},
|
||
"platforms": {
|
||
"appleMusic": "Apple Music",
|
||
"qobuz": "Qobuz",
|
||
"spotify": "Spotify",
|
||
"tidal": "Tidal",
|
||
"deezer": "Deezer"
|
||
},
|
||
"player": {
|
||
"nowPlaying": "Now Playing",
|
||
"controllingRemote": "Controlling: {name}",
|
||
"noQbzdFound": "No QBZ Daemons found on your network",
|
||
"noQbzdFoundHint": "Make sure qbzd is running on the target device",
|
||
"recentDaemons": "Recent",
|
||
"discoveredDaemons": "Discovered on network",
|
||
"queue": "Queue",
|
||
"upNext": "Up Next",
|
||
"ofTotal": "of",
|
||
"remaining": "left",
|
||
"history": "History",
|
||
"recentlyPlayed": "Recently Played",
|
||
"noHistoryYet": "No tracks played yet",
|
||
"historyEmpty": "No tracks played yet",
|
||
"enableInfinitePlay": "Enable Infinite Play",
|
||
"disableInfinitePlay": "Disable Infinite Play",
|
||
"infinitePlay": "Infinite Play",
|
||
"infinitePlayEnabled": "Infinite play enabled",
|
||
"infinitePlayDisabled": "Infinite play disabled",
|
||
"infinitePlayTooltip": "Infinite Play: Automatically adds similar tracks when your queue is about to end, creating an endless listening experience based on your current music.",
|
||
"infiniteBannerText": "Infinite Play is active. Similar tracks will be added automatically.",
|
||
"lyrics": "Lyrics",
|
||
"lyricsControls": {
|
||
"openControls": "Display settings",
|
||
"copyLyrics": "Copy lyrics",
|
||
"copySuccess": "Lyrics copied",
|
||
"copyError": "Failed to copy lyrics",
|
||
"title": "Display",
|
||
"autoFollow": "Auto-follow",
|
||
"font": "Font",
|
||
"fonts": {
|
||
"system": "System",
|
||
"lineSeedJp": "LINE Seed JP",
|
||
"montserrat": "Montserrat",
|
||
"notoSans": "Noto Sans",
|
||
"sourceSans3": "Source Sans 3"
|
||
},
|
||
"size": "Size",
|
||
"sizes": {
|
||
"small": "S",
|
||
"medium": "M",
|
||
"large": "L",
|
||
"xl": "XL"
|
||
},
|
||
"dimming": "Dimming",
|
||
"dimmingLevels": {
|
||
"off": "Off",
|
||
"soft": "Soft",
|
||
"strong": "Strong"
|
||
},
|
||
"activeColor": "Active color",
|
||
"useThemeColor": "Theme",
|
||
"uppercase": "Uppercase",
|
||
"reset": "Reset"
|
||
},
|
||
"noLyrics": "No lyrics available",
|
||
"fetchingLyrics": "Fetching lyrics...",
|
||
"trackUnavailable": "Track no longer available in Qobuz library",
|
||
"credits": "Credits",
|
||
"trackInfo": "Track Info",
|
||
"suggestions": "Suggestions",
|
||
"songRadio": "Song Radio",
|
||
"basedOnTrack": "Based on this track",
|
||
"radioExperimental": "Song Radio - Experimental QBZ feature",
|
||
"radioExperimentalTooltip": "Radio is an experimental QBZ feature that generates a playlist based on the current track.",
|
||
"recommendedTracks": "Recommended",
|
||
"noTrackSelected": "No track selected",
|
||
"shuffle": "Shuffle",
|
||
"repeat": "Repeat",
|
||
"repeatAll": "Repeat All",
|
||
"repeatOne": "Repeat One",
|
||
"repeatOff": "Repeat Off",
|
||
"previous": "Previous",
|
||
"next": "Next",
|
||
"play": "Play",
|
||
"pause": "Pause",
|
||
"volume": "Volume",
|
||
"mute": "Mute",
|
||
"unmute": "Unmute",
|
||
"volumeUp": "Increase volume",
|
||
"volumeDown": "Decrease volume",
|
||
"volumeLockedHw": "Volume locked at 100% — ALSA Direct hw: (adjust at DAC/hardware level)",
|
||
"clearQueue": "Clear Queue",
|
||
"queueEmpty": "Queue is empty",
|
||
"queueEmptyDescription": "Search for music or browse your library to add tracks.",
|
||
"playNext": "Play Next",
|
||
"addToQueue": "Add to Queue",
|
||
"removeFromQueue": "Remove from Queue",
|
||
"saveQueue": "Save as Playlist",
|
||
"searchQueue": "Search in queue...",
|
||
"sleepTimer": {
|
||
"title": "Sleep Timer",
|
||
"tooltipIdle": "Sleep Timer",
|
||
"tooltipActive": "Sleep timer · {remaining} left",
|
||
"stopAfter": "Stop playback after:",
|
||
"activeLabel": "Stops in",
|
||
"set": "Set Timer",
|
||
"edit": "Edit",
|
||
"cancel": "Cancel Timer",
|
||
"customMinutes": "Minutes",
|
||
"preset": {
|
||
"minutes": "{minutes} min",
|
||
"hours": "{hours} hr",
|
||
"custom": "Custom…"
|
||
}
|
||
},
|
||
"noTracksMatch": "No tracks match \"{query}\"",
|
||
"noTrackPlaying": "No track playing",
|
||
"castToDevice": "Cast to device",
|
||
"connectedTo": "Connected To",
|
||
"castingManage": "Casting - Click to manage",
|
||
"qobuzConnect": "Qobuz Connect",
|
||
"qobuzConnectManage": "Qobuz Connect - Click to manage",
|
||
"miniPlayer": "Mini Player",
|
||
"moreControls": "More controls",
|
||
"fullScreen": "Immersive Mode",
|
||
"exitFullScreen": "Exit Immersive Mode",
|
||
"maximize": "Maximize",
|
||
"maximizeWindow": "Maximize Window",
|
||
"restore": "Restore",
|
||
"restoreWindow": "Restore Window",
|
||
"minimize": "Minimize",
|
||
"exitImmersive": "Exit Immersive",
|
||
"exitImmersiveWithKey": "Exit Immersive ({key})",
|
||
"dragWindow": "Move Window",
|
||
"normalizationOff": "Volume Normalization: Off",
|
||
"normalizationOn": "Volume Normalization: On",
|
||
"normalizationApplied": "Volume Normalization: Active",
|
||
"miniSurfaceMicro": "Micro",
|
||
"miniSurfaceCompact": "Compact",
|
||
"miniSurfaceArtwork": "Artwork",
|
||
"miniSurfaceQueue": "Queue",
|
||
"miniSurfaceLyrics": "Lyrics",
|
||
"miniExpand": "Expand to Full App",
|
||
"miniClose": "Close Mini Player",
|
||
"miniWindowControls": "Mini Player Controls",
|
||
"miniAlwaysOnTopEnable": "Always on Top",
|
||
"miniAlwaysOnTopDisable": "Disable Always on Top",
|
||
"miniAlwaysOnTopLimited": "Always-on-top is limited by your window manager",
|
||
"fullscreenWithKey": "Fullscreen ({key})",
|
||
"exitFullscreenWithKey": "Exit Fullscreen ({key})",
|
||
"closeApp": "Close App",
|
||
"windowControls": "Window Controls"
|
||
},
|
||
"playlist": {
|
||
"tracks": "tracks",
|
||
"track": "track",
|
||
"createNew": "Create New...",
|
||
"createPlaylist": "Create Playlist",
|
||
"createNewPlaylist": "Create new playlist",
|
||
"newPlaylist": "New Playlist",
|
||
"editPlaylist": "Edit Playlist",
|
||
"addToPlaylist": "Add to Playlist",
|
||
"deletePlaylist": "Delete Playlist",
|
||
"renamePlaylist": "Rename Playlist",
|
||
"allPlaylists": "All Playlists",
|
||
"myPlaylists": "My Playlists",
|
||
"qobuzPlaylists": "Qobuz™ Playlists",
|
||
"emptyPlaylist": "This playlist is empty",
|
||
"addTracks": "Add Tracks",
|
||
"removeTracks": "Remove",
|
||
"playlistName": "Playlist Name",
|
||
"name": "Name",
|
||
"description": "Description",
|
||
"descriptionOptional": "Description (optional)",
|
||
"public": "Public",
|
||
"private": "Private",
|
||
"import": "Import",
|
||
"manage": "Manage playlists",
|
||
"searchPlaylists": "Search playlists",
|
||
"allHidden": "All playlists are hidden",
|
||
"findReplacement": "Find Available Version",
|
||
"searchingFor": "Searching for",
|
||
"noReplacementsFound": "No available versions found",
|
||
"tryDifferentSearch": "Try a different search query",
|
||
"searchToFindReplacement": "Search to find a replacement track",
|
||
"replaceTrack": "Replace Track",
|
||
"lookForAvailableVersion": "Look for available version",
|
||
"trackReplaced": "Track replaced successfully",
|
||
"trackReplaceFailed": "Failed to replace track",
|
||
"searchButton": "Search",
|
||
"cancel": "Cancel",
|
||
"loading": "Searching...",
|
||
"preview": "Preview",
|
||
"choosePlaylist": "Choose playlist",
|
||
"addingTracks": "Adding {count} {type}track(s)",
|
||
"local": "local ",
|
||
"trackCount": "{count} tracks",
|
||
"noPlaylistsFound": "No playlists found",
|
||
"morePlaylists": "{count} more playlist(s)...",
|
||
"folder": "Folder",
|
||
"folders": "Folders",
|
||
"noFolder": "No folder",
|
||
"makePublic": "Make playlist public",
|
||
"hideFromSidebar": "Hide from sidebar",
|
||
"showInSidebar": "Show in sidebar",
|
||
"moveToFolder": "Move to folder",
|
||
"moveToRoot": "Move to root",
|
||
"noFoldersMatch": "No folders match",
|
||
"noFoldersYet": "No folders yet",
|
||
"customArtwork": "Custom artwork",
|
||
"setCustomArtwork": "Set custom artwork",
|
||
"removeCustomArtwork": "Remove custom artwork",
|
||
"visibility": "Visibility",
|
||
"createAndAdd": "Create & Add",
|
||
"playlistWithTracks": "{name} ({count} tracks)",
|
||
"makeOfflineConfirmTitle": "Make playlist available offline",
|
||
"makeOfflineConfirmDesc": "This will cache {count} tracks for offline listening. This may use significant disk space and take a while to complete.",
|
||
"preparingPlaylistOffline": "Preparing {count} tracks from \"{name}\" for offline listening...",
|
||
"copyToLibrary": "Copy to library",
|
||
"followOnQobuz": "Follow on Qobuz",
|
||
"unfollowOnQobuz": "Unfollow on Qobuz",
|
||
"enterName": "Please enter a playlist name",
|
||
"selectPlaylist": "Please select a playlist",
|
||
"duplicates": {
|
||
"title": "Some of these tracks were already added",
|
||
"description": "This playlist already contains {duplicateCount} of the {totalCount} tracks you're adding. Add only the new ones, or add everything including duplicates.",
|
||
"addAll": "Add all tracks",
|
||
"addNew": "Add only new tracks",
|
||
"adding": "Adding..."
|
||
},
|
||
"suggestSongs": "Suggest songs for this playlist",
|
||
"suggestionsLargePlaylist": "This playlist has many tracks. Tap the button to generate suggestions.",
|
||
"label": "Playlist",
|
||
"playCount": "Play count",
|
||
"playlists": "playlists",
|
||
"dragPlaylists": "Drag playlists to reorder them",
|
||
"dropOntoFolder": "or drop onto a folder to move.",
|
||
"newFolder": "New folder",
|
||
"folderNamePlaceholder": "Enter folder name",
|
||
"suggestedSongs": "Suggested songs"
|
||
},
|
||
"playlistImport": {
|
||
"title": "Import Playlist",
|
||
"urlLabel": "Playlist URL",
|
||
"allowedSources": "Allowed sources",
|
||
"playlistName": "Playlist name",
|
||
"folder": "Folder",
|
||
"noFolder": "No folder",
|
||
"fetchPlaylist": "Fetch playlist",
|
||
"fetching": "Fetching...",
|
||
"importAction": "Import",
|
||
"importing": "Importing...",
|
||
"tracksFound": "Found {count} tracks from {provider}.",
|
||
"progress": "Conversion progress",
|
||
"summary": "Summary",
|
||
"playlistLabel": "Playlist: {name}",
|
||
"tracksMatched": "Tracks matched: {matched} / {total}",
|
||
"skipped": "Skipped: {count}",
|
||
"matchingTracks": "Matching tracks: {current} / {total} ({matched} found)",
|
||
"matchingPhase": "Searching Qobuz catalog...",
|
||
"creatingPhase": "Creating playlist...",
|
||
"addingPhase": "Adding tracks to playlist...",
|
||
"addingProgress": "Adding tracks: {current} / {total}",
|
||
"partsCreated": "Split into {count} playlists (Qobuz 2000-track limit)"
|
||
},
|
||
"playlistManager": {
|
||
"heading": "Playlist manager",
|
||
"switchToFlat": "Flat view",
|
||
"switchToFolders": "Folder view",
|
||
"emptyFolder": "Empty folder"
|
||
},
|
||
"purchases": {
|
||
"title": "Purchases",
|
||
"tabs": {
|
||
"albums": "Albums",
|
||
"tracks": "Tracks"
|
||
},
|
||
"search": "Search purchases...",
|
||
"empty": "No purchases yet. Visit Qobuz to buy music.",
|
||
"emptyTracks": "No individually purchased tracks.",
|
||
"unavailable": "This album is no longer available for download.",
|
||
"downloadAll": "Download All",
|
||
"downloadTrack": "Download track",
|
||
"chooseFolder": "Choose download folder",
|
||
"selectFormat": "Select format",
|
||
"format": "Format",
|
||
"purchasedOn": "Purchased:",
|
||
"addToLibrary": "Add to Local Library",
|
||
"addToLibraryDesc": "Add the downloaded folder to your local music library.",
|
||
"addToLibrarySuccess": "Folder added to local library.",
|
||
"addToLibraryError": "Failed to add folder to library.",
|
||
"downloading": "Downloading...",
|
||
"downloadProgress": "Downloading {current}/{total}...",
|
||
"complete": "Download complete",
|
||
"failed": "Download failed",
|
||
"cancelDownload": "Cancel download",
|
||
"downloadCancelled": "Download cancelled ({completed}/{total})",
|
||
"filter": {
|
||
"all": "All",
|
||
"downloaded": "Downloaded",
|
||
"notDownloaded": "Not Downloaded",
|
||
"hires": "Hi-Res",
|
||
"availability": "Availability",
|
||
"hideUnavailable": "Hide unavailable",
|
||
"downloads": "Downloads",
|
||
"hideDownloaded": "Hide downloaded on this computer"
|
||
},
|
||
"sort": {
|
||
"date": "Purchase Date",
|
||
"artist": "Artist",
|
||
"album": "Album",
|
||
"quality": "Quality"
|
||
},
|
||
"formats": {
|
||
"flac_hires_192": "FLAC 24-bit / 192 kHz",
|
||
"flac_hires_96": "FLAC 24-bit / 96 kHz",
|
||
"flac_cd": "FLAC 16-bit / 44.1 kHz",
|
||
"mp3_320": "MP3 320 kbps"
|
||
},
|
||
"tracksCount": "{count} tracks",
|
||
"sortLabel": "Sort",
|
||
"table": {
|
||
"title": "Title"
|
||
},
|
||
"group": {
|
||
"off": "Group: Off",
|
||
"alpha": "Group: A-Z",
|
||
"artist": "Group: Artist",
|
||
"album": "Group: Album",
|
||
"name": "Group: Name",
|
||
"optionOff": "Off",
|
||
"optionAlpha": "Alphabetical (A-Z)",
|
||
"optionArtist": "Artist",
|
||
"optionAlbum": "Album",
|
||
"optionName": "Name (A-Z)"
|
||
},
|
||
"view": {
|
||
"list": "List view",
|
||
"grid": "Grid view"
|
||
},
|
||
"regionNotice": "Purchases availability depends on your Qobuz account and region. If unavailable, this may be expected.",
|
||
"errors": {
|
||
"noAlbum": "Cannot download: track has no associated album.",
|
||
"noFormats": "No download formats available for this track.",
|
||
"downloadFailed": "Failed to start download. Please try again."
|
||
},
|
||
"loadFailed": "No purchases available."
|
||
},
|
||
"qconnect": {
|
||
"title": "Qobuz Connect",
|
||
"statusConnected": "Connected",
|
||
"statusDisconnected": "Disconnected",
|
||
"turnOn": "Turn On",
|
||
"turnOff": "Turn Off",
|
||
"endpointLabel": "Endpoint",
|
||
"lastErrorLabel": "Last error",
|
||
"queueStateTitle": "Remote Queue",
|
||
"queueVersionLabel": "Version",
|
||
"queueItemsLabel": "Queue items",
|
||
"autoplayModeLabel": "Autoplay",
|
||
"autoplayItemsLabel": "Autoplay items",
|
||
"shuffleModeLabel": "Shuffle",
|
||
"rendererStateTitle": "Renderer",
|
||
"playingStateLabel": "Playing state",
|
||
"volumeLabel": "Volume",
|
||
"mutedLabel": "Muted",
|
||
"currentTrackLabel": "Current track",
|
||
"nextTrackLabel": "Next track",
|
||
"positionMsLabel": "Position (ms)",
|
||
"queuePreviewTitle": "Queue preview",
|
||
"notAvailable": "N/A",
|
||
"devDiagnosticsTitle": "Dev Diagnostics",
|
||
"diagnosticsEmpty": "No events yet.",
|
||
"copyLogs": "Copy logs",
|
||
"clearLogs": "Clear logs",
|
||
"logsCopied": "Qobuz Connect logs copied",
|
||
"admissionBlockedLocalLibrary": "Local Library tracks cannot be sent to Qobuz Connect queue.",
|
||
"admissionBlockedPlex": "Plex tracks cannot be sent to Qobuz Connect queue.",
|
||
"admissionBlockedUnknown": "Track source is not eligible for Qobuz Connect queue.",
|
||
"admissionCheckFailed": "Could not validate Qobuz Connect queue admission.",
|
||
"handoffContinueLocallyHint": "Continue playback locally or select streamable Qobuz tracks to send.",
|
||
"streamNotEligible": "This track is not eligible for Qobuz Connect queue.",
|
||
"remoteQueuedNext": "Queued on Qobuz Connect to play next.",
|
||
"remoteQueuedLater": "Added to Qobuz Connect queue.",
|
||
"remoteQueueFailed": "Failed to update Qobuz Connect queue.",
|
||
"sessionTitle": "Session",
|
||
"sessionUuid": "Session UUID",
|
||
"activeRenderer": "Active renderer",
|
||
"renderersLabel": "Renderers",
|
||
"noRenderers": "No renderers",
|
||
"controllerTitle": "Controller",
|
||
"play": "Play",
|
||
"pause": "Pause",
|
||
"stop": "Stop",
|
||
"muteLabel": "Mute",
|
||
"unmuteLabel": "Unmute",
|
||
"setActiveRenderer": "Set as active",
|
||
"thisDevice": "This device",
|
||
"experimentalWarning": "Qobuz Connect is experimental. Bugs are likely — please report them in the corresponding section.",
|
||
"localLibraryWarning": "While Qobuz Connect is active, the local library is not compatible due to Qobuz Connect's incompatibility with non-Qobuz content."
|
||
},
|
||
"qobuzMixes": {
|
||
"title": "DailyQ",
|
||
"subtitle": "Based on your recent listening.",
|
||
"cardDesc": "Elevate your day with a customized selection of music.",
|
||
"actions": {
|
||
"saveAsPlaylist": "Save as playlist"
|
||
},
|
||
"form": {
|
||
"limit": "Limit",
|
||
"listenedTrackIds": "Listened track IDs (comma-separated)",
|
||
"listenedTrackIdsPlaceholder": "123,456,789",
|
||
"tracksToAnalyse": "Tracks to analyse (one row: trackId,artistId,genreId,labelId)",
|
||
"tracksToAnalysePlaceholder": "123,45,78,90",
|
||
"prefillFromRecents": "Use QBZ recent log",
|
||
"run": "Fetch Suggestions",
|
||
"probeRaw": "Probe Raw Response",
|
||
"rawResponse": "Raw response"
|
||
},
|
||
"algorithmInfo": "Powered by the Qobuz™ suggestion algorithm, curated from your local listening history.",
|
||
"result": {
|
||
"algorithm": "Algorithm",
|
||
"count": "{count} tracks",
|
||
"empty": "No suggested tracks returned.",
|
||
"emptyHint": "Tried fallback payload strategies. This account/seed set may currently return no mix candidates.",
|
||
"unknownArtist": "Unknown artist"
|
||
},
|
||
"errors": {
|
||
"fetchFailed": "Failed to fetch dynamic suggestions.",
|
||
"insufficientHistory": "Not enough listening history to generate suggestions. Play some music and check back later.",
|
||
"prefillFailed": "Failed to load recent data from QBZ logs.",
|
||
"rawProbeFailed": "Failed to fetch raw endpoint response.",
|
||
"playlistsLoadFailed": "Failed to load your playlists.",
|
||
"emptyPlaylist": "No tracks available to save as playlist."
|
||
}
|
||
},
|
||
"quality": {
|
||
"mp3": "MP3 320kbps",
|
||
"cdQuality": "CD Quality",
|
||
"cdQualityDesc": "16-bit / 44.1kHz FLAC",
|
||
"hiRes": "Hi-Res",
|
||
"hiResDesc": "24-bit up to 96kHz FLAC",
|
||
"ultraHiRes": "Hi-Res 24-bit",
|
||
"ultraHiResDesc": "24-bit up to 192kHz FLAC",
|
||
"flac": "FLAC",
|
||
"bitDepth": "{depth}-bit",
|
||
"sampleRate": "{rate} kHz",
|
||
"lossless": "Lossless",
|
||
"max": "Max",
|
||
"tooltip": {
|
||
"source": "Source",
|
||
"output": "Output",
|
||
"resampled": "Resampled by system",
|
||
"qualityAdjusted": "Quality adjusted for device compatibility — bit-perfect, no resampling",
|
||
"fix": "Enable DAC Passthrough or Exclusive Mode in Settings",
|
||
"plughwFallback": "Resampled by ALSA (plughw)",
|
||
"plughwFix": "DAC doesn't support this sample rate natively. Pick a lower-rate source or a DAC with broader rate support.",
|
||
"bitPerfect": "Bit-perfect: direct hardware output"
|
||
},
|
||
"stereo": "Stereo",
|
||
"mono": "Mono"
|
||
},
|
||
"qualityFallback": {
|
||
"title": "Streaming issue",
|
||
"body": "Qobuz is having trouble serving \"{track}\". All quality levels failed. Try at the lowest available quality?",
|
||
"tryLower": "Try lower quality",
|
||
"skip": "Skip track",
|
||
"rememberChoice": "Remember my choice",
|
||
"autoRetrying": "Retrying at lower quality...",
|
||
"autoSkipping": "Skipping track (server issue)..."
|
||
},
|
||
"radio": {
|
||
"albumRadio": "Album Radio",
|
||
"creatingAlbumRadio": "Creating album radio...",
|
||
"createRadio": "Create radio",
|
||
"qbzRadio": "QBZ Radio",
|
||
"qobuzRadio": "Qobuz Radio",
|
||
"creating": "Creating radio..."
|
||
},
|
||
"releaseWatch": {
|
||
"tabs": {
|
||
"artists": "Artists",
|
||
"labels": "Labels",
|
||
"awards": "Awards"
|
||
},
|
||
"empty": {
|
||
"artists": "No new releases from the artists you follow.",
|
||
"labels": "No new releases from the labels you follow.",
|
||
"awards": "No new releases from the awards you follow."
|
||
}
|
||
},
|
||
"remoteControlWizard": {
|
||
"steps": {
|
||
"welcome": "Welcome",
|
||
"enable": "Enable",
|
||
"https": "HTTPS",
|
||
"certificate": "Certificate",
|
||
"pair": "Pair",
|
||
"done": "Done"
|
||
},
|
||
"welcome": {
|
||
"title": "Remote Control Setup",
|
||
"subtitle": "Control QBZ from another device",
|
||
"intro": "This guide will help you set up remote control so you can control QBZ from your phone, tablet, or another device on the same network.",
|
||
"feature1": "Control playback (play, pause, skip)",
|
||
"feature2": "Manage your queue",
|
||
"feature3": "Search and add tracks",
|
||
"feature4": "Install as PWA on your device",
|
||
"start": "Get Started",
|
||
"screenshot": "[Screenshot: Remote control PWA on mobile]"
|
||
},
|
||
"enable": {
|
||
"title": "Enable Remote Control",
|
||
"subtitle": "Turn on the local API server",
|
||
"step1": "Go to Settings → Remote Control",
|
||
"step2": "Toggle \"Enable Remote Control\" ON",
|
||
"step3": "Note the port number (default: 8182)",
|
||
"portNote": "The default port is 8182. You can change it if needed, but you'll need to update it during pairing.",
|
||
"screenshot": "[Screenshot: Settings > Remote Control toggle]"
|
||
},
|
||
"https": {
|
||
"title": "Enable Secure Connection",
|
||
"subtitle": "Required for PWA installation",
|
||
"intro": "HTTPS is required to install the remote control as a Progressive Web App (PWA) on your phone or tablet.",
|
||
"step1": "Enable \"Secure Connection (HTTPS)\"",
|
||
"step2": "QBZ will generate a self-signed certificate",
|
||
"step3": "A certificate URL will appear",
|
||
"whyRequired": "Why HTTPS?",
|
||
"whyReason1": "Modern browsers require HTTPS for PWA installation",
|
||
"whyReason2": "Secure connection protects your pairing token",
|
||
"whyReason3": "Required for service workers and offline features",
|
||
"screenshot": "[Screenshot: HTTPS toggle enabled]"
|
||
},
|
||
"certificate": {
|
||
"title": "Install Certificate",
|
||
"subtitle": "Trust the QBZ certificate on your device",
|
||
"intro": "Since QBZ uses a self-signed certificate, you need to install and trust it on your controlling device.",
|
||
"step1": "Copy the certificate URL from QBZ settings",
|
||
"step2": "Open the URL on your controlling device's browser",
|
||
"step3": "Download and install the certificate",
|
||
"step4": "Trust the certificate for web browsing",
|
||
"iosTitle": "iOS (iPhone/iPad)",
|
||
"iosStep1": "Open the certificate URL in Safari",
|
||
"iosStep2": "Tap \"Allow\" to download the profile",
|
||
"iosStep3": "Go to Settings → Profile Downloaded → Install",
|
||
"iosStep4": "Go to Settings → General → About → Certificate Trust Settings",
|
||
"iosStep5": "Enable full trust for the QBZ certificate",
|
||
"macosTitle": "macOS",
|
||
"macosStep1": "Open the certificate URL in Safari",
|
||
"macosStep2": "Open the downloaded .crt file",
|
||
"macosStep3": "Keychain Access will open - add to login keychain",
|
||
"macosStep4": "Double-click the certificate, expand Trust",
|
||
"macosStep5": "Set \"When using this certificate\" to \"Always Trust\"",
|
||
"windowsTitle": "Windows",
|
||
"windowsStep1": "Open the certificate URL in any browser",
|
||
"windowsStep2": "Open the downloaded .crt file",
|
||
"windowsStep3": "Click \"Install Certificate...\"",
|
||
"windowsStep4": "Select \"Local Machine\" then \"Next\"",
|
||
"windowsStep5": "Select \"Place all certificates in: Trusted Root Certification Authorities\"",
|
||
"windowsStep6": "Finish the wizard and confirm",
|
||
"androidTitle": "Android",
|
||
"androidStep1": "Open the certificate URL in Chrome",
|
||
"androidStep2": "Open the downloaded .crt file",
|
||
"androidStep3": "Enter a name (e.g., \"QBZ\")",
|
||
"androidStep4": "Select \"VPN and apps\" or \"Wi-Fi\" as usage type",
|
||
"androidStep5": "Tap OK to install",
|
||
"screenshot": "[Screenshot: Certificate URL in QBZ settings]"
|
||
},
|
||
"pair": {
|
||
"title": "Pair Your Device",
|
||
"subtitle": "Connect to QBZ",
|
||
"intro": "Now connect your controlling device to QBZ using the QR code or manual entry.",
|
||
"qrMethod": "QR Code (Recommended)",
|
||
"qrStep1": "Click \"Show QR\" in QBZ settings",
|
||
"qrStep2": "Open the QBZ Control URL on your device",
|
||
"qrStep3": "Scan the QR code to auto-fill connection details",
|
||
"manualMethod": "Manual Entry",
|
||
"manualStep1": "Note the Local URL shown in QBZ",
|
||
"manualStep2": "Open this URL on your controlling device",
|
||
"manualStep3": "Enter the URL and token manually",
|
||
"troubleshooting": "If connection fails:",
|
||
"trouble1": "Make sure both devices are on the same network",
|
||
"trouble2": "Check that the firewall allows port 8182",
|
||
"trouble3": "Verify HTTPS is enabled and certificate is trusted",
|
||
"screenshot": "[Screenshot: QR code pairing screen]"
|
||
},
|
||
"done": {
|
||
"title": "Setup Complete!",
|
||
"subtitle": "You can now control QBZ remotely",
|
||
"pwaHint": "For the best experience, install QBZ Control as a PWA:",
|
||
"pwaStep1": "Open the control URL on your device",
|
||
"pwaStep2": "Use \"Add to Home Screen\" or \"Install App\"",
|
||
"pwaStep3": "Launch from your home screen for fullscreen experience",
|
||
"close": "Close"
|
||
},
|
||
"buttons": {
|
||
"next": "Next",
|
||
"back": "Back",
|
||
"close": "Close"
|
||
}
|
||
},
|
||
"reportIssue": {
|
||
"title": "Report an issue",
|
||
"intro": "To make bug and issue resolution easier, it's recommended to share the application logs. We have been careful to mask the logs we send so no sensitive data is included. The process is manual, never automatic, so you can verify what is being shared.",
|
||
"goToLogs": "Go to logs",
|
||
"createIssue": "Create issue report",
|
||
"hideNextTime": "Do not show this again, you can always access the log screen on Settings > Developer Mode > View logs"
|
||
},
|
||
"ribbon": {
|
||
"albumOfTheWeek": "Album of the Week",
|
||
"qobuzissime": "Qobuzissime"
|
||
},
|
||
"search": {
|
||
"title": "Search",
|
||
"placeholder": "Search albums, artists, tracks...",
|
||
"all": "All",
|
||
"albums": "Albums",
|
||
"tracks": "Tracks",
|
||
"artists": "Artists",
|
||
"noResults": "No results found",
|
||
"searching": "Searching...",
|
||
"recentSearches": "Recent Searches",
|
||
"clearHistory": "Clear History",
|
||
"startTyping": "Start typing to search Qobuz™",
|
||
"composer": "Composer",
|
||
"label": "Label",
|
||
"mainArtist": "Main Artist",
|
||
"mostPopular": "Most popular",
|
||
"noAlbumsFor": "No albums found for \"{query}\"",
|
||
"noTracksFor": "No tracks found for \"{query}\"",
|
||
"noArtistsFor": "No artists found for \"{query}\"",
|
||
"noPlaylistsFor": "No playlists found for \"{query}\"",
|
||
"performer": "Performer",
|
||
"playlists": "Playlists",
|
||
"releaseName": "Release Name",
|
||
"viewAll": "View all",
|
||
"viewMore": "View more"
|
||
},
|
||
"settings": {
|
||
"title": "Settings",
|
||
"account": {
|
||
"title": "Account",
|
||
"loggedInAs": "Logged in as",
|
||
"subscription": "Subscription",
|
||
"validUntil": "Valid until {date}",
|
||
"logout": "Logout",
|
||
"login": "Login"
|
||
},
|
||
"audio": {
|
||
"title": "Audio",
|
||
"streamingQuality": "Streaming Quality",
|
||
"streamingQualityDesc": "Maximum quality for streaming and playback cache",
|
||
"qualityChangedCacheCleared": "Quality changed. Playback cache cleared.",
|
||
"outputDevice": "Output Device",
|
||
"outputDeviceDesc": "Select your preferred audio output device. Devices shown are from the selected backend.",
|
||
"systemDefaultIs": "System Default is: {device}",
|
||
"audioDevice": "Audio Device",
|
||
"audioDeviceDesc": "Select your preferred audio output device. Devices shown are from the selected backend.",
|
||
"exclusiveMode": "Exclusive Mode",
|
||
"exclusiveModeDesc": "Lock audio device for exclusive use",
|
||
"exclusiveModeNotAvailable": "Exclusive mode is only available with ALSA Direct backend. PipeWire and PulseAudio are multiplexed audio servers and cannot provide true exclusive access.",
|
||
"exclusiveModeHelp": "ALSA Direct only. Locks the audio device so no other application can use it. Prevents system sounds from interfering with playback. Not available with PipeWire/PulseAudio since they are multiplexed audio servers.",
|
||
"exclusiveModeMacosDesc": "Lock audio device for exclusive use and automatically adjust sample rate for bit-perfect playback",
|
||
"exclusiveModeMacosHelp": "Prevents system sounds/other apps from interfering with playback and switches the sample rate of the output device to match playback using CoreAudio.",
|
||
"exclusiveModeMacosAvailable": "Exclusive mode is available with System Audio on macOS.",
|
||
"exclusiveModeUnavailableMultiplexed": "Exclusive mode is only available with ALSA Direct or macOS System Audio. PipeWire and PulseAudio are multiplexed audio servers and cannot provide true exclusive access.",
|
||
"exclusiveModeUnavailableGeneric": "Exclusive mode is only available with ALSA Direct or macOS System Audio.",
|
||
"dacPassthrough": "DAC Passthrough",
|
||
"dacPassthroughDesc": "Bypass system mixer for bit-perfect output",
|
||
"dacPassthroughNote": "Refers to decoded audio content. DAC displays may show transport format, not content resolution.",
|
||
"dacPassthroughDisabledDesc": "DAC Passthrough uses pw-metadata to force PipeWire sample rates. It is only compatible with the PipeWire backend.",
|
||
"dacPassthroughExtendedDesc": "When enabled, overrides the quality setting above if your audio device doesn't support the selected sample rate. Prevents resampling to guarantee bit-perfect playback.",
|
||
"dacPassthroughHelp": "PipeWire only. Uses pw-metadata to set clock.force-rate, forcing PipeWire to switch its graph sample rate to match each track. Without this, PipeWire resamples everything to its default rate (usually 48kHz). When enabled, a 96kHz track plays at native 96kHz. Also overrides the quality setting if your DAC doesn't support the track's rate.",
|
||
"pwForceBitperfect": "Force Bit-Perfect (Experimental)",
|
||
"pwForceBitperfectHelp": "Requires DAC Passthrough. In addition to forcing the sample rate, this also forces PipeWire's quantum (buffer size) to match the track. This provides the most bit-perfect playback possible through PipeWire, but may cause audio glitches on some systems. The rate and quantum are reset when playback stops so other apps aren't affected.",
|
||
"pwForceBitperfectDesc": "Forces PipeWire quantum and sample rate to match the track, resetting on stop. Requires DAC Passthrough.",
|
||
"pwForceBitperfectNote": "Experimental. May cause audio glitches on some systems. Only affects PipeWire backend.",
|
||
"allowQualityFallback": "Allow Quality Fallback",
|
||
"allowQualityFallbackDesc": "When enabled, automatically tries a lower quality tier if the requested one is unavailable. When disabled, playback or downloads fail instead of silently downgrading.",
|
||
"allowQualityFallbackHelp": "Off by default. If Qobuz can't serve Hi-Res for a track, QBZ will report an error instead of quietly falling back to CD quality. Enable this if you prefer uninterrupted playback over strict quality guarantees.",
|
||
"skipSinkSwitch": "Lock Output Device",
|
||
"skipSinkSwitchDesc": "Prevents QBZ from changing the system default sink between tracks. Use this if you route audio through JACK, qjackctl, or a DAW.",
|
||
"skipSinkSwitchHelp": "When enabled, QBZ will not call pactl set-default-sink on stream creation. This preserves any external audio routing you have configured (e.g., JACK, qjackctl, Reaper). Incompatible with DAC Passthrough.",
|
||
"skipSinkSwitchNote": "External routing mode. QBZ will not change the system audio output device. Make sure your routing is configured before playback.",
|
||
"syncAudioOnStartup": "Sync audio settings on startup",
|
||
"syncAudioOnStartupDesc": "Reload audio configuration from database when the app starts. Enable if your audio device or settings appear incorrect after launching.",
|
||
"audioBackend": "Audio Backend",
|
||
"audioBackendDesc": "Choose audio system: Auto (recommended), PipeWire (modern), ALSA Direct (bit-perfect, exclusive), or PulseAudio (legacy).",
|
||
"currentSampleRate": "Current Sample Rate",
|
||
"noActivePlayback": "No active playback",
|
||
"loadingDevices": "Loading devices...",
|
||
"loadingAudioDevices": "Loading audio devices...",
|
||
"parsingHardware": "Parsing hardware information",
|
||
"limitQualityToDevice": "Limit Quality to Device",
|
||
"limitQualityToDeviceDesc": "When enabled, limits streaming quality to your DAC's maximum sample rate. Prevents requesting formats your device can't play natively.",
|
||
"maxSampleRate": "Maximum Sample Rate",
|
||
"maxSampleRateDesc": "Select your DAC's maximum supported sample rate. Tracks above this rate will be requested at a lower quality from Qobuz.",
|
||
"refreshDevices": "Refresh device list",
|
||
"noDevicesFound": "No devices found",
|
||
"alsaPlugin": "ALSA Plugin",
|
||
"alsaPluginDesc": "hw: Bit-perfect, exclusive. plughw: Auto-convert. pcm: Most compatible.",
|
||
"hardwareVolume": "Enable Hardware Volume Control",
|
||
"hardwareVolumeDesc": "Experimental: Controls DAC volume via ALSA mixer. Some DACs don't support this - disable for maximum compatibility. If it fails, playback continues normally.",
|
||
"helpBitPerfect": "Help with bit-perfect device detection",
|
||
"flatpakWarningTitle": "Flatpak Limitation:",
|
||
"flatpakWarningDesc": "PipeWire cannot guarantee bit-perfect playback in sandboxed environments due to daemon access restrictions.",
|
||
"flatpakRecommended": "Recommended:",
|
||
"flatpakRecommendedDesc": "Switch to ALSA Direct backend for true bit-perfect audio.",
|
||
"bitPerfectHelp": "Help with bit-perfect device detection",
|
||
"bitPerfectDetection": "Bit-perfect Device Detection",
|
||
"isInstalled": "is installed",
|
||
"isNotInstalled": "is not installed",
|
||
"alsaUtilsDesc": "The alsa-utils package provides hardware enumeration tools that QBZ uses to detect bit-perfect capable devices (hw:X,Y).",
|
||
"alsaUtilsNotInstalled": "Without it, only generic ALSA devices are shown, and you won't see the BP badge for true bit-perfect outputs.",
|
||
"systemConfigured": "Your system is properly configured for bit-perfect device detection.",
|
||
"deviceNotListed": "If you don't see your device listed as bit-perfect, ensure it's connected and recognized by your system.",
|
||
"resetTitle": "Reset Audio & Playback Settings",
|
||
"resetDesc": "Restores all audio and playback settings to their factory defaults. Useful if you experience audio issues.",
|
||
"resetButton": "Reset Settings",
|
||
"resetConfirmTitle": "Reset Audio & Playback Settings?",
|
||
"resetConfirmDesc": "This will reset all audio output, backend, and playback settings to defaults. Playback will be stopped.",
|
||
"resetSuccess": "Audio and playback settings have been reset to defaults.",
|
||
"resetError": "Failed to reset audio settings: {error}",
|
||
"reserveDac": {
|
||
"label": "Reserve DAC for QBZ while running",
|
||
"description": "Tells the system audio service to leave this DAC alone while QBZ is open. Recommended if other apps occasionally interrupt your listening with notification sounds. Off by default.",
|
||
"statusActive": "Active — system audio is staying clear.",
|
||
"statusContested": "Another app currently holds this DAC at higher priority. Will retry when it releases.",
|
||
"statusUnavailable": "D-Bus unavailable in this environment. Reservation cannot be applied.",
|
||
"wirePlumberNote": "If your system has a custom WirePlumber configuration that overrides device reservation, this setting may have no effect."
|
||
}
|
||
},
|
||
"playback": {
|
||
"title": "Playback",
|
||
"gapless": "Gapless Playback",
|
||
"gaplessDesc": "Seamless transitions between cached tracks with matching format",
|
||
"gaplessDisabledStreaming": "Not available in streaming-only mode",
|
||
"experimental": "experimental",
|
||
"crossfade": "Crossfade",
|
||
"crossfadeSeconds": "{seconds}s",
|
||
"normalizeVolume": "Normalize Volume",
|
||
"autoplayBehavior": "Continue playback after track ends",
|
||
"autoplayBehaviorDesc": "When enabled, plays next track in the source. When disabled, stops after each track",
|
||
"continueWithinSource": "Continue within source",
|
||
"playOnlySelectedTrack": "Play only selected track",
|
||
"showContextIcon": "Show track playing context in player",
|
||
"showContextIconTooltip": "Shows the context from which the current track is being played (album, artist, playlist, etc.)",
|
||
"persistSession": "Restore session on startup",
|
||
"persistSessionDesc": "Remember your queue and current view when restarting (track shown paused at 0:00)",
|
||
"resumePlaybackPosition": "Resume playback position",
|
||
"resumePlaybackPositionDesc": "When restoring a session, seek to where you left off instead of starting the track from the beginning",
|
||
"streamUncached": "Stream Uncached Tracks",
|
||
"streamUncachedDesc": "Start playback faster when track is not in cache. Seeking may be limited during initial buffering.",
|
||
"initialBuffer": "Initial Buffer Size",
|
||
"initialBufferDesc": "Seconds to buffer before starting playback ({seconds}s)",
|
||
"streamingOnly": "Streaming Only",
|
||
"streamingOnlyDesc": "Disables temporary cache. Not recommended without a fast connection. Offline library tracks always play first.",
|
||
"streamBuffer": "Stream Buffering",
|
||
"streamBufferDesc": "Start playback faster when track is not in cache. Seeking may be limited during initial buffering.",
|
||
"streamBufferSeconds": "Seconds to buffer before starting playback ({seconds}s)",
|
||
"disableCache": "Disable Playback Cache",
|
||
"disableCacheDesc": "Disables temporary cache. Not recommended without a fast connection. Offline library tracks always play first.",
|
||
"qualityFallback": "When quality retries fail",
|
||
"qualityFallbackDesc": "What to do when Qobuz servers can't serve the track at any quality",
|
||
"qualityFallbackAsk": "Ask me",
|
||
"qualityFallbackAlways": "Always try lowest quality",
|
||
"qualityFallbackSkip": "Always skip track"
|
||
},
|
||
"appearance": {
|
||
"title": "Appearance",
|
||
"theme": "Theme",
|
||
"albumHeaderGradient": "Album header gradient",
|
||
"albumHeaderGradientDesc": "Use the album cover's dominant color as a backdrop in album detail views.",
|
||
"themes": {
|
||
"dark": "Dark",
|
||
"light": "Light",
|
||
"oled": "OLED Black",
|
||
"warm": "Warm",
|
||
"rumi": "Rumi",
|
||
"zoey": "Zoey",
|
||
"mira": "Mira",
|
||
"duotone-snow": "Duotone Snow",
|
||
"alucard": "Alucard",
|
||
"snow-storm": "Snow Storm",
|
||
"frost": "Frost",
|
||
"aurora": "Aurora",
|
||
"ikari": "Ikari",
|
||
"langley": "Langley",
|
||
"ayanami": "Ayanami",
|
||
"iscariot": "Iscariot",
|
||
"stratego": "Stratego",
|
||
"system": "System",
|
||
"wcagLight": "WCAG Light",
|
||
"wcagDark": "WCAG Dark",
|
||
"highContrast": "High Contrast",
|
||
"colorblind": "Colorblind"
|
||
},
|
||
"autoTheme": "Auto-Theme",
|
||
"autoThemeDesc": "Generate a color theme from your system wallpaper or a custom image",
|
||
"autoThemeSource": "Source",
|
||
"autoThemeSourceSystem": "System Colors",
|
||
"autoThemeSourceWallpaper": "Wallpaper Sync",
|
||
"autoThemeSourceImage": "Custom Image",
|
||
"autoThemeSelectImage": "Select Image...",
|
||
"autoThemeGenerating": "Generating theme...",
|
||
"autoThemeError": "Failed to generate theme",
|
||
"autoThemeDetectedDE": "Detected: {de}",
|
||
"autoThemeExperimental": "Experimental: theme may not match your system exactly.",
|
||
"autoThemeNoWallpaper": "Could not detect system wallpaper",
|
||
"autoThemeApplied": "Auto-theme applied",
|
||
"autoThemeRegenerate": "Regenerate",
|
||
"autoThemeFailedHint": "We recommend choosing a different theme or generating one from a custom image.",
|
||
"colorBg": "Base",
|
||
"colorSurface": "Surface",
|
||
"colorElevated": "Elevated",
|
||
"colorAccent": "Accent",
|
||
"colorText": "Text",
|
||
"colorMuted": "Muted",
|
||
"colorBorder": "Border",
|
||
"colorDanger": "Danger",
|
||
"accentColor": "Accent Color",
|
||
"language": "Language",
|
||
"fontFamily": "Font",
|
||
"uiScale": "UI Scale",
|
||
"sidebarPlaylistCollage": "Show playlist cover collages in sidebar",
|
||
"sidebarPlaylistCollageDesc": "Render a 2×2 thumbnail of track covers next to each playlist. Disable on low-end machines to skip the extra images.",
|
||
"inAppToasts": "In-app toasts notifications",
|
||
"systemNotifications": "System Notifications",
|
||
"windowTitleShow": "Show track in window title",
|
||
"windowTitleTemplate": "Title template",
|
||
"windowTitleTemplateHelp": "Placeholders: {artist}, {track}, {album}",
|
||
"useSystemTitleBar": "Use system title bar",
|
||
"useSystemTitleBarDesc": "Replace QBZ custom title bar with your system's native window decorations. Changing this will restart the app.",
|
||
"hideTitleBar": "Hide title bar",
|
||
"hideTitleBarDesc": "Hide the title bar completely (for tiling window manager users)",
|
||
"searchInTitleBar": "Search in title bar",
|
||
"searchInTitleBarDesc": "Show the search field in the title bar instead of the sidebar",
|
||
"navInTitleBar": "Navigation in title bar",
|
||
"navInTitleBarDesc": "Show Discover, Library, and Local Library buttons in the title bar",
|
||
"navInTitleBarPosition": "Navigation buttons position",
|
||
"navInTitleBarPositionDesc": "Where to place the navigation buttons in the title bar",
|
||
"navPositionAuto": "Auto (opposite to window controls)",
|
||
"windowControlsPosition": "Window controls position",
|
||
"windowControlsPositionDesc": "Place the window control buttons on the left or right side of the title bar",
|
||
"windowControlsPositionRight": "Right",
|
||
"windowControlsPositionLeft": "Left",
|
||
"windowControlsStyle": "Window controls style",
|
||
"windowControlsStyleDesc": "Choose the shape of the window control buttons",
|
||
"windowControlsStyleRectangular": "Rectangular",
|
||
"windowControlsStyleFullHeightRounded": "Full-height rounded",
|
||
"windowControlsStyleCircular": "Circular",
|
||
"windowControlsStyleSquare": "Square",
|
||
"windowControlsSize": "Window controls size",
|
||
"windowControlsSizeDesc": "Adjust the size of the window control buttons",
|
||
"windowControlsSizeSmall": "Small",
|
||
"windowControlsSizeNormal": "Normal",
|
||
"windowControlsSizeLarge": "Large",
|
||
"windowControlsColorPreset": "Window controls color preset",
|
||
"windowControlsColorPresetDesc": "Choose a color scheme for the window control buttons",
|
||
"windowControlsColorPresetDefault": "Default",
|
||
"windowControlsColorPresetMacOS": "macOS",
|
||
"windowControlsColorPresetAdwaita": "Adwaita",
|
||
"windowControlsColorPresetMonochrome": "Monochrome",
|
||
"windowControlsColorPresetKlassy": "Klassy (auto-detect)",
|
||
"windowControlsColorPresetPlasma": "Plasma (auto-detect)",
|
||
"matchSystemChrome": "Match system window chrome",
|
||
"matchSystemChromeDesc": "Round the window corners and add a subtle edge so QBZ blends with your desktop theme. Takes effect after restarting the app (the window is rebuilt transparent so the corners don't show white).",
|
||
"matchSystemChromeRestart": "Restart QBZ to apply the window chrome change.",
|
||
"windowControlsColorPresetCustom": "Custom",
|
||
"windowControlsCustomColors": "Custom colors",
|
||
"windowControlsClose": "Close",
|
||
"windowControlsMaximize": "Maximize",
|
||
"windowControlsMinimize": "Minimize",
|
||
"windowControlsBg": "Bg",
|
||
"windowControlsBgHover": "Bg hover",
|
||
"windowControlsBgActive": "Bg click",
|
||
"windowControlsFg": "Icon",
|
||
"windowControlsFgHover": "Icon hover",
|
||
"windowControlsFgActive": "Icon click",
|
||
"showWindowControls": "Show window controls",
|
||
"showWindowControlsDesc": "Show minimize, maximize, and close buttons in the title bar. Disable if your window manager handles these.",
|
||
"showPurchases": "Show Purchases",
|
||
"showPurchasesDesc": "Show the Purchases section in the sidebar for browsing and downloading your purchased music",
|
||
"immersiveDefaultView": "Immersive default view",
|
||
"immersiveViews": {
|
||
"remember": "Remember last used",
|
||
"coverflow": "Coverflow",
|
||
"static": "Static",
|
||
"vinyl": "Vinyl",
|
||
"visualizer": "Visualizer",
|
||
"neon": "Neon",
|
||
"neon-flow": "Neon Flow",
|
||
"tunnel-flow": "Tunnel",
|
||
"comet-flow": "Comet",
|
||
"linebed": "Linebed",
|
||
"lyrics-focus": "Lyrics",
|
||
"queue-focus": "Queue",
|
||
"split-lyrics": "Split: Lyrics",
|
||
"split-trackInfo": "Split: Track Info",
|
||
"split-suggestions": "Split: Suggestions",
|
||
"split-queue": "Split: Queue"
|
||
},
|
||
"immersive": {
|
||
"title": "Immersive",
|
||
"backgroundMode": "Background effect",
|
||
"backgroundModeDesc": "Controls how the blurred artwork background is rendered in immersive mode.",
|
||
"backgroundModes": {
|
||
"full": "Full",
|
||
"fullDesc": "GPU-accelerated shader with animated blur, color shifts, and breathing effects.",
|
||
"lite": "Lite",
|
||
"liteDesc": "Pre-blurred image with smooth CSS animation. Best for multi-monitor setups.",
|
||
"off": "Off",
|
||
"offDesc": "Solid dark color. Minimal GPU usage."
|
||
},
|
||
"blurChangeNote": "Re-enter immersive mode to apply.",
|
||
"perfDegraded": "QBZ detected performance issues with the immersive view. Some effects have been temporarily disabled. You can re-enable them from Settings > Appearance.",
|
||
"perfDontShowAgain": "Don't show this again"
|
||
},
|
||
"immersiveFps": {
|
||
"title": "Animation Frame Rate",
|
||
"summary": "Per-animation FPS control for immersive mode",
|
||
"desc": "Configure frame rate per animation. Lower values save CPU. Requires re-entering immersive mode to apply.",
|
||
"panels": {
|
||
"ambient": "Background Blur",
|
||
"visualizer": "Spectrum Visualizer",
|
||
"lissajous": "X/Y (Lissajous)",
|
||
"oscilloscope": "Oscilloscope",
|
||
"energy-bands": "Energy Bands",
|
||
"transient-pulse": "Transient Pulse",
|
||
"album-reactive": "Album Reactive",
|
||
"spectral-ribbon": "Spectral Ribbon",
|
||
"neon-laser": "Laser",
|
||
"neon-flow": "Neon Flow",
|
||
"tunnel-flow": "Tunnel",
|
||
"comet-flow": "Comet",
|
||
"linebed": "Linebed"
|
||
}
|
||
},
|
||
"fpsOptions": {
|
||
"15": "15 FPS (Low)",
|
||
"30": "30 FPS (Medium)",
|
||
"60": "60 FPS (Smooth)",
|
||
"120": "120 FPS (Ultra)",
|
||
"disabled": "Disabled"
|
||
},
|
||
"miniplayerDefaultView": "Mini player default view",
|
||
"miniplayerViews": {
|
||
"remember": "Remember last used",
|
||
"micro": "Micro",
|
||
"compact": "Compact",
|
||
"artwork": "Artwork",
|
||
"queue": "Queue",
|
||
"lyrics": "Lyrics"
|
||
},
|
||
"startupPage": "Startup page",
|
||
"startupPageDesc": "Choose which page to show when the app starts",
|
||
"startupPages": {
|
||
"home": "Home",
|
||
"last-view": "Where you left off"
|
||
},
|
||
"hardwareAcceleration": "Hardware acceleration (GPU)",
|
||
"hardwareAccelerationDesc": "Enable GPU-accelerated rendering. Disabled by default for maximum compatibility. If QBZ crashes on startup after enabling, run: QBZ_HARDWARE_ACCEL=0 qbz",
|
||
"forceX11": "Force X11 backend (Wayland)",
|
||
"forceX11Desc": "Use X11 (XWayland) instead of native Wayland. Helps with crashes on some NVIDIA/Wayland setups. Requires restart. Override: QBZ_FORCE_X11=0 qbz",
|
||
"tray": {
|
||
"title": "System Tray",
|
||
"titleMacos": "Menu Bar",
|
||
"enableTray": "Enable tray icon",
|
||
"enableTrayMacos": "Enable menu bar icon",
|
||
"enableTrayDesc": "Show icon in system tray (requires restart)",
|
||
"enableTrayDescMacos": "Show icon in menu bar (requires restart)",
|
||
"minimizeToTray": "Minimize to tray",
|
||
"minimizeToTrayDesc": "Hide window to tray when minimizing",
|
||
"closeToTray": "Close to tray",
|
||
"closeToTrayDesc": "Hide window to tray instead of quitting",
|
||
"iconTheme": {
|
||
"label": "Tray icon variant",
|
||
"desc": "Pick a mono glyph to match your panel (Plasma, GNOME's permanently dark top bar) or the full colour vinyl logo",
|
||
"auto": "Auto",
|
||
"mono-light": "Mono light",
|
||
"mono-dark": "Mono dark",
|
||
"color": "Color"
|
||
}
|
||
},
|
||
"composition": {
|
||
"title": "Composition",
|
||
"summary": "Visual rendering and GPU acceleration settings",
|
||
"helpText": "These settings control how QBZ renders the UI. Incorrect settings may cause crashes or poor performance. All options require a restart to take effect.",
|
||
"recoveryNote": "If QBZ crashes after changing these settings, launch from terminal with:",
|
||
"recoveryCmd": "QBZ_HARDWARE_ACCEL=0 qbz",
|
||
"fallbackWarning": "Graphics settings failed to load",
|
||
"fallbackDesc": "Using safe defaults. This may cause degraded performance. To reset:",
|
||
"hardwareAcceleration": "Hardware Acceleration",
|
||
"hardwareAccelerationDesc": "Enable GPU rendering. Disabling forces software rendering (CPU only). Turn off if you experience crashes or visual artifacts.",
|
||
"forceDmabuf": "Force DMA-BUF Renderer",
|
||
"forceDmabufDesc": "Force DMA-BUF buffer sharing with compositor. May improve performance but can crash on some systems (especially NVIDIA + Wayland).",
|
||
"forceX11": "Force X11 backend (Wayland)",
|
||
"forceX11Desc": "Use XWayland instead of native Wayland. Recommended for NVIDIA GPUs that crash on Wayland.",
|
||
"gdkScale": "Display scale (XWayland)",
|
||
"gdkScaleDesc": "GDK_SCALE override for XWayland. Leave empty for auto.",
|
||
"gdkDpiScale": "DPI scale (XWayland)",
|
||
"gdkDpiScaleDesc": "GDK_DPI_SCALE override for XWayland. Leave empty for auto.",
|
||
"gskRenderer": "GTK Renderer",
|
||
"gskRendererDesc": "GSK_RENDERER override. Controls how GTK4 renders the UI. Cairo is software-only (safest). GL/NGL use OpenGL. Vulkan uses the Vulkan API.",
|
||
"gskRendererAuto": "Auto (system default)",
|
||
"gskRendererCairo": "Cairo (Software)",
|
||
"envVarsTitle": "Environment variable overrides",
|
||
"envVarsDesc": "For advanced users. Set these before launching QBZ to override any setting above.",
|
||
"envVarHwAccel0": "Disable all GPU rendering (maximum compatibility)",
|
||
"envVarHwAccel1": "Force full GPU rendering (bypass all safety)",
|
||
"envVarForceX11": "Force XWayland backend",
|
||
"envVarSoftwareRender": "Force software rendering (Mesa llvmpipe)",
|
||
"envVarForceDmabuf": "Force DMA-BUF renderer on (may crash)",
|
||
"envVarDisableDmabuf": "Force DMA-BUF renderer off",
|
||
"profiles": {
|
||
"title": "Rendering profiles",
|
||
"helpText": "Quick presets for mixed-DPI and multi-monitor setups. Apply one and restart QBZ.",
|
||
"nativeWaylandLabel": "Native Wayland (Sharpest)",
|
||
"nativeWaylandDesc": "Use native Wayland rendering. Best text sharpness, may be heavier on some GPU/compositor combos.",
|
||
"x11BalancedLabel": "Xwayland Balanced",
|
||
"x11BalancedDesc": "Force Xwayland with GDK_SCALE=1 and GDK_DPI_SCALE=1.1 for a balanced size/sharpness tradeoff.",
|
||
"x11PerformanceLabel": "Xwayland Performance",
|
||
"x11PerformanceDesc": "Force Xwayland with neutral scaling (1.0/1.0). Blur background disabled for lower GPU load.",
|
||
"maxPerformanceLabel": "Max Performance",
|
||
"maxPerformanceDesc": "Software rendering (Cairo) with blur disabled. Maximum compatibility, lowest GPU usage. Use if experiencing stutter or crashes.",
|
||
"applied": "Applied profile: {profile}. Restart QBZ to take effect."
|
||
}
|
||
}
|
||
},
|
||
"titlebar": {
|
||
"label": "Window titlebar",
|
||
"mode": {
|
||
"label": "Titlebar mode",
|
||
"qbz": "QBZ titlebar (default)",
|
||
"system": "System titlebar",
|
||
"plasma": "Plasma titlebar (KDE Wayland)",
|
||
"hidden": "No titlebar (tiling WM)"
|
||
},
|
||
"showWindowControls": "Show window controls (min/max/close)",
|
||
"matchSystemChrome": "Match system window chrome",
|
||
"searchLocation": "Search location",
|
||
"disabledHint": {
|
||
"windowControls": "Only applies when QBZ titlebar is active. System and Plasma modes disable this because the OS provides it.",
|
||
"matchSystemChrome": "Only applies when QBZ titlebar is active. System and Plasma modes disable this because the OS provides chrome.",
|
||
"searchLocation": "Search location does not apply when no titlebar is shown.",
|
||
"titlebarNav": "Titlebar navigation does not apply when no titlebar is shown."
|
||
},
|
||
"sandboxCaveat": "Plasma mode is unverified in sandboxed builds (Flatpak/Snap). If the system chrome doesn't appear, switch to System mode."
|
||
},
|
||
"library": {
|
||
"title": "Library",
|
||
"fetchArtistImages": "Fetch Qobuz™ Artist Images",
|
||
"fetchArtistImagesDesc": "Show artist photos from Qobuz™ in local library"
|
||
},
|
||
"contentFiltering": {
|
||
"title": "Blacklist",
|
||
"artistBlacklist": "Artist Blacklist",
|
||
"artistsBlocked": "{count} artist(s) blocked",
|
||
"manage": "Manage",
|
||
"disabled": "disabled"
|
||
},
|
||
"integrations": {
|
||
"title": "Integrations",
|
||
"discordRpc": {
|
||
"label": "Show Discord activity",
|
||
"description": "When playing music in QBZ, show the current track in your Discord status. Off by default — toggle on to enable.",
|
||
"overrideHeader": "If activity doesn't show in Discord (sandboxed installs)",
|
||
"flatpakNote": "Flatpak: run this once, then restart QBZ.",
|
||
"snapNote": "Snap: not supported. Install the .deb, .rpm, or .AppImage from GitHub Releases."
|
||
},
|
||
"lastfm": "Last.fm",
|
||
"spotify": "Spotify",
|
||
"tidal": "Tidal",
|
||
"discogs": "Discogs",
|
||
"connected": "Connected",
|
||
"connectedAs": "Connected as {username}",
|
||
"notConnected": "Not connected",
|
||
"connect": "Connect",
|
||
"disconnect": "Disconnect",
|
||
"scrobbling": "Scrobbling",
|
||
"configureApi": "Configure API",
|
||
"apiKey": "API Key",
|
||
"sharedSecret": "Shared Secret",
|
||
"userToken": "User Token",
|
||
"authorizeLastfm": "Authorize with Last.fm",
|
||
"opening": "Opening...",
|
||
"connecting": "Connecting...",
|
||
"listenbrainzTokenHint": "Get your personal token from",
|
||
"musicbrainz": "MusicBrainz",
|
||
"musicbrainzDesc": "Enable artist relationships and enhanced metadata from MusicBrainz. QBZ has no telemetry — data is only pulled from MusicBrainz, never sent.",
|
||
"musicbrainzCache": "MusicBrainz Cache",
|
||
"listenbrainz": "ListenBrainz",
|
||
"remoteControl": "Remote",
|
||
"remoteControlExperimental": "Experimental",
|
||
"remoteControlDesc": "Control QBZ from another device on the same network.",
|
||
"remoteControlSetupGuide": "Setup Guide",
|
||
"remoteControlEnable": "Enable Remote Control",
|
||
"remoteControlPort": "Port",
|
||
"remoteControlPortDesc": "Default is 8182.",
|
||
"remoteControlSecure": "Secure Connection (HTTPS)",
|
||
"remoteControlSecureDesc": "Required for PWA installs and HTTPS access. Generates a local certificate.",
|
||
"remoteControlToken": "Token",
|
||
"remoteControlTokenDesc": "Use this token to connect from the web app.",
|
||
"remoteControlCert": "Certificate",
|
||
"remoteControlCertDesc": "Install and trust this certificate on the controlling device.",
|
||
"remoteControlStatus": "Status",
|
||
"remoteControlStatusRunning": "Running",
|
||
"remoteControlStatusStopped": "Stopped",
|
||
"remoteControlShowQr": "Show QR",
|
||
"remoteControlHideQr": "Hide QR",
|
||
"remoteControlRegenerate": "Regenerate Token",
|
||
"remoteControlRegenerateTitle": "Regenerate Token?",
|
||
"remoteControlRegenerateDesc": "This will invalidate the current pairing token. You will need to rescan the QR code.",
|
||
"remoteControlRegenerateConfirm": "Regenerate",
|
||
"remoteControlQrHelp": "Scan this QR code with QBZ-Control to pair.",
|
||
"remoteControlUrlLabel": "Local URL",
|
||
"remoteControlQrAlt": "Pairing QR code",
|
||
"plexConnection": "Plex Connection",
|
||
"plexConnectionLore": "Access your Plex library directly from QBZ Local Library. This integration supports only local and LAN Plex servers to guarantee direct play.",
|
||
"plexCollapseHint": "This only hides the block. Your settings stay unchanged.",
|
||
"plexServerUrl": "Plex Server URL",
|
||
"plexServerUrlPlaceholder": "http://local-ip-address:32400",
|
||
"plexServerUrlHelp": "Must be a local or local-LAN URL.",
|
||
"plexServerPort": "Port",
|
||
"plexLocalAddressRequired": "Use a local or LAN Plex address. Remote Plex endpoints are not supported for this mode.",
|
||
"plexAuthorizeSectionTitle": "Authorize QBZ",
|
||
"plexAuthorizeSectionLore": "Authorize QBZ to connect with your Plex server.",
|
||
"plexAuthorizeHelp": "If it does not open automatically, visit https://plex.tv/link.",
|
||
"plexAuthorizeLabel": "Authorize QBZ",
|
||
"plexAuthorizeGenerateHelp": "This will generate a 4-character code.",
|
||
"plexCodeEmpty": "No code generated yet",
|
||
"plexCodeTooltip": "Copy code",
|
||
"plexLinkWithPlex": "Link with Plex",
|
||
"plexLinkWithPlexHelp": "Take note of this one-time code.",
|
||
"plexManualTokenToggle": "Or enter your Plex X-Token directly",
|
||
"plexManualTokenHelp": "Optional. Not required if the code flow above worked.",
|
||
"plexAuthorizeUsingCode": "Authorize QBZ using previous code",
|
||
"plexConnectionCheckLabel": "Check Plex connection",
|
||
"plexGetLibrariesLabel": "Get Plex music libraries",
|
||
"plexGetLibrariesHelp": "Re-sync if new libraries were added on your Plex server.",
|
||
"plexMusicLibraries": "Music libraries",
|
||
"plexTracksShort": "tracks",
|
||
"plexDisconnectRowLabel": "Disconnect Plex",
|
||
"plexClearCacheRowLabel": "Clear Plex cache in QBZ",
|
||
"plexClearCacheRowHelp": "Recommended if you notice library inconsistencies.",
|
||
"plexClearButton": "Clear",
|
||
"plexPoc": "Plex LAN POC",
|
||
"plexPocDesc": "Experimental local-only integration. Uses direct media parts from Plex without replacing QBZ playback.",
|
||
"plexLibraryIntegrationNote": "Plex music is integrated into Local Library (same queue/player flow, no separate tab).",
|
||
"plexLocalOnlyDirectPlayNote": "Only Plex libraries pointing to local files are supported to guarantee direct play.",
|
||
"plexMetadataWrite": "Plex metadata write (experimental)",
|
||
"plexMetadataWriteDesc": "Disabled by default. Keep off to use local-only metadata edits in QBZ and avoid writing changes back to Plex.",
|
||
"plexWriteDisabledNotice": "Plex metadata write is disabled. Enable it in Settings if you want to edit Plex album metadata.",
|
||
"plexBaseUrl": "Plex Base URL",
|
||
"plexBaseUrlPlaceholder": "http://127.0.0.1:32400",
|
||
"plexToken": "Plex Token",
|
||
"plexTokenPlaceholder": "Paste your X-Plex-Token",
|
||
"plexActionPing": "Ping Plex",
|
||
"plexActionEasyConnect": "Connect with Plex",
|
||
"plexActionGenerateCode": "Generate Code",
|
||
"plexActionOpenAuth": "Open Plex Sign-In",
|
||
"plexActionDisconnect": "Disconnect Plex",
|
||
"plexActionClearCache": "Clear Local Plex Cache",
|
||
"plexActionCopyCode": "Copy Code",
|
||
"plexActionLoadSections": "Sync Sections",
|
||
"plexActionLoadTracks": "Load Tracks",
|
||
"plexActionPlay": "Play",
|
||
"plexActionPlaying": "Playing...",
|
||
"plexEasyConnectTitle": "Easy Connection",
|
||
"plexEasyConnectDesc": "Open plex.tv/link in your browser, enter the code shown here, approve QBZ, then return.",
|
||
"plexCodeLabel": "Authorize with this code",
|
||
"plexAuthCode": "Plex code: {code}",
|
||
"plexCodeCopied": "Plex code copied.",
|
||
"plexCodeCopyFailed": "Could not copy Plex code.",
|
||
"plexMusicSection": "Music Section",
|
||
"plexSelectSection": "Select a section",
|
||
"plexStatusIdle": "Ready for Plex LAN checks.",
|
||
"plexStatusDisabled": "Plex connection is disabled.",
|
||
"plexStatusAuthPending": "Plex sign-in started. Complete authorization with code {code}.",
|
||
"plexStatusAuthConnected": "Plex token received successfully.",
|
||
"plexStatusAuthExpired": "Plex sign-in code expired. Start the connection again.",
|
||
"plexStatusDisconnected": "Plex connection and cached metadata were cleared.",
|
||
"plexStatusCacheCleared": "Local Plex cache was cleared.",
|
||
"plexStatusConnected": "Connected to {server} (v{version}).",
|
||
"plexStatusSectionsLoaded": "Loaded {count} music sections.",
|
||
"plexStatusTracksLoaded": "Loaded {count} tracks.",
|
||
"plexStatusCacheLoaded": "Loaded {count} cached tracks. Refreshing from Plex in background.",
|
||
"plexStatusPlaying": "Playing: {title}",
|
||
"plexStatusPlayingDirect": "Playing direct from Plex: {title} ({rate} Hz / {bits}-bit, {contentType}).",
|
||
"plexStatusPlayingFallback": "Playing {title}, but direct play is not confirmed (part: {partKey}).",
|
||
"plexStatusError": "Plex error: {error}",
|
||
"plexDisconnectConfirmTitle": "Disconnect Plex?",
|
||
"plexDisconnectConfirmDesc": "This removes the Plex token and clears cached Plex metadata.",
|
||
"plexDisconnectConfirmOk": "Disconnect",
|
||
"plexClearCacheConfirmTitle": "Clear local Plex cache?",
|
||
"plexClearCacheConfirmDesc": "This removes locally cached Plex sections/tracks in QBZ. Your Plex token remains connected.",
|
||
"plexClearCacheConfirmOk": "Clear cache",
|
||
"plexNoTracksLoaded": "No tracks loaded yet.",
|
||
"plexTrackMeta": "{artist} - {album} - {rate} Hz / {bits}-bit",
|
||
"qobuzLinkHandler": "Qobuz Link Handler",
|
||
"qobuzLinkHandlerDesc": "Register QBZ as the default app for qobuzapp:// links from your browser.",
|
||
"qobuzLinkHandlerError": "Failed to update link handler registration.",
|
||
"qconnectDeviceName": "Device Name",
|
||
"qconnectDeviceNameDesc": "Name displayed in Qobuz Connect",
|
||
"noProtocolDeviceFound": "No {protocol} devices found",
|
||
"noProtocolDeviceFoundHint": "Make sure devices are on the same network",
|
||
"qconnect": {
|
||
"startupMode": {
|
||
"title": "Auto-connect Qobuz Connect on startup",
|
||
"description": "Choose whether Qobuz Connect activates automatically when QBZ launches.",
|
||
"off": "Off",
|
||
"on": "Always on",
|
||
"rememberLast": "Remember last state",
|
||
"localLibraryNote": "Remember, Qobuz Connect is not compatible with local library."
|
||
}
|
||
}
|
||
},
|
||
"storage": {
|
||
"title": "Storage",
|
||
"sectionSummary": "Queue, lyrics, artwork, and metadata caches",
|
||
"queueCacheNote": "Queue list storage. Clear if you have playback issues. (This is not the Offline Library cache.)",
|
||
"queueCacheStats": "{tracks} tracks using {used} / {max}",
|
||
"cachedTracks": "Cached Queue Tracks",
|
||
"cacheSize": "Queue Cache Size",
|
||
"clearCache": "Clear queue cache",
|
||
"clearing": "Clearing...",
|
||
"factoryResetTitle": "Delete All Application Data",
|
||
"factoryResetDesc": "Permanently deletes all settings, caches, credentials, and user data. You will be logged out and the app will return to its initial state.",
|
||
"factoryResetCheckbox": "I understand all data will be permanently deleted and this cannot be undone",
|
||
"factoryResetButton": "Delete All Data",
|
||
"factoryResetFinalConfirm": "Are you absolutely sure? This will delete all application data including your credentials, settings, caches, and offline library. This action cannot be undone.",
|
||
"factoryResetConfirmButton": "Yes, delete everything",
|
||
"factoryResetError": "Failed to delete application data: {error}",
|
||
"imageCacheEnabled": "Image Cache",
|
||
"imageCacheEnabledDesc": "Cache Qobuz album and artist images locally for faster loading",
|
||
"imageCacheMaxSize": "Image Cache Size Limit",
|
||
"imageCacheFiles": "images",
|
||
"imageCacheClear": "Clear Image Cache",
|
||
"imageCacheClearDesc": "Remove all cached Qobuz images from disk"
|
||
},
|
||
"developer": {
|
||
"title": "Developer Mode",
|
||
"summary": "Advanced options for debugging and development",
|
||
"forceDmabuf": "Force DMA-BUF Renderer",
|
||
"forceDmabufDesc": "Override the NVIDIA + Wayland DMA-BUF workaround. Only enable if you know your system doesn't crash. Reset from terminal: qbz --reset-dmabuf",
|
||
"restartRequired": "Restart QBZ for this change to take effect",
|
||
"viewLogs": "View Logs",
|
||
"viewLogsDesc": "View backend and console logs for debugging",
|
||
"logsTitle": "Application Logs",
|
||
"tabTerminal": "Terminal",
|
||
"tabConsole": "Console",
|
||
"uploadLogs": "Upload to paste.rs",
|
||
"uploadTab": "Upload {tab}",
|
||
"uploadSuccess": "Log URL copied to clipboard",
|
||
"uploadError": "Failed to upload logs",
|
||
"uploading": "Uploading...",
|
||
"bundleDiagnostics": "Include system diagnostics",
|
||
"bundleDiagnosticsDesc": "Attach a runtime/system snapshot + a 10s cast scan to the terminal paste so one link covers everything.",
|
||
"collectingDiagnostics": "Collecting diagnostics...",
|
||
"bugReportHint": "Reporting a bug? Upload both tabs and share both URLs — it helps us fix things faster. Thanks!",
|
||
"verboseLogCapture": "Verbose Log Capture",
|
||
"verboseLogCaptureDesc": "Capture all console logs (log/info), not just errors. Uses more memory.",
|
||
"verboseLogEnabled": "Verbose log capture enabled",
|
||
"verboseLogDisabled": "Verbose log capture disabled",
|
||
"qconnectDevTools": "Qobuz Connect Dev Tools",
|
||
"qconnectDevToolsShow": "Show Dev Panel Button",
|
||
"qconnectDevToolsDesc": "Show the advanced connection screen button in the player bar",
|
||
"diagnostics": {
|
||
"title": "System Diagnostics",
|
||
"description": "Compare saved settings against runtime state",
|
||
"refresh": "Refresh",
|
||
"export": "Export to Clipboard",
|
||
"exported": "Copied!",
|
||
"sectionAudio": "Audio",
|
||
"sectionGraphics": "Graphics & Rendering",
|
||
"sectionEnv": "Environment Variables",
|
||
"sectionPlayback": "Playback",
|
||
"sectionSystem": "System",
|
||
"sectionQconnect": "Qobuz Connect",
|
||
"sectionCast": "Cast Discovery",
|
||
"castScan": "Run 10s scan",
|
||
"castScanning": "Scanning...",
|
||
"colSetting": "Setting",
|
||
"colSaved": "Saved",
|
||
"colRuntime": "Runtime",
|
||
"colStatus": "Status"
|
||
}
|
||
},
|
||
"blacklist": {
|
||
"title": "Artist Blacklist",
|
||
"description": "Blacklisted artists are hidden from search results, radio, suggestions, and similar artists.",
|
||
"enabled": "Enabled",
|
||
"disabled": "Disabled",
|
||
"clearAll": "Clear All",
|
||
"noArtists": "No blacklisted artists",
|
||
"noArtistsHint": "To blacklist an artist, go to their page and click the ban icon.",
|
||
"artistCount": "{count} artists",
|
||
"loadingBlacklist": "Loading blacklist...",
|
||
"confirmClear": "Remove all artists from blacklist?",
|
||
"disabledWarning": "Blacklist is currently disabled. Artists below will appear in results.",
|
||
"searchPlaceholder": "Search blacklisted artists...",
|
||
"noResults": "No results for \"{query}\"",
|
||
"addedOn": "Added {date}",
|
||
"remove": "Remove from blacklist",
|
||
"confirmClearTitle": "Clear Blacklist?",
|
||
"confirmClearText": "This will remove all {count} artists from your blacklist. This action cannot be undone."
|
||
},
|
||
"offlineLibrary": {
|
||
"title": "Offline Playback",
|
||
"disclaimer": "The offline cache is a temporary playback cache for offline listening while you have a valid Qobuz subscription. You do not receive a license to keep or redistribute the content. If your subscription becomes invalid, QBZ will remove all cached content after 30 days.",
|
||
"cachedTracks": "Offline Tracks",
|
||
"cachedTracksDesc": "Cached tracks for offline playback",
|
||
"showInLibrary": "Show in Local Library",
|
||
"showInLibraryDesc": "Display offline cached tracks in the Local Library view",
|
||
"clearCache": "Clear All",
|
||
"openFolder": "Manage offline cache",
|
||
"repair": "Repair Offline Cache",
|
||
"repairDesc": "Fix offline markers lost during library scans",
|
||
"manageCache": "Manage Offline Cache",
|
||
"manageCacheDesc": "Browse and manage downloaded tracks and albums",
|
||
"openFolderDesc": "Browse and manage downloaded tracks and albums",
|
||
"sectionSummary": "Cached tracks for offline playback",
|
||
"repairing": "Repairing..."
|
||
},
|
||
"updates": {
|
||
"title": "Updates",
|
||
"checkOnLaunch": "Check for new releases on launch",
|
||
"checkNow": "Check for updates now",
|
||
"checking": "Checking...",
|
||
"check": "Check",
|
||
"showWhatsNew": "Show what's new on new version launch",
|
||
"showChangelog": "Show changelog for current version",
|
||
"currentVersion": "Current version: v{version}",
|
||
"versionUnavailable": "Version information not available yet",
|
||
"changelogUnavailable": "Could not load changelog for this version"
|
||
},
|
||
"networkCacheWarning": "The selected folder is on a network drive.",
|
||
"networkCacheWarningDetail": "Cached tracks may not be available when the network is disconnected or in offline mode. Are you sure you want to use this location?",
|
||
"lyrics": {
|
||
"title": "Lyrics",
|
||
"lyricsCache": "Lyrics Cache",
|
||
"clearLyrics": "Clear Lyrics Cache",
|
||
"cacheStats": "{entries} entries using {size}"
|
||
},
|
||
"about": {
|
||
"title": "About",
|
||
"version": "Version",
|
||
"currentVersion": "Current version",
|
||
"sourceCode": "Source Code",
|
||
"documentation": "Documentation",
|
||
"reportIssue": "Report Issue",
|
||
"checkUpdates": "Check for Updates",
|
||
"checkUpdatesNow": "Check for updates now",
|
||
"checkOnLaunch": "Check for new releases on launch",
|
||
"showWhatsNew": "Show what's new on new version launch",
|
||
"showChangelog": "Show changelog for current version"
|
||
},
|
||
"metadata": {
|
||
"title": "Metadata",
|
||
"musicbrainz": "MusicBrainz",
|
||
"musicbrainzDesc": "Enable artist relationships and enhanced metadata from MusicBrainz. QBZ has no telemetry — data is only pulled from MusicBrainz, never sent.",
|
||
"cacheStats": "{artists} artists, {relations} relations, {recordings} recordings",
|
||
"noArtworkCached": "No cached artwork",
|
||
"artistVectors": "Artist Vectors (Suggestions)",
|
||
"artworkThumbnails": "Artwork Thumbnails",
|
||
"clearAllCaches": "Clear All Caches",
|
||
"clearAllCachesDesc": "Clears all cached data above",
|
||
"cachesDesc": "Queue, lyrics, artwork and metadata caches"
|
||
},
|
||
"noMatchesFound": "No matches found",
|
||
"immersive": {
|
||
"title": "Degraded performance",
|
||
"perfDegraded": "Degraded performance",
|
||
"perfDontShowAgain": "Don't show again"
|
||
}
|
||
},
|
||
"sort": {
|
||
"sort": "Sort",
|
||
"addedRecently": "Added recently",
|
||
"album": "Album",
|
||
"artist": "Artist",
|
||
"custom": "Custom",
|
||
"default": "Default",
|
||
"label": "Label",
|
||
"nameAZ": "Name (A-Z)",
|
||
"newest": "Newest First",
|
||
"oldest": "Oldest First",
|
||
"playCount": "Play Count",
|
||
"recent": "Recent",
|
||
"title": "Title",
|
||
"titleAZ": "Title (A-Z)",
|
||
"titleZA": "Title (Z-A)",
|
||
"trackCount": "# of Tracks",
|
||
"duration": "Duration"
|
||
},
|
||
"storage": {
|
||
"B": "B",
|
||
"KB": "KB",
|
||
"MB": "MB",
|
||
"GB": "GB"
|
||
},
|
||
"time": {
|
||
"hours": "h",
|
||
"minutes": "min",
|
||
"seconds": "s",
|
||
"justNow": "Just now",
|
||
"minutesAgo": "{count} min ago",
|
||
"hoursAgo": "{count}h ago",
|
||
"daysAgo": "{count}d ago"
|
||
},
|
||
"toast": {
|
||
"loadingAlbum": "Loading album...",
|
||
"loadingArtist": "Loading artist...",
|
||
"loadingPlaylist": "Loading playlist...",
|
||
"loadingPlaylists": "Loading playlists...",
|
||
"loadingTracks": "Loading tracks...",
|
||
"laodingDevices": "Loading devices...",
|
||
"lookingUp": "Looking up {name}...",
|
||
"failedLoadAlbum": "Failed to load album",
|
||
"failedLoadArtist": "Failed to load artist",
|
||
"failedLoadPlaylist": "Failed to load playlist",
|
||
"failedLoadMoreAlbums": "Failed to load more albums",
|
||
"failedAddToQueue": "Failed to add to queue",
|
||
"failedPlayTrack": "Failed to play track",
|
||
"failedSelectFolderTracks": "Failed to select folder tracks",
|
||
"queueCleared": "Queue cleared",
|
||
"queueEmpty": "Queue is empty",
|
||
"queueEnded": "Queue ended",
|
||
"failedClearQueue": "Failed to clear queue",
|
||
"removedFromQueue": "Removed from queue",
|
||
"failedRemoveFromQueue": "Failed to remove from queue",
|
||
"shuffleEnabled": "Shuffle play enabled",
|
||
"shuffleDisabled": "Shuffle disabled",
|
||
"repeatOff": "Repeat: Off",
|
||
"repeatOne": "Repeat: One",
|
||
"repeatAll": "Repeat: All",
|
||
"infinitePlayEnabled": "Infinite play enabled",
|
||
"infinitePlayDisabled": "Infinite play disabled",
|
||
"linkCopied": "Link copied to clipboard",
|
||
"albumLinkCopied": "Album link copied to clipboard",
|
||
"playlistLinkCopied": "Playlist link copied to clipboard",
|
||
"trackLinkCopied": "Track link copied to clipboard",
|
||
"fetchingSonglink": "Fetching song.link...",
|
||
"fetchingAlbumLink": "Fetching Album.link...",
|
||
"songlinkCopied": "song.link copied to clipboard",
|
||
"albumLinkCopiedSonglink": "Album.link copied to clipboard",
|
||
"songlinkError": "song.link error: {error}",
|
||
"albumLinkError": "Album.link error: {error}",
|
||
"allTracksOffline": "All tracks already available offline",
|
||
"removedFromOffline": "Removed from offline library",
|
||
"failedRemoveOffline": "Failed to remove from offline library",
|
||
"failedOpenFolder": "Failed to open folder",
|
||
"failedOpenAlbumFolder": "Failed to open album folder",
|
||
"playlistNoTracks": "Playlist has no tracks",
|
||
"copiedToLibrary": "Copied to library",
|
||
"copyingToLibrary": "Copying to library...",
|
||
"playlistCopied": "Playlist copied to library",
|
||
"failedCopyPlaylist": "Failed to copy playlist: {error}",
|
||
"removedFromFavorites": "Removed from Library",
|
||
"playlistRemovedFavorites": "Playlist removed from Library",
|
||
"failedRemoveFavorites": "Failed to remove from Library: {error}",
|
||
"failedUpdateFavorites": "Failed to update Library",
|
||
"addedToFavorites": "Added to Library",
|
||
"noAvailableTracks": "No available tracks in queue (offline mode)",
|
||
"failedReorderQueue": "Failed to reorder queue",
|
||
"trackNotInHistory": "Track not found in history",
|
||
"failedNavigateSource": "Failed to navigate to source",
|
||
"failedLookupMusician": "Could not look up musician info",
|
||
"couldNotFetchDetails": "Could not fetch details",
|
||
"failedPrepareOffline": "Failed to prepare for offline",
|
||
"failedRefreshOffline": "Failed to refresh offline copy",
|
||
"preparingTrackOffline": "Preparing \"{title}\" for offline",
|
||
"preparingTracksOffline": "Preparing {count} tracks from \"{album}\" for offline",
|
||
"refreshingTrackOffline": "Refreshing \"{title}\" for offline",
|
||
"refreshingAlbumOffline": "Refreshing all tracks from \"{album}\" for offline",
|
||
"failedLoadAlbumRefresh": "Failed to load album for offline refresh",
|
||
"playingAlbum": "{count, plural, =1 {Playing album} other {Playing {count} tracks}}",
|
||
"playingTracksNext": "Playing {count} tracks next",
|
||
"addedTracksToQueue": "Added {count} tracks to queue",
|
||
"failedPreviousTrack": "Failed to go to previous track",
|
||
"failedNextTrack": "Failed to go to next track",
|
||
"failedToSavePreference": "Failed to save preference",
|
||
"tracksAddedToPlaylist": "Track(s) added to playlist",
|
||
"playlistCreated": "Playlist created",
|
||
"playlistUpdated": "Playlist updated",
|
||
"offlineModeStarted": "Started in offline mode",
|
||
"welcomeUser": "Welcome, {name}!",
|
||
"restoredTrack": "Restored: {title}",
|
||
"logoutSuccess": "Logged out successfully",
|
||
"failedLogout": "Failed to logout",
|
||
"localTrackSearch": "Local track - search for artist in Search",
|
||
"queuedPlayNext": "Queued to play next",
|
||
"failedQueueTrack": "Failed to queue track",
|
||
"addedToQueue": "Added to queue",
|
||
"offlineModeActivated": "Offline mode activated",
|
||
"backOnline": "Back online",
|
||
"syncedPlaylist": "Synced playlist \"{name}\"",
|
||
"failedSyncPlaylist": "Failed to sync playlist \"{name}\": {error}",
|
||
"playbackError": "Playback error: {error}",
|
||
"trackUnavailable": "\"{title}\" is no longer available",
|
||
"playing": "Playing: {title}",
|
||
"failedCopyLink": "Failed to copy link",
|
||
"failedShareQobuz": "Failed to share Qobuz link: {error}",
|
||
"playlistCreatedOffline": "Playlist created offline - will sync when back online",
|
||
"playlistImported": "Playlist imported",
|
||
"playlistImportFailed": "Playlist import failed",
|
||
"enterSearchTerms": "Enter album title or artist to search",
|
||
"searchFailed": "Search failed: {error}",
|
||
"appliedMetadata": "Applied metadata from {provider}",
|
||
"rateLimited": "Rate limited. Please wait a moment and try again.",
|
||
"failedFetchMetadata": "Failed to fetch metadata: {error}",
|
||
"failedOpenBrowser": "Failed to open browser",
|
||
"albumMetadataSaved": "Album metadata saved",
|
||
"removedMissingFiles": "Removed {count} tracks with missing files",
|
||
"noMissingFilesFound": "No missing files found",
|
||
"failedCleanupMissing": "Failed to cleanup missing files",
|
||
"metadataRefreshed": "Metadata refreshed from files",
|
||
"failedSaveTray": "Failed to save tray setting",
|
||
"failedSaveAutoplay": "Failed to save autoplay preference",
|
||
"failedSaveIconVisibility": "Failed to save icon visibility preference",
|
||
"failedRepairOffline": "Failed to repair offline library: {error}",
|
||
"failedOpenCacheFolder": "Failed to open cache folder",
|
||
"blacklist": {
|
||
"newState": "Blacklist {status}",
|
||
"enabled": "enabled",
|
||
"disabled": "disabled"
|
||
},
|
||
"loadingCredits": "Loading credits...",
|
||
"loadingDevices": "Loading devices...",
|
||
"addedToPlaylist": "Added to playlist",
|
||
"copied": "Copied!",
|
||
"findingSimilarArtists": "Finding similar artists...",
|
||
"awardUnavailable": "Award detail not available for this entry.",
|
||
"audioDeviceMissing": "Output device '{device}' is no longer available. Using system default.",
|
||
"mixTrimmed": "Added {actual} songs to your queue (you asked for {requested}; some merged or capped per album)."
|
||
},
|
||
"topMixes": {
|
||
"title": "TopQ",
|
||
"subtitle": "From your top playlists",
|
||
"cardDesc": "Discover new music from your <strong>most-played</strong> playlists.",
|
||
"algorithmInfo": "Powered by the Qobuz suggestion algorithm, seeded from your most-played playlists.",
|
||
"emptyPlaylists": "No played playlists yet. Play some playlists to build your mix!"
|
||
},
|
||
"tracklist": {
|
||
"title": "Title",
|
||
"album": "Album",
|
||
"duration": "Duration",
|
||
"quality": "Quality",
|
||
"searchPlaceholder": "Search tracks…",
|
||
"noMatches": "No tracks match your search."
|
||
},
|
||
"updates": {
|
||
"runningIn": "Running in {env}",
|
||
"runningInsideSandbox": "QBZ detected it's running inside a <strong>{env} sandbox</strong>.",
|
||
"flatpak": {
|
||
"intro": "There are some considerations to ensure the best experience.",
|
||
"whatYouShouldKnow": {
|
||
"heading": "What you should know:",
|
||
"externalMusicFolderAccess": "Access to external music folders (NAS, network mounts) requires manual permission grants",
|
||
"audioFeatures": "Some audio features may behave differently due to sandbox restrictions",
|
||
"settingsPage": "The <strong>Settings</strong> page includes Flatpak-specific commands you can copy and run"
|
||
},
|
||
"note": "Check the <strong>Flatpak Sandbox</strong> section in Settings for detailed instructions and copy-paste commands."
|
||
},
|
||
"snap": {
|
||
"intro": "Some audio plugs need to be connected manually for the best experience.",
|
||
"requiredPlugConnections": "Required plug connections:",
|
||
"optional": "Optional (for external drives / NAS):",
|
||
"note": "Run these commands in a terminal, then restart QBZ. This only needs to be done once."
|
||
},
|
||
"newVersionReleased": "A new version of QBZ has been released",
|
||
"newVersionAvailable": "New version available: v{version}",
|
||
"noUpdatesFound": "No updates found.",
|
||
"updateReminder": {
|
||
"newVersionReminder": "New version reminder",
|
||
"remindMeLater": "Remind me later",
|
||
"doNotNotifyAgain": "Do not notify me again about this release",
|
||
"doNotNotifyAboutReleases": "Do not notify me about new releases",
|
||
"hint": "Can be re-enabled from Settings"
|
||
},
|
||
"whatsNew": {
|
||
"whatsNew": "What's new",
|
||
"whatsNewIn": "What's new in v{version}",
|
||
"releaseNotesNotAvailable": "Release notes are not available.",
|
||
"releaseNotesNotAvailableForVersion": "Release notes are not available for this version."
|
||
},
|
||
"newReleaseAvailable": "New release available",
|
||
"checkForUpdates": "Check for updates",
|
||
"autoUpdate": {
|
||
"title": "Updating QBZ",
|
||
"checking": "Checking for updates...",
|
||
"downloading": "Downloading update...",
|
||
"downloadingProgress": "Downloading update... {percent}%",
|
||
"installing": "Installing update...",
|
||
"restarting": "Restarting...",
|
||
"failed": "Update failed"
|
||
}
|
||
},
|
||
"weeklyMixes": {
|
||
"title": "WeeklyQ",
|
||
"subtitle": "Based on your weekly listening.",
|
||
"cardDesc": "Take a weekly journey with a fresh mix <strong>every Friday</strong>."
|
||
},
|
||
"mixModal": {
|
||
"title": "Random queue",
|
||
"computing": "Loading…",
|
||
"confirm": "Add to queue",
|
||
"loadFailed": "Couldn't load song count",
|
||
"body": "Create a random queue with songs from this collection. How many songs do you want?",
|
||
"numberOfSongs": "Number of songs",
|
||
"songsAvailable": "{n} songs available",
|
||
"allOption": "All ({n})"
|
||
},
|
||
"queue": {
|
||
"stopAfterThis": "Stop after this track",
|
||
"cancelStopAfter": "Cancel stop after this",
|
||
"removeAllAfter": "Remove all tracks after this",
|
||
"tracksRemoved": "{count, plural, one {# track removed from queue} other {# tracks removed from queue}}"
|
||
}
|
||
}
|