Compare commits

...

3 Commits

Author SHA1 Message Date
Hosted Weblate de0ddfe226 Translated using Weblate
Currently translated at 100.0% (1245 of 1245 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 100.0% (1245 of 1245 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 100.0% (1245 of 1245 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1245 of 1245 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: rimasx <riks_12@hot.ee>
Co-authored-by: 為什麼不加空格 <c++23@users.noreply.hosted.weblate.org>
2026-06-10 08:01:28 +00:00
oHaoDaio d23f7619ec chore: Support pnpm v11 2026-06-09 22:15:47 -07:00
Kendall Garner 44de6f2207 chore: upgrade depdencencies (#2133)
* upgrade depdencencies
2026-06-09 21:18:47 -07:00
22 changed files with 2347 additions and 2561 deletions
-4
View File
@@ -44,8 +44,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
@@ -129,8 +127,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-4
View File
@@ -19,8 +19,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
@@ -123,8 +121,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-2
View File
@@ -16,8 +16,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-2
View File
@@ -16,8 +16,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-2
View File
@@ -38,8 +38,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-2
View File
@@ -16,8 +16,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-2
View File
@@ -16,8 +16,6 @@ jobs:
- name: Install Node and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
-2
View File
@@ -12,8 +12,6 @@ jobs:
- name: Install Node.js and PNPM
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install dependencies
run: pnpm install
+1 -4
View File
@@ -3,10 +3,7 @@ FROM node:23-alpine AS builder
WORKDIR /app
# Copy package.json first to cache node_modules
COPY package.json pnpm-lock.yaml .
# Match CI (pnpm/action-setup version: 10). Latest pnpm 11 fails install without approve-builds.
RUN corepack enable && corepack prepare pnpm@10 --activate
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .
RUN pnpm install
+1 -1
View File
@@ -63,7 +63,7 @@ linux:
artifactName: ${productName}-${os}-${arch}.${ext}
toolsets:
appimage: '1.0.2'
appimage: '1.0.3'
npmRebuild: false
+1 -1
View File
@@ -63,7 +63,7 @@ linux:
artifactName: ${productName}-${os}-${arch}.${ext}
toolsets:
appimage: '1.0.2'
appimage: '1.0.3'
npmRebuild: false
publish:
+1 -1
View File
@@ -63,7 +63,7 @@ linux:
artifactName: ${productName}-${os}-${arch}.${ext}
toolsets:
appimage: '1.0.2'
appimage: '1.0.3'
npmRebuild: false
afterAllArtifactBuild: scripts/after-all-artifact-build.mjs
+42 -42
View File
@@ -69,79 +69,78 @@
"postversion": "node ./scripts/update-app-stream.mjs"
},
"resolutions": {
"react-router": "7.14.0",
"xml2js": "0.5.0"
},
"dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "1.7.7",
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.5",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.2.0",
"@electron-toolkit/preload": "^3.0.2",
"@electron-toolkit/utils": "^4.0.0",
"@mantine/colors-generator": "^9.1.1",
"@mantine/core": "^9.1.1",
"@mantine/dates": "^9.1.1",
"@mantine/form": "^9.1.1",
"@mantine/hooks": "^9.1.1",
"@mantine/modals": "^9.1.1",
"@mantine/notifications": "^9.1.1",
"@radix-ui/react-context-menu": "^2.2.16",
"@tanstack/react-query": "^5.96.2",
"@tanstack/react-query-devtools": "^5.96.2",
"@tanstack/react-query-persist-client": "^5.96.2",
"@mantine/colors-generator": "^9.3.0",
"@mantine/core": "^9.3.0",
"@mantine/dates": "^9.3.0",
"@mantine/form": "^9.3.0",
"@mantine/hooks": "^9.3.0",
"@mantine/modals": "^9.3.0",
"@mantine/notifications": "^9.3.0",
"@radix-ui/react-context-menu": "^2.3.0",
"@tanstack/react-query": "5.96.2",
"@tanstack/react-query-devtools": "5.96.2",
"@tanstack/react-query-persist-client": "5.96.2",
"@ts-rest/core": "^3.52.1",
"@wavesurfer/react": "^1.0.12",
"@xhayper/discord-rpc": "^1.3.3",
"@xhayper/discord-rpc": "^1.3.4",
"audiomotion-analyzer": "^4.5.4",
"axios": "^1.14.0",
"axios": "^1.17.0",
"butterchurn": "3.0.0-beta.5",
"butterchurn-presets": "3.0.0-beta.4",
"cheerio": "^1.2.0",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"dayjs": "^1.11.20",
"dompurify": "^3.3.3",
"dayjs": "^1.11.21",
"dompurify": "^3.4.8",
"electron-debug": "^3.2.0",
"electron-localshortcut": "^3.2.1",
"electron-log": "^5.4.3",
"electron-log": "^5.4.4",
"electron-store": "^8.2.0",
"electron-updater": "^6.8.3",
"electron-updater": "^6.8.9",
"fast-average-color": "9.5.0",
"fast-xml-parser": "^5.5.10",
"fast-xml-parser": "^5.8.0",
"format-duration": "^3.0.2",
"fuse.js": "^7.2.0",
"fuse.js": "^7.4.2",
"i18next": "^25.10.10",
"icecast-metadata-stats": "^0.1.12",
"idb-keyval": "^6.2.2",
"idb-keyval": "^6.2.5",
"immer": "^10.2.0",
"is-electron": "^2.2.2",
"lodash": "^4.18.1",
"md5": "^2.3.0",
"motion": "^12.38.0",
"motion": "^12.40.0",
"mpris-service": "^2.1.2",
"nanoid": "^3.3.11",
"nanoid": "^3.3.12",
"node-mpv": "github:jeffvli/Node-MPV#32b4d64395289ad710c41d481d2707a7acfc228f",
"overlayscrollbars": "^2.14.0",
"overlayscrollbars": "^2.16.0",
"overlayscrollbars-react": "^0.5.6",
"qs": "^6.15.0",
"react": "^19.2.4",
"qs": "^6.15.2",
"react": "^19.2.7",
"react-call": "^1.8.2",
"react-dom": "^19.2.4",
"react-dom": "^19.2.7",
"react-error-boundary": "^5.0.0",
"react-i18next": "^16.6.6",
"react-icons": "^5.6.0",
"react-player": "^2.16.1",
"react-router": "^7.14.0",
"react-router": "^7.17.0",
"react-split-pane": "^3.2.0",
"react-virtualized-auto-sizer": "^1.0.26",
"react-window": "1.8.11",
"react-window-v2": "npm:react-window@^2.2.7",
"semver": "^7.7.4",
"semver": "^7.8.2",
"string-to-color": "^2.2.2",
"wavesurfer.js": "^7.12.5",
"ws": "^8.20.0",
"wavesurfer.js": "^7.12.7",
"ws": "^8.21.0",
"zod": "^3.25.76",
"zustand": "^5.0.12"
"zustand": "^5.0.14"
},
"devDependencies": {
"@electron-toolkit/eslint-config-prettier": "^3.0.0",
@@ -150,8 +149,8 @@
"@types/electron-localshortcut": "^3.1.3",
"@types/lodash": "^4.17.24",
"@types/md5": "^2.3.6",
"@types/node": "^24.12.2",
"@types/react": "^19.2.14",
"@types/node": "^24.13.1",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/react-window": "^1.8.8",
"@types/source-map-support": "^0.5.10",
@@ -160,32 +159,33 @@
"babel-plugin-react-compiler": "^1.0.0",
"concurrently": "^9.2.1",
"cross-env": "^10.1.0",
"electron": "^41.7.0",
"electron-builder": "^26.8.2",
"electron": "^41.7.1",
"electron-builder": "^26.15.0",
"electron-devtools-installer": "^4.0.0",
"electron-vite": "^4.0.1",
"eslint": "^9.39.4",
"eslint-plugin-perfectionist": "^4.15.1",
"eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-prettier": "^5.5.6",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-hooks": "^7.1.1",
"eslint-plugin-react-refresh": "^0.4.26",
"i18next-parser": "^9.4.0",
"postcss-preset-mantine": "^1.18.0",
"postcss-simple-vars": "^7.0.1",
"prettier": "^3.8.1",
"prettier": "^3.8.3",
"prettier-plugin-packagejson": "^2.5.22",
"stylelint": "^16.26.1",
"stylelint-config-css-modules": "^4.6.0",
"stylelint-config-recess-order": "^7.7.0",
"stylelint-config-standard": "^39.0.1",
"typescript": "^5.9.3",
"vite": "^7.3.1",
"vite": "^7.3.5",
"vite-plugin-conditional-import": "^0.1.7",
"vite-plugin-dynamic-import": "^1.6.0",
"vite-plugin-ejs": "^1.7.0",
"vite-plugin-pwa": "^1.2.0"
"vite-plugin-pwa": "^1.3.0"
},
"packageManager": "pnpm@11.5.2",
"pnpm": {
"onlyBuiltDependencies": [
"electron",
+2186 -2388
View File
File diff suppressed because it is too large Load Diff
+9
View File
@@ -0,0 +1,9 @@
allowBuilds:
abstract-socket: true
electron: true
electron-winstaller: true
esbuild: true
overrides:
"xml2js": "0.5.0"
"react-router": "7.14.0"
+11 -11
View File
@@ -549,19 +549,19 @@
"cancel": "Zrušit",
"forceRestartRequired": "Restartujte pro použití změn… zavřete oznámení pro restartování",
"setting_one": "Nastavení",
"setting_few": "nastavení",
"setting_few": "Nastavení",
"setting_other": "Nastavení",
"version": "Verze",
"title": "Název",
"filter_one": "Filtr",
"filter_few": "filtry",
"filter_few": "Filtry",
"filter_other": "Filtrů",
"filters": "Filtry",
"create": "Vytvořit",
"bitrate": "Datový tok",
"saveAndReplace": "Uložit a nahradit",
"action_one": "Akce",
"action_few": "akce",
"action_few": "Akce",
"action_other": "Akcí",
"playerMustBePaused": "Přehrávač musí být pozastaven",
"confirm": "Potvrdit",
@@ -570,7 +570,7 @@
"comingSoon": "Již brzy…",
"reset": "Resetovat",
"channel_one": "Kanál",
"channel_few": "kanály",
"channel_few": "Kanály",
"channel_other": "Kanálů",
"disable": "Vypnout",
"sortOrder": "Pořadí",
@@ -1161,13 +1161,13 @@
},
"entity": {
"genre_one": "Žánr",
"genre_few": "žánry",
"genre_few": "Žánry",
"genre_other": "Žánry",
"playlistWithCount_one": "{{count}} playlist",
"playlistWithCount_few": "{{count}} playlisty",
"playlistWithCount_other": "{{count}} playlistů",
"playlist_one": "Playlist",
"playlist_few": "playlisty",
"playlist_few": "Playlisty",
"playlist_other": "Playlisty",
"artist_one": "Umělec",
"artist_few": "Umělci",
@@ -1179,7 +1179,7 @@
"albumArtist_few": "Umělci alb",
"albumArtist_other": "Umělci alb",
"track_one": "Skladba",
"track_few": "skladby",
"track_few": "Skladby",
"track_other": "Skladby",
"albumArtistCount_one": "{{count}} umělec alba",
"albumArtistCount_few": "{{count}} umělci alba",
@@ -1194,7 +1194,7 @@
"artistWithCount_few": "{{count}} umělci",
"artistWithCount_other": "{{count}} umělců",
"folder_one": "Složka",
"folder_few": "složky",
"folder_few": "Složky",
"folder_other": "Složky",
"smartPlaylist": "Chytrý $t(entity.playlist, {\"count\": 1})",
"album_one": "Album",
@@ -1209,9 +1209,9 @@
"play_one": "{{count}} přehrání",
"play_few": "{{count}} přehrání",
"play_other": "{{count}} přehrání",
"song_one": "Píseň",
"song_few": "písničky",
"song_other": "Písní",
"song_one": "Skladba",
"song_few": "Skladby",
"song_other": "Skladby",
"radioStation_one": "Stanice rádia",
"radioStation_few": "Stanice rádia",
"radioStation_other": "Stanice rádia",
+29 -29
View File
@@ -1,7 +1,7 @@
{
"action": {
"addToFavorites": "Lisa üksusesse $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "Lisa üksusesse $t(entity.playlist, {\"count\": 1})",
"addToFavorites": "Lisa > $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "Lisa > $t(entity.playlist, {\"count\": 1})",
"addOrRemoveFromSelection": "Lisa või eemalda valikust",
"selectRangeOfItems": "Vali mitu üksust korraga",
"clearQueue": "Tühjenda järjekord",
@@ -206,12 +206,12 @@
"playlistWithCount_one": "{{count}} esitusloend",
"playlistWithCount_other": "{{count}} esitusloendit",
"smartPlaylist": "Nutikas $t(entity.playlist, {\"count\": 1})",
"track_one": "Rada",
"track_other": "Rajad",
"song_one": "Lugu",
"song_other": "Lood",
"trackWithCount_one": "{{count}} rada",
"trackWithCount_other": "{{count}} rada"
"track_one": "Pala",
"track_other": "Palad",
"song_one": "Laul",
"song_other": "Laulud",
"trackWithCount_one": "{{count}} pala",
"trackWithCount_other": "{{count}} pala"
},
"error": {
"apiRouteError": "Päringut ei saanud edastada",
@@ -288,11 +288,11 @@
"releaseDate": "Ilmumiskuupäev",
"releaseYear": "Ilmumisaasta",
"search": "Otsing",
"songCount": "Lugude arv",
"songCount": "Laulude arv",
"explicitStatus": "$t(common.explicitStatus)",
"title": "Pealkiri",
"sortName": "Sortimisnimi",
"trackNumber": "Lugu",
"trackNumber": "Pala",
"toYear": "Aastasse"
},
"filterOperator": {
@@ -342,11 +342,11 @@
"addToPlaylist": {
"create": "Loo $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"noneAdded": "$t(entity.playlist, {\"count\": 1}) '{{playlist}}' ei lisatud ühtegi lugu",
"noneAdded": "$t(entity.playlist, {\"count\": 1}) '{{playlist}}' ei lisatud ühtegi pala",
"input_skipDuplicates": "Jäta duplikaadid vahele",
"searchOrCreate": "Otsi $t(entity.playlist, {\"count\": 2}) või kirjuta uue loomiseks",
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) lisati $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "Lisa esitusloendisse $t(entity.playlist, {\"count\": 1})"
"title": "Lisa > $t(entity.playlist, {\"count\": 1})"
},
"createPlaylist": {
"input_description": "$t(common.description)",
@@ -414,9 +414,9 @@
"input_kind_songs": "Lood",
"input_kind": "Juhuvalikud",
"input_limit_albums": "Mitu albumit?",
"input_limit_songs": "Mitu lugu?",
"input_limit_songs": "Mitu laulu?",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "Mitu lugu?",
"input_limit": "Mitu laulu?",
"input_minYear": "Aastast",
"input_maxYear": "Aastani",
"input_played": "Esita filter",
@@ -587,7 +587,7 @@
"itemDetail": {
"copyPath": "Kopeeri tee lõikelauale",
"copiedPath": "Tee kopeeriti edukalt",
"openFile": "Kuva lugu failihalduris"
"openFile": "Kuva pala failihalduris"
},
"playlist": {
"reorder": "Ümberreastamine on lubatud vaid ID järgi sorteerimisel"
@@ -663,11 +663,11 @@
"next": "Järgmine",
"play": "Esita",
"playbackFetchCancel": "See võtab veidi aega… tühistamiseks sulge teavitus",
"playbackFetchInProgress": "Lugude laadimine…",
"playbackFetchNoResults": "Ühtegi lugu ei leitud",
"playbackFetchInProgress": "Laulude laadimine…",
"playbackFetchNoResults": "Ühtegi laulu ei leitud",
"playbackSpeed": "Taasesituse kiirus",
"playRandom": "Esita juhuslikult",
"playSimilarSongs": "Esita sarnaseid lugusid",
"playSimilarSongs": "Esita sarnaseid laule",
"previous": "Eelmine",
"queue_clear": "Tühjenda järjekord",
"queue_moveToBottom": "Liiguta valitud lõppu",
@@ -733,7 +733,7 @@
"autoDJ_itemCount": "Üksuste arv",
"autoDJ_itemCount_description": "Järjekorda lisatavate üksuste arv",
"autoDJ_timing": "Ajastus",
"autoDJ_timing_description": "Lugude arv järjekorras enne automaatse DJ käivitumist",
"autoDJ_timing_description": "Laulude arv järjekorras enne automaatse DJ käivitumist",
"autoDJ_mode": "Režiim",
"autoDJ_mode_albums": "Albumid",
"autoDJ_mode_description": "Vali, kas lisada järjekorda üksikud lood või terved albumid",
@@ -850,7 +850,7 @@
"externalLinks_description": "Lubab esitaja ja albumi lehtedel näidata väliseid linke (Last.fm, MusicBrainz)",
"externalLinks": "Kuva välised lingid",
"followCurrentSong_description": "Keri esitusjärjekord automaatselt hetkel mängiva looni",
"followCurrentSong": "Jälgi praegust lugu",
"followCurrentSong": "Jälgi praegust laulu",
"followLyric_description": "Keri laulusõnad praegusesse kohta",
"followLyric": "Jälgi laulusõnu",
"font_description": "Määrab rakenduses kasutatava fondi",
@@ -884,13 +884,13 @@
"hotkey_listPlayLast": "Lisa järjekorra lõppu",
"hotkey_listPlayNext": "Esita järgmisena",
"hotkey_listPlayNow": "Esita kohe",
"hotkey_listShowPlayingSong": "Kuva esitatav lugu loendis",
"hotkey_listShowPlayingSong": "Kuva esitatav laul loendis",
"hotkey_navigateHome": "Liigu avalehele",
"hotkey_playbackNext": "Järgmine lugu",
"hotkey_playbackNext": "Järgmine pala",
"hotkey_playbackPause": "Paus",
"hotkey_playbackPlay": "Esita",
"hotkey_playbackPlayPause": "Esita / peata",
"hotkey_playbackPrevious": "Eelmine lugu",
"hotkey_playbackPrevious": "Eelmine pala",
"hotkey_playbackStop": "Peata",
"hotkey_rate0": "Eemalda hinne",
"hotkey_rate1": "Hinne 1 tärn",
@@ -959,26 +959,26 @@
"neteaseTranslation_description": "Sisselülitamisel otsitakse ja kuvatakse võimaluse korral NetEase'ist pärit tõlgitud laulusõnu",
"neteaseTranslation": "Luba NetEase'i tõlked",
"notify": "Luba lauluteavitused",
"notify_description": "Näita teavitust, kui lugu vahetub",
"notify_description": "Näita teavitust, kui laul vahetub",
"pathReplace": "Failitee asendamine",
"pathReplace_description": "Asenda oma serveri vaikimisi failitee",
"pathReplace_optionRemovePrefix": "Eemalda eesliide",
"pathReplace_optionAddPrefix": "Lisa eesliide",
"passwordStore_description": "Millist paroolihoidlat kasutada. Muuda seda juhul, kui paroolide salvestamisega on probleeme",
"passwordStore": "Paroolihoidla",
"playerFilters": "Filtreeri lugusid järjekorrast",
"playerFilters": "Filtreeri laule järjekorrast",
"playerFilters_description": "Jäta lood järjekorda lisamata järgmiste kriteeriumide põhjal",
"playbackStyle_description": "Vali pleieri esitusstiil",
"playbackStyle_optionCrossFade": "Ristvahetus",
"playbackStyle_optionNormal": "Tavaline",
"playbackStyle": "Taasesituse stiil",
"playButtonBehavior_description": "Määrab esitusnupu vaikimisi käitumise lugude järjekorda lisamisel",
"playButtonBehavior_description": "Määrab esitusnupu vaikimisi käitumise laulude järjekorda lisamisel",
"playButtonBehavior_optionAddLast": "$t(player.addLast)",
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
"playButtonBehavior_optionPlay": "$t(player.play)",
"playButtonBehavior_optionPlayShuffled": "$t(player.shuffle)",
"playButtonBehavior": "Esitusnupu käitumine",
"artistRadioCount_description": "Määrab lugude arvu, mis laetakse esitaja- ja looraadio jaoks",
"artistRadioCount_description": "Määrab laulude arvu, mis laetakse esitaja- ja looraadio jaoks",
"artistRadioCount": "Esitaja-/looraadio lugude arv",
"imageResolution": "Pildi resolutsioon",
"imageResolution_description": "Rakenduses kasutatavate piltide resolutsioon. Väärtuse 0 puhul kasutatakse pildi algset resolutsiooni",
@@ -1322,7 +1322,7 @@
"sampleRate": "Diskreetimissagedus",
"size": "Suurus",
"title": "Pealkiri",
"trackNumber": "Lugu",
"trackNumber": "Pala",
"owner": "Omanik",
"channels": "Kanalid",
"songCount": "Lood"
@@ -1339,7 +1339,7 @@
"alignLeft": "Joonda vasakule",
"alignCenter": "Joonda keskele",
"alignRight": "Joonda paremale",
"followCurrentSong": "Jälgi praegust lugu",
"followCurrentSong": "Jälgi praegust laulu",
"displayType": "Kuvamisviis",
"gap": "$t(common.gap)",
"itemGap": "Elementide vahe (px)",
+50 -50
View File
@@ -12,7 +12,7 @@
"delete": "刪除",
"descending": "降冪",
"description": "描述",
"forceRestartRequired": "重新啟動應用程式以使更改生效…關閉通知後即可重啟",
"forceRestartRequired": "重啟以套用變更… 關閉通知後即可重啟",
"menu": "選單",
"action_other": "操作",
"add": "新增",
@@ -31,7 +31,7 @@
"forward": "前進",
"gap": "空隙",
"home": "首頁",
"increase": "增高",
"increase": "提升",
"left": "左",
"limit": "限制",
"manage": "管理",
@@ -40,14 +40,14 @@
"owner": "所有者",
"path": "路徑",
"playerMustBePaused": "播放器必須先暫停",
"previousSong": "上一首$t(entity.track, {\"count\": 1})",
"previousSong": "上一首 $t(entity.track, {\"count\": 1})",
"quit": "退出",
"random": "隨機",
"rating": "評分",
"refresh": "重新整理",
"reset": "重置",
"resetToDefault": "恢復為預設",
"restartRequired": "需要重新啟動應用程式",
"resetToDefault": "重置為預設",
"restartRequired": "需要重新啟動",
"right": "右",
"save": "儲存",
"saveAndReplace": "儲存並取代",
@@ -55,7 +55,7 @@
"search": "搜尋",
"sortOrder": "順序",
"title": "標題",
"trackNumber": "音軌編號",
"trackNumber": "曲目",
"unknown": "未知",
"size": "大小",
"version": "版本",
@@ -72,7 +72,7 @@
"name": "名稱",
"no": "否",
"none": "無",
"noResultsFromQuery": "查詢到匹配結果",
"noResultsFromQuery": "查詢回傳了無結果",
"note": "注釋",
"additionalParticipants": "額外參與者",
"newVersion": "新版本 ({{version}}) 已被安裝",
@@ -105,8 +105,8 @@
"clean": "清除",
"explicitStatus": "露骨狀態",
"explicit": "露骨",
"gridRows": "網格",
"noFilters": "未設定任何過濾器",
"gridRows": "網格",
"noFilters": "未配置篩選器",
"countSelected": "{{count}} 個已選取",
"retry": "重試",
"example": "範例",
@@ -116,45 +116,45 @@
"itemsMore": "{{count}} 更多",
"filter_single": "單選",
"filter_multiple": "複選",
"newVersionAvailable": "有新版本可供使用",
"newVersionAvailable": "有新版本可用",
"numberOfResults": "{{numberOfResults}} 項結果",
"grouping": "分組",
"back": "返回",
"openFolder": "開啟資料夾"
},
"error": {
"endpointNotImplementedError": "{{serverType}} 尚未實端點 {{endpoint}}",
"apiRouteError": "請求失敗:無法路由",
"audioDeviceFetchError": "無法取得音訊設備",
"endpointNotImplementedError": "{{serverType}} 尚未實端點 {{endpoint}}",
"apiRouteError": "無法路由請求",
"audioDeviceFetchError": "嘗試取得音訊裝置時發生了錯誤",
"authenticationFailed": "驗證失敗",
"credentialsRequired": "需要憑證",
"genericError": "發生了錯誤",
"invalidServer": "無效的伺服器",
"localFontAccessDenied": "無法取得本地字型",
"localFontAccessDenied": "存取本地字型被拒絕",
"loginRateError": "登入請求嘗試次數過多,請稍後再試",
"remoteDisableError": "$t(common.disable)遠端伺服器時出現錯誤",
"remoteEnableError": "$t(common.enable)遠端伺服器時出現錯誤",
"remotePortError": "設定遠端伺服器連接埠時發生錯誤",
"remotePortWarning": "重啟伺服器使新連接埠生效",
"remoteDisableError": "嘗試 $t(common.disable) 遠端伺服器時發生了錯誤",
"remoteEnableError": "嘗試 $t(common.enable) 遠端伺服器時發生了錯誤",
"remotePortError": "嘗試設定遠端伺服器連接埠時發生錯誤",
"remotePortWarning": "重啟伺服器以套用新連接埠",
"serverRequired": "需要伺服器",
"sessionExpiredError": "工作階段已過期",
"systemFontError": "嘗試取得系統字型時出現錯誤",
"sessionExpiredError": "您的工作階段已過期",
"systemFontError": "嘗試取得系統字型時發生了錯誤",
"serverNotSelectedError": "未選擇伺服器",
"mpvRequired": "需要 MPV",
"playbackError": "無法播放媒體",
"badAlbum": "您看到此頁面是因為這首歌不是專輯的一部分。如果您的音樂資料夾頂層有一首歌,則很可能會看到此問題。 Jellyfin 僅將資料夾中的曲目分組",
"playbackError": "嘗試播放媒體時發生了錯誤",
"badAlbum": "您看到此頁面是因為這首歌不是專輯的一部分。如果您的音樂資料夾頂層有一首歌,則很可能會看到此問題。 Jellyfin 僅將資料夾中的曲目分組",
"badValue": "無效選項「{{value}}」。該值不再存在",
"networkError": "發生網路錯誤",
"notificationDenied": "通知權限被拒絕。此設定無",
"networkError": "發生網路錯誤",
"notificationDenied": "通知權限被拒絕。此設定無影響",
"openError": "無法開啟檔案",
"multipleServerSaveQueueError": "播放佇列中包含不是來自前伺服器的歌曲此操作不受支援",
"multipleServerSaveQueueError": "播放佇列中包含了並非來自前伺服器的歌曲此操作不受支援",
"saveQueueFailed": "儲存播放佇列失敗",
"settingsSyncError": "偵測到渲染器與主程式之間的設定不一致請重新啟動應用程式以套用變更",
"noNetwork": "伺服器無法連線",
"noNetworkDescription": "無法連接到此伺服器",
"settingsSyncError": "偵測到渲染器與主程式之間的設定不一致請重新啟動應用程式以套用變更",
"noNetwork": "伺服器不可用",
"noNetworkDescription": "無法連線至此伺服器",
"invalidJson": "無效的 JSON",
"serverLockSingleServer": "當伺服器鎖定時只允許一個伺服器",
"playbackPausedDueToError": "發生錯誤,已停止播放"
"playbackPausedDueToError": "播放因錯誤而暫停"
},
"page": {
"contextMenu": {
@@ -269,7 +269,7 @@
"transcoding": "轉碼",
"discord": "Discord",
"queryBuilder": "查詢建構器",
"playerFilters": "播放過濾器",
"playerFilters": "播放篩選器",
"logger": "日誌記錄器",
"lyricsDisplay": "歌詞顯示"
},
@@ -713,7 +713,7 @@
"followCurrentSong_description": "自動將播放佇列捲動至當前播放的歌曲",
"followCurrentSong": "跟隨當前歌曲",
"playerbarSlider_description": "不建議在速度緩慢或計費的網路下使用波形",
"playerFilters": "從佇列中過濾歌曲",
"playerFilters": "從佇列中篩選歌曲",
"playerFilters_description": "根據以下條件,排除要新增至佇列中的歌曲",
"autoDJ": "Auto DJ",
"autoDJ_itemCount": "項目數量",
@@ -764,7 +764,7 @@
"sidebarPlaylistSorting_description": "允許在側邊欄中使用拖放手動對播放清單進行排序,而不是預設的伺服器排序",
"sidebarPlaylistListFilterRegex_description": "在側邊欄中隱藏與此正規表達式匹配的播放清單",
"sidebarPlaylistListFilterRegex_placeholder": "範例: ^daily mix.*",
"sidebarPlaylistListFilterRegex": "播放清單過濾器正規表達式",
"sidebarPlaylistListFilterRegex": "播放清單篩選器正規表達式",
"blurExplicitImages": "模糊露骨圖片",
"blurExplicitImages_description": "標記為露骨的專輯和歌曲封面將被模糊",
"releaseChannel_optionAlpha": "Alpha (每日建構版)",
@@ -888,7 +888,7 @@
"size": "$t(common.size)",
"title": "$t(common.title)",
"titleCombined": "$t(common.title)(合併)",
"trackNumber": "曲目編號",
"trackNumber": "曲目",
"year": "$t(common.year)",
"rating": "$t(common.rating)",
"codec": "$t(common.codec)",
@@ -931,7 +931,7 @@
"bpm": "BPM",
"songCount": "曲目",
"title": "標題",
"trackNumber": "曲目編號",
"trackNumber": "曲目",
"size": "大小",
"codec": "編解碼器",
"owner": "擁有者",
@@ -998,19 +998,19 @@
"genreWithCount_other": "{{count}} 種曲風",
"playlist_other": "播放清單",
"playlistWithCount_other": "{{count}} 個播放清單",
"smartPlaylist": "智慧$t(entity.playlist, {\"count\": 1})",
"smartPlaylist": "智慧 $t(entity.playlist, {\"count\": 1})",
"track_other": "曲目",
"trackWithCount_other": "{{count}} 曲目",
"trackWithCount_other": "{{count}} 曲目",
"albumWithCount_other": "{{count}} 張專輯",
"play_other": "{{count}}次播放",
"play_other": "{{count}} 次播放",
"song_other": "歌曲",
"radioStation_other": "電台",
"radioStationWithCount_other": "{{count}} 個電台"
},
"filter": {
"albumCount": "$t(entity.album, {\"count\": 2})數",
"albumCount": "$t(entity.album, {\"count\": 2}) 數",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "個人簡介",
"biography": "簡介",
"bitrate": "位元率",
"bpm": "BPM",
"channels": "$t(common.channel, {\"count\": 2})",
@@ -1023,14 +1023,14 @@
"id": "ID",
"fromYear": "從年份",
"genre": "$t(entity.genre, {\"count\": 1})",
"isCompilation": "為合輯",
"isFavorited": "收藏",
"isPublic": "公開",
"isRated": "已評分",
"isCompilation": "是否為合輯",
"isFavorited": "是否為收藏",
"isPublic": "是否為公開",
"isRated": "是否已評分",
"name": "名稱",
"note": "注釋",
"isRecentlyPlayed": "最近播放過",
"lastPlayed": "上次播放",
"isRecentlyPlayed": "是否最近播放過",
"lastPlayed": "上次播放",
"mostPlayed": "播放最多",
"owner": "$t(common.owner)",
"path": "路徑",
@@ -1048,7 +1048,7 @@
"releaseYear": "發行年份",
"search": "搜尋",
"title": "標題",
"toYear": "年份",
"toYear": "年份",
"trackNumber": "曲目",
"explicitStatus": "$t(common.explicitStatus)",
"sortName": "排序名稱",
@@ -1102,7 +1102,7 @@
"title": "查詢編輯器",
"addRuleGroup": "新增規則群組",
"removeRuleGroup": "移除規則群組",
"resetToDefault": "恢復為預設",
"resetToDefault": "重置為預設",
"clearFilters": "清除篩選"
},
"updateServer": {
@@ -1143,8 +1143,8 @@
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "多少曲目?",
"input_minYear": "起始年份",
"input_maxYear": "結束年份",
"input_played": "播放過濾器",
"input_maxYear": "年份",
"input_played": "播放篩選器",
"input_played_optionAll": "所有曲目",
"input_played_optionUnplayed": "僅未播放的曲目",
"input_played_optionPlayed": "僅播放過的曲目",
@@ -1381,7 +1381,7 @@
}
},
"systemAudioCaptureFailed": "無法開始擷取:{{message}}",
"systemAudioNoAudioTrack": "沒有回傳任何音軌。確保在提示時啟用音訊擷取。",
"systemAudioNoAudioTrack": "沒有回傳任何曲目。確保在提示時啟用音訊擷取。",
"systemAudioConsentAllow": "允許",
"systemAudioConsentBody": "此視覺化器需要存取系統音訊才能運作",
"systemAudioConsentDecline": "拒絕",
+1 -1
View File
@@ -72,7 +72,7 @@ export const orderSearchResults = (args: {
searchResults = Array.from(combinedResults.values());
} else {
searchResults = fuse.search<InternetProviderLyricSearchResponse>({
searchResults = fuse.search({
...(params.artist && { artist: params.artist }),
...(params.name && { name: params.name }),
});
@@ -224,25 +224,26 @@ export const PlaylistQueryEditor = ({
return detailQuery?.data?.rules?.order || 'asc';
}, [detailQuery?.data?.rules?.order, detailQuery?.data?.rules?.sort]);
const appliedQuery = appliedJsonState?.query;
const detailQueryRules = detailQuery?.data?.rules;
const effectiveQuery = useMemo(
() =>
appliedJsonState?.query ??
(detailQuery?.data?.rules?.all
? { all: detailQuery.data.rules.all }
: detailQuery?.data?.rules?.any
? { any: detailQuery.data.rules.any }
: detailQuery?.data?.rules),
[appliedJsonState?.query, detailQuery?.data?.rules],
appliedQuery ??
(detailQueryRules?.all
? { all: detailQueryRules.all }
: detailQueryRules?.any
? { any: detailQueryRules.any }
: detailQueryRules),
[appliedQuery, detailQueryRules],
);
const effectiveLimit = appliedJsonState?.limit ?? detailQuery?.data?.rules?.limit;
const effectiveLimitPercent =
appliedJsonState?.limitPercent ?? detailQuery?.data?.rules?.limitPercent;
const appliedSort = appliedJsonState?.sort;
const effectiveSortBy = useMemo(
() =>
(appliedJsonState?.sort ? [appliedJsonState.sort] : parseSortBy()) as
| SongListSort
| SongListSort[],
[appliedJsonState?.sort, parseSortBy],
() => (appliedSort ? [appliedSort] : parseSortBy()) as SongListSort | SongListSort[],
[appliedSort, parseSortBy],
);
const effectiveSortOrder = appliedJsonState?.sort
? appliedJsonState.sort.startsWith('-')
@@ -298,6 +298,7 @@ export const useServerAuthenticated = () => {
await new Promise((resolve) => setTimeout(resolve, NETWORK_RETRY_DELAY_MS));
// Retry authentication
// eslint-disable-next-line react-hooks/immutability
return authenticateServer(serverWithAuth, nextRetry);
}
+1 -1
View File
@@ -189,7 +189,7 @@ const appRouterModals = {
export const AppRouter = () => {
const router = (
<HashRouter unstable_useTransitions={false}>
<HashRouter>
<ModalsProvider modals={appRouterModals}>
<RouterErrorBoundary>
<Routes>