quintodrome/resources/i18n/sv.json
Deluan Quintão ab8a58157a
feat: add artist image uploads and image-folder artwork source (#5198)
* feat: add shared ImageUploadService for entity image management

* feat: add UploadedImage field and methods to Artist model

* feat: add uploaded_image column to artist table

* feat: add ArtistImageFolder config option

* refactor: wire ImageUploadService and delegate playlist file ops to it

Wire ImageUploadService into the DI container and refactor the playlist
service to delegate image file operations (SetImage/RemoveImage) to the
shared ImageUploadService, removing duplicated file I/O logic. A local
ImageUploadService interface is defined in core/playlists to avoid an
import cycle between core and core/playlists.

* feat: artist artwork reader checks uploaded image first

* feat: add image-folder priority source for artist artwork

* feat: cache key invalidation for image-folder and uploaded images

* refactor: extract shared image upload HTTP helpers

* feat: add artist image upload/delete API endpoints

* refactor: playlist handlers use shared image upload helpers

* feat: add shared ImageUploadOverlay component

* feat: add i18n keys for artist image upload

* feat: add image upload overlay to artist detail pages

* refactor: playlist details uses shared ImageUploadOverlay component

* fix: add gosec nolint directive for ParseMultipartForm

* refactor: deduplicate image upload code and optimize dir scanning

- Remove dead ImageFilename methods from Artist and Playlist models
  (production code uses core.imageFilename exclusively)
- Extract shared uploadedImagePath helper in model/image.go
- Extract findImageInArtistFolder to deduplicate dir-scanning logic
  between fromArtistImageFolder and getArtistImageFolderModTime
- Fix fileInputRef in useCallback dependency array

* fix: include artist UpdatedAt in artwork cache key

Without this, uploading or deleting an artist image would not
invalidate the cached artwork because the cache key was only based
on album folder timestamps, not the artist's own UpdatedAt field.

* feat: add Portuguese translations for artist image upload

* refactor: use shared i18n keys for cover art upload messages

Move cover art upload/remove translations from per-entity sections
(artist, playlist) to a shared top-level "message" section, avoiding
duplication across entity types and translation files.

* refactor: move cover art i18n keys to shared message section for all languages

* refactor: simplify image upload code and eliminate redundancies

Extracted duplicate image loading/lightbox state logic from
DesktopArtistDetails and MobileArtistDetails into a shared
useArtistImageState hook. Moved entity type constants to the consts
package and replaced raw string literals throughout model, core, and
nativeapi packages. Exported model.UploadedImagePath and reused it in
core/image_upload.go to consolidate path construction. Cached the
ArtistImageFolder lookup result in artistReader to eliminate a redundant
os.ReadDir call on every artwork request.

Signed-off-by: Deluan <deluan@navidrome.org>

* style: fix prettier formatting in ImageUploadOverlay

* fix: address code review feedback on image upload error handling

- RemoveImage now returns errors instead of swallowing them
- Artist handlers distinguish not-found from other DB errors
- Defer multipart temp file cleanup after parsing

* fix: enforce hard request size limit with MaxBytesReader for image uploads

Signed-off-by: Deluan <deluan@navidrome.org>

---------

Signed-off-by: Deluan <deluan@navidrome.org>
2026-03-15 22:19:55 -04:00

715 lines
27 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"languageName": "Svenska",
"resources": {
"song": {
"name": "Låt |||| Låtar",
"fields": {
"albumArtist": "Albumartist",
"duration": "Längd",
"trackNumber": "#",
"playCount": "Spelningar",
"title": "Titel",
"artist": "Artist",
"album": "Album",
"path": "Sökväg",
"genre": "Genre",
"compilation": "Samling",
"year": "År",
"size": "Filstorlek",
"updatedAt": "Uppdaterad",
"bitRate": "Bitrate",
"discSubtitle": "Underrubrik",
"starred": "Favorit",
"comment": "Kommentar",
"rating": "Betyg",
"quality": "Kvalitet",
"bpm": "BPM",
"playDate": "Senast spelad",
"channels": "Channels",
"createdAt": "Skapad",
"grouping": "Gruppering",
"mood": "Stämning",
"participants": "Ytterligare medverkande",
"tags": "Ytterligare taggar",
"mappedTags": "Mappade taggar",
"rawTags": "Omodifierade taggar",
"bitDepth": "Bitdjup",
"sampleRate": "Samplingsfrekvens",
"missing": "Saknade",
"libraryName": "Bibliotek",
"composer": "Kompositör",
"disc": ""
},
"actions": {
"addToQueue": "Lägg till i kön",
"playNow": "Spela nu",
"addToPlaylist": "Lägg till i spellista",
"shuffleAll": "Shuffle",
"download": "Ladda ner",
"playNext": "Spela nästa",
"info": "Mer information",
"showInPlaylist": "Visa i spellista",
"instantMix": "Direktmix"
}
},
"album": {
"name": "Album |||| Album",
"fields": {
"albumArtist": "Albumartist",
"artist": "Artist",
"duration": "Längd",
"songCount": "Antal låtar",
"playCount": "Spelningar",
"name": "Namn",
"genre": "Genre",
"compilation": "Samling",
"year": "År",
"updatedAt": "Uppdaterad",
"comment": "Kommentar",
"rating": "Betyg",
"createdAt": "Skapad",
"size": "Storlek",
"originalDate": "Originaldatum",
"releaseDate": "Utgivningsdatum",
"releases": "Utgåva |||| Utgåvor",
"released": "Utgiven",
"recordLabel": "Skivbolag",
"catalogNum": "Katalognummer",
"releaseType": "Typ",
"grouping": "Gruppering",
"media": "Media",
"mood": "Stämning",
"date": "Inspelningsdatum",
"missing": "Saknade",
"libraryName": "Bibliotek"
},
"actions": {
"playAll": "Spela",
"playNext": "Spela härnäst",
"addToQueue": "Lägg till i kön",
"shuffle": "Shuffle",
"addToPlaylist": "Lägg till i spellista",
"download": "Ladda ner",
"info": "Mer information",
"share": "Dela"
},
"lists": {
"all": "Alla",
"random": "Blanda",
"recentlyAdded": "Senast tillagda",
"recentlyPlayed": "Senast spelade",
"mostPlayed": "Mest spelade",
"starred": "Favoriter",
"topRated": "Bästa betyg"
}
},
"artist": {
"name": "Artist |||| Artister",
"fields": {
"name": "Namn",
"albumCount": "Antal album",
"songCount": "Antal låtar",
"playCount": "Spelningar",
"rating": "Betyg",
"genre": "Genre",
"size": "Storlek",
"role": "Roll",
"missing": "Saknade"
},
"roles": {
"albumartist": "Albumartist |||| Albumartister",
"artist": "Artist |||| Artister",
"composer": "Kompositör |||| Kompositörer",
"conductor": "Dirigent |||| Dirigenter",
"lyricist": "Textförfattare |||| Textförfattare",
"arranger": "Arrangör |||| Arrangörer",
"producer": "Producent |||| Producenter",
"director": "Inspelningsledare |||| Inspelningsledare",
"engineer": "Ljudtekniker |||| Ljudtekniker",
"mixer": "Mixare |||| Mixare",
"remixer": "Remixare |||| Remixare",
"djmixer": "DJ-mixare |||| DJ-mixare",
"performer": "Utövande artist |||| Utövande artister",
"maincredit": "Albumartister eller Artist |||| Albumartister eller Artister"
},
"actions": {
"shuffle": "Shuffle",
"radio": "Radio",
"topSongs": "Topplåtar"
}
},
"user": {
"name": "Användare |||| Användare",
"fields": {
"userName": "Användarnamn",
"isAdmin": "Är admin",
"lastLoginAt": "Senaste inloggning",
"updatedAt": "Uppdaterad",
"name": "Namn",
"password": "Lösenord",
"createdAt": "Skapad",
"changePassword": "Byt lösenord?",
"currentPassword": "Nuvarande lösenord",
"newPassword": "Nytt lösenord",
"token": "Token",
"lastAccessAt": "Senaste åtkomst",
"libraries": "Bibliotek"
},
"helperTexts": {
"name": "Ändringar av ditt namn syns först vid nästa inloggning",
"libraries": "Välj ett bibliotek för denna användare eller lämna blankt för standardbibliotek"
},
"notifications": {
"created": "Användare skapad",
"updated": "Användare uppdaterad",
"deleted": "Användare borttagen"
},
"message": {
"listenBrainzToken": "Ange din ListenBrainz användar-token.",
"clickHereForToken": "Klicka här för att hämta din token",
"selectAllLibraries": "Välj alla bibliotek",
"adminAutoLibraries": "Administratörer har automatiskt tillgång till alla bibliotek"
},
"validation": {
"librariesRequired": "Minst ett bibliotek måste väljas för icke-administratörer"
}
},
"player": {
"name": "Spelare |||| Spelare",
"fields": {
"name": "Namn",
"transcodingId": "Omkodning",
"maxBitRate": "Max. bitrate",
"client": "Klient",
"userName": "Användarnamn",
"lastSeen": "Senast sedd",
"reportRealPath": "Visa hela sökvägen",
"scrobbleEnabled": "Scrobbla till extern tjänst"
}
},
"transcoding": {
"name": "Omkodning |||| Omkodningar",
"fields": {
"name": "Namn",
"targetFormat": "Målformat",
"defaultBitRate": "Standardbitrate",
"command": "Kommando"
}
},
"playlist": {
"name": "Spellista |||| Spellistor",
"fields": {
"name": "Namn",
"duration": "Längd",
"ownerName": "Ägare",
"public": "Offentlig",
"updatedAt": "Uppdaterad",
"createdAt": "Skapad",
"songCount": "Låtar",
"comment": "Kommentar",
"sync": "Auto-import",
"path": "Importera från"
},
"actions": {
"selectPlaylist": "Välj en spellista:",
"addNewPlaylist": "Skapa \"%{name}\"",
"export": "Exportera",
"makePublic": "Gör offentlig",
"makePrivate": "Gör privat",
"saveQueue": "Spara kö till spellista",
"searchOrCreate": "Sök spellista eller skapa ny...",
"pressEnterToCreate": "Tryck Enter för att skapa ny spellista",
"removeFromSelection": "Ta bort från urval"
},
"message": {
"duplicate_song": "Lägg till dubletter",
"song_exist": "Vissa låtar finns redan i spellistan. Vill du lägga till dubbletterna eller hoppa över dem?",
"noPlaylistsFound": "Hittade inga spellistor",
"noPlaylists": "Inga spellistor tillgängliga"
}
},
"radio": {
"name": "Radio |||| Radior",
"fields": {
"name": "Namn",
"streamUrl": "Stream-URL",
"homePageUrl": "Hemside-URL",
"updatedAt": "Uppdaterad",
"createdAt": "Skapad"
},
"actions": {
"playNow": "Spela nu"
}
},
"share": {
"name": "Dela |||| Delningar",
"fields": {
"username": "Delad av",
"url": "URL",
"description": "Beskrivning",
"contents": "Innehåll",
"expiresAt": "Giltig till",
"lastVisitedAt": "Senast besökt",
"visitCount": "Besök",
"format": "Format",
"maxBitRate": "Max. bitrate",
"updatedAt": "Uppdaterad",
"createdAt": "Skapad",
"downloadable": "Tillåt nedladdning?"
}
},
"missing": {
"name": "Saknad fil |||| Saknade filer",
"fields": {
"path": "Sökväg",
"size": "Storlek",
"updatedAt": "Försvann",
"libraryName": "Bibliotek"
},
"actions": {
"remove": "Radera",
"remove_all": "Radera alla"
},
"notifications": {
"removed": "Saknade fil(er) borttagna"
},
"empty": "Inga saknade filer"
},
"library": {
"name": "Bibliotek |||| Bibliotek",
"fields": {
"name": "Namn",
"path": "Sökväg",
"remotePath": "Ta bort sökväg",
"lastScanAt": "Senaste scan",
"songCount": "Låtar",
"albumCount": "Album",
"artistCount": "Artister",
"totalSongs": "Låtar",
"totalAlbums": "Album",
"totalArtists": "Artister",
"totalFolders": "Mappar",
"totalFiles": "Filer",
"totalMissingFiles": "Saknade filer",
"totalSize": "Sammanlagd storlek",
"totalDuration": "Längd",
"defaultNewUsers": "Standard för nya användare",
"createdAt": "Skapad",
"updatedAt": "Uppdaterad"
},
"sections": {
"basic": "Grundinformation",
"statistics": "Statistik"
},
"actions": {
"scan": "Scanna bibliotek",
"manageUsers": "Hantera användaråtkomst",
"viewDetails": "Se detaljer",
"quickScan": "Snabbscan",
"fullScan": "Komplett scan"
},
"notifications": {
"created": "Biblioteket har skapats",
"updated": "Biblioteket har uppdaterats",
"deleted": "Biblioteket har raderats",
"scanStarted": "Biblioteksscan startad",
"scanCompleted": "Biblioteksscan avslutad",
"quickScanStarted": "Snabbscan startad",
"fullScanStarted": "Komplett scan startad",
"scanError": "Fel vid start av scan. Se loggarna"
},
"validation": {
"nameRequired": "Biblioteksnamn krävs",
"pathRequired": "Bibliotekssökväg krävs",
"pathNotDirectory": "Bibliotekssökvägen måste vara en katalog",
"pathNotFound": "Bibliotekssökväg hittades inte",
"pathNotAccessible": "Bibliotekssökväg inte tillgänglig",
"pathInvalid": "Ogiltig bibliotekssökväg"
},
"messages": {
"deleteConfirm": "Är du säker på att du vill ta bort detta bibliotek? Detta raderar all förbunden data och användartillgång.",
"scanInProgress": "Scanning pågår...",
"noLibrariesAssigned": "Inga bibliotek har tilldelats den här användaren"
}
},
"plugin": {
"name": "Tillägg |||| Tillägg",
"fields": {
"id": "ID",
"name": "Namn",
"description": "Beskrivning",
"version": "Version",
"author": "Författare",
"website": "Website",
"permissions": "Behörigheter",
"enabled": "Aktiverad",
"status": "Status",
"path": "Sökväg",
"lastError": "Fel",
"hasError": "Fel",
"updatedAt": "Uppdaterad",
"createdAt": "Installerad",
"configKey": "Nyckel",
"configValue": "Värde",
"allUsers": "Tillåt alla användare",
"selectedUsers": "Valda användare",
"allLibraries": "Tillåt alla bibliotek",
"selectedLibraries": "Valda bibliotek",
"allowWriteAccess": ""
},
"sections": {
"status": "Status",
"info": "Tilläggsinformation",
"configuration": "Konfiguration",
"manifest": "Manifest",
"usersPermission": "Användarbehörigheter",
"libraryPermission": "Biblioteksbehörigheter"
},
"status": {
"enabled": "Aktiverad",
"disabled": "Inaktiverad"
},
"actions": {
"enable": "Aktivera",
"disable": "Inaktivera",
"disabledDueToError": "Åtgärda felet innan aktivering",
"disabledUsersRequired": "Välj användare före aktivering",
"disabledLibrariesRequired": "Välj bibliotek före aktivering",
"addConfig": "Lägg till konfiguration",
"rescan": "Scanna om"
},
"notifications": {
"enabled": "Tillägg aktiverat",
"disabled": "Tillägg inaktiverat",
"updated": "Tillägg uppdaterat",
"error": "Fel vid uppdatering av tillägg"
},
"validation": {
"invalidJson": "Konfigurationen måste vara giltig JSON"
},
"messages": {
"configHelp": "Konfigurera tillägget med nyckelvärde-par. Lämna tomt om tillägget inte kräver någon konfiguration.",
"clickPermissions": "Klicka på en behörighet för mer information",
"noConfig": "Ingen konfiguration angiven",
"allUsersHelp": "När den är aktiverad får tillägget tillgång till alla användare, inklusive de som skapas i framtiden.",
"noUsers": "Inga användare valda",
"permissionReason": "Orsak",
"usersRequired": "Detta tillägg kräver åtkomst till användarinformation. Välj vilka användare insticksprogrammet ska ha åtkomst till, eller aktivera 'Tillåt alla användare'.",
"allLibrariesHelp": "När den är aktiverad får tillägget tillgång till alla bibliotek, inklusive de som skapas i framtiden.",
"noLibraries": "Inga bibliotek valda",
"librariesRequired": "Detta tillägg kräver tillgång till biblioteksinformation. Välj vilka bibliotek tillägget kan komma åt eller aktivera 'Tillåt alla bibliotek'.",
"requiredHosts": "Krävda värdar",
"configValidationError": "Validering av konfigurationen misslyckades:",
"schemaRenderError": "Kunde inte rendera konfigurationsformuläret. Tilläggets schema kan vara ogiltigt.",
"allowWriteAccessHelp": ""
},
"placeholders": {
"configKey": "nyckel",
"configValue": "värde"
}
}
},
"ra": {
"auth": {
"welcome1": "Tack för att du installerade Navidrome!",
"welcome2": "Skapa först ett admin-konto",
"confirmPassword": "Bekräfta lösenord",
"buttonCreateAdmin": "Skapa admin-konto",
"auth_check_error": "Logga in för att fortsätta",
"user_menu": "Profil",
"username": "Användarnamn",
"password": "Lösenord",
"sign_in": "Logga in",
"sign_in_error": "Felaktig inloggning, försök igen",
"logout": "Logga ut",
"insightsCollectionNote": "Navidrome samlar anonym användardata för att\nhjälpa projektet att bli bättre. Klicka [här]\nför att läsa mer och avaktivera om du vill"
},
"validation": {
"invalidChars": "Använd enbart bokstäver och siffror",
"passwordDoesNotMatch": "Lösenordet matchar inte",
"required": "Krävs",
"minLength": "Måste ha minst %{min} tecken",
"maxLength": "Får maximalt ha %{max} tecken",
"minValue": "Måste vara minst %{min}",
"maxValue": "Får maximalt vara %{max}",
"number": "Måste vara ett nummer",
"email": "Måste vara en giltig e-postadress",
"oneOf": "Måste vara en av: %{options}",
"regex": "Måste matcha ett specifikt format (regexp): %{pattern}",
"unique": "Måste vara unik",
"url": "Måste vara en giltig URL"
},
"action": {
"add_filter": "Lägg till filter",
"add": "Lägg till",
"back": "Tillbaka",
"bulk_actions": "1 objekt vald |||| %{smart_count} objekt valda",
"cancel": "Avbryt",
"clear_input_value": "Rensa",
"clone": "Klona",
"confirm": "Bekräfta",
"create": "Skapa",
"delete": "Ta bort",
"edit": "Redigera",
"export": "Exportera",
"list": "Lista",
"refresh": "Uppdatera",
"remove_filter": "Ta bort filter",
"remove": "Radera",
"save": "Spara",
"search": "Sök",
"show": "Visa",
"sort": "Sortera",
"undo": "Ångra",
"expand": "Expandera",
"close": "Stäng",
"open_menu": "Öppna meny",
"close_menu": "Stäng meny",
"unselect": "Avmarkera",
"skip": "Hoppa över",
"bulk_actions_mobile": "1 |||| %{smart_count}",
"share": "Dela",
"download": "Ladda ner"
},
"boolean": {
"true": "Ja",
"false": "Nej"
},
"page": {
"create": "Skapa %{name}",
"dashboard": "Dashboard",
"edit": "%{name} #%{id}",
"error": "Ett fel uppstod",
"list": "%{name}",
"loading": "Laddar",
"not_found": "Hittade inget",
"show": "%{name} #%{id}",
"empty": "Ingen %{name} ännu.",
"invite": "Vill du lägga till en?"
},
"input": {
"file": {
"upload_several": "Dra och släpp filer som ska laddas upp eller klicka för att välja dem.",
"upload_single": "Dra och släpp en fil som ska laddas upp eller klicka för att välja en fil."
},
"image": {
"upload_several": "Dra och släpp bilder som ska laddas upp eller klicka för att välja dem.",
"upload_single": "Dra och släpp en bild som ska laddas upp eller klicka för att välja en bild."
},
"references": {
"all_missing": "Hittade ingen referensdata.",
"many_missing": "Minst en av de associerade referenserna verkar inte längre vara tillgänglig.",
"single_missing": "Associerade referenser verkar inte längre vara tillgängliga."
},
"password": {
"toggle_visible": "Dölj password",
"toggle_hidden": "Visa password"
}
},
"message": {
"about": "Om",
"are_you_sure": "Är du säker?",
"bulk_delete_content": "Vill du verkligen ta bort %{name}? |||| Vill du verkligen ta bort dessa %{smart_count} objekt?",
"bulk_delete_title": "Ta bort %{name} |||| Ta bort %{smart_count} %{name}",
"delete_content": "Vill du verkligen ta bort detta innehåll?",
"delete_title": "Ta bort %{name} #%{id}",
"details": "Detaljer",
"error": "Ett klientfel uppstod och begäran kunde inte slutföras.",
"invalid_form": "Formuläret är ogiltigt. Kontrollera eventuella fel",
"loading": "Sidan läses in, var god vänta",
"no": "Nej",
"not_found": "Antingen skrev du fel URL eller så följde du en ogiltig länk.",
"yes": "Ja",
"unsaved_changes": "Du har osparade ändringar. Ignorera dem?"
},
"navigation": {
"no_results": "Inga resultat hittades",
"no_more_results": "Sidnumret %{page} finns inte. Gå tillbaka till föregående sida.",
"page_out_of_boundaries": "Sidnumret %{page} finns inte",
"page_out_from_end": "Det finns inga fler sidor",
"page_out_from_begin": "Det finns ingen sida före sida 1",
"page_range_info": "%{offsetBegin}-%{offsetEnd} av %{total}",
"page_rows_per_page": "Antal per sida:",
"next": "Nästa",
"prev": "Föregående",
"skip_nav": "Hoppa till innehåll"
},
"notification": {
"updated": "Element uppdaterat |||| %{smart_count} element uppdaterade",
"created": "Element skapat",
"deleted": "Element borttaget |||| %{smart_count} element borttagna",
"bad_item": "Felaktigt element",
"item_doesnt_exist": "Element finns inte",
"http_error": "Kommunikationsfel med servern",
"data_provider_error": "Fel i dataProvider. Kontrollera din konsol för mer information.",
"i18n_error": "Kunde inte läsa in översättningen av det valda språket",
"canceled": "Åtgärden avbröts",
"logged_out": "Sessionen har avslutats, anslut på nytt.",
"new_version": "Det finns en ny version! Uppdatera detta fönster."
},
"toggleFieldsMenu": {
"columnsToDisplay": "Kolumner att visa",
"layout": "Layout",
"grid": "Rutnät",
"table": "Tabell"
}
},
"message": {
"note": "OBSERVERA",
"transcodingDisabled": "Inställning för kodning via webbgränssnittet är av säkerhetsskäl ej aktiverat. Starta om servern med alternativet %{config} markerat om du vill göra ändringar (redigera eller lägga till).",
"transcodingEnabled": "Navidrome körs för närvarande med %{config}, vilket gör att systemkommandon kan köras från webbplattformen. Du rekommenderas av säkerhetsskäl att du stänger av den och bara slår på den när du ställer in omkodning.",
"songsAddedToPlaylist": "La till en låt i spellistan |||| La till %{smart_count} låtar i spellistan",
"noPlaylistsAvailable": "Ingen tillgänglig",
"delete_user_title": "Ta bort användare '%{name}'",
"delete_user_content": "Är du säker på att du vill ta bort denna användare (inklusive spellistor och inställningar)?",
"notifications_blocked": "Du har blockerat meddelanden från denna sajt in din webbläsares inställningar",
"notifications_not_available": "Denna webbläsare stödjer inte skrivbordsmeddelanden eller du använder inte Navidrome via https",
"lastfmLinkSuccess": "Last.fm är länkat och scrobbling är aktivt",
"lastfmLinkFailure": "Last.fm kunde inte länkas",
"lastfmUnlinkSuccess": "Last.fm är inte längre länkat och scrobbling är deaktiverat",
"lastfmUnlinkFailure": "Last.fm kunde inte avlänkas",
"openIn": {
"lastfm": "Öppna i Last.fm",
"musicbrainz": "Öppna i MusicBrainz"
},
"lastfmLink": "Läs mer...",
"listenBrainzLinkSuccess": "ListenBrainz är länkat och scrobbling är aktivt som användare: %{user}",
"listenBrainzLinkFailure": "ListenBrainz kunde inte länkas: %{error}",
"listenBrainzUnlinkSuccess": "ListenBrainz är inte längre länkat och scrobbling är deaktiverat",
"listenBrainzUnlinkFailure": "ListenBrainz kunde inte avlänkas",
"downloadOriginalFormat": "Ladda ner i originalformat",
"shareOriginalFormat": "Dela i originalformat",
"shareDialogTitle": "Dela %{resource} '%{name}'",
"shareBatchDialogTitle": "Dela en %{resource} |||| Dela %{smart_count} %{resource}",
"shareSuccess": "URL kopierades till urklipp: %{url}",
"shareFailure": "Fel vid kopiering av URL %{url} till urklipp",
"downloadDialogTitle": "Ladda ner %{resource} '%{name}' (%{size})",
"shareCopyToClipboard": "Kopiera till urklipp: Ctrl+C, Enter",
"remove_missing_title": "Ta bort saknade filer",
"remove_missing_content": "Är du säker på att du vill ta bort de valda saknade filerna från databasen? Detta kommer permanent radera alla referenser till dem, inklusive antal spelningar och betyg.",
"remove_all_missing_title": "Ta bort alla saknade filer",
"remove_all_missing_content": "Är du säker på att du vill ta bort alla saknade filer från databasen? Detta kommer permanent radera alla referenser till dem, inklusive antal spelningar och betyg.",
"noSimilarSongsFound": "Hittade inga liknande låtar",
"noTopSongsFound": "Hittade inga topplåtar",
"startingInstantMix": "Laddar direktmix..."
},
"menu": {
"library": "Bibliotek",
"settings": "Inställningar",
"version": "Version",
"theme": "Tema",
"personal": {
"name": "Personligt",
"options": {
"theme": "Tema",
"language": "Språk",
"defaultView": "Standardvy",
"desktop_notifications": "Skrivbordsmeddelanden",
"lastfmScrobbling": "Scrobbla till Last.fm",
"listenBrainzScrobbling": "Scrobbla till ListenBrainz",
"replaygain": "ReplayGain-läge",
"preAmp": "ReplayGain PreAmp (dB)",
"gain": {
"none": "Inaktiverad",
"album": "Använd gain för album",
"track": "Använd gain für låtar"
},
"lastfmNotConfigured": "Last.fm API-nyckel är inte konfigurerad"
}
},
"albumList": "Album",
"about": "Om",
"playlists": "Spellistor",
"sharedPlaylists": "Delade spellistor",
"librarySelector": {
"allLibraries": "Alla bibliotek (%{count})",
"multipleLibraries": "%{selected} av %{total} bibliotek",
"selectLibraries": "Välj bibliotek",
"none": "Inga"
}
},
"player": {
"playListsText": "Spela kön",
"openText": "Öppna",
"closeText": "Stäng",
"notContentText": "Ingen musik",
"clickToPlayText": "Klicka för att spela",
"clickToPauseText": "Klicka för att pausa",
"nextTrackText": "Nästa låt",
"previousTrackText": "Föregående låt",
"reloadText": "Ladda om",
"volumeText": "Volym",
"toggleLyricText": "Låttext av/på",
"toggleMiniModeText": "Minimera",
"destroyText": "Radera",
"downloadText": "Ladda ner",
"removeAudioListsText": "Ta bort audiolistor",
"clickToDeleteText": "Klicka för att ta bort %{name}",
"emptyLyricText": "Ingen låttext",
"playModeText": {
"order": "I ordningsföljd",
"orderLoop": "Upprepa",
"singleLoop": "Upprepa en",
"shufflePlay": "Shuffle"
}
},
"about": {
"links": {
"homepage": "Hemsida",
"source": "Källkod",
"featureRequests": "Funktionalitetförfrågan",
"lastInsightsCollection": "Senaste Insights-kollektion",
"insights": {
"disabled": "Inaktiverad",
"waiting": "Väntar"
}
},
"tabs": {
"about": "Om",
"config": "Inställningar"
},
"config": {
"configName": "Inställningsnamn",
"environmentVariable": "Miljövariabel",
"currentValue": "Nuvarande värde",
"configurationFile": "Inställningsfil",
"exportToml": "Exportera inställningar (TOML)",
"exportSuccess": "Inställningarna kopierade till urklippet i TOML-format",
"exportFailed": "Kopiering av inställningarna misslyckades",
"devFlagsHeader": "Utvecklingsflaggor (kan ändras eller tas bort)",
"devFlagsComment": "Dessa inställningar är experimentella och kan tas bort i framtida versioner",
"downloadToml": "Ladda ner konfiguration (TOML)"
}
},
"activity": {
"title": "Aktivitet",
"totalScanned": "Genomsökta mappar",
"quickScan": "Snabbscan",
"fullScan": "Komplett scan",
"serverUptime": "Serverdrifttid",
"serverDown": "OFFLINE",
"scanType": "Typ",
"status": "Fel vid scanning",
"elapsedTime": "Spelad tid",
"selectiveScan": "Urval"
},
"help": {
"title": "Navidrome kortkommandon",
"hotkeys": {
"show_help": "Visa denna hjälp",
"toggle_menu": "Växla sidomeny",
"toggle_play": "Spela / pausa",
"prev_song": "Föregående låt",
"next_song": "Nästa låt",
"vol_up": "Volym upp",
"vol_down": "Volym ner",
"toggle_love": "Lägg till låt i favoriter",
"current_song": "Hoppa till nuvarande låt"
}
},
"nowPlaying": {
"title": "Spelas nu",
"empty": "Inget spelas",
"minutesAgo": "%{smart_count} minut sedan |||| %{smart_count} minuter sedan"
}
}