mirror of
https://github.com/owntone/owntone-server.git
synced 2025-07-20 22:11:16 -04:00
[web] Simplify the display of settings to make them autogenerated in the future
This commit is contained in:
parent
4dc6754726
commit
9c61ee5158
File diff suppressed because one or more lines are too long
@ -4,7 +4,7 @@
|
||||
<slot name="label" />
|
||||
</label>
|
||||
<div class="control" :class="{ 'has-icons-right': isSuccess || isError }">
|
||||
<slot name="input" :setting="setting" :update="update" />
|
||||
<slot name="input" :label="label" :setting="setting" :update="update" />
|
||||
<mdicon
|
||||
v-if="$slots.label && (isSuccess || isError)"
|
||||
class="icon is-right"
|
||||
@ -45,6 +45,11 @@ export default {
|
||||
isSuccess() {
|
||||
return this.timerId >= 0
|
||||
},
|
||||
label() {
|
||||
return this.$t(
|
||||
`settings.${this.category}.${this.name.replace(/_/gu, '-')}`
|
||||
)
|
||||
},
|
||||
setting() {
|
||||
return this.settingsStore.get(this.category, this.name)
|
||||
}
|
||||
|
@ -5,10 +5,8 @@
|
||||
:name="name"
|
||||
:placeholder="placeholder"
|
||||
>
|
||||
<template #label>
|
||||
<slot name="label" />
|
||||
</template>
|
||||
<template #input="{ setting, update }">
|
||||
<template #input="{ label, setting, update }">
|
||||
<span v-text="label" />
|
||||
<input
|
||||
class="input"
|
||||
inputmode="numeric"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<control-setting :category="category" :disabled="disabled" :name="name">
|
||||
<template #input="{ setting, update }">
|
||||
<template #input="{ label, setting, update }">
|
||||
<control-switch
|
||||
:model-value="setting.value"
|
||||
@update:model-value="
|
||||
@ -8,7 +8,7 @@
|
||||
"
|
||||
>
|
||||
<template #label>
|
||||
<slot name="label" />
|
||||
<span v-text="label" />
|
||||
</template>
|
||||
</control-switch>
|
||||
</template>
|
||||
|
@ -5,10 +5,8 @@
|
||||
:name="name"
|
||||
:placeholder="placeholder"
|
||||
>
|
||||
<template #label>
|
||||
<slot name="label" />
|
||||
</template>
|
||||
<template #input="{ setting, update }">
|
||||
<template #input="{ label, setting, update }">
|
||||
<span v-text="label" />
|
||||
<input
|
||||
class="input"
|
||||
inputmode="text"
|
||||
|
@ -12,7 +12,7 @@ export default {
|
||||
links() {
|
||||
return [
|
||||
{
|
||||
key: 'page.settings.tabs.general',
|
||||
key: 'page.settings.tabs.webinterface',
|
||||
to: { name: 'settings-webinterface' }
|
||||
},
|
||||
{
|
||||
|
@ -6,9 +6,9 @@
|
||||
"cancel": "Abbrechen",
|
||||
"clear": "Alle entfernen",
|
||||
"edit": "Bearbeiten",
|
||||
"hide-previous": "Vorherige verbergen",
|
||||
"login": "Einloggen",
|
||||
"logout": "Ausloggen",
|
||||
"hide-previous": "Vorherige verbergen",
|
||||
"mark-all-played": "Alle abgespielten markieren",
|
||||
"mark-as-new": "Markiere als neu",
|
||||
"mark-as-played": "Markiere als gespielt",
|
||||
@ -30,16 +30,16 @@
|
||||
"channels": "{count} canal|{count} canaux",
|
||||
"composers": "{count} Komponist|{count} Komponist|{count} Komponisten",
|
||||
"genres": "{count} Genre|{count} Genre|{count} Genres",
|
||||
"kind": {
|
||||
"file": "Datei",
|
||||
"pipe": "Stream",
|
||||
"spotify": "Spotify",
|
||||
"url": "URL"
|
||||
},
|
||||
"playlists": "{count} Playlist|{count} Playlisten",
|
||||
"podcasts": "{count} Podcast|{count} Podcasts",
|
||||
"stations": "{count} Station|{count} Station|{count} Stationen",
|
||||
"tracks": "{count} Track|{count} Track|{count} Tracks",
|
||||
"kind": {
|
||||
"file": "Datei",
|
||||
"url": "URL",
|
||||
"spotify": "Spotify",
|
||||
"pipe": "Stream"
|
||||
}
|
||||
"tracks": "{count} Track|{count} Track|{count} Tracks"
|
||||
},
|
||||
"dialog": {
|
||||
"add": {
|
||||
@ -56,12 +56,6 @@
|
||||
"title": "Stream hinzufügen"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"title": "Podcast enfernen",
|
||||
"info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"save": {
|
||||
"playlist-name": "Playlistname",
|
||||
@ -69,6 +63,12 @@
|
||||
"title": "Warteschlange als Playlist speichern"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})",
|
||||
"title": "Podcast enfernen"
|
||||
}
|
||||
},
|
||||
"queue-item": {
|
||||
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:data.channels {'|'} {bitrate} kbit/s"
|
||||
},
|
||||
@ -91,6 +91,12 @@
|
||||
"title": "Bibliothek neu einlesen"
|
||||
}
|
||||
},
|
||||
"grouped-list": {
|
||||
"last-month": "Letzer Monat",
|
||||
"last-week": "Letzte Woche",
|
||||
"today": "Heute",
|
||||
"undefined": "Unbestimmt"
|
||||
},
|
||||
"language": {
|
||||
"de": "Deutsch",
|
||||
"en": "Englisch (English)",
|
||||
@ -121,9 +127,6 @@
|
||||
"artists": "Künstler",
|
||||
"audiobooks": "Hörbücher",
|
||||
"composers": "Komponisten",
|
||||
"stream-error": "HTTP-stream-Fehler: Stream kann nicht geladen werden oder wurde wg. Netzwerkfehler gestopt",
|
||||
"stream": "HTTP-stream",
|
||||
"volume": "Lautstärke",
|
||||
"files": "Dateien",
|
||||
"genres": "Genres",
|
||||
"music": "Musik",
|
||||
@ -133,7 +136,10 @@
|
||||
"search": "Suche",
|
||||
"settings": "Einstellungen",
|
||||
"spotify": "Spotify",
|
||||
"update-library": "Bibliothek neu einlesen"
|
||||
"stream": "HTTP-stream",
|
||||
"stream-error": "HTTP-stream-Fehler: Stream kann nicht geladen werden oder wurde wg. Netzwerkfehler gestopt",
|
||||
"update-library": "Bibliothek neu einlesen",
|
||||
"volume": "Lautstärke"
|
||||
},
|
||||
"options": {
|
||||
"filter": {
|
||||
@ -144,8 +150,8 @@
|
||||
"title": "Filtern"
|
||||
},
|
||||
"sort": {
|
||||
"artist-name": "Künstler › Name",
|
||||
"artist-date": "Künstler › Erscheinungsdatum",
|
||||
"artist-name": "Künstler › Name",
|
||||
"name": "Namen",
|
||||
"rating": "Bewertung",
|
||||
"recently-added": "Kürzlich hinzugefügt",
|
||||
@ -177,8 +183,8 @@
|
||||
"title": "Autoren"
|
||||
},
|
||||
"tabs": {
|
||||
"authors": "Autoren",
|
||||
"audiobooks": "Hörbücher",
|
||||
"authors": "Autoren",
|
||||
"genres": "Genres"
|
||||
}
|
||||
},
|
||||
@ -243,78 +249,18 @@
|
||||
"show-playlists": "Zeige die Playlist|Zeige alle {count} Playlisten",
|
||||
"show-podcasts": "Zeige den Podcast| Zeige alle {count} Podcasts",
|
||||
"show-tracks": "Zeige den Track|Zeige alle {count} Tracks",
|
||||
"tracks": "Tracks",
|
||||
"tabs": {
|
||||
"library": "Bibliothek",
|
||||
"spotify": "Spotify"
|
||||
}
|
||||
},
|
||||
"tracks": "Tracks"
|
||||
},
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"title": "Artwork",
|
||||
"coverartarchive": "Cover Art Archive",
|
||||
"discogs": "Discogs",
|
||||
"explanation-1": "OwnTone verarbeitet PNG- und JPEG-Artwork, welches in einer eigenen Datei in der Bibliothek, in die Dateien eingebettet oder online von Radiostationen bereitgestellt werden kann.",
|
||||
"explanation-2": "Zusätzlich kann auf folgende Artwork-Anbieter zugegriffen werden:",
|
||||
"show-coverart": "Zeige Cover-Artwork in der Albumliste",
|
||||
"spotify": "Spotify",
|
||||
"streaming": "Bereitgestellte Artwork von Radiostationen ignorieren"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "Keine aktive Pairing-Anfrage",
|
||||
"pairing-code": "Pairing-Code",
|
||||
"pairing-request": "Remote-Pairing-Anfrage von ",
|
||||
"pairing": "Pairing Remote",
|
||||
"speaker-pairing-info": "Wenn der Laufsprecher PIN-basiertes Pairing verlangt, aktiviere ihn hier und gib dann den hier PIN an, der am Lautsprecher angezeigt wird.",
|
||||
"speaker-pairing": "Lautsprecher-Pairing und Geräteverifikation",
|
||||
"verification-code": "Verifikationscode"
|
||||
},
|
||||
"general": {
|
||||
"audiobooks": "Hörbücher",
|
||||
"files": "Dateien",
|
||||
"genres": "Genres",
|
||||
"language": "Sprache",
|
||||
"music": "Musik",
|
||||
"navigation-item-selection-info": "Auf den Bildschirmen mobiler Geräte wird nur das Burger-Menü angezeigt.",
|
||||
"navigation-item-selection": "Wähle hier die Einträge des oberen Navigationsmenüs",
|
||||
"navigation-items": "Navigationsmenüs",
|
||||
"player-page": "Aktuell läuft-Seite",
|
||||
"playlists": "Playlisten",
|
||||
"podcasts": "Podcasts",
|
||||
"radio": "Radio",
|
||||
"recently-added-page-info": "Beschränkte die Zahl der Alben",
|
||||
"recently-added-page": "Kürzlich hinzugefügt-Seite",
|
||||
"search": "Suche",
|
||||
"show-composer-genres-help": "Komma getrennte Liste der Genres, für die der Komponist angezeigt werden soll.{0}Leer lassen, um den Komponisten immer anzuzeigen.{0}Der Genre-Tag des aktuellen Tracks wird abgeglichen als Teil-String des Genre-Tags. Z.B. \"classical, soundtrack\" wird den Komponisten beim Genre-Tag \"Contemporary Classical\" anzeigen",
|
||||
"show-composer-genres": "Zeige den Komponisten für die aufgelisteten Genres an",
|
||||
"show-composer-info": "Wenn aktiviert, wird der Komponist angezeigt.",
|
||||
"show-composer": "Komponisten anzeigen",
|
||||
"show-path": "Dateipfad anzeigen"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "Melde Dich mit Deinem Last.fm-Benutzernamen und Passwort an, um Scrobbeln zu aktivieren.",
|
||||
"info": "OwnTone wird den Benutzernamen und das Passwort von last.fm nicht speichern, nur den Sitzungs-Schlüssel. Dieser läuft nicht ab.",
|
||||
"title": "Last.fm",
|
||||
"no-support": "OwnTone wurde ohne Unterstützung für Last.fm erstellt."
|
||||
},
|
||||
"spotify": {
|
||||
"authorize": "Authorisiere API-Zugriff",
|
||||
"grant-access": "Zugriff auf die Spotify API gestatten.",
|
||||
"no-support": "OwnTone wurde entweder ohne Unterstützung für Spotify erstellt oder libspotify ist nicht installiert.",
|
||||
"reauthorize": "Bitte den Zugriff der API durch setzen folgender Zugriffsrechte für OwnTone: {scopes}.",
|
||||
"requirements": "Spotify Premium Abo erforderlich. Zugriff auf die Spotify API ermöglicht scannen der Spotify-Blibliothek. Erforderliche scopes sind: {scopes}.",
|
||||
"title": "Spotify",
|
||||
"user": "Zugriff gestattet für {user}."
|
||||
},
|
||||
"password": "Passwort",
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"tabs": {
|
||||
"artwork": "Artwork",
|
||||
"devices": "Fernbedienungen und Ausgänge",
|
||||
"general": "Allgemein",
|
||||
"online-services": "Online-Services"
|
||||
"online-services": "Online-Services",
|
||||
"webinterface": "Allgemein"
|
||||
}
|
||||
},
|
||||
"spotify": {
|
||||
@ -324,13 +270,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "Ordner",
|
||||
"plain": "Einfache",
|
||||
"smart": "Intelligente"
|
||||
}
|
||||
},
|
||||
"player": {
|
||||
"button": {
|
||||
"consume": "Verlauf löschen",
|
||||
@ -349,11 +288,18 @@
|
||||
"toggle-lyrics": "Liedtexte anzeigen/verbergen"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "Ordner",
|
||||
"plain": "Einfache",
|
||||
"smart": "Intelligente"
|
||||
}
|
||||
},
|
||||
"property": {
|
||||
"added-on": "Hinzugefügt am",
|
||||
"album": "Album",
|
||||
"albums": "Alben",
|
||||
"album-artist": "Album-Künstler",
|
||||
"albums": "Alben",
|
||||
"artist": "Künstler",
|
||||
"artists": "Künstler",
|
||||
"comment": "Kommentar",
|
||||
@ -379,15 +325,70 @@
|
||||
"year": "Jahr"
|
||||
},
|
||||
"server": {
|
||||
"appended-tracks": "{count} Track an die Abspielliste angehängt|{count} Tracks an die Abspielliste angehängt",
|
||||
"connection-failed": "Fehler bei Verbindung zum OwnTone-Server",
|
||||
"request-failed": "Anfrage gescheitert (Status: {status} {cause} {url})",
|
||||
"queue-saved": "Warteschlange zu Playlist {name} gesichert",
|
||||
"appended-tracks": "{count} Track an die Abspielliste angehängt|{count} Tracks an die Abspielliste angehängt"
|
||||
"request-failed": "Anfrage gescheitert (Status: {status} {cause} {url})"
|
||||
},
|
||||
"grouped-list": {
|
||||
"today": "Heute",
|
||||
"last-week": "Letzte Woche",
|
||||
"last-month": "Letzer Monat",
|
||||
"undefined": "Unbestimmt"
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"explanation-1": "OwnTone verarbeitet PNG- und JPEG-Artwork, welches in einer eigenen Datei in der Bibliothek, in die Dateien eingebettet oder online von Radiostationen bereitgestellt werden kann.",
|
||||
"explanation-2": "Zusätzlich kann auf folgende Artwork-Anbieter zugegriffen werden:",
|
||||
"show-cover-artwork-in-album-lists": "Zeige Cover-Artwork in der Albumliste",
|
||||
"streamurl-ignore": "Bereitgestellte Artwork von Radiostationen ignorieren",
|
||||
"title": "Artwork",
|
||||
"use-artwork-source-coverartarchive": "Cover Art Archive",
|
||||
"use-artwork-source-discogs": "Discogs",
|
||||
"use-artwork-source-spotify": "Spotify"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "Keine aktive Pairing-Anfrage",
|
||||
"pairing": "Pairing Remote",
|
||||
"pairing-code": "Pairing-Code",
|
||||
"pairing-request": "Remote-Pairing-Anfrage von ",
|
||||
"speaker-pairing": "Lautsprecher-Pairing und Geräteverifikation",
|
||||
"speaker-pairing-info": "Wenn der Laufsprecher PIN-basiertes Pairing verlangt, aktiviere ihn hier und gib dann den hier PIN an, der am Lautsprecher angezeigt wird.",
|
||||
"verification-code": "Verifikationscode"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "Melde Dich mit Deinem Last.fm-Benutzernamen und Passwort an, um Scrobbeln zu aktivieren.",
|
||||
"info": "OwnTone wird den Benutzernamen und das Passwort von last.fm nicht speichern, nur den Sitzungs-Schlüssel. Dieser läuft nicht ab.",
|
||||
"no-support": "OwnTone wurde ohne Unterstützung für Last.fm erstellt.",
|
||||
"title": "Last.fm"
|
||||
},
|
||||
"password": "Passwort",
|
||||
"spotify": {
|
||||
"authorize": "Authorisiere API-Zugriff",
|
||||
"grant-access": "Zugriff auf die Spotify API gestatten.",
|
||||
"no-support": "OwnTone wurde entweder ohne Unterstützung für Spotify erstellt oder libspotify ist nicht installiert.",
|
||||
"reauthorize": "Bitte den Zugriff der API durch setzen folgender Zugriffsrechte für OwnTone: {scopes}.",
|
||||
"requirements": "Spotify Premium Abo erforderlich. Zugriff auf die Spotify API ermöglicht scannen der Spotify-Blibliothek. Erforderliche scopes sind: {scopes}.",
|
||||
"title": "Spotify",
|
||||
"user": "Zugriff gestattet für {user}."
|
||||
},
|
||||
"username": "Benutzername"
|
||||
},
|
||||
"webinterface": {
|
||||
"genres": "Genres",
|
||||
"language": "Sprache",
|
||||
"navigation-item-selection": "Wähle hier die Einträge des oberen Navigationsmenüs",
|
||||
"navigation-item-selection-info": "Auf den Bildschirmen mobiler Geräte wird nur das Burger-Menü angezeigt.",
|
||||
"navigation-items": "Navigationsmenüs",
|
||||
"player-page": "Aktuell läuft-Seite",
|
||||
"recently-added-limit": "Beschränkte die Zahl der Alben",
|
||||
"recently-added-page": "Kürzlich hinzugefügt-Seite",
|
||||
"show-composer-for-genre": "Zeige den Komponisten für die aufgelisteten Genres an",
|
||||
"show-composer-genres-help": "Komma getrennte Liste der Genres, für die der Komponist angezeigt werden soll.{0}Leer lassen, um den Komponisten immer anzuzeigen.{0}Der Genre-Tag des aktuellen Tracks wird abgeglichen als Teil-String des Genre-Tags. Z.B. \"classical, soundtrack\" wird den Komponisten beim Genre-Tag \"Contemporary Classical\" anzeigen",
|
||||
"show-composer-now-playing": "Komponisten anzeigen",
|
||||
"show-filepath-now-playing": "Dateipfad anzeigen",
|
||||
"show-menu-item-audiobooks": "Hörbücher",
|
||||
"show-menu-item-files": "Dateien",
|
||||
"show-menu-item-music": "Musik",
|
||||
"show-menu-item-playlists": "Playlisten",
|
||||
"show-menu-item-podcasts": "Podcasts",
|
||||
"show-menu-item-radio": "Radio",
|
||||
"show-menu-item-search": "Suche"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,9 @@
|
||||
"cancel": "Cancel",
|
||||
"clear": "Clear",
|
||||
"edit": "Edit",
|
||||
"hide-previous": "Hide previous",
|
||||
"login": "Login",
|
||||
"logout": "Logout",
|
||||
"hide-previous": "Hide previous",
|
||||
"mark-all-played": "Mark All Played",
|
||||
"mark-as-new": "Mark as new",
|
||||
"mark-as-played": "Mark as played",
|
||||
@ -30,16 +30,16 @@
|
||||
"channels": "{count} channel|{count} channels",
|
||||
"composers": "{count} composer|{count} composer|{count} composers",
|
||||
"genres": "{count} genre|{count} genre|{count} genres",
|
||||
"kind": {
|
||||
"file": "File",
|
||||
"pipe": "Stream",
|
||||
"spotify": "Spotify",
|
||||
"url": "URL"
|
||||
},
|
||||
"playlists": "{count} playlist|{count} playlist|{count} playlists",
|
||||
"podcasts": "{count} podcast|{count} podcast|{count} podcasts",
|
||||
"stations": "{count} station|{count} station|{count} stations",
|
||||
"tracks": "{count} track|{count} track|{count} tracks",
|
||||
"kind": {
|
||||
"file": "File",
|
||||
"url": "URL",
|
||||
"spotify": "Spotify",
|
||||
"pipe": "Stream"
|
||||
}
|
||||
"tracks": "{count} track|{count} track|{count} tracks"
|
||||
},
|
||||
"dialog": {
|
||||
"add": {
|
||||
@ -56,12 +56,6 @@
|
||||
"title": "Add stream"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"title": "Delete the podcast",
|
||||
"info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"save": {
|
||||
"playlist-name": "Playlist name",
|
||||
@ -69,6 +63,12 @@
|
||||
"title": "Save queue to playlist"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})",
|
||||
"title": "Delete the podcast"
|
||||
}
|
||||
},
|
||||
"queue-item": {
|
||||
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:data.channels {'|'} {bitrate} kbit/s"
|
||||
},
|
||||
@ -91,6 +91,12 @@
|
||||
"title": "Update library"
|
||||
}
|
||||
},
|
||||
"grouped-list": {
|
||||
"last-month": "Last month",
|
||||
"last-week": "Last week",
|
||||
"today": "Today",
|
||||
"undefined": "Undefined"
|
||||
},
|
||||
"language": {
|
||||
"de": "German (Deutsch)",
|
||||
"en": "English",
|
||||
@ -121,9 +127,6 @@
|
||||
"artists": "Artists",
|
||||
"audiobooks": "Audiobooks",
|
||||
"composers": "Composers",
|
||||
"stream-error": "HTTP stream error: failed to load stream or stopped loading due to network problem",
|
||||
"stream": "HTTP stream",
|
||||
"volume": "Volume",
|
||||
"files": "Files",
|
||||
"genres": "Genres",
|
||||
"music": "Music",
|
||||
@ -133,7 +136,10 @@
|
||||
"search": "Search",
|
||||
"settings": "Settings",
|
||||
"spotify": "Spotify",
|
||||
"update-library": "Update Library"
|
||||
"stream": "HTTP stream",
|
||||
"stream-error": "HTTP stream error: failed to load stream or stopped loading due to network problem",
|
||||
"update-library": "Update Library",
|
||||
"volume": "Volume"
|
||||
},
|
||||
"options": {
|
||||
"filter": {
|
||||
@ -144,8 +150,8 @@
|
||||
"title": "Filter"
|
||||
},
|
||||
"sort": {
|
||||
"artist-name": "Artist › Name",
|
||||
"artist-date": "Artist › Release date",
|
||||
"artist-name": "Artist › Name",
|
||||
"name": "Name",
|
||||
"rating": "Rating",
|
||||
"recently-added": "Recently added",
|
||||
@ -177,8 +183,8 @@
|
||||
"title": "Authors"
|
||||
},
|
||||
"tabs": {
|
||||
"authors": "Authors",
|
||||
"audiobooks": "Audiobooks",
|
||||
"authors": "Authors",
|
||||
"genres": "Genres"
|
||||
}
|
||||
},
|
||||
@ -243,78 +249,18 @@
|
||||
"show-playlists": "Show the playlist|Show all {count} playlists",
|
||||
"show-podcasts": "Show the podcast|Show all {count} podcasts",
|
||||
"show-tracks": "Show the track|Show all {count} tracks",
|
||||
"tracks": "Tracks",
|
||||
"tabs": {
|
||||
"library": "Library",
|
||||
"spotify": "Spotify"
|
||||
}
|
||||
},
|
||||
"tracks": "Tracks"
|
||||
},
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"title": "Artwork",
|
||||
"coverartarchive": "Cover Art Archive",
|
||||
"discogs": "Discogs",
|
||||
"explanation-1": "OwnTone supports PNG and JPEG artwork which is either placed as separate image files in the library, embedded in the media files or made available online by radio stations.",
|
||||
"explanation-2": "In addition to that, you can enable fetching artwork from the following artwork providers:",
|
||||
"show-coverart": "Show cover artwork in album list",
|
||||
"spotify": "Spotify",
|
||||
"streaming": "Ignore artwork provided by radio stations"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "No active pairing request.",
|
||||
"pairing-code": "Pairing code",
|
||||
"pairing-request": "Remote pairing request from ",
|
||||
"pairing": "Remote Pairing",
|
||||
"speaker-pairing-info": "If your speaker requires pairing then activate it below and enter the PIN that it displays.",
|
||||
"speaker-pairing": "Speaker pairing and device verification",
|
||||
"verification-code": "Verification code"
|
||||
},
|
||||
"general": {
|
||||
"audiobooks": "Audiobooks",
|
||||
"files": "Files",
|
||||
"genres": "Genres",
|
||||
"language": "Language",
|
||||
"music": "Music",
|
||||
"navigation-item-selection-info": "On mobile device screens, only the burger menu is displayed.",
|
||||
"navigation-item-selection": "Select the top navigation bar menu items",
|
||||
"navigation-items": "Navigation Bar",
|
||||
"player-page": "Player page",
|
||||
"playlists": "Playlists",
|
||||
"podcasts": "Podcasts",
|
||||
"radio": "Radio",
|
||||
"recently-added-page-info": "Limit the number of albums displayed",
|
||||
"recently-added-page": "Recently added page",
|
||||
"search": "Search",
|
||||
"show-composer-genres-help": "Comma-separated list of genres, for which the composer must be displayed.{0}Leave empty to always show the composer.{0}The genre tag of the current track is matched by checking, if one of the defined genres are included. For example setting to \"classical, soundtrack\" will show the composer for tracks with a genre tag of \"Contemporary Classical\"",
|
||||
"show-composer-genres": "Show composer only for listed genres",
|
||||
"show-composer-info": "If enabled, the composer of the current playing track is displayed",
|
||||
"show-composer": "Show composer",
|
||||
"show-path": "Show filepath"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "Login with your Last.fm username and password to enable scrobbling.",
|
||||
"info": "OwnTone will not store your Last.fm username/password, only the session key. The session key does not expire.",
|
||||
"title": "Last.fm",
|
||||
"no-support": "OwnTone was built without support for Last.fm."
|
||||
},
|
||||
"spotify": {
|
||||
"authorize": "Authorize API access",
|
||||
"grant-access": "Grant access to the Spotify API.",
|
||||
"no-support": "OwnTone was either built without support for Spotify or libspotify is not installed.",
|
||||
"reauthorize": "Please reauthorize API access to grant OwnTone the following additional access rights: {scopes}.",
|
||||
"requirements": "You must have a Spotify premium account. Access to the Spotify API enables scanning of your Spotify library. Required scopes are: {scopes}.",
|
||||
"title": "Spotify",
|
||||
"user": "Access granted for {user}"
|
||||
},
|
||||
"password": "Password",
|
||||
"username": "Username"
|
||||
},
|
||||
"tabs": {
|
||||
"artwork": "Artwork",
|
||||
"devices": "Remotes and Outputs",
|
||||
"general": "General",
|
||||
"online-services": "Online Services"
|
||||
"online-services": "Online Services",
|
||||
"webinterface": "General"
|
||||
}
|
||||
},
|
||||
"spotify": {
|
||||
@ -324,13 +270,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "Folder",
|
||||
"plain": "Plain",
|
||||
"smart": "Smart"
|
||||
}
|
||||
},
|
||||
"player": {
|
||||
"button": {
|
||||
"consume": "Clear history",
|
||||
@ -349,11 +288,18 @@
|
||||
"toggle-lyrics": "Toggle lyrics"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "Folder",
|
||||
"plain": "Plain",
|
||||
"smart": "Smart"
|
||||
}
|
||||
},
|
||||
"property": {
|
||||
"added-on": "Added On",
|
||||
"album": "Album",
|
||||
"albums": "Albums",
|
||||
"album-artist": "Album Artist",
|
||||
"albums": "Albums",
|
||||
"artist": "Artist",
|
||||
"artists": "Artists",
|
||||
"comment": "Comment",
|
||||
@ -379,15 +325,70 @@
|
||||
"year": "Year"
|
||||
},
|
||||
"server": {
|
||||
"appended-tracks": "{count} track appended to the queue|{count} tracks appended to the queue",
|
||||
"connection-failed": "Failed to connect to OwnTone server",
|
||||
"request-failed": "Request failed (status: {status} {cause} {url})",
|
||||
"queue-saved": "Queue saved to playlist {name}",
|
||||
"appended-tracks": "{count} track appended to the queue|{count} tracks appended to the queue"
|
||||
"request-failed": "Request failed (status: {status} {cause} {url})"
|
||||
},
|
||||
"grouped-list": {
|
||||
"today": "Today",
|
||||
"last-week": "Last week",
|
||||
"last-month": "Last month",
|
||||
"undefined": "Undefined"
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"explanation-1": "OwnTone supports PNG and JPEG artwork which is either placed as separate image files in the library, embedded in the media files or made available online by radio stations.",
|
||||
"explanation-2": "In addition to that, you can enable fetching artwork from the following artwork providers:",
|
||||
"show-cover-artwork-in-album-lists": "Show cover artwork in album list",
|
||||
"streamurl-ignore": "Ignore artwork provided by radio stations",
|
||||
"title": "Artwork",
|
||||
"use-artwork-source-coverartarchive": "Cover Art Archive",
|
||||
"use-artwork-source-discogs": "Discogs",
|
||||
"use-artwork-source-spotify": "Spotify"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "No active pairing request.",
|
||||
"pairing": "Remote Pairing",
|
||||
"pairing-code": "Pairing code",
|
||||
"pairing-request": "Remote pairing request from ",
|
||||
"speaker-pairing": "Speaker pairing and device verification",
|
||||
"speaker-pairing-info": "If your speaker requires pairing then activate it below and enter the PIN that it displays.",
|
||||
"verification-code": "Verification code"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "Login with your Last.fm username and password to enable scrobbling.",
|
||||
"info": "OwnTone will not store your Last.fm username/password, only the session key. The session key does not expire.",
|
||||
"no-support": "OwnTone was built without support for Last.fm.",
|
||||
"title": "Last.fm"
|
||||
},
|
||||
"password": "Password",
|
||||
"spotify": {
|
||||
"authorize": "Authorize API access",
|
||||
"grant-access": "Grant access to the Spotify API.",
|
||||
"no-support": "OwnTone was either built without support for Spotify or libspotify is not installed.",
|
||||
"reauthorize": "Please reauthorize API access to grant OwnTone the following additional access rights: {scopes}.",
|
||||
"requirements": "You must have a Spotify premium account. Access to the Spotify API enables scanning of your Spotify library. Required scopes are: {scopes}.",
|
||||
"title": "Spotify",
|
||||
"user": "Access granted for {user}"
|
||||
},
|
||||
"username": "Username"
|
||||
},
|
||||
"webinterface": {
|
||||
"genres": "Genres",
|
||||
"language": "Language",
|
||||
"navigation-item-selection": "Select the top navigation bar menu items",
|
||||
"navigation-item-selection-info": "On mobile device screens, only the burger menu is displayed.",
|
||||
"navigation-items": "Navigation Bar",
|
||||
"player-page": "Player page",
|
||||
"recently-added-limit": "Limit the number of albums displayed",
|
||||
"recently-added-page": "Recently added page",
|
||||
"show-composer-for-genre": "Show composer only for listed genres",
|
||||
"show-composer-genres-help": "Comma-separated list of genres, for which the composer must be displayed.{0}Leave empty to always show the composer.{0}The genre tag of the current track is matched by checking, if one of the defined genres are included. For example setting to \"classical, soundtrack\" will show the composer for tracks with a genre tag of \"Contemporary Classical\"",
|
||||
"show-composer-now-playing": "Show composer",
|
||||
"show-filepath-now-playing": "Show filepath",
|
||||
"show-menu-item-audiobooks": "Audiobooks",
|
||||
"show-menu-item-files": "Files",
|
||||
"show-menu-item-music": "Music",
|
||||
"show-menu-item-playlists": "Playlists",
|
||||
"show-menu-item-podcasts": "Podcasts",
|
||||
"show-menu-item-radio": "Radio",
|
||||
"show-menu-item-search": "Search"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,9 @@
|
||||
"cancel": "Annuler",
|
||||
"clear": "Effacer",
|
||||
"edit": "Éditer",
|
||||
"hide-previous": "Masquer l’historique",
|
||||
"login": "Se connecter",
|
||||
"logout": "Se déconnecter",
|
||||
"hide-previous": "Masquer l’historique",
|
||||
"mark-all-played": "Marquer comme lus",
|
||||
"mark-as-new": "Marquer comme nouveau",
|
||||
"mark-as-played": "Marquer comme lu",
|
||||
@ -30,16 +30,16 @@
|
||||
"channels": "{count} canal|{count} canaux",
|
||||
"composers": "{count} compositeur|{count} compositeur|{count} compositeurs",
|
||||
"genres": "{count} genre|{count} genre|{count} genres",
|
||||
"kind": {
|
||||
"file": "Fichier",
|
||||
"pipe": "Flux",
|
||||
"spotify": "Spotify",
|
||||
"url": "URL"
|
||||
},
|
||||
"playlists": "{count} liste de lecture|{count} liste de lecture|{count} listes de lecture",
|
||||
"podcasts": "{count} podcast|{count} podcast|{count} podcasts",
|
||||
"stations": "{count} station|{count} station|{count} stations",
|
||||
"tracks": "{count} piste|{count} piste|{count} pistes",
|
||||
"kind": {
|
||||
"file": "Fichier",
|
||||
"url": "URL",
|
||||
"spotify": "Spotify",
|
||||
"pipe": "Flux"
|
||||
}
|
||||
"tracks": "{count} piste|{count} piste|{count} pistes"
|
||||
},
|
||||
"dialog": {
|
||||
"add": {
|
||||
@ -56,12 +56,6 @@
|
||||
"title": "Ajouter un flux"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"title": "Supprimer le podcast",
|
||||
"info": "Supprimer ce podcast de manière permanente de la bibliothèque ?{separator}(Cela supprimera également la liste de lecture RSS {name})"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"save": {
|
||||
"playlist-name": "Nom de la liste de lecture",
|
||||
@ -69,6 +63,12 @@
|
||||
"title": "Enregistrer la file d’attente dans une liste de lecture"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"info": "Supprimer ce podcast de manière permanente de la bibliothèque ?{separator}(Cela supprimera également la liste de lecture RSS {name})",
|
||||
"title": "Supprimer le podcast"
|
||||
}
|
||||
},
|
||||
"queue-item": {
|
||||
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:data.channels {'|'} {bitrate} kbit/s"
|
||||
},
|
||||
@ -91,6 +91,12 @@
|
||||
"title": "Actualiser la bibliothèque"
|
||||
}
|
||||
},
|
||||
"grouped-list": {
|
||||
"last-month": "Le mois dernier",
|
||||
"last-week": "La semaine dernière",
|
||||
"today": "Aujourd’hui",
|
||||
"undefined": "Indéfini"
|
||||
},
|
||||
"language": {
|
||||
"de": "Allemand (Deutsch)",
|
||||
"en": "Anglais (English)",
|
||||
@ -121,9 +127,6 @@
|
||||
"artists": "Artistes",
|
||||
"audiobooks": "Livres audio",
|
||||
"composers": "Compositeurs",
|
||||
"stream-error": "Erreur du flux HTTP : échec du chargement du flux ou arrêt du chargement en raison d’un problème réseau",
|
||||
"stream": "Flux HTTP",
|
||||
"volume": "Volume",
|
||||
"files": "Fichiers",
|
||||
"genres": "Genres",
|
||||
"music": "Musique",
|
||||
@ -133,7 +136,10 @@
|
||||
"search": "Recherche",
|
||||
"settings": "Réglages",
|
||||
"spotify": "Spotify",
|
||||
"update-library": "Actualiser la bibliothèque"
|
||||
"stream": "Flux HTTP",
|
||||
"stream-error": "Erreur du flux HTTP : échec du chargement du flux ou arrêt du chargement en raison d’un problème réseau",
|
||||
"update-library": "Actualiser la bibliothèque",
|
||||
"volume": "Volume"
|
||||
},
|
||||
"options": {
|
||||
"filter": {
|
||||
@ -144,8 +150,8 @@
|
||||
"title": "Filtrer"
|
||||
},
|
||||
"sort": {
|
||||
"artist-name": "Artiste › Nom",
|
||||
"artist-date": "Artiste › Date de sortie",
|
||||
"artist-name": "Artiste › Nom",
|
||||
"name": "Nom",
|
||||
"rating": "Classement",
|
||||
"recently-added": "Ajouts récents",
|
||||
@ -177,8 +183,8 @@
|
||||
"title": "Auteurs"
|
||||
},
|
||||
"tabs": {
|
||||
"authors": "Auteurs",
|
||||
"audiobooks": "Livres audio",
|
||||
"authors": "Auteurs",
|
||||
"genres": "Genres"
|
||||
}
|
||||
},
|
||||
@ -243,78 +249,18 @@
|
||||
"show-playlists": "Afficher la liste de lecture|Afficher les {count} listes de lecture",
|
||||
"show-podcasts": "Afficher le podcast|Afficher les {count} podcasts",
|
||||
"show-tracks": "Afficher la piste|Afficher les {count} pistes",
|
||||
"tracks": "Pistes",
|
||||
"tabs": {
|
||||
"library": "Bibliothèque",
|
||||
"spotify": "Spotify"
|
||||
}
|
||||
},
|
||||
"tracks": "Pistes"
|
||||
},
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"title": "Illustrations",
|
||||
"coverartarchive": "Cover Art Archive",
|
||||
"discogs": "Discogs",
|
||||
"explanation-1": "OwnTone prend en charge les illustrations au format PNG et JPEG qui sont soit placées dans la bibliothèque en tant que fichiers image séparés, soit intégrées dans les fichiers média, soit mises à disposition en ligne par les stations de radio.",
|
||||
"explanation-2": "En outre, vous pouvez activer la récupération des illustrations à partir des fournisseurs d’illustrations suivants :",
|
||||
"show-coverart": "Afficher les illustrations dans la liste d’albums",
|
||||
"spotify": "Spotify",
|
||||
"streaming": "Ignorer les illustrations fournies par les stations de radio"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "Aucune demande de jumelage active.",
|
||||
"pairing-code": "Code de jumelage",
|
||||
"pairing-request": "Demande de jumelage de télécommande ",
|
||||
"pairing": "Jumelage de télécommande",
|
||||
"speaker-pairing-info": "Si votre enceinte nécessite un jumelage, activez-la ci-dessous et entrez le code PIN qu’elle affiche.",
|
||||
"speaker-pairing": "Jumelage d’enceinte et vérification d’appareil",
|
||||
"verification-code": "Code de vérification"
|
||||
},
|
||||
"general": {
|
||||
"audiobooks": "Livres audio",
|
||||
"files": "Fichiers",
|
||||
"genres": "Genres",
|
||||
"language": "Langue",
|
||||
"music": "Musique",
|
||||
"navigation-item-selection-info": "Sur les écrans des appareils mobiles, seul le menu est affiché.",
|
||||
"navigation-item-selection": "Sélectionnez les éléments de la barre de navigation supérieure",
|
||||
"navigation-items": "Barre de navigation",
|
||||
"player-page": "Page « En cours de lecture »",
|
||||
"playlists": "Listes de lecture",
|
||||
"podcasts": "Podcasts",
|
||||
"radio": "Radio",
|
||||
"recently-added-page-info": "Limiter le nombre d’albums affichés",
|
||||
"recently-added-page": "Page « Ajouts récents »",
|
||||
"search": "Recherche",
|
||||
"show-composer-genres-help": "Liste de genres séparés par des virgules pour lesquels le compositeur doit être affiché.{0}Laissez vide pour toujours afficher le compositeur.{0}L’étiquette de genre de la piste actuelle est comparée en vérifiant si l’un des genres définis est inclus. Par exemple, en choisissant \"classique, bande sonore\", le compositeur pour les pistes dont l’étiquette de genre est \"classique contemporain\" sera affiché.",
|
||||
"show-composer-genres": "Afficher le compositeur uniquement pour les genres listés",
|
||||
"show-composer-info": "Si actif, le compositeur de la piste en cours de lecture est affiché",
|
||||
"show-composer": "Afficher le compositeur",
|
||||
"show-path": "Afficher le chemin du fichier"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "Connectez-vous avec votre nom d’utilisateur et votre mot de passe Last.fm pour activer le scrobbling.",
|
||||
"info": "Le nom d’utilisateur et le mot de passe Last.fm ne sont pas enregistrés, uniquement la clé de session. La clé de session n’expire pas.",
|
||||
"title": "Last.fm",
|
||||
"no-support": "L’option Last.fm n’est pas présente."
|
||||
},
|
||||
"spotify": {
|
||||
"authorize": "Autoriser l’accès à l’API",
|
||||
"grant-access": "Accordez l’accès à l’API de Spotify.",
|
||||
"no-support": "L’option Spotify n’est pas présente.",
|
||||
"reauthorize": "Veuillez autoriser à nouveau l’accès à l’API pour accorder à OwnTone les droits d’accès supplémentaires suivants : {scopes}.",
|
||||
"requirements": "Vous devez posséder un compte Spotify Premium. L’accès à l’API de Spotify permet l’analyse de votre bibliothèque Spotify. Les champs d’application requis sont les suivants : {scopes}.",
|
||||
"title": "Spotify",
|
||||
"user": "Accès autorisé pour {user}."
|
||||
},
|
||||
"password": "Mot de passe",
|
||||
"username": "Nom d’utilisateur"
|
||||
},
|
||||
"tabs": {
|
||||
"artwork": "Illustrations",
|
||||
"devices": "Télécommandes et sorties",
|
||||
"general": "Général",
|
||||
"online-services": "Services en ligne"
|
||||
"online-services": "Services en ligne",
|
||||
"webinterface": "Général"
|
||||
}
|
||||
},
|
||||
"spotify": {
|
||||
@ -324,13 +270,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "Dossier",
|
||||
"plain": "Simple",
|
||||
"smart": "Intelligente"
|
||||
}
|
||||
},
|
||||
"player": {
|
||||
"button": {
|
||||
"consume": "Effacer l’historique",
|
||||
@ -349,11 +288,18 @@
|
||||
"toggle-lyrics": "Voir/Cacher les paroles"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "Dossier",
|
||||
"plain": "Simple",
|
||||
"smart": "Intelligente"
|
||||
}
|
||||
},
|
||||
"property": {
|
||||
"added-on": "Ajouté le",
|
||||
"album": "Album",
|
||||
"albums": "Albums",
|
||||
"album-artist": "Artiste de l’album",
|
||||
"albums": "Albums",
|
||||
"artist": "Artiste",
|
||||
"artists": "Artistes",
|
||||
"comment": "Commentaire",
|
||||
@ -379,15 +325,70 @@
|
||||
"year": "Année"
|
||||
},
|
||||
"server": {
|
||||
"appended-tracks": "{count} piste ajoutée à la file d’attente|{count} pistes ajoutées à la file d’attente",
|
||||
"connection-failed": "Échec de connexion au serveur",
|
||||
"request-failed": "La requête a échoué (status: {status} {cause} {url})",
|
||||
"queue-saved": "La file d’attente enregistrée dans la liste de lecture {name}",
|
||||
"appended-tracks": "{count} piste ajoutée à la file d’attente|{count} pistes ajoutées à la file d’attente"
|
||||
"request-failed": "La requête a échoué (status: {status} {cause} {url})"
|
||||
},
|
||||
"grouped-list": {
|
||||
"today": "Aujourd’hui",
|
||||
"last-week": "La semaine dernière",
|
||||
"last-month": "Le mois dernier",
|
||||
"undefined": "Indéfini"
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"explanation-1": "OwnTone prend en charge les illustrations au format PNG et JPEG qui sont soit placées dans la bibliothèque en tant que fichiers image séparés, soit intégrées dans les fichiers média, soit mises à disposition en ligne par les stations de radio.",
|
||||
"explanation-2": "En outre, vous pouvez activer la récupération des illustrations à partir des fournisseurs d’illustrations suivants :",
|
||||
"show-cover-artwork-in-album-lists": "Afficher les illustrations dans la liste d’albums",
|
||||
"streamurl-ignore": "Ignorer les illustrations fournies par les stations de radio",
|
||||
"title": "Illustrations",
|
||||
"use-artwork-source-coverartarchive": "Cover Art Archive",
|
||||
"use-artwork-source-discogs": "Discogs",
|
||||
"use-artwork-source-spotify": "Spotify"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "Aucune demande de jumelage active.",
|
||||
"pairing": "Jumelage de télécommande",
|
||||
"pairing-code": "Code de jumelage",
|
||||
"pairing-request": "Demande de jumelage de télécommande ",
|
||||
"speaker-pairing": "Jumelage d’enceinte et vérification d’appareil",
|
||||
"speaker-pairing-info": "Si votre enceinte nécessite un jumelage, activez-la ci-dessous et entrez le code PIN qu’elle affiche.",
|
||||
"verification-code": "Code de vérification"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "Connectez-vous avec votre nom d’utilisateur et votre mot de passe Last.fm pour activer le scrobbling.",
|
||||
"info": "Le nom d’utilisateur et le mot de passe Last.fm ne sont pas enregistrés, uniquement la clé de session. La clé de session n’expire pas.",
|
||||
"no-support": "L’option Last.fm n’est pas présente.",
|
||||
"title": "Last.fm"
|
||||
},
|
||||
"password": "Mot de passe",
|
||||
"spotify": {
|
||||
"authorize": "Autoriser l’accès à l’API",
|
||||
"grant-access": "Accordez l’accès à l’API de Spotify.",
|
||||
"no-support": "L’option Spotify n’est pas présente.",
|
||||
"reauthorize": "Veuillez autoriser à nouveau l’accès à l’API pour accorder à OwnTone les droits d’accès supplémentaires suivants : {scopes}.",
|
||||
"requirements": "Vous devez posséder un compte Spotify Premium. L’accès à l’API de Spotify permet l’analyse de votre bibliothèque Spotify. Les champs d’application requis sont les suivants : {scopes}.",
|
||||
"title": "Spotify",
|
||||
"user": "Accès autorisé pour {user}."
|
||||
},
|
||||
"username": "Nom d’utilisateur"
|
||||
},
|
||||
"webinterface": {
|
||||
"genres": "Genres",
|
||||
"language": "Langue",
|
||||
"navigation-item-selection": "Sélectionnez les éléments de la barre de navigation supérieure",
|
||||
"navigation-item-selection-info": "Sur les écrans des appareils mobiles, seul le menu est affiché.",
|
||||
"navigation-items": "Barre de navigation",
|
||||
"player-page": "Page « En cours de lecture »",
|
||||
"recently-added-limit": "Limiter le nombre d’albums affichés",
|
||||
"recently-added-page": "Page « Ajouts récents »",
|
||||
"show-composer-for-genre": "Afficher le compositeur uniquement pour les genres listés",
|
||||
"show-composer-genres-help": "Liste de genres séparés par des virgules pour lesquels le compositeur doit être affiché.{0}Laissez vide pour toujours afficher le compositeur.{0}L’étiquette de genre de la piste actuelle est comparée en vérifiant si l’un des genres définis est inclus. Par exemple, en choisissant \"classique, bande sonore\", le compositeur pour les pistes dont l’étiquette de genre est \"classique contemporain\" sera affiché.",
|
||||
"show-composer-now-playing": "Afficher le compositeur",
|
||||
"show-filepath-now-playing": "Afficher le chemin du fichier",
|
||||
"show-menu-item-audiobooks": "Livres audio",
|
||||
"show-menu-item-files": "Fichiers",
|
||||
"show-menu-item-music": "Musique",
|
||||
"show-menu-item-playlists": "Listes de lecture",
|
||||
"show-menu-item-podcasts": "Podcasts",
|
||||
"show-menu-item-radio": "Radio",
|
||||
"show-menu-item-search": "Recherche"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,9 @@
|
||||
"cancel": "取消",
|
||||
"clear": "清除",
|
||||
"edit": "编辑",
|
||||
"hide-previous": "隐藏历史",
|
||||
"login": "登入",
|
||||
"logout": "退出",
|
||||
"hide-previous": "隐藏历史",
|
||||
"mark-all-played": "全部标记为已播放",
|
||||
"mark-as-new": "标记为最新",
|
||||
"mark-as-played": "标记为已播放",
|
||||
@ -30,16 +30,16 @@
|
||||
"channels": "{count} canal|{count} canaux",
|
||||
"composers": "{count} 位作曲家|{count} 位作曲家",
|
||||
"genres": "{count} 个流派|{count} 个流派",
|
||||
"kind": {
|
||||
"file": "文件",
|
||||
"pipe": "流",
|
||||
"spotify": "Spotify",
|
||||
"url": "链接"
|
||||
},
|
||||
"playlists": "{count} 个播放列表|{count} 个播放列表",
|
||||
"podcasts": "{count} 个播客|{count} 个播客",
|
||||
"stations": "{count} 个电台|{count} 个电台",
|
||||
"tracks": "{count} 只曲目|{count} 只曲目",
|
||||
"kind": {
|
||||
"file": "文件",
|
||||
"url": "链接",
|
||||
"spotify": "Spotify",
|
||||
"pipe": "流"
|
||||
}
|
||||
"tracks": "{count} 只曲目|{count} 只曲目"
|
||||
},
|
||||
"dialog": {
|
||||
"add": {
|
||||
@ -56,12 +56,6 @@
|
||||
"title": "添加流"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"title": "移除播客",
|
||||
"info": "从资料库中永久移除该播客?{separator}(这也将移除该播客RSS列表 {name})"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"save": {
|
||||
"playlist-name": "播放列表名称",
|
||||
@ -69,6 +63,12 @@
|
||||
"title": "保存播放清单到列表"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"info": "从资料库中永久移除该播客?{separator}(这也将移除该播客RSS列表 {name})",
|
||||
"title": "移除播客"
|
||||
}
|
||||
},
|
||||
"queue-item": {
|
||||
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:data.channels {'|'} {bitrate} kbit/s"
|
||||
},
|
||||
@ -91,6 +91,12 @@
|
||||
"title": "更新资料库"
|
||||
}
|
||||
},
|
||||
"grouped-list": {
|
||||
"last-month": "上月",
|
||||
"last-week": "上周",
|
||||
"today": "今日",
|
||||
"undefined": "未定义"
|
||||
},
|
||||
"language": {
|
||||
"de": "德语 (Deutsch)",
|
||||
"en": "英语 (English)",
|
||||
@ -121,9 +127,6 @@
|
||||
"artists": "艺人",
|
||||
"audiobooks": "有声读物",
|
||||
"composers": "作曲家",
|
||||
"stream-error": "HTTP流错误:流载入失败或者由于网络原因无法载入",
|
||||
"stream": "HTTP流",
|
||||
"volume": "音量",
|
||||
"files": "文件",
|
||||
"genres": "流派",
|
||||
"music": "音乐",
|
||||
@ -133,7 +136,10 @@
|
||||
"search": "搜索",
|
||||
"settings": "设置",
|
||||
"spotify": "Spotify",
|
||||
"update-library": "更新资料库"
|
||||
"stream": "HTTP流",
|
||||
"stream-error": "HTTP流错误:流载入失败或者由于网络原因无法载入",
|
||||
"update-library": "更新资料库",
|
||||
"volume": "音量"
|
||||
},
|
||||
"options": {
|
||||
"filter": {
|
||||
@ -144,8 +150,8 @@
|
||||
"title": "专辑"
|
||||
},
|
||||
"sort": {
|
||||
"artist-name": "艺人 › 名称",
|
||||
"artist-date": "艺人 › 发行日期",
|
||||
"artist-name": "艺人 › 名称",
|
||||
"name": "名称",
|
||||
"rating": "评级",
|
||||
"recently-added": "最近添加",
|
||||
@ -177,8 +183,8 @@
|
||||
"title": "作者"
|
||||
},
|
||||
"tabs": {
|
||||
"authors": "作者",
|
||||
"audiobooks": "有声读物",
|
||||
"authors": "作者",
|
||||
"genres": "流派"
|
||||
}
|
||||
},
|
||||
@ -243,78 +249,18 @@
|
||||
"show-playlists": "显示播放列表|显示所有 {count} 个播放列表",
|
||||
"show-podcasts": "显示播客|显示所有 {count} 个播客",
|
||||
"show-tracks": "显示曲目|显示所有 {count} 只曲目",
|
||||
"tracks": "曲目",
|
||||
"tabs": {
|
||||
"library": "资料库",
|
||||
"spotify": "Spotify"
|
||||
}
|
||||
},
|
||||
"tracks": "曲目"
|
||||
},
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"title": "封面",
|
||||
"coverartarchive": "Cover Art Archive",
|
||||
"discogs": "Discogs",
|
||||
"explanation-1": "OwnTone支持PNG和 JPEG封面,这些封面可以作为单独的图像文件放置在库中或嵌入到媒体文件中,也可以通过广播电台在线提供",
|
||||
"explanation-2": "除此之外,您还可以从以下素材提供者获取封面:",
|
||||
"show-coverart": "在专辑列表中显示封面艺术作品",
|
||||
"spotify": "Spotify",
|
||||
"streaming": "忽略广播电台提供的作品"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "没有活跃的配对请求",
|
||||
"pairing-code": "配对代码",
|
||||
"pairing-request": "远程配对请求来自于 ",
|
||||
"pairing": "遥控配对",
|
||||
"speaker-pairing-info": "如果您的扬声器需要配对,请在下面输入它显示的 PIN以激活",
|
||||
"speaker-pairing": "扬声器配对和设备验证",
|
||||
"verification-code": "验证码"
|
||||
},
|
||||
"general": {
|
||||
"audiobooks": "有声读物",
|
||||
"files": "文件",
|
||||
"genres": "流派",
|
||||
"language": "语言",
|
||||
"music": "音乐",
|
||||
"navigation-item-selection-info": "在移动设备屏幕上,只显示汉堡菜单",
|
||||
"navigation-item-selection": "选择顶部导航栏菜单项",
|
||||
"navigation-items": "导航条",
|
||||
"player-page": "“正在播放”页面",
|
||||
"playlists": "播放列表",
|
||||
"podcasts": "播客",
|
||||
"radio": "广播电台",
|
||||
"recently-added-page-info": "限制显示的相册数量",
|
||||
"recently-added-page": "“最近添加”页面",
|
||||
"search": "搜索",
|
||||
"show-composer-genres-help": "以逗号分隔的流派列表,必须显示作曲家所属的流派{0}留空以始终显示作曲家{0}通过检查是否包含定义的流派之一来匹配当前曲目的流派标签。例如,设置为“古典、原声带”将显示流派标签为“当代古典”的曲目的作曲家",
|
||||
"show-composer-genres": "仅显示列出的流派的作曲家",
|
||||
"show-composer-info": "如果启用,则会显示当前播放曲目的作曲家",
|
||||
"show-composer": "显示作曲家",
|
||||
"show-path": "显示文件路径"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "使用您的 Last.fm 用户名和密码登录以启用记录功能",
|
||||
"info": "OwnTone不会存储您的 Last.fm 用户名/密码,仅存储会话密钥。会话密钥不会过期",
|
||||
"title": "Last.fm",
|
||||
"no-support": "OwnTone的构建没有来自Last.fm的官方支持"
|
||||
},
|
||||
"spotify": {
|
||||
"authorize": "授权 API 访问",
|
||||
"grant-access": "授予对 Spotify API 的访问权限",
|
||||
"no-support": "OwnTone的构建没有来自 Spotify 官方的支持,也未安装 libspotify",
|
||||
"reauthorize": "请重新授权 API 访问权限,以授予 OwnTone 以下附加访问权限:{scopes}",
|
||||
"requirements": "您必须拥有 Spotify付费帐户。访问 Spotify API 可以扫描您的 Spotify库。所需范围是:{scopes}",
|
||||
"title": "Spotify",
|
||||
"user": "授予访问权限 {user}"
|
||||
},
|
||||
"password": "密码",
|
||||
"username": "用户名"
|
||||
},
|
||||
"tabs": {
|
||||
"artwork": "封面",
|
||||
"devices": "遥控和输出",
|
||||
"general": "概览",
|
||||
"online-services": "在线服务"
|
||||
"online-services": "在线服务",
|
||||
"webinterface": "概览"
|
||||
}
|
||||
},
|
||||
"spotify": {
|
||||
@ -324,13 +270,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "文件夹",
|
||||
"plain": "简单",
|
||||
"smart": "智能"
|
||||
}
|
||||
},
|
||||
"player": {
|
||||
"button": {
|
||||
"consume": "清除历史",
|
||||
@ -349,11 +288,18 @@
|
||||
"toggle-lyrics": "显示/隐藏歌词"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "文件夹",
|
||||
"plain": "简单",
|
||||
"smart": "智能"
|
||||
}
|
||||
},
|
||||
"property": {
|
||||
"added-on": "添加时间",
|
||||
"album": "专辑",
|
||||
"albums": "张专辑",
|
||||
"album-artist": "专辑艺人",
|
||||
"albums": "张专辑",
|
||||
"artist": "专辑艺人",
|
||||
"artists": "艺人",
|
||||
"comment": "评论",
|
||||
@ -379,15 +325,70 @@
|
||||
"year": "年份"
|
||||
},
|
||||
"server": {
|
||||
"appended-tracks": "已附加到队列的 {count} 只曲目|已附加到队列的 {count} 只曲目",
|
||||
"connection-failed": "无法连接到 OwnTone 服务器",
|
||||
"request-failed": "请求失败 (状态:{status} {cause} {url})",
|
||||
"queue-saved": "清单以添加到播放列表 {name}",
|
||||
"appended-tracks": "已附加到队列的 {count} 只曲目|已附加到队列的 {count} 只曲目"
|
||||
"request-failed": "请求失败 (状态:{status} {cause} {url})"
|
||||
},
|
||||
"grouped-list": {
|
||||
"today": "今日",
|
||||
"last-week": "上周",
|
||||
"last-month": "上月",
|
||||
"undefined": "未定义"
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"explanation-1": "OwnTone支持PNG和 JPEG封面,这些封面可以作为单独的图像文件放置在库中或嵌入到媒体文件中,也可以通过广播电台在线提供",
|
||||
"explanation-2": "除此之外,您还可以从以下素材提供者获取封面:",
|
||||
"show-cover-artwork-in-album-lists": "在专辑列表中显示封面艺术作品",
|
||||
"streamurl-ignore": "忽略广播电台提供的作品",
|
||||
"title": "封面",
|
||||
"use-artwork-source-coverartarchive": "Cover Art Archive",
|
||||
"use-artwork-source-discogs": "Discogs",
|
||||
"use-artwork-source-spotify": "Spotify"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "没有活跃的配对请求",
|
||||
"pairing": "遥控配对",
|
||||
"pairing-code": "配对代码",
|
||||
"pairing-request": "远程配对请求来自于 ",
|
||||
"speaker-pairing": "扬声器配对和设备验证",
|
||||
"speaker-pairing-info": "如果您的扬声器需要配对,请在下面输入它显示的 PIN以激活",
|
||||
"verification-code": "验证码"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "使用您的 Last.fm 用户名和密码登录以启用记录功能",
|
||||
"info": "OwnTone不会存储您的 Last.fm 用户名/密码,仅存储会话密钥。会话密钥不会过期",
|
||||
"no-support": "OwnTone的构建没有来自Last.fm的官方支持",
|
||||
"title": "Last.fm"
|
||||
},
|
||||
"password": "密码",
|
||||
"spotify": {
|
||||
"authorize": "授权 API 访问",
|
||||
"grant-access": "授予对 Spotify API 的访问权限",
|
||||
"no-support": "OwnTone的构建没有来自 Spotify 官方的支持,也未安装 libspotify",
|
||||
"reauthorize": "请重新授权 API 访问权限,以授予 OwnTone 以下附加访问权限:{scopes}",
|
||||
"requirements": "您必须拥有 Spotify付费帐户。访问 Spotify API 可以扫描您的 Spotify库。所需范围是:{scopes}",
|
||||
"title": "Spotify",
|
||||
"user": "授予访问权限 {user}"
|
||||
},
|
||||
"username": "用户名"
|
||||
},
|
||||
"webinterface": {
|
||||
"genres": "流派",
|
||||
"language": "语言",
|
||||
"navigation-item-selection": "选择顶部导航栏菜单项",
|
||||
"navigation-item-selection-info": "在移动设备屏幕上,只显示汉堡菜单",
|
||||
"navigation-items": "导航条",
|
||||
"player-page": "“正在播放”页面",
|
||||
"recently-added-limit": "限制显示的相册数量",
|
||||
"recently-added-page": "“最近添加”页面",
|
||||
"show-composer-for-genre": "仅显示列出的流派的作曲家",
|
||||
"show-composer-genres-help": "以逗号分隔的流派列表,必须显示作曲家所属的流派{0}留空以始终显示作曲家{0}通过检查是否包含定义的流派之一来匹配当前曲目的流派标签。例如,设置为“古典、原声带”将显示流派标签为“当代古典”的曲目的作曲家",
|
||||
"show-composer-now-playing": "显示作曲家",
|
||||
"show-filepath-now-playing": "显示文件路径",
|
||||
"show-menu-item-audiobooks": "有声读物",
|
||||
"show-menu-item-files": "文件",
|
||||
"show-menu-item-music": "音乐",
|
||||
"show-menu-item-playlists": "播放列表",
|
||||
"show-menu-item-podcasts": "播客",
|
||||
"show-menu-item-radio": "广播电台",
|
||||
"show-menu-item-search": "搜索"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,9 @@
|
||||
"cancel": "取消",
|
||||
"clear": "清除",
|
||||
"edit": "編輯",
|
||||
"hide-previous": "隱藏歷史",
|
||||
"login": "登入",
|
||||
"logout": "退出",
|
||||
"hide-previous": "隱藏歷史",
|
||||
"mark-all-played": "全部標記為已播放",
|
||||
"mark-as-new": "標記為最新",
|
||||
"mark-as-played": "標記為已播放",
|
||||
@ -30,16 +30,16 @@
|
||||
"channels": "{count} 信道|{count} 信道",
|
||||
"composers": "{count} 位作曲家|{count} 位作曲家",
|
||||
"genres": "{count} 個音樂類型|{count} 個音樂類型",
|
||||
"kind": {
|
||||
"file": "文件",
|
||||
"pipe": "串流",
|
||||
"spotify": "Spotify",
|
||||
"url": "鏈接"
|
||||
},
|
||||
"playlists": "{count} 個播放列表|{count} 個播放列表",
|
||||
"podcasts": "{count} 個Podcast|{count} 個Podcast",
|
||||
"stations": "{count} 個電台|{count} 個電台",
|
||||
"tracks": "{count} 首曲目|{count} 首曲目",
|
||||
"kind": {
|
||||
"file": "文件",
|
||||
"url": "鏈接",
|
||||
"spotify": "Spotify",
|
||||
"pipe": "串流"
|
||||
}
|
||||
"tracks": "{count} 首曲目|{count} 首曲目"
|
||||
},
|
||||
"dialog": {
|
||||
"add": {
|
||||
@ -56,12 +56,6 @@
|
||||
"title": "新增串流"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"title": "移除Podcast",
|
||||
"info": "從資料庫中永久移除該Podcast?{separator}(這也將移除該PodcastRSS列表 {name})"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"save": {
|
||||
"playlist-name": "播放列表名稱",
|
||||
@ -69,6 +63,12 @@
|
||||
"title": "儲存播放清單到列表"
|
||||
}
|
||||
},
|
||||
"podcast": {
|
||||
"remove": {
|
||||
"info": "從資料庫中永久移除該Podcast?{separator}(這也將移除該PodcastRSS列表 {name})",
|
||||
"title": "移除Podcast"
|
||||
}
|
||||
},
|
||||
"queue-item": {
|
||||
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:data.channels {'|'} {bitrate} kbit/s"
|
||||
},
|
||||
@ -91,6 +91,12 @@
|
||||
"title": "更新資料庫"
|
||||
}
|
||||
},
|
||||
"grouped-list": {
|
||||
"last-month": "上月",
|
||||
"last-week": "上周",
|
||||
"today": "今日",
|
||||
"undefined": "未定義"
|
||||
},
|
||||
"language": {
|
||||
"de": "德語 (Deutsch)",
|
||||
"en": "英語 (English)",
|
||||
@ -121,9 +127,6 @@
|
||||
"artists": "藝人",
|
||||
"audiobooks": "有聲書",
|
||||
"composers": "作曲家",
|
||||
"stream-error": "HTTP串流錯誤:串流載入失敗或者由於網絡原因無法載入",
|
||||
"stream": "HTTP串流",
|
||||
"volume": "音量",
|
||||
"files": "文件",
|
||||
"genres": "音樂類型",
|
||||
"music": "音樂",
|
||||
@ -133,7 +136,10 @@
|
||||
"search": "搜尋",
|
||||
"settings": "設定",
|
||||
"spotify": "Spotify",
|
||||
"update-library": "更新資料庫"
|
||||
"stream": "HTTP串流",
|
||||
"stream-error": "HTTP串流錯誤:串流載入失敗或者由於網絡原因無法載入",
|
||||
"update-library": "更新資料庫",
|
||||
"volume": "音量"
|
||||
},
|
||||
"options": {
|
||||
"filter": {
|
||||
@ -144,8 +150,8 @@
|
||||
"title": "篩選"
|
||||
},
|
||||
"sort": {
|
||||
"artist-name": "藝人 › 名稱",
|
||||
"artist-date": "藝人 › 發行日期",
|
||||
"artist-name": "藝人 › 名稱",
|
||||
"name": "名稱",
|
||||
"rating": "評級",
|
||||
"recently-added": "最近新增",
|
||||
@ -177,8 +183,8 @@
|
||||
"title": "作者"
|
||||
},
|
||||
"tabs": {
|
||||
"authors": "作者",
|
||||
"audiobooks": "有聲書",
|
||||
"authors": "作者",
|
||||
"genres": "音樂類型"
|
||||
}
|
||||
},
|
||||
@ -243,78 +249,18 @@
|
||||
"show-playlists": "顯示播放列表|顯示所有 {count} 個播放列表",
|
||||
"show-podcasts": "顯示Podcast|顯示所有 {count} 個Podcast",
|
||||
"show-tracks": "顯示曲目|顯示所有 {count} 首曲目",
|
||||
"tracks": "曲目",
|
||||
"tabs": {
|
||||
"library": "資料庫",
|
||||
"spotify": "Spotify"
|
||||
}
|
||||
},
|
||||
"tracks": "曲目"
|
||||
},
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"title": "封面",
|
||||
"coverartarchive": "Cover Art Archive",
|
||||
"discogs": "Discogs",
|
||||
"explanation-1": "OwnTone支持PNG和 JPEG封面,這些封面可以作為單獨的圖像文件放置在庫中或嵌入到媒體文件中,也可以通過電台在線提供",
|
||||
"explanation-2": "除此之外,您還可以從以下素材提供者獲取封面:",
|
||||
"show-coverart": "在專輯列表中顯示封面藝術作品",
|
||||
"spotify": "Spotify",
|
||||
"streaming": "忽略電台提供的作品"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "沒有活躍的配對請求",
|
||||
"pairing-code": "配對代碼",
|
||||
"pairing-request": "遠程配對請求來自於 ",
|
||||
"pairing": "遙控配對",
|
||||
"speaker-pairing-info": "如果您的揚聲器需要配對,請在下面輸入它顯示的 PIN以啓用",
|
||||
"speaker-pairing": "揚聲器配對和設備驗證",
|
||||
"verification-code": "驗證碼"
|
||||
},
|
||||
"general": {
|
||||
"audiobooks": "有聲書",
|
||||
"files": "文件",
|
||||
"genres": "音樂類型",
|
||||
"language": "語言",
|
||||
"music": "音樂",
|
||||
"navigation-item-selection-info": "在行動裝置螢幕上,只會顯示漢堡菜單",
|
||||
"navigation-item-selection": "選擇頂部導航欄菜單項",
|
||||
"navigation-items": "導航條",
|
||||
"player-page": "“正在播放”頁面",
|
||||
"playlists": "播放列表",
|
||||
"podcasts": "Podcast",
|
||||
"radio": "電台",
|
||||
"recently-added-page-info": "限制顯示的相簿數量",
|
||||
"recently-added-page": "“最近新增”頁面",
|
||||
"search": "搜尋",
|
||||
"show-composer-genres-help": "以逗號分隔的音樂類型清單,將顯示作曲家的音樂類型{0}留空以始終顯示作曲家{0}通過檢查是否包含定義的音樂類型之一來匹配當前曲目的音樂類型標籤。例如,設定為“古典、原聲帶”將顯示音樂類型標籤為“當代古典”的曲目的作曲家",
|
||||
"show-composer-genres": "僅顯示列出的音樂類型的作曲家",
|
||||
"show-composer-info": "如果啟用,則會顯示目前播放曲目的作曲家",
|
||||
"show-composer": "顯示作曲家",
|
||||
"show-path": "顯示檔案路徑"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "使用您的 Last.fm 用戶名和密碼登入以啓用記錄功能",
|
||||
"info": "OwnTone不會存儲您的 Last.fm 用戶名/密碼,僅存儲會話密鑰。會話密鑰不會過期",
|
||||
"title": "Last.fm",
|
||||
"no-support": "OwnTone並無Last.fm的官方支持"
|
||||
},
|
||||
"spotify": {
|
||||
"authorize": "授權 API 訪問",
|
||||
"grant-access": "授予對 Spotify API 的訪問權限",
|
||||
"no-support": "OwnTone並無 Spotify 官方的支持,也未安裝 libspotify",
|
||||
"reauthorize": "請重新授權 API 訪問權限,以授予 OwnTone 以下附加訪問權限:{scopes}",
|
||||
"requirements": "您必須擁有 Spotify付費帳戶。訪問 Spotify API 可以掃描您的 Spotify庫。所需範圍是:{scopes}",
|
||||
"title": "Spotify",
|
||||
"user": "授予訪問權限 {user}"
|
||||
},
|
||||
"password": "密碼",
|
||||
"username": "用戶名"
|
||||
},
|
||||
"tabs": {
|
||||
"artwork": "封面",
|
||||
"devices": "遙控和輸出",
|
||||
"general": "概覽",
|
||||
"online-services": "在線服務"
|
||||
"online-services": "在線服務",
|
||||
"webinterface": "概覽"
|
||||
}
|
||||
},
|
||||
"spotify": {
|
||||
@ -324,13 +270,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "檔案夾",
|
||||
"plain": "簡單",
|
||||
"smart": "智能"
|
||||
}
|
||||
},
|
||||
"player": {
|
||||
"button": {
|
||||
"consume": "清除歷史",
|
||||
@ -349,11 +288,18 @@
|
||||
"toggle-lyrics": "顯示/隱藏歌詞"
|
||||
}
|
||||
},
|
||||
"playlist": {
|
||||
"type": {
|
||||
"folder": "檔案夾",
|
||||
"plain": "簡單",
|
||||
"smart": "智能"
|
||||
}
|
||||
},
|
||||
"property": {
|
||||
"added-on": "新增時間",
|
||||
"album": "專輯",
|
||||
"albums": "張專輯",
|
||||
"album-artist": "專輯藝人",
|
||||
"albums": "張專輯",
|
||||
"artist": "專輯藝人",
|
||||
"artists": "藝人",
|
||||
"comment": "評論",
|
||||
@ -379,15 +325,70 @@
|
||||
"year": "年份"
|
||||
},
|
||||
"server": {
|
||||
"appended-tracks": "已附加到隊列的 {count} 首曲目|已附加到隊列的 {count} 首曲目",
|
||||
"connection-failed": "無法連接到 OwnTone 伺服器",
|
||||
"request-failed": "請求失敗 (狀態:{status} {cause} {url})",
|
||||
"queue-saved": "清單以新增到播放列表 {name}",
|
||||
"appended-tracks": "已附加到隊列的 {count} 首曲目|已附加到隊列的 {count} 首曲目"
|
||||
"request-failed": "請求失敗 (狀態:{status} {cause} {url})"
|
||||
},
|
||||
"grouped-list": {
|
||||
"today": "今日",
|
||||
"last-week": "上周",
|
||||
"last-month": "上月",
|
||||
"undefined": "未定義"
|
||||
"settings": {
|
||||
"artwork": {
|
||||
"explanation-1": "OwnTone支持PNG和 JPEG封面,這些封面可以作為單獨的圖像文件放置在庫中或嵌入到媒體文件中,也可以通過電台在線提供",
|
||||
"explanation-2": "除此之外,您還可以從以下素材提供者獲取封面:",
|
||||
"show-cover-artwork-in-album-lists": "在專輯列表中顯示封面藝術作品",
|
||||
"streamurl-ignore": "忽略電台提供的作品",
|
||||
"title": "封面",
|
||||
"use-artwork-source-coverartarchive": "Cover Art Archive",
|
||||
"use-artwork-source-discogs": "Discogs",
|
||||
"use-artwork-source-spotify": "Spotify"
|
||||
},
|
||||
"devices": {
|
||||
"no-active-pairing": "沒有活躍的配對請求",
|
||||
"pairing": "遙控配對",
|
||||
"pairing-code": "配對代碼",
|
||||
"pairing-request": "遠程配對請求來自於 ",
|
||||
"speaker-pairing": "揚聲器配對和設備驗證",
|
||||
"speaker-pairing-info": "如果您的揚聲器需要配對,請在下面輸入它顯示的 PIN以啓用",
|
||||
"verification-code": "驗證碼"
|
||||
},
|
||||
"services": {
|
||||
"lastfm": {
|
||||
"grant-access": "使用您的 Last.fm 用戶名和密碼登入以啓用記錄功能",
|
||||
"info": "OwnTone不會存儲您的 Last.fm 用戶名/密碼,僅存儲會話密鑰。會話密鑰不會過期",
|
||||
"no-support": "OwnTone並無Last.fm的官方支持",
|
||||
"title": "Last.fm"
|
||||
},
|
||||
"password": "密碼",
|
||||
"spotify": {
|
||||
"authorize": "授權 API 訪問",
|
||||
"grant-access": "授予對 Spotify API 的訪問權限",
|
||||
"no-support": "OwnTone並無 Spotify 官方的支持,也未安裝 libspotify",
|
||||
"reauthorize": "請重新授權 API 訪問權限,以授予 OwnTone 以下附加訪問權限:{scopes}",
|
||||
"requirements": "您必須擁有 Spotify付費帳戶。訪問 Spotify API 可以掃描您的 Spotify庫。所需範圍是:{scopes}",
|
||||
"title": "Spotify",
|
||||
"user": "授予訪問權限 {user}"
|
||||
},
|
||||
"username": "用戶名"
|
||||
},
|
||||
"webinterface": {
|
||||
"genres": "音樂類型",
|
||||
"language": "語言",
|
||||
"navigation-item-selection": "選擇頂部導航欄菜單項",
|
||||
"navigation-item-selection-info": "在行動裝置螢幕上,只會顯示漢堡菜單",
|
||||
"navigation-items": "導航條",
|
||||
"player-page": "“正在播放”頁面",
|
||||
"recently-added-limit": "限制顯示的相簿數量",
|
||||
"recently-added-page": "“最近新增”頁面",
|
||||
"show-composer-for-genre": "僅顯示列出的音樂類型的作曲家",
|
||||
"show-composer-genres-help": "以逗號分隔的音樂類型清單,將顯示作曲家的音樂類型{0}留空以始終顯示作曲家{0}通過檢查是否包含定義的音樂類型之一來匹配當前曲目的音樂類型標籤。例如,設定為“古典、原聲帶”將顯示音樂類型標籤為“當代古典”的曲目的作曲家",
|
||||
"show-composer-now-playing": "顯示作曲家",
|
||||
"show-filepath-now-playing": "顯示檔案路徑",
|
||||
"show-menu-item-audiobooks": "有聲書",
|
||||
"show-menu-item-files": "文件",
|
||||
"show-menu-item-music": "音樂",
|
||||
"show-menu-item-playlists": "播放列表",
|
||||
"show-menu-item-podcasts": "Podcast",
|
||||
"show-menu-item-radio": "電台",
|
||||
"show-menu-item-search": "搜尋"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,67 +2,32 @@
|
||||
<tabs-settings />
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title :content="{ title: $t('page.settings.artwork.title') }" />
|
||||
<pane-title :content="{ title: $t('settings.artwork.title') }" />
|
||||
</template>
|
||||
<template #content>
|
||||
<div class="content" v-text="$t('page.settings.artwork.explanation-1')" />
|
||||
<div class="content" v-text="$t('settings.artwork.explanation-1')" />
|
||||
<div class="content">
|
||||
<control-setting-switch category="artwork" name="streamurl_ignore">
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.artwork.streaming')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
<control-setting-switch category="artwork" name="streamurl_ignore" />
|
||||
<control-setting-switch
|
||||
category="artwork"
|
||||
name="show_cover_artwork_in_album_lists"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.artwork.show-coverart')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
</div>
|
||||
<div class="content" v-text="$t('page.settings.artwork.explanation-2')" />
|
||||
<div class="content" v-text="$t('settings.artwork.explanation-2')" />
|
||||
<div class="content">
|
||||
<control-setting-switch
|
||||
v-if="servicesStore.spotify_logged_in"
|
||||
v-if="servicesStore.isSpotifyActive"
|
||||
category="artwork"
|
||||
name="use_artwork_source_spotify"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.artwork.spotify')" />
|
||||
<a href="https://www.spotify.com/" target="_blank">
|
||||
<span class="icon">
|
||||
<mdicon name="open-in-new" size="16" />
|
||||
</span>
|
||||
</a>
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="artwork"
|
||||
name="use_artwork_source_discogs"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.artwork.discogs')" />
|
||||
<a href="https://www.discogs.com/" target="_blank">
|
||||
<span class="icon">
|
||||
<mdicon name="open-in-new" size="16" />
|
||||
</span>
|
||||
</a>
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="artwork"
|
||||
name="use_artwork_source_coverartarchive"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.artwork.coverartarchive')" />
|
||||
<a href="https://coverartarchive.org/" target="_blank">
|
||||
<span class="icon">
|
||||
<mdicon name="open-in-new" size="16" />
|
||||
</span>
|
||||
</a>
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</content-with-heading>
|
||||
|
@ -2,12 +2,12 @@
|
||||
<tabs-settings />
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title :content="{ title: $t('page.settings.devices.pairing') }" />
|
||||
<pane-title :content="{ title: $t('settings.devices.pairing') }" />
|
||||
</template>
|
||||
<template #content>
|
||||
<form v-if="remotesStore.active" @submit.prevent="pairRemote">
|
||||
<label class="label has-text-weight-normal content">
|
||||
<span v-text="$t('page.settings.devices.pairing-request')" />
|
||||
<span v-text="$t('settings.devices.pairing-request')" />
|
||||
<b v-text="remotesStore.remote" />
|
||||
</label>
|
||||
<control-pin-field
|
||||
@ -24,19 +24,19 @@
|
||||
</div>
|
||||
</control-pin-field>
|
||||
</form>
|
||||
<div v-else v-text="$t('page.settings.devices.no-active-pairing')" />
|
||||
<div v-else v-text="$t('settings.devices.no-active-pairing')" />
|
||||
</template>
|
||||
</content-with-heading>
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title
|
||||
:content="{ title: $t('page.settings.devices.speaker-pairing') }"
|
||||
:content="{ title: $t('settings.devices.speaker-pairing') }"
|
||||
/>
|
||||
</template>
|
||||
<template #content>
|
||||
<div
|
||||
class="content"
|
||||
v-text="$t('page.settings.devices.speaker-pairing-info')"
|
||||
v-text="$t('settings.devices.speaker-pairing-info')"
|
||||
/>
|
||||
<div
|
||||
v-for="output in outputsStore.outputs"
|
||||
@ -56,7 +56,7 @@
|
||||
@submit.prevent="pairOutput(output.id)"
|
||||
>
|
||||
<control-pin-field
|
||||
:placeholder="$t('page.settings.devices.verification-code')"
|
||||
:placeholder="$t('settings.devices.verification-code')"
|
||||
@input="onOutputPinChange"
|
||||
>
|
||||
<div class="control">
|
||||
|
@ -2,17 +2,15 @@
|
||||
<tabs-settings />
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title
|
||||
:content="{ title: $t('page.settings.services.spotify.title') }"
|
||||
/>
|
||||
<pane-title :content="{ title: $t('settings.services.spotify.title') }" />
|
||||
</template>
|
||||
<template #content>
|
||||
<div v-if="servicesStore.isSpotifyEnabled">
|
||||
<div v-text="$t('page.settings.services.spotify.grant-access')" />
|
||||
<div v-text="$t('settings.services.spotify.grant-access')" />
|
||||
<div
|
||||
class="notification help"
|
||||
v-text="
|
||||
$t('page.settings.services.spotify.requirements', {
|
||||
$t('settings.services.spotify.requirements', {
|
||||
scopes: servicesStore.requiredSpotifyScopes.join(', ')
|
||||
})
|
||||
"
|
||||
@ -20,7 +18,7 @@
|
||||
<div v-if="servicesStore.isSpotifyActive">
|
||||
<div
|
||||
v-text="
|
||||
$t('page.settings.services.spotify.user', {
|
||||
$t('settings.services.spotify.user', {
|
||||
user: servicesStore.spotify.webapi_user
|
||||
})
|
||||
"
|
||||
@ -29,7 +27,7 @@
|
||||
v-if="servicesStore.hasMissingSpotifyScopes"
|
||||
class="notification help is-danger is-light"
|
||||
v-text="
|
||||
$t('page.settings.services.spotify.reauthorize', {
|
||||
$t('settings.services.spotify.reauthorize', {
|
||||
scopes: servicesStore.missingSpotifyScopes.join(', ')
|
||||
})
|
||||
"
|
||||
@ -40,7 +38,7 @@
|
||||
<a
|
||||
class="button"
|
||||
:href="servicesStore.spotify.oauth_uri"
|
||||
v-text="$t('page.settings.services.spotify.authorize')"
|
||||
v-text="$t('settings.services.spotify.authorize')"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="servicesStore.isSpotifyActive" class="control">
|
||||
@ -52,21 +50,19 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else v-text="$t('page.settings.services.spotify.no-support')" />
|
||||
<div v-else v-text="$t('settings.services.spotify.no-support')" />
|
||||
</template>
|
||||
</content-with-heading>
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title
|
||||
:content="{ title: $t('page.settings.services.lastfm.title') }"
|
||||
/>
|
||||
<pane-title :content="{ title: $t('settings.services.lastfm.title') }" />
|
||||
</template>
|
||||
<template #content>
|
||||
<div v-if="servicesStore.isLastfmEnabled">
|
||||
<div v-text="$t('page.settings.services.lastfm.grant-access')" />
|
||||
<div v-text="$t('settings.services.lastfm.grant-access')" />
|
||||
<div
|
||||
class="notification help"
|
||||
v-text="$t('page.settings.services.lastfm.info')"
|
||||
v-text="$t('settings.services.lastfm.info')"
|
||||
/>
|
||||
<div v-if="!servicesStore.isLastfmActive">
|
||||
<form @submit.prevent="loginLastfm">
|
||||
@ -76,7 +72,7 @@
|
||||
v-model="lastfmCredentials.user"
|
||||
class="input"
|
||||
type="text"
|
||||
:placeholder="$t('page.settings.services.username')"
|
||||
:placeholder="$t('settings.services.username')"
|
||||
/>
|
||||
<div
|
||||
v-if="lastfmErrors"
|
||||
@ -89,7 +85,7 @@
|
||||
v-model="lastfmCredentials.password"
|
||||
class="input"
|
||||
type="password"
|
||||
:placeholder="$t('page.settings.services.password')"
|
||||
:placeholder="$t('settings.services.password')"
|
||||
/>
|
||||
<div
|
||||
v-if="lastfmErrors"
|
||||
@ -120,7 +116,7 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else v-text="$t('page.settings.services.lastfm.no-support')" />
|
||||
<div v-else v-text="$t('settings.services.lastfm.no-support')" />
|
||||
</template>
|
||||
</content-with-heading>
|
||||
</template>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<tabs-settings />
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title :content="{ title: $t('page.settings.general.language') }" />
|
||||
<pane-title :content="{ title: $t('settings.webinterface.language') }" />
|
||||
</template>
|
||||
<template #content>
|
||||
<control-dropdown
|
||||
@ -14,113 +14,73 @@
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title
|
||||
:content="{ title: $t('page.settings.general.navigation-items') }"
|
||||
:content="{ title: $t('settings.webinterface.navigation-items') }"
|
||||
/>
|
||||
</template>
|
||||
<template #content>
|
||||
<div v-text="$t('page.settings.general.navigation-item-selection')" />
|
||||
<div v-text="$t('settings.webinterface.navigation-item-selection')" />
|
||||
<div
|
||||
class="notification is-size-7"
|
||||
v-text="$t('page.settings.general.navigation-item-selection-info')"
|
||||
v-text="$t('settings.webinterface.navigation-item-selection-info')"
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_playlists"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.playlists')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_music"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.music')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_podcasts"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.podcasts')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_audiobooks"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.audiobooks')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_radio"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.radio')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_files"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.files')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_menu_item_search"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.search')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
</template>
|
||||
</content-with-heading>
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title
|
||||
:content="{ title: $t('page.settings.general.player-page') }"
|
||||
:content="{ title: $t('settings.webinterface.player-page') }"
|
||||
/>
|
||||
</template>
|
||||
<template #content>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_filepath_now_playing"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.show-path')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-switch
|
||||
category="webinterface"
|
||||
name="show_composer_now_playing"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.show-composer')" />
|
||||
</template>
|
||||
<template #help>
|
||||
<span v-text="$t('page.settings.general.show-composer-info')" />
|
||||
</template>
|
||||
</control-setting-switch>
|
||||
/>
|
||||
<control-setting-text-field
|
||||
category="webinterface"
|
||||
name="show_composer_for_genre"
|
||||
:disabled="!settingsStore.showComposerNowPlaying"
|
||||
:placeholder="$t('page.settings.general.genres')"
|
||||
:placeholder="$t('settings.webinterface.genres')"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.show-composer-genres')" />
|
||||
</template>
|
||||
<template #help>
|
||||
<i18n-t
|
||||
tag="p"
|
||||
class="help"
|
||||
keypath="page.settings.general.show-composer-genres-help"
|
||||
keypath="settings.webinterface.show-composer-genres-help"
|
||||
scope="global"
|
||||
>
|
||||
<slot><br /></slot>
|
||||
@ -132,7 +92,7 @@
|
||||
<content-with-heading>
|
||||
<template #heading>
|
||||
<pane-title
|
||||
:content="{ title: $t('page.settings.general.recently-added-page') }"
|
||||
:content="{ title: $t('settings.webinterface.recently-added-page') }"
|
||||
/>
|
||||
</template>
|
||||
<template #content>
|
||||
@ -140,9 +100,6 @@
|
||||
category="webinterface"
|
||||
name="recently_added_limit"
|
||||
>
|
||||
<template #label>
|
||||
<span v-text="$t('page.settings.general.recently-added-page-info')" />
|
||||
</template>
|
||||
</control-setting-integer-field>
|
||||
</template>
|
||||
</content-with-heading>
|
||||
|
Loading…
x
Reference in New Issue
Block a user