mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
feat(device-sync): overhaul Device Sync page
- New two-panel layout with live album search (search3, 300ms debounce) and 10 random albums when search is empty — replaces full paginated load - Pre-sync summary modal: shows files to add/delete, net change, available space; Proceed button disabled when space is insufficient - calculate_sync_payload now filters already-synced tracks (path exists on device) so add_bytes/add_count reflect the true delta - Space check accounts for pending deletions: addBytes > availableBytes + delBytes - Separate deviceSyncJobStore for ephemeral job progress state - Removable drive detection + auto-poll every 5 s via sysinfo - Desired-state diff: de-selecting a synced source stages it for deletion instead of silently removing it - Status badges (Synced / Pending / Deletion) with matching row highlights - Live-Search badge (⚡) and Zufallsalben section label (⇌) in album browser - Status summary row height aligned with search field (52 px) - i18n: all new keys added to all 8 locales (en/de/fr/nl/nb/zh/ru/es) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ export const nlTranslation = {
|
||||
expand: 'Zijbalk uitklappen',
|
||||
collapse: 'Zijbalk inklappen',
|
||||
downloadingTracks: '{{n}} nummers worden gecached…',
|
||||
syncingTracks: 'Synchroniseren {{done}}/{{total}}…',
|
||||
cancelDownload: 'Download annuleren',
|
||||
offlineLibrary: 'Offline bibliotheek',
|
||||
genres: 'Genres',
|
||||
@@ -1021,8 +1022,15 @@ export const nlTranslation = {
|
||||
title: 'Apparaatsync',
|
||||
targetFolder: 'Doelmap',
|
||||
noFolderChosen: 'Geen map gekozen',
|
||||
selectDrive: 'Selecteer een schijf…',
|
||||
refreshDrives: 'Schijven vernieuwen',
|
||||
noDrivesDetected: 'Geen verwijderbare schijven gedetecteerd',
|
||||
browseManual: 'Handmatig bladeren…',
|
||||
free: 'vrij',
|
||||
notMountedVolume: 'Het doel bevindt zich niet op een gekoppeld volume. De schijf is mogelijk losgekoppeld.',
|
||||
chooseFolder: 'Kiezen…',
|
||||
filenameTemplate: 'Bestandsnaamsjabloon',
|
||||
targetDevice: 'Doelapparaat',
|
||||
templateHint: 'Variabelen: {artist}, {album}, {title}, {track_number}, {disc_number}, {year}',
|
||||
cleanupButton: 'Niet-geselecteerde bestanden verwijderen',
|
||||
cleanupNothingToDelete: 'Niets te verwijderen — apparaat is al gesynchroniseerd.',
|
||||
@@ -1036,6 +1044,10 @@ export const nlTranslation = {
|
||||
tabArtists: 'Artiesten',
|
||||
searchPlaceholder: 'Zoeken…',
|
||||
syncButton: 'Synchroniseren naar apparaat',
|
||||
actionTransfer: 'Overdragen naar apparaat',
|
||||
actionDelete: 'Verwijderen van apparaat',
|
||||
actionApplyAll: 'Alle wijzigingen toepassen',
|
||||
templatePreview: 'Voorbeeld',
|
||||
cancel: 'Annuleren',
|
||||
noTargetDir: 'Kies eerst een doelmap.',
|
||||
noSources: 'Selecteer minimaal één bron.',
|
||||
@@ -1043,5 +1055,33 @@ export const nlTranslation = {
|
||||
fetchError: 'Ophalen van nummers van de server mislukt.',
|
||||
syncComplete: 'Synchronisatie voltooid.',
|
||||
dismiss: 'Sluiten',
|
||||
colName: 'Naam',
|
||||
colType: 'Type',
|
||||
colStatus: 'Status',
|
||||
onDevice: 'Apparaatbeheer',
|
||||
addSources: 'Toevoegen…',
|
||||
syncResult: '{{done}} overgedragen, {{skipped}} al up-to-date ({{total}} totaal)',
|
||||
deleteFromDevice: 'Markeren voor verwijdering ({{count}})',
|
||||
confirmDelete: '{{count}} item(s) van het apparaat verwijderen: {{names}}?',
|
||||
deleteComplete: '{{count}} item(s) van het apparaat verwijderd.',
|
||||
statusSynced: 'Gesynchroniseerd',
|
||||
statusPending: 'In behandeling',
|
||||
statusDeletion: 'Verwijdering',
|
||||
markForDeletion: 'Markeren voor verwijdering',
|
||||
removeSource: 'Verwijderen',
|
||||
undoDeletion: 'Verwijdering ongedaan maken',
|
||||
syncInBackground: 'Sync gestart op achtergrond — u kunt navigeren.',
|
||||
syncInProgress: '{{done}} / {{total}} nummers…',
|
||||
syncSummary: 'Synchronisatieoverzicht',
|
||||
calculating: 'Vereiste payload berekenen…',
|
||||
filesToAdd: 'Te toevoegen bestanden:',
|
||||
filesToDelete: 'Te verwijderen bestanden:',
|
||||
netChange: 'Nettoverandering:',
|
||||
availableSpace: 'Beschikbare schijfruimte:',
|
||||
spaceWarning: 'Waarschuwing: Het doelapparaat heeft niet genoeg gerapporteerde ruimte.',
|
||||
proceed: 'Doorgaan met synchronisatie',
|
||||
notEnoughSpace: 'Onvoldoende fysieke schijfruimte gedetecteerd!',
|
||||
liveSearch: 'Live',
|
||||
randomAlbumsLabel: 'Willekeurige albums',
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user