[web] Simplify translations

This commit is contained in:
Alain Nussbaumer 2025-03-05 21:31:48 +01:00
parent 296dbe7a78
commit eecc915a6a
32 changed files with 233 additions and 550 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1644,14 +1644,14 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "8.25.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz",
"integrity": "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==",
"version": "8.26.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.0.tgz",
"integrity": "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.25.0",
"@typescript-eslint/visitor-keys": "8.25.0"
"@typescript-eslint/types": "8.26.0",
"@typescript-eslint/visitor-keys": "8.26.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@ -1662,9 +1662,9 @@
}
},
"node_modules/@typescript-eslint/types": {
"version": "8.25.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz",
"integrity": "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==",
"version": "8.26.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.0.tgz",
"integrity": "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA==",
"dev": true,
"license": "MIT",
"engines": {
@ -1676,14 +1676,14 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "8.25.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz",
"integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==",
"version": "8.26.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.0.tgz",
"integrity": "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.25.0",
"@typescript-eslint/visitor-keys": "8.25.0",
"@typescript-eslint/types": "8.26.0",
"@typescript-eslint/visitor-keys": "8.26.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@ -1699,17 +1699,17 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
"typescript": ">=4.8.4 <5.8.0"
"typescript": ">=4.8.4 <5.9.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "8.25.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz",
"integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==",
"version": "8.26.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.0.tgz",
"integrity": "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "8.25.0",
"@typescript-eslint/types": "8.26.0",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
@ -1881,9 +1881,9 @@
"license": "MIT"
},
"node_modules/acorn": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
"version": "8.14.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
"dev": true,
"license": "MIT",
"bin": {
@ -2130,9 +2130,9 @@
}
},
"node_modules/core-js": {
"version": "3.40.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz",
"integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==",
"version": "3.41.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz",
"integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
@ -2443,9 +2443,9 @@
}
},
"node_modules/eslint-plugin-vue": {
"version": "9.32.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.32.0.tgz",
"integrity": "sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==",
"version": "9.33.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz",
"integrity": "sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -3594,9 +3594,9 @@
}
},
"node_modules/prettier": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz",
"integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==",
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
"bin": {
@ -3945,9 +3945,9 @@
}
},
"node_modules/typescript": {
"version": "5.7.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
"integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
"version": "5.8.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
"integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
"devOptional": true,
"license": "Apache-2.0",
"peer": true,

View File

@ -38,13 +38,9 @@ export default {
value: { required: true, type: [String, Number] }
},
emits: ['update:value'],
data() {
return {
active: false
}
return { active: false }
},
computed: {
option: {
get() {
@ -52,7 +48,6 @@ export default {
}
}
},
methods: {
deactivate() {
this.active = false

View File

@ -40,9 +40,9 @@ export default {
return [{ key: 'dialog.add.rss.processing', icon: 'web' }]
}
return [
{ key: 'dialog.add.rss.cancel', handler: this.cancel, icon: 'cancel' },
{ key: 'actions.cancel', handler: this.cancel, icon: 'cancel' },
{
key: 'dialog.add.rss.add',
key: 'actions.add',
disabled: this.disabled,
handler: this.add,
icon: 'playlist-plus'

View File

@ -41,19 +41,15 @@ export default {
return [{ key: 'dialog.add.stream.processing', icon: 'web' }]
}
return [
{ key: 'actions.cancel', handler: this.cancel, icon: 'cancel' },
{
key: 'dialog.add.stream.cancel',
handler: this.cancel,
icon: 'cancel'
},
{
key: 'dialog.add.stream.add',
key: 'actions.add',
disabled: this.disabled,
handler: this.add,
icon: 'playlist-plus'
},
{
key: 'dialog.add.stream.play',
key: 'actions.play',
disabled: this.disabled,
handler: this.play,
icon: 'play'

View File

@ -25,13 +25,11 @@ export default {
if (this.media_kind_resolved === 'podcast') {
if (this.item.data_kind === 'url') {
return [
{ key: 'dialog.album.mark-as-played', handler: this.mark_played },
{ key: 'dialog.album.remove-podcast', handler: this.remove_podcast }
{ key: 'actions.mark-as-played', handler: this.mark_played },
{ key: 'actions.remove-podcast', handler: this.remove_podcast }
]
}
return [
{ key: 'dialog.album.mark-as-played', handler: this.mark_played }
]
return [{ key: 'actions.mark-as-played', handler: this.mark_played }]
}
return []
},

View File

@ -34,17 +34,13 @@ export default {
computed: {
actions() {
return [
{ key: 'actions.add', handler: this.queue_add, icon: 'playlist-plus' },
{
key: 'dialog.playable.add',
handler: this.queue_add,
icon: 'playlist-plus'
},
{
key: 'dialog.playable.add-next',
key: 'actions.add-next',
handler: this.queue_add_next,
icon: 'playlist-play'
},
{ key: 'dialog.playable.play', handler: this.play, icon: 'play' }
{ key: 'actions.play', handler: this.play, icon: 'play' }
]
}
},

View File

@ -50,13 +50,9 @@ export default {
return [{ key: 'dialog.playlist.save.saving', icon: 'web' }]
}
return [
{ key: 'actions.cancel', handler: this.cancel, icon: 'cancel' },
{
key: 'dialog.playlist.save.cancel',
handler: this.cancel,
icon: 'cancel'
},
{
key: 'dialog.playlist.save.save',
key: 'actions.save',
disabled: this.disabled,
handler: this.save,
icon: 'download'

View File

@ -29,16 +29,8 @@ export default {
computed: {
actions() {
return [
{
key: this.$t('dialog.queue-item.remove'),
handler: this.remove,
icon: 'delete'
},
{
key: this.$t('dialog.queue-item.play'),
handler: this.play,
icon: 'play'
}
{ key: 'actions.remove', handler: this.remove, icon: 'delete' },
{ key: 'actions.play', handler: this.play, icon: 'play' }
]
},
playable() {

View File

@ -46,16 +46,8 @@ export default {
computed: {
actions() {
return [
{
key: 'dialog.remote-pairing.cancel',
handler: this.cancel,
icon: 'cancel'
},
{
key: 'dialog.remote-pairing.pair',
handler: this.pair,
icon: 'cellphone'
}
{ key: 'actions.cancel', handler: this.cancel, icon: 'cancel' },
{ key: 'actions.pair', handler: this.pair, icon: 'cellphone' }
]
},
pairing() {

View File

@ -22,8 +22,8 @@ export default {
return []
}
return this.item.play_count > 0
? [{ key: 'dialog.track.mark-as-new', handler: this.mark_new }]
: [{ key: 'dialog.track.mark-as-played', handler: this.mark_played }]
? [{ key: 'actions.mark-as-new', handler: this.mark_new }]
: [{ key: 'actions.mark-as-played', handler: this.mark_played }]
},
playable() {
return {

View File

@ -67,15 +67,11 @@ export default {
computed: {
actions() {
const actions = [
{
key: 'dialog.update.cancel',
handler: this.cancel,
icon: 'cancel'
}
{ key: 'actions.cancel', handler: this.cancel, icon: 'cancel' }
]
if (!this.libraryStore.updating) {
actions.push({
key: 'dialog.update.rescan',
key: 'actions.rescan',
handler: this.analyse,
icon: 'check'
})

View File

@ -1,4 +1,28 @@
{
"actions": {
"add": "Hinzufügen",
"add-next": "Als nächstes hinzufügen",
"add-stream": "Stream hinzufügen",
"cancel": "Abbrechen",
"clear": "Alle entfernen",
"edit": "Bearbeiten",
"filter": "Filter",
"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",
"pair": "Remote paaren",
"play": "Spielen",
"remove": "Entfernen",
"remove-podcast": "Entferne podcast",
"rescan": "Neu einlesen",
"save": "Speichern",
"send": "Senden",
"show-more": "Zeige mehr",
"shuffle": "Zufallswiedergabe"
},
"count": {
"albums": "{count} Album|{count} Album|{count} Alben",
"artists": "{count} Künstler",
@ -23,70 +47,43 @@
"dialog": {
"add": {
"rss": {
"add": "Hinzufügen",
"cancel": "Abbrechen",
"help": "Hinzufügen eines Podcasts führt zur Anlage einer RSS-Playlist, so kann OwnTone das Podcast-Abo verwalten.",
"placeholder": "https://url-to-rss",
"processing": "Verarbeite…",
"title": "Podcast hinzufügen"
},
"stream": {
"add": "Hinzufügen",
"cancel": "Abbrechen",
"loading": "Lade…",
"placeholder": "https://url-to-stream",
"play": "Spielen",
"processing": "Verarbeite…",
"title": "Stream hinzufügen"
}
},
"album": {
"mark-as-played": "Markiere als gespielt",
"remove-podcast": "Entferne podcast"
},
"playable": {
"add-next": "Als nächstes hinzufügen",
"add": "Hinzufügen",
"play": "Spielen"
},
"playlist": {
"add-next": "Als nächstes hinzufügen",
"add": "Hinzufügen",
"play": "Spielen",
"save": {
"cancel": "Abbrechen",
"playlist-name": "Playlistname",
"save": "Speichern",
"saving": "Speichere…",
"title": "Warteschlange als Playlist speichern"
}
},
"queue-item": {
"play": "Spielen",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"remove": "Entfernen"
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s"
},
"remote-pairing": {
"cancel": "Abbrechen",
"pair": "Remote paaren",
"pairing-code": "Pairing-Code",
"title": "Remote-Paarungs-Anfrage"
},
"track": {
"mark-as-new": "Markiere als neu",
"mark-as-played": "Markiere als gespielt",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"rating-value": "{rating} / 10"
},
"update": {
"all": "Alles neu einlesen",
"cancel": "Abbrechen",
"feeds": "Nur RSS-Feeds neu einlesen",
"info": "Suche nach neuen, gelöschten und veränderten Dateien",
"local": "Nur lokale Bibliothek neu einlesen",
"progress": "Bibliothek wird neu eingelesen…",
"rescan-metadata": "Metadata von unveränderten Dateien neu einlesen",
"rescan": "Neu einlesen",
"spotify": "Nur Spotify neu einlesen",
"title": "Bibliothek neu einlesen"
}
@ -100,9 +97,7 @@
},
"list": {
"albums": {
"info": "Diesen Podcast dauerhaft aus der Bibliothek löschen?{separator}(Damit wird auch die RSS-Playliste {name} gelöscht)",
"remove": "Entfernen",
"remove-podcast": "Entferne podcast"
"info": "Diesen Podcast dauerhaft aus der Bibliothek löschen?{separator}(Damit wird auch die RSS-Playliste {name} gelöscht)"
},
"spotify": {
"not-playable-track": "Track kann nicht gespielt werden",
@ -146,11 +141,7 @@
"update": "Neu einlesen",
"version": "Version {version}"
},
"album": {
"shuffle": "Zufallswiedergabe"
},
"albums": {
"filter": "Filter",
"hide-singles-help": "Nach Aktivierung werden keine Singles und Alben angezeigt, die nur in Playlisten enthalten sind.",
"hide-singles": "Nach Aktivierung werden keine Singles angezeigt",
"hide-spotify-help": "Nach Aktivierung werden keine Alben angezeigt, die nur in der Spotify-Bibliothek enthalten sind.",
@ -166,10 +157,8 @@
}
},
"artist": {
"filter": "Filter",
"hide-spotify-help": "Nach Aktivierung wird kein Inhalt angezeigt, der nur in der Spotify-Bibliothek enthalten ist.",
"hide-spotify": "Verbirgt Spotify-Inhalt",
"shuffle": "Zufallswiedergabe",
"sort": {
"title": "Sortieren",
"name": "Name",
@ -178,7 +167,6 @@
}
},
"artists": {
"filter": "Filter",
"sort": {
"title": "Sortieren",
"name": "Namen",
@ -191,15 +179,9 @@
"title": "Künstler"
},
"audiobooks": {
"album": {
"play": "Spielen"
},
"albums": {
"title": "Hörbücher"
},
"artist": {
"play": "Spielen"
},
"artists": {
"title": "Autoren"
},
@ -210,7 +192,6 @@
}
},
"composer": {
"shuffle": "Zufallswiedergabe",
"sort": {
"title": "Sortieren",
"name": "Name",
@ -221,11 +202,9 @@
"title": "Komponisten"
},
"files": {
"play": "Spielen",
"title": "Dateien"
},
"genre": {
"shuffle": "Zufallswiedergabe",
"sort": {
"title": "Sortieren",
"name": "Name",
@ -236,7 +215,6 @@
"title": "Genres"
},
"music": {
"show-more": "Zeige mehr",
"recently-added": {
"title": "Kürzlich hinzugefügt"
},
@ -257,33 +235,18 @@
"live": "Live",
"title": "Deine Playliste ist leer."
},
"playlist": {
"length": "{length} Tracks",
"shuffle": "Zufallswiedergabe"
},
"playlists": {
"title": "Playlisten"
},
"podcast": {
"cancel": "Abbrechen",
"play": "Spielen",
"remove": "Entfernen",
"remove-info": "Diesen Podcast dauerhaft aus der Bibliothek löschen?{separator}(Damit wird auch die RSS-Playliste {name} gelöscht)",
"remove-podcast": "Entferne podcast"
"remove-info": "Diesen Podcast dauerhaft aus der Bibliothek löschen?{separator}(Damit wird auch die RSS-Playliste {name} gelöscht)"
},
"podcasts": {
"add": "Hinzufügen",
"mark-all-played": "Alle abgespielten markieren",
"new-episodes": "Neue Episoden",
"title": "Podcasts",
"update": "Neu einlesen"
},
"queue": {
"add-stream": "Stream hinzufügen",
"clear": "Alle entfernen",
"edit": "Bearbeiten",
"hide-previous": "Vorherige verbergen",
"save": "Speichern",
"title": "Warteschlange"
},
"radio": {
@ -329,7 +292,6 @@
"pairing-code": "Pairing-Code",
"pairing-request": "Remote-Pairing-Anfrage von ",
"pairing": "Pairing Remote",
"send": "Senden",
"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",
@ -374,8 +336,6 @@
"reauthorize": "Bitte den Zugriff der Web-API durch setzen folgender Zugriffsrechte für OwnTone: ",
"title": "Spotify"
},
"login": "Einloggen",
"logout": "Ausloggen",
"password": "Passwort",
"username": "Benutzername"
},
@ -387,19 +347,9 @@
}
},
"spotify": {
"album": {
"shuffle": "Zufallswiedergabe"
},
"artist": {
"shuffle": "Zufallswiedergabe"
},
"music": {
"featured-playlists": "Ausgezeichnete Playlisten",
"new-releases": "Neuvorstellung",
"show-more": "Zeige mehr"
},
"playlist": {
"shuffle": "Zufallswiedergabe"
"new-releases": "Neuvorstellung"
},
"search": {
"albums": "Alben",

View File

@ -1,4 +1,28 @@
{
"actions": {
"add": "Add",
"add-next": "Add Next",
"add-stream": "Add stream",
"cancel": "Cancel",
"clear": "Clear",
"edit": "Edit",
"filter": "Filter",
"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",
"pair": "Pair Remote",
"play": "Play",
"remove": "Remove",
"remove-podcast": "Remove podcast",
"rescan": "Rescan",
"save": "Save",
"send": "Send",
"show-more": "Show more",
"shuffle": "Shuffle"
},
"count": {
"albums": "{count} album|{count} album|{count} albums",
"artists": "{count} artist|{count} artist|{count} artists",
@ -23,70 +47,43 @@
"dialog": {
"add": {
"rss": {
"add": "Add",
"cancel": "Cancel",
"help": "Adding a podcast includes creating an RSS playlist, that will allow OwnTone to manage the podcast subscription.",
"placeholder": "https://url-to-rss",
"processing": "Processing…",
"title": "Add podcast"
},
"stream": {
"add": "Add",
"cancel": "Cancel",
"loading": "Loading…",
"placeholder": "https://url-to-stream",
"play": "Play",
"processing": "Processing…",
"title": "Add stream"
}
},
"album": {
"mark-as-played": "Mark as played",
"remove-podcast": "Remove podcast"
},
"playable": {
"add-next": "Add Next",
"add": "Add",
"play": "Play"
},
"playlist": {
"add-next": "Add Next",
"add": "Add",
"play": "Play",
"save": {
"cancel": "Cancel",
"playlist-name": "Playlist name",
"save": "Save",
"saving": "Saving…",
"title": "Save queue to playlist"
}
},
"queue-item": {
"play": "Play",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:count.channels {'|'} {bitrate} kbit/s",
"remove": "Remove"
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:count.channels {'|'} {bitrate} kbit/s"
},
"remote-pairing": {
"cancel": "Cancel",
"pair": "Pair Remote",
"pairing-code": "Pairing code",
"title": "Remote pairing request"
},
"track": {
"mark-as-new": "Mark as new",
"mark-as-played": "Mark as played",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} @:count.channels {'|'} {bitrate} kbit/s",
"rating-value": "{rating} / 10"
},
"update": {
"all": "Update everything",
"cancel": "Cancel",
"feeds": "Only update RSS feeds",
"info": "Scan for new, deleted and modified files",
"local": "Only update local library",
"progress": "Library update in progress…",
"rescan-metadata": "Rescan metadata of unmodified files",
"rescan": "Rescan",
"spotify": "Only update Spotify",
"title": "Update library"
}
@ -100,9 +97,7 @@
},
"list": {
"albums": {
"info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})",
"remove": "Remove",
"remove-podcast": "Remove podcast"
"info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})"
},
"spotify": {
"not-playable-track": "Track is not playable",
@ -146,11 +141,7 @@
"update": "Update",
"version": "Version {version}"
},
"album": {
"shuffle": "Shuffle"
},
"albums": {
"filter": "Filter",
"hide-singles-help": "If active, hides singles and albums with tracks that only appear in playlists.",
"hide-singles": "Hide singles",
"hide-spotify-help": "If active, hides albums that only appear in your Spotify library.",
@ -166,10 +157,8 @@
}
},
"artist": {
"filter": "Filter",
"hide-spotify-help": "If active, hides the content only appearing in your Spotify library.",
"hide-spotify": "Hide the content from Spotify",
"shuffle": "Shuffle",
"sort": {
"title": "Sort",
"name": "Name",
@ -178,7 +167,6 @@
}
},
"artists": {
"filter": "Filter",
"sort": {
"title": "Sort",
"name": "Name",
@ -191,15 +179,9 @@
"title": "Artists"
},
"audiobooks": {
"album": {
"play": "Play"
},
"albums": {
"title": "Audiobooks"
},
"artist": {
"play": "Play"
},
"artists": {
"title": "Authors"
},
@ -210,7 +192,6 @@
}
},
"composer": {
"shuffle": "Shuffle",
"sort": {
"title": "Sort",
"name": "Name",
@ -221,11 +202,9 @@
"title": "Composers"
},
"files": {
"play": "Play",
"title": "Files"
},
"genre": {
"shuffle": "Shuffle",
"sort": {
"title": "Sort",
"name": "Name",
@ -236,7 +215,6 @@
"title": "Genres"
},
"music": {
"show-more": "Show more",
"recently-added": {
"title": "Recently added"
},
@ -257,33 +235,18 @@
"live": "Live",
"title": "Your play queue is empty"
},
"playlist": {
"length": "{length} tracks",
"shuffle": "Shuffle"
},
"playlists": {
"title": "Playlists"
},
"podcast": {
"cancel": "Cancel",
"play": "Play",
"remove": "Remove",
"remove-info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})",
"remove-podcast": "Remove podcast"
"remove-info": "Permanently remove this podcast from your library?{separator}(This will also remove the RSS playlist {name})"
},
"podcasts": {
"add": "Add",
"mark-all-played": "Mark All Played",
"new-episodes": "New Episodes",
"title": "Podcasts",
"update": "Update"
},
"queue": {
"add-stream": "Add stream",
"clear": "Clear",
"edit": "Edit",
"hide-previous": "Hide previous",
"save": "Save",
"title": "Queue"
},
"radio": {
@ -329,7 +292,6 @@
"pairing-code": "Pairing code",
"pairing-request": "Remote pairing request from ",
"pairing": "Remote Pairing",
"send": "Send",
"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",
@ -374,8 +336,6 @@
"reauthorize": "Please reauthorize Web API access to grant OwnTone the following additional access rights: ",
"title": "Spotify"
},
"login": "Login",
"logout": "Logout",
"password": "Password",
"username": "Username"
},
@ -387,19 +347,9 @@
}
},
"spotify": {
"album": {
"shuffle": "Shuffle"
},
"artist": {
"shuffle": "Shuffle"
},
"music": {
"featured-playlists": "Featured Playlists",
"new-releases": "New Releases",
"show-more": "Show More"
},
"playlist": {
"shuffle": "Shuffle"
"new-releases": "New Releases"
},
"search": {
"albums": "Albums",

View File

@ -1,4 +1,28 @@
{
"actions": {
"add": "Ajouter",
"add-next": "Ajouter ensuite",
"add-stream": "Ajouter un flux",
"cancel": "Annuler",
"clear": "Effacer",
"edit": "Éditer",
"filter": "Filtrer",
"login": "Se connecter",
"logout": "Se déconnecter",
"hide-previous": "Masquer lhistorique",
"mark-all-played": "Marquer comme lus",
"mark-as-new": "Marquer comme nouveau",
"mark-as-played": "Marquer comme lu",
"pair": "Jumeler la télécommande",
"play": "Lire",
"remove": "Supprimer",
"remove-podcast": "Supprimer le podcast",
"rescan": "Analyser",
"save": "Enregistrer",
"send": "Envoyer",
"show-more": "Afficher plus",
"shuffle": "Lecture aléatoire"
},
"count": {
"albums": "{count} album|{count} album|{count} albums",
"artists": "{count} artiste|{count} artiste|{count} artistes",
@ -23,70 +47,43 @@
"dialog": {
"add": {
"rss": {
"add": "Ajouter",
"cancel": "Annuler",
"help": "Lajout dun podcast inclut la création dune liste de lecture RSS, qui permettra à OwnTone de gérer labonnement au podcast.",
"placeholder": "https://url-du-flux-rss",
"processing": "Traitement en cours…",
"title": "Ajouter un podcast"
},
"stream": {
"add": "Ajouter",
"cancel": "Annuler",
"loading": "Chargement…",
"placeholder": "https://url-du-flux",
"play": "Lire",
"processing": "Traitement en cours…",
"title": "Ajouter un flux"
}
},
"album": {
"mark-as-played": "Marquer comme lu",
"remove-podcast": "Supprimer le podcast"
},
"playable": {
"add-next": "Ajouter ensuite",
"add": "Ajouter",
"play": "Lire"
},
"playlist": {
"add-next": "Ajouter ensuite",
"add": "Ajouter",
"play": "Lire",
"save": {
"cancel": "Annuler",
"playlist-name": "Nom de la liste de lecture",
"save": "Enregistrer",
"saving": "Enregistrement en cours…",
"title": "Enregistrer la file dattente dans une liste de lecture"
}
},
"queue-item": {
"play": "Lire",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"remove": "Supprimer"
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s"
},
"remote-pairing": {
"cancel": "Annuler",
"pair": "Jumeler la télécommande",
"pairing-code": "Code de jumelage",
"title": "Demande de jumelage de télécommande"
},
"track": {
"mark-as-new": "Marquer comme nouveau",
"mark-as-played": "Marquer comme lu",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"rating-value": "{rating} / 10"
},
"update": {
"all": "Tout actualiser",
"cancel": "Annuler",
"feeds": "Actualiser uniquement les flux RSS",
"info": "Recherche les fichiers ajoutés, supprimés et modifiés",
"local": "Actualiser uniquement la bibliothèque locale",
"progress": "Actualisation de la bibliothèque en cours…",
"rescan-metadata": "Analyser les métadonnées des fichiers non modifiés",
"rescan": "Analyser",
"spotify": "Actualiser uniquement Spotify",
"title": "Actualiser la bibliothèque"
}
@ -100,9 +97,7 @@
},
"list": {
"albums": {
"info": "Supprimer définitivement ce podcast de votre bibliothèque ?{separator}(Cela supprimera également la liste de lecture RSS {name})",
"remove": "Supprimer",
"remove-podcast": "Supprimer le podcast"
"info": "Supprimer définitivement ce podcast de votre bibliothèque ?{separator}(Cela supprimera également la liste de lecture RSS {name})"
},
"spotify": {
"not-playable-track": "La piste ne peut pas être lue",
@ -146,11 +141,7 @@
"update": "Actualiser",
"version": "Version {version}"
},
"album": {
"shuffle": "Lecture aléatoire"
},
"albums": {
"filter": "Filtrer",
"hide-singles-help": "Si actif, masque les singles et les albums dont les pistes napparaissent que dans les listes de lecture.",
"hide-singles": "Masquer les singles",
"hide-spotify-help": "Si actif, masque les albums qui napparaissent que dans votre bibliothèque Spotify.",
@ -166,10 +157,8 @@
}
},
"artist": {
"filter": "Filtrer",
"hide-spotify-help": "Si actif, masque le contenu qui napparaît que dans votre bibliothèque Spotify.",
"hide-spotify": "Masquer le contenu de Spotify",
"shuffle": "Lecture aléatoire",
"sort": {
"title": "Trier",
"name": "Nom",
@ -178,7 +167,6 @@
}
},
"artists": {
"filter": "Filtrer",
"sort": {
"title": "Trier",
"name": "Nom",
@ -191,15 +179,9 @@
"title": "Artistes"
},
"audiobooks": {
"album": {
"play": "Lire"
},
"albums": {
"title": "Livres audio"
},
"artist": {
"play": "Lire"
},
"artists": {
"title": "Auteurs"
},
@ -210,7 +192,6 @@
}
},
"composer": {
"shuffle": "Lecture aléatoire",
"sort": {
"title": "Trier",
"name": "Nom",
@ -221,11 +202,9 @@
"title": "Compositeurs"
},
"files": {
"play": "Lire",
"title": "Fichiers"
},
"genre": {
"shuffle": "Lecture aléatoire",
"sort": {
"title": "Trier",
"name": "Nom",
@ -236,7 +215,6 @@
"title": "Genres"
},
"music": {
"show-more": "Afficher plus",
"recently-added": {
"title": "Ajouts récents"
},
@ -257,33 +235,18 @@
"live": "En direct",
"title": "La file dattente est vide"
},
"playlist": {
"length": "{length} pistes",
"shuffle": "Lecture aléatoire"
},
"playlists": {
"title": "Listes de lecture"
},
"podcast": {
"cancel": "Annuler",
"play": "Lire",
"remove": "Supprimer",
"remove-info": "Supprimer ce podcast de manière permanente de la bibliothèque ?{separator}(Cela supprimera également la liste de lecture RSS {name})",
"remove-podcast": "Supprimer le podcast"
"remove-info": "Supprimer ce podcast de manière permanente de la bibliothèque ?{separator}(Cela supprimera également la liste de lecture RSS {name})"
},
"podcasts": {
"add": "Ajouter",
"mark-all-played": "Marquer comme lus",
"new-episodes": "Nouveaux épisodes",
"title": "Podcasts",
"update": "Actualiser"
},
"queue": {
"add-stream": "Ajouter un flux",
"clear": "Effacer",
"edit": "Éditer",
"hide-previous": "Masquer lhistorique",
"save": "Enregistrer",
"title": "File dattente"
},
"radio": {
@ -329,7 +292,6 @@
"pairing-code": "Code de jumelage",
"pairing-request": "Demande de jumelage de télécommande ",
"pairing": "Jumelage de télécommande",
"send": "Envoyer",
"speaker-pairing-info": "Si votre enceinte nécessite un jumelage, activez-la ci-dessous et entrez le code PIN quelle affiche.",
"speaker-pairing": "Jumelage denceinte et vérification dappareil",
"verification-code": "Code de vérification",
@ -374,8 +336,6 @@
"reauthorize": "Veuillez autoriser à nouveau laccès à lAPI pour accorder à OwnTone les droits daccès supplémentaires suivants :",
"title": "Spotify"
},
"login": "Se connecter",
"logout": "Se déconnecter",
"password": "Mot de passe",
"username": "Nom dutilisateur"
},
@ -387,19 +347,9 @@
}
},
"spotify": {
"album": {
"shuffle": "Lecture aléatoire"
},
"artist": {
"shuffle": "Lecture aléatoire"
},
"music": {
"featured-playlists": "Listes de lecture en vedette",
"new-releases": "Nouvelle sorties",
"show-more": "Afficher plus"
},
"playlist": {
"shuffle": "Lecture aléatoire"
"new-releases": "Nouvelle sorties"
},
"search": {
"albums": "Albums",

View File

@ -1,4 +1,28 @@
{
"actions": {
"add": "添加",
"add-next": "插播",
"add-stream": "添加流",
"cancel": "取消",
"clear": "清除",
"edit": "编辑",
"filter": "筛选",
"login": "登入",
"logout": "退出",
"hide-previous": "隐藏历史",
"mark-all-played": "全部标记为已播放",
"mark-as-new": "标记为最新",
"mark-as-played": "标记为已播放",
"pair": "遥控配对",
"play": "播放",
"remove": "移除",
"remove-podcast": "移除播客",
"rescan": "重新扫描",
"save": "保存",
"send": "发送",
"show-more": "显示更多",
"shuffle": "随机播放"
},
"count": {
"albums": "{count} 张专辑|{count} 张专辑",
"artists": "{count} 位艺人|{count} 位艺人",
@ -23,70 +47,43 @@
"dialog": {
"add": {
"rss": {
"add": "添加",
"cancel": "取消",
"help": "添加一个可生成播放列表的播客RSS链接这将允许OwnTone管理订阅",
"placeholder": "https://url-to-rss",
"processing": "处理中…",
"title": "添加播客"
},
"stream": {
"add": "添加",
"cancel": "取消",
"loading": "加载中…",
"placeholder": "https://url-to-stream",
"play": "播放",
"processing": "处理中…",
"title": "添加流"
}
},
"album": {
"mark-as-played": "标记为已播",
"remove-podcast": "移除播客"
},
"playable": {
"add-next": "插播",
"add": "添加",
"play": "播放"
},
"playlist": {
"add-next": "插播",
"add": "添加",
"play": "播放",
"save": {
"cancel": "取消",
"playlist-name": "播放列表名称",
"save": "保存",
"saving": "保存中…",
"title": "保存播放清单到列表"
}
},
"queue-item": {
"play": "播放",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"remove": "移除"
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s"
},
"remote-pairing": {
"cancel": "取消",
"pair": "遥控配对",
"pairing-code": "配对码",
"title": "请求遥控配对"
},
"track": {
"mark-as-new": "标记为最新",
"mark-as-played": "标记为已播放",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"rating-value": "{rating} / 10"
},
"update": {
"all": "更新所有内容",
"cancel": "取消",
"feeds": "仅更新RSS订阅内容",
"info": "扫描新的、删除的和修改的文件",
"local": "仅更新本地资料库",
"progress": "正在更新本地资料库…",
"rescan-metadata": "重新扫描未修改文件的元数据",
"rescan": "重新扫描",
"spotify": "仅更新Spotify",
"title": "更新资料库"
}
@ -100,9 +97,7 @@
},
"list": {
"albums": {
"info": "从资料库中永久移除该播客吗?{separator}(这也将移除RSS播放列表 {name})",
"remove": "移除",
"remove-podcast": "移除播客"
"info": "从资料库中永久移除该播客吗?{separator}(这也将移除RSS播放列表 {name})"
},
"spotify": {
"not-playable-track": "曲目无法播放",
@ -146,11 +141,7 @@
"update": "更新",
"version": "版本 {version}"
},
"album": {
"shuffle": "随机播放"
},
"albums": {
"filter": "筛选",
"hide-singles-help": "如果激活,将隐藏仅在播放列表出现的单曲和专辑",
"hide-singles": "隐藏单曲",
"hide-spotify-help": "如果激活将隐藏仅在Spotify资料库出现的专辑",
@ -166,10 +157,8 @@
}
},
"artist": {
"filter": "筛选",
"hide-spotify-help": "如果激活将隐藏只出现在Spotify库中的内容",
"hide-spotify": "隐藏来自Spotify的内容",
"shuffle": "随机播放",
"sort": {
"title": "分类",
"name": "名称",
@ -178,7 +167,6 @@
}
},
"artists": {
"filter": "筛选",
"sort": {
"title": "分类",
"name": "名称",
@ -191,15 +179,9 @@
"title": "艺人"
},
"audiobooks": {
"album": {
"play": "播放"
},
"albums": {
"title": "有声读物"
},
"artist": {
"play": "播放"
},
"artists": {
"title": "作者"
},
@ -210,7 +192,6 @@
}
},
"composer": {
"shuffle": "随机播放",
"sort": {
"title": "分类",
"name": "名称",
@ -221,11 +202,9 @@
"title": "作曲家"
},
"files": {
"play": "播放",
"title": "文件"
},
"genre": {
"shuffle": "随机播放",
"sort": {
"title": "分类",
"name": "名称",
@ -236,7 +215,6 @@
"title": "流派"
},
"music": {
"show-more": "显示更多",
"recently-added": {
"title": "最近添加"
},
@ -257,33 +235,18 @@
"live": "直播",
"title": "播放清单是空的"
},
"playlist": {
"length": "{length} 曲目",
"shuffle": "随机播放"
},
"playlists": {
"title": "播放列表"
},
"podcast": {
"cancel": "取消",
"play": "播放",
"remove": "移除",
"remove-info": "从资料库中永久移除该播客?{separator}(这也将移除该播客RSS列表 {name})",
"remove-podcast": "移除播客"
"remove-info": "从资料库中永久移除该播客?{separator}(这也将移除该播客RSS列表 {name})"
},
"podcasts": {
"add": "添加",
"mark-all-played": "全部标记为已播放",
"new-episodes": "最新单集",
"title": "播客",
"update": "更新"
},
"queue": {
"add-stream": "添加流",
"clear": "清除",
"edit": "编辑",
"hide-previous": "隐藏历史",
"save": "保存",
"title": "清单"
},
"radio": {
@ -329,7 +292,6 @@
"pairing-code": "配对代码",
"pairing-request": "远程配对请求来自于 ",
"pairing": "遥控配对",
"send": "发送",
"speaker-pairing-info": "如果您的扬声器需要配对,请在下面输入它显示的 PIN以激活",
"speaker-pairing": "扬声器配对和设备验证",
"verification-code": "验证码",
@ -374,8 +336,6 @@
"reauthorize": "请重新授权 Web API 访问权限,以授予 OwnTone 以下附加访问权限:",
"title": "Spotify"
},
"login": "登入",
"logout": "退出",
"password": "密码",
"username": "用户名"
},
@ -387,19 +347,9 @@
}
},
"spotify": {
"album": {
"shuffle": "随机播放"
},
"artist": {
"shuffle": "随机播放"
},
"music": {
"featured-playlists": "特色列表",
"new-releases": "最新发行",
"show-more": "显示更多"
},
"playlist": {
"shuffle": "随机播放"
"new-releases": "最新发行"
},
"search": {
"albums": "专辑",

View File

@ -1,4 +1,28 @@
{
"actions": {
"add": "新增",
"add-next": "插播",
"add-stream": "新增串流",
"cancel": "取消",
"clear": "清除",
"edit": "編輯",
"filter": "篩選",
"login": "登入",
"logout": "退出",
"hide-previous": "隱藏歷史",
"mark-all-played": "全部標記為已播放",
"mark-as-new": "標記為最新",
"mark-as-played": "標記為已播放",
"pair": "遙控配對",
"play": "播放",
"remove": "移除",
"remove-podcast": "移除Podcast",
"rescan": "重新掃描",
"save": "儲存",
"send": "發送",
"show-more": "顯示更多",
"shuffle": "隨機播放"
},
"count": {
"albums": "{count} 張專輯|{count} 張專輯",
"artists": "{count} 位藝人|{count} 位藝人",
@ -23,70 +47,43 @@
"dialog": {
"add": {
"rss": {
"add": "新增",
"cancel": "取消",
"help": "新增一個可生成播放列表的Podcast RSS鏈接這將允許OwnTone管理訂閱",
"placeholder": "https://url-to-rss",
"processing": "處理中…",
"title": "新增Podcast"
},
"stream": {
"add": "新增",
"cancel": "取消",
"loading": "載入中…",
"placeholder": "https://url-to-stream",
"play": "播放",
"processing": "處理中…",
"title": "新增串流"
}
},
"album": {
"mark-as-played": "標記為已播",
"remove-podcast": "移除Podcast"
},
"playable": {
"add-next": "插播",
"add": "新增",
"play": "播放"
},
"playlist": {
"add-next": "插播",
"add": "新增",
"play": "播放",
"save": {
"cancel": "取消",
"playlist-name": "播放列表名稱",
"save": "儲存",
"saving": "儲存中…",
"title": "儲存播放清單到列表"
}
},
"queue-item": {
"play": "播放",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"remove": "移除"
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s"
},
"remote-pairing": {
"cancel": "取消",
"pair": "遙控配對",
"pairing-code": "配對碼",
"title": "請求遙控配對"
},
"track": {
"mark-as-new": "標記為最新",
"mark-as-played": "標記為已播放",
"quality-value": "{format} {'|'} {samplerate} Hz {'|'} {channels} {'|'} {bitrate} kbit/s",
"rating-value": "{rating} / 10"
},
"update": {
"all": "更新所有內容",
"cancel": "取消",
"feeds": "僅更新RSS訂閱內容",
"info": "掃描新的、刪除的和修改的文件",
"local": "僅更新本地資料庫",
"progress": "正在更新本地資料庫…",
"rescan-metadata": "重新掃描未修改文件的中繼資料",
"rescan": "重新掃描",
"spotify": "僅更新Spotify",
"title": "更新資料庫"
}
@ -100,9 +97,7 @@
},
"list": {
"albums": {
"info": "從資料庫中永久移除該Podcast嗎{separator}(這也將移除RSS播放列表 {name})",
"remove": "移除",
"remove-podcast": "移除Podcast"
"info": "從資料庫中永久移除該Podcast嗎{separator}(這也將移除RSS播放列表 {name})"
},
"spotify": {
"not-playable-track": "曲目無法播放",
@ -146,11 +141,7 @@
"update": "更新",
"version": "版本 {version}"
},
"album": {
"shuffle": "隨機播放"
},
"albums": {
"filter": "篩選",
"hide-singles-help": "如果啓用,將隱藏僅在播放列表出現的單曲和專輯",
"hide-singles": "隱藏單曲",
"hide-spotify-help": "如果啓用將隱藏僅在Spotify資料庫出現的專輯",
@ -166,10 +157,8 @@
}
},
"artist": {
"filter": "篩選",
"hide-spotify-help": "如果啓用將隱藏只出現在Spotify庫中的內容",
"hide-spotify": "隱藏來自Spotify的內容",
"shuffle": "隨機播放",
"sort": {
"title": "分類",
"name": "名稱",
@ -178,7 +167,6 @@
}
},
"artists": {
"filter": "篩選",
"sort": {
"title": "分類",
"name": "名稱",
@ -191,15 +179,9 @@
"title": "藝人"
},
"audiobooks": {
"album": {
"play": "播放"
},
"albums": {
"title": "有聲書"
},
"artist": {
"play": "播放"
},
"artists": {
"title": "作者"
},
@ -210,7 +192,6 @@
}
},
"composer": {
"shuffle": "隨機播放",
"sort": {
"title": "分類",
"name": "名稱",
@ -221,11 +202,9 @@
"title": "作曲家"
},
"files": {
"play": "播放",
"title": "文件"
},
"genre": {
"shuffle": "隨機播放",
"sort": {
"title": "分類",
"name": "名稱",
@ -236,7 +215,6 @@
"title": "音樂類型"
},
"music": {
"show-more": "顯示更多",
"recently-added": {
"title": "最近新增"
},
@ -257,33 +235,18 @@
"live": "直播",
"title": "播放清單是空的"
},
"playlist": {
"length": "{length} 曲目",
"shuffle": "隨機播放"
},
"playlists": {
"title": "播放列表"
},
"podcast": {
"cancel": "取消",
"play": "播放",
"remove": "移除",
"remove-info": "從資料庫中永久移除該Podcast{separator}(這也將移除該PodcastRSS列表 {name})",
"remove-podcast": "移除Podcast"
"remove-info": "從資料庫中永久移除該Podcast{separator}(這也將移除該PodcastRSS列表 {name})"
},
"podcasts": {
"add": "新增",
"mark-all-played": "全部標記為已播放",
"new-episodes": "最新單集",
"title": "Podcast",
"update": "更新"
},
"queue": {
"add-stream": "新增串流",
"clear": "清除",
"edit": "編輯",
"hide-previous": "隱藏歷史",
"save": "儲存",
"title": "清單"
},
"radio": {
@ -329,7 +292,6 @@
"pairing-code": "配對代碼",
"pairing-request": "遠程配對請求來自於 ",
"pairing": "遙控配對",
"send": "發送",
"speaker-pairing-info": "如果您的揚聲器需要配對,請在下面輸入它顯示的 PIN以啓用",
"speaker-pairing": "揚聲器配對和設備驗證",
"verification-code": "驗證碼",
@ -374,8 +336,6 @@
"reauthorize": "請重新授權 Web API 訪問權限,以授予 OwnTone 以下附加訪問權限:",
"title": "Spotify"
},
"login": "登入",
"logout": "退出",
"password": "密碼",
"username": "用戶名"
},
@ -387,19 +347,9 @@
}
},
"spotify": {
"album": {
"shuffle": "隨機播放"
},
"artist": {
"shuffle": "隨機播放"
},
"music": {
"featured-playlists": "特色列表",
"new-releases": "最新發行",
"show-more": "顯示更多"
},
"playlist": {
"shuffle": "隨機播放"
"new-releases": "最新發行"
},
"search": {
"albums": "專輯",

View File

@ -12,11 +12,7 @@
/>
<div class="buttons is-centered-mobile mt-5">
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.album.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
<control-button
:button="{ handler: showDetails, icon: 'dots-horizontal' }"

View File

@ -12,11 +12,7 @@
/>
<div class="buttons is-centered-mobile mt-5">
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.spotify.album.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
<control-button
:button="{ handler: showDetails, icon: 'dots-horizontal' }"

View File

@ -40,11 +40,7 @@
:button="{ handler: showDetails, icon: 'dots-horizontal' }"
/>
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.artist.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
</template>
<template #content>

View File

@ -9,11 +9,7 @@
:button="{ handler: showDetails, icon: 'dots-horizontal' }"
/>
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.spotify.artist.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
</template>
<template #content>

View File

@ -41,11 +41,7 @@
:button="{ handler: showDetails, icon: 'dots-horizontal' }"
/>
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.artist.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
</template>
<template #content>

View File

@ -9,7 +9,7 @@
:button="{ handler: showDetails, icon: 'dots-horizontal' }"
/>
<control-button
:button="{ handler: play, icon: 'play', key: 'page.files.play' }"
:button="{ handler: play, icon: 'play', key: 'actions.play' }"
/>
</template>
<template #content>

View File

@ -12,11 +12,7 @@
:button="{ handler: showDetails, icon: 'dots-horizontal' }"
/>
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.genre.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
</template>
<template #content>

View File

@ -24,11 +24,7 @@
:button="{ handler: showDetails, icon: 'dots-horizontal' }"
/>
<control-button
:button="{
handler: play,
icon: 'shuffle',
key: 'page.genre.shuffle'
}"
:button="{ handler: play, icon: 'shuffle', key: 'actions.shuffle' }"
/>
</template>
<template #content>

View File

@ -12,7 +12,7 @@
:button="{
handler: play,
icon: 'shuffle',
key: 'page.playlist.shuffle'
key: 'actions.shuffle'
}"
:disabled="tracks.count === 0"
/>

View File

@ -12,7 +12,7 @@
:button="{
handler: play,
icon: 'shuffle',
key: 'page.spotify.playlist.shuffle'
key: 'actions.shuffle'
}"
:disabled="playlist.tracks.total === 0"
/>

View File

@ -12,7 +12,7 @@
/>
<div class="buttons is-centered-mobile mt-5">
<control-button
:button="{ handler: play, icon: 'play', key: 'page.podcast.play' }"
:button="{ handler: play, icon: 'play', key: 'actions.play' }"
/>
<control-button
:button="{ handler: showDetails, icon: 'dots-horizontal' }"

View File

@ -9,7 +9,7 @@
:button="{
handler: markAllAsPlayed,
icon: 'pencil',
key: 'page.podcasts.mark-all-played'
key: 'actions.mark-all-played'
}"
/>
</template>
@ -31,14 +31,14 @@
:button="{
handler: updateRss,
icon: 'refresh',
key: 'page.podcasts.update'
key: 'actions.update'
}"
/>
<control-button
:button="{
handler: 'openAddPodcastDialog',
icon: 'rss',
key: 'page.podcasts.add'
key: 'actions.add'
}"
/>
</template>

View File

@ -9,7 +9,7 @@
:button="{
handler: update_show_next_items,
icon: 'eye-off-outline',
key: 'page.queue.hide-previous'
key: 'actions.hide-previous'
}"
:class="{ 'is-dark': uiStore.show_only_next_items }"
/>
@ -17,23 +17,23 @@
:button="{
handler: open_add_stream_dialog,
icon: 'web',
key: 'page.queue.add-stream'
key: 'actions.add-stream'
}"
/>
<control-button
:button="{
handler: toggleEdit,
icon: 'pencil',
key: 'page.queue.edit',
disabled: queue_items.length === 0
key: 'actions.edit'
}"
:class="{ 'is-dark': edit_mode }"
:disabled="queue_items.length === 0"
/>
<control-button
:button="{
handler: queue_clear,
icon: 'delete-empty',
key: 'page.queue.clear'
key: 'actions.clear'
}"
:disabled="queue_items.length === 0"
/>
@ -42,7 +42,7 @@
:button="{
handler: save_dialog,
icon: 'download',
key: 'page.queue.save'
key: 'actions.save'
}"
:disabled="queue_items.length === 0"
/>

View File

@ -28,7 +28,7 @@
<button
class="button"
type="submit"
v-text="$t('page.settings.devices.send')"
v-text="$t('actions.send')"
/>
</div>
</div>