mirror of
https://github.com/jeffvli/feishin.git
synced 2026-08-09 22:03:09 +02:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 988d1bb544 | |||
| 976b9b9d2b | |||
| 7daf5a3a92 | |||
| 581acbe478 |
+1
-1
@@ -165,7 +165,7 @@
|
||||
"concurrently": "^9.2.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"electron": "^41.7.1",
|
||||
"electron-builder": "^26.15.5",
|
||||
"electron-builder": "^26.15.7",
|
||||
"electron-devtools-installer": "^4.0.0",
|
||||
"electron-vite": "^4.0.1",
|
||||
"eslint": "^9.39.4",
|
||||
|
||||
Generated
+22
-22
@@ -287,8 +287,8 @@ importers:
|
||||
specifier: ^41.7.1
|
||||
version: 41.7.2
|
||||
electron-builder:
|
||||
specifier: ^26.15.5
|
||||
version: 26.15.5(electron-builder-squirrel-windows@26.15.5)
|
||||
specifier: ^26.15.7
|
||||
version: 26.15.7(electron-builder-squirrel-windows@26.15.7)
|
||||
electron-devtools-installer:
|
||||
specifier: ^4.0.0
|
||||
version: 4.0.0
|
||||
@@ -2356,12 +2356,12 @@ packages:
|
||||
anynum@1.0.0:
|
||||
resolution: {integrity: sha512-xjR9/zBVnUOP6ztMIIgShjsxui80nQUQH+5xJnvrYLs+90bF25/KJqaAi8mk+B4RDtX1Nspi6fmp4YTEts8SfA==}
|
||||
|
||||
app-builder-lib@26.15.5:
|
||||
resolution: {integrity: sha512-CJdzqy4YXQQdn+ivw1ssuY4yBTgVaBtniB2Dnjc6JsM9mbXoZ4shbuuysjenZloMOEIKEqkuRxltNQyG/NP/pA==}
|
||||
app-builder-lib@26.15.7:
|
||||
resolution: {integrity: sha512-C7APoYISPExUmrEntNhDpz9Tccb4uWuEDfLaC0WPPc7/pwzz0WZGznCz/ycPfkkzw6tKOalceD8g6TgHmVz1QA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
peerDependencies:
|
||||
dmg-builder: 26.15.5
|
||||
electron-builder-squirrel-windows: 26.15.5
|
||||
dmg-builder: 26.15.7
|
||||
electron-builder-squirrel-windows: 26.15.7
|
||||
|
||||
argparse@2.0.1:
|
||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
||||
@@ -2889,8 +2889,8 @@ packages:
|
||||
discord-api-types@0.38.48:
|
||||
resolution: {integrity: sha512-WFUE/2o0lBlLeCQonQ+Pu2RqHAqbytBJ2RlXR91gzk05InSS6k9ShzzLYoymrA4c2oRgRKGE7/VqQJNNdGWSxQ==}
|
||||
|
||||
dmg-builder@26.15.5:
|
||||
resolution: {integrity: sha512-Ts58Bs9QVCPhkhvkz9V1JwVoIwmbA06szZTM7W/ihzoDjHlf7KJo1Ci9nFknoFUC8uDeYgtbu5HW8eAeZ5qeSA==}
|
||||
dmg-builder@26.15.7:
|
||||
resolution: {integrity: sha512-rfo1YyAWO0L3cZLKCqKQiLYbW6ZXebRUfK0kWp4oXxO7dDFLrf7alRkWImNuXvZVQhs6Idzy++cwOk8I+xPDhw==}
|
||||
|
||||
doctrine@2.1.0:
|
||||
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
|
||||
@@ -2954,11 +2954,11 @@ packages:
|
||||
engines: {node: '>=0.10.0'}
|
||||
hasBin: true
|
||||
|
||||
electron-builder-squirrel-windows@26.15.5:
|
||||
resolution: {integrity: sha512-+7D6F08V26p8dLLu2rK4MReQR50lA5W6hEgtNmjm6xbLrAGCJSWFbQEca6oNRKnFGlfHGS1TfgHLmOL3HX+6DA==}
|
||||
electron-builder-squirrel-windows@26.15.7:
|
||||
resolution: {integrity: sha512-B4uvn2NzFSuf084udWqugludFull6CRJiWe2dLzMnZLl6G5hdAGk0fsBMGlBSpKjvQCJn8IPc+S7OnJ+GXqwLA==}
|
||||
|
||||
electron-builder@26.15.5:
|
||||
resolution: {integrity: sha512-ii+Befxc8diyoQv9iUchEzBAvFef4vrY/l2NID1wdZL2WCTLe80sYQz7Alc+yswWPpgowUdpsI5HtomE2Lj/Mg==}
|
||||
electron-builder@26.15.7:
|
||||
resolution: {integrity: sha512-DBpaNzxsPs1BvEblzFoNriSbzsBqDCy/gseIngeEhYzQG1IxfB7Hvc2tBBVmpWE2BTQGP9J1RrAvDT+Vc/uAxg==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
hasBin: true
|
||||
|
||||
@@ -7782,7 +7782,7 @@ snapshots:
|
||||
|
||||
anynum@1.0.0: {}
|
||||
|
||||
app-builder-lib@26.15.5(dmg-builder@26.15.5)(electron-builder-squirrel-windows@26.15.5):
|
||||
app-builder-lib@26.15.7(dmg-builder@26.15.7)(electron-builder-squirrel-windows@26.15.7):
|
||||
dependencies:
|
||||
'@electron/asar': 3.4.1
|
||||
'@electron/fuses': 1.8.0
|
||||
@@ -7803,11 +7803,11 @@ snapshots:
|
||||
chromium-pickle-js: 0.2.0
|
||||
ci-info: 4.3.1
|
||||
debug: 4.4.3
|
||||
dmg-builder: 26.15.5(electron-builder-squirrel-windows@26.15.5)
|
||||
dmg-builder: 26.15.7(electron-builder-squirrel-windows@26.15.7)
|
||||
dotenv: 16.6.1
|
||||
dotenv-expand: 11.0.7
|
||||
ejs: 3.1.10
|
||||
electron-builder-squirrel-windows: 26.15.5(dmg-builder@26.15.5)
|
||||
electron-builder-squirrel-windows: 26.15.7(dmg-builder@26.15.7)
|
||||
electron-publish: 26.15.3
|
||||
fs-extra: 10.1.0
|
||||
hosted-git-info: 4.1.0
|
||||
@@ -8416,9 +8416,9 @@ snapshots:
|
||||
|
||||
discord-api-types@0.38.48: {}
|
||||
|
||||
dmg-builder@26.15.5(electron-builder-squirrel-windows@26.15.5):
|
||||
dmg-builder@26.15.7(electron-builder-squirrel-windows@26.15.7):
|
||||
dependencies:
|
||||
app-builder-lib: 26.15.5(dmg-builder@26.15.5)(electron-builder-squirrel-windows@26.15.5)
|
||||
app-builder-lib: 26.15.7(dmg-builder@26.15.7)(electron-builder-squirrel-windows@26.15.7)
|
||||
builder-util: 26.15.3
|
||||
fs-extra: 10.1.0
|
||||
js-yaml: 4.2.0
|
||||
@@ -8491,23 +8491,23 @@ snapshots:
|
||||
dependencies:
|
||||
jake: 10.9.4
|
||||
|
||||
electron-builder-squirrel-windows@26.15.5(dmg-builder@26.15.5):
|
||||
electron-builder-squirrel-windows@26.15.7(dmg-builder@26.15.7):
|
||||
dependencies:
|
||||
app-builder-lib: 26.15.5(dmg-builder@26.15.5)(electron-builder-squirrel-windows@26.15.5)
|
||||
app-builder-lib: 26.15.7(dmg-builder@26.15.7)(electron-builder-squirrel-windows@26.15.7)
|
||||
builder-util: 26.15.3
|
||||
electron-winstaller: 5.4.0
|
||||
transitivePeerDependencies:
|
||||
- dmg-builder
|
||||
- supports-color
|
||||
|
||||
electron-builder@26.15.5(electron-builder-squirrel-windows@26.15.5):
|
||||
electron-builder@26.15.7(electron-builder-squirrel-windows@26.15.7):
|
||||
dependencies:
|
||||
app-builder-lib: 26.15.5(dmg-builder@26.15.5)(electron-builder-squirrel-windows@26.15.5)
|
||||
app-builder-lib: 26.15.7(dmg-builder@26.15.7)(electron-builder-squirrel-windows@26.15.7)
|
||||
builder-util: 26.15.3
|
||||
builder-util-runtime: 9.7.0
|
||||
chalk: 4.1.2
|
||||
ci-info: 4.4.0
|
||||
dmg-builder: 26.15.5(electron-builder-squirrel-windows@26.15.5)
|
||||
dmg-builder: 26.15.7(electron-builder-squirrel-windows@26.15.7)
|
||||
fs-extra: 10.1.0
|
||||
lazy-val: 1.0.5
|
||||
simple-update-notifier: 2.0.0
|
||||
|
||||
@@ -519,7 +519,12 @@
|
||||
"customThemeWarnings_description": "Následující motivy byly načteny, ale některé hodnoty byly neplatné a byly ignorovány.",
|
||||
"customThemeWarnings": "Varování",
|
||||
"customThemes_description": "Přesuňte soubory motivu .json pro přidání vlastních motivů. Budou načteny automaticky kdykoli přidáte, upravíte nebo odstraníte soubor.",
|
||||
"customThemes": "Vlastní motivy"
|
||||
"customThemes": "Vlastní motivy",
|
||||
"confirmQueueChanges": "Potvrdit změny ve frontě",
|
||||
"confirmQueueChanges_description": "Zeptat se na potvrzení před vymazáním aktuální fronty",
|
||||
"shareExpiration_description": "Jak daleko do budoucnosti ve výchozím nastavení vyprší nové odkazy ke sdílení. Vymažte datum v dialogu sdílení pro použití výchozí hodnoty serveru",
|
||||
"shareExpiration": "Výchozí vypršení sdílení",
|
||||
"shareExpirationUseServerDefault": "Použít výchozí dobu vypršení serveru"
|
||||
},
|
||||
"action": {
|
||||
"editPlaylist": "Upravit $t(entity.playlist, {\"count\": 1})",
|
||||
@@ -786,7 +791,9 @@
|
||||
"sampleRate": "$t(common.sampleRate)",
|
||||
"composer": "Skladatel",
|
||||
"titleArtist": "$t(common.title) (umělec)",
|
||||
"albumGroup": "Skupina alb"
|
||||
"albumGroup": "Skupina alb",
|
||||
"date": "Datum",
|
||||
"releaseYear": "Rok vydání"
|
||||
}
|
||||
},
|
||||
"column": {
|
||||
@@ -796,7 +803,7 @@
|
||||
"favorite": "Oblíbené",
|
||||
"playCount": "Přehrání",
|
||||
"albumCount": "Alba",
|
||||
"releaseYear": "Rok",
|
||||
"releaseYear": "Rok vydání",
|
||||
"lastPlayed": "Naposledy přehráno",
|
||||
"biography": "Biografie",
|
||||
"releaseDate": "Datum vydání",
|
||||
@@ -816,7 +823,9 @@
|
||||
"codec": "Kodek",
|
||||
"owner": "Majitel",
|
||||
"bitDepth": "Bitová hloubka",
|
||||
"sampleRate": "Vzorkovací frekvence"
|
||||
"sampleRate": "Vzorkovací frekvence",
|
||||
"date": "Datum",
|
||||
"year": "Rok"
|
||||
}
|
||||
},
|
||||
"error": {
|
||||
@@ -899,7 +908,9 @@
|
||||
"explicitStatus": "$t(common.explicitStatus)",
|
||||
"sortName": "Název v řazení",
|
||||
"matchAnd": "A",
|
||||
"matchOr": "Nebo"
|
||||
"matchOr": "Nebo",
|
||||
"date": "Datum",
|
||||
"year": "Rok"
|
||||
},
|
||||
"page": {
|
||||
"sidebar": {
|
||||
@@ -1054,7 +1065,8 @@
|
||||
"playerFilters": "Filtry přehrávače",
|
||||
"logger": "Protokol",
|
||||
"lyricsDisplay": "Zobrazení textů",
|
||||
"lyricsTranslation": "Překlad textů"
|
||||
"lyricsTranslation": "Překlad textů",
|
||||
"sharing": "Sdílení"
|
||||
},
|
||||
"albumArtistList": {
|
||||
"title": "$t(entity.albumArtist, {\"count\": 2})"
|
||||
@@ -1234,7 +1246,9 @@
|
||||
"setExpiration": "Nastavit vypršení",
|
||||
"createFailed": "Nepodařilo se vytvořit sdílení (je sdílení povoleno?)",
|
||||
"copyToClipboard": "Zkopírovat do schránky: Ctrl+C, enter",
|
||||
"successMustClick": "Sdílení úspěšně vytvořeno. klikněte sem pro otevření"
|
||||
"successMustClick": "Sdílení úspěšně vytvořeno. klikněte sem pro otevření",
|
||||
"setExpiration_description": "Ponechte prázdné pro použití výchozího vypršení serveru",
|
||||
"setExpiration_serverDefault": "Podle serveru"
|
||||
},
|
||||
"privateMode": {
|
||||
"enabled": "Soukromý režim povolen, stav přehrávání je nyní skryt před externími integracemi",
|
||||
@@ -1281,6 +1295,10 @@
|
||||
},
|
||||
"createPrefilledPlaylist": {
|
||||
"title": "Vytvořit $t(entity.playlist, {\"count\": 1}) z vybraných skladeb"
|
||||
},
|
||||
"queueChangeConfirmation": {
|
||||
"title": "Vymazat aktuální frontu?",
|
||||
"description": "Toto odstraní všechny položky z aktuální fronty."
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
@@ -1402,7 +1420,14 @@
|
||||
"minuteShort": "min.",
|
||||
"secondShort": "s",
|
||||
"hourShort": "h.",
|
||||
"dayShort": "d."
|
||||
"dayShort": "d.",
|
||||
"secondLong": "Sekunda",
|
||||
"minuteLong": "Minuta",
|
||||
"hourLong": "Hodina",
|
||||
"dayLong": "Den",
|
||||
"weekLong": "Týden",
|
||||
"monthLong": "Měsíc",
|
||||
"yearLong": "Rok"
|
||||
},
|
||||
"visualizer": {
|
||||
"visualizerType": "Typ vizualizéru",
|
||||
|
||||
+136
-42
@@ -24,11 +24,11 @@
|
||||
"createPlaylist": "Sortu $t(entity.playlist, {\"count\": 1})",
|
||||
"deletePlaylist": "Ezabatu $t(entity.playlist, {\"count\": 1})",
|
||||
"addToFavorites": "Gehitu gogokoetara",
|
||||
"addToPlaylist": "Gehitu $t(entity.playlist, {\"count\": 1})ra",
|
||||
"addToPlaylist": "Gehitu erreprodukzio zerrendara",
|
||||
"createRadioStation": "Sortu $t(entity.radioStation, {\"count\": 1})",
|
||||
"deleteRadioStation": "Ezabatu $t(entity.radioStation, {\"count\": 1})",
|
||||
"viewMore": "Ikusi gehiago",
|
||||
"shuffle": "Nahastu",
|
||||
"shuffle": "Auzazkoa",
|
||||
"selectAll": "Aukeratu guztiak",
|
||||
"downloadStarted": "{{count}} elementuren deskarga hasi da",
|
||||
"addOrRemoveFromSelection": "Gehitu edo kendu hautapenetik",
|
||||
@@ -38,7 +38,13 @@
|
||||
"moveItems": "Elementuak mugitu",
|
||||
"openApplicationDirectory": "Ireki aplikazioaren direktorioa",
|
||||
"goToCurrent": "Joan uneko elementura",
|
||||
"createPlaylistFromQueue": "Sortu $t(entity.playlist, {\"count\": 1}) ilaratik"
|
||||
"createPlaylistFromQueue": "Sortu $t(entity.playlist, {\"count\": 1}) ilaratik",
|
||||
"collapseAllFolders": "Bildu karpeta guztiak",
|
||||
"expandAllFolders": "Erakutsi karpeta guztiak",
|
||||
"moveUp": "Mugitu gorantz",
|
||||
"moveDown": "Mugitu beherantz",
|
||||
"holdToMoveToTop": "Sakatu eta eutsi gora mugitzeko",
|
||||
"holdToMoveToBottom": "Sakatu eta eutsi behera mugitzeko"
|
||||
},
|
||||
"common": {
|
||||
"add": "Gehitu",
|
||||
@@ -159,7 +165,19 @@
|
||||
"numberOfResults": "{{numberOfResults}} emaitza",
|
||||
"rename": "Berrizendatu",
|
||||
"newVersionAvailable": "Bertsio berri bat eskuragarri dago",
|
||||
"gridRows": "Sareta-errenkadak"
|
||||
"gridRows": "Sareta-errenkadak",
|
||||
"back": "Atzera",
|
||||
"openFolder": "Ireki karpeta",
|
||||
"filter_single": "Bakarra",
|
||||
"filter_multiple": "Anitzeko",
|
||||
"grouping": "Taldekatzea",
|
||||
"mood": "Aldartea",
|
||||
"saveAndClose": "Gorde eta itxi",
|
||||
"undo": "Desegin",
|
||||
"lastScan": "Azken eskaneatzea {{date}}",
|
||||
"scanFolderCount": "{{count}} karpeta",
|
||||
"scanItemCount": "{{count}} elementu",
|
||||
"scanningLibrary": "Liburutegia eskaneatzen…"
|
||||
},
|
||||
"player": {
|
||||
"repeat": "Errepikatu",
|
||||
@@ -173,8 +191,8 @@
|
||||
"skip": "Saltatu",
|
||||
"stop": "Gelditu",
|
||||
"unfavorite": "Kendu gogokoetatik",
|
||||
"addLast": "Gehitu azkena",
|
||||
"addNext": "Gehitu hurrengoa",
|
||||
"addLast": "Azken aldiz",
|
||||
"addNext": "Hurrengoa",
|
||||
"playbackFetchInProgress": "Abestiak kargatzen…",
|
||||
"playbackSpeed": "Erreprodukzio-abiadura",
|
||||
"playRandom": "Erreproduzitu auzaz",
|
||||
@@ -199,7 +217,8 @@
|
||||
"addLastShuffled": "Azkena (ausaz)",
|
||||
"addNextShuffled": "Hurrengoa (ausaz)",
|
||||
"artistRadio": "Artista irratia",
|
||||
"trackRadio": "Pista irratia"
|
||||
"trackRadio": "Pista irratia",
|
||||
"sleepTimer_custom": "Pertsonalizatua"
|
||||
},
|
||||
"table": {
|
||||
"config": {
|
||||
@@ -229,14 +248,14 @@
|
||||
"pagination_infinite": "Infinitua"
|
||||
},
|
||||
"label": {
|
||||
"actions": "$t(common.action_other)",
|
||||
"actions": "$t(common.action, {\"count\": 2})",
|
||||
"album": "$t(entity.album, {\"count\": 1})",
|
||||
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
|
||||
"artist": "$t(entity.artist, {\"count\": 1})",
|
||||
"biography": "$t(common.biography)",
|
||||
"bitrate": "$t(common.bitrate)",
|
||||
"bpm": "$t(common.bpm)",
|
||||
"channels": "$t(common.channel_other)",
|
||||
"channels": "$t(common.channel, {\"count\": 2})",
|
||||
"codec": "$t(common.codec)",
|
||||
"duration": "$t(common.duration)",
|
||||
"favorite": "$t(common.favorite)",
|
||||
@@ -258,25 +277,27 @@
|
||||
"albumCount": "$t(entity.album, {\"count\": 2})",
|
||||
"image": "Irudia",
|
||||
"bitDepth": "$t(common.bitDepth)",
|
||||
"sampleRate": "$t(common.sampleRate)"
|
||||
"sampleRate": "$t(common.sampleRate)",
|
||||
"date": "Data",
|
||||
"releaseYear": "Argitaratze urtea"
|
||||
}
|
||||
},
|
||||
"column": {
|
||||
"album": "Albuma",
|
||||
"albumCount": "$t(entity.album, {\"count\": 2})",
|
||||
"artist": "$t(entity.artist, {\"count\": 1})",
|
||||
"albumCount": "albumak",
|
||||
"artist": "Artista",
|
||||
"biography": "Biografia",
|
||||
"bitrate": "Bit-emaria",
|
||||
"channels": "$t(common.channel_other)",
|
||||
"codec": "$t(common.codec)",
|
||||
"channels": "Kanalak",
|
||||
"codec": "Kodekak",
|
||||
"discNumber": "Diskoa",
|
||||
"favorite": "Gogokoa",
|
||||
"genre": "$t(entity.genre, {\"count\": 1})",
|
||||
"genre": "Generoa",
|
||||
"path": "Bidea",
|
||||
"rating": "Balorazioa",
|
||||
"releaseYear": "Urtea",
|
||||
"size": "$t(common.size)",
|
||||
"songCount": "$t(entity.track, {\"count\": 2})",
|
||||
"releaseYear": "Argitaratze urtea",
|
||||
"size": "Tamaina",
|
||||
"songCount": "Pistak",
|
||||
"title": "Tituloa",
|
||||
"trackNumber": "Pista",
|
||||
"bpm": "BPM",
|
||||
@@ -287,15 +308,17 @@
|
||||
"dateAdded": "Gehitutako data",
|
||||
"albumArtist": "Albumeko artista",
|
||||
"owner": "Jabea",
|
||||
"bitDepth": "$t(common.bitDepth)",
|
||||
"sampleRate": "$t(common.sampleRate)"
|
||||
"bitDepth": "Bit-sakonera",
|
||||
"sampleRate": "$t(common.sampleRate)",
|
||||
"date": "Data",
|
||||
"year": "Urtea"
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"album_one": "Albuma",
|
||||
"album_other": "Albumak",
|
||||
"albumArtist_one": "Albumaren artista",
|
||||
"albumArtist_other": "Albumaren artistak",
|
||||
"albumArtist_one": "Albumaren Artista",
|
||||
"albumArtist_other": "Albumaren Artistak",
|
||||
"albumArtistCount_one": "Album artista {{count}}",
|
||||
"albumArtistCount_other": "{{count}} album artista",
|
||||
"albumWithCount_one": "Album {{count}}",
|
||||
@@ -412,7 +435,9 @@
|
||||
"explicitStatus": "$t(common.explicitStatus)",
|
||||
"matchAnd": "Eta",
|
||||
"matchOr": "Edo",
|
||||
"sortName": "Izenaren arabera ordenatu"
|
||||
"sortName": "Izenaren arabera ordenatu",
|
||||
"date": "Data",
|
||||
"year": "Urtea"
|
||||
},
|
||||
"setting": {
|
||||
"hotkey_playbackPause": "Pausatu",
|
||||
@@ -470,7 +495,7 @@
|
||||
"lastfmApiKey": "{{lastfm}} API gakoa",
|
||||
"lastfmApiKey_description": "{{lastfm}}-ren API gakoa. Azaleko arterako beharrezkoa.",
|
||||
"lyricFetch": "Eskuratu letrak internetetik",
|
||||
"lyricFetch_description": "Eskuratu letrak hainbat internet iturrietatik",
|
||||
"lyricFetch_description": "Eskuratu letrak hautatutako hornitzaileetatik",
|
||||
"audioExclusiveMode_description": "Gaitu irteera esklusiboko modua. Modu honetan, sistema normalean blokeatuta egoten da, eta mpv-k bakarrik atera ahal izango du audioa",
|
||||
"audioDevice_description": "Aukeratu erreproduzitzeko erabiliko den audio gailua (web erreproduzitzailea bakarrik)",
|
||||
"audioPlayer": "Audio erreproduzitzailea",
|
||||
@@ -601,7 +626,7 @@
|
||||
"playerbarOpenDrawer": "Txandakatu erreproduzitzailearen barra pantaila osora",
|
||||
"playerbarOpenDrawer_description": "Aukera ematen du erreproduzitzailearen barran klik egiteak pantaila osoko erreproduzitzailea irekitzeko",
|
||||
"customCssNotice": "Abisua: garbiketa batzuk dauden arren (URL() eta content: debekatuz), CSS pertsonalizatua erabiltzeak arriskuak sor ditzake interfazea aldatuz gero",
|
||||
"customCss_description": "CSS eduki pertsonalizatua. Oharra: edukia eta urruneko urlak debekatutako propietateak dira. Zure edukiaren aurrebista erakusten da behean. Ezarri ez dituzun eremu gehigarriak daude garbiketa dela eta",
|
||||
"customCss_description": "CSS eduki pertsonalizatua. Oharra: edukia eta urruneko urlak debekatutako propietateak dira. Zure edukiaren aurrebista erakusten da behean. Ezarri ez dituzun eremu gehigarriak daude garbiketa dela eta. Mahaigaina: Feishinek custom.css fitxategia aplikazioaren konfigurazio direktorioan irakurri eta idazten du eta fitxategia aldatzen denean berriro kargatzen du",
|
||||
"enableRemote": "Gaitu urruneko kontrol zerbitzaria",
|
||||
"enableRemote_description": "Urruneko kontrol zerbitzariari beste gailu batzuei aplikazioa kontrolatzeko aukera ematen dio",
|
||||
"imageAspectRatio_description": "Gaituta badago, azaleko artea jatorrizko aspektu-erlazioa erabiliz erakutsiko da. 1:1 ez den arterako, gainerako espazioa hutsik egongo da",
|
||||
@@ -658,7 +683,7 @@
|
||||
"transcodeFormat": "Transkodetzeko formatua",
|
||||
"queryBuilderCustomFields_inputLabel": "Etiketa",
|
||||
"autoDJ": "DJ automatikoa",
|
||||
"autoDJ_itemCount_description": "DJ automatikoa gaituta dagoenean ilaran gehitzen saiatu diren elementuen kopurua",
|
||||
"autoDJ_itemCount_description": "Ilaran gehitzen saiatu diren elementuen kopurua",
|
||||
"autoDJ_timing_description": "DJ automatikoa aktibatu aurretik ilaran geratzen diren abestien kopurua",
|
||||
"analyticsDisable": "Erabileran oinarritutako analisiei uko egin",
|
||||
"analyticsDisable_description": "Erabilera-datu anonimoak garatzaileari bidaltzen zaizkio aplikazioa hobetzen laguntzeko",
|
||||
@@ -672,7 +697,7 @@
|
||||
"hotkey_listPlayLast": "Zerrenda erreproduzitu amaieran",
|
||||
"hotkey_listPlayNow": "Zerrenda erreproduzitu orain",
|
||||
"logLevel": "Erregistro maila",
|
||||
"logLevel_description": "Bistaratzeko erregistroen gutxieneko maila ezartzen du. Debug-ek erregistro guztiak erakusten ditu, «erroreak» erroreak bakarrik erakusten ditu",
|
||||
"logLevel_description": "Bistaratzeko erregistroen gutxieneko maila ezartzen du",
|
||||
"logLevel_optionDebug": "Arazketa",
|
||||
"playerFilters_description": "Saltatu abestiak ilaran gehitzea irizpide hauen arabera",
|
||||
"artistRadioCount_description": "Artista eta abestien irratian bilatu beharreko abesti kopurua ezartzen du",
|
||||
@@ -731,7 +756,28 @@
|
||||
"showSkipButton_description": "Erakutsi edo ezkutatu saltatzeko botoiak erreproduzitzailearen barran",
|
||||
"showSkipButton": "Erakutsi saltatzeko botoiak",
|
||||
"showSkipButtons_description": "Erakutsi edo ezkutatu saltatzeko botoiak erreproduzitzailearen barran",
|
||||
"showSkipButtons": "Erakutsi saltatzeko botoiak"
|
||||
"showSkipButtons": "Erakutsi saltatzeko botoiak",
|
||||
"replayGainPreamp": "{{ReplayGain}} aurreamplifikadorea (db)",
|
||||
"replayGainPreamp_description": "Doitu {{ReplayGain}} balioei aplikatutako aurreamplifikadorearen irabazpena",
|
||||
"sidebarPlaylistFolderSeparator": "Karpeta-bereizlea",
|
||||
"sidebarPlaylistFolderView_description": "Karpetak alboko barran nola bistaratzen diren",
|
||||
"sidebarPlaylistFolderView": "Karpeta-ikuspegia",
|
||||
"sidebarPlaylistFolderView_optionSingle": "Karpeta bakarra",
|
||||
"sidebarPlaylistFolderView_optionTree": "Zuhaitz-ikuspegia",
|
||||
"sidebarPlaylistFolderView_optionNavigation": "Nabigazio ikuspegia",
|
||||
"exportDiagnostics": "Esportatu diagnostikoak",
|
||||
"confirmQueueChanges": "Berretsi ilararen aldaketak",
|
||||
"confirmQueueChanges_description": "Eskatu baieztapena uneko ilara baztertu aurretik",
|
||||
"preventSuspendOnPlayback_description": "Saihestu aplikazioa musika erreproduzitzen ari den bitartean etetea",
|
||||
"preventSuspendOnPlayback": "Saihestu erreprodukzioan etetea",
|
||||
"shareExpiration": "Partekatze-iraungitze lehenetsia",
|
||||
"shareExpirationUseServerDefault": "Erabili zerbitzariaren iraungitze-data lehenetsia",
|
||||
"playerItemConfiguration": "Erreproduzitzeilearen elementuen ezarpenak",
|
||||
"sidebarPlaylistFolders": "Gaitu karpetak",
|
||||
"sidebarPlaylistList": "Alboko barrako erreprodukzio-zerrendak",
|
||||
"sidebarPlaylistMode_description": "Nola bistaratzen den erreprodukzio-zerrenda bakoitza alboko barrako zerrendan",
|
||||
"equalizerPreset": "Aurrezarpena",
|
||||
"equalizerPresetGroupBuiltIn": "Barneratua"
|
||||
},
|
||||
"form": {
|
||||
"addServer": {
|
||||
@@ -750,7 +796,8 @@
|
||||
"input_preferInstantMixDescription": "Erabili berehalako nahasketa soilik antzeko abestiak lortzeko. Erabilgarria portaera hau aldatzen duten pluginak badituzu",
|
||||
"input_remoteUrl": "URL publikoa",
|
||||
"input_preferRemoteUrl": "URL publikoa nahiago izan",
|
||||
"input_remoteUrlPlaceholder": "Aukerakoa: kanpoko funtzioetarako URL publikoa"
|
||||
"input_remoteUrlPlaceholder": "Aukerakoa: kanpoko funtzioetarako URL publikoa",
|
||||
"input_passwordNoSSO": "Alderantzizko proxy (SSO) autentifikazioa ez da onartzen. Erabiltzaile-izen/pasahitz autentifikazioa eta Subsonic autentifikazioa bakarrik onartzen dira"
|
||||
},
|
||||
"addToPlaylist": {
|
||||
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
|
||||
@@ -782,7 +829,9 @@
|
||||
"allowDownloading": "Baimendu deskargatzea",
|
||||
"createFailed": "Partekatzea sortzeak huts egin du (Partekatzea gaituta al dago?)",
|
||||
"copyToClipboard": "Kopiatu arbelean: Ctrl+C, Enter",
|
||||
"successMustClick": "Partekatzea behar bezala sortu da. Egin klik hemen irekitzeko"
|
||||
"successMustClick": "Partekatzea behar bezala sortu da. Egin klik hemen irekitzeko",
|
||||
"setExpiration_description": "Utzi hutsik zerbitzariaren iraungitze-data lehenetsia erabiltzeko",
|
||||
"setExpiration_serverDefault": "Zerbitzariaren lehenetsia"
|
||||
},
|
||||
"deletePlaylist": {
|
||||
"success": "$t(entity.playlist, {\"count\": 1}) behar bezala ezabatu da",
|
||||
@@ -833,10 +882,28 @@
|
||||
"input_limit": "Zenbat abesti?",
|
||||
"input_played_optionAll": "Pista guztiak",
|
||||
"input_played_optionUnplayed": "Erreproduzitu gabeko pistak bakarrik",
|
||||
"input_played_optionPlayed": "Erreproduzitutako pistak bakarrik"
|
||||
"input_played_optionPlayed": "Erreproduzitutako pistak bakarrik",
|
||||
"input_kind_albums": "Albumak",
|
||||
"input_kind_songs": "Abestiak",
|
||||
"input_kind": "Ausazko aukeraketak",
|
||||
"input_limit_albums": "Zenbat album?",
|
||||
"input_limit_songs": "Zenbat abesti?",
|
||||
"input_minYear": "Urtetik aurrera",
|
||||
"input_maxYear": "Urtera arte",
|
||||
"input_played": "Erreproduzitu iragazkia"
|
||||
},
|
||||
"saveQueue": {
|
||||
"success": "Erreprodukzio-ilara zerbitzarian gordeta"
|
||||
},
|
||||
"queueChangeConfirmation": {
|
||||
"title": "Uneko ilara baztertu?",
|
||||
"description": "Honek uneko ilaratik elementu guztiak kenduko ditu."
|
||||
},
|
||||
"createPrefilledPlaylist": {
|
||||
"title": "Hautatutako abestietatik $t(entity.playlist, {\"count\": 1}) sortu"
|
||||
},
|
||||
"editRadioStation": {
|
||||
"success": "Irrati-katea behar bezala eguneratu da"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
@@ -869,7 +936,9 @@
|
||||
"commandPalette": "Ireki komando-paleta",
|
||||
"noMusicFolder": "Ez da musika karpetarik hautatu",
|
||||
"selectMusicFolder": "Aukeratu musika karpeta",
|
||||
"multipleMusicFolders": "{{count}} musika karpeta aukeratuta"
|
||||
"multipleMusicFolders": "{{count}} musika karpeta aukeratuta",
|
||||
"rescanLibrary": "Berriro eskaneatu liburutegia",
|
||||
"logout": "Saioa itxi"
|
||||
},
|
||||
"manageServers": {
|
||||
"url": "URLa",
|
||||
@@ -904,7 +973,9 @@
|
||||
"goToAlbum": "Joan $t(entity.album, {\"count\": 1})-(e)ra",
|
||||
"goToAlbumArtist": "Joan albumera",
|
||||
"showDetails": "Informazioa lortu",
|
||||
"moveItems": "$t(action.moveItems)"
|
||||
"moveItems": "$t(action.moveItems)",
|
||||
"goTo": "Joan honera",
|
||||
"editMetadata": "Editatu metadatuak"
|
||||
},
|
||||
"fullscreenPlayer": {
|
||||
"config": {
|
||||
@@ -921,7 +992,12 @@
|
||||
"showLyricProvider": "Erakutsi letra hornitzailea",
|
||||
"lyricOffset": "Letra-desplazamendua (ms)",
|
||||
"lyricGap": "Letra hutsunea",
|
||||
"useImageAspectRatio": "Erabili irudiaren aspektu-erlazioa"
|
||||
"useImageAspectRatio": "Erabili irudiaren aspektu-erlazioa",
|
||||
"followCurrentLyric_description": "Korritu automatikoki letra-lerro aktiboa ikusgai mantentzeko",
|
||||
"lyricFollowScrollAlignment": "Letrak lerrokatzeari jarraitzen diote",
|
||||
"lyricAlignment_description": "Letra-testuaren lerrokatze horizontala",
|
||||
"lyricGapSynchronized_description": "Letra-lerro sinkronizatuen arteko tarte bertikala",
|
||||
"lyricGapUnsynchronized_description": "Letra-lerro ez-sinkronizatuen arteko tarte bertikala"
|
||||
},
|
||||
"lyrics": "Letrak",
|
||||
"related": "Erlazionatuta",
|
||||
@@ -966,15 +1042,16 @@
|
||||
"sidebar": "Alboko barra",
|
||||
"exportImport": "Inportatu/esportatu",
|
||||
"scrobble": "Scrobble",
|
||||
"audio": "Audioa",
|
||||
"audio": "Audio",
|
||||
"lyrics": "Letrak",
|
||||
"discord": "Discord",
|
||||
"playerFilters": "Erreproduzitzailearen iragazkiak",
|
||||
"updates": "Eguneraketa",
|
||||
"updates": "Eguneratu",
|
||||
"queryBuilder": "Kontsulta-sortzailea",
|
||||
"controls": "Kontrolak",
|
||||
"remote": "Urrunekoa",
|
||||
"lyricsDisplay": "Erakutsi letrak"
|
||||
"lyricsDisplay": "Erakutsi letrak",
|
||||
"transcoding": "Transkodetzea"
|
||||
},
|
||||
"sidebar": {
|
||||
"albumArtists": "Albumaren artistak",
|
||||
@@ -1013,12 +1090,19 @@
|
||||
"groupingTypePrimary": "Argitalpen mota nagusiak",
|
||||
"favoriteSongs": "Abesti gogokoenak",
|
||||
"topSongsCommunity": "Komunitatea",
|
||||
"topSongsPersonal": "Pertsonala"
|
||||
"topSongsPersonal": "Pertsonala",
|
||||
"favoriteSongsFrom": "{{title}}-ko abesti gogokoenak"
|
||||
},
|
||||
"itemDetail": {
|
||||
"copyPath": "Kopiatu bidea arbelean",
|
||||
"openFile": "Erakutsi pista fitxategi-kudeatzailean",
|
||||
"copiedPath": "Bidea behar bezala kopiatu da"
|
||||
"copiedPath": "Bidea behar bezala kopiatu da",
|
||||
"fileNotWritable": "Fitxategia ez da eskuragarria edo ezin da idatzi",
|
||||
"triggerRescan": "Aktibatu beste liburutegi-eskaneatzea gorde ondoren",
|
||||
"addField": "Gehitu eremua…",
|
||||
"emptyFields": "Eremuak ezin dira hutsik egon",
|
||||
"tagsTab": "Etiketak",
|
||||
"multipleValues": "(Balio Anitzak)"
|
||||
},
|
||||
"playlist": {
|
||||
"reorder": "Berrantolaketa idaren arabera ordenatzean bakarrik gaituta dago"
|
||||
@@ -1058,7 +1142,14 @@
|
||||
"minuteShort": "M",
|
||||
"secondShort": "S",
|
||||
"hourShort": "H",
|
||||
"dayShort": "D"
|
||||
"dayShort": "D",
|
||||
"secondLong": "Segundoa",
|
||||
"minuteLong": "Minutua",
|
||||
"hourLong": "Ordua",
|
||||
"dayLong": "Eguna",
|
||||
"weekLong": "Astea",
|
||||
"monthLong": "Hilabetea",
|
||||
"yearLong": "Urtea"
|
||||
},
|
||||
"queryBuilder": {
|
||||
"customTags": "Etiketa pertsonalizatutak",
|
||||
@@ -1070,7 +1161,7 @@
|
||||
"notContains": "Ez dauka",
|
||||
"startsWith": "Honekin hasten da",
|
||||
"endsWith": "Honekin amaitzen da",
|
||||
"isNot": "Ez da",
|
||||
"isNot": "Ez dago",
|
||||
"afterDate": "(Data) ondoren da",
|
||||
"after": "Ondoren da",
|
||||
"before": "Lehenago da",
|
||||
@@ -1082,7 +1173,10 @@
|
||||
"isGreaterThan": "Hau baino handiagoa da",
|
||||
"isLessThan": "Hau baino gutxiago da",
|
||||
"notInPlaylist": "Ez dago barruan",
|
||||
"notInTheLast": "Ez dago azkenengoan"
|
||||
"notInTheLast": "Ez dago azkenengoan",
|
||||
"isMissing": "falta da",
|
||||
"isPresent": "Badago",
|
||||
"matchesRegex": "Adierazpen erregularrarekin bat dator"
|
||||
},
|
||||
"visualizer": {
|
||||
"general": "Orokorra",
|
||||
|
||||
@@ -1 +1,96 @@
|
||||
{}
|
||||
{
|
||||
"action": {
|
||||
"addOrRemoveFromSelection": "Engadir ou eliminar da selección",
|
||||
"clearQueue": "Limpar a cola",
|
||||
"goToCurrent": "Vai ao elemento actual",
|
||||
"collapseAllFolders": "Colapsar todos os cartafoles",
|
||||
"expandAllFolders": "Expandir todos os cartafoles",
|
||||
"selectAll": "Seleccionar todo",
|
||||
"downloadStarted": "Comezou a descarga de {{count}} elementos",
|
||||
"editPlaylist": "Editar $t(entity.playlist, {\"count\": 1})",
|
||||
"goToPage": "Ir á páxina",
|
||||
"moveToNext": "Por a continuación",
|
||||
"moveToBottom": "Por ao final",
|
||||
"moveToTop": "Por á cabeza",
|
||||
"moveUp": "Subir",
|
||||
"moveDown": "Baixar",
|
||||
"deselectAll": "Seleccionar nada",
|
||||
"moveItems": "Mover elementos",
|
||||
"shuffle": "Barallar",
|
||||
"shuffleAll": "Barallar todo",
|
||||
"shuffleSelected": "Barallar a selección",
|
||||
"refresh": "$t(common.refresh)",
|
||||
"removeFromFavorites": "Sacar de $t(entity.favorite, {\"count\": 2})",
|
||||
"removeFromPlaylist": "Sacar de $t(entity.playlist, {\"count\": 1})",
|
||||
"removeFromQueue": "Sacar da cola",
|
||||
"setRating": "Puntuar",
|
||||
"viewMore": "Ver máis",
|
||||
"openApplicationDirectory": "Abrir o cartafol da aplicación",
|
||||
"openIn": {
|
||||
"lastfm": "Abrir en Last.fm",
|
||||
"listenbrainz": "Abrir en ListenBrainz",
|
||||
"musicbrainz": "Abrir en MusicBrainz",
|
||||
"qobuz": "Abrir en Qobuz",
|
||||
"spotify": "Abrir en Spotify"
|
||||
},
|
||||
"addToFavorites": "Engadir a $t(entity.favorite, {\"count\": 2})",
|
||||
"addToPlaylist": "Engadir a $t(entity.playlist, {\"count\": 1})",
|
||||
"selectRangeOfItems": "Seleccionar un rango de elementos",
|
||||
"createPlaylist": "Crea $t(entity.playlist, {\"count\": 1})",
|
||||
"createPlaylistFromQueue": "Crea $t(entity.playlist, {\"count\": 1}) desde fila",
|
||||
"createRadioStation": "Crea $t(entity.radioStation, {\"count\": 1})",
|
||||
"deletePlaylist": "Borra $t(entity.playlist, {\"count\": 1})",
|
||||
"deleteRadioStation": "Borra $t(entity.radioStation, {\"count\": 1})",
|
||||
"viewPlaylists": "Ver $t(entity.playlist, {\"count\": 2})"
|
||||
},
|
||||
"common": {
|
||||
"countSelected": "{{count}} seleccionados",
|
||||
"action_one": "Acción",
|
||||
"action_other": "Accións",
|
||||
"add": "Engadir",
|
||||
"additionalParticipants": "Participantes adicionais",
|
||||
"newVersion": "Unha nova versión foi instalada ({{version}})",
|
||||
"explicitStatus": "Estado explícito",
|
||||
"areYouSure": "Estás seguro?",
|
||||
"ascending": "Ascendente",
|
||||
"back": "Atrás",
|
||||
"biography": "Biografía",
|
||||
"bitrate": "Bitrate",
|
||||
"bpm": "BPM",
|
||||
"cancel": "Cancela",
|
||||
"channel_one": "Canle",
|
||||
"channel_other": "Canles",
|
||||
"clear": "Limpar",
|
||||
"close": "Pechar",
|
||||
"codec": "Codec",
|
||||
"collapse": "Collapsar",
|
||||
"comingSoon": "Próximamente…",
|
||||
"create": "Crea",
|
||||
"decrease": "Diminuir",
|
||||
"delete": "Borrar",
|
||||
"descending": "Descendente",
|
||||
"description": "Descrición",
|
||||
"disable": "Desabilita",
|
||||
"disc": "Disco",
|
||||
"dismiss": "Desbotar",
|
||||
"doNotShowAgain": "Non mostrar isto outra vez",
|
||||
"duration": "Duración",
|
||||
"edit": "Editar",
|
||||
"enable": "Habilitar",
|
||||
"expand": "Expandir",
|
||||
"example": "Exemplo",
|
||||
"externalLinks": "Ligazóns externas",
|
||||
"openFolder": "Abrir cartafol",
|
||||
"faster": "Máis rápido",
|
||||
"favorite": "Favorito",
|
||||
"filter_one": "Filtro",
|
||||
"filter_other": "Filtros",
|
||||
"filters": "Filtros",
|
||||
"filter_single": "Single",
|
||||
"filter_multiple": "Multi",
|
||||
"forceRestartRequired": "Reinicia para aplicar os cambios… pecha a notificación para reiniciar",
|
||||
"forward": "Adiante",
|
||||
"home": "Casa",
|
||||
"increase": "Aumenta"
|
||||
}
|
||||
}
|
||||
|
||||
+197
-27
@@ -43,7 +43,8 @@
|
||||
"openApplicationDirectory": "Buka direktori aplikasi",
|
||||
"goToCurrent": "Pergi ke item saat ini",
|
||||
"collapseAllFolders": "Ciutkan semua folder",
|
||||
"expandAllFolders": "Bentangkan semua folder"
|
||||
"expandAllFolders": "Bentangkan semua folder",
|
||||
"createPlaylistFromQueue": "Buat $t(entity.playlist, {\"count\": 1}) dari antrean"
|
||||
},
|
||||
"common": {
|
||||
"clear": "Bersihkan",
|
||||
@@ -165,7 +166,14 @@
|
||||
"back": "Kembali",
|
||||
"grouping": "Pengelompokan",
|
||||
"numberOfResults": "{{numberOfResults}} hasil",
|
||||
"newVersionAvailable": "Versi baru tersedia"
|
||||
"newVersionAvailable": "Versi baru tersedia",
|
||||
"openFolder": "Buka folder",
|
||||
"saveAndClose": "Simpan dan tutup",
|
||||
"undo": "Batalkan",
|
||||
"lastScan": "Pemindaian terakhir {{date}}",
|
||||
"scanFolderCount": "{{count}} folder",
|
||||
"scanItemCount": "{{count}} item",
|
||||
"scanningLibrary": "Memindai pustaka…"
|
||||
},
|
||||
"entity": {
|
||||
"album_other": "Album",
|
||||
@@ -269,7 +277,9 @@
|
||||
"sortName": "Nama pengurutan",
|
||||
"explicitStatus": "$t(common.explicitStatus)",
|
||||
"matchAnd": "Dan",
|
||||
"matchOr": "Atau"
|
||||
"matchOr": "Atau",
|
||||
"date": "Tanggal",
|
||||
"year": "Tahun"
|
||||
},
|
||||
"form": {
|
||||
"addServer": {
|
||||
@@ -288,7 +298,8 @@
|
||||
"input_preferInstantMixDescription": "Hanya gunakan mix instan untuk mendapatkan lagu serupa. berguna jika Anda memiliki plugin yang memodifikasi perilaku ini",
|
||||
"input_preferRemoteUrl": "Utamakan URL publik",
|
||||
"input_remoteUrl": "Url publik",
|
||||
"input_remoteUrlPlaceholder": "Opsional: URL publik untuk fitur eksternal"
|
||||
"input_remoteUrlPlaceholder": "Opsional: URL publik untuk fitur eksternal",
|
||||
"input_passwordNoSSO": "Autentikasi proxy terbalik (SSO) tidak didukung. Hanya autentikasi nama pengguna/kata sandi dan autentikasi Subsonic yang didukung"
|
||||
},
|
||||
"addToPlaylist": {
|
||||
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
|
||||
@@ -339,7 +350,9 @@
|
||||
"expireInvalid": "Masa berlaku harus di waktu mendatang",
|
||||
"createFailed": "Gagal membuat bagikanan (apakah fitur berbagi diaktifkan?)",
|
||||
"copyToClipboard": "Salin ke clipboard: Ctrl+C, enter",
|
||||
"successMustClick": "Berbagi berhasil dibuat. klik di sini untuk membuka"
|
||||
"successMustClick": "Berbagi berhasil dibuat. klik di sini untuk membuka",
|
||||
"setExpiration_description": "Kosongkan untuk menggunakan masa kedaluwarsa default server",
|
||||
"setExpiration_serverDefault": "Default server"
|
||||
},
|
||||
"updateServer": {
|
||||
"success": "Server berhasil diperbarui",
|
||||
@@ -373,7 +386,12 @@
|
||||
"input_played": "Filter pemutaran",
|
||||
"input_played_optionAll": "Semua trek",
|
||||
"input_played_optionUnplayed": "Hanya trek yang belum diputar",
|
||||
"input_played_optionPlayed": "Hanya trek yang sudah diputar"
|
||||
"input_played_optionPlayed": "Hanya trek yang sudah diputar",
|
||||
"input_kind_albums": "Album",
|
||||
"input_kind_songs": "Lagu",
|
||||
"input_kind": "Pilihan acak",
|
||||
"input_limit_albums": "Berapa banyak album?",
|
||||
"input_limit_songs": "Berapa banyak lagu?"
|
||||
},
|
||||
"privateMode": {
|
||||
"enabled": "Mode pribadi diaktifkan, status pemutaran kini disembunyikan dari integrasi eksternal",
|
||||
@@ -382,6 +400,13 @@
|
||||
},
|
||||
"editRadioStation": {
|
||||
"success": "Stasiun radio berhasil diperbarui"
|
||||
},
|
||||
"queueChangeConfirmation": {
|
||||
"title": "Buang antrean saat ini?",
|
||||
"description": "Ini akan menghapus semua item dari antrean saat ini."
|
||||
},
|
||||
"createPrefilledPlaylist": {
|
||||
"title": "Buat $t(entity.playlist, {\"count\": 1}) dari lagu yang dipilih"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
@@ -431,7 +456,9 @@
|
||||
"privateModeOn": "Nyalakan mode pribadi",
|
||||
"selectMusicFolder": "Pilih folder musik",
|
||||
"noMusicFolder": "Tidak ada folder musik yang dipilih",
|
||||
"multipleMusicFolders": "{{count}} folder musik dipilih"
|
||||
"multipleMusicFolders": "{{count}} folder musik dipilih",
|
||||
"rescanLibrary": "Pindai ulang pustaka",
|
||||
"logout": "Keluar"
|
||||
},
|
||||
"manageServers": {
|
||||
"title": "Kelola server",
|
||||
@@ -467,7 +494,8 @@
|
||||
"moveItems": "$t(action.moveItems)",
|
||||
"goTo": "Buka ke",
|
||||
"goToAlbum": "Buka ke $t(entity.album, {\"count\": 1})",
|
||||
"goToAlbumArtist": "Buka ke $t(entity.albumArtist, {\"count\": 1})"
|
||||
"goToAlbumArtist": "Buka ke $t(entity.albumArtist, {\"count\": 1})",
|
||||
"editMetadata": "Edit Metadata"
|
||||
},
|
||||
"fullscreenPlayer": {
|
||||
"config": {
|
||||
@@ -486,13 +514,35 @@
|
||||
"lyricOffset": "Offset lirik (ms)",
|
||||
"lyricGap": "Jarak lirik",
|
||||
"lyricOpacityNonActive": "Opasitas lirik nonaktif",
|
||||
"lyricScaleNonActive": "Skala lirik nonaktif"
|
||||
"lyricScaleNonActive": "Skala lirik nonaktif",
|
||||
"followCurrentLyric_description": "Gulir secara otomatis untuk menjaga baris lirik aktif tetap terlihat",
|
||||
"lyricFollowScrollAlignment": "Penyelarasan ikuti lirik",
|
||||
"lyricFollowScrollAlignment_description": "Posisi vertikal baris aktif saat mengikuti",
|
||||
"lyricAlignment_description": "Penyelarasan horizontal teks lirik",
|
||||
"lyricGapSynchronized_description": "Jarak vertikal antar baris lirik tersinkronisasi",
|
||||
"lyricGapUnsynchronized_description": "Jarak vertikal antar baris lirik tak tersinkronisasi",
|
||||
"lyricLineLeadTime": "Waktu tuntun baris (ms)",
|
||||
"lyricLineLeadTime_description": "Majukan baris aktif sebanyak milidetik ini sebelum timestamp-nya",
|
||||
"lyricPaddingLeft": "Padding kiri lirik (%)",
|
||||
"lyricPaddingLeft_description": "Padding kiri sebagai persentase dari area lirik",
|
||||
"lyricPaddingRight": "Padding kanan lirik (%)",
|
||||
"lyricPaddingRight_description": "Padding kanan sebagai persentase dari area lirik",
|
||||
"lyricSizeSynchronized_description": "Ukuran font untuk lirik tersinkronisasi (berwaktu)",
|
||||
"lyricSizeUnsynchronized_description": "Ukuran font untuk lirik tak tersinkronisasi (biasa)",
|
||||
"lyricOpacityNonActive_description": "Opasitas baris lirik yang sedang tidak aktif",
|
||||
"lyricScaleNonActive_description": "Skala baris lirik yang sedang tidak aktif",
|
||||
"showLyricMatch_description": "Tampilkan nama lagu dan artis dari lirik yang cocok",
|
||||
"showLyricProvider_description": "Tampilkan penyedia yang menyediakan lirik saat ini"
|
||||
},
|
||||
"lyrics": "Lirik",
|
||||
"related": "Terkait",
|
||||
"upNext": "Berikutnya",
|
||||
"noLyrics": "Tanpa lirik",
|
||||
"visualizer": "Visualisasi"
|
||||
"visualizer": "Visualisasi",
|
||||
"lyricLayers": "Lapisan lirik",
|
||||
"lyricLanguage": "Bahasa",
|
||||
"showPronunciation": "Pelafalan",
|
||||
"showTranslation": "Terjemahan"
|
||||
},
|
||||
"genreList": {
|
||||
"showAlbums": "Tampilkan $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
|
||||
@@ -519,7 +569,27 @@
|
||||
"itemDetail": {
|
||||
"copyPath": "Salin jalur ke papan klip",
|
||||
"copiedPath": "Jalur berhasil disalin",
|
||||
"openFile": "Tampilkan trek di pengelola file"
|
||||
"openFile": "Tampilkan trek di pengelola file",
|
||||
"tagConfiguration": "Konfigurasi tag",
|
||||
"addTagConfig": "Tambahkan tag…",
|
||||
"multiValueToggle": "Multi-nilai",
|
||||
"autocompleteSource": "Sumber autolengkap",
|
||||
"customValues": "Nilai khusus",
|
||||
"addCustomValue": "Tambahkan nilai khusus…",
|
||||
"serverSuggestions": "Server",
|
||||
"fileNotWritable": "File tidak dapat diakses atau tidak dapat ditulis",
|
||||
"triggerRescan": "Picu pemindaian ulang pustaka setelah menyimpan",
|
||||
"addField": "Tambahkan bidang…",
|
||||
"emptyFields": "Bidang tidak boleh kosong",
|
||||
"tagsTab": "Tag",
|
||||
"artworkTab": "Artwork",
|
||||
"removeArtwork": "Hapus Artwork",
|
||||
"noArtwork": "Tanpa Artwork",
|
||||
"multipleValues": "(Beberapa Nilai)",
|
||||
"multipleArtworks": "Beberapa Artwork",
|
||||
"noLocalSongs": "Tidak ditemukan lagu dengan jalur file lokal",
|
||||
"readPartialFailure": "Gagal membaca metadata dari {{count}} dari {{total}} file",
|
||||
"writePartialFailure": "Gagal menyimpan {{count}} file"
|
||||
},
|
||||
"playlist": {
|
||||
"reorder": "Pengurutan ulang hanya diaktifkan saat mengurutkan berdasarkan ID"
|
||||
@@ -550,7 +620,9 @@
|
||||
"transcoding": "Transcoding",
|
||||
"discord": "Discord",
|
||||
"logger": "Logger",
|
||||
"playerFilters": "Filter pemutar"
|
||||
"playerFilters": "Filter pemutar",
|
||||
"sharing": "Berbagi",
|
||||
"lyricsTranslation": "Terjemahan Lirik"
|
||||
},
|
||||
"sidebar": {
|
||||
"albumArtists": "Artis Album",
|
||||
@@ -648,7 +720,10 @@
|
||||
"sleepTimer_timeRemaining": "{{time}} tersisa",
|
||||
"sleepTimer_setCustom": "Atur pengatur waktu",
|
||||
"sleepTimer_cancel": "Batalkan pengatur waktu",
|
||||
"scrobbleForceSubmit": "Paksa scrobble"
|
||||
"scrobbleForceSubmit": "Paksa scrobble",
|
||||
"nextAlbum": "Alt+klik untuk album berikutnya",
|
||||
"previousAlbum": "Alt+klik untuk album sebelumnya",
|
||||
"sleepTimer_endOfAlbum": "Akhir album saat ini"
|
||||
},
|
||||
"setting": {
|
||||
"accentColor": "Warna sorotan",
|
||||
@@ -687,7 +762,7 @@
|
||||
"customCssEnable_description": "Izinkan penulisan CSS kustom",
|
||||
"customCssNotice": "Peringatan: meskipun ada beberapa sanitasi (melarang URL() dan content:), menggunakan CSS kustom tetap dapat menimbulkan risiko dengan mengubah antarmuka",
|
||||
"customCss": "Css kustom",
|
||||
"customCss_description": "Konten CSS kustom. Catatan: properti content dan URL jarak jauh tidak diizinkan. Pratinjau konten anda ditampilkan di bawah. Kolom tambahan yang tidak anda atur ada karena sanitasi",
|
||||
"customCss_description": "Konten CSS khusus. Catatan: properti content dan remote urls tidak diizinkan. Pratinjau konten Anda ditampilkan di bawah. Bidang tambahan yang tidak Anda atur tetap ada karena sanitasi. Desktop: feishin membaca dan menulis custom.css di direktori konfigurasi aplikasi dan memuat ulangnya saat file berubah",
|
||||
"customFontPath": "Jalur font kustom",
|
||||
"customFontPath_description": "Tentukan jalur font kustom yang akan digunakan aplikasi",
|
||||
"discordApplicationId": "ID aplikasi {{discord}}",
|
||||
@@ -762,7 +837,7 @@
|
||||
"lastfmApiKey": "Kunci API untuk {{lastfm}}",
|
||||
"lastfmApiKey_description": "Kunci API untuk {{lastfm}}. Diperlukan untuk sampul",
|
||||
"lyricFetch": "Cari lirik di internet",
|
||||
"lyricFetch_description": "Mencari lirik dari berbagai sumber di Internet",
|
||||
"lyricFetch_description": "Ambil lirik dari penyedia yang dipilih",
|
||||
"lyricFetchProvider": "Penyedia untuk mencari lirik",
|
||||
"lyricFetchProvider_description": "Pilih penyedia untuk mengambil lirik dari",
|
||||
"lyricOffset": "Geser lirik (ms)",
|
||||
@@ -841,11 +916,11 @@
|
||||
"transcodeFormat": "Format untuk ditranskode",
|
||||
"transcodeFormat_description": "Pilih format untuk ditranskode. biarkan kosong agar server yang memutuskan",
|
||||
"translationApiProvider": "Penyedia API terjemahan",
|
||||
"translationApiProvider_description": "Penyedia API untuk terjemahan",
|
||||
"translationApiProvider_description": "Memilih penyedia API yang digunakan untuk terjemahan",
|
||||
"translationApiKey": "Kunci API terjemahan",
|
||||
"translationApiKey_description": "Kunci API untuk terjemahan (hanya endpoint layanan global)",
|
||||
"translationTargetLanguage": "Bahasa tujuan penerjemahan",
|
||||
"translationTargetLanguage_description": "Bahasa tujuan untuk penerjemahan",
|
||||
"translationTargetLanguage_description": "Menetapkan bahasa target yang digunakan untuk terjemahan otomatis",
|
||||
"trayEnabled": "Tampilkan baki",
|
||||
"trayEnabled_description": "Tampilkan/sembunyikan ikon/menu di area pemberitahuan. Jika dinonaktifkan, juga menonaktifkan meminimalkan/keluar ke baki",
|
||||
"useSystemTheme": "Gunakan tema sistem",
|
||||
@@ -863,7 +938,7 @@
|
||||
"savePlayQueue": "Simpan antrean pemutaran",
|
||||
"autoDJ": "DJ Otomatis",
|
||||
"autoDJ_itemCount": "Jumlah item",
|
||||
"autoDJ_itemCount_description": "Jumlah item yang dicoba ditambahkan ke antrean saat DJ otomatis diaktifkan",
|
||||
"autoDJ_itemCount_description": "Jumlah item yang berusaha ditambahkan ke antrean",
|
||||
"autoDJ_timing": "Waktu",
|
||||
"autoDJ_timing_description": "Jumlah lagu yang tersisa dalam antrean sebelum DJ otomatis dipicu",
|
||||
"useThemeAccentColor": "Gunakan warna aksen tema",
|
||||
@@ -922,7 +997,7 @@
|
||||
"lastfm_description": "Tampilkan tautan ke Last.fm pada halaman artis/album",
|
||||
"lastfm": "Tampilkan tautan last.fm",
|
||||
"logLevel": "Tingkat log",
|
||||
"logLevel_description": "Menetapkan tingkat log minimum untuk ditampilkan. debug menampilkan semua log, error hanya menampilkan error",
|
||||
"logLevel_description": "Menetapkan tingkat log minimum yang akan ditampilkan",
|
||||
"logLevel_optionDebug": "Debug",
|
||||
"logLevel_optionInfo": "Info",
|
||||
"mpvExtraParameters": "Parameter tambahan mpv",
|
||||
@@ -979,7 +1054,7 @@
|
||||
"preventSleepOnPlayback": "Cegah tidur saat pemutaran",
|
||||
"sidebarPlaylistSorting_description": "Memungkinkan pengurutan playlist secara manual di bilah samping dengan drag dan drop alih-alih urutan default server",
|
||||
"sidebarPlaylistSorting": "Pengurutan playlist bilah samping",
|
||||
"mediaSession_description": "Mengaktifkan integrasi Media Session, menampilkan kontrol media dan metadata pada overlay volume sistem dan layar kunci",
|
||||
"mediaSession_description": "Mengaktifkan integrasi sesi media, menampilkan kontrol media dan metadata di overlay volume sistem dan layar kunci. Memerlukan Pemutar Audio Web.",
|
||||
"mediaSession": "Aktifkan media session",
|
||||
"transcode": "Aktifkan transcoding",
|
||||
"queryBuilder": "Pembuat kueri",
|
||||
@@ -1044,7 +1119,84 @@
|
||||
"sidePlayQueueLayout_optionHorizontal": "Horizontal",
|
||||
"sidePlayQueueLayout_optionVertical": "Vertikal",
|
||||
"waveformLoadingDelay": "Penundaan pemuatan bentuk gelombang",
|
||||
"waveformLoadingDelay_description": "Penundaan dalam detik sebelum memuat bentuk gelombang. Tingkatkan nilai ini jika Anda mengalami tersendat saat menggunakan pemutar web."
|
||||
"waveformLoadingDelay_description": "Penundaan dalam detik sebelum memuat bentuk gelombang. Tingkatkan nilai ini jika Anda mengalami tersendat saat menggunakan pemutar web.",
|
||||
"autoDJ_mode": "Mode",
|
||||
"autoDJ_mode_albums": "Album",
|
||||
"autoDJ_mode_description": "Pilih untuk menambahkan lagu atau seluruh album ke antrean",
|
||||
"autoDJ_mode_songs": "Lagu",
|
||||
"autoDJ_enabled": "Aktifkan Auto DJ",
|
||||
"autoDJ_albumStrategy": "Mode pemilihan album",
|
||||
"autoDJ_songStrategy": "Mode pemilihan lagu",
|
||||
"autoDJ_strategy_option_library_random": "Acak",
|
||||
"autoDJ_strategy_option_similar": "Serupa",
|
||||
"autoDJ_allowDuplicates": "Izinkan duplikat",
|
||||
"autoDJ_allowDuplicates_description": "Izinkan lagu atau album yang sudah ada di antrean ditambahkan lagi oleh Auto DJ",
|
||||
"autoDJ_onlySimilar": "Hanya yang serupa",
|
||||
"autoDJ_onlySimilar_description": "Hanya tambahkan item yang serupa dengan lagu pemicu. Jumlah item dianggap sebagai jumlah maksimum item yang akan ditambahkan, bukan diisi hingga batas oleh sumber lain",
|
||||
"audioDeviceDefault": "Default sistem",
|
||||
"enableFurigana_description": "Tampilkan panduan pelafalan (furigana) di atas lirik kanji Jepang",
|
||||
"enableFurigana": "Aktifkan pembuatan furigana",
|
||||
"enableRomaji_description": "Tampilkan baris pelafalan romaji di bawah lirik Jepang",
|
||||
"enableRomaji": "Aktifkan pembuatan romaji",
|
||||
"equalizer_descriptionMpv": "Equalizer parametrik melalui FFmpeg lavfi (MPV)",
|
||||
"equalizer_descriptionWebAudio": "Equalizer parametrik melalui Web Audio API",
|
||||
"equalizer": "Equalizer",
|
||||
"equalizerBands_description": "Gain per-bands. Seret ke atas/bawah atau ketik nilai. Rentang: -12 hingga +12 dB.",
|
||||
"equalizerBands": "Bands",
|
||||
"equalizerPreamp_description": "Gain input sebelum bands EQ. Atur negatif saat meningkatkan bands untuk mencegah clipping (MPV).",
|
||||
"equalizerPreamp": "Preamp",
|
||||
"equalizerPreset_description": "Terapkan kurva EQ bawaan atau khusus yang tersimpan",
|
||||
"equalizerPreset": "Preset",
|
||||
"equalizerPresetDeletePlaceholder": "Hapus custom...",
|
||||
"equalizerPresetGroupBuiltIn": "Bawaan",
|
||||
"equalizerPresetGroupCustom": "Khusus",
|
||||
"equalizerPresetNamePlaceholder": "Nama preset...",
|
||||
"equalizerPresetSelectPlaceholder": "Pilih preset",
|
||||
"equalizerSavePreset_description": "Simpan pengaturan EQ saat ini sebagai preset bernama",
|
||||
"equalizerSavePreset": "Simpan preset",
|
||||
"hotkey_playbackNextAlbum": "Album berikutnya",
|
||||
"hotkey_playbackPreviousAlbum": "Album sebelumnya",
|
||||
"logLevel_optionDebugDescription": "Termasuk info, plus informasi debug lengkap, dan respons API yang disamarkan",
|
||||
"logLevel_optionInfoDescription": "Termasuk info, peringatan, dan kesalahan",
|
||||
"exportDiagnostics": "Ekspor diagnostik",
|
||||
"confirmQueueChanges": "Konfirmasi perubahan antrean",
|
||||
"confirmQueueChanges_description": "Minta konfirmasi sebelum membuang antrean saat ini",
|
||||
"showFavorites": "Tampilkan favorit",
|
||||
"showFavorites_description": "Mengontrol apakah tombol favorit (hati) muncul di antarmuka",
|
||||
"showQueueInSidebar_description": "Panel akan ditambahkan ke bilah sisi pemutar yang menampilkan antrean putar",
|
||||
"showQueueInSidebar": "Tampilkan antrean putar di bilah sisi pemutar",
|
||||
"compressor_descriptionMpv": "Kompresor rentang dinamis melalui FFmpeg acompressor (MPV)",
|
||||
"compressor_descriptionWebAudio": "Kompresor rentang dinamis melalui Web Audio API",
|
||||
"compressor": "Kompresor",
|
||||
"compressorAttack_description": "Seberapa cepat kompresor aktif setelah sinyal melebihi ambang.",
|
||||
"compressorAttack": "Attack",
|
||||
"compressorKnee_description": "Lebar soft-knee. Nilai lebih tinggi membuat transisi ke kompresi lebih bertahap.",
|
||||
"compressorKnee": "Knee",
|
||||
"compressorMakeupGain_description": "Gain output yang diterapkan setelah kompresi untuk mengembalikan kenyaringan.",
|
||||
"compressorMakeupGain": "Makeup Gain",
|
||||
"compressorPreset_description": "Terapkan pengaturan kompresor bawaan atau khusus yang tersimpan",
|
||||
"compressorRatio_description": "Rasio kompresi, mis. 4 = 4:1.",
|
||||
"compressorRatio": "Ratio",
|
||||
"compressorRelease_description": "Seberapa cepat kompresor melepas setelah sinyal turun di bawah ambang.",
|
||||
"compressorRelease": "Release",
|
||||
"compressorReset_description": "Kembalikan semua parameter kompresor ke nilai default",
|
||||
"compressorSavePreset_description": "Simpan pengaturan kompresor saat ini sebagai preset bernama",
|
||||
"compressorThreshold_description": "Tingkat sinyal di mana kompresi dimulai.",
|
||||
"compressorThreshold": "Threshold",
|
||||
"shareExpiration_description": "Berapa lama ke depan tautan berbagi baru akan kedaluwarsa secara default. Kosongkan tanggal di dialog berbagi untuk menggunakan default server",
|
||||
"shareExpiration": "Kedaluwarsa berbagi default",
|
||||
"shareExpirationUseServerDefault_description": "Jangan sertakan kedaluwarsa saat membuat berbagi sehingga server dapat menerapkan default yang dikonfigurasi (mis. Navidrome DefaultShareExpiration)",
|
||||
"shareExpirationUseServerDefault": "Gunakan kedaluwarsa default server",
|
||||
"customThemeErrors_description": "File tema ini tidak dapat dimuat.",
|
||||
"customThemeErrors": "Kesalahan",
|
||||
"customThemeWarnings_description": "Tema ini dimuat, tetapi beberapa nilai tidak valid dan diabaikan.",
|
||||
"customThemeWarnings": "Peringatan",
|
||||
"customThemes_description": "Letakkan file tema .json ke folder ini untuk menambahkan tema khusus. File-file ini diambil secara otomatis setiap kali Anda menambahkan, mengedit, atau menghapus file.",
|
||||
"customThemes": "Tema Khusus",
|
||||
"windowBarTrackinfo": "Info trek di Judul Jendela",
|
||||
"windowBarTrackinfo_description": "Tampilkan judul dan artis trek saat ini, posisi antrean, dan status Memutar/Jeda di Judul Jendela.",
|
||||
"microtonalPitchControls": "Kontrol pitch mikrotonal",
|
||||
"microtonalPitchControls_description": "Tambahkan lebih banyak kontrol pitch untuk berpindah di antara semi-ton"
|
||||
},
|
||||
"table": {
|
||||
"column": {
|
||||
@@ -1067,14 +1219,16 @@
|
||||
"playCount": "Putaran",
|
||||
"rating": "Penilaian",
|
||||
"releaseDate": "Tanggal rilis",
|
||||
"releaseYear": "Tahun",
|
||||
"releaseYear": "Tahun rilis",
|
||||
"size": "Ukuran",
|
||||
"songCount": "Trek",
|
||||
"title": "Judul",
|
||||
"trackNumber": "Pista",
|
||||
"bitDepth": "Kedalaman Bit",
|
||||
"sampleRate": "Laju Sampel",
|
||||
"owner": "Pemilik"
|
||||
"owner": "Pemilik",
|
||||
"date": "Tanggal",
|
||||
"year": "Tahun"
|
||||
},
|
||||
"config": {
|
||||
"general": {
|
||||
@@ -1107,7 +1261,12 @@
|
||||
"horizontalBorders": "Batas baris",
|
||||
"rowHoverHighlight": "Sorotan hover baris",
|
||||
"showHeader": "Tampilkan header",
|
||||
"verticalBorders": "Batas kolom"
|
||||
"verticalBorders": "Batas kolom",
|
||||
"albumGroupConfig": "Konfigurasi Grup Album",
|
||||
"albumGroupMetadata": "Bidang metadata",
|
||||
"albumGroupShowFavoriteRating": "Tampilkan favorit dan peringkat",
|
||||
"albumGroupVerticalLayout": "Tata letak vertikal",
|
||||
"albumImageSize": "Ukuran gambar album"
|
||||
},
|
||||
"label": {
|
||||
"actions": "$t(common.action, {\"count\": 2})",
|
||||
@@ -1145,7 +1304,9 @@
|
||||
"image": "Gambar",
|
||||
"sampleRate": "$t(common.sampleRate)",
|
||||
"titleArtist": "$t(common.title) (artis)",
|
||||
"albumGroup": "Grup album"
|
||||
"albumGroup": "Grup album",
|
||||
"date": "Tanggal",
|
||||
"releaseYear": "Tahun Rilis"
|
||||
},
|
||||
"view": {
|
||||
"table": "Tabel",
|
||||
@@ -1159,7 +1320,14 @@
|
||||
"minuteShort": "M",
|
||||
"secondShort": "S",
|
||||
"hourShort": "H",
|
||||
"dayShort": "D"
|
||||
"dayShort": "D",
|
||||
"secondLong": "Detik",
|
||||
"minuteLong": "Menit",
|
||||
"hourLong": "Jam",
|
||||
"dayLong": "Hari",
|
||||
"weekLong": "Minggu",
|
||||
"monthLong": "Bulan",
|
||||
"yearLong": "Tahun"
|
||||
},
|
||||
"filterOperator": {
|
||||
"after": "Setelah",
|
||||
@@ -1180,7 +1348,9 @@
|
||||
"notContains": "Tidak berisi",
|
||||
"notInPlaylist": "Tidak berada di",
|
||||
"notInTheLast": "Tidak dalam kurun terakhir",
|
||||
"startsWith": "Diawali dengan"
|
||||
"startsWith": "Diawali dengan",
|
||||
"isMissing": "Tidak ada",
|
||||
"isPresent": "Ada"
|
||||
},
|
||||
"queryBuilder": {
|
||||
"standardTags": "Tag standar",
|
||||
|
||||
+69
-69
@@ -1,45 +1,45 @@
|
||||
{
|
||||
"player": {
|
||||
"repeat_all": "全曲リピート",
|
||||
"repeat_all": "すべてリピート",
|
||||
"stop": "停止",
|
||||
"repeat": "リピート",
|
||||
"queue_remove": "選択項目を削除",
|
||||
"playRandom": "ランダム再生",
|
||||
"playRandom": "ランダムに再生",
|
||||
"skip": "スキップ",
|
||||
"previous": "前へ",
|
||||
"toggleFullscreenPlayer": "全画面プレーヤーに切り替える",
|
||||
"toggleFullscreenPlayer": "全画面プレーヤーに切り替え",
|
||||
"skip_back": "前へスキップ",
|
||||
"favorite": "お気に入り",
|
||||
"next": "次へ",
|
||||
"shuffle": "再生 (シャッフル)",
|
||||
"shuffle": "再生(シャッフル)",
|
||||
"playbackFetchNoResults": "曲が見つかりません",
|
||||
"playbackFetchInProgress": "曲を読み込み中…",
|
||||
"addNext": "次",
|
||||
"addNext": "再生している曲の直後に追加",
|
||||
"playbackSpeed": "再生速度",
|
||||
"playbackFetchCancel": "処理に時間がかかります… 通知を閉じるとキャンセルします",
|
||||
"play": "再生",
|
||||
"repeat_off": "リピート無効",
|
||||
"queue_clear": "キューをクリア",
|
||||
"queue_clear": "キューを消去",
|
||||
"muted": "ミュート中",
|
||||
"unfavorite": "お気に入り解除",
|
||||
"queue_moveToTop": "選択項目を先頭に移動",
|
||||
"queue_moveToBottom": "選択項目を一番下に移動",
|
||||
"shuffle_off": "シャッフル無効",
|
||||
"addLast": "最後",
|
||||
"addLast": "キューの最後に追加",
|
||||
"mute": "ミュート",
|
||||
"skip_forward": "次へスキップ",
|
||||
"pause": "一時停止",
|
||||
"playSimilarSongs": "似たような曲を再生する",
|
||||
"playSimilarSongs": "似たような曲を再生",
|
||||
"viewQueue": "キューを表示",
|
||||
"lyrics": "歌詞",
|
||||
"restoreQueueFromServer": "サーバーからキューを復元",
|
||||
"saveQueueToServer": "サーバーにキューを保存",
|
||||
"addLastShuffled": "最後 (シャッフル)",
|
||||
"addNextShuffled": "次 (シャッフル)",
|
||||
"addLastShuffled": "キューの最後に追加(シャッフル)",
|
||||
"addNextShuffled": "再生している曲の直後に追加(シャッフル)",
|
||||
"sleepTimer_minutes": "{{count}} 分",
|
||||
"sleepTimer_hours": "{{count}} 時間",
|
||||
"sleepTimer": "スリープタイマー",
|
||||
"sleepTimer_endOfSong": "現在の曲の終わり",
|
||||
"sleepTimer_endOfSong": "現在の曲の終了",
|
||||
"sleepTimer_custom": "カスタム",
|
||||
"sleepTimer_off": "オフ",
|
||||
"sleepTimer_timeRemaining": "残り {{time}}",
|
||||
@@ -89,14 +89,14 @@
|
||||
"hotkey_zoomIn": "拡大",
|
||||
"scrobble_description": "再生した音楽をメディアサーバーから Scrobble します",
|
||||
"hotkey_browserForward": "ブラウザ 進む",
|
||||
"audioExclusiveMode_description": "排他出力モードを有効にします。このモードでは、システムの他の出力がロックされ、MPV のみがオーディオを出力できるようになります。このモードが有効になっている間は、ビジュアライザーやシステムオーディオのキャプチャ機能は動作しません",
|
||||
"audioExclusiveMode_description": "排他出力モードを有効にします。このモードでは、通常、システムへのアクセスが制限され、MPV のみが音声を出力できます。このモードが有効になっている間は、ビジュアライザーのシステム音声キャプチャは機能しません",
|
||||
"discordUpdateInterval": "{{discord}} Rich Presence の更新間隔",
|
||||
"themeLight": "テーマ (ライト)",
|
||||
"fontType_optionBuiltIn": "組み込みフォント",
|
||||
"hotkey_playbackPlayPause": "再生 / 一時停止",
|
||||
"hotkey_rate1": "1 つ星で評価",
|
||||
"hotkey_skipForward": "次へスキップ",
|
||||
"disableLibraryUpdateOnStartup": "起動時の新バージョンチェックを無効にします",
|
||||
"disableLibraryUpdateOnStartup": "起動時に新しいバージョンの有無を確認しない",
|
||||
"discordApplicationId_description": "{{discord}} に Rich Presence ステータスを表示するためのアプリケーション ID (デフォルトは {{defaultId}} です)",
|
||||
"sidePlayQueueStyle": "サイド再生キューの形式",
|
||||
"gaplessAudio": "ギャップレス再生",
|
||||
@@ -161,7 +161,7 @@
|
||||
"sidebarPlaylistList_description": "サイドバーのプレイリストを表示または非表示にします",
|
||||
"accentColor": "アクセントカラー",
|
||||
"sidePlayQueueStyle_description": "サイド再生キューの形式を設定します",
|
||||
"accentColor_description": "アプリケーションが利用するアクセントカラーを設定します",
|
||||
"accentColor_description": "アプリのアクセントカラーを設定します",
|
||||
"replayGainMode": "{{ReplayGain}} モード",
|
||||
"playbackStyle_optionNormal": "通常",
|
||||
"windowBarStyle": "ウィンドウバースタイル",
|
||||
@@ -172,13 +172,13 @@
|
||||
"sidebarConfiguration_description": "サイドバーに表示する項目と順序を選択します",
|
||||
"fontType": "フォントタイプ",
|
||||
"remotePort": "リモートコントロールサーバーのポート",
|
||||
"applicationHotkeys": "アプリケーションホットキー",
|
||||
"applicationHotkeys": "アプリのホットキー",
|
||||
"hotkey_playbackNext": "次のトラック",
|
||||
"useSystemTheme_description": "システム設定のライト/ダークテーマに従います",
|
||||
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
|
||||
"lyricFetch_description": "様々なインターネットソースから歌詞を取得します",
|
||||
"lyricFetchProvider_description": "歌詞を取得するプロバイダーを選択します",
|
||||
"globalMediaHotkeys_description": "システムのメディアホットキーでの再生コントロールを有効/無効化します",
|
||||
"globalMediaHotkeys_description": "再生を制御するためのシステムメディアホットキーの使用を有効または無効にします",
|
||||
"customFontPath": "カスタムフォントパス",
|
||||
"followLyric": "歌詞を再生位置に追従",
|
||||
"crossfadeDuration": "クロスフェードの長さ",
|
||||
@@ -189,7 +189,7 @@
|
||||
"hotkey_unfavoriteCurrentSong": "$t(common.currentSong)をお気に入りから解除",
|
||||
"hotkey_rate0": "評価をクリア",
|
||||
"discordApplicationId": "{{discord}} アプリケーション ID",
|
||||
"applicationHotkeys_description": "アプリケーションのホットキーを設定します。チェックボックスを切り替えて、グローバルホットキーとして設定します (デスクトップのみ)",
|
||||
"applicationHotkeys_description": "アプリのホットキーを設定します。チェックボックスをオンまたはオフにして、グローバルホットキーとして設定します(デスクトップのみ)",
|
||||
"hotkey_volumeMute": "音量をミュート",
|
||||
"hotkey_toggleCurrentSongFavorite": "$t(common.currentSong)のお気に入りを切り替え",
|
||||
"remoteUsername": "リモートコントロールサーバーのユーザー名",
|
||||
@@ -200,7 +200,7 @@
|
||||
"skipPlaylistPage": "プレイリストページをスキップ",
|
||||
"themeDark": "テーマ (ダーク)",
|
||||
"sidebarCollapsedNavigation": "サイドバー (折りたたみ) ナビゲーション",
|
||||
"customFontPath_description": "アプリケーションが使用するカスタムフォントへのパスを設定します",
|
||||
"customFontPath_description": "アプリで使用するカスタムフォントへのパスを設定します",
|
||||
"gaplessAudio_optionWeak": "弱 (推奨)",
|
||||
"minimumScrobbleSeconds": "最小 Scrobble 時間 (秒)",
|
||||
"hotkey_playbackStop": "停止",
|
||||
@@ -208,19 +208,19 @@
|
||||
"font_description": "アプリケーションに使用するフォントを設定します",
|
||||
"savePlayQueue_description": "アプリケーション終了時に再生キューを保存し、アプリケーション開始時に復元します",
|
||||
"useSystemTheme": "システムテーマを使用",
|
||||
"webAudio": "Web Audio を使用する",
|
||||
"webAudio": "Web Audio を使用",
|
||||
"mediaSession_description": "Media Session の統合を有効にし、システムボリュームオーバーレイとロック画面にメディアコントロールとメタデータを表示します。Web Audio Player が必要です。",
|
||||
"mediaSession": "Media Session を有効にする",
|
||||
"startMinimized_description": "システムトレイでアプリケーションを起動する",
|
||||
"startMinimized": "最小化して起動する",
|
||||
"translationApiKey_description": "翻訳用の API キー (グローバルサービスエンドポイントのみ)",
|
||||
"translationApiKey": "翻訳 API キー",
|
||||
"translationApiProvider_description": "翻訳用の API プロバイダー",
|
||||
"translationApiProvider_description": "翻訳に使用する API プロバイダーを選択します",
|
||||
"translationApiProvider": "翻訳 API プロバイダー",
|
||||
"translationTargetLanguage_description": "翻訳対象言語",
|
||||
"translationTargetLanguage_description": "自動翻訳に使用する対象言語を設定します",
|
||||
"translationTargetLanguage": "翻訳対象言語",
|
||||
"trayEnabled_description": "トレイアイコン/メニューの表示/非表示。無効にすると、最小化/トレイへの終了も無効になります",
|
||||
"trayEnabled": "トレイを表示する",
|
||||
"trayEnabled_description": "トレイアイコン / メニューの表示 / 非表示。無効にすると、トレイへの最小化 / 終了も無効になります",
|
||||
"trayEnabled": "トレイを表示",
|
||||
"volumeWidth_description": "音量スライダーの幅",
|
||||
"volumeWidth": "音量スライダーの幅",
|
||||
"webAudio_description": "Web Audio を使用します。これにより、リプレイゲインなどの高度な機能が有効になります。問題が発生した場合は無効にしてください",
|
||||
@@ -235,10 +235,10 @@
|
||||
"preferLocalLyrics_description": "利用可能な場合は、リモート歌詞よりもローカル歌詞を優先します",
|
||||
"preferLocalLyrics": "ローカル歌詞を優先",
|
||||
"preservePitch_description": "再生速度を変更してもピッチを保持します",
|
||||
"preservePitch": "ピッチを保持する",
|
||||
"preservePitch": "ピッチを保持",
|
||||
"preventSleepOnPlayback_description": "音楽の再生中にディスプレイがスリープ状態にならないようにします",
|
||||
"preventSleepOnPlayback": "再生中のスリープを防止する",
|
||||
"lastfmApiKey_description": "{{lastfm}} の API キー。カバーアートの表示に必要です",
|
||||
"lastfmApiKey_description": "{{lastfm}} の API キーを入力してください。カバーアートの表示に必要です",
|
||||
"imageAspectRatio": "ネイティブのカバーアートの縦横比を使用する",
|
||||
"language": "言語",
|
||||
"imageAspectRatio_description": "有効にすると、カバーアートはネイティブの縦横比で表示されます。縦横比が 1:1 でない場合、残りのスペースは空白になります",
|
||||
@@ -247,8 +247,8 @@
|
||||
"lastfmApiKey": "{{lastfm}} API キー",
|
||||
"homeConfiguration_description": "ホーム画面に表示する項目と表示順序を設定します",
|
||||
"homeConfiguration": "ホーム画面の設定",
|
||||
"externalLinks": "外部リンクを表示する",
|
||||
"externalLinks_description": "アーティスト/アルバムページで外部リンク (Last.fm、MusicBrainz) を表示できるようにします",
|
||||
"externalLinks": "外部リンクを表示",
|
||||
"externalLinks_description": "アーティストとアルバムページに外部リンク(Last.fm、MusicBrainz)を表示できるようにします",
|
||||
"enableAutoTranslation": "自動翻訳を有効にする",
|
||||
"enableAutoTranslation_description": "歌詞が読み込まれたときに自動的に翻訳を有効にします",
|
||||
"albumBackground_description": "アルバムアートを含むアルバムページに背景画像を追加します",
|
||||
@@ -256,7 +256,7 @@
|
||||
"albumBackgroundBlur": "アルバムの背景画像のぼかしサイズ",
|
||||
"albumBackgroundBlur_description": "アルバムの背景画像に適用されるぼかしの量を調整します",
|
||||
"artistBackground": "アーティストの背景画像",
|
||||
"artistBackground_description": "アーティストアートを含むアーティストページに背景画像を追加します",
|
||||
"artistBackground_description": "アーティストの作品が掲載されているアーティストページに背景画像を追加します",
|
||||
"artistBackgroundBlur": "アーティストの背景画像のぼかしサイズ",
|
||||
"artistBackgroundBlur_description": "アーティストの背景画像に適用されるぼかしの量を調整します",
|
||||
"artistConfiguration": "アルバムアーティストページの設定",
|
||||
@@ -269,9 +269,9 @@
|
||||
"clearQueryCache_description": "Feishin の「ソフトクリア」を実行します。これにより、プレイリストとトラックのメタデータが更新され、保存された歌詞がリセットされます。設定、サーバーの資格情報、キャッシュされた画像は保持されます",
|
||||
"clearQueryCache": "Feishin のキャッシュを消去",
|
||||
"contextMenu_description": "アイテムを右クリックした際にメニューに表示される項目を非表示にすることができます。チェックされていない項目は非表示になります",
|
||||
"contextMenu": "コンテキストメニュー (右クリック) の設定",
|
||||
"contextMenu": "コンテキストメニュー(右クリック)の設定",
|
||||
"crossfadeStyle": "クロスフェードのスタイル",
|
||||
"customCss_description": "カスタム CSS コンテンツ。注: コンテンツとリモート URL は許可されていないプロパティです。コンテンツのプレビューは以下に表示されます。設定していない追加フィールドは、サニタイズ処理により表示されています",
|
||||
"customCss_description": "カスタム CSS コンテンツ。注: コンテンツとリモート URL は許可されていないプロパティです。コンテンツのプレビューは以下に表示されます。設定していない追加フィールドは、サニタイズ処理により表示されています。デスクトップ: feishin はアプリの設定ディレクトリ内の custom.css を読み書きし、ファイルが変更されると再読み込みを行います",
|
||||
"customCss": "カスタム CSS",
|
||||
"customCssEnable_description": "カスタム CSS の記述を許可します",
|
||||
"customCssEnable": "カスタム CSS を有効にする",
|
||||
@@ -289,7 +289,7 @@
|
||||
"exportImportSettings_control_exportText": "設定をエクスポート",
|
||||
"exportImportSettings_control_importText": "設定をインポート",
|
||||
"exportImportSettings_control_title": "設定をインポート/エクスポート",
|
||||
"exportImportSettings_control_description": "JSON 経由で設定をエクスポートおよびインポートする",
|
||||
"exportImportSettings_control_description": "JSON 経由で設定をエクスポートおよびインポートします",
|
||||
"exportImportSettings_destructiveWarning": "設定のインポートは破壊的です。下の「インポート」をクリックする前に、上記の内容を必ずご確認ください!",
|
||||
"hotkey_navigateHome": "ホーム画面へ移動",
|
||||
"playButtonBehavior_optionPlayShuffled": "$t(player.shuffle)",
|
||||
@@ -322,11 +322,11 @@
|
||||
"autoDJ_itemCount_description": "キューに追加しようとした曲数",
|
||||
"autoDJ_itemCount": "曲数",
|
||||
"autoDJ_timing": "タイミング",
|
||||
"autoDJ_timing_description": "自動 DJ が作動するまでのキューに残っている曲数",
|
||||
"autoDJ_timing_description": "自動 DJ が開始される前にキューに残っている曲数",
|
||||
"analyticsDisable": "使用状況に基づく分析のオプトアウト",
|
||||
"analyticsDisable_description": "匿名化された利用データは、アプリケーションの改善のために開発者に送信されます",
|
||||
"useThemeAccentColor": "テーマのアクセントカラーを使用",
|
||||
"useThemeAccentColor_description": "カスタムアクセントカラーの代わりに、選択したテーマで定義されたプライマリカラーを使用します",
|
||||
"useThemeAccentColor_description": "カスタムアクセントカラーの代わりに、選択したテーマで定義されたプライマリーカラーを使用します",
|
||||
"artistReleaseTypeConfiguration": "アーティストリリースタイプの設定",
|
||||
"artistReleaseTypeConfiguration_description": "アルバムアーティストページでどのリリースタイプをどのような順序で表示するかを設定します",
|
||||
"followCurrentSong": "現在の曲をフォロー",
|
||||
@@ -390,12 +390,12 @@
|
||||
"playerItemConfiguration": "プレーヤーの項目設定",
|
||||
"autosave": "再生キューを自動的に保存",
|
||||
"autosave_description": "再生キューをサーバーに自動的に保存できるようにします。これは Navidrome/Subsonic を使用している場合にのみ可能であり、再生キューを混在させることはできません。",
|
||||
"autosaveCount": "自動再生キューの保存頻度",
|
||||
"autosaveCount_description": "キューが保存されるまでにトラックが変更される回数を設定します。1 (最小値) は曲が変わるたびに保存されることを意味します",
|
||||
"useThemePrimaryShade_description": "選択したテーマで定義されたプライマリシェードをプライマリカラーのバリアントに使用します",
|
||||
"useThemePrimaryShade": "テーマのプライマリシェードを使用",
|
||||
"primaryShade": "プライマリシェード",
|
||||
"primaryShade_description": "ボタン、リンク、およびその他の主要色要素に使用されるプライマリシェード (0–9) を上書きします",
|
||||
"autosaveCount": "再生キューの自動保存頻度",
|
||||
"autosaveCount_description": "キューが保存されるまでの曲の切り替え回数を設定します。1(最小値)は曲が変わるたびに保存されることを意味します",
|
||||
"useThemePrimaryShade_description": "選択したテーマで定義されているプライマリーシェードをプライマリーカラーのバリエーションに使用します",
|
||||
"useThemePrimaryShade": "テーマのプライマリーシェードを使用",
|
||||
"primaryShade": "プライマリーシェード",
|
||||
"primaryShade_description": "ボタン、リンク、およびその他の主要色要素に使用されるプライマリーシェード(0–9)を上書きします",
|
||||
"playerbarWaveformAlign_optionTop": "上部",
|
||||
"playerbarWaveformAlign_optionCenter": "中央",
|
||||
"playerbarWaveformAlign_optionBottom": "下部",
|
||||
@@ -529,7 +529,7 @@
|
||||
"editPlaylist": "$t(entity.playlist, {\"count\": 1})を編集",
|
||||
"goToPage": "ページへ移動",
|
||||
"moveToTop": "一番上へ移動",
|
||||
"clearQueue": "キューをクリア",
|
||||
"clearQueue": "キューを消去",
|
||||
"addToFavorites": "$t(entity.favorite, {\"count\": 2})に追加",
|
||||
"addToPlaylist": "$t(entity.playlist, {\"count\": 1})に追加",
|
||||
"createPlaylist": "$t(entity.playlist, {\"count\": 1})を作成",
|
||||
@@ -857,14 +857,14 @@
|
||||
"mostPlayed": "最も多く再生",
|
||||
"playCount": "再生回数",
|
||||
"isCompilation": "コンピレーションアルバム",
|
||||
"recentlyPlayed": "最近の再生",
|
||||
"recentlyPlayed": "最近再生した",
|
||||
"isRated": "評価済み",
|
||||
"title": "タイトル",
|
||||
"rating": "評価",
|
||||
"search": "検索",
|
||||
"bitrate": "ビットレート",
|
||||
"recentlyAdded": "最近の追加",
|
||||
"note": "ノート",
|
||||
"recentlyAdded": "最近追加された",
|
||||
"note": "注記",
|
||||
"name": "名前",
|
||||
"dateAdded": "追加日",
|
||||
"releaseDate": "発売日",
|
||||
@@ -872,7 +872,7 @@
|
||||
"path": "パス",
|
||||
"favorited": "お気に入り",
|
||||
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
|
||||
"isRecentlyPlayed": "最近再生済み",
|
||||
"isRecentlyPlayed": "最近再生した",
|
||||
"isFavorited": "お気に入り済み",
|
||||
"bpm": "BPM",
|
||||
"releaseYear": "発売年",
|
||||
@@ -888,12 +888,12 @@
|
||||
"criticRating": "批評家の評価",
|
||||
"trackNumber": "トラック",
|
||||
"comment": "コメント",
|
||||
"recentlyUpdated": "新規更新",
|
||||
"recentlyUpdated": "最近更新された",
|
||||
"isPublic": "共有済み",
|
||||
"channels": "$t(common.channel, {\"count\": 2})",
|
||||
"owner": "$t(common.owner)",
|
||||
"genre": "$t(entity.genre, {\"count\": 1})",
|
||||
"albumCount": "$t(entity.album, {\"count\": 2}) 枚",
|
||||
"albumCount": "$t(entity.album, {\"count\": 2})枚数",
|
||||
"id": "ID",
|
||||
"album": "$t(entity.album, {\"count\": 1})",
|
||||
"explicitStatus": "$t(common.explicitStatus)",
|
||||
@@ -933,7 +933,7 @@
|
||||
"showLyricProvider": "歌詞の提供元を表示",
|
||||
"unsynchronized": "非同期",
|
||||
"lyricAlignment": "歌詞の位置",
|
||||
"useImageAspectRatio": "画像のアスペクト比を使用する",
|
||||
"useImageAspectRatio": "画像のアスペクト比を使用",
|
||||
"lyricGap": "歌詞の間隔",
|
||||
"dynamicImageBlur": "画像のぼかしサイズ",
|
||||
"dynamicIsImage": "背景画像を有効にする",
|
||||
@@ -1009,10 +1009,10 @@
|
||||
"download": "ダウンロード",
|
||||
"moveToNext": "$t(action.moveToNext)",
|
||||
"playSimilarSongs": "$t(player.playSimilarSongs)",
|
||||
"shareItem": "アイテムを共有する",
|
||||
"shareItem": "アイテムを共有",
|
||||
"goToAlbum": "$t(entity.album, {\"count\": 1}) に移動",
|
||||
"goToAlbumArtist": "$t(entity.albumArtist, {\"count\": 1}) に移動",
|
||||
"showDetails": "情報を取得する",
|
||||
"showDetails": "情報を取得",
|
||||
"playShuffled": "$t(player.shuffle)",
|
||||
"moveItems": "$t(action.moveItems)",
|
||||
"goTo": "移動",
|
||||
@@ -1022,8 +1022,8 @@
|
||||
"mostPlayed": "最も多く再生",
|
||||
"newlyAdded": "新規追加リリース",
|
||||
"title": "$t(common.home)",
|
||||
"explore": "ライブラリから検索",
|
||||
"recentlyPlayed": "最近の再生",
|
||||
"explore": "ライブラリから探す",
|
||||
"recentlyPlayed": "最近再生した",
|
||||
"recentlyReleased": "最近のリリース",
|
||||
"genres": "$t(entity.genre, {\"count\": 2})"
|
||||
},
|
||||
@@ -1041,7 +1041,7 @@
|
||||
"analytics": "分析",
|
||||
"updates": "更新",
|
||||
"cache": "キャッシュ",
|
||||
"application": "アプリケーション",
|
||||
"application": "アプリ",
|
||||
"queryBuilder": "クエリビルダー",
|
||||
"theme": "テーマ",
|
||||
"controls": "コントロール",
|
||||
@@ -1097,7 +1097,7 @@
|
||||
"topSongsFrom": "{{title}} の人気曲",
|
||||
"viewAll": "すべて表示",
|
||||
"viewAllTracks": "$t(entity.track, {\"count\": 2}) をすべて表示",
|
||||
"relatedArtists": "関連の $t(entity.artist, {\"count\": 2})",
|
||||
"relatedArtists": "関連の$t(entity.artist, {\"count\": 2})",
|
||||
"groupingTypeAll": "すべてのリリースタイプ",
|
||||
"groupingTypePrimary": "主なリリースタイプ",
|
||||
"favoriteSongs": "お気に入りの曲",
|
||||
@@ -1109,13 +1109,13 @@
|
||||
"title": "サーバーの管理",
|
||||
"serverDetails": "サーバーの詳細",
|
||||
"url": "URL",
|
||||
"username": "ユーザーネーム",
|
||||
"editServerDetailsTooltip": "サーバーの詳細を編集する",
|
||||
"username": "ユーザー名",
|
||||
"editServerDetailsTooltip": "サーバーの詳細を編集",
|
||||
"removeServer": "リモートサーバー"
|
||||
},
|
||||
"itemDetail": {
|
||||
"openFile": "ファイルマネージャーでトラックを表示",
|
||||
"copyPath": "パスをクリップボードにコピーする",
|
||||
"copyPath": "パスをクリップボードにコピー",
|
||||
"copiedPath": "パスが正常にコピーされました",
|
||||
"tagConfiguration": "タグ設定",
|
||||
"addTagConfig": "タグを追加…",
|
||||
@@ -1190,9 +1190,9 @@
|
||||
"ignoreSsl": "SSL を無視します ($t(common.restartRequired))",
|
||||
"ignoreCors": "CORS を無視します ($t(common.restartRequired))",
|
||||
"error_savePassword": "パスワードを保存する際にエラーが発生しました",
|
||||
"input_preferInstantMixDescription": "類似曲を取得するにはインスタントミックスのみを使用してください。この動作を変更するプラグインがある場合に役立ちます",
|
||||
"input_preferInstantMix": "インスタントミックスを優先する",
|
||||
"input_preferRemoteUrl": "公開 URL を優先する",
|
||||
"input_preferInstantMixDescription": "類似曲を取得する際にインスタントミックスのみを使用します。この動作を変更するプラグインがある場合に役立ちます",
|
||||
"input_preferInstantMix": "インスタントミックスを優先",
|
||||
"input_preferRemoteUrl": "公開 URL を優先",
|
||||
"input_remoteUrl": "公開 URL",
|
||||
"input_remoteUrlPlaceholder": "オプション: 外部機能用の公開 URL",
|
||||
"input_passwordNoSSO": "リバースプロキシ(SSO)認証はサポートされていません。ユーザー名 / パスワード認証と Subsonic 認証のみがサポートされています"
|
||||
@@ -1207,13 +1207,13 @@
|
||||
"noneAdded": "$t(entity.playlist, {\"count\": 1}) {{playlist}} にトラックが追加されませんでした"
|
||||
},
|
||||
"updateServer": {
|
||||
"title": "サーバーをアップデート",
|
||||
"title": "サーバーを更新",
|
||||
"success": "サーバーの更新に成功しました"
|
||||
},
|
||||
"queryEditor": {
|
||||
"input_optionMatchAll": "すべて一致",
|
||||
"input_optionMatchAny": "一部一致",
|
||||
"title": "クエリエディタ",
|
||||
"title": "クエリエディター",
|
||||
"addRuleGroup": "ルールグループを追加",
|
||||
"removeRuleGroup": "ルールグループを削除",
|
||||
"resetToDefault": "デフォルトにリセット",
|
||||
@@ -1233,9 +1233,9 @@
|
||||
"allowDownloading": "ダウンロードを許可",
|
||||
"description": "説明",
|
||||
"setExpiration": "有効期限を設定",
|
||||
"success": "共有リンクがクリップボードにコピーされました (またはここをクリックして開きます)",
|
||||
"success": "共有リンクがクリップボードにコピーされました(またはここをクリックして開きます)",
|
||||
"expireInvalid": "有効期限は将来の日時である必要があります",
|
||||
"createFailed": "共有リンクを作成できませんでした (共有は有効になっていますか?)",
|
||||
"createFailed": "共有リンクを作成できませんでした(共有は有効になっていますか?)",
|
||||
"copyToClipboard": "クリップボードにコピー: Ctrl+C、Enter",
|
||||
"successMustClick": "共有リンクが正常に作成されました。開くにはここをクリックしてください",
|
||||
"setExpiration_description": "サーバーのデフォルトの有効期限を使用する場合は空欄のままにしてください",
|
||||
@@ -1247,7 +1247,7 @@
|
||||
"title": "プライベートモード"
|
||||
},
|
||||
"largeFetchConfirmation": {
|
||||
"title": "キューにアイテムを追加する",
|
||||
"title": "キューにアイテムを追加",
|
||||
"description": "この操作により、現在のフィルタービュー内のすべてのアイテムが追加されます"
|
||||
},
|
||||
"createRadioStation": {
|
||||
@@ -1265,7 +1265,7 @@
|
||||
"shuffleAll": {
|
||||
"title": "ランダムに再生",
|
||||
"input_genre": "$t(entity.genre, {\"count\": 1})",
|
||||
"input_limit": "何曲?",
|
||||
"input_limit": "何曲ですか?",
|
||||
"input_minYear": "年から",
|
||||
"input_maxYear": "年まで",
|
||||
"input_played_optionAll": "すべてのトラック",
|
||||
@@ -1279,7 +1279,7 @@
|
||||
"input_limit_songs": "何曲ですか?"
|
||||
},
|
||||
"saveQueue": {
|
||||
"success": "プレイキューをサーバーに保存しました"
|
||||
"success": "再生キューをサーバーに保存しました"
|
||||
},
|
||||
"editRadioStation": {
|
||||
"success": "ラジオ局の更新に成功しました"
|
||||
@@ -1363,14 +1363,14 @@
|
||||
"matchesRegex": "正規表現に一致",
|
||||
"notContains": "含まれていない",
|
||||
"after": "以降",
|
||||
"afterDate": "以降 (日付)",
|
||||
"afterDate": "以降(日付)",
|
||||
"before": "以前",
|
||||
"beforeDate": "以前 (日付)",
|
||||
"beforeDate": "以前(日付)",
|
||||
"contains": "を含む",
|
||||
"endsWith": "で終わる",
|
||||
"inPlaylist": "いずれか",
|
||||
"inTheRange": "範囲内",
|
||||
"inTheRangeDate": "範囲内 (日付)",
|
||||
"inTheRangeDate": "範囲内(日付)",
|
||||
"is": "完全一致",
|
||||
"isNot": "不一致",
|
||||
"startsWith": "で始まる",
|
||||
|
||||
@@ -171,7 +171,13 @@
|
||||
"back": "Tilbake",
|
||||
"openFolder": "Åpne mappe",
|
||||
"grouping": "Grupper",
|
||||
"numberOfResults": "{{numberOfResults}} resultater"
|
||||
"numberOfResults": "{{numberOfResults}} resultater",
|
||||
"saveAndClose": "Lagre og avslutt",
|
||||
"undo": "Angre",
|
||||
"lastScan": "Siste skan {{date}}",
|
||||
"scanningLibrary": "Skanner bibliotek",
|
||||
"scanFolderCount": "{{count}} mapper",
|
||||
"scanItemCount": "{{count}} elementer"
|
||||
},
|
||||
"entity": {
|
||||
"smartPlaylist": "Smart $t(entity.playlist, {\"count\": 1})",
|
||||
@@ -397,6 +403,9 @@
|
||||
"input_played_optionAll": "Alle sanger",
|
||||
"input_played_optionUnplayed": "Bare uavspilte sanger",
|
||||
"input_played_optionPlayed": "Bare avspilte sanger"
|
||||
},
|
||||
"privateMode": {
|
||||
"title": "Privat modus"
|
||||
}
|
||||
},
|
||||
"page": {
|
||||
@@ -410,7 +419,15 @@
|
||||
"openBrowserDevtools": "Åpne utviklingsverktøy i nettleser",
|
||||
"settings": "$t(common.setting, {\"count\": 2})",
|
||||
"expandSidebar": "Utvid sidefelt",
|
||||
"goForward": "Gå fremover"
|
||||
"goForward": "Gå fremover",
|
||||
"privateModeOn": "Aktiver privat modus",
|
||||
"logout": "Logg ut",
|
||||
"commandPalette": "Åpne kommandopalett",
|
||||
"selectMusicFolder": "Velg musikkmappe",
|
||||
"noMusicFolder": "Ingen musikkmappe valgt",
|
||||
"multipleMusicFolders": "{{count}} musikkmapper valgt",
|
||||
"privateModeOff": "Avslutt privat modus",
|
||||
"rescanLibrary": "Skann biblioteket på nytt"
|
||||
},
|
||||
"contextMenu": {
|
||||
"addToPlaylist": "$t(action.addToPlaylist)",
|
||||
@@ -434,7 +451,11 @@
|
||||
"shareItem": "Del element",
|
||||
"addFavorite": "$t(action.addToFavorites)",
|
||||
"deletePlaylist": "$t(action.deletePlaylist)",
|
||||
"deselectAll": "$t(action.deselectAll)"
|
||||
"deselectAll": "$t(action.deselectAll)",
|
||||
"goTo": "Gå til",
|
||||
"goToAlbum": "Gå til $t(entity.album, {\"count\": 1})",
|
||||
"goToAlbumArtist": "Gå til $t(entity.albumArtist, {\"count\": 1})",
|
||||
"editMetadata": "Rediger metadata"
|
||||
},
|
||||
"albumArtistDetail": {
|
||||
"topSongs": "Beste sanger",
|
||||
@@ -445,7 +466,8 @@
|
||||
"viewAll": "Se alle",
|
||||
"about": "Om {{artist}}",
|
||||
"appearsOn": "Opptrer på",
|
||||
"relatedArtists": "Relatert $t(entity.artist, {\"count\": 2})"
|
||||
"relatedArtists": "Relatert $t(entity.artist, {\"count\": 2})",
|
||||
"topSongsCommunity": "Fellesskap"
|
||||
},
|
||||
"albumList": {
|
||||
"artistAlbums": "Album av {{artist}}",
|
||||
@@ -475,7 +497,9 @@
|
||||
"unsynchronized": "Usynkronisert",
|
||||
"dynamicBackground": "Dynamisk bakgrunn",
|
||||
"useImageAspectRatio": "Bruk sideforhold til bildet",
|
||||
"followCurrentLyric": "Følg sangtekst"
|
||||
"followCurrentLyric": "Følg sangtekst",
|
||||
"lyricAlignment_description": "Horisontal justering av sangtekst",
|
||||
"lyricFollowScrollAlignment_description": "Vertikal plassering av den aktive linjen ved følging"
|
||||
},
|
||||
"noLyrics": "Fant ikke sangtekst",
|
||||
"lyrics": "Sangtekst",
|
||||
@@ -532,9 +556,10 @@
|
||||
"playlists": "Spillelister",
|
||||
"search": "Søk",
|
||||
"settings": "Innstillinger",
|
||||
"shared": "Delte Spillelister",
|
||||
"shared": "Delte spillelister",
|
||||
"artists": "Artister",
|
||||
"myLibrary": "Mitt bibliotek"
|
||||
"myLibrary": "Mitt bibliotek",
|
||||
"radio": "Radiostasjoner"
|
||||
},
|
||||
"setting": {
|
||||
"generalTab": "Generelt",
|
||||
@@ -549,6 +574,12 @@
|
||||
},
|
||||
"playlist": {
|
||||
"reorder": "Omorganisering kun mulig ved sortering på ID"
|
||||
},
|
||||
"windowBar": {
|
||||
"privateMode": "(Privat modus)"
|
||||
},
|
||||
"radioList": {
|
||||
"title": "Radiostasjoner"
|
||||
}
|
||||
},
|
||||
"player": {
|
||||
@@ -582,7 +613,18 @@
|
||||
"toggleFullscreenPlayer": "Bytt til fullskjermspiller",
|
||||
"pause": "Sett på pause",
|
||||
"viewQueue": "Se kø",
|
||||
"unfavorite": "Fjern fra favoritter"
|
||||
"unfavorite": "Fjern fra favoritter",
|
||||
"addLastShuffled": "Sist (tilfeldig rekkefølge)",
|
||||
"addNextShuffled": "Neste (tilfeldig rekkefølge)",
|
||||
"albumRadio": "Albumradio",
|
||||
"artistRadio": "Artistradio",
|
||||
"holdToShuffle": "Hold inne for tilfeldig avspilling",
|
||||
"lyrics": "Sangtekst",
|
||||
"nextAlbum": "Alt+klikk for neste album",
|
||||
"previousAlbum": "Alt+klikk for forrige album",
|
||||
"saveQueueToServer": "Lagre avspillingskøen på serveren",
|
||||
"restoreQueueFromServer": "Hent avspillingskøen fra serveren",
|
||||
"trackRadio": "Låtradio"
|
||||
},
|
||||
"setting": {
|
||||
"accentColor": "Aksentfarge",
|
||||
|
||||
@@ -26,21 +26,6 @@ let mpvInstance: MpvAPI | null = null;
|
||||
let currentPlayerData: null | PlayerData = null;
|
||||
const socketPath = isWindows() ? `\\\\.\\pipe\\mpvserver-${pid}` : `/tmp/node-mpv-${pid}.sock`;
|
||||
|
||||
// While quitting/restarting mpv, playlist-pos goes to -1 and node-mpv emits stopped/paused/
|
||||
// resumed. Those look identical to a real track end and must not reach the renderer — otherwise
|
||||
// handleTrackEnded runs mediaAutoNext while status is STOPPED and flips the UI back to Playing
|
||||
// on the next queue item (e.g. MPV reload after mediaStop).
|
||||
let suppressRendererPlaybackEvents = false;
|
||||
// Bumped on quit so late events from a dying instance are ignored after a new one starts.
|
||||
let playbackEventGeneration = 0;
|
||||
|
||||
const sendRendererPlaybackEvent = (channel: string, ...args: unknown[]) => {
|
||||
if (suppressRendererPlaybackEvents) {
|
||||
return;
|
||||
}
|
||||
getMainWindow()?.webContents.send(channel, ...args);
|
||||
};
|
||||
|
||||
const NodeMpvErrorCode = {
|
||||
0: 'Unable to load file or stream',
|
||||
1: 'Invalid argument',
|
||||
@@ -182,16 +167,6 @@ const createMpv = async (data: {
|
||||
}
|
||||
|
||||
let previousPlaylistPos: number | undefined;
|
||||
const eventGeneration = playbackEventGeneration;
|
||||
|
||||
suppressRendererPlaybackEvents = false;
|
||||
|
||||
const sendIfCurrent = (channel: string, ...args: unknown[]) => {
|
||||
if (eventGeneration !== playbackEventGeneration) {
|
||||
return;
|
||||
}
|
||||
sendRendererPlaybackEvent(channel, ...args);
|
||||
};
|
||||
|
||||
mpv.on('status', (status) => {
|
||||
if (status.property === 'playlist-pos') {
|
||||
@@ -200,7 +175,7 @@ const createMpv = async (data: {
|
||||
// mpv uses playlist-pos = -1 when nothing is playing (ended, cleared, load failure, etc).
|
||||
if (currentPos === -1) {
|
||||
if (previousPlaylistPos === 0) {
|
||||
sendIfCurrent('renderer-player-track-ended');
|
||||
getMainWindow()?.webContents.send('renderer-player-track-ended');
|
||||
}
|
||||
mpv?.pause();
|
||||
previousPlaylistPos = currentPos;
|
||||
@@ -210,7 +185,7 @@ const createMpv = async (data: {
|
||||
// In our 2-item queue model, playlist-pos should normally be 0.
|
||||
// When mpv auto-advances to the next track it becomes > 0 (typically 1).
|
||||
if (typeof currentPos === 'number' && currentPos > 0) {
|
||||
sendIfCurrent('renderer-player-auto-next');
|
||||
getMainWindow()?.webContents.send('renderer-player-auto-next');
|
||||
}
|
||||
|
||||
previousPlaylistPos = currentPos;
|
||||
@@ -219,24 +194,21 @@ const createMpv = async (data: {
|
||||
|
||||
// Automatically updates the play button when the player is playing
|
||||
mpv.on('resumed', () => {
|
||||
sendIfCurrent('renderer-player-play');
|
||||
getMainWindow()?.webContents.send('renderer-player-play');
|
||||
});
|
||||
|
||||
// Automatically updates the play button when the player is stopped
|
||||
mpv.on('stopped', () => {
|
||||
sendIfCurrent('renderer-player-stop');
|
||||
getMainWindow()?.webContents.send('renderer-player-stop');
|
||||
});
|
||||
|
||||
// Automatically updates the play button when the player is paused
|
||||
mpv.on('paused', () => {
|
||||
sendIfCurrent('renderer-player-pause');
|
||||
getMainWindow()?.webContents.send('renderer-player-pause');
|
||||
});
|
||||
|
||||
// Event output every interval set by time_update, used to update the current time
|
||||
mpv.on('timeposition', (time: number) => {
|
||||
if (eventGeneration !== playbackEventGeneration) {
|
||||
return;
|
||||
}
|
||||
getMainWindow()?.webContents.send('renderer-player-current-time', time);
|
||||
});
|
||||
|
||||
@@ -263,8 +235,6 @@ const killMpvProcess = (mpv: MpvAPI) => {
|
||||
const quit = async (instance?: MpvAPI | null) => {
|
||||
const mpv = instance || getMpvInstance();
|
||||
if (mpv) {
|
||||
suppressRendererPlaybackEvents = true;
|
||||
playbackEventGeneration += 1;
|
||||
try {
|
||||
// mpv.quit() resolves only when mpv replies over IPC. If mpv's command queue
|
||||
// is wedged (e.g. blocked on a dead network stream after the system resumes
|
||||
@@ -332,8 +302,6 @@ ipcMain.handle(
|
||||
});
|
||||
|
||||
// Clean up previous mpv instance
|
||||
suppressRendererPlaybackEvents = true;
|
||||
playbackEventGeneration += 1;
|
||||
getMpvInstance()?.stop();
|
||||
getMpvInstance()
|
||||
?.quit()
|
||||
@@ -370,9 +338,6 @@ ipcMain.handle(
|
||||
);
|
||||
|
||||
ipcMain.on('player-quit', async () => {
|
||||
// stop() also drives playlist-pos to -1; suppress before that so reload does not look like a track end.
|
||||
suppressRendererPlaybackEvents = true;
|
||||
playbackEventGeneration += 1;
|
||||
try {
|
||||
await getMpvInstance()?.stop();
|
||||
await quit();
|
||||
@@ -475,13 +440,6 @@ ipcMain.on('player-set-queue', async (_event, current?: string, next?: string, p
|
||||
}
|
||||
}
|
||||
|
||||
// When pause is requested (e.g. preload after reload while UI is STOPPED/PAUSED), mpv still
|
||||
// briefly resumes on load. Suppress those events so they do not overwrite renderer status.
|
||||
const shouldSuppressLoadEvents = pause === true;
|
||||
if (shouldSuppressLoadEvents) {
|
||||
suppressRendererPlaybackEvents = true;
|
||||
}
|
||||
|
||||
try {
|
||||
if (current) {
|
||||
try {
|
||||
@@ -504,10 +462,6 @@ ipcMain.on('player-set-queue', async (_event, current?: string, next?: string, p
|
||||
}
|
||||
} catch (err: any | NodeMpvError) {
|
||||
mpvLog({ action: `Failed to set play queue` }, err);
|
||||
} finally {
|
||||
if (shouldSuppressLoadEvents) {
|
||||
suppressRendererPlaybackEvents = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -773,8 +727,10 @@ const cleanupMpv = async (force = false) => {
|
||||
// the renderer to reload mpv so it reconnects with a fresh stream instead of staying
|
||||
// stuck on the old, now-dead connection until the app is manually restarted.
|
||||
powerMonitor.on('resume', () => {
|
||||
mpvLog({ action: 'System resumed from sleep, notifying renderer to reconnect mpv' });
|
||||
getMainWindow()?.webContents.send('renderer-mpv-reconnect');
|
||||
if (getMpvInstance()) {
|
||||
mpvLog({ action: 'System resumed from sleep, reloading mpv' });
|
||||
getMainWindow()?.webContents.send('renderer-mpv-reconnect');
|
||||
}
|
||||
});
|
||||
|
||||
app.on('before-quit', async (event) => {
|
||||
|
||||
@@ -2035,12 +2035,22 @@ export const SubsonicController: InternalControllerEndpoint = {
|
||||
getStructuredLyrics: async (args) => {
|
||||
const { apiClientProps, query } = args;
|
||||
const server = apiClientProps.server;
|
||||
const supportsStructuredLyrics = hasFeatureWithVersion(
|
||||
server,
|
||||
ServerFeature.LYRICS_MULTIPLE_STRUCTURED,
|
||||
1,
|
||||
);
|
||||
|
||||
const supportsEnhancedLyrics = hasFeatureWithVersion(
|
||||
server,
|
||||
ServerFeature.LYRICS_MULTIPLE_STRUCTURED,
|
||||
2,
|
||||
);
|
||||
|
||||
if (!supportsStructuredLyrics && !supportsEnhancedLyrics) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const res = await ssApiClient(apiClientProps).getStructuredLyrics({
|
||||
query: {
|
||||
enhanced: supportsEnhancedLyrics ? true : undefined,
|
||||
|
||||
@@ -69,14 +69,10 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
setReloadTrigger((prev) => prev + 1);
|
||||
};
|
||||
|
||||
const handleMpvReconnect = () => {
|
||||
handleMpvReload();
|
||||
};
|
||||
|
||||
eventEmitter.on('MPV_RELOAD', handleMpvReload);
|
||||
// The main process notifies us after the OS resumes from sleep, since the
|
||||
// stream mpv had open is likely on a now-dead connection.
|
||||
mpvPlayerListener?.rendererMpvReconnect(handleMpvReconnect);
|
||||
mpvPlayerListener?.rendererMpvReconnect(handleMpvReload);
|
||||
|
||||
return () => {
|
||||
eventEmitter.off('MPV_RELOAD', handleMpvReload);
|
||||
@@ -151,9 +147,7 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
: undefined;
|
||||
|
||||
if (currentSongUrl && nextSongUrl && !hasPopulatedQueueRef.current && mpvPlayer) {
|
||||
const shouldPause =
|
||||
usePlayerStore.getState().player.status !== PlayerStatus.PLAYING;
|
||||
mpvPlayer.setQueue(currentSongUrl, nextSongUrl, shouldPause);
|
||||
mpvPlayer.setQueue(currentSongUrl, nextSongUrl, true);
|
||||
hasPopulatedQueueRef.current = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ import isElectron from 'is-electron';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||
import { usePlayer } from '/@/renderer/features/player/context/player-context';
|
||||
import {
|
||||
getDefaultAudioDevice,
|
||||
useAudioDevices,
|
||||
@@ -243,54 +241,36 @@ export const PlayerConfig = () => {
|
||||
};
|
||||
|
||||
const AudioPlayerTypeConfig = () => {
|
||||
const { t } = useTranslation();
|
||||
const status = usePlayerStatus();
|
||||
const playbackSettings = usePlaybackSettings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
const { mediaStop } = usePlayer();
|
||||
|
||||
const showRefreshButton = playbackSettings.type === PlayerType.LOCAL;
|
||||
|
||||
return (
|
||||
<Group gap="xs" wrap="nowrap">
|
||||
<Select
|
||||
comboboxProps={{ withinPortal: false }}
|
||||
data={[
|
||||
{
|
||||
disabled: !isElectron(),
|
||||
label: 'MPV',
|
||||
value: PlayerType.LOCAL,
|
||||
},
|
||||
{ label: 'Web', value: PlayerType.WEB },
|
||||
{ label: 'Jukebox', value: PlayerType.JUKEBOX },
|
||||
]}
|
||||
defaultValue={playbackSettings.type}
|
||||
disabled={status === PlayerStatus.PLAYING}
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
playback: { ...playbackSettings, type: e as PlayerType },
|
||||
});
|
||||
ipc?.send('settings-set', {
|
||||
property: 'playbackType',
|
||||
value: e,
|
||||
});
|
||||
}}
|
||||
variant="filled"
|
||||
width="100%"
|
||||
/>
|
||||
{showRefreshButton && (
|
||||
<ActionIcon
|
||||
icon="refresh"
|
||||
iconProps={{ size: 'md' }}
|
||||
onClick={() => {
|
||||
mediaStop();
|
||||
eventEmitter.emit('MPV_RELOAD', {});
|
||||
}}
|
||||
tooltip={{ label: t('common.reload') }}
|
||||
variant="transparent"
|
||||
/>
|
||||
)}
|
||||
</Group>
|
||||
<Select
|
||||
comboboxProps={{ withinPortal: false }}
|
||||
data={[
|
||||
{
|
||||
disabled: !isElectron(),
|
||||
label: 'MPV',
|
||||
value: PlayerType.LOCAL,
|
||||
},
|
||||
{ label: 'Web', value: PlayerType.WEB },
|
||||
{ label: 'Jukebox', value: PlayerType.JUKEBOX },
|
||||
]}
|
||||
defaultValue={playbackSettings.type}
|
||||
disabled={status === PlayerStatus.PLAYING}
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
playback: { ...playbackSettings, type: e as PlayerType },
|
||||
});
|
||||
ipc?.send('settings-set', {
|
||||
property: 'playbackType',
|
||||
value: e,
|
||||
});
|
||||
}}
|
||||
variant="filled"
|
||||
width="100%"
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -311,7 +291,6 @@ const AudioDeviceConfig = () => {
|
||||
comboboxProps={{ withinPortal: false }}
|
||||
data={audioDevices}
|
||||
disabled={status === PlayerStatus.PLAYING}
|
||||
key={playbackType}
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
playback: {
|
||||
|
||||
@@ -3,22 +3,14 @@ import isElectron from 'is-electron';
|
||||
import { memo, useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||
import { usePlayer } from '/@/renderer/features/player/context/player-context';
|
||||
import {
|
||||
SettingOption,
|
||||
SettingsSection,
|
||||
} from '/@/renderer/features/settings/components/settings-section';
|
||||
import { useCurrentServer, usePlayerStatus } from '/@/renderer/store';
|
||||
import {
|
||||
usePlaybackSettings,
|
||||
usePlaybackType,
|
||||
useSettingsStoreActions,
|
||||
} from '/@/renderer/store/settings.store';
|
||||
import { useCurrentServer, usePlaybackType, usePlayerStatus } from '/@/renderer/store';
|
||||
import { usePlaybackSettings, useSettingsStoreActions } from '/@/renderer/store/settings.store';
|
||||
import { logger } from '/@/renderer/utils/logger';
|
||||
import { hasFeature } from '/@/shared/api/utils';
|
||||
import { ActionIcon } from '/@/shared/components/action-icon/action-icon';
|
||||
import { Group } from '/@/shared/components/group/group';
|
||||
import { Select } from '/@/shared/components/select/select';
|
||||
import { Switch } from '/@/shared/components/switch/switch';
|
||||
import { toast } from '/@/shared/components/toast/toast';
|
||||
@@ -108,12 +100,10 @@ export const AudioSettings = memo(() => {
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
const status = usePlayerStatus();
|
||||
const playbackType = usePlaybackType();
|
||||
const { mediaStop } = usePlayer();
|
||||
|
||||
// Cleaned up server feature logic via requested hooks/utilities
|
||||
const currentServer = useCurrentServer();
|
||||
const isJukeboxSupported = hasFeature(currentServer, ServerFeature.JUKEBOX);
|
||||
const showRefreshButton = settings.type === PlayerType.LOCAL;
|
||||
|
||||
const audioDevices = useAudioDevices(playbackType);
|
||||
const audioDeviceId =
|
||||
@@ -136,29 +126,15 @@ export const AudioSettings = memo(() => {
|
||||
const audioOptions: SettingOption[] = [
|
||||
{
|
||||
control: (
|
||||
<Group gap="xs" wrap="nowrap">
|
||||
<Select
|
||||
data={selectData}
|
||||
defaultValue={settings.type}
|
||||
disabled={status === PlayerStatus.PLAYING}
|
||||
onChange={(e) => {
|
||||
setSettings({ playback: { type: e as PlayerType } });
|
||||
ipc?.send('settings-set', { property: 'playbackType', value: e });
|
||||
}}
|
||||
/>
|
||||
{showRefreshButton && (
|
||||
<ActionIcon
|
||||
icon="refresh"
|
||||
iconProps={{ size: 'md' }}
|
||||
onClick={() => {
|
||||
mediaStop();
|
||||
eventEmitter.emit('MPV_RELOAD', {});
|
||||
}}
|
||||
tooltip={{ label: t('common.reload') }}
|
||||
variant="transparent"
|
||||
/>
|
||||
)}
|
||||
</Group>
|
||||
<Select
|
||||
data={selectData}
|
||||
defaultValue={settings.type}
|
||||
disabled={status === PlayerStatus.PLAYING}
|
||||
onChange={(e) => {
|
||||
setSettings({ playback: { type: e as PlayerType } });
|
||||
ipc?.send('settings-set', { property: 'playbackType', value: e });
|
||||
}}
|
||||
/>
|
||||
),
|
||||
description: t('setting.audioPlayer', { context: 'description' }),
|
||||
isHidden: !isElectron() && !isJukeboxSupported,
|
||||
|
||||
Reference in New Issue
Block a user