mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 14:55:43 +00:00
fix(analysis): persist failed tracks and reconcile progress counts (#867)
* fix(analysis): persist failed-track suppression and reduce aggressive polling Persist unsupported/broken analysis tracks as failed entries and expose them in Settings with track metadata, export, and targeted rescan actions. Also make aggressive-mode completion checks cheap by gating re-entry on live track-count changes with a startup seed and 5-minute recheck cadence. * fix(analysis): mark unsupported decode tracks as failed in cpu-seed When full-seed falls back to waveform-only (no EBU loudness) or enrichment decode fails, persist analysis_track status as failed so aggressive backfill does not requeue the same unsupported tracks indefinitely. * fix(analysis): reconcile legacy ready tracks without loudness Auto-mark legacy ready tracks that only miss loudness as failed during needs-work checks so analysis progress converges instead of staying permanently pending. * docs(changelog): add failed-analysis recovery notes for PR 867 Document persistent failed-track handling, analytics strategy controls, and low-cost aggressive-mode recheck behavior in the 1.47.0 changelog. * fix(i18n): align settings locale coverage across all languages Sync missing Settings keys for all shipped locales and replace recent English fallbacks with localized strings so analytics and backup UI text stays consistent outside en/ru.
This commit is contained in:
@@ -516,4 +516,78 @@ export const settings = {
|
||||
floatingPlayerBarSub: 'Hold spillerlinjen flytende over innholdet',
|
||||
uiScaleTitle: 'Grensesnittskala',
|
||||
uiScaleLabel: 'Zoom',
|
||||
confirmDeleteServerLibrary: 'Vil du også slette denne serverens lokale bibliotekindeks? Klikk Avbryt for å beholde den bufrede kopien for offline bruk.',
|
||||
waveformCacheClearBtn: 'Tøm waveform-cache',
|
||||
waveformCacheCleared: 'Waveform-cache tømt ({{count}} rader).',
|
||||
waveformCacheClearFailed: 'Kunne ikke tømme waveform-cache.',
|
||||
showTrayIcon: 'Vis systemstatusikon',
|
||||
showTrayIconDesc: 'Vis Psysonic-ikonet i systemstatusfeltet / menylinjen.',
|
||||
useCustomTitlebar: 'Tilpasset tittellinje',
|
||||
useCustomTitlebarDesc: 'Erstatt systemets tittellinje med en innebygd som matcher app-temaet. Slå av for å bruke den native GNOME/GTK-tittellinjen.',
|
||||
analyticsStrategyTitle: 'Analysestrategier',
|
||||
analyticsStrategyDesc: 'Velg analysestil for biblioteket.',
|
||||
analyticsStrategyLabel: 'Strategi',
|
||||
analyticsStrategyLazy: 'Lat',
|
||||
analyticsStrategyLazyDesc: 'Analyserer bare når spor spiller eller går inn i hot/offline-cache — minimalt CPU- og nettverksbruk.',
|
||||
analyticsStrategyAdvanced: 'Aggressiv',
|
||||
analyticsStrategyAdvancedDesc: 'Mer aggressiv bakgrunnsskanning. Når den er ferdig får du BPM for alle spor samt umiddelbar lasting av loudness og waveform.',
|
||||
analyticsStrategyPriorityTitle: 'Analyseprioritet (alltid aktiv)',
|
||||
analyticsStrategyPriorityHigh: '1 — Spiller nå: last ned og analyser først (avspillingsbytes, loudness-backfill eller HTTP ved behov).',
|
||||
analyticsStrategyPriorityMiddle: '2 — Neste opp: de neste ~5 køsporene, preload av neste og hot-cache-naboer — analyser fra cache/nedlastede bytes når mulig; HTTP-backfill kun ved bom.',
|
||||
analyticsStrategyPriorityLow: '3 — Bibliotekbatch (kun Aggressiv): automatisk bakgrunnskø bakerst; fylles på ved watermark (~3× workers) uten å vente på tom kø.',
|
||||
analyticsStrategyServerLabel: 'Server',
|
||||
analyticsStrategyProgressLabel: 'Analysefremdrift:',
|
||||
analyticsStrategyProgressValue: '{{percent}}% ({{done}}/{{total}})',
|
||||
analyticsStrategyActionsLabel: 'Handlinger',
|
||||
analyticsStrategyParallelismLabel: 'Parallelle workers',
|
||||
analyticsStrategyParallelismValue: '{{n}} tråder',
|
||||
analyticsStrategyParallelismDesc: 'Hvor mange spor som lastes ned og analyseres samtidig (HTTP + CPU). Høyere verdi gjør bibliotekinnhentingen raskere, men bruker mer nettverk og CPU.',
|
||||
analyticsStrategyAdvancedWarning: 'Aggressiv bruker mer CPU og nettverksbåndbredde mens bibliotekbatchen kjører i bakgrunnen.',
|
||||
analyticsStrategyServerRemoved: 'Fjernet server',
|
||||
analyticsStrategyClearAction: 'Tøm analyse',
|
||||
analyticsStrategyClearTitle: 'Tøm analyse?',
|
||||
analyticsStrategyClearDesc: 'Å tømme analyse for {{server}} fjerner bufrede waveforms og loudness. Å legge til serveren igjen senere kan kreve lang reindeksering.',
|
||||
analyticsStrategyClearCancel: 'Avbryt',
|
||||
analyticsStrategyClearConfirm: 'Tøm analyse',
|
||||
analyticsStrategyClearSuccess: 'Analyse tømt for den fjernede serveren.',
|
||||
analyticsStrategyClearError: 'Kunne ikke tømme analyse for den fjernede serveren.',
|
||||
analyticsStrategyProgressEmptyAfterFailed: '100% (0/0, blokkert av feilede spor)',
|
||||
analyticsFailedTracksOpenTitle: 'Feilede spor: {{count}}',
|
||||
analyticsFailedTracksTitle: 'Feilede analysespor — {{server}}',
|
||||
analyticsFailedTracksDesc: 'Disse sporene feilet gjentatte ganger i decode/enrichment og er ekskludert fra automatisk bakgrunnsanalyse.',
|
||||
analyticsFailedTracksLoading: 'Laster liste over feilede spor…',
|
||||
analyticsFailedTracksEmpty: 'Ingen feilede spor for denne serveren.',
|
||||
analyticsFailedTracksClose: 'Lukk',
|
||||
analyticsFailedTracksExport: 'Eksporter liste',
|
||||
analyticsFailedTracksExportSuccess: 'Liste over feilede spor eksportert ({{count}}).',
|
||||
analyticsFailedTracksExportError: 'Kunne ikke eksportere liste over feilede spor.',
|
||||
analyticsFailedTracksRescan: 'Skann feilede spor på nytt',
|
||||
analyticsFailedTracksRescanSuccess: 'Ny skanning planlagt for {{count}} feilede spor.',
|
||||
analyticsFailedTracksRescanError: 'Kunne ikke skanne feilede spor på nytt.',
|
||||
analyticsFailedTracksLoadError: 'Kunne ikke laste feilede spor.',
|
||||
tabAudio: 'Lyd',
|
||||
tabInput: 'Inndata',
|
||||
backupImportAny: 'Importer sikkerhetskopi',
|
||||
backupImportAnyConfirm: 'Importer valgt sikkerhetskopifil og bruk innholdet (innstillinger, bibliotekdatabaser eller full). Fortsette?',
|
||||
backupModeFull: 'Full',
|
||||
backupModeLibrary: 'Bibliotekdatabaser',
|
||||
backupModeConfig: 'Konfig',
|
||||
backupFullDesc: 'Arkiverer innstillinger og bibliotekdatabaser i én sikkerhetskopifil.',
|
||||
backupFullExport: 'Eksporter full sikkerhetskopi',
|
||||
backupFullImport: 'Importer full sikkerhetskopi',
|
||||
backupFullImportConfirm: 'Dette vil overskrive innstillinger, erstatte nåværende bibliotekdatabaser og flytte dem til .bak. Fortsette?',
|
||||
backupFullExportSuccess: 'Full sikkerhetskopi eksportert.',
|
||||
backupFullImportSuccess: 'Full sikkerhetskopi importert — laster inn på nytt…',
|
||||
backupFullImportError: 'Kunne ikke importere full sikkerhetskopi.',
|
||||
backupLibraryExport: 'Eksporter databaser',
|
||||
backupLibraryExportDesc: 'Lager et komprimert arkiv med rene SQLite-øyeblikksbilder av bibliotekdatabaser.',
|
||||
backupLibraryImport: 'Importer databaser',
|
||||
backupLibraryImportDesc: 'Gjenoppretter bibliotekdatabaser fra en arkivfil. Nåværende databaser flyttes til .bak før bytte.',
|
||||
backupLibraryImportConfirm: 'Dette vil erstatte nåværende bibliotekdatabaser og flytte dem til .bak. Fortsette?',
|
||||
backupLibraryExportSuccess: 'Databasesikkerhetskopi eksportert.',
|
||||
backupLibraryImportSuccess: 'Databasesikkerhetskopi importert.',
|
||||
backupLibraryImportError: 'Kunne ikke importere databasesikkerhetskopi.',
|
||||
backupOverlayExportTitle: 'Oppretter sikkerhetskopi…',
|
||||
backupOverlayImportTitle: 'Gjenoppretter sikkerhetskopi…',
|
||||
backupOverlayHint: 'Du kan holde vinduet åpent mens vi behandler filer. Inndata er midlertidig låst.',
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user