diff --git a/core/common_test.go b/core/common_test.go
new file mode 100644
index 000000000..c8dde12d9
--- /dev/null
+++ b/core/common_test.go
@@ -0,0 +1,55 @@
+package core
+
+import (
+ "context"
+
+ . "github.com/onsi/ginkgo/v2"
+ . "github.com/onsi/gomega"
+
+ "github.com/navidrome/navidrome/model"
+ "github.com/navidrome/navidrome/model/request"
+ "github.com/navidrome/navidrome/tests"
+)
+
+var _ = Describe("common.go", func() {
+ Describe("userName", func() {
+ It("returns the username from context", func() {
+ ctx := request.WithUser(context.Background(), model.User{UserName: "testuser"})
+ Expect(userName(ctx)).To(Equal("testuser"))
+ })
+
+ It("returns 'UNKNOWN' if no user in context", func() {
+ ctx := context.Background()
+ Expect(userName(ctx)).To(Equal("UNKNOWN"))
+ })
+ })
+
+ Describe("AbsolutePath", func() {
+ var (
+ ds *tests.MockDataStore
+ libId int
+ path string
+ )
+
+ BeforeEach(func() {
+ ds = &tests.MockDataStore{}
+ libId = 1
+ path = "music/file.mp3"
+ mockLib := &tests.MockLibraryRepo{}
+ mockLib.SetData(model.Libraries{{ID: libId, Path: "/library/root"}})
+ ds.MockedLibrary = mockLib
+ })
+
+ It("returns the absolute path when library exists", func() {
+ ctx := context.Background()
+ abs := AbsolutePath(ctx, ds, libId, path)
+ Expect(abs).To(Equal("/library/root/music/file.mp3"))
+ })
+
+ It("returns the original path if library not found", func() {
+ ctx := context.Background()
+ abs := AbsolutePath(ctx, ds, 999, path)
+ Expect(abs).To(Equal(path))
+ })
+ })
+})
diff --git a/persistence/mediafile_repository.go b/persistence/mediafile_repository.go
index ebf07ce17..a86c8f668 100644
--- a/persistence/mediafile_repository.go
+++ b/persistence/mediafile_repository.go
@@ -77,7 +77,7 @@ func NewMediaFileRepository(ctx context.Context, db dbx.Builder) model.MediaFile
"title": "order_title",
"artist": "order_artist_name, order_album_name, release_date, disc_number, track_number",
"album_artist": "order_album_artist_name, order_album_name, release_date, disc_number, track_number",
- "album": "order_album_name, release_date, disc_number, track_number, order_artist_name, title",
+ "album": "order_album_name, album_id, disc_number, track_number, order_artist_name, title",
"random": "random",
"created_at": "media_file.created_at",
"starred_at": "starred, starred_at",
@@ -242,7 +242,7 @@ func (r *mediaFileRepository) MarkMissingByFolder(missing bool, folderIDs ...str
// GetMissingAndMatching returns all mediafiles that are missing and their potential matches (comparing PIDs)
// that were added/updated after the last scan started. The result is ordered by PID.
-// It does not need to load bookmarks, annotations and participnts, as they are not used by the scanner.
+// It does not need to load bookmarks, annotations and participants, as they are not used by the scanner.
func (r *mediaFileRepository) GetMissingAndMatching(libId int) (model.MediaFileCursor, error) {
subQ := r.newSelect().Columns("pid").
Where(And{
diff --git a/resources/i18n/ca.json b/resources/i18n/ca.json
index 4049695f5..e3e7b544e 100644
--- a/resources/i18n/ca.json
+++ b/resources/i18n/ca.json
@@ -18,6 +18,9 @@
"size": "Mida del fitxer",
"updatedAt": "Actualitzat",
"bitRate": "Taxa de bits",
+ "bitDepth": "Bits",
+ "sampleRate": "Freqüencia de mostreig",
+ "channels": "Canals",
"discSubtitle": "Subtítol del disc",
"starred": "Preferit",
"comment": "Comentari",
@@ -25,8 +28,13 @@
"quality": "Qualitat",
"bpm": "tempo",
"playDate": "Darrer resproduït",
- "channels": "Canals",
- "createdAt": ""
+ "createdAt": "Creat el",
+ "grouping": "Agrupació",
+ "mood": "Sentiment",
+ "participants": "Participants",
+ "tags": "Etiquetes",
+ "mappedTags": "Etiquetes assignades",
+ "rawTags": "Etiquetes sense processar"
},
"actions": {
"addToQueue": "Reprodueix després",
@@ -46,6 +54,7 @@
"duration": "Durada",
"songCount": "Cançons",
"playCount": "Reproduccions",
+ "size": "Mida",
"name": "Nom",
"genre": "Gènere",
"compilation": "Compilació",
@@ -53,22 +62,28 @@
"updatedAt": "Actualitzat ",
"comment": "Comentari",
"rating": "Valoració",
- "createdAt": "",
- "size": "",
- "originalDate": "",
- "releaseDate": "",
- "releases": "",
- "released": ""
+ "createdAt": "Creat el",
+ "size": "Mida",
+ "originalDate": "Original",
+ "releaseDate": "Publicat",
+ "releases": "LLançament |||| Llançaments",
+ "released": "Publicat",
+ "recordLabel": "Discogràfica",
+ "catalogNum": "Número de catàleg",
+ "releaseType": "Tipus de publicació",
+ "grouping": "Agrupació",
+ "media": "Mitjà",
+ "mood": "Sentiment"
},
"actions": {
"playAll": "Reprodueix",
"playNext": "Reprodueix la següent",
"addToQueue": "Reprodueix després",
+ "share": "Compartir",
"shuffle": "Aleatori",
"addToPlaylist": "Afegeix a la llista",
"download": "Descarrega",
- "info": "Obtén informació",
- "share": ""
+ "info": "Obtén informació"
},
"lists": {
"all": "Tot",
@@ -85,11 +100,27 @@
"fields": {
"name": "Nom",
"albumCount": "Nombre d'àlbums",
- "songCount": "Compte de cançons",
+ "songCount": "Nombre de cançons",
+ "size": "Mida",
"playCount": "Reproduccions",
"rating": "Valoració",
"genre": "Gènere",
- "size": ""
+ "role": "Rol"
+ },
+ "roles": {
+ "albumartist": "Artista de l'Àlbum |||| Artistes de l'Àlbum",
+ "artist": "Artista |||| Artistes",
+ "composer": "Compositor |||| Compositors",
+ "conductor": "Conductor |||| Conductors",
+ "lyricist": "Lletrista |||| Lletristes",
+ "arranger": "Arranjador |||| Arranjadors",
+ "producer": "Productor |||| Productors",
+ "director": "Director |||| Directors",
+ "engineer": "Enginyer |||| Enginyers",
+ "mixer": "Mesclador |||| Mescladors",
+ "remixer": "Remesclador |||| Remescladors",
+ "djmixer": "DJ Mesclador |||| DJ Mescladors",
+ "performer": "Intèrpret |||| Intèrprets"
}
},
"user": {
@@ -98,6 +129,7 @@
"userName": "Nom d'usuari",
"isAdmin": "És admin",
"lastLoginAt": "Última connexió",
+ "lastAccessAt": "Últim Accés",
"updatedAt": "Actualitzat",
"name": "Nom",
"password": "Contrasenya",
@@ -169,36 +201,53 @@
}
},
"radio": {
- "name": "",
+ "name": "Ràdio |||| Ràdios",
"fields": {
- "name": "",
- "streamUrl": "",
- "homePageUrl": "",
- "updatedAt": "",
- "createdAt": ""
+ "name": "Nom",
+ "streamUrl": "URL del flux",
+ "homePageUrl": "URL principal",
+ "updatedAt": "Actualitzat",
+ "createdAt": "Creat"
},
"actions": {
- "playNow": ""
+ "playNow": "Reprodueix"
}
},
"share": {
- "name": "",
+ "name": "Compartir |||| Compartits",
"fields": {
- "username": "",
- "url": "",
- "description": "",
- "contents": "",
- "expiresAt": "",
- "lastVisitedAt": "",
- "visitCount": "",
- "format": "",
- "maxBitRate": "",
- "updatedAt": "",
- "createdAt": "",
- "downloadable": ""
- }
- }
- },
+ "username": "Compartit per",
+ "url": "URL",
+ "description": "Descripció",
+ "downloadable": "Permet descarregar?",
+ "contents": "Continguts",
+ "expiresAt": "Caduca",
+ "lastVisitedAt": "Última Visita",
+ "visitCount": "Visites",
+ "format": "Format",
+ "maxBitRate": "Taxa de bits màx.",
+ "updatedAt": "Actualitzat",
+ "createdAt": "Creat"
+ },
+ "notifications": {},
+ "actions": {}
+ },
+ "missing": {
+ "name": "Fitxer faltant |||| Fitxers Faltants",
+ "empty": "No falten fitxers",
+ "fields": {
+ "path": "Directori",
+ "size": "Mida",
+ "updatedAt": "Desaparegut"
+ },
+ "actions": {
+ "remove": "Eliminar"
+ },
+ "notifications": {
+ "removed": "Fitxers faltants eliminats"
+ }
+ }
+ },
"ra": {
"auth": {
"welcome1": "Gràcies d'haver instal·lat Navidrome!",
@@ -211,28 +260,30 @@
"password": "Contrasenya",
"sign_in": "Inicia sessió",
"sign_in_error": "L'autenticació ha fallat, torneu-ho a intentar",
- "logout": "Sortida"
+ "logout": "Sortida",
+ "insightsCollectionNote": "Navidrome recull dades d'us anonimitzades per\najudar a millorar el projecte. Clica [aquí] per a saber-ne\nmés i no participar-hi si no vols"
},
"validation": {
- "invalidChars": "Si us plau, useu solament lletres i nombres",
+ "invalidChars": "Si us plau, useu només lletres i nombres",
"passwordDoesNotMatch": "Les contrasenyes no coincideixen",
"required": "Obligatori",
"minLength": "Ha de tenir, si més no, %{min} caràcters",
- "maxLength": "Ha de tenir %{max} caràcter o menys",
- "minValue": "Ha de ser si més no %{min}",
+ "maxLength": "Ha de tenir %{max} caràcters o menys",
+ "minValue": "Ha de ser com a mínim %{min}",
"maxValue": "Ha de ser %{max} o menys",
"number": "Ha de ser un nombre",
"email": "Ha de ser un correu vàlid",
"oneOf": "Ha de ser un de: %{options}",
"regex": "Ha de tenir el format (regexp): %{pattern}",
"unique": "Ha de ser únic",
- "url": ""
+ "url": "Ha de ser una URL vàlida"
},
"action": {
"add_filter": "Afegeix un filtre",
"add": "Afegeix",
"back": "Enrere",
"bulk_actions": "1 element seleccionat |||| %{smart_count} elements seleccionats",
+ "bulk_actions_mobile": "1 |||| %{smart_count}",
"cancel": "Cancel·la",
"clear_input_value": "Neteja el valor",
"clone": "Clona",
@@ -256,9 +307,8 @@
"close_menu": "Tanca el menú",
"unselect": "Anul·la la selecció",
"skip": "Omet",
- "bulk_actions_mobile": "",
- "share": "",
- "download": ""
+ "share": "Compartir",
+ "download": "Descarregar"
},
"boolean": {
"true": "Sí",
@@ -334,7 +384,7 @@
"i18n_error": "No ha estat possible carregar les traduccions per a l'idioma indicat",
"canceled": "Acció cancel·lada",
"logged_out": "La sessió ha acabat, si us plau reconnecteu",
- "new_version": "Hi ha una versió nova disponible! Si us plau refresqueu aquesta finestra."
+ "new_version": "Hi ha una versió nova disponible! Si us plau actualitzeu aquesta finestra."
},
"toggleFieldsMenu": {
"columnsToDisplay": "Columnes a mostrar",
@@ -351,29 +401,31 @@
"noPlaylistsAvailable": "No n'hi ha cap disponible",
"delete_user_title": "Esborra usuari '%{nom}'",
"delete_user_content": "Segur que voleu eliminar aquest usuari i les seues dades\n(incloent-hi llistes i preferències)",
+ "remove_missing_title": "Eliminar fitxers faltants",
+ "remove_missing_content": "Segur que vols eliminar els fitxers faltants seleccionats de la base de dades? Això eliminarà permanentment les referències a ells, incloent-hi el nombre de reproduccions i les valoracions.",
"notifications_blocked": "Heu blocat les notificacions d'escriptori en les preferències del navegador",
"notifications_not_available": "El navegador no suporta les notificacions o no heu connectat a Navidrome per https",
"lastfmLinkSuccess": "Ha reexit la vinculació amb Last.fm i se n'ha activat el seguiment",
"lastfmLinkFailure": "No ha estat possible la vinculació amb Last.fm",
"lastfmUnlinkSuccess": "Desvinculat de Last.fm i desactivat el seguiment",
"lastfmUnlinkFailure": "No s'ha pogut desvincular de Last.fm",
+ "listenBrainzLinkSuccess": "Connectat correctament a ListenBrainz i seguiment activat com a: %{user}",
+ "listenBrainzLinkFailure": "No s'ha pogut connectar a ListenBrainz: %{error}",
+ "listenBrainzUnlinkSuccess": "ListenBrainz desconnectat i seguiment desactivat",
+ "listenBrainzUnlinkFailure": "No s'ha pogut desconnectar de ListenBrainz",
"openIn": {
"lastfm": "Obri en Last.fm",
"musicbrainz": "Obri en MusicBrainz"
},
"lastfmLink": "Llegeix més...",
- "listenBrainzLinkSuccess": "Ha reexit la vinculació amb ListenBrainz i se n'ha activat el seguiment com a usuari: %{user}",
- "listenBrainzLinkFailure": "No ha estat possible vincular-se a ListenBrainz: %{error}",
- "listenBrainzUnlinkSuccess": "Desvinculat de ListenBrainz i desactivat el seguiment",
- "listenBrainzUnlinkFailure": "No s'ha pogut desvincular de ListenBrainz",
- "downloadOriginalFormat": "",
- "shareOriginalFormat": "",
- "shareDialogTitle": "",
- "shareBatchDialogTitle": "",
- "shareSuccess": "",
- "shareFailure": "",
- "downloadDialogTitle": "",
- "shareCopyToClipboard": ""
+ "shareOriginalFormat": "Compartir en format original",
+ "shareDialogTitle": "Compartir %{resource} '%{name}'",
+ "shareBatchDialogTitle": "Compartir 1 %{resource} |||| Compartir %{smart_count} %{resource}",
+ "shareCopyToClipboard": "Copiar al porta-retalls: Ctrl+C, Enter",
+ "shareSuccess": "URL copiada al porta-retalls: %{url}",
+ "shareFailure": "Error copiant URL %{url} al porta-retalls",
+ "downloadDialogTitle": "Deascarregar %{resource} '%{name}' (%{size})",
+ "downloadOriginalFormat": "Descarregar en format original"
},
"menu": {
"library": "Discoteca",
@@ -387,14 +439,15 @@
"language": "Llengua",
"defaultView": "Vista per defecte",
"desktop_notifications": "Notificacions d'escriptori",
+ "lastfmNotConfigured": "No s'ha configurat l'API de Last.fm",
"lastfmScrobbling": "Activa el seguiment de Last.fm",
"listenBrainzScrobbling": "Activa el seguiment de ListenBrainz",
- "replaygain": "",
- "preAmp": "",
+ "replaygain": "Mode ReplayGain",
+ "preAmp": "PreAmp de ReplayGain (dB)",
"gain": {
- "none": "",
- "album": "",
- "track": ""
+ "none": "Cap",
+ "album": "Guany de l'àlbum",
+ "track": "Guany de la pista"
}
}
},
@@ -432,7 +485,12 @@
"links": {
"homepage": "Inici",
"source": "Codi font",
- "featureRequests": "Sol·licitud de funcionalitats"
+ "featureRequests": "Sol·licitud de funcionalitats",
+ "lastInsightsCollection": "Última recolecció d'informació",
+ "insights": {
+ "disabled": "Desactivada",
+ "waiting": "Esperant"
+ }
}
},
"activity": {
@@ -454,7 +512,7 @@
"vol_up": "Apuja el volum",
"vol_down": "Abaixa el volum",
"toggle_love": "Afegeix la pista a favorits",
- "current_song": ""
+ "current_song": "Anar a la cançó actual"
}
}
-}
\ No newline at end of file
+}
diff --git a/resources/i18n/no.json b/resources/i18n/no.json
index bd4c37d0b..84198fca7 100644
--- a/resources/i18n/no.json
+++ b/resources/i18n/no.json
@@ -1,8 +1,8 @@
{
- "languageName": "Engelsk",
+ "languageName": "Norsk",
"resources": {
"song": {
- "name": "Låt |||| Låter",
+ "name": "Sang |||| Sanger",
"fields": {
"albumArtist": "Album Artist",
"duration": "Tid",
@@ -11,164 +11,165 @@
"title": "Tittel",
"artist": "Artist",
"album": "Album",
- "path": "Filbane",
+ "path": "Filsti",
"genre": "Sjanger",
- "compilation": "Samling",
+ "compilation": "Samlingg",
"year": "År",
"size": "Filstørrelse",
- "updatedAt": "Oppdatert kl",
- "bitRate": "Bithastighet",
- "discSubtitle": "Diskundertekst",
+ "updatedAt": "Oppdatert",
+ "bitRate": "Bit rate",
+ "bitDepth": "Bit depth",
+ "channels": "Kanaler",
+ "discSubtitle": "Disk Undertittel",
"starred": "Favoritt",
"comment": "Kommentar",
- "rating": "Vurdering",
+ "rating": "Rangering",
"quality": "Kvalitet",
"bpm": "BPM",
- "playDate": "Sist spilt",
- "channels": "Kanaler",
- "createdAt": "",
- "grouping": "",
- "mood": "",
- "participants": "",
- "tags": "",
- "mappedTags": "",
- "rawTags": "",
- "bitDepth": ""
+ "playDate": "Sist Avspilt",
+ "createdAt": "Lagt til",
+ "grouping": "Gruppering",
+ "mood": "Stemning",
+ "participants": "Ytterlige deltakere",
+ "tags": "Ytterlige Tags",
+ "mappedTags": "Kartlagte tags",
+ "rawTags": "Rå tags"
},
"actions": {
- "addToQueue": "Spill Senere",
- "playNow": "Leke nå",
+ "addToQueue": "Avspill senere",
+ "playNow": "Avspill nå",
"addToPlaylist": "Legg til i spilleliste",
- "shuffleAll": "Bland alle",
- "download": "nedlasting",
- "playNext": "Spill Neste",
- "info": "Få informasjon"
+ "shuffleAll": "Shuffle Alle",
+ "download": "Last ned",
+ "playNext": "Avspill neste",
+ "info": "Få Info"
}
},
"album": {
- "name": "Album",
+ "name": "Album |||| Album",
"fields": {
"albumArtist": "Album Artist",
"artist": "Artist",
"duration": "Tid",
"songCount": "Sanger",
"playCount": "Avspillinger",
+ "size": "Størrelse",
"name": "Navn",
"genre": "Sjanger",
"compilation": "Samling",
"year": "År",
- "updatedAt": "Oppdatert kl",
+ "date": "Inspillingsdato",
+ "originalDate": "Original",
+ "releaseDate": "Utgitt",
+ "releases": "Utgivelse |||| Utgivelser",
+ "released": "Utgitt",
+ "updatedAt": "Oppdatert",
"comment": "Kommentar",
- "rating": "Vurdering",
- "createdAt": "",
- "size": "",
- "originalDate": "",
- "releaseDate": "",
- "releases": "",
- "released": "",
- "recordLabel": "",
- "catalogNum": "",
- "releaseType": "",
- "grouping": "",
- "media": "",
- "mood": ""
+ "rating": "Rangering",
+ "createdAt": "Lagt Til",
+ "recordLabel": "Plateselskap",
+ "catalogNum": "Katalognummer",
+ "releaseType": "Type",
+ "grouping": "Gruppering",
+ "media": "Media",
+ "mood": "Stemning"
},
"actions": {
- "playAll": "Spill",
- "playNext": "Spill neste",
- "addToQueue": "Spille senere",
- "shuffle": "Bland",
+ "playAll": "Avspill",
+ "playNext": "Avspill Neste",
+ "addToQueue": "Avspill Senere",
+ "share": "Del",
+ "shuffle": "Shuffle",
"addToPlaylist": "Legg til i spilleliste",
- "download": "nedlasting",
- "info": "Få informasjon",
- "share": ""
+ "download": "Last ned",
+ "info": "Få Info"
},
"lists": {
"all": "Alle",
"random": "Tilfeldig",
"recentlyAdded": "Nylig lagt til",
- "recentlyPlayed": "Nylig spilt",
- "mostPlayed": "Mest spilte",
+ "recentlyPlayed": "Nylig Avspilt",
+ "mostPlayed": "Mest Avspilt",
"starred": "Favoritter",
- "topRated": "Topp rangert"
+ "topRated": "Top Rangert"
}
},
"artist": {
"name": "Artist |||| Artister",
"fields": {
"name": "Navn",
- "albumCount": "Antall album",
- "songCount": "Antall sanger",
- "playCount": "Spiller",
- "rating": "Vurdering",
+ "albumCount": "Album Antall",
+ "songCount": "Song Antall",
+ "size": "Størrelse",
+ "playCount": "Avspillinger",
+ "rating": "Rangering",
"genre": "Sjanger",
- "size": "",
- "role": ""
+ "role": "Rolle"
},
"roles": {
- "albumartist": "",
- "artist": "",
- "composer": "",
- "conductor": "",
- "lyricist": "",
- "arranger": "",
- "producer": "",
- "director": "",
- "engineer": "",
- "mixer": "",
- "remixer": "",
- "djmixer": "",
- "performer": ""
+ "albumartist": "Album Artist |||| Album Artister",
+ "artist": "Artist |||| Artister",
+ "composer": "Composer |||| Composers",
+ "conductor": "Conductor |||| Conductors",
+ "lyricist": "Lyriker |||| Lyriker",
+ "arranger": "Arranger |||| Arrangers",
+ "producer": "Produsent |||| Produsenter",
+ "director": "Director |||| Directors",
+ "engineer": "Engineer |||| Engineers",
+ "mixer": "Mixer |||| Mixers",
+ "remixer": "Remixer |||| Remixers",
+ "djmixer": "DJ Mixer |||| DJ Mixers",
+ "performer": "Performer |||| Performers"
}
},
"user": {
"name": "Bruker |||| Brukere",
"fields": {
"userName": "Brukernavn",
- "isAdmin": "er admin",
- "lastLoginAt": "Siste pålogging kl",
- "updatedAt": "Oppdatert kl",
+ "isAdmin": "Admin",
+ "lastLoginAt": "Sist Pålogging",
+ "lastAccessAt": "Sist Tilgang",
+ "updatedAt": "Oppdatert",
"name": "Navn",
"password": "Passord",
- "createdAt": "Opprettet kl",
- "changePassword": "Bytte Passord",
+ "createdAt": "Opprettet",
+ "changePassword": "Bytt Passord?",
"currentPassword": "Nåværende Passord",
"newPassword": "Nytt Passord",
- "token": "Token",
- "lastAccessAt": ""
+ "token": "Token"
},
"helperTexts": {
- "name": "Endringer i navnet ditt vil kun gjenspeiles ved neste pålogging"
+ "name": "Navnendringer vil ikke være synlig før neste pålogging"
},
"notifications": {
"created": "Bruker opprettet",
"updated": "Bruker oppdatert",
- "deleted": "Bruker fjernet"
+ "deleted": "Bruker slettet"
},
"message": {
- "listenBrainzToken": "Skriv inn ListenBrainz-brukertokenet ditt.",
- "clickHereForToken": "Klikk her for å få tokenet ditt"
+ "listenBrainzToken": "Fyll inn din ListenBrainz bruker token.",
+ "clickHereForToken": "Klikk her for å hente din token"
}
},
"player": {
- "name": "Avspiller |||| Avspillere",
+ "name": "Musikkavspiller |||| Musikkavspillere",
"fields": {
"name": "Navn",
- "transcodingId": "Omkoding",
- "maxBitRate": "Maks. Bithastighet",
+ "transcodingId": "Transkoding",
+ "maxBitRate": "Maks. Bit Rate",
"client": "Klient",
"userName": "Brukernavn",
- "lastSeen": "Sist sett kl",
- "reportRealPath": "Rapporter ekte sti",
+ "lastSeen": "Sist sett",
+ "reportRealPath": "Rapporter ekte filsti",
"scrobbleEnabled": "Send Scrobbles til eksterne tjenester"
}
},
"transcoding": {
- "name": "Omkoding |||| Omkodinger",
+ "name": "Transkoding |||| Transkodinger",
"fields": {
"name": "Navn",
- "targetFormat": "Målformat",
- "defaultBitRate": "Standard bithastighet",
+ "targetFormat": "Mål Format",
+ "defaultBitRate": "Default Bit Rate",
"command": "Kommando"
}
},
@@ -176,135 +177,137 @@
"name": "Spilleliste |||| Spillelister",
"fields": {
"name": "Navn",
- "duration": "Varighet",
- "ownerName": "Eieren",
+ "duration": "Lengde",
+ "ownerName": "Eier",
"public": "Offentlig",
- "updatedAt": "Oppdatert kl",
- "createdAt": "Opprettet kl",
+ "updatedAt": "Oppdatert",
+ "createdAt": "Opprettet",
"songCount": "Sanger",
"comment": "Kommentar",
- "sync": "Autoimport",
- "path": "Import fra"
+ "sync": "Auto-importer",
+ "path": "Importer fra"
},
"actions": {
"selectPlaylist": "Velg en spilleliste:",
"addNewPlaylist": "Opprett \"%{name}\"",
- "export": "Eksport",
- "makePublic": "Gjør offentlig",
- "makePrivate": "Gjør privat"
+ "export": "Eksporter",
+ "makePublic": "Gjør Offentlig",
+ "makePrivate": "Gjør Privat"
},
"message": {
- "duplicate_song": "Legg til dupliserte sanger",
- "song_exist": "Det legges til duplikater i spillelisten. Vil du legge til duplikatene eller hoppe over dem?"
+ "duplicate_song": "Legg til Duplikater",
+ "song_exist": "Duplikater har blitt lagt til i spillelisten. Ønsker du å legge til duplikater eller hoppe over de?"
}
},
"radio": {
- "name": "",
+ "name": "Radio |||| Radio",
"fields": {
- "name": "",
- "streamUrl": "",
- "homePageUrl": "",
- "updatedAt": "",
- "createdAt": ""
+ "name": "Navn",
+ "streamUrl": "Stream URL",
+ "homePageUrl": "Hjemmeside URL",
+ "updatedAt": "Oppdatert",
+ "createdAt": "Opprettet"
},
"actions": {
- "playNow": ""
+ "playNow": "Avspill"
}
},
"share": {
- "name": "",
+ "name": "Del |||| Delinger",
"fields": {
- "username": "",
- "url": "",
- "description": "",
- "contents": "",
- "expiresAt": "",
- "lastVisitedAt": "",
- "visitCount": "",
- "format": "",
- "maxBitRate": "",
- "updatedAt": "",
- "createdAt": "",
- "downloadable": ""
- }
+ "username": "Delt Av",
+ "url": "URL",
+ "description": "Beskrivelse",
+ "downloadable": "Tillat Nedlastinger?",
+ "contents": "Innhold",
+ "expiresAt": "Utløper",
+ "lastVisitedAt": "Sist Besøkt",
+ "visitCount": "Visninger",
+ "format": "Format",
+ "maxBitRate": "Maks. Bit Rate",
+ "updatedAt": "Oppdatert",
+ "createdAt": "Opprettet"
+ },
+ "notifications": {},
+ "actions": {}
},
"missing": {
- "name": "",
+ "name": "Manglende Fil|||| Manglende Filer",
+ "empty": "Ingen Manglende Filer",
"fields": {
- "path": "",
- "size": "",
- "updatedAt": ""
+ "path": "Filsti",
+ "size": "Størrelse",
+ "updatedAt": "Ble borte"
},
"actions": {
- "remove": ""
+ "remove": "Fjern"
},
"notifications": {
- "removed": ""
- },
- "empty": ""
+ "removed": "Manglende fil(er) fjernet"
+ }
}
},
"ra": {
"auth": {
"welcome1": "Takk for at du installerte Navidrome!",
- "welcome2": "Opprett en admin -bruker for å starte",
+ "welcome2": "La oss begynne med å lage en admin bruker.",
"confirmPassword": "Bekreft Passord",
"buttonCreateAdmin": "Opprett Admin",
- "auth_check_error": "Vennligst Logg inn for å fortsette",
+ "auth_check_error": "Logg inn for å fortsette",
"user_menu": "Profil",
"username": "Brukernavn",
"password": "Passord",
"sign_in": "Logg inn",
- "sign_in_error": "Autentisering mislyktes. Prøv på nytt",
+ "sign_in_error": "Autentiseringsfeil, vennligst prøv igjen",
"logout": "Logg ut",
- "insightsCollectionNote": ""
+ "insightsCollectionNote": "Navidrome innhenter anonymisert forbruksdata\nfor å hjelpe og forbedre prosjektet.\nTrykk [her] for å lære mer og for å melde deg av hvis ønskelig."
},
"validation": {
- "invalidChars": "Bruk bare bokstaver og tall",
- "passwordDoesNotMatch": "Passordet er ikke like",
- "required": "Obligatorisk",
- "minLength": "Må være minst %{min} tegn",
- "maxLength": "Må være %{max} tegn eller færre",
+ "invalidChars": "Det er kun bokstaver og tall som støttes",
+ "passwordDoesNotMatch": "Passord samstemmer ikke",
+ "required": "Kreves",
+ "minLength": "Må være minst %{min} karakterer.",
+ "maxLength": "Må være %{max} karakterer eller mindre",
"minValue": "Må være minst %{min}",
"maxValue": "Må være %{max} eller mindre",
"number": "Må være et tall",
- "email": "Må være en gyldig e-post",
+ "email": "Må være en gyldig epost",
"oneOf": "Må være en av: %{options}",
- "regex": "Må samsvare med et spesifikt format (regexp): %{pattern}",
- "unique": "Må være unik",
- "url": ""
+ "regex": "Må samstemme med et spesifikt format (regexp): %{pattern}",
+ "unique": "Må være unikt",
+ "url": "Må være en gyldig URL"
},
"action": {
"add_filter": "Legg til filter",
- "add": "Legge til",
- "back": "Gå tilbake",
- "bulk_actions": "1 element valgt |||| %{smart_count} elementer er valgt",
+ "add": "Legg Til",
+ "back": "Tilbake",
+ "bulk_actions": "1 element valgt |||| %{smart_count} elementer valgt",
+ "bulk_actions_mobile": "1 |||| %{smart_count}",
"cancel": "Avbryt",
- "clear_input_value": "Klar verdi",
+ "clear_input_value": "Nullstill verdi",
"clone": "Klone",
- "confirm": "Bekrefte",
- "create": "Skape",
+ "confirm": "Bekreft",
+ "create": "Opprett",
"delete": "Slett",
- "edit": "Redigere",
- "export": "Eksport",
+ "edit": "Rediger",
+ "export": "Eksporter",
"list": "Liste",
- "refresh": "oppdater",
+ "refresh": "Oppdater",
"remove_filter": "Fjern dette filteret",
- "remove": "Fjerne",
+ "remove": "Fjern",
"save": "Lagre",
"search": "Søk",
"show": "Vis",
- "sort": "Sortere",
+ "sort": "Sorter",
"undo": "Angre",
- "expand": "Utvide",
+ "expand": "Utvid",
"close": "Lukk",
- "open_menu": "Åpne menyen",
- "close_menu": "Lukk menyen",
- "unselect": "Fjern valget",
+ "open_menu": "Åpne meny",
+ "close_menu": "Lukk meny",
+ "unselect": "Avvelg",
"skip": "Hopp over",
- "bulk_actions_mobile": "",
- "share": "",
- "download": ""
+ "share": "Del",
+ "download": "Last Ned"
},
"boolean": {
"true": "Ja",
@@ -312,29 +315,29 @@
},
"page": {
"create": "Opprett %{name}",
- "dashboard": "Dashbord",
+ "dashboard": "Dashboard",
"edit": "%{name} #%{id}",
"error": "Noe gikk galt",
- "list": "%{Navn}",
+ "list": "%{name}",
"loading": "Laster",
- "not_found": "Ikke funnet",
+ "not_found": "Ikke Funnet",
"show": "%{name} #%{id}",
- "empty": "Ingen %{name} ennå.",
- "invite": "Vil du legge til en?"
+ "empty": "Ingen %{name} enda.",
+ "invite": "Ønsker du å legge til en?"
},
"input": {
"file": {
- "upload_several": "Slipp noen filer for å laste opp, eller klikk for å velge en.",
- "upload_single": "Slipp en fil for å laste opp, eller klikk for å velge den."
+ "upload_several": "Dra filer hit for å laste opp, eller klikk for å velge en.",
+ "upload_single": "Dra en fil hit for å laste opp, eller klikk for å velge den."
},
"image": {
- "upload_several": "Slipp noen bilder for å laste opp, eller klikk for å velge ett.",
- "upload_single": "Slipp et bilde for å laste opp, eller klikk for å velge det."
+ "upload_several": "Dra bilder hit for å laste opp, eller klikk for å velge en.",
+ "upload_single": "Dra et bilde hit for å laste opp, eller klikk for å velge den."
},
"references": {
- "all_missing": "Kan ikke finne referansedata.",
- "many_missing": "Minst én av de tilknyttede referansene ser ikke ut til å være tilgjengelig lenger.",
- "single_missing": "Tilknyttet referanse ser ikke lenger ut til å være tilgjengelig."
+ "all_missing": "Finner ikke referansedata.",
+ "many_missing": "Minst en av de tilhørende referansene ser ikke lenger ut til å være tilgjengelig.",
+ "single_missing": "Tilhørende referanse ser ikke lenger ut til å være tilgjengelig."
},
"password": {
"toggle_visible": "Skjul passord",
@@ -346,86 +349,86 @@
"are_you_sure": "Er du sikker?",
"bulk_delete_content": "Er du sikker på at du vil slette denne %{name}? |||| Er du sikker på at du vil slette disse %{smart_count} elementene?",
"bulk_delete_title": "Slett %{name} |||| Slett %{smart_count} %{name}",
- "delete_content": "Er du sikker på at du vil slette dette elementet?",
+ "delete_content": "Er du sikker på at du ønsker å slette dette elementet?",
"delete_title": "Slett %{name} #%{id}",
"details": "Detaljer",
- "error": "Det oppstod en klientfeil og forespørselen din kunne ikke fullføres.",
- "invalid_form": "Skjemaet er ikke gyldig. Vennligst se etter feil",
- "loading": "Siden lastes, bare et øyeblikk",
+ "error": "En klient feil har oppstått og din forespørsel lot seg ikke gjennomføre.",
+ "invalid_form": "Skjemaet er ikke gyldig. Vennligst se etter feil.",
+ "loading": "Siden laster, vennligst vent.",
"no": "Nei",
- "not_found": "Enten skrev du inn feil URL, eller så fulgte du en dårlig lenke.",
+ "not_found": "Enten skrev du feil URL, eller så har du fulgt en dårlig link.",
"yes": "Ja",
- "unsaved_changes": "Noen av endringene dine ble ikke lagret. Er du sikker på at du vil ignorere dem?"
+ "unsaved_changes": "Noen av dine endringer ble ikke lagret. Er du sikker på at du ønsker å ignorere de?"
},
"navigation": {
"no_results": "Ingen resultater",
- "no_more_results": "Sidetallet %{page} er utenfor grensene. Prøv forrige side.",
- "page_out_of_boundaries": "Sidetall %{page} utenfor grensene",
- "page_out_from_end": "Kan ikke gå etter siste side",
- "page_out_from_begin": "Kan ikke gå før side 1",
+ "no_more_results": "Sidenummeret %{page} er utenfor grensene. Prøv forrige side.",
+ "page_out_of_boundaries": "Sidenummer %{page} er utenfor grensene",
+ "page_out_from_end": "Kan ikke være etter siste side",
+ "page_out_from_begin": "Kan ikke være før side 1",
"page_range_info": "%{offsetBegin}-%{offsetEnd} av %{total}",
"page_rows_per_page": "Elementer per side:",
"next": "Neste",
"prev": "Forrige",
- "skip_nav": "Hopp til innholdet"
+ "skip_nav": "Hopp til innhold"
},
"notification": {
- "updated": "Element oppdatert |||| %{smart_count} elementer er oppdatert",
+ "updated": "Element oppdatert |||| %{smart_count} elementer oppdatert",
"created": "Element opprettet",
"deleted": "Element slettet |||| %{smart_count} elementer slettet",
"bad_item": "Feil element",
- "item_doesnt_exist": "Elementet eksisterer ikke",
- "http_error": "Serverkommunikasjonsfeil",
- "data_provider_error": "dataleverandørfeil. Sjekk konsollen for detaljer.",
- "i18n_error": "Kan ikke laste oversettelsene for det angitte språket",
- "canceled": "Handlingen avbrutt",
- "logged_out": "Økten din er avsluttet. Koble til på nytt.",
- "new_version": "Ny versjon tilgjengelig! Trykk Oppdater "
+ "item_doesnt_exist": "Element eksisterer ikke",
+ "http_error": "Kommunikasjonsfeil mot server",
+ "data_provider_error": "dataProvider feil. Sjekk konsollet for feil.",
+ "i18n_error": "Klarte ikke laste oversettelser for valgt språk.",
+ "canceled": "Handling avbrutt",
+ "logged_out": "Din sesjon er avsluttet, vennligst koble til på nytt.",
+ "new_version": "Ny versjon tilgjengelig! Vennligst last siden på nytt."
},
"toggleFieldsMenu": {
- "columnsToDisplay": "Kolonner som skal vises",
- "layout": "Oppsett",
- "grid": "Nett",
- "table": "Bord"
+ "columnsToDisplay": "Vis følgende kolonner",
+ "layout": "Layout",
+ "grid": "Rutenett",
+ "table": "Tabell"
}
},
"message": {
- "note": "Info",
- "transcodingDisabled": "Endring av transkodingskonfigurasjonen gjennom webgrensesnittet er deaktivert av sikkerhetsgrunner. Hvis du ønsker å endre (redigere eller legge til) transkodingsalternativer, start serveren på nytt med %{config}-konfigurasjonsalternativet.",
- "transcodingEnabled": "Navidrome kjører for øyeblikket med %{config}, noe som gjør det mulig å kjøre systemkommandoer fra transkodingsinnstillingene ved å bruke nettgrensesnittet. Vi anbefaler å deaktivere den av sikkerhetsgrunner og bare aktivere den når du konfigurerer alternativer for omkoding.",
+ "note": "NOTAT",
+ "transcodingDisabled": "Endringer på transkodingkonfigurasjon fra web grensesnittet er deaktivert grunnet sikkerhet. Hvis du ønsker å endre eller legge til transkodingsmuligheter, restart serveren med %{config} konfigurasjonsalternativ.",
+ "transcodingEnabled": "Navidrome kjører for øyeblikket med %{config}, som gjør det mulig å kjøre systemkommandoer fra transkodingsinstillinger i web grensesnittet. Vi anbefaler å deaktivere denne muligheten av sikkerhetsårsaker og heller kun ha det aktivert under konfigurasjon av transkodingsmuligheter.",
"songsAddedToPlaylist": "Lagt til 1 sang i spillelisten |||| Lagt til %{smart_count} sanger i spillelisten",
"noPlaylistsAvailable": "Ingen tilgjengelig",
- "delete_user_title": "Slett bruker «%{name}»",
- "delete_user_content": "Er du sikker på at du vil slette denne brukeren og alle dataene deres (inkludert spillelister og preferanser)?",
- "notifications_blocked": "Du har blokkert varsler for dette nettstedet i nettleserens innstillinger",
- "notifications_not_available": "Denne nettleseren støtter ikke skrivebordsvarsler, eller du har ikke tilgang til Navidrome over https",
- "lastfmLinkSuccess": "Last.fm er vellykket koblet og scrobbling aktivert",
- "lastfmLinkFailure": "Last.fm kunne ikke kobles til",
- "lastfmUnlinkSuccess": "Last.fm koblet fra og scrobbling deaktivert",
- "lastfmUnlinkFailure": "Last.fm kunne ikke kobles fra",
+ "delete_user_title": "Slett bruker '%{name}'",
+ "delete_user_content": "Er du sikker på at du vil slette denne brukeren og all tilhørlig data (inkludert spillelister og preferanser)?",
+ "remove_missing_title": "Fjern manglende filer",
+ "remove_missing_content": "Er du sikker på at du ønsker å fjerne de valgte manglende filene fra databasen? Dette vil permanent fjerne alle referanser til de, inkludert antall avspillinger og rangeringer.",
+ "notifications_blocked": "Du har blokkert notifikasjoner for denne nettsiden i din nettleser.",
+ "notifications_not_available": "Denne nettleseren støtter ikke skrivebordsnotifikasjoner, eller så er du ikke tilkoblet Navidrome via https.",
+ "lastfmLinkSuccess": "Last.fm er tilkoblet og scrobbling er aktivert",
+ "lastfmLinkFailure": "Last.fm kunne ikke koble til",
+ "lastfmUnlinkSuccess": "Last.fm er avkoblet og scrobbling er deaktivert",
+ "lastfmUnlinkFailure": "Last.fm kunne ikke avkobles",
+ "listenBrainzLinkSuccess": "ListenBrainz er koblet til og scrobbling er aktivert som bruker: %{user}",
+ "listenBrainzLinkFailure": "ListenBrainz kunne ikke koble til: %{error}",
+ "listenBrainzUnlinkSuccess": "ListenBrainz er avkoblet og scrobbling er deaktivert",
+ "listenBrainzUnlinkFailure": "ListenBrainz kunne ikke avkobles",
"openIn": {
"lastfm": "Åpne i Last.fm",
"musicbrainz": "Åpne i MusicBrainz"
},
- "lastfmLink": "Les mer...",
- "listenBrainzLinkSuccess": "ListenBrainz er vellykket koblet og scrobbling aktivert som bruker: %{user}",
- "listenBrainzLinkFailure": "ListenBrainz kunne ikke kobles: %{error}",
- "listenBrainzUnlinkSuccess": "ListenBrainz koblet fra og scrobbling deaktivert",
- "listenBrainzUnlinkFailure": "ListenBrainz kunne ikke fjernes",
- "downloadOriginalFormat": "",
- "shareOriginalFormat": "",
- "shareDialogTitle": "",
- "shareBatchDialogTitle": "",
- "shareSuccess": "",
- "shareFailure": "",
- "downloadDialogTitle": "",
- "shareCopyToClipboard": "",
- "remove_missing_title": "",
- "remove_missing_content": ""
+ "lastfmLink": "Les Mer...",
+ "shareOriginalFormat": "Del i originalformat",
+ "shareDialogTitle": "Del %{resource} '%{name}'",
+ "shareBatchDialogTitle": "Del 1 %{resource} |||| Del %{smart_count} %{resource}",
+ "shareCopyToClipboard": "Kopier til utklippstavle: Ctrl+C, Enter",
+ "shareSuccess": "URL kopiert til utklippstavle: %{url}",
+ "shareFailure": "Error ved kopiering av URL %{url} til utklippstavle",
+ "downloadDialogTitle": "Last ned %{resource} '%{name}' (%{size})",
+ "downloadOriginalFormat": "Last ned i originalformat"
},
"menu": {
"library": "Bibliotek",
- "settings": "Innstillinger",
+ "settings": "Instillinger",
"version": "Versjon",
"theme": "Tema",
"personal": {
@@ -434,81 +437,81 @@
"theme": "Tema",
"language": "Språk",
"defaultView": "Standardvisning",
- "desktop_notifications": "Skrivebordsvarsler",
+ "desktop_notifications": "Skrivebordsnotifikasjoner",
+ "lastfmNotConfigured": "Last.fm API-Key er ikke konfigurert",
"lastfmScrobbling": "Scrobble til Last.fm",
"listenBrainzScrobbling": "Scrobble til ListenBrainz",
- "replaygain": "",
- "preAmp": "",
+ "replaygain": "ReplayGain Mode",
+ "preAmp": "ReplayGain PreAmp (dB)",
"gain": {
- "none": "",
- "album": "",
- "track": ""
- },
- "lastfmNotConfigured": ""
+ "none": "Deaktivert",
+ "album": "Bruk Album Gain",
+ "track": "Bruk Track Gain"
+ }
}
},
"albumList": "Album",
- "about": "Om",
- "playlists": "Spilleliste",
- "sharedPlaylists": "Delte spillelister"
+ "playlists": "Spillelister",
+ "sharedPlaylists": "Delte Spillelister",
+ "about": "Om"
},
"player": {
- "playListsText": "Spillekø",
+ "playListsText": "Spill Av Kø",
"openText": "Åpne",
"closeText": "Lukk",
"notContentText": "Ingen musikk",
- "clickToPlayText": "Klikk for å spille",
- "clickToPauseText": "Klikk for å sette på pause",
+ "clickToPlayText": "Klikk for å avspille",
+ "clickToPauseText": "Klikk for å pause",
"nextTrackText": "Neste spor",
"previousTrackText": "Forrige spor",
- "reloadText": "Last inn på nytt",
+ "reloadText": "Last på nytt",
"volumeText": "Volum",
- "toggleLyricText": "Veksle mellom tekster",
+ "toggleLyricText": "Slå på/av sangtekster",
"toggleMiniModeText": "Minimer",
- "destroyText": "Ødelegge",
- "downloadText": "nedlasting",
+ "destroyText": "Ødelegg",
+ "downloadText": "Last Ned",
"removeAudioListsText": "Slett lydlister",
"clickToDeleteText": "Klikk for å slette %{name}",
"emptyLyricText": "Ingen sangtekster",
"playModeText": {
"order": "I rekkefølge",
- "orderLoop": "Gjenta",
- "singleLoop": "Gjenta engang",
- "shufflePlay": "Tilfeldig rekkefølge"
+ "orderLoop": "Repeat",
+ "singleLoop": "Repeat En",
+ "shufflePlay": "Shuffle"
}
},
"about": {
"links": {
"homepage": "Hjemmeside",
"source": "Kildekode",
- "featureRequests": "Funksjonsforespørsler",
- "lastInsightsCollection": "",
+ "featureRequests": "Funksjonsforespørseler",
+ "lastInsightsCollection": "Siste Innsamling av anonymisert forbruksdata",
"insights": {
- "disabled": "",
- "waiting": ""
+ "disabled": "Deaktivert",
+ "waiting": "Venter"
}
}
},
"activity": {
"title": "Aktivitet",
- "totalScanned": "Totalt skannede mapper",
- "quickScan": "Rask skanning",
- "fullScan": "Full skanning",
- "serverUptime": "Serveroppetid",
+ "totalScanned": "Antall mapper skannet",
+ "quickScan": "Hurtigskann",
+ "fullScan": "Full Skann",
+ "serverUptime": "Server Oppetid",
"serverDown": "OFFLINE"
},
"help": {
- "title": "Navidrome hurtigtaster",
+ "title": "Navidrome Hurtigtaster",
"hotkeys": {
- "show_help": "Vis denne hjelpen",
- "toggle_menu": "Bytt menysidelinje",
- "toggle_play": "Spill / Pause",
- "prev_song": "Forrige sang",
- "next_song": "Neste sang",
- "vol_up": "Volum opp",
- "vol_down": "Volum ned",
- "toggle_love": "Legg til dette sporet i favoritter",
- "current_song": ""
+ "show_help": "Vis Hjelp",
+ "toggle_menu": "Åpne/Lukke Sidepanel",
+ "toggle_play": "Avspill / Pause",
+ "prev_song": "Forrige Sang",
+ "next_song": "Neste Sang",
+ "current_song": "Gå til Nåværende Sang",
+ "vol_up": "Volum Opp",
+ "vol_down": "Volum Ned",
+ "toggle_love": "Legg til spor i favoritter"
}
}
-}
\ No newline at end of file
+}
diff --git a/resources/i18n/ru.json b/resources/i18n/ru.json
index c6b7fcd16..a4de263e4 100644
--- a/resources/i18n/ru.json
+++ b/resources/i18n/ru.json
@@ -33,7 +33,8 @@
"tags": "Дополнительные теги",
"mappedTags": "Сопоставленные теги",
"rawTags": "Исходные теги",
- "bitDepth": "Битовая глубина"
+ "bitDepth": "Битовая глубина",
+ "sampleRate": "Частота дискретизации (Гц)"
},
"actions": {
"addToQueue": "В очередь",
@@ -72,7 +73,7 @@
"grouping": "Группирование",
"media": "Медиа",
"mood": "Настроение",
- "date": ""
+ "date": "Дата записи"
},
"actions": {
"playAll": "Играть",
diff --git a/resources/i18n/sr.json b/resources/i18n/sr.json
index d0b897ec1..1cf7e39e7 100644
--- a/resources/i18n/sr.json
+++ b/resources/i18n/sr.json
@@ -1,465 +1,517 @@
{
- "languageName": "српски",
- "resources": {
- "song": {
- "name": "Песма |||| Песме",
- "fields": {
- "albumArtist": "Уметник албума",
- "duration": "Трајање",
- "trackNumber": "#",
- "playCount": "Пуштано",
- "title": "Наслов",
- "artist": "Уметник",
- "album": "Албум",
- "path": "Путања фајла",
- "genre": "Жанр",
- "compilation": "Компилација",
- "year": "Година",
- "size": "Величина фајла",
- "updatedAt": "Ажурирано",
- "bitRate": "Битски проток",
- "channels": "Канала",
- "discSubtitle": "Поднаслов диска",
- "starred": "Омиљено",
- "comment": "Коментар",
- "rating": "Рејтинг",
- "quality": "Квалитет",
- "bpm": "BPM",
- "playDate": "Последње пуштано",
- "createdAt": "Датум додавања"
- },
- "actions": {
- "addToQueue": "Пусти касније",
- "playNow": "Пусти одмах",
- "addToPlaylist": "Додај у плејлисту",
- "shuffleAll": "Измешај све",
- "download": "Преузми",
- "playNext": "Пусти наредно",
- "info": "Прикажи инфо"
- }
- },
- "album": {
- "name": "Албум |||| Албуми",
- "fields": {
- "albumArtist": "Уметник албума",
- "artist": "Уметник",
- "duration": "Трајање",
- "songCount": "Песме",
- "playCount": "Пуштано",
- "size": "Величина",
- "name": "Назив",
- "genre": "Жанр",
- "compilation": "Компилација",
- "year": "Година",
- "originalDate": "Оригинално",
- "releaseDate": "Објављено",
- "releases": "Издање|||| Издања",
- "released": "Објављено",
- "updatedAt": "Ажурирано",
- "comment": "Коментар",
- "rating": "Рејтинг",
- "createdAt": "Датум додавања"
- },
- "actions": {
- "playAll": "Пусти",
- "playNext": "Пусти наредно",
- "addToQueue": "Пусти касније",
- "share": "Дели",
- "shuffle": "Измешај",
- "addToPlaylist": "Додај у плејлисту",
- "download": "Преузми",
- "info": "Прикажи инфо"
- },
- "lists": {
- "all": "Све",
- "random": "Насумично",
- "recentlyAdded": "Додато недавно",
- "recentlyPlayed": "Пуштано недавно",
- "mostPlayed": "Најчешће пуштано",
- "starred": "Омиљено",
- "topRated": "Најбоље рангирано"
- }
- },
- "artist": {
- "name": "Уметник |||| Уметници",
- "fields": {
- "name": "Име",
- "albumCount": "Број албума",
- "songCount": "Број песама",
- "size": "Величина",
- "playCount": "Пуштано",
- "rating": "Рејтинг",
- "genre": "Жанр"
- }
- },
- "user": {
- "name": "Корисник |||| Корисници",
- "fields": {
- "userName": "Корисничко име",
- "isAdmin": "Да ли је Админ",
- "lastLoginAt": "Последња пријава",
- "lastAccessAt": "Последњи приступ",
- "updatedAt": "Ажурирано",
- "name": "Име",
- "password": "Лозинка",
- "createdAt": "Креирана",
- "changePassword": "Измени лозинку?",
- "currentPassword": "Текућа лозинка",
- "newPassword": "Нова лозинка",
- "token": "Жетон"
- },
- "helperTexts": {
- "name": "Измене вашег имена ће постати видљиве након следеће пријаве"
- },
- "notifications": {
- "created": "Корисник креиран",
- "updated": "Корисник ажуриран",
- "deleted": "Корисник обрисан"
- },
- "message": {
- "listenBrainzToken": "Унесите свој ListenBrainz кориснички жетон.",
- "clickHereForToken": "Кликните овде да преузмете свој жетон"
- }
- },
- "player": {
- "name": "Плејер |||| Плејери",
- "fields": {
- "name": "Назив",
- "transcodingId": "Транскодирање",
- "maxBitRate": "Макс. битски проток",
- "client": "Клијент",
- "userName": "Корисничко име",
- "lastSeen": "последњи пут виђен",
- "reportRealPath": "Пријављуј реалну путању",
- "scrobbleEnabled": "Шаљи скроблове на спољне сервисе"
- }
- },
- "transcoding": {
- "name": "Транскодирање |||| Транскодирања",
- "fields": {
- "name": "Назив",
- "targetFormat": "Циљни формат",
- "defaultBitRate": "Подразумевани битски проток",
- "command": "Команда"
- }
- },
- "playlist": {
- "name": "Плејлиста |||| Плејлисте",
- "fields": {
- "name": "Назив",
- "duration": "Трајање",
- "ownerName": "Власник",
- "public": "Јавна",
- "updatedAt": "Ажурирана",
- "createdAt": "Креирана",
- "songCount": "Песме",
- "comment": "Коментар",
- "sync": "Ауто-увоз",
- "path": "Увоз из"
- },
- "actions": {
- "selectPlaylist": "Изабери плејлисту",
- "addNewPlaylist": "Креирај „%{name}”",
- "export": "Извоз",
- "makePublic": "Учини јавном",
- "makePrivate": "Учини приватном"
- },
- "message": {
- "duplicate_song": "Додај дуплиране песме",
- "song_exist": "У плејлисту се додају дупликати. Желите ли да се додају, или да се прескоче?"
- }
- },
- "radio": {
- "name": "Радио |||| Радији",
- "fields": {
- "name": "Назив",
- "streamUrl": "URL тока",
- "homePageUrl": "URL почетне странице",
- "updatedAt": "Ажурирано",
- "createdAt": "Креирано"
- },
- "actions": {
- "playNow": "Пусти одмах"
- }
- },
- "share": {
- "name": "Дељење |||| Дељења",
- "fields": {
- "username": "Поделио",
- "url": "URL",
- "description": "Опис",
- "downloadable": "Допушта се преузимање?",
- "contents": "Садржај",
- "expiresAt": "Истиче",
- "lastVisitedAt": "Последњи пут посећено",
- "visitCount": "Број посета",
- "format": "Формат",
- "maxBitRate": "Макс. битски проток",
- "updatedAt": "Ажурирано",
- "createdAt": "Креирано"
- },
- "notifications": {
- },
- "actions": {
- }
- }
+ "languageName": "српски",
+ "resources": {
+ "song": {
+ "name": "Песма |||| Песме",
+ "fields": {
+ "album": "Албум",
+ "albumArtist": "Уметник албума",
+ "artist": "Уметник",
+ "bitDepth": "Битова",
+ "bitRate": "Битски проток",
+ "bpm": "BPM",
+ "channels": "Канала",
+ "comment": "Коментар",
+ "compilation": "Компилација",
+ "createdAt": "Датум додавања",
+ "discSubtitle": "Поднаслов диска",
+ "duration": "Трајање",
+ "genre": "Жанр",
+ "grouping": "Груписање",
+ "mappedTags": "Мапиране ознаке",
+ "mood": "Расположење",
+ "participants": "Додатни учесници",
+ "path": "Путања фајла",
+ "playCount": "Пуштано",
+ "playDate": "Последње пуштано",
+ "quality": "Квалитет",
+ "rating": "Рејтинг",
+ "rawTags": "Сирове ознаке",
+ "size": "Величина фајла",
+ "starred": "Омиљено",
+ "tags": "Додатне ознаке",
+ "title": "Наслов",
+ "trackNumber": "#",
+ "updatedAt": "Ажурирано",
+ "year": "Година"
+ },
+ "actions": {
+ "addToPlaylist": "Додај у плејлисту",
+ "addToQueue": "Пусти касније",
+ "download": "Преузми",
+ "info": "Прикажи инфо",
+ "playNext": "Пусти наредно",
+ "playNow": "Пусти одмах",
+ "shuffleAll": "Измешај све"
+ }
},
- "ra": {
- "auth": {
- "welcome1": "Хвала што сте инсталирали Navidrome!",
- "welcome2": "За почетак, креирајте админ корисника",
- "confirmPassword": "Потврдите лозинку",
- "buttonCreateAdmin": "Креирај админа",
- "auth_check_error": "Ако желите да наставите, молимо вас да се пријавите",
- "user_menu": "Профил",
- "username": "Корисничко име",
- "password": "Лозинка",
- "sign_in": "Пријави се",
- "sign_in_error": "Потврда идентитета није успела, покушајте поново",
- "logout": "Одјави се"
- },
- "validation": {
- "invalidChars": "Молимо вас да користите само слова и цифре",
- "passwordDoesNotMatch": "Лозинка се не подудара",
- "required": "Неопходно",
- "minLength": "Мора да буде барем %{min} карактера",
- "maxLength": "Мора да буде %{max} карактера или мање",
- "minValue": "Мора да буде барем %{min}",
- "maxValue": "Мора да буде %{max} или мање",
- "number": "Мора да буде број",
- "email": "Мора да буде исправна и-мејл адреса",
- "oneOf": "Мора да буде једно од: %{options}",
- "regex": "Мора да се подудара са одређеним форматом (регуларни израз): %{pattern}",
- "unique": "Мора да буде јединствено",
- "url": "Мора да буде исправна URL адреса"
- },
- "action": {
- "add_filter": "Додај филтер",
- "add": "Додај",
- "back": "Иди назад",
- "bulk_actions": "изабрана је 1 ставка |||| изабрано је %{smart_count} ставки",
- "bulk_actions_mobile": "1 |||| %{smart_count}",
- "cancel": "Откажи",
- "clear_input_value": "Обриши вредност",
- "clone": "Клонирај",
- "confirm": "Потврди",
- "create": "Креирај",
- "delete": "Обриши",
- "edit": "Уреди",
- "export": "Извези",
- "list": "Листа",
- "refresh": "Освежи",
- "remove_filter": "Уклони овај филтер",
- "remove": "Уклони",
- "save": "Сачувај",
- "search": "Тражи",
- "show": "Прикажи",
- "sort": "Сортирај",
- "undo": "Поништи",
- "expand": "Развиј",
- "close": "Затвори",
- "open_menu": "Отвори мени",
- "close_menu": "Затвори мени",
- "unselect": "Уклони избор",
- "skip": "Прескочи",
- "share": "Подели",
- "download": "Преузми"
- },
- "boolean": {
- "true": "Да",
- "false": "Не"
- },
- "page": {
- "create": "Креирај %{name}",
- "dashboard": "Контролна табла",
- "edit": "%{name} #%{id}",
- "error": "Нешто је пошло наопако",
- "list": "%{name}",
- "loading": "Учитава се",
- "not_found": "Није пронађено",
- "show": "%{name} #%{id}",
- "empty": "Још увек нема %{name}.",
- "invite": "Желите ли да се дода?"
- },
- "input": {
- "file": {
- "upload_several": "Упустите фајлове да се отпреме, или кликните да их изаберете.",
- "upload_single": "Упустите фајл да се отпреми, или кликните да га изаберете."
- },
- "image": {
- "upload_several": "Упустите слике да се отпреме, или кликните да их изаберете.",
- "upload_single": "Упустите слику да се отпреми, или кликните да је изаберете."
- },
- "references": {
- "all_missing": "Не могу да се нађу подаци референци.",
- "many_missing": "Изгледа да барем једна од придружених референци више није доступна.",
- "single_missing": "Изгледа да придружена референца више није доступна."
- },
- "password": {
- "toggle_visible": "Сакриј лозинку",
- "toggle_hidden": "Прикажи лозинку"
- }
- },
- "message": {
- "about": "О програму",
- "are_you_sure": "Да ли сте сигурни?",
- "bulk_delete_content": "Да ли заиста желите да обришете %{name}? |||| Да ли заиста желите да обришете %{smart_count} ставке?",
- "bulk_delete_title": "Брисање %{name} |||| Брисање %{smart_count} %{name}",
- "delete_content": "Да ли заиста желите да обришете ову ставку?",
- "delete_title": "Брисање %{name} #%{id}",
- "details": "Детаљи",
- "error": "Дошло је до клијентске грешке и ваш захтев није могао да се изврши.",
- "invalid_form": "Формулар није исправан. Молимо вас да исправите грешке",
- "loading": "Страница се учитава, сачекајте мало",
- "no": "Не",
- "not_found": "Или сте откуцали погрешну URL адресу, или сте следили неисправан линк.",
- "yes": "Да",
- "unsaved_changes": "Неке од ваших измена нису сачуване. Да ли заиста желите да их одбаците?"
- },
- "navigation": {
- "no_results": "Није пронађен ниједан резултат",
- "no_more_results": "Број странице %{page} је ван опсега. Покушајте претходну страницу.",
- "page_out_of_boundaries": "Број странице %{page} је ван опсега",
- "page_out_from_end": "Не може да се иде након последње странице",
- "page_out_from_begin": "Не може да се иде испред странице 1",
- "page_range_info": "%{offsetBegin}-%{offsetEnd} од %{total}",
- "page_rows_per_page": "Ставки по страници:",
- "next": "Наредна",
- "prev": "Претход",
- "skip_nav": "Прескочи на садржај"
- },
- "notification": {
- "updated": "Елемент је ажуриран |||| %{smart_count} елемената је ажурирано",
- "created": "Елемент је креиран",
- "deleted": "Елемент је обрисан |||| %{smart_count} елемената је обрисано",
- "bad_item": "Неисправни елемент",
- "item_doesnt_exist": "Елемент не постоји",
- "http_error": "Грешка у комуникацији са сервером",
- "data_provider_error": "dataProvider грешка. За више детаља погледајте конзолу.",
- "i18n_error": "Не могу да се учитају преводи за наведени језик",
- "canceled": "Акција је отказана",
- "logged_out": "Ваша сесија је завршена, молимо вас да се повежите поново.",
- "new_version": "Доступна је нова верзија! Молимо вас да освежите овај прозор."
- },
- "toggleFieldsMenu": {
- "columnsToDisplay": "Колоне за приказ",
- "layout": "Распоред",
- "grid": "Мрежа",
- "table": "Табела"
- }
+ "album": {
+ "name": "Албум |||| Албуми",
+ "fields": {
+ "albumArtist": "Уметник албума",
+ "artist": "Уметник",
+ "catalogNum": "Каталошки број",
+ "comment": "Коментар",
+ "compilation": "Компилација",
+ "createdAt": "Датум додавања",
+ "date": "Датум снимања",
+ "duration": "Трајање",
+ "genre": "Жанр",
+ "grouping": "Груписање",
+ "media": "Медијум",
+ "mood": "Расположење",
+ "name": "Назив",
+ "originalDate": "Оригинално",
+ "playCount": "Пуштано",
+ "rating": "Рејтинг",
+ "recordLabel": "Издавачка кућа",
+ "releaseDate": "Објављено",
+ "releaseType": "Тип",
+ "released": "Објављено",
+ "releases": "Издање|||| Издања",
+ "size": "Величина",
+ "songCount": "Песме",
+ "updatedAt": "Ажурирано",
+ "year": "Година"
+ },
+ "actions": {
+ "addToPlaylist": "Додај у плејлисту",
+ "addToQueue": "Пусти касније",
+ "download": "Преузми",
+ "info": "Прикажи инфо",
+ "playAll": "Пусти",
+ "playNext": "Пусти наредно",
+ "share": "Дели",
+ "shuffle": "Измешај"
+ },
+ "lists": {
+ "all": "Све",
+ "mostPlayed": "Најчешће пуштано",
+ "random": "Насумично",
+ "recentlyAdded": "Додато недавно",
+ "recentlyPlayed": "Пуштано недавно",
+ "starred": "Омиљено",
+ "topRated": "Најбоље рангирано"
+ }
},
- "message": {
- "note": "НАПОМЕНА",
- "transcodingDisabled": "Измена конфигурације транскодирања кроз веб интерфејс је искључена из разлога безбедности. Ако желите да измените (уредите или додате) опције транскодирања, поново покрените сервер са %{config} конфигурационом опцијом.",
- "transcodingEnabled": "Navidrome се тренутно извршава са %{config}, чиме је омогућено извршавање системских команди из подешавања транскодирања коришћењем веб интерфејса. Из разлога безбедности, препоручујемо да то искључите, а да омогућите само када конфигуришете опције транскодирања.",
- "songsAddedToPlaylist": "У плејлисту је додата 1 песма |||| У плејлисту је додато %{smart_count} песама",
- "noPlaylistsAvailable": "Није доступна ниједна",
- "delete_user_title": "Брисање корисника ’%{name}’",
- "delete_user_content": "Да ли заиста желите да обришете овог корисника, заједно са свим његовим подацима (плејлистама и подешавањима)?",
- "notifications_blocked": "У подешавањима интернет прегледача за овај сајт, блокирали сте обавештења",
- "notifications_not_available": "Овај интернет прегледач не подржава десктоп обавештења, или Navidrome серверу не приступате преко https протокола",
- "lastfmLinkSuccess": "Last.fm је успешно повезан и укључено је скробловање",
- "lastfmLinkFailure": "Last.fm није могао да се повеже",
- "lastfmUnlinkSuccess": "Last.fm више није повезан и скробловање је искључено",
- "lastfmUnlinkFailure": "Није могла да се уклони веза са Last.fm",
- "listenBrainzLinkSuccess": "ListenBrainz је успешно повезан и скробловање је укључено као корисник: %{user}",
- "listenBrainzLinkFailure": "ListenBrainz није могао да се повеже: %{error}",
- "listenBrainzUnlinkSuccess": "ListenBrainz више није повезан и скробловање је искључено",
- "listenBrainzUnlinkFailure": "Није могла да се уклони веза са ListenBrainz",
- "openIn": {
- "lastfm": "Отвори у Last.fm",
- "musicbrainz": "Отвори у MusicBrainz"
- },
- "lastfmLink": "Прочитај још...",
- "shareOriginalFormat": "Подели у оригиналном формату",
- "shareDialogTitle": "Подели %{resource} ’%{name}’",
- "shareBatchDialogTitle": "Подели 1 %{resource} |||| Подели %{smart_count} %{resource}",
- "shareCopyToClipboard": "Копирај у клипборд: Ctrl+C, Ентер",
- "shareSuccess": "URL је копиран у клипборд: %{url}",
- "shareFailure": "Грешка приликом копирања URL адресе %{url} у клипборд",
- "downloadDialogTitle": "Преузимање %{resource} ’%{name}’ (%{size})",
- "downloadOriginalFormat": "Преузми у оригиналном формату"
+ "artist": {
+ "name": "Уметник |||| Уметници",
+ "fields": {
+ "albumCount": "Број албума",
+ "genre": "Жанр",
+ "name": "Назив",
+ "playCount": "Пуштано",
+ "rating": "Рејтинг",
+ "role": "Улога",
+ "size": "Величина",
+ "songCount": "Број песама"
+ },
+ "roles": {
+ "albumartist": "Уметник албума |||| Уметници албума",
+ "arranger": "Аранжер |||| Аранжери",
+ "artist": "Уметник |||| Уметници",
+ "composer": "Композитор |||| Композитори",
+ "conductor": "Диригент |||| Диригенти",
+ "director": "Режисер |||| Режисери",
+ "djmixer": "Ди-џеј миксер |||| Ди-џеј миксер",
+ "engineer": "Инжењер |||| Инжењери",
+ "lyricist": "Текстописац |||| Текстописци",
+ "mixer": "Миксер |||| Миксери",
+ "performer": "Извођач |||| Извођачи",
+ "producer": "Продуцент |||| Продуценти",
+ "remixer": "Ремиксер |||| Ремиксери"
+ }
},
- "menu": {
- "library": "Библиотека",
- "settings": "Подешавања",
- "version": "Верзија",
- "theme": "Тема",
- "personal": {
- "name": "Лична",
- "options": {
- "theme": "Тема",
- "language": "Језик",
- "defaultView": "Подразумевани поглед",
- "desktop_notifications": "Десктоп обавештења",
- "lastfmScrobbling": "Скроблуј на Last.fm",
- "listenBrainzScrobbling": "Скроблуј на ListenBrainz",
- "replaygain": "ReplayGain режим",
- "preAmp": "ReplayGain претпојачање (dB)",
- "gain": {
- "none": "Искључено",
- "album": "Користи Album појачање",
- "track": "Користи Track појачање"
- }
- }
- },
- "albumList": "Албуми",
- "playlists": "Плејлисте",
- "sharedPlaylists": "Дељене плејлисте",
- "about": "О"
+ "user": {
+ "name": "Корисник |||| Корисници",
+ "fields": {
+ "changePassword": "Измени лозинку?",
+ "createdAt": "Креирана",
+ "currentPassword": "Текућа лозинка",
+ "isAdmin": "Да ли је Админ",
+ "lastAccessAt": "Последњи приступ",
+ "lastLoginAt": "Последња пријава",
+ "name": "Назив",
+ "newPassword": "Нова лозинка",
+ "password": "Лозинка",
+ "token": "Жетон",
+ "updatedAt": "Ажурирано",
+ "userName": "Корисничко име"
+ },
+ "helperTexts": {
+ "name": "Измене вашег имена ће постати видљиве након следеће пријаве"
+ },
+ "notifications": {
+ "created": "Корисник креиран",
+ "deleted": "Корисник обрисан",
+ "updated": "Корисник ажуриран"
+ },
+ "message": {
+ "clickHereForToken": "Кликните овде да преузмете свој жетон",
+ "listenBrainzToken": "Унесите свој ListenBrainz кориснички жетон."
+ }
},
"player": {
- "playListsText": "Ред за пуштање",
- "openText": "Отвори",
- "closeText": "Затвори",
- "notContentText": "Нема музике",
- "clickToPlayText": "Кликни за пуштање",
- "clickToPauseText": "Кликни за паузирање",
- "nextTrackText": "Наредна нумера",
- "previousTrackText": "Претходна нумера",
- "reloadText": "Поново учитај",
- "volumeText": "Јачина",
- "toggleLyricText": "Укљ./Искљ. стихове",
- "toggleMiniModeText": "Умањи",
- "destroyText": "Уништи",
- "downloadText": "Преузми",
- "removeAudioListsText": "Обриши аудио листе",
- "clickToDeleteText": "Кликните да обришете %{name}",
- "emptyLyricText": "Нема стихова",
- "playModeText": {
- "order": "По редоследу",
- "orderLoop": "Понови",
- "singleLoop": "Понови једну",
- "shufflePlay": "Промешано"
- }
+ "name": "Плејер |||| Плејери",
+ "fields": {
+ "client": "Клијент",
+ "lastSeen": "Последњи пут виђен",
+ "maxBitRate": "Макс. битски проток",
+ "name": "Назив",
+ "reportRealPath": "Пријављуј реалну путању",
+ "scrobbleEnabled": "Шаљи скроблове на спољне сервисе",
+ "transcodingId": "Транскодирање",
+ "userName": "Корисничко име"
+ }
},
- "about": {
- "links": {
- "homepage": "Почетна страница",
- "source": "Изворни кôд",
- "featureRequests": "Захтеви за функцијама"
- }
+ "transcoding": {
+ "name": "Транскодирање |||| Транскодирања",
+ "fields": {
+ "command": "Команда",
+ "defaultBitRate": "Подразумевани битски проток",
+ "name": "Назив",
+ "targetFormat": "Циљни формат"
+ }
},
- "activity": {
- "title": "Активност",
- "totalScanned": "Укупан број скенираних фолдера",
- "quickScan": "Брзо скенирање",
- "fullScan": "Комплетно скенирање",
- "serverUptime": "Сервер се извршава",
- "serverDown": "ВАН МРЕЖЕ"
+ "playlist": {
+ "name": "Плејлиста |||| Плејлисте",
+ "fields": {
+ "comment": "Коментар",
+ "createdAt": "Креирана",
+ "duration": "Трајање",
+ "name": "Назив",
+ "ownerName": "Власник",
+ "path": "Увоз из",
+ "public": "Јавна",
+ "songCount": "Песме",
+ "sync": "Ауто-увоз",
+ "updatedAt": "Ажурирано"
+ },
+ "actions": {
+ "addNewPlaylist": "Креирај „%{name}”",
+ "export": "Извези",
+ "makePrivate": "Учини приватном",
+ "makePublic": "Учини јавном",
+ "selectPlaylist": "Изабери плејлисту"
+ },
+ "message": {
+ "duplicate_song": "Додај дуплиране песме",
+ "song_exist": "У плејлисту се додају дупликати. Желите ли да се додају, или да се прескоче?"
+ }
},
- "help": {
- "title": "Navidrome пречице",
- "hotkeys": {
- "show_help": "Прикажи ову помоћ",
- "toggle_menu": "Укљ./Искљ. бочну траку менија",
- "toggle_play": "Пусти / Паузирај",
- "prev_song": "Претходна песма",
- "next_song": "Наредна песма",
- "current_song": "Иди на текућу песму",
- "vol_up": "Појачај",
- "vol_down": "Утишај",
- "toggle_love": "Додај ову нумеру у омиљене"
- }
+ "radio": {
+ "name": "Радио |||| Радији",
+ "fields": {
+ "createdAt": "Креирана",
+ "homePageUrl": "URL почетне странице",
+ "name": "Назив",
+ "streamUrl": "URL тока",
+ "updatedAt": "Ажурирано"
+ },
+ "actions": {
+ "playNow": "Пусти одмах"
+ }
+ },
+ "share": {
+ "name": "Дељење |||| Дељења",
+ "fields": {
+ "contents": "Садржај",
+ "createdAt": "Креирано",
+ "description": "Опис",
+ "downloadable": "Допушта се преузимање?",
+ "expiresAt": "Истиче",
+ "format": "Формат",
+ "lastVisitedAt": "Последњи пут посећено",
+ "maxBitRate": "Макс. битски проток",
+ "updatedAt": "Ажурирано",
+ "url": "URL",
+ "username": "Поделио",
+ "visitCount": "Број посета"
+ },
+ "notifications": {},
+ "actions": {}
+ },
+ "missing": {
+ "name": "Фајл који недостаје|||| Фајлови који недостају",
+ "empty": "Нема фајлова који недостају",
+ "fields": {
+ "path": "Путања",
+ "size": "Величина",
+ "updatedAt": "Нестао дана"
+ },
+ "actions": {
+ "remove": "Уклони"
+ },
+ "notifications": {
+ "removed": "Фајл који недостаје, или више њих, је уклоњен"
+ }
}
+ },
+ "ra": {
+ "auth": {
+ "auth_check_error": "Ако желите да наставите, молимо вас да се пријавите",
+ "buttonCreateAdmin": "Креирај админа",
+ "confirmPassword": "Потврдите лозинку",
+ "insightsCollectionNote": "Navidrome прикупља анонимне податке о коришћењу\nшто олакшава унапређење пројекта. Кликните [овде] да\nсазнате више и да одустанете од прикупљања ако желите",
+ "logout": "Одјави се",
+ "password": "Лозинка",
+ "sign_in": "Пријави се",
+ "sign_in_error": "Потврда идентитета није успела, покушајте поново",
+ "user_menu": "Профил",
+ "username": "Корисничко име",
+ "welcome1": "Хвала што сте инсталирали Navidrome!",
+ "welcome2": "За почетак, креирајте админ корисника"
+ },
+ "validation": {
+ "email": "Мора да буде исправна и-мејл адреса",
+ "invalidChars": "Молимо вас да користите само слова и цифре",
+ "maxLength": "Мора да буде %{max} карактера или мање",
+ "maxValue": "Мора да буде %{max} или мање",
+ "minLength": "Мора да буде барем %{min} карактера",
+ "minValue": "Мора да буде барем %{min}",
+ "number": "Мора да буде број",
+ "oneOf": "Мора да буде једно од: %{options}",
+ "passwordDoesNotMatch": "Лозинка се не подудара",
+ "regex": "Мора да се подудара са одређеним форматом (регуларни израз): %{pattern}",
+ "required": "Неопходно",
+ "unique": "Мора да буде јединствено",
+ "url": "Мора да буде исправна URL адреса"
+ },
+ "action": {
+ "add": "Додај",
+ "add_filter": "Додај филтер",
+ "back": "Иди назад",
+ "bulk_actions": "изабрана је 1 ставка |||| изабрано је %{smart_count} ставки",
+ "bulk_actions_mobile": "1 |||| %{smart_count}",
+ "cancel": "Откажи",
+ "clear_input_value": "Обриши вредност",
+ "clone": "Клонирај",
+ "close": "Затвори",
+ "close_menu": "Затвори мени",
+ "confirm": "Потврди",
+ "create": "Креирај",
+ "delete": "Обриши",
+ "download": "Преузми",
+ "edit": "Уреди",
+ "expand": "Развиј",
+ "export": "Извези",
+ "list": "Листа",
+ "open_menu": "Отвори мени",
+ "refresh": "Освежи",
+ "remove": "Уклони",
+ "remove_filter": "Уклони овај филтер",
+ "save": "Сачувај",
+ "search": "Тражи",
+ "share": "Дели",
+ "show": "Прикажи",
+ "skip": "Прескочи",
+ "sort": "Сортирај",
+ "undo": "Поништи",
+ "unselect": "Уклони избор"
+ },
+ "boolean": {
+ "false": "Не",
+ "true": "Да"
+ },
+ "page": {
+ "create": "Креирај %{name}",
+ "dashboard": "Контролна табла",
+ "edit": "%{name} #%{id}",
+ "empty": "Још увек нема %{name}.",
+ "error": "Нешто је пошло наопако",
+ "invite": "Желите ли да се дода?",
+ "list": "%{name}",
+ "loading": "Учитава се",
+ "not_found": "Није пронађено",
+ "show": "%{name} #%{id}"
+ },
+ "input": {
+ "file": {
+ "upload_several": "Упустите фајлове да се отпреме, или кликните да их изаберете.",
+ "upload_single": "Упустите фајл да се отпреми, или кликните да га изаберете."
+ },
+ "image": {
+ "upload_several": "Упустите слике да се отпреме, или кликните да их изаберете.",
+ "upload_single": "Упустите слику да се отпреми, или кликните да је изаберете."
+ },
+ "password": {
+ "toggle_hidden": "Прикажи лозинку",
+ "toggle_visible": "Сакриј лозинку"
+ },
+ "references": {
+ "all_missing": "Не могу да се нађу подаци референци.",
+ "many_missing": "Изгледа да барем једна од придружених референци више није доступна.",
+ "single_missing": "Изгледа да придружена референца више није доступна."
+ }
+ },
+ "message": {
+ "about": "О",
+ "are_you_sure": "Да ли сте сигурни?",
+ "bulk_delete_content": "Да ли заиста желите да обришете %{name}? |||| Да ли заиста желите да обришете %{smart_count} ставке?",
+ "bulk_delete_title": "Брисање %{name} |||| Брисање %{smart_count} %{name}",
+ "delete_content": "Да ли заиста желите да обришете ову ставку?",
+ "delete_title": "Брисање %{name} #%{id}",
+ "details": "Детаљи",
+ "error": "Дошло је до клијентске грешке и ваш захтев није могао да се изврши.",
+ "invalid_form": "Формулар није исправан. Молимо вас да исправите грешке",
+ "loading": "Страница се учитава, сачекајте мало",
+ "no": "Не",
+ "not_found": "Или сте откуцали погрешну URL адресу, или сте следили неисправан линк.",
+ "unsaved_changes": "Неке од ваших измена нису сачуване. Да ли заиста желите да их одбаците?",
+ "yes": "Да"
+ },
+ "navigation": {
+ "next": "Наредна",
+ "no_more_results": "Број странице %{page} је ван опсега. Покушајте претходну страницу.",
+ "no_results": "Није пронађен ниједан резултат",
+ "page_out_from_begin": "Не може да се иде испред странице 1",
+ "page_out_from_end": "Не може да се иде након последње странице",
+ "page_out_of_boundaries": "Број странице %{page} је ван опсега",
+ "page_range_info": "%{offsetBegin}-%{offsetEnd} од %{total}",
+ "page_rows_per_page": "Ставки по страници:",
+ "prev": "Претход",
+ "skip_nav": "Прескочи на садржај"
+ },
+ "notification": {
+ "bad_item": "Неисправни елемент",
+ "canceled": "Акција је отказана",
+ "created": "Елемент је креиран",
+ "data_provider_error": "dataProvider грешка. За више детаља погледајте конзолу.",
+ "deleted": "Елемент је обрисан |||| %{smart_count} елемената је обрисано",
+ "http_error": "Грешка у комуникацији са сервером",
+ "i18n_error": "Не могу да се учитају преводи за наведени језик",
+ "item_doesnt_exist": "Елемент не постоји",
+ "logged_out": "Ваша сесија је завршена, молимо вас да се повежите поново.",
+ "new_version": "Доступна је нова верзија! Молимо вас да освежите овај прозор.",
+ "updated": "Елемент је ажуриран |||| %{smart_count} елемената је ажурирано"
+ },
+ "toggleFieldsMenu": {
+ "columnsToDisplay": "Колоне за приказ",
+ "grid": "Мрежа",
+ "layout": "Распоред",
+ "table": "Табела"
+ }
+ },
+ "message": {
+ "delete_user_content": "Да ли заиста желите да обришете овог корисника, заједно са свим његовим подацима (плејлистама и подешавањима)?",
+ "delete_user_title": "Брисање корисника ’%{name}’",
+ "downloadDialogTitle": "Преузимање %{resource} ’%{name}’ (%{size})",
+ "downloadOriginalFormat": "Преузми у оригиналном формату",
+ "lastfmLink": "Прочитај још...",
+ "lastfmLinkFailure": "Last.fm није могао да се повеже",
+ "lastfmLinkSuccess": "Last.fm је успешно повезан и укључено је скробловање",
+ "lastfmUnlinkFailure": "Није могла да се уклони веза са Last.fm",
+ "lastfmUnlinkSuccess": "Last.fm више није повезан и скробловање је искључено",
+ "listenBrainzLinkFailure": "ListenBrainz није могао да се повеже: %{error}",
+ "listenBrainzLinkSuccess": "ListenBrainz је успешно повезан и скробловање је укључено као корисник: %{user}",
+ "listenBrainzUnlinkFailure": "Није могла да се уклони веза са ListenBrainz",
+ "listenBrainzUnlinkSuccess": "ListenBrainz више није повезан и скробловање је искључено",
+ "noPlaylistsAvailable": "Није доступна ниједна",
+ "note": "НАПОМЕНА",
+ "notifications_blocked": "У подешавањима интернет прегледача за овај сајт, блокирали сте обавештења",
+ "notifications_not_available": "Овај интернет прегледач не подржава десктоп обавештења, или Navidrome серверу не приступате преко https протокола",
+ "openIn": {
+ "lastfm": "Отвори у Last.fm",
+ "musicbrainz": "Отвори у MusicBrainz"
+ },
+ "remove_missing_content": "Да ли сте сигурни да из базе података желите да уклоните фајлове који недостају? Ово ће трајно да уклони све референце на њих, укључујући број пуштања и рангирања.",
+ "remove_missing_title": "Уклони фајлове који недостају",
+ "shareBatchDialogTitle": "Подели 1 %{resource} |||| Подели %{smart_count} %{resource}",
+ "shareCopyToClipboard": "Копирај у клипборд: Ctrl+C, Ентер",
+ "shareDialogTitle": "Подели %{resource} ’%{name}’",
+ "shareFailure": "Грешка приликом копирања URL адресе %{url} у клипборд",
+ "shareOriginalFormat": "Подели у оригиналном формату",
+ "shareSuccess": "URL је копиран у клипборд: %{url}",
+ "songsAddedToPlaylist": "У плејлисту је додата 1 песма |||| У плејлисту је додато %{smart_count} песама",
+ "transcodingDisabled": "Измена конфигурације транскодирања кроз веб интерфејс је искључена из разлога безбедности. Ако желите да измените (уредите или додате) опције транскодирања, поново покрените сервер са %{config} конфигурационом опцијом.",
+ "transcodingEnabled": "Navidrome се тренутно извршава са %{config}, чиме је омогућено извршавање системских команди из подешавања транскодирања коришћењем веб интерфејса. Из разлога безбедности, препоручујемо да то искључите, а да омогућите само када конфигуришете опције транскодирања."
+ },
+ "menu": {
+ "about": "О",
+ "albumList": "Албуми",
+ "library": "Библиотека",
+ "personal": {
+ "name": "Лична",
+ "options": {
+ "defaultView": "Подразумевани поглед",
+ "desktop_notifications": "Десктоп обавештења",
+ "gain": {
+ "album": "Користи Album појачање",
+ "none": "Искључено",
+ "track": "Користи Track појачање"
+ },
+ "language": "Језик",
+ "lastfmNotConfigured": "Није подешен Last.fm API-кључ",
+ "lastfmScrobbling": "Скроблуј на Last.fm",
+ "listenBrainzScrobbling": "Скроблуј на ListenBrainz",
+ "preAmp": "ReplayGain претпојачање (dB)",
+ "replaygain": "ReplayGain режим",
+ "theme": "Тема"
+ }
+ },
+ "playlists": "Плејлисте",
+ "settings": "Подешавања",
+ "sharedPlaylists": "Дељене плејлисте",
+ "theme": "Тема",
+ "version": "Верзија"
+ },
+ "player": {
+ "clickToDeleteText": "Кликните да обришете %{name}",
+ "clickToPauseText": "Кликни за паузирање",
+ "clickToPlayText": "Кликни за пуштање",
+ "closeText": "Затвори",
+ "destroyText": "Уништи",
+ "downloadText": "Преузми",
+ "emptyLyricText": "Нема стихова",
+ "nextTrackText": "Наредна нумера",
+ "notContentText": "Нема музике",
+ "openText": "Отвори",
+ "playListsText": "Ред за пуштање",
+ "playModeText": {
+ "order": "По редоследу",
+ "orderLoop": "Понови",
+ "shufflePlay": "Измешај",
+ "singleLoop": "Понови једну"
+ },
+ "previousTrackText": "Претходна нумера",
+ "reloadText": "Поново учитај",
+ "removeAudioListsText": "Обриши аудио листе",
+ "toggleLyricText": "Укљ./Искљ. стихове",
+ "toggleMiniModeText": "Умањи",
+ "volumeText": "Јачина"
+ },
+ "about": {
+ "links": {
+ "featureRequests": "Захтеви за функцијама",
+ "homepage": "Почетна страница",
+ "insights": {
+ "disabled": "Искључено",
+ "waiting": "Чека се"
+ },
+ "lastInsightsCollection": "Последња колекција увида",
+ "source": "Изворни кôд"
+ }
+ },
+ "activity": {
+ "fullScan": "Комплетно скенирање",
+ "quickScan": "Брзо скенирање",
+ "serverDown": "ВАН МРЕЖЕ",
+ "serverUptime": "Сервер се извршава",
+ "title": "Активност",
+ "totalScanned": "Укупан број скенираних фолдера"
+ },
+ "help": {
+ "title": "Navidrome пречице",
+ "hotkeys": {
+ "current_song": "Иди на текућу песму",
+ "next_song": "Наредна песма",
+ "prev_song": "Претходна песма",
+ "show_help": "Прикажи ову помоћ",
+ "toggle_love": "Додај ову нумеру у омиљене",
+ "toggle_menu": "Укљ./Искљ. бочну траку менија",
+ "toggle_play": "Пусти / Паузирај",
+ "vol_down": "Утишај",
+ "vol_up": "Појачај"
+ }
+ }
}
diff --git a/resources/i18n/tr.json b/resources/i18n/tr.json
index 8c3ac1759..cb1a0262d 100644
--- a/resources/i18n/tr.json
+++ b/resources/i18n/tr.json
@@ -33,7 +33,8 @@
"tags": "Ek Etiketler",
"mappedTags": "Eşlenen etiketler",
"rawTags": "Ham etiketler",
- "bitDepth": "Bit derinliği"
+ "bitDepth": "Bit derinliği",
+ "sampleRate": "Örnekleme Oranı"
},
"actions": {
"addToQueue": "Oynatma Sırasına Ekle",
diff --git a/resources/i18n/zh-Hans.json b/resources/i18n/zh-Hans.json
index d0c8c5983..c447f7d72 100644
--- a/resources/i18n/zh-Hans.json
+++ b/resources/i18n/zh-Hans.json
@@ -12,12 +12,14 @@
"artist": "歌手",
"album": "专辑",
"path": "文件路径",
- "genre": "类型",
+ "genre": "流派",
"compilation": "合辑",
"year": "发行年份",
"size": "文件大小",
"updatedAt": "更新于",
"bitRate": "比特率",
+ "bitDepth": "比特深度",
+ "channels": "声道",
"discSubtitle": "字幕",
"starred": "收藏",
"comment": "注释",
@@ -25,8 +27,13 @@
"quality": "品质",
"bpm": "BPM",
"playDate": "最后一次播放",
- "channels": "声道",
- "createdAt": "创建于"
+ "createdAt": "创建于",
+ "grouping": "分组",
+ "mood": "情绪",
+ "participants": "其他参与人员",
+ "tags": "附加标签",
+ "mappedTags": "映射标签",
+ "rawTags": "原始标签"
},
"actions": {
"addToQueue": "加入播放列表",
@@ -46,29 +53,36 @@
"duration": "时长",
"songCount": "歌曲数量",
"playCount": "播放次数",
+ "size": "文件大小",
"name": "名称",
- "genre": "类型",
+ "genre": "流派",
"compilation": "合辑",
"year": "发行年份",
+ "date": "录制日期",
+ "originalDate": "原始日期",
+ "releaseDate": "发⾏日期",
+ "releases": "发⾏",
+ "released": "已发⾏",
"updatedAt": "更新于",
"comment": "注释",
"rating": "评分",
"createdAt": "创建于",
- "size": "文件大小",
- "originalDate": "原始日期",
- "releaseDate": "发⾏日期",
- "releases": "发⾏",
- "released": "已发⾏"
+ "recordLabel": "厂牌",
+ "catalogNum": "目录编号",
+ "releaseType": "发行类型",
+ "grouping": "分组",
+ "media": "媒体类型",
+ "mood": "情绪"
},
"actions": {
"playAll": "立即播放",
"playNext": "下首播放",
"addToQueue": "加入播放列表",
+ "share": "分享",
"shuffle": "随机播放",
"addToPlaylist": "加入歌单",
"download": "下载",
- "info": "查看信息",
- "share": "分享"
+ "info": "查看信息"
},
"lists": {
"all": "所有",
@@ -86,10 +100,26 @@
"name": "名称",
"albumCount": "专辑数",
"songCount": "歌曲数",
+ "size": "文件大小",
"playCount": "播放次数",
"rating": "评分",
- "genre": "类型",
- "size": "文件大小"
+ "genre": "流派",
+ "role": "参与角色"
+ },
+ "roles": {
+ "albumartist": "专辑歌手",
+ "artist": "歌手",
+ "composer": "作曲",
+ "conductor": "指挥",
+ "lyricist": "作词",
+ "arranger": "编曲",
+ "producer": "制作人",
+ "director": "总监",
+ "engineer": "工程师",
+ "mixer": "混音师",
+ "remixer": "重混师",
+ "djmixer": "DJ混音师",
+ "performer": "演奏家"
}
},
"user": {
@@ -98,6 +128,7 @@
"userName": "用户名",
"isAdmin": "是否管理员",
"lastLoginAt": "上次登录",
+ "lastAccessAt": "上次访问",
"updatedAt": "更新于",
"name": "名称",
"password": "密码",
@@ -108,7 +139,7 @@
"token": "令牌"
},
"helperTexts": {
- "name": "你名字的更改将在下次登录生效"
+ "name": "名称的更改将在下次登录时生效"
},
"notifications": {
"created": "用户已创建",
@@ -187,6 +218,7 @@
"username": "分享者",
"url": "链接",
"description": "描述",
+ "downloadable": "是否允许下载?",
"contents": "目录",
"expiresAt": "过期于",
"lastVisitedAt": "上次访问于",
@@ -194,8 +226,24 @@
"format": "格式",
"maxBitRate": "最大比特率",
"updatedAt": "更新于",
- "createdAt": "创建于",
- "downloadable": "是否允许下载"
+ "createdAt": "创建于"
+ },
+ "notifications": {},
+ "actions": {}
+ },
+ "missing": {
+ "name": "丢失文件",
+ "empty": "无丢失文件",
+ "fields": {
+ "path": "路径",
+ "size": "文件大小",
+ "updatedAt": "丢失于"
+ },
+ "actions": {
+ "remove": "移除"
+ },
+ "notifications": {
+ "removed": "丢失文件已移除"
}
}
},
@@ -211,7 +259,8 @@
"password": "密码",
"sign_in": "登录",
"sign_in_error": "验证失败,请重试",
- "logout": "注销"
+ "logout": "注销",
+ "insightsCollectionNote": "Navidrome 会收集匿名使用数据以协助改进项目。\n点击[此处]了解详情或选择退出。"
},
"validation": {
"invalidChars": "请使用字母和数字",
@@ -233,6 +282,7 @@
"add": "添加",
"back": "返回",
"bulk_actions": "选中 %{smart_count} 项",
+ "bulk_actions_mobile": "%{smart_count}",
"cancel": "取消",
"clear_input_value": "清除",
"clone": "复制",
@@ -256,7 +306,6 @@
"close_menu": "关闭菜单",
"unselect": "未选择",
"skip": "跳过",
- "bulk_actions_mobile": "%{smart_count}",
"share": "分享",
"download": "下载"
},
@@ -351,29 +400,31 @@
"noPlaylistsAvailable": "没有有效的歌单",
"delete_user_title": "删除用户 %{name}",
"delete_user_content": "您确定要删除该用户及其相关数据(包括歌单和用户配置)吗?",
+ "remove_missing_title": "移除丢失文件",
+ "remove_missing_content": "您确定要将选中的丢失文件从数据库中永久移除吗?此操作将删除所有相关信息,包括播放次数和评分。",
"notifications_blocked": "您已在浏览器的设置中屏蔽了此网站的通知",
"notifications_not_available": "此浏览器不支持桌面通知",
"lastfmLinkSuccess": "Last.fm 已关联并启用喜好记录",
"lastfmLinkFailure": "Last.fm 无法关联",
"lastfmUnlinkSuccess": "已成功解除与 Last.fm 的链接,且喜好记录已禁用",
"lastfmUnlinkFailure": "Last.fm 无法取消关联",
+ "listenBrainzLinkSuccess": "ListenBrainz 已关联并启用喜好记录",
+ "listenBrainzLinkFailure": "ListenBrainz 无法关联:%{error}",
+ "listenBrainzUnlinkSuccess": "已成功解除与 ListenBrainz 的链接,且喜好记录已禁用",
+ "listenBrainzUnlinkFailure": "ListenBrainz 无法取消关联",
"openIn": {
"lastfm": "在 Last.fm 中打开",
"musicbrainz": "在 MusicBrainz 中打开"
},
"lastfmLink": "查看更多…",
- "listenBrainzLinkSuccess": "ListenBrainz 已关联并启用喜好记录",
- "listenBrainzLinkFailure": "ListenBrainz 无法关联:%{error}",
- "listenBrainzUnlinkSuccess": "已成功解除与 ListenBrainz 的链接,且喜好记录已禁用",
- "listenBrainzUnlinkFailure": "ListenBrainz 无法取消关联",
- "downloadOriginalFormat": "下载原始格式",
"shareOriginalFormat": "分享原始格式",
"shareDialogTitle": "分享 %{resource} '%{name}'",
"shareBatchDialogTitle": "分享 %{smart_count} 个 %{resource}",
+ "shareCopyToClipboard": "复制到剪切板: Ctrl+C, Enter",
"shareSuccess": "分享链接已复制: %{url}",
"shareFailure": "分享链接复制失败: %{url}",
"downloadDialogTitle": "下载 %{resource} '%{name}' (%{size})",
- "shareCopyToClipboard": "复制到剪切板: Ctrl+C, Enter"
+ "downloadOriginalFormat": "下载原始格式"
},
"menu": {
"library": "曲库",
@@ -387,6 +438,7 @@
"language": "语言",
"defaultView": "默认界面",
"desktop_notifications": "桌面通知",
+ "lastfmNotConfigured": "没有配置 Last.fm 的 API-Key",
"lastfmScrobbling": "启用 Last.fm 的喜好记录",
"listenBrainzScrobbling": "启用 ListenBrainz 的喜好记录",
"replaygain": "回放增益",
@@ -399,9 +451,9 @@
}
},
"albumList": "专辑",
- "about": "关于",
"playlists": "歌单",
- "sharedPlaylists": "共享的歌单"
+ "sharedPlaylists": "共享的歌单",
+ "about": "关于"
},
"player": {
"playListsText": "播放列表",
@@ -432,7 +484,12 @@
"links": {
"homepage": "主页",
"source": "源代码",
- "featureRequests": "功能需求"
+ "featureRequests": "功能需求",
+ "lastInsightsCollection": " 最近的分析收集",
+ "insights": {
+ "disabled": "禁用",
+ "waiting": "等待"
+ }
}
},
"activity": {
@@ -451,10 +508,10 @@
"toggle_play": "播放/暂停",
"prev_song": "上一首歌",
"next_song": "下一首歌",
+ "current_song": "转到当前播放",
"vol_up": "增大音量",
"vol_down": "减小音量",
- "toggle_love": "添加/移除星标",
- "current_song": "转到当前播放"
+ "toggle_love": "添加/移除星标"
}
}
}
\ No newline at end of file
diff --git a/ui/src/album/AlbumSongs.jsx b/ui/src/album/AlbumSongs.jsx
index bfb1a4d6a..d705617e1 100644
--- a/ui/src/album/AlbumSongs.jsx
+++ b/ui/src/album/AlbumSongs.jsx
@@ -185,7 +185,6 @@ const AlbumSongs = (props) => {
{...props}
hasBulkActions={true}
showDiscSubtitles={true}
- showReleaseDivider={true}
contextAlwaysVisible={!isDesktop}
classes={{ row: classes.row }}
>
diff --git a/ui/src/common/ContextMenus.jsx b/ui/src/common/ContextMenus.jsx
index 855825496..47c9c6786 100644
--- a/ui/src/common/ContextMenus.jsx
+++ b/ui/src/common/ContextMenus.jsx
@@ -231,7 +231,6 @@ export const AlbumContextMenu = (props) =>
sort: { field: 'album', order: 'ASC' },
filter: {
album_id: props.record.id,
- release_date: props.releaseDate,
disc_number: props.discNumber,
missing: false,
},
diff --git a/ui/src/common/PlayButton.jsx b/ui/src/common/PlayButton.jsx
index 04b36ef5b..d8717236f 100644
--- a/ui/src/common/PlayButton.jsx
+++ b/ui/src/common/PlayButton.jsx
@@ -24,7 +24,6 @@ export const PlayButton = ({ record, size, className }) => {
sort: { field: 'album', order: 'ASC' },
filter: {
album_id: record.id,
- release_date: record.releaseDate,
disc_number: record.discNumber,
},
})
diff --git a/ui/src/common/SongDatagrid.jsx b/ui/src/common/SongDatagrid.jsx
index 78f580e67..3586cf225 100644
--- a/ui/src/common/SongDatagrid.jsx
+++ b/ui/src/common/SongDatagrid.jsx
@@ -59,59 +59,12 @@ const useStyles = makeStyles({
},
})
-const ReleaseRow = forwardRef(
- ({ record, onClick, colSpan, contextAlwaysVisible }, ref) => {
- const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
- const classes = useStyles({ isDesktop })
- const translate = useTranslate()
- const handlePlaySubset = (releaseDate) => () => {
- onClick(releaseDate)
- }
-
- let releaseTitle = []
- if (record.releaseDate) {
- releaseTitle.push(translate('resources.album.fields.released'))
- releaseTitle.push(formatFullDate(record.releaseDate))
- if (record.catalogNum && isDesktop) {
- releaseTitle.push('· Cat #')
- releaseTitle.push(record.catalogNum)
- }
- }
-
- return (
-
-
-
- {releaseTitle.join(' ')}
-
-
-
-
-
-
- )
- },
-)
-
-ReleaseRow.displayName = 'ReleaseRow'
-
const DiscSubtitleRow = forwardRef(
({ record, onClick, colSpan, contextAlwaysVisible }, ref) => {
const isDesktop = useMediaQuery((theme) => theme.breakpoints.up('md'))
const classes = useStyles({ isDesktop })
- const handlePlaySubset = (releaseDate, discNumber) => () => {
- onClick(releaseDate, discNumber)
+ const handlePlaySubset = (discNumber) => () => {
+ onClick(discNumber)
}
let subtitle = []
@@ -126,7 +79,7 @@ const DiscSubtitleRow = forwardRef(
@@ -139,7 +92,6 @@ const DiscSubtitleRow = forwardRef(
- {firstTracksOfReleases.has(record.id) && (
-
- )}
{firstTracksOfDiscs.has(record.id) && (
{
const dispatch = useDispatch()
const { ids, data } = rest
const playSubset = useCallback(
- (releaseDate, discNumber) => {
+ (discNumber) => {
let idsToPlay = []
if (discNumber !== undefined) {
- idsToPlay = ids.filter(
- (id) =>
- data[id].releaseDate === releaseDate &&
- data[id].discNumber === discNumber,
- )
- } else {
- idsToPlay = ids.filter((id) => data[id].releaseDate === releaseDate)
+ idsToPlay = ids.filter((id) => data[id].discNumber === discNumber)
}
dispatch(
playTracks(
@@ -297,8 +230,7 @@ const SongDatagridBody = ({
foundSubtitle = foundSubtitle || data[id].discSubtitle
if (
acc.length === 0 ||
- (last && data[id].discNumber !== data[last].discNumber) ||
- (last && data[id].releaseDate !== data[last].releaseDate)
+ (last && data[id].discNumber !== data[last].discNumber)
) {
acc.push(id)
}
@@ -311,37 +243,12 @@ const SongDatagridBody = ({
return set
}, [ids, data, showDiscSubtitles])
- const firstTracksOfReleases = useMemo(() => {
- if (!ids) {
- return new Set()
- }
- const set = new Set(
- ids
- .filter((i) => data[i])
- .reduce((acc, id) => {
- const last = acc && acc[acc.length - 1]
- if (
- acc.length === 0 ||
- (last && data[id].releaseDate !== data[last].releaseDate)
- ) {
- acc.push(id)
- }
- return acc
- }, []),
- )
- if (!showReleaseDivider || set.size < 2) {
- set.clear()
- }
- return set
- }, [ids, data, showReleaseDivider])
-
return (
@@ -353,7 +260,6 @@ const SongDatagridBody = ({
export const SongDatagrid = ({
contextAlwaysVisible,
showDiscSubtitles,
- showReleaseDivider,
...rest
}) => {
const classes = useStyles()
@@ -366,7 +272,6 @@ export const SongDatagrid = ({
}
/>
@@ -376,6 +281,5 @@ export const SongDatagrid = ({
SongDatagrid.propTypes = {
contextAlwaysVisible: PropTypes.bool,
showDiscSubtitles: PropTypes.bool,
- showReleaseDivider: PropTypes.bool,
classes: PropTypes.object,
}