[web] Simplify property translations

This commit is contained in:
Alain Nussbaumer 2025-02-12 18:50:22 +01:00
parent aae2904a57
commit 97d0e90408
17 changed files with 223 additions and 544 deletions

View File

@ -25,15 +25,15 @@ export default {
if (this.media_kind_resolved === 'podcast') { if (this.media_kind_resolved === 'podcast') {
if (this.item.data_kind === 'url') { if (this.item.data_kind === 'url') {
return [ return [
{ label: 'dialog.album.mark-as-played', action: this.mark_played }, { label: 'dialog.album.mark-as-played', handler: this.mark_played },
{ {
label: 'dialog.album.remove-podcast', label: 'dialog.album.remove-podcast',
action: this.remove_podcast handler: this.remove_podcast
} }
] ]
} }
return [ return [
{ label: 'dialog.album.mark-as-played', action: this.mark_played } { label: 'dialog.album.mark-as-played', handler: this.mark_played }
] ]
} }
return [] return []
@ -44,32 +44,32 @@ export default {
playable() { playable() {
return { return {
name: this.item.name, name: this.item.name,
action: this.open, handler: this.open,
image: this.item.artwork_url, image: this.item.artwork_url,
artist: this.item.artist, artist: this.item.artist,
album: this.item.name, album: this.item.name,
properties: [ properties: [
{ {
label: 'dialog.album.artist', label: 'property.artist',
value: this.item.artist, value: this.item.artist,
action: this.open_artist handler: this.open_artist
}, },
{ {
label: 'dialog.album.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.date_released) value: this.$filters.date(this.item.date_released)
}, },
{ label: 'dialog.album.year', value: this.item.year }, { label: 'property.year', value: this.item.year },
{ label: 'dialog.album.tracks', value: this.item.track_count }, { label: 'property.tracks', value: this.item.track_count },
{ {
label: 'dialog.album.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.durationInHours(this.item.length_ms)
}, },
{ {
label: 'dialog.album.type', label: 'property.type',
value: `${this.$t(`media.kind.${this.item.media_kind}`)} - ${this.$t(`data.kind.${this.item.data_kind}`)}` value: `${this.$t(`media.kind.${this.item.media_kind}`)} - ${this.$t(`data.kind.${this.item.data_kind}`)}`
}, },
{ {
label: 'dialog.album.added-on', label: 'property.added-on',
value: this.$filters.datetime(this.item.time_added) value: this.$filters.datetime(this.item.time_added)
} }
] ]

View File

@ -21,19 +21,19 @@ export default {
image: this.item?.images?.[0]?.url || '', image: this.item?.images?.[0]?.url || '',
artist: this.item.artist || '', artist: this.item.artist || '',
album: this.item.name || '', album: this.item.name || '',
action: this.open, handler: this.open,
properties: [ properties: [
{ {
label: 'dialog.spotify.album.album-artist', label: 'property.album-artist',
value: this.item?.artists?.[0]?.name, value: this.item?.artists?.[0]?.name,
action: this.open_artist handler: this.open_artist
}, },
{ {
label: 'dialog.spotify.album.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.release_date) value: this.$filters.date(this.item.release_date)
}, },
{ {
label: 'dialog.spotify.album.type', label: 'property.type',
value: this.item.album_type value: this.item.album_type
} }
] ]

View File

@ -18,16 +18,16 @@ export default {
playable() { playable() {
return { return {
name: this.item.name, name: this.item.name,
action: this.open, handler: this.open,
properties: [ properties: [
{ label: 'dialog.artist.albums', value: this.item.album_count }, { label: 'property.albums', value: this.item.album_count },
{ label: 'dialog.artist.tracks', value: this.item.track_count }, { label: 'property.tracks', value: this.item.track_count },
{ {
label: 'dialog.artist.type', label: 'property.type',
value: this.$t(`data.kind.${this.item.data_kind}`) value: this.$t(`data.kind.${this.item.data_kind}`)
}, },
{ {
label: 'dialog.artist.added-on', label: 'property.added-on',
value: this.$filters.datetime(this.item.time_added) value: this.$filters.datetime(this.item.time_added)
} }
] ]

View File

@ -18,16 +18,16 @@ export default {
playable() { playable() {
return { return {
name: this.item.name, name: this.item.name,
action: this.open, handler: this.open,
properties: [ properties: [
{ {
label: 'dialog.spotify.artist.popularity', label: 'property.popularity',
value: [this.item.popularity, this.item.followers?.total].join( value: [this.item.popularity, this.item.followers?.total].join(
' / ' ' / '
) )
}, },
{ {
label: 'dialog.spotify.artist.genres', label: 'property.genres',
value: this.item.genres?.join(', ') value: this.item.genres?.join(', ')
} }
] ]

View File

@ -17,22 +17,22 @@ export default {
computed: { computed: {
playable() { playable() {
return { return {
action: this.open_albums,
name: this.item.name, name: this.item.name,
handler: this.open_albums,
expression: `composer is "${this.item.name}" and media_kind is music`, expression: `composer is "${this.item.name}" and media_kind is music`,
properties: [ properties: [
{ {
label: 'dialog.composer.albums', label: 'property.albums',
value: this.item.album_count, value: this.item.album_count,
action: this.open_albums handler: this.open_albums
}, },
{ {
label: 'dialog.composer.tracks', label: 'property.tracks',
value: this.item.track_count, value: this.item.track_count,
action: this.open_tracks handler: this.open_tracks
}, },
{ {
label: 'dialog.composer.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.durationInHours(this.item.length_ms)
} }
] ]

View File

@ -22,19 +22,19 @@ export default {
playable() { playable() {
return { return {
name: this.item.name, name: this.item.name,
action: this.open, handler: this.open,
expression: `genre is "${this.item.name}" and media_kind is ${this.media_kind}`, expression: `genre is "${this.item.name}" and media_kind is ${this.media_kind}`,
properties: [ properties: [
{ {
label: 'dialog.genre.albums', label: 'property.albums',
value: this.item.album_count value: this.item.album_count
}, },
{ {
label: 'dialog.genre.tracks', label: 'property.tracks',
value: this.item.track_count value: this.item.track_count
}, },
{ {
label: 'dialog.genre.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.durationInHours(this.item.length_ms)
} }
] ]

View File

@ -2,7 +2,7 @@
<modal-dialog :actions="actions" :show="show" @close="$emit('close')"> <modal-dialog :actions="actions" :show="show" @close="$emit('close')">
<template #content> <template #content>
<div class="title is-4"> <div class="title is-4">
<a v-if="item.action" @click="item.action" v-text="item.name"></a> <a v-if="item.handler" @click="item.handler" v-text="item.name"></a>
<span v-else v-text="item.name" /> <span v-else v-text="item.name" />
</div> </div>
<cover-artwork <cover-artwork
@ -18,7 +18,7 @@
:key="button.label" :key="button.label"
v-t="button.label" v-t="button.label"
class="button is-small" class="button is-small"
@click="button.action" @click="button.handler"
/> />
</div> </div>
<div <div
@ -29,8 +29,8 @@
<div v-t="property.label" class="is-size-7 is-uppercase" /> <div v-t="property.label" class="is-size-7 is-uppercase" />
<div class="title is-6"> <div class="title is-6">
<a <a
v-if="property.action" v-if="property.handler"
@click="property.action" @click="property.handler"
v-text="property.value" v-text="property.value"
/> />
<span v-else class="title is-6" v-text="property.value" /> <span v-else class="title is-6" v-text="property.value" />

View File

@ -22,15 +22,15 @@ export default {
playable() { playable() {
return { return {
name: this.item.name, name: this.item.name,
action: this.open, handler: this.open,
uris: this.uris, uris: this.uris,
properties: [ properties: [
{ label: 'dialog.playlist.tracks', value: this.item.item_count }, { label: 'property.tracks', value: this.item.item_count },
{ {
label: 'dialog.playlist.type', label: 'property.type',
value: this.$t(`playlist.type.${this.item.type}`) value: this.$t(`playlist.type.${this.item.type}`)
}, },
{ label: 'dialog.playlist.path', value: this.item.path } { label: 'property.path', value: this.item.path }
] ]
} }
} }

View File

@ -18,17 +18,17 @@ export default {
playable() { playable() {
return { return {
name: this.item.name, name: this.item.name,
action: this.open, handler: this.open,
properties: [ properties: [
{ {
label: 'dialog.spotify.playlist.owner', label: 'property.owner',
value: this.item.owner?.display_name value: this.item.owner?.display_name
}, },
{ {
label: 'dialog.spotify.playlist.tracks', label: 'property.tracks',
value: this.item.tracks?.total value: this.item.tracks?.total
}, },
{ label: 'dialog.spotify.playlist.path', value: this.item.uri } { label: 'property.path', value: this.item.uri }
] ]
} }
} }

View File

@ -4,10 +4,7 @@
<div class="title is-4" v-text="item.title" /> <div class="title is-4" v-text="item.title" />
<div class="subtitle" v-text="item.artist" /> <div class="subtitle" v-text="item.artist" />
<div v-if="item.album" class="mb-3"> <div v-if="item.album" class="mb-3">
<div <div v-t="'property.album'" class="is-size-7 is-uppercase" />
class="is-size-7 is-uppercase"
v-text="$t('dialog.queue-item.album')"
/>
<div class="title is-6"> <div class="title is-6">
<a @click="open_album" v-text="item.album" /> <a @click="open_album" v-text="item.album" />
</div> </div>
@ -15,7 +12,7 @@
<div v-if="item.album_artist" class="mb-3"> <div v-if="item.album_artist" class="mb-3">
<div <div
class="is-size-7 is-uppercase" class="is-size-7 is-uppercase"
v-text="$t('dialog.queue-item.album-artist')" v-text="$t('property.album-artist')"
/> />
<div class="title is-6"> <div class="title is-6">
<a @click="open_album_artist" v-text="item.album_artist" /> <a @click="open_album_artist" v-text="item.album_artist" />
@ -45,73 +42,45 @@
</div> </div>
</div> </div>
<div v-if="item.disc_number" class="mb-3"> <div v-if="item.disc_number" class="mb-3">
<div <div class="is-size-7 is-uppercase" v-text="$t('property.position')" />
class="is-size-7 is-uppercase"
v-text="$t('dialog.queue-item.position')"
/>
<div <div
class="title is-6" class="title is-6"
v-text="[item.disc_number, item.track_number].join(' / ')" v-text="[item.disc_number, item.track_number].join(' / ')"
/> />
</div> </div>
<div v-if="item.length_ms" class="mb-3"> <div v-if="item.length_ms" class="mb-3">
<div <div class="is-size-7 is-uppercase" v-text="$t('property.duration')" />
class="is-size-7 is-uppercase"
v-text="$t('dialog.queue-item.duration')"
/>
<div <div
class="title is-6" class="title is-6"
v-text="$filters.durationInHours(item.length_ms)" v-text="$filters.durationInHours(item.length_ms)"
/> />
</div> </div>
<div class="mb-3"> <div class="mb-3">
<div <div class="is-size-7 is-uppercase" v-text="$t('property.path')" />
class="is-size-7 is-uppercase"
v-text="$t('dialog.queue-item.path')"
/>
<div class="title is-6" v-text="item.path" /> <div class="title is-6" v-text="item.path" />
</div> </div>
<div class="mb-3"> <div class="mb-3">
<div class="is-size-7 is-uppercase" v-text="$t('property.type')" />
<div <div
class="is-size-7 is-uppercase" class="title is-6"
v-text="$t('dialog.queue-item.type')"
/>
<div class="title is-6">
<span
v-text=" v-text="
`${$t(`media.kind.${item.media_kind}`)} - ${$t(`data.kind.${item.data_kind}`)}` `${$t(`media.kind.${item.media_kind}`)} - ${$t(`data.kind.${item.data_kind}`)}`
" "
/> />
</div> </div>
</div>
<div v-if="item.samplerate" class="mb-3"> <div v-if="item.samplerate" class="mb-3">
<div class="is-size-7 is-uppercase" v-text="$t('property.quality')" />
<div <div
class="is-size-7 is-uppercase" class="title is-6"
v-text="$t('dialog.queue-item.quality')"
/>
<div class="title is-6">
<span v-text="item.type" />
<span
v-if="item.samplerate"
v-text=" v-text="
$t('dialog.queue-item.samplerate', { $t('dialog.track.quality-value', {
rate: item.samplerate format: item.type,
bitrate: item.bitrate,
channels: $filters.channels(item.channels),
samplerate: item.samplerate
}) })
" "
/> />
<span
v-if="item.channels"
v-text="
$t('dialog.queue-item.channels', {
channels: $filters.channels(item.channels)
})
"
/>
<span
v-if="item.bitrate"
v-text="$t('dialog.queue-item.bitrate', { rate: item.bitrate })"
/>
</div>
</div> </div>
</template> </template>
</modal-dialog> </modal-dialog>

View File

@ -30,11 +30,11 @@ export default {
buttons() { buttons() {
if (this.item.media_kind === 'podcast') { if (this.item.media_kind === 'podcast') {
if (this.item.play_count > 0) { if (this.item.play_count > 0) {
return [{ label: 'dialog.track.mark-as-new', action: this.mark_new }] return [{ label: 'dialog.track.mark-as-new', handler: this.mark_new }]
} }
if (this.item.play_count === 0) { if (this.item.play_count === 0) {
return [ return [
{ label: 'dialog.track.mark-as-played', action: this.mark_played } { label: 'dialog.track.mark-as-played', handler: this.mark_played }
] ]
} }
} }
@ -45,36 +45,36 @@ export default {
name: this.item.title, name: this.item.title,
properties: [ properties: [
{ {
label: 'dialog.track.album', label: 'property.album',
value: this.item.album, value: this.item.album,
action: this.open_album handler: this.open_album
}, },
{ {
label: 'dialog.track.album-artist', label: 'property.album-artist',
value: this.item.album_artist, value: this.item.album_artist,
action: this.open_artist handler: this.open_artist
}, },
{ label: 'dialog.track.composer', value: this.item.composer }, { label: 'property.composer', value: this.item.composer },
{ {
label: 'dialog.track.release-date', label: 'property.release-date',
value: this.$filters.date(this.item.date_released) value: this.$filters.date(this.item.date_released)
}, },
{ label: 'dialog.track.year', value: this.item.year }, { label: 'property.year', value: this.item.year },
{ label: 'dialog.track.genre', value: this.item.genre }, { label: 'property.genre', value: this.item.genre },
{ {
label: 'dialog.track.position', label: 'property.position',
value: [this.item.disc_number, this.item.track_number].join(' / ') value: [this.item.disc_number, this.item.track_number].join(' / ')
}, },
{ {
label: 'dialog.track.duration', label: 'property.duration',
value: this.$filters.durationInHours(this.item.length_ms) value: this.$filters.durationInHours(this.item.length_ms)
}, },
{ {
label: 'dialog.track.type', label: 'property.type',
value: `${this.$t(`media.kind.${this.item.media_kind}`)} - ${this.$t(`data.kind.${this.item.data_kind}`)}` value: `${this.$t(`media.kind.${this.item.media_kind}`)} - ${this.$t(`data.kind.${this.item.data_kind}`)}`
}, },
{ {
label: 'dialog.track.quality', label: 'property.quality',
value: this.$t('dialog.track.quality-value', { value: this.$t('dialog.track.quality-value', {
format: this.item.type, format: this.item.type,
bitrate: this.item.bitrate, bitrate: this.item.bitrate,
@ -83,17 +83,17 @@ export default {
}) })
}, },
{ {
label: 'dialog.track.added-on', label: 'property.added-on',
value: this.$filters.datetime(this.item.time_added) value: this.$filters.datetime(this.item.time_added)
}, },
{ {
label: 'dialog.track.rating', label: 'property.rating',
value: this.$t('dialog.track.rating-value', { value: this.$t('dialog.track.rating-value', {
rating: Math.floor(this.item.rating / 10) rating: Math.floor(this.item.rating / 10)
}) })
}, },
{ label: 'dialog.track.comment', value: this.item.comment }, { label: 'property.comment', value: this.item.comment },
{ label: 'dialog.track.path', value: this.item.path } { label: 'property.path', value: this.item.path }
] ]
} }
} }

View File

@ -21,28 +21,28 @@ export default {
subtitle: this.item.artists[0].name, subtitle: this.item.artists[0].name,
properties: [ properties: [
{ {
label: 'dialog.spotify.track.album', label: 'property.album',
value: this.item.album.name, value: this.item.album.name,
action: this.open_album handler: this.open_album
}, },
{ {
label: 'dialog.spotify.track.album-artist', label: 'property.album-artist',
value: this.item.artists[0].name, value: this.item.artists[0].name,
action: this.open_artist handler: this.open_artist
}, },
{ {
label: 'dialog.spotify.track.release-date', label: 'property.release-date',
value: this.$filters.date(item.album.release_date) value: this.$filters.date(item.album.release_date)
}, },
{ {
label: 'dialog.spotify.track.position', label: 'property.position',
value: [item.disc_number, item.track_number].join(' / ') value: [item.disc_number, item.track_number].join(' / ')
}, },
{ {
label: 'dialog.spotify.track.duration', label: 'property.duration',
value: this.$filters.durationInHours(item.duration_ms) value: this.$filters.durationInHours(item.duration_ms)
}, },
{ label: 'dialog.spotify.track.path', value: this.item.uri } { label: 'property.path', value: this.item.uri }
] ]
} }
} }

View File

@ -27,31 +27,8 @@
} }
}, },
"album": { "album": {
"added-on": "Hinzugefügt am",
"artist": "Album Künstler",
"duration": "Dauer",
"mark-as-played": "Markiere als gespielt", "mark-as-played": "Markiere als gespielt",
"release-date": "Erscheinungsdatum", "remove-podcast": "Entferne podcast"
"remove-podcast": "Entferne podcast",
"tracks": "Track Nummer",
"type": "Art",
"year": "Jahr"
},
"artist": {
"added-on": "Hinzugefügt am",
"albums": "Alben",
"tracks": "Tracks",
"type": "Art"
},
"composer": {
"albums": "Alben",
"duration": "Dauer",
"tracks": "Tracks"
},
"genre": {
"albums": "Alben",
"duration": "Dauer",
"tracks": "Tracks"
}, },
"playable": { "playable": {
"add-next": "Als nächstes hinzufügen", "add-next": "Als nächstes hinzufügen",
@ -61,10 +38,7 @@
"playlist": { "playlist": {
"add-next": "Als nächstes hinzufügen", "add-next": "Als nächstes hinzufügen",
"add": "Hinzufügen", "add": "Hinzufügen",
"path": "Pfad",
"play": "Spielen", "play": "Spielen",
"tracks": "Tracks",
"type": "Art",
"save": { "save": {
"cancel": "Abbrechen", "cancel": "Abbrechen",
"playlist-name": "Playlistname", "playlist-name": "Playlistname",
@ -74,23 +48,9 @@
} }
}, },
"queue-item": { "queue-item": {
"album-artist": "Album-Künstler",
"album": "Album",
"bitrate": "{'|'} {rate} kbit/s",
"channels": "{'|'} {channels}",
"composer": "Komponist",
"duration": "Dauer",
"genre": "Genre",
"path": "Pfad",
"play": "Spielen", "play": "Spielen",
"position": "Disc / Track", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "Qualität", "remove": "Entfernen"
"remove": "Entfernen",
"samplerate": "{'|'} {rate} Hz",
"spotify-album": "Album",
"spotify-artist": "Künstler",
"type": "Art",
"year": "Jahr"
}, },
"remote-pairing": { "remote-pairing": {
"cancel": "Abbrechen", "cancel": "Abbrechen",
@ -98,51 +58,11 @@
"pairing-code": "Pairing-Code", "pairing-code": "Pairing-Code",
"title": "Remote-Paarungs-Anfrage" "title": "Remote-Paarungs-Anfrage"
}, },
"spotify": {
"album": {
"album-artist": "Album-Künstler",
"release-date": "Erscheinungsdatum",
"type": "Art"
},
"artist": {
"genres": "Genres",
"popularity": "Popularität / Followers"
},
"playlist": {
"owner": "Besitzer",
"path": "Pfad",
"tracks": "Tracks"
},
"track": { "track": {
"album-artist": "Album-Künstler",
"album": "Album",
"duration": "Dauer",
"path": "Pfad",
"position": "Disc / Track",
"release-date": "Erscheinungsdatum"
}
},
"track": {
"added-on": "Hinzugefügt am",
"album-artist": "Album-Künstler",
"album": "Album",
"comment": "Kommentar",
"composer": "Komponist",
"duration": "Dauer",
"genre": "Genre",
"mark-as-new": "Markiere als neu", "mark-as-new": "Markiere als neu",
"mark-as-played": "Markiere als gespielt", "mark-as-played": "Markiere als gespielt",
"path": "Pfad",
"position": "Disc / Track",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "Qualität", "rating-value": "{rating} / 10"
"rating-value": "{rating} / 10",
"rating": "Bewertung",
"release-date": "Erscheinungsdatum",
"spotify-album": "Album",
"spotify-artist": "Künstler",
"type": "Art",
"year": "Jahr"
}, },
"update": { "update": {
"all": "Alles neu einlesen", "all": "Alles neu einlesen",
@ -538,6 +458,28 @@
"toggle-lyrics": "Liedtexte anzeigen/verbergen" "toggle-lyrics": "Liedtexte anzeigen/verbergen"
} }
}, },
"property": {
"added-on": "Hinzugefügt am",
"album": "Album",
"albums": "Alben",
"album-artist": "Album-Künstler",
"artist": "Album Künstler",
"comment": "Kommentar",
"composer": "Komponist",
"duration": "Dauer",
"genre": "Genre",
"genres": "Genres",
"owner": "Besitzer",
"path": "Pfad",
"popularity": "Popularität / Followers",
"position": "Disc / Track",
"quality": "Qualität",
"rating": "Bewertung",
"release-date": "Erscheinungsdatum",
"tracks": "Tracks",
"type": "Art",
"year": "Jahr"
},
"server": { "server": {
"connection-failed": "Fehler bei Verbindung zum OwnTone-Server", "connection-failed": "Fehler bei Verbindung zum OwnTone-Server",
"request-failed": "Anfrage gescheitert (Status: {status} {cause} {url})", "request-failed": "Anfrage gescheitert (Status: {status} {cause} {url})",

View File

@ -27,31 +27,8 @@
} }
}, },
"album": { "album": {
"added-on": "Added on",
"artist": "Album artist",
"duration": "Duration",
"mark-as-played": "Mark as played", "mark-as-played": "Mark as played",
"release-date": "Release date", "remove-podcast": "Remove podcast"
"remove-podcast": "Remove podcast",
"tracks": "Tracks",
"type": "Type",
"year": "Year"
},
"artist": {
"added-on": "Added On",
"albums": "Albums",
"tracks": "Tracks",
"type": "Type"
},
"composer": {
"albums": "Albums",
"duration": "Duration",
"tracks": "Tracks"
},
"genre": {
"albums": "Albums",
"duration": "Duration",
"tracks": "Tracks"
}, },
"playable": { "playable": {
"add-next": "Add Next", "add-next": "Add Next",
@ -62,9 +39,6 @@
"add-next": "Add Next", "add-next": "Add Next",
"add": "Add", "add": "Add",
"play": "Play", "play": "Play",
"path": "Path",
"tracks": "Tracks",
"type": "Type",
"save": { "save": {
"cancel": "Cancel", "cancel": "Cancel",
"playlist-name": "Playlist name", "playlist-name": "Playlist name",
@ -74,23 +48,9 @@
} }
}, },
"queue-item": { "queue-item": {
"album-artist": "Album Artist",
"album": "Album",
"bitrate": " {'|'} {rate} kbit/s",
"channels": " {'|'} {channels}",
"composer": "Composer",
"duration": "Duration",
"genre": "Genre",
"path": "Path",
"play": "Play", "play": "Play",
"position": "Disc / Track", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "Quality", "remove": "Remove"
"remove": "Remove",
"samplerate": " {'|'} {rate} Hz",
"spotify-album": "album",
"spotify-artist": "artist",
"type": "Type",
"year": "Year"
}, },
"remote-pairing": { "remote-pairing": {
"cancel": "Cancel", "cancel": "Cancel",
@ -98,51 +58,11 @@
"pairing-code": "Pairing code", "pairing-code": "Pairing code",
"title": "Remote pairing request" "title": "Remote pairing request"
}, },
"spotify": {
"album": {
"album-artist": "Album Artist",
"release-date": "Release Date",
"type": "Type"
},
"artist": {
"genres": "Genres",
"popularity": "Popularity / Followers"
},
"playlist": {
"owner": "Owner",
"path": "Path",
"tracks": "Tracks"
},
"track": { "track": {
"album-artist": "Album Artist",
"album": "Album",
"duration": "Duration",
"path": "Path",
"position": "Disc / Track",
"release-date": "Release Date"
}
},
"track": {
"added-on": "Added On",
"album-artist": "Album Artist",
"album": "Album",
"comment": "Comment",
"composer": "Composer",
"duration": "Duration",
"genre": "Genre",
"mark-as-new": "Mark as new", "mark-as-new": "Mark as new",
"mark-as-played": "Mark as played", "mark-as-played": "Mark as played",
"path": "Path",
"position": "Disc / Track",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "Quality", "rating-value": "{rating} / 10"
"rating-value": "{rating} / 10",
"rating": "Rating",
"release-date": "Release Date",
"spotify-album": "album",
"spotify-artist": "artist",
"type": "Type",
"year": "Year"
}, },
"update": { "update": {
"all": "Update everything", "all": "Update everything",
@ -538,6 +458,28 @@
"toggle-lyrics": "Toggle lyrics" "toggle-lyrics": "Toggle lyrics"
} }
}, },
"property": {
"added-on": "Added On",
"album": "Album",
"albums": "Albums",
"album-artist": "Album Artist",
"artist": "Artist",
"comment": "Comment",
"composer": "Composer",
"duration": "Duration",
"genre": "Genre",
"genres": "Genres",
"owner": "Owner",
"path": "Path",
"popularity": "Popularity / Followers",
"position": "Disc / Track",
"quality": "Quality",
"rating": "Rating",
"release-date": "Release Date",
"tracks": "Tracks",
"type": "Type",
"year": "Year"
},
"server": { "server": {
"connection-failed": "Failed to connect to OwnTone server", "connection-failed": "Failed to connect to OwnTone server",
"request-failed": "Request failed (status: {status} {cause} {url})", "request-failed": "Request failed (status: {status} {cause} {url})",

View File

@ -27,31 +27,8 @@
} }
}, },
"album": { "album": {
"added-on": "Ajouté le",
"artist": "Artiste de lalbum",
"duration": "Durée",
"mark-as-played": "Marquer comme lu", "mark-as-played": "Marquer comme lu",
"release-date": "Date de sortie", "remove-podcast": "Supprimer le podcast"
"remove-podcast": "Supprimer le podcast",
"tracks": "Pistes",
"type": "Type",
"year": "Année"
},
"artist": {
"added-on": "Ajouté le",
"albums": "Albums",
"tracks": "Pistes",
"type": "Type"
},
"composer": {
"albums": "Albums",
"duration": "Durée",
"tracks": "Pistes"
},
"genre": {
"albums": "Albums",
"duration": "Durée",
"tracks": "Pistes"
}, },
"playable": { "playable": {
"add-next": "Ajouter ensuite", "add-next": "Ajouter ensuite",
@ -62,9 +39,6 @@
"add-next": "Ajouter ensuite", "add-next": "Ajouter ensuite",
"add": "Ajouter", "add": "Ajouter",
"play": "Lire", "play": "Lire",
"path": "Emplacement",
"tracks": "Pistes",
"type": "Type",
"save": { "save": {
"cancel": "Annuler", "cancel": "Annuler",
"playlist-name": "Nom de la liste de lecture", "playlist-name": "Nom de la liste de lecture",
@ -74,23 +48,9 @@
} }
}, },
"queue-item": { "queue-item": {
"album-artist": "Artiste de lalbum",
"album": "Album",
"bitrate": " {'|'} {rate} kbit/s",
"channels": " {'|'} {channels}",
"composer": "Compositeur",
"duration": "Durée",
"genre": "Genre",
"path": "Emplacement",
"play": "Lire", "play": "Lire",
"position": "Disque / Piste", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "Qualité", "remove": "Supprimer"
"remove": "Supprimer",
"samplerate": " {'|'} {rate} Hz",
"spotify-album": "album",
"spotify-artist": "artiste",
"type": "Type",
"year": "Année"
}, },
"remote-pairing": { "remote-pairing": {
"cancel": "Annuler", "cancel": "Annuler",
@ -98,51 +58,11 @@
"pairing-code": "Code de jumelage", "pairing-code": "Code de jumelage",
"title": "Demande de jumelage de télécommande" "title": "Demande de jumelage de télécommande"
}, },
"spotify": {
"album": {
"album-artist": "Artiste de lalbum",
"release-date": "Date de sortie",
"type": "Type"
},
"artist": {
"genres": "Genres",
"popularity": "Popularité / Abonnements"
},
"playlist": {
"owner": "Propriétaire",
"path": "Emplacement",
"tracks": "Pistes"
},
"track": { "track": {
"album-artist": "Artiste de lalbum",
"album": "Album",
"duration": "Durée",
"path": "Emplacement",
"position": "Disque / Piste",
"release-date": "Date de sortie"
}
},
"track": {
"added-on": "Ajouté le",
"album-artist": "Artiste de lalbum",
"album": "Album",
"comment": "Commentaire",
"composer": "Compositeur",
"duration": "Durée",
"genre": "Genre",
"mark-as-new": "Marquer comme nouveau", "mark-as-new": "Marquer comme nouveau",
"mark-as-played": "Marquer comme lu", "mark-as-played": "Marquer comme lu",
"path": "Emplacement",
"position": "Disque / Piste",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "Qualité", "rating-value": "{rating} / 10"
"rating-value": "{rating} / 10",
"rating": "Classement",
"release-date": "Date de sortie",
"spotify-album": "album",
"spotify-artist": "artiste",
"type": "Type",
"year": "Année"
}, },
"update": { "update": {
"all": "Tout actualiser", "all": "Tout actualiser",
@ -538,6 +458,28 @@
"toggle-lyrics": "Voir/Cacher les paroles" "toggle-lyrics": "Voir/Cacher les paroles"
} }
}, },
"property": {
"added-on": "Ajouté le",
"album": "Album",
"albums": "Albums",
"album-artist": "Artiste de lalbum",
"artist": "Artiste",
"comment": "Commentaire",
"composer": "Compositeur",
"duration": "Durée",
"genre": "Genre",
"genres": "Genres",
"owner": "Propriétaire",
"path": "Emplacement",
"popularity": "Popularité / Abonnements",
"position": "Disque / Piste",
"quality": "Qualité",
"rating": "Classement",
"release-date": "Date de sortie",
"tracks": "Pistes",
"type": "Type",
"year": "Année"
},
"server": { "server": {
"connection-failed": "Échec de connexion au serveur", "connection-failed": "Échec de connexion au serveur",
"request-failed": "La requête a échoué (status: {status} {cause} {url})", "request-failed": "La requête a échoué (status: {status} {cause} {url})",

View File

@ -27,31 +27,8 @@
} }
}, },
"album": { "album": {
"added-on": "添加时间",
"artist": "专辑艺人",
"duration": "时长",
"mark-as-played": "标记为已播", "mark-as-played": "标记为已播",
"release-date": "发行日期", "remove-podcast": "移除播客"
"remove-podcast": "移除播客",
"tracks": "只曲目",
"type": "类型",
"year": "年份"
},
"artist": {
"added-on": "添加时间",
"albums": "张专辑",
"tracks": "只曲目",
"type": "类型"
},
"composer": {
"albums": "张专辑",
"duration": "时长",
"tracks": "只曲目"
},
"genre": {
"albums": "张专辑",
"duration": "时长",
"tracks": "只曲目"
}, },
"playable": { "playable": {
"add-next": "插播", "add-next": "插播",
@ -62,9 +39,6 @@
"add-next": "插播", "add-next": "插播",
"add": "添加", "add": "添加",
"play": "播放", "play": "播放",
"path": "路径",
"tracks": "只曲目",
"type": "类型",
"save": { "save": {
"cancel": "取消", "cancel": "取消",
"playlist-name": "播放列表名称", "playlist-name": "播放列表名称",
@ -74,23 +48,9 @@
} }
}, },
"queue-item": { "queue-item": {
"album-artist": "专辑艺人",
"album": "专辑",
"bitrate": " {'|'} {rate} kbit/s",
"channels": " {'|'} {channels}",
"composer": "作曲家",
"duration": "时长",
"genre": "流派",
"path": "路径",
"play": "播放", "play": "播放",
"position": "盘符 / 曲目", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "质量", "remove": "移除"
"remove": "移除",
"samplerate": " {'|'} {rate} Hz",
"spotify-album": "专辑",
"spotify-artist": "艺人",
"type": "类型",
"year": "年份"
}, },
"remote-pairing": { "remote-pairing": {
"cancel": "取消", "cancel": "取消",
@ -98,51 +58,11 @@
"pairing-code": "配对码", "pairing-code": "配对码",
"title": "请求遥控配对" "title": "请求遥控配对"
}, },
"spotify": {
"album": {
"album-artist": "专辑艺人",
"release-date": "发行日期",
"type": "类型"
},
"artist": {
"genres": "流派",
"popularity": "流行度 / 粉丝数"
},
"playlist": {
"owner": "所有者",
"path": "路径",
"tracks": "曲目"
},
"track": { "track": {
"album-artist": "专辑艺人",
"album": "专辑",
"duration": "时长",
"path": "路径",
"position": "盘符 / 曲目",
"release-date": "发行日期"
}
},
"track": {
"added-on": "添加时间",
"album-artist": "专辑艺人",
"album": "专辑",
"comment": "评论",
"composer": "作曲家",
"duration": "时长",
"genre": "流派",
"mark-as-new": "标记为最新", "mark-as-new": "标记为最新",
"mark-as-played": "标记为已播放", "mark-as-played": "标记为已播放",
"path": "路径",
"position": "盘符 / 曲目",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "质量", "rating-value": "{rating} / 10"
"rating-value": "{rating} / 10",
"rating": "评级",
"release-date": "发行日期",
"spotify-album": "专辑",
"spotify-artist": "艺人",
"type": "类型",
"year": "年份"
}, },
"update": { "update": {
"all": "更新所有内容", "all": "更新所有内容",
@ -538,6 +458,28 @@
"toggle-lyrics": "显示/隐藏歌词" "toggle-lyrics": "显示/隐藏歌词"
} }
}, },
"property": {
"added-on": "添加时间",
"album": "专辑",
"albums": "张专辑",
"album-artist": "专辑艺人",
"artist": "专辑艺人",
"comment": "评论",
"composer": "作曲家",
"duration": "时长",
"genre": "流派",
"genres": "流派",
"owner": "所有者",
"path": "路径",
"popularity": "流行度 / 粉丝数",
"position": "盘符 / 曲目",
"quality": "质量",
"rating": "评级",
"release-date": "发行日期",
"tracks": "只曲目",
"type": "类型",
"year": "年份"
},
"server": { "server": {
"connection-failed": "无法连接到 OwnTone 服务器", "connection-failed": "无法连接到 OwnTone 服务器",
"request-failed": "请求失败 (状态:{status} {cause} {url})", "request-failed": "请求失败 (状态:{status} {cause} {url})",

View File

@ -27,31 +27,8 @@
} }
}, },
"album": { "album": {
"added-on": "新增時間",
"artist": "專輯藝人",
"duration": "時長",
"mark-as-played": "標記為已播", "mark-as-played": "標記為已播",
"release-date": "發行日期", "remove-podcast": "移除Podcast"
"remove-podcast": "移除Podcast",
"tracks": "首曲目",
"type": "類型",
"year": "年份"
},
"artist": {
"added-on": "新增時間",
"albums": "張專輯",
"tracks": "首曲目",
"type": "類型"
},
"composer": {
"albums": "張專輯",
"duration": "時長",
"tracks": "首曲目"
},
"genre": {
"albums": "張專輯",
"duration": "時長",
"tracks": "首曲目"
}, },
"playable": { "playable": {
"add-next": "插播", "add-next": "插播",
@ -62,9 +39,6 @@
"add-next": "插播", "add-next": "插播",
"add": "新增", "add": "新增",
"play": "播放", "play": "播放",
"path": "路徑",
"tracks": "首曲目",
"type": "類型",
"save": { "save": {
"cancel": "取消", "cancel": "取消",
"playlist-name": "播放列表名稱", "playlist-name": "播放列表名稱",
@ -74,23 +48,9 @@
} }
}, },
"queue-item": { "queue-item": {
"album-artist": "專輯藝人",
"album": "專輯",
"bitrate": " {'|'} {rate} kbit/s",
"channels": " {'|'} {channels}",
"composer": "作曲",
"duration": "時長",
"genre": "音樂類型",
"path": "路徑",
"play": "播放", "play": "播放",
"position": "盤符 / 曲目", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "品質", "remove": "移除"
"remove": "移除",
"samplerate": " {'|'} {rate} Hz",
"spotify-album": "專輯",
"spotify-artist": "藝人",
"type": "類型",
"year": "年份"
}, },
"remote-pairing": { "remote-pairing": {
"cancel": "取消", "cancel": "取消",
@ -98,51 +58,11 @@
"pairing-code": "配對碼", "pairing-code": "配對碼",
"title": "請求遙控配對" "title": "請求遙控配對"
}, },
"spotify": {
"album": {
"album-artist": "專輯藝人",
"release-date": "發行日期",
"type": "類型"
},
"artist": {
"genres": "音樂類型",
"popularity": "流行度 / 粉絲數"
},
"playlist": {
"owner": "所有者",
"path": "路徑",
"tracks": "曲目"
},
"track": { "track": {
"album-artist": "專輯藝人",
"album": "專輯",
"duration": "時長",
"path": "路徑",
"position": "盤符 / 曲目",
"release-date": "發行日期"
}
},
"track": {
"added-on": "新增時間",
"album-artist": "專輯藝人",
"album": "專輯",
"comment": "評論",
"composer": "作曲家",
"duration": "時長",
"genre": "音樂類型",
"mark-as-new": "標記為最新", "mark-as-new": "標記為最新",
"mark-as-played": "標記為已播放", "mark-as-played": "標記為已播放",
"path": "路徑",
"position": "盤符 / 曲目",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s", "quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"quality": "品質", "rating-value": "{rating} / 10"
"rating-value": "{rating} / 10",
"rating": "評級",
"release-date": "發行日期",
"spotify-album": "專輯",
"spotify-artist": "藝人",
"type": "類型",
"year": "年份"
}, },
"update": { "update": {
"all": "更新所有內容", "all": "更新所有內容",
@ -538,6 +458,28 @@
"toggle-lyrics": "顯示/隱藏歌詞" "toggle-lyrics": "顯示/隱藏歌詞"
} }
}, },
"property": {
"added-on": "新增時間",
"album": "專輯",
"albums": "張專輯",
"album-artist": "專輯藝人",
"artist": "專輯藝人",
"comment": "評論",
"composer": "作曲家",
"duration": "時長",
"genre": "音樂類型",
"genres": "音樂類型",
"owner": "所有者",
"path": "路徑",
"popularity": "流行度 / 粉絲數",
"position": "盤符 / 曲目",
"quality": "品質",
"rating": "評級",
"release-date": "發行日期",
"tracks": "曲目",
"type": "類型",
"year": "年份"
},
"server": { "server": {
"connection-failed": "無法連接到 OwnTone 伺服器", "connection-failed": "無法連接到 OwnTone 伺服器",
"request-failed": "請求失敗 (狀態:{status} {cause} {url})", "request-failed": "請求失敗 (狀態:{status} {cause} {url})",