i18n: add Settings audio, offline library, and updates translations
Complete Spanish translations for: - Audio settings (backend, ALSA plugin, hardware volume, streaming) - Offline library section (repair, manage, clear) - Updates section (check on launch, show changelog) - Flatpak warning messages
This commit is contained in:
1 parent
55d383c431
commit
805fec1529
3 files changed
+126
-44
No files matched your search
@@ -1894,8 +1894,8 @@
|
||||
<div class="loading-overlay">
|
||||
<div class="loading-content">
|
||||
<Loader2 size={48} class="spinner" />
|
||||
<p>Loading audio devices...</p>
|
||||
<p class="loading-subtitle">Parsing hardware information</p>
|
||||
<p>{$t('settings.audio.loadingAudioDevices')}</p>
|
||||
<p class="loading-subtitle">{$t('settings.audio.parsingHardware')}</p>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
@@ -1953,15 +1953,15 @@
|
||||
</div>
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Limit Quality to Device</span>
|
||||
<span class="setting-desc">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.</span>
|
||||
<span class="setting-label">{$t('settings.audio.limitQualityToDevice')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.limitQualityToDeviceDesc')}</span>
|
||||
</div>
|
||||
<Toggle enabled={limitQualityToDevice} onchange={handleLimitQualityToDeviceChange} />
|
||||
</div>
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Audio Backend</span>
|
||||
<span class="setting-desc">Choose audio system: Auto (recommended), PipeWire (modern), ALSA Direct (bit-perfect, exclusive), or PulseAudio (legacy).</span>
|
||||
<span class="setting-label">{$t('settings.audio.audioBackend')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.audioBackendDesc')}</span>
|
||||
</div>
|
||||
<Dropdown
|
||||
value={selectedBackend}
|
||||
@@ -1975,10 +1975,10 @@
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">{$t('settings.audio.outputDevice')}</span>
|
||||
<span class="setting-desc">Select your preferred audio output device. Devices shown are from the selected backend.</span>
|
||||
<span class="setting-desc">{$t('settings.audio.outputDeviceDesc')}</span>
|
||||
</div>
|
||||
{#if isLoadingDevices}
|
||||
<span class="loading-text">Loading devices...</span>
|
||||
<span class="loading-text">{$t('settings.audio.loadingDevices')}</span>
|
||||
{:else if selectedBackend === 'ALSA Direct'}
|
||||
<div class="dropdown-with-help">
|
||||
<DeviceDropdown
|
||||
@@ -1992,7 +1992,7 @@
|
||||
<button
|
||||
class="help-icon-btn"
|
||||
onclick={() => showAlsaUtilsHelpModal = true}
|
||||
title="Help with bit-perfect device detection"
|
||||
title={$t('settings.audio.helpBitPerfect')}
|
||||
>
|
||||
<HelpCircle size={16} />
|
||||
</button>
|
||||
@@ -2020,8 +2020,8 @@
|
||||
{#if showAlsaPluginSelector}
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">ALSA Plugin</span>
|
||||
<span class="setting-desc">hw: Bit-perfect, exclusive. plughw: Auto-convert. pcm: Most compatible.</span>
|
||||
<span class="setting-label">{$t('settings.audio.alsaPlugin')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.alsaPluginDesc')}</span>
|
||||
</div>
|
||||
<Dropdown
|
||||
value={selectedAlsaPlugin}
|
||||
@@ -2036,8 +2036,8 @@
|
||||
{#if showAlsaHardwareVolume}
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Enable Hardware Volume Control</span>
|
||||
<span class="setting-desc">Experimental: Controls DAC volume via ALSA mixer. Some DACs don't support this - disable for maximum compatibility. If it fails, playback continues normally.</span>
|
||||
<span class="setting-label">{$t('settings.audio.hardwareVolume')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.hardwareVolumeDesc')}</span>
|
||||
</div>
|
||||
<Toggle enabled={alsaHardwareVolume} onchange={handleAlsaHardwareVolumeChange} />
|
||||
</div>
|
||||
@@ -2060,24 +2060,24 @@
|
||||
<div class="flatpak-warning">
|
||||
<div class="warning-icon">⚠️</div>
|
||||
<div class="warning-content">
|
||||
<strong>Flatpak Limitation:</strong> PipeWire cannot guarantee bit-perfect playback in sandboxed environments due to daemon access restrictions.
|
||||
<strong>{$t('settings.audio.flatpakWarningTitle')}</strong> {$t('settings.audio.flatpakWarningDesc')}
|
||||
<br />
|
||||
<strong>Recommended:</strong> Switch to ALSA Direct backend for true bit-perfect audio.
|
||||
<strong>{$t('settings.audio.flatpakRecommended')}</strong> {$t('settings.audio.flatpakRecommendedDesc')}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Stream Uncached Tracks</span>
|
||||
<span class="setting-desc">Start playback faster when track is not in cache. Seeking may be limited during initial buffering.</span>
|
||||
<span class="setting-label">{$t('settings.audio.streamUncached')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.streamUncachedDesc')}</span>
|
||||
</div>
|
||||
<Toggle enabled={streamFirstTrack} onchange={handleStreamFirstTrackChange} />
|
||||
</div>
|
||||
{#if streamFirstTrack}
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Initial Buffer Size</span>
|
||||
<span class="setting-desc">Seconds to buffer before starting playback ({streamBufferSeconds}s)</span>
|
||||
<span class="setting-label">{$t('settings.audio.initialBuffer')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.initialBufferDesc', { values: { seconds: streamBufferSeconds } })}</span>
|
||||
</div>
|
||||
<input
|
||||
type="range"
|
||||
@@ -2092,8 +2092,8 @@
|
||||
{/if}
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Streaming Only</span>
|
||||
<span class="setting-desc">Disables temporary cache. Not recommended without a fast connection. Offline library tracks always play first.</span>
|
||||
<span class="setting-label">{$t('settings.audio.streamingOnly')}</span>
|
||||
<span class="setting-desc">{$t('settings.audio.streamingOnlyDesc')}</span>
|
||||
</div>
|
||||
<Toggle enabled={streamingOnly} onchange={handleStreamingOnlyChange} />
|
||||
</div>
|
||||
@@ -2312,7 +2312,7 @@
|
||||
<section class="section collapsible-section" bind:this={downloadsSection}>
|
||||
<button class="section-title-btn" onclick={() => offlineLibraryCollapsed = !offlineLibraryCollapsed}>
|
||||
<h3 class="section-title">{$t('settings.offlineLibrary.title')}</h3>
|
||||
<span class="section-summary">Cached tracks for offline playback</span>
|
||||
<span class="section-summary">{$t('settings.offlineLibrary.sectionSummary')}</span>
|
||||
{#if offlineLibraryCollapsed}
|
||||
<ChevronDown size={16} />
|
||||
{:else}
|
||||
@@ -2333,37 +2333,37 @@
|
||||
</div>
|
||||
<div class="setting-row">
|
||||
<div class="setting-with-description">
|
||||
<span class="setting-label">Repair Offline Library</span>
|
||||
<span class="setting-description">Fix offline markers lost during library scans</span>
|
||||
<span class="setting-label">{$t('settings.offlineLibrary.repair')}</span>
|
||||
<span class="setting-description">{$t('settings.offlineLibrary.repairDesc')}</span>
|
||||
</div>
|
||||
<button
|
||||
class="clear-btn"
|
||||
onclick={handleRepairDownloads}
|
||||
disabled={isRepairingDownloads || !downloadStats || downloadStats.readyTracks === 0}
|
||||
>
|
||||
{isRepairingDownloads ? 'Repairing...' : 'Repair'}
|
||||
{isRepairingDownloads ? $t('settings.offlineLibrary.repairing') : $t('actions.repair')}
|
||||
</button>
|
||||
</div>
|
||||
<div class="setting-row">
|
||||
<span class="setting-label">Clear Offline Library</span>
|
||||
<span class="setting-label">{$t('settings.offlineLibrary.clearCache')}</span>
|
||||
<button
|
||||
class="clear-btn"
|
||||
onclick={handleClearDownloads}
|
||||
disabled={isClearingDownloads || !downloadStats || downloadStats.readyTracks === 0}
|
||||
>
|
||||
{isClearingDownloads ? 'Clearing...' : 'Clear All'}
|
||||
{isClearingDownloads ? $t('settings.storage.clearing') : $t('settings.offlineLibrary.clearCache')}
|
||||
</button>
|
||||
</div>
|
||||
<div class="setting-row last">
|
||||
<div class="setting-with-description">
|
||||
<span class="setting-label">Manage Offline Cache</span>
|
||||
<span class="setting-description">Open the cache folder in your file manager</span>
|
||||
<span class="setting-label">{$t('settings.offlineLibrary.manageCache')}</span>
|
||||
<span class="setting-description">{$t('settings.offlineLibrary.manageCacheDesc')}</span>
|
||||
</div>
|
||||
<button
|
||||
class="clear-btn"
|
||||
onclick={handleOpenCacheFolder}
|
||||
>
|
||||
Open Folder
|
||||
{$t('settings.offlineLibrary.openFolder')}
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
@@ -2547,11 +2547,11 @@
|
||||
|
||||
<!-- Updates Section -->
|
||||
<section class="section" bind:this={updatesSection}>
|
||||
<h3 class="section-title">Updates</h3>
|
||||
<h3 class="section-title">{$t('settings.updates.title')}</h3>
|
||||
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Check for new releases on launch</span>
|
||||
<span class="setting-label">{$t('settings.updates.checkOnLaunch')}</span>
|
||||
</div>
|
||||
<Toggle
|
||||
enabled={updatePreferences.checkOnLaunch}
|
||||
@@ -2561,7 +2561,7 @@
|
||||
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Check for updates now</span>
|
||||
<span class="setting-label">{$t('settings.updates.checkNow')}</span>
|
||||
</div>
|
||||
<button
|
||||
class="connect-btn updates-check-btn"
|
||||
@@ -2571,16 +2571,16 @@
|
||||
>
|
||||
{#if isCheckingUpdates}
|
||||
<Loader2 size={14} class="spin" />
|
||||
<span>Checking...</span>
|
||||
<span>{$t('settings.updates.checking')}</span>
|
||||
{:else}
|
||||
<span>Check</span>
|
||||
<span>{$t('settings.updates.check')}</span>
|
||||
{/if}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="setting-row">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Show what's new on new version launch</span>
|
||||
<span class="setting-label">{$t('settings.updates.showWhatsNew')}</span>
|
||||
</div>
|
||||
<Toggle
|
||||
enabled={updatePreferences.showWhatsNewOnLaunch}
|
||||
@@ -2590,9 +2590,9 @@
|
||||
|
||||
<div class="setting-row last">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">Show changelog for current version</span>
|
||||
<span class="setting-label">{$t('settings.updates.showChangelog')}</span>
|
||||
{#if updatesCurrentVersion}
|
||||
<small class="setting-note">Current version: v{updatesCurrentVersion}</small>
|
||||
<small class="setting-note">{$t('settings.updates.currentVersion', { values: { version: updatesCurrentVersion } })}</small>
|
||||
{/if}
|
||||
</div>
|
||||
<button
|
||||
@@ -2600,7 +2600,7 @@
|
||||
onclick={handleShowCurrentChangelog}
|
||||
type="button"
|
||||
>
|
||||
Show
|
||||
{$t('actions.show')}
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
@@ -2763,7 +2763,7 @@
|
||||
onclick={handleClearAllCaches}
|
||||
disabled={isClearingAllCaches}
|
||||
>
|
||||
{isClearingAllCaches ? $t('settings.storage.clearing') : 'Clear All'}
|
||||
{isClearingAllCaches ? $t('settings.storage.clearing') : $t('actions.clearAll')}
|
||||
</button>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -344,8 +344,10 @@
|
||||
"edit": "Edit",
|
||||
"close": "Close",
|
||||
"open": "Open",
|
||||
"show": "Show",
|
||||
"refresh": "Refresh",
|
||||
"retry": "Retry",
|
||||
"repair": "Repair",
|
||||
"clear": "Clear",
|
||||
"clearAll": "Clear All",
|
||||
"confirm": "Confirm",
|
||||
@@ -373,13 +375,36 @@
|
||||
"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.",
|
||||
"audioDevice": "Audio Device",
|
||||
"exclusiveMode": "Exclusive Mode",
|
||||
"exclusiveModeDesc": "Lock audio device for exclusive use",
|
||||
"dacPassthrough": "DAC Passthrough",
|
||||
"dacPassthroughDesc": "Bypass system mixer for bit-perfect output",
|
||||
"currentSampleRate": "Current Sample Rate",
|
||||
"noActivePlayback": "No active playback"
|
||||
"noActivePlayback": "No active playback",
|
||||
"loadingDevices": "Loading devices...",
|
||||
"loadingAudioDevices": "Loading audio devices...",
|
||||
"parsingHardware": "Parsing hardware information",
|
||||
"limitQualityToDevice": "Limit Quality to Device",
|
||||
"limitQualityToDeviceDesc": "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.",
|
||||
"audioBackend": "Audio Backend",
|
||||
"audioBackendDesc": "Choose audio system: Auto (recommended), PipeWire (modern), ALSA Direct (bit-perfect, exclusive), or PulseAudio (legacy).",
|
||||
"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.",
|
||||
"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."
|
||||
},
|
||||
"playback": {
|
||||
"title": "Playback",
|
||||
@@ -465,7 +490,23 @@
|
||||
"disclaimer": "The offline library 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 3 days.",
|
||||
"cachedTracks": "Offline Tracks",
|
||||
"clearCache": "Clear All",
|
||||
"openFolder": "Open Folder"
|
||||
"openFolder": "Open Folder",
|
||||
"repair": "Repair Offline Library",
|
||||
"repairDesc": "Fix offline markers lost during library scans",
|
||||
"manageCache": "Manage Offline Cache",
|
||||
"manageCacheDesc": "Open the cache folder in your file manager",
|
||||
"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}"
|
||||
},
|
||||
"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?",
|
||||
|
||||
@@ -344,8 +344,10 @@
|
||||
"edit": "Editar",
|
||||
"close": "Cerrar",
|
||||
"open": "Abrir",
|
||||
"show": "Mostrar",
|
||||
"refresh": "Actualizar",
|
||||
"retry": "Reintentar",
|
||||
"repair": "Reparar",
|
||||
"clear": "Limpiar",
|
||||
"clearAll": "Limpiar Todo",
|
||||
"confirm": "Confirmar",
|
||||
@@ -373,13 +375,36 @@
|
||||
"streamingQualityDesc": "Calidad máxima para streaming y caché de reproducción",
|
||||
"qualityChangedCacheCleared": "Calidad cambiada. Caché de reproducción limpiado.",
|
||||
"outputDevice": "Dispositivo de Salida",
|
||||
"outputDeviceDesc": "Selecciona tu dispositivo de audio preferido. Se muestran los dispositivos del backend seleccionado.",
|
||||
"audioDevice": "Dispositivo de Audio",
|
||||
"exclusiveMode": "Modo Exclusivo",
|
||||
"exclusiveModeDesc": "Bloquear dispositivo de audio para uso exclusivo",
|
||||
"dacPassthrough": "Passthrough DAC",
|
||||
"dacPassthroughDesc": "Bypass del mixer del sistema para salida bit-perfect",
|
||||
"currentSampleRate": "Tasa de Muestreo Actual",
|
||||
"noActivePlayback": "Sin reproducción activa"
|
||||
"noActivePlayback": "Sin reproducción activa",
|
||||
"loadingDevices": "Cargando dispositivos...",
|
||||
"loadingAudioDevices": "Cargando dispositivos de audio...",
|
||||
"parsingHardware": "Analizando información de hardware",
|
||||
"limitQualityToDevice": "Limitar Calidad al Dispositivo",
|
||||
"limitQualityToDeviceDesc": "Cuando está activado, anula la configuración de calidad si tu dispositivo de audio no soporta la tasa de muestreo seleccionada. Previene el remuestreo para garantizar reproducción bit-perfect.",
|
||||
"audioBackend": "Backend de Audio",
|
||||
"audioBackendDesc": "Elige el sistema de audio: Auto (recomendado), PipeWire (moderno), ALSA Direct (bit-perfect, exclusivo), o PulseAudio (legacy).",
|
||||
"alsaPlugin": "Plugin ALSA",
|
||||
"alsaPluginDesc": "hw: Bit-perfect, exclusivo. plughw: Auto-conversión. pcm: Más compatible.",
|
||||
"hardwareVolume": "Habilitar Control de Volumen por Hardware",
|
||||
"hardwareVolumeDesc": "Experimental: Controla el volumen del DAC vía mixer ALSA. Algunos DACs no lo soportan - desactívalo para máxima compatibilidad. Si falla, la reproducción continúa normalmente.",
|
||||
"helpBitPerfect": "Ayuda con detección de dispositivos bit-perfect",
|
||||
"flatpakWarningTitle": "Limitación de Flatpak:",
|
||||
"flatpakWarningDesc": "PipeWire no puede garantizar reproducción bit-perfect en entornos sandbox debido a restricciones de acceso al daemon.",
|
||||
"flatpakRecommended": "Recomendado:",
|
||||
"flatpakRecommendedDesc": "Cambiar al backend ALSA Direct para audio bit-perfect verdadero.",
|
||||
"streamUncached": "Transmitir Pistas Sin Caché",
|
||||
"streamUncachedDesc": "Inicia la reproducción más rápido cuando la pista no está en caché. La búsqueda puede estar limitada durante el buffering inicial.",
|
||||
"initialBuffer": "Tamaño del Buffer Inicial",
|
||||
"initialBufferDesc": "Segundos a almacenar en buffer antes de iniciar reproducción ({seconds}s)",
|
||||
"streamingOnly": "Solo Streaming",
|
||||
"streamingOnlyDesc": "Desactiva el caché temporal. No recomendado sin una conexión rápida. Las pistas de la biblioteca offline siempre se reproducen primero."
|
||||
},
|
||||
"playback": {
|
||||
"title": "Reproducción",
|
||||
@@ -465,7 +490,23 @@
|
||||
"disclaimer": "La biblioteca offline es un caché temporal de reproducción para escucha sin conexión mientras tengas una suscripción válida de Qobuz. No recibes una licencia para conservar o redistribuir el contenido. Si tu suscripción deja de ser válida, QBZ eliminará todo el contenido en caché después de 3 días.",
|
||||
"cachedTracks": "Pistas Offline",
|
||||
"clearCache": "Limpiar Todo",
|
||||
"openFolder": "Abrir Carpeta"
|
||||
"openFolder": "Abrir Carpeta",
|
||||
"repair": "Reparar Biblioteca Offline",
|
||||
"repairDesc": "Corregir marcadores offline perdidos durante escaneos de biblioteca",
|
||||
"manageCache": "Administrar Caché Offline",
|
||||
"manageCacheDesc": "Abrir la carpeta de caché en tu administrador de archivos",
|
||||
"sectionSummary": "Pistas en caché para reproducción offline",
|
||||
"repairing": "Reparando..."
|
||||
},
|
||||
"updates": {
|
||||
"title": "Actualizaciones",
|
||||
"checkOnLaunch": "Buscar nuevas versiones al iniciar",
|
||||
"checkNow": "Buscar actualizaciones ahora",
|
||||
"checking": "Verificando...",
|
||||
"check": "Verificar",
|
||||
"showWhatsNew": "Mostrar novedades al lanzar nueva versión",
|
||||
"showChangelog": "Mostrar registro de cambios para la versión actual",
|
||||
"currentVersion": "Versión actual: v{version}"
|
||||
},
|
||||
"networkCacheWarning": "La carpeta seleccionada está en una unidad de red.",
|
||||
"networkCacheWarningDetail": "Las pistas en caché pueden no estar disponibles cuando la red esté desconectada o en modo offline. ¿Estás seguro de que quieres usar esta ubicación?",
|
||||
|
||||
Reference in new issue
Block a user