Compare commits

..

78 Commits

Author SHA1 Message Date
jeffvli 854e7cc67e update to v1.4.0 2026-02-01 19:11:27 -08:00
Hosted Weblate c3920cbcc0 Translated using Weblate (Indonesian)
Currently translated at 100.0% (1126 of 1126 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (1126 of 1126 strings)

Translated using Weblate (Russian)

Currently translated at 73.3% (826 of 1126 strings)

Translated using Weblate (Russian)

Currently translated at 73.3% (826 of 1126 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1126 of 1126 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 92.5% (1042 of 1126 strings)

Translated using Weblate (Japanese)

Currently translated at 85.3% (961 of 1126 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 92.2% (1039 of 1126 strings)

Translated using Weblate (Catalan)

Currently translated at 98.8% (1113 of 1126 strings)

Translated using Weblate (Arabic)

Currently translated at 10.0% (113 of 1126 strings)

Translated using Weblate (Swedish)

Currently translated at 33.6% (379 of 1126 strings)

Translated using Weblate (Chinese (Traditional Han script))

Currently translated at 91.6% (1032 of 1126 strings)

Translated using Weblate (Tamil)

Currently translated at 58.3% (657 of 1126 strings)

Translated using Weblate (Indonesian)

Currently translated at 56.1% (632 of 1126 strings)

Translated using Weblate (Korean)

Currently translated at 38.0% (428 of 1126 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 61.1% (689 of 1126 strings)

Translated using Weblate (Spanish)

Currently translated at 99.3% (1119 of 1126 strings)

Translated using Weblate (Polish)

Currently translated at 99.3% (1119 of 1126 strings)

Translated using Weblate (Italian)

Currently translated at 60.2% (678 of 1126 strings)

Translated using Weblate (Hungarian)

Currently translated at 81.9% (923 of 1126 strings)

Translated using Weblate (Basque)

Currently translated at 82.9% (934 of 1126 strings)

Translated using Weblate (Japanese)

Currently translated at 84.7% (954 of 1126 strings)

Translated using Weblate (Portuguese)

Currently translated at 36.6% (413 of 1126 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 36.3% (409 of 1126 strings)

Translated using Weblate (Serbian)

Currently translated at 44.4% (501 of 1126 strings)

Translated using Weblate (Slovenian)

Currently translated at 43.7% (493 of 1126 strings)

Translated using Weblate (Turkish)

Currently translated at 61.7% (695 of 1126 strings)

Translated using Weblate (Czech)

Currently translated at 99.3% (1119 of 1126 strings)

Translated using Weblate (Dutch)

Currently translated at 73.3% (826 of 1126 strings)

Translated using Weblate (Persian)

Currently translated at 44.8% (505 of 1126 strings)

Translated using Weblate (Slovak)

Currently translated at 59.6% (672 of 1126 strings)

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 85.5% (963 of 1126 strings)

Translated using Weblate (Finnish)

Currently translated at 62.5% (704 of 1126 strings)

Co-authored-by: Aitor Astorga <a.astorga.sdv@protonmail.com>
Co-authored-by: Alexander Temnikov <sachat2006@gmail.com>
Co-authored-by: Arif Budiman <arifpedia@gmail.com>
Co-authored-by: Aurora <arci@anche.no>
Co-authored-by: Darwin <daerwendeshu@outlook.com>
Co-authored-by: Fadilah Riczky <friczky@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hadi <xhopeter@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ilija <zojka2g@gmail.com>
Co-authored-by: Joao <joaohirasawaa@gmail.com>
Co-authored-by: Jonne Saloranta <saloranta.jonne@gmail.com>
Co-authored-by: Joren Vansteenkiste <vansteenkiste.joren@telenet.be>
Co-authored-by: Martin Stojanoski <martin.stojanoski2000@gmail.com>
Co-authored-by: Mattias <mattiasghodsian@gmail.com>
Co-authored-by: Mücahit Kaya <kaya-mucahit@outlook.com>
Co-authored-by: Ondo <SparkyOndo@proton.me>
Co-authored-by: WilliamNT <hwbendeguz@gmail.com>
Co-authored-by: York <goog10216922@gmail.com>
Co-authored-by: aorinngoDo <aorinngo@email.cz>
Co-authored-by: haha4ni <haha4ni@hotmail.com>
Co-authored-by: karigane <169052233+karigane-cha@users.noreply.github.com>
Co-authored-by: klodrik <klodrik@zoominn.no>
Co-authored-by: peter cerny <posli.to.semka@gmail.com>
Co-authored-by: skajmer <skajmer@protonmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: tgp0625 <tgp0625@naver.com>
Co-authored-by: xB <abxb19@gmail.com>
Co-authored-by: Роман <romkaeliseev@gmail.com>
Co-authored-by: தமிழ்நேரம் <tamilneram247@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ar/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ca/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/eu/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fa/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fi/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/hu/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/id/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ja/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ko/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pt/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/sk/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/sl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/sr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/sv/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ta/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/tr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/
Translation: feishin/Translation
2026-02-02 04:10:51 +01:00
jeffvli 6a68cebc93 increase fullscreen overlay z-index above titlebar 2026-02-01 19:10:38 -08:00
jeffvli ba474205c8 bump electron to v39.4.0 2026-02-01 18:59:46 -08:00
jeffvli dffe5bfffb fix duplicate import merge error 2026-02-01 18:56:48 -08:00
jeffvli 7615c0d2ba track image viewport state in sessionStorage 2026-02-01 18:55:08 -08:00
jeffvli 216353837c decrease zIndex of error boundary ServerSelector to prevent display above FullScreenPlayer 2026-02-01 18:55:08 -08:00
jeffvli 7f180b2c50 add bottom padding to fullscreenplayer header 2026-02-01 18:55:08 -08:00
Exceen ce46e0f351 feat: add regex filter setting for sidebar playlists (#1589)
* added regex filter for sidebar playlists

---------

Co-authored-by: jeffvli <jeffvictorli@gmail.com>
2026-02-01 18:25:37 -08:00
jeffvli 0999b93b47 add missing border radius to item card container 2026-01-31 02:41:25 -08:00
jeffvli 63c21cf7c2 add 2 line clamp to genre image placeholder 2026-01-31 01:42:51 -08:00
jeffvli 72ab1dc8a0 add download context menu action for browser 2026-01-31 00:41:48 -08:00
jeffvli 131e1ec11d support filter pinning on the genre detail list 2026-01-30 21:42:17 -08:00
jeffvli 4d60f5b8d9 add genre image card placeholder 2026-01-30 21:39:05 -08:00
jeffvli 6962a05c96 fix icon and wrap on collection title 2026-01-30 21:29:33 -08:00
jeffvli 25ee57da1c remove filter modal from playlist list header 2026-01-30 21:12:18 -08:00
jeffvli 37e41c9c8e re-add background to modal header 2026-01-30 21:10:59 -08:00
jeffvli 69b6821deb add secondary sort for album release date 2026-01-30 21:07:44 -08:00
jeffvli 8e6078515a add spinner for color loading fallback 2026-01-30 21:07:07 -08:00
jeffvli 73868dbcbf add translation keys for window bar 2026-01-30 20:51:24 -08:00
jeffvli 49ae774d48 fix translation files to use correct plurality references 2026-01-30 20:51:12 -08:00
Hosted Weblate 5b3e2da95b Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 85.8% (962 of 1120 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (1120 of 1120 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (1120 of 1120 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1120 of 1120 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (1119 of 1119 strings)

Translated using Weblate (Japanese)

Currently translated at 85.3% (955 of 1119 strings)

Translated using Weblate (Russian)

Currently translated at 67.1% (751 of 1119 strings)

Translated using Weblate (Basque)

Currently translated at 78.0% (869 of 1114 strings)

Translated using Weblate (Basque)

Currently translated at 77.9% (868 of 1114 strings)

Translated using Weblate (Japanese)

Currently translated at 84.0% (936 of 1114 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1114 of 1114 strings)

Translated using Weblate (Japanese)

Currently translated at 83.9% (935 of 1114 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1114 of 1114 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (1114 of 1114 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (1114 of 1114 strings)

Translated using Weblate (Czech)

Currently translated at 97.3% (1084 of 1114 strings)

Translated using Weblate (Danish)

Currently translated at 0.3% (4 of 1114 strings)

Added translation using Weblate (Danish)

Translated using Weblate (Czech)

Currently translated at 100.0% (1114 of 1114 strings)

Translated using Weblate (Basque)

Currently translated at 84.5% (942 of 1114 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1114 of 1114 strings)

Translated using Weblate (Basque)

Currently translated at 84.5% (938 of 1110 strings)

Translated using Weblate (Basque)

Currently translated at 84.3% (936 of 1110 strings)

Translated using Weblate (Dutch)

Currently translated at 74.5% (828 of 1110 strings)

Translated using Weblate (Turkish)

Currently translated at 63.0% (700 of 1110 strings)

Translated using Weblate (French)

Currently translated at 92.9% (1032 of 1110 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (1110 of 1110 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (1110 of 1110 strings)

Translated using Weblate (Catalan)

Currently translated at 100.0% (1110 of 1110 strings)

Translated using Weblate (Russian)

Currently translated at 72.0% (800 of 1110 strings)

Co-authored-by: Aitor Astorga <a.astorga.sdv@protonmail.com>
Co-authored-by: Denisa Alicia Rissa <denisarissa@gmail.com>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Koray HATIRNAZ <hatirnazkoray@gmail.com>
Co-authored-by: KosmoMoustache <kosmomoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Ondo <SparkyOndo@proton.me>
Co-authored-by: haha4ni <haha4ni@hotmail.com>
Co-authored-by: jay <jayma13222@gmail.com>
Co-authored-by: karigane <169052233+karigane-cha@users.noreply.github.com>
Co-authored-by: skajmer <skajmer@protonmail.com>
Co-authored-by: Роман <romkaeliseev@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ca/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/da/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/eu/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ja/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/tr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/
Translation: feishin/Translation
2026-01-31 04:03:41 +00:00
jeffvli 1a5e513526 add list filter collections 2026-01-30 20:03:27 -08:00
jeffvli ad83e95a46 decouple audio device setting property depending on player type (#1617) 2026-01-30 17:55:25 -08:00
jeffvli bdd5c78d39 add custom skeleton component, remove dependency 2026-01-30 17:50:34 -08:00
Damien Erambert 6a0c2213a5 Prevent scrollbar appearing in album metadata column on large viewport (#1629)
* Prevent layout shifting due to scrollbar appearing in album metadata column
2026-01-30 17:48:55 -08:00
jeffvli 99515591f1 conditionally load analytics script based on disabled status (#1630) 2026-01-30 12:20:04 -08:00
Steffen Martinsen b8228844df feat: Add support for player controls in macOS dock menu (#1627)
* Added simple macOS dock menu similar to tray menu

* Enhanced and moved dock menu to darwin folder and enabled mpris on macOS to support play/pause state

* Added missing property sortName to silence TS error
2026-01-30 12:01:02 -08:00
jeffvli 7613bc32c2 decrease image debounce duration 2026-01-29 22:28:01 -08:00
jeffvli 4d81dc49fa fix global hotkey volume step (#1614) 2026-01-29 22:23:09 -08:00
jeffvli 8c65775310 fix selection state on ItemGridList when single select mode 2026-01-29 21:34:51 -08:00
jeffvli 74c9d0ca6f remove eager loading prop from Image 2026-01-29 21:32:10 -08:00
jeffvli 871bb9da3a update lyrics autofetcher to async search 2026-01-29 20:52:36 -08:00
jeffvli 8ae1fb4fdb fix type errors 2026-01-29 20:46:07 -08:00
jeffvli 1a39182d80 fix spoiler line breaks (#1622) 2026-01-29 20:43:57 -08:00
jeffvli a1a837298f fix title/description of home feature style setting 2026-01-29 19:58:54 -08:00
jeffvli 74b0e38f7e remove direct references to plural translation keys 2026-01-29 19:52:42 -08:00
jeffvli c1f48b21a4 add config to show/hide table header 2026-01-29 19:43:00 -08:00
jeffvli a496c04701 persist image render after entering viewport 2026-01-29 19:12:07 -08:00
das_ 590a7c7dfa Fix Discord details url exceeding max length (#1620)
* fix discord details url exceeding max length
2026-01-28 21:08:00 -08:00
Mike Benz 796629b4e6 Enable Playlist in sidebar to be sorted (#1542)
* add playlist reorder in sidebar
2026-01-28 20:54:20 -08:00
jeffvli ced3b491ff add SortName client side sort option (#1612) 2026-01-28 20:45:47 -08:00
jeffvli 78aebd7c5d add configuration to revert to single-select ItemGrid behavior 2026-01-28 20:14:05 -08:00
jeffvli 9532601efe make compact image container full width 2026-01-28 19:54:14 -08:00
jeffvli bd34a729b3 set debounce / viewport for images used in the app 2026-01-28 19:49:37 -08:00
jeffvli 23990b581b add enableDebounce prop to Image to conditionally debounce image loading 2026-01-24 18:08:44 -08:00
jeffvli f786da52bb add custom useDebouncedValue hook to handle initial set value 2026-01-24 17:42:53 -08:00
jeffvli ee145d6f65 add enableViewport prop to Image to conditionally lazy load 2026-01-24 17:27:32 -08:00
jeffvli c310ad65ef handle i18n plurality references with context instead of direct key access (#1591) 2026-01-24 17:20:11 -08:00
jeffvli 26284e2412 decrease long animation durations (#1553) 2026-01-24 17:08:06 -08:00
Kendall Garner 6e4cd6912b enable refresh for all home carousels, and fix favorite/rating on home 2026-01-24 14:54:29 -08:00
jeffvli 974313c30b add hebrew font 2026-01-24 11:57:14 -08:00
marank 8ed586e2f3 add support for disc subtitles from subsonic discTitles field (#1609) 2026-01-23 21:30:09 -08:00
marank f016d2cdf4 Cover art support for folder view (Subsonic servers only) (#1608)
* add coverArt support for subsonic folders
2026-01-23 21:26:51 -08:00
Jeff c79e041777 Fix macOS tray icon (#1600)
* add 32x32 icon for macOS tray

* add 16x16 image

* add black/transparent icon
2026-01-23 21:10:49 -08:00
jeffvli a50984d2cb remove memoization from individual table columns
- causes issues with drag/drop state
2026-01-23 20:43:28 -08:00
jeffvli 819945dcba fix issue where the first row would not show row border 2026-01-23 19:12:07 -08:00
jeffvli 9f81bff020 fix swipe area on grid carousel 2026-01-23 19:10:36 -08:00
jeffvli b45594515e retry autofit calculation to prevent zero value on initial render and memoization 2026-01-22 02:53:25 -08:00
jeffvli 3a5d701195 fix genres detail content being constrained to maxWidth 2026-01-22 02:10:13 -08:00
jeffvli 34e037725c disable autoscroll on non-list tables 2026-01-22 02:08:09 -08:00
jeffvli b4fd7b6a66 add prop to disable custom autoscroll on ItemTableList 2026-01-22 02:07:24 -08:00
jeffvli 81af324260 handle radio metadata for mpris / mediasession (#1586) 2026-01-22 01:30:45 -08:00
jeffvli a5541745c3 add toggle for single/multiple home feature carousel (#1581) (#1412) 2026-01-22 01:18:34 -08:00
jay 39d691d528 fix: stop volume slider clicks from opening full screen (#1585)
* fix volume slider clicks from opening full screen
2026-01-22 01:01:06 -08:00
jeffvli 0c1537e5ef prevent duplicate audio device in selector (#1598) 2026-01-22 00:33:52 -08:00
jeffvli 3405f853e3 allow swiping on the the grid carousel title area (#1521) 2026-01-22 00:33:52 -08:00
jeffvli 8b0b53029c fix missing autoscroll cleanup on ScrollArea 2026-01-22 00:33:51 -08:00
jeffvli f6012d3b03 add more memoization to the ItemTableList 2026-01-22 00:33:51 -08:00
jeffvli f4072c183b refactor feature hooks to be conditionally initialized 2026-01-21 02:23:25 -08:00
jeffvli 9a4a8eb742 refactor some usePlayerSong consumers to only fetch needed properties 2026-01-21 02:02:49 -08:00
jeffvli dbfb547af9 remove favorite/rating handlers from PlayerContext to prevent rerenders from consumers 2026-01-21 01:57:47 -08:00
jeffvli 0492b867aa optimize rating/favorite to prevent blocking UI 2026-01-21 01:38:11 -08:00
jeffvli b7cbb3055a fix memory leak on table autoscroll 2026-01-21 00:32:48 -08:00
jeffvli c3c18e22ea add butterchurn presets ignore constant for broken presets 2026-01-20 18:02:59 -08:00
jeffvli 9318d00a5b refactor butterchurn state to prevent rerender flicker on cycle 2026-01-20 17:58:58 -08:00
jeffvli a5940a9124 fix item grid calling onScrollEnd on initial render 2026-01-20 15:41:19 -08:00
jeffvli 9a8986834e remove wait for color calc on detail pages causing extra render 2026-01-20 15:40:48 -08:00
218 changed files with 8614 additions and 4691 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

+1 -1
View File
@@ -1,7 +1,7 @@
appId: org.jeffvli.feishin
productName: Feishin
artifactName: ${productName}-${version}-${os}-${arch}.${ext}
electronVersion: 39.2.7
electronVersion: 39.4.0
directories:
buildResources: assets
files:
+1 -1
View File
@@ -1,7 +1,7 @@
appId: org.jeffvli.feishin
productName: Feishin
artifactName: ${productName}-${version}-${os}-${arch}.${ext}
electronVersion: 39.2.7
electronVersion: 39.4.0
directories:
buildResources: assets
files:
+2 -3
View File
@@ -1,6 +1,6 @@
{
"name": "feishin",
"version": "1.3.0",
"version": "1.4.0",
"description": "A modern self-hosted music player.",
"keywords": [
"subsonic",
@@ -120,7 +120,6 @@
"react-i18next": "^16.3.3",
"react-icons": "^5.5.0",
"react-image": "^4.1.0",
"react-loading-skeleton": "^3.5.0",
"react-player": "^2.16.0",
"react-router": "^7.9.6",
"react-split-pane": "^3.0.4",
@@ -150,7 +149,7 @@
"@vitejs/plugin-react": "^5.1.1",
"concurrently": "^9.2.1",
"cross-env": "^10.1.0",
"electron": "^39.2.7",
"electron": "^39.4.0",
"electron-builder": "^26.0.12",
"electron-devtools-installer": "^4.0.0",
"electron-vite": "^4.0.1",
+14 -36
View File
@@ -19,10 +19,10 @@ importers:
version: 1.1.0
'@electron-toolkit/preload':
specifier: ^3.0.1
version: 3.0.2(electron@39.2.7)
version: 3.0.2(electron@39.4.0)
'@electron-toolkit/utils':
specifier: ^4.0.0
version: 4.0.0(electron@39.2.7)
version: 4.0.0(electron@39.4.0)
'@mantine/colors-generator':
specifier: ^8.3.8
version: 8.3.8(chroma-js@3.1.2)
@@ -185,9 +185,6 @@ importers:
react-image:
specifier: ^4.1.0
version: 4.1.0(@babel/runtime@7.28.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react-loading-skeleton:
specifier: ^3.5.0
version: 3.5.0(react@19.1.0)
react-player:
specifier: ^2.16.0
version: 2.16.0(react@19.1.0)
@@ -271,8 +268,8 @@ importers:
specifier: ^10.1.0
version: 10.1.0
electron:
specifier: ^39.2.7
version: 39.2.7
specifier: ^39.4.0
version: 39.4.0
electron-builder:
specifier: ^26.0.12
version: 26.0.12(electron-builder-squirrel-windows@26.0.12)
@@ -2865,8 +2862,8 @@ packages:
resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==}
engines: {node: '>=8.0.0'}
electron@39.2.7:
resolution: {integrity: sha512-KU0uFS6LSTh4aOIC3miolcbizOFP7N1M46VTYVfqIgFiuA2ilfNaOHLDS9tCMvwwHRowAsvqBrh9NgMXcTOHCQ==}
electron@39.4.0:
resolution: {integrity: sha512-NCK/FTAqgG/N+09OXFES6bubamgPZs7TEPIjWZIrbEnm8GzEwxC22ZG6SEPid2DmJnJmBurJ6M0G4EShdSc28Q==}
engines: {node: '>= 12.20.55'}
hasBin: true
@@ -3791,9 +3788,6 @@ packages:
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
jsonfile@6.2.0:
resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==}
@@ -4572,11 +4566,6 @@ packages:
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
react-loading-skeleton@3.5.0:
resolution: {integrity: sha512-gxxSyLbrEAdXTKgfbpBEFZCO/P153DnqSCQau2+o6lNy1jgMRr2MmRmOzMmyrwSaSYLRB8g7b0waYPmUjz7IhQ==}
peerDependencies:
react: '>=16.8.0'
react-number-format@5.4.4:
resolution: {integrity: sha512-wOmoNZoOpvMminhifQYiYSTCLUDOiUbBunrMrMjA+dV52sY+vck1S4UhR6PkgnoCquvvMSeJjErXZ4qSaWCliA==}
peerDependencies:
@@ -6702,17 +6691,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@electron-toolkit/preload@3.0.2(electron@39.2.7)':
'@electron-toolkit/preload@3.0.2(electron@39.4.0)':
dependencies:
electron: 39.2.7
electron: 39.4.0
'@electron-toolkit/tsconfig@2.0.0(@types/node@24.10.1)':
dependencies:
'@types/node': 24.10.1
'@electron-toolkit/utils@4.0.0(electron@39.2.7)':
'@electron-toolkit/utils@4.0.0(electron@39.4.0)':
dependencies:
electron: 39.2.7
electron: 39.4.0
'@electron/asar@3.2.18':
dependencies:
@@ -6807,7 +6796,7 @@ snapshots:
'@malept/cross-spawn-promise': 2.0.0
debug: 4.4.3
dir-compare: 4.2.0
fs-extra: 11.3.2
fs-extra: 11.3.3
minimatch: 9.0.5
plist: 3.1.0
transitivePeerDependencies:
@@ -7621,7 +7610,7 @@ snapshots:
'@types/electron-localshortcut@3.1.3':
dependencies:
electron: 39.2.7
electron: 39.4.0
transitivePeerDependencies:
- supports-color
@@ -8778,7 +8767,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
electron@39.2.7:
electron@39.4.0:
dependencies:
'@electron/get': 2.0.3
'@types/node': 22.15.32
@@ -9230,7 +9219,7 @@ snapshots:
fs-extra@10.1.0:
dependencies:
graceful-fs: 4.2.11
jsonfile: 6.1.0
jsonfile: 6.2.0
universalify: 2.0.1
fs-extra@11.3.2:
@@ -9244,7 +9233,6 @@ snapshots:
graceful-fs: 4.2.11
jsonfile: 6.2.0
universalify: 2.0.1
optional: true
fs-extra@7.0.1:
dependencies:
@@ -9875,12 +9863,6 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
jsonfile@6.1.0:
dependencies:
universalify: 2.0.1
optionalDependencies:
graceful-fs: 4.2.11
jsonfile@6.2.0:
dependencies:
universalify: 2.0.1
@@ -10579,10 +10561,6 @@ snapshots:
react-is@16.13.1: {}
react-loading-skeleton@3.5.0(react@19.1.0):
dependencies:
react: 19.1.0
react-number-format@5.4.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
+16 -11
View File
@@ -1,23 +1,23 @@
{
"action": {
"addToFavorites": "إضافة الى $t(entity.favorite_other)",
"addToPlaylist": "إضافة الى $t(entity.playlist_one)",
"addToFavorites": "إضافة الى $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "إضافة الى $t(entity.playlist, {\"count\": 1})",
"clearQueue": "مسح قائمة الإنتظار",
"createPlaylist": "إنشاء $t(entity.playlist_one)",
"deletePlaylist": "حذف $t(entity.playlist_one)",
"createPlaylist": "إنشاء $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "حذف $t(entity.playlist, {\"count\": 1})",
"deselectAll": "إلغاء تحديد الكل",
"editPlaylist": "تعديل $t(entity.playlist_one)",
"editPlaylist": "تعديل $t(entity.playlist, {\"count\": 1})",
"goToPage": "اذهب الى صفحة",
"moveToNext": "الذهاب الى التالي",
"moveToBottom": "الذهاب الى الأسفل",
"moveToTop": "الذهاب الى الأعلى",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "حذف من $t(entity.favorite_other)",
"removeFromPlaylist": "حذف من $t(entity.playlist_one)",
"removeFromFavorites": "حذف من $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "حذف من $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "حذف من قائمة الإنتظار",
"setRating": "تحديد التقييم",
"toggleSmartPlaylistEditor": "تشغيل / إطفاء وضع التعديل لـ $t(entity.smartPlaylist)",
"viewPlaylists": "إظهار $t(entity.playlist_other)",
"viewPlaylists": "إظهار $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "فتح في Last.fm",
"musicbrainz": "فتح في MusicBrainz"
@@ -59,7 +59,7 @@
"configure": "تعديل",
"confirm": "تأكيد",
"create": "إنشاء",
"currentSong": "$t(entity.track_one) الحالي",
"currentSong": "$t(entity.track, {\"count\": 1}) الحالي",
"decrease": "تنقيص",
"delete": "حذف",
"descending": "تنازلي",
@@ -102,7 +102,7 @@
"path": "المسار",
"playerMustBePaused": "يجب إيقاف المشغل",
"preview": "معاينة",
"previousSong": "$t(entity.track_one) السابق",
"previousSong": "$t(entity.track, {\"count\": 1}) السابق",
"quit": "خروج",
"random": "عشوائي",
"rating": "التقييم",
@@ -117,7 +117,12 @@
"saveAndReplace": "حفظ واستبدال",
"saveAs": "حفظ بإسم",
"search": "بحث",
"setting": "إعداد",
"setting_zero": "إعداد",
"setting_one": "",
"setting_two": "",
"setting_few": "",
"setting_many": "",
"setting_other": "",
"share": "نشر",
"size": "حجم",
"sortOrder": "الترتيب",
+87 -81
View File
@@ -2,24 +2,24 @@
"page": {
"sidebar": {
"myLibrary": "La meva llibreria",
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})",
"nowPlaying": "ara sona",
"shared": "$t(entity.playlist_other) compartida",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"shared": "$t(entity.playlist, {\"count\": 2}) compartides",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"albumArtistDetail": {
"relatedArtists": "$t(entity.artist_other) similars",
"viewAllTracks": "veure totes les $t(entity.track_other)",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) similars",
"viewAllTracks": "mostra totes les $t(entity.track, {\"count\": 2})",
"about": "Sobre {{artist}}",
"appearsOn": "apareix a",
"recentReleases": "Llançaments recents",
@@ -31,21 +31,21 @@
"groupingTypePrimary": "tipus principals de llançament"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "més d'aquest $t(entity.artist_one)",
"moreFromArtist": "més d'aquest $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "més de {{item}}",
"released": "publicat"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "àlbums de {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"appMenu": {
"quit": "$t(common.quit)",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"goBack": "torna enrere",
"goForward": "avança",
"collapseSidebar": "replega la barra lateral",
@@ -84,15 +84,15 @@
"showDetails": "informació",
"numberSelected": "{{count}} seleccionat",
"shareItem": "comparteix l'element",
"goToAlbumArtist": "Ves a $t(entity.albumArtist_one)",
"goToAlbum": "ves a $t(entity.album_one)",
"goToAlbumArtist": "Ves a $t(entity.albumArtist, {\"count\": 1})",
"goToAlbum": "ves a $t(entity.album, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "ves a"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "mostra $t(entity.album_other) $t(entity.genre_one)",
"showTracks": "mostra $t(entity.track_other) $t(entity.genre_one)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "mostra $t(entity.album, {\"count\": 2}) de $t(entity.genre, {\"count\": 1})",
"showTracks": "mostra $t(entity.track, {\"count\": 2}) de $t(entity.genre, {\"count\": 1})"
},
"home": {
"title": "$t(common.home)",
@@ -101,15 +101,15 @@
"mostPlayed": "els més reproduïts",
"recentlyPlayed": "reproduït recentment",
"recentlyReleased": "estrenat fa poc",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "pistes de {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "$t(entity.track, {\"count\": 2}) \"{{genre}}\""
},
"manageServers": {
"username": "nom d'usuari",
@@ -184,10 +184,10 @@
"reorder": "el reordenament només s'activa quan s'ordena per id"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "emissores de ràdio"
@@ -262,9 +262,9 @@
"action_other": "accions",
"newVersion": "s'ha instal·lat una nova versió ({{version}})",
"viewReleaseNotes": "veure les notes de la versió",
"currentSong": "$t(entity.track_one) actual",
"currentSong": "$t(entity.track, {\"count\": 1}) actual",
"limit": "límit",
"previousSong": "$t(entity.track_one) anterior",
"previousSong": "$t(entity.track, {\"count\": 1}) anterior",
"trackNumber": "pista",
"albumGain": "guany de l'àlbum",
"albumPeak": "pic de l'àlbum",
@@ -288,7 +288,9 @@
"playerMustBePaused": "cal pausar el reproductor",
"restartRequired": "cal reiniciar",
"sampleRate": "freqüència de mostreig",
"setting": "configuració",
"setting_one": "configuració",
"setting_many": "",
"setting_other": "",
"trackGain": "guany de pista",
"trackPeak": "pic de pista",
"gap": "espera",
@@ -341,7 +343,7 @@
"playlistWithCount_one": "{{count}} llista de reproducció",
"playlistWithCount_many": "{{count}} llistes de reproducció",
"playlistWithCount_other": "{{count}} llistes de reproducció",
"smartPlaylist": "$t(entity.playlist_one) intel·ligent",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) intel·ligent",
"play_one": "{{count}} reproducció",
"play_many": "{{count}} reproduccions",
"play_other": "{{count}} reproduccions",
@@ -378,34 +380,34 @@
},
"form": {
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"title": "afegir a una $t(entity.playlist_one)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"title": "afegir a una $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "salta't els duplicats",
"success": "s'ha afegit $t(entity.trackWithCount, {\"count\": {{message}} }) a $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"create": "crea $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "cerca $t(entity.playlist_other) o escriu per crear-ne una de nova"
"create": "crea $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "cerca $t(entity.playlist, {\"count\": 2}) o escriu per crear-ne una de nova"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"success": "$t(entity.playlist_one) s'ha creat amb èxit",
"title": "crear una $t(entity.playlist_one)",
"success": "$t(entity.playlist, {\"count\": 1}) s'ha creat amb èxit",
"title": "crea una $t(entity.playlist, {\"count\": 1})",
"input_public": "públic"
},
"deletePlaylist": {
"success": "$t(entity.playlist_one) s'ha eliminat amb èxit",
"title": "elimina la $t(entity.playlist_one)",
"input_confirm": "escriviu el nom de la $t(entity.playlist_one) per confirmar"
"success": "$t(entity.playlist, {\"count\": 1}) s'ha eliminat amb èxit",
"title": "elimina la $t(entity.playlist, {\"count\": 1})",
"input_confirm": "escriviu el nom de la $t(entity.playlist, {\"count\": 1}) per confirmar"
},
"editPlaylist": {
"success": "$t(entity.playlist_one) s'ha actualitzat amb èxit",
"title": "editar la $t(entity.playlist_one)",
"success": "$t(entity.playlist, {\"count\": 1}) s'ha actualitzat amb èxit",
"title": "editar la $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Per algun motiu, Jellyfin no exposa si una llista de reproducció és pública o no. Si voleu que es mantingui pública, seleccioneu la següent entrada",
"editNote": "es recomana no editar manualment les llistes de reproducció grans. segur que accepteu el risc de perdre dades si sobreescriviu la llista de reproducció existent?"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "cerca de lletres"
},
@@ -459,7 +461,7 @@
},
"shuffleAll": {
"title": "reprodueix a l'atzar",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "quantes cançons?",
"input_minYear": "de l'any",
"input_maxYear": "fins a l'any",
@@ -485,14 +487,14 @@
}
},
"action": {
"addToFavorites": "afegeix a $t(entity.favorite_other)",
"addToPlaylist": "afegeix a $t(entity.playlist_one)",
"createPlaylist": "crea $t(entity.playlist_one)",
"deletePlaylist": "elimina la $t(entity.playlist_one)",
"editPlaylist": "edita la $t(entity.playlist_one)",
"addToFavorites": "afegeix a $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "afegeix a $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "crea $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "elimina la $t(entity.playlist, {\"count\": 1})",
"editPlaylist": "edita $t(entity.playlist, {\"count\": 1})",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "elimina dels $t(entity.favorite_other)",
"removeFromPlaylist": "elimina de $t(entity.playlist_one)",
"removeFromFavorites": "elimina dels $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "elimina de $t(entity.playlist, {\"count\": 1})",
"clearQueue": "buida la cua",
"removeFromQueue": "treure de la cua",
"goToPage": "anar a la pàgina",
@@ -501,7 +503,7 @@
"musicbrainz": "Obrir a MusicBrainz"
},
"deselectAll": "deselecciona-ho tot",
"viewPlaylists": "veure$t(entity.playlist_other)",
"viewPlaylists": "veure $t(entity.playlist, {\"count\": 2})",
"moveToNext": "passar al següent",
"moveToBottom": "anar al final",
"moveToTop": "anar al principi",
@@ -517,8 +519,8 @@
"shuffleAll": "mescla-ho tot",
"shuffleSelected": "mescla els seleccionats",
"viewMore": "mostra'n més",
"createRadioStation": "crea $t(entity.radioStation_one)",
"deleteRadioStation": "elimina $t(entity.radioStation_one)",
"createRadioStation": "crea $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "elimina $t(entity.radioStation, {\"count\": 1})",
"addOrRemoveFromSelection": "afegeix o elimina de la selecció",
"selectRangeOfItems": "selecciona un interval d'elements",
"selectAll": "selecciona-ho tot",
@@ -530,9 +532,9 @@
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
"playButtonBehavior_optionPlay": "$t(player.play)",
"playButtonBehavior_optionPlayShuffled": "$t(player.shuffle)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"font": "tipus de lletra",
"fontType": "selecció de tipus de lletra",
"fontType_optionBuiltIn": "tipus de lletra integrats",
@@ -662,7 +664,7 @@
"lyricFetch": "extreu la lletra d'internet",
"lyricFetch_description": "extreu la lletra de diverses fonts d'internet",
"lyricFetchProvider": "proveïdors de lletres",
"lyricFetchProvider_description": "selecciona els proveïdors de lletres. l'ordre en què apareixen és l'ordre en què es consultaran",
"lyricFetchProvider_description": "selecciona els proveïdors de lletres",
"lyricOffset": "desfasament de la lletra (ms)",
"lyricOffset_description": "desplaça la lletra els mil·lisegons especificats",
"minimizeToTray": "minimitza a la safata",
@@ -856,17 +858,21 @@
"pathReplace": "substitució de la ruta de l'arxiu",
"pathReplace_description": "substitueix la ruta d'arxiu predeterminada del servidor",
"pathReplace_optionRemovePrefix": "elimina el prefix",
"pathReplace_optionAddPrefix": "afegeix prefix"
"pathReplace_optionAddPrefix": "afegeix prefix",
"homeFeatureStyle_description": "controla l'estil del carrusel de destacats de l'inici",
"homeFeatureStyle": "estil del carrusel de destacats de l'inici",
"homeFeatureStyle_optionMultiple": "múltiple",
"homeFeatureStyle_optionSingle": "simple"
},
"table": {
"column": {
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"channels": "$t(common.channel_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"channels": "$t(common.channel, {\"count\": 2})",
"codec": "$t(common.codec)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"releaseYear": "any",
"playCount": "reproduccions",
"releaseDate": "data de llançament",
@@ -921,24 +927,24 @@
"verticalBorders": "vores de columna"
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"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)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"rating": "$t(common.rating)",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"year": "$t(common.year)",
"playCount": "compte de reproduccions",
@@ -949,9 +955,9 @@
"lastPlayed": "última reproducció",
"rowIndex": "índex de files",
"titleCombined": "$t(common.title) (combinat)",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"bitDepth": "$t(common.bitDepth)",
"genreBadge": "$t(entity.genre_one) (insígnies)",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (insígnies)",
"image": "imatge",
"sampleRate": "$t(common.sampleRate)",
"composer": "compositor",
@@ -968,17 +974,17 @@
"fromYear": "des de l'any",
"releaseYear": "any de llançament",
"toYear": "fins a l'any",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografia",
"bitrate": "taxa de bits",
"bpm": "bpm",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"comment": "comentari",
"disc": "disc",
"duration": "durada",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "identificador",
"name": "nom",
"note": "nota",
@@ -997,7 +1003,7 @@
"recentlyAdded": "afegit recentment",
"recentlyPlayed": "reproduït recentment",
"recentlyUpdated": "actualitzat recentment",
"albumCount": "nombre de $t(entity.album_other)",
"albumCount": "nombre de $t(entity.album, {\"count\": 2})",
"favorited": "preferits",
"isCompilation": "és una compilació",
"isFavorited": "és un preferit",
@@ -1083,7 +1089,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "emissió",
"ep": "EP",
"other": "altres",
+113 -91
View File
@@ -102,7 +102,7 @@
"exitToTray_description": "ukončit aplikaci do systémové lišty",
"followLyric_description": "přesouvat texty s aktuální pozicí přehrávání",
"hotkey_favoritePreviousSong": "oblíbit $t(common.previousSong)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "odsazení textů (ms)",
"discordUpdateInterval_description": "čas v sekundách mezi každou aktualizací (minimálně 15 sekund)",
"fontType_optionCustom": "vlastní písmo",
@@ -114,7 +114,7 @@
"playbackStyle_optionCrossFade": "křížové prolnutí",
"hotkey_rate3": "hodnocení 3 hvězdami",
"font": "písmo",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "nastavit použití světlého motivu v aplikaci",
"hotkey_toggleFullScreenPlayer": "přepnutí přehrávače na celou obrazovku",
"hotkey_localSearch": "vyhledávání na stránce",
@@ -164,7 +164,7 @@
"useSystemTheme_description": "následovat systémovou předvolbu světlého nebo tmavého motivu",
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
"lyricFetch_description": "načtení textů z různých internetových zdrojů",
"lyricFetchProvider_description": "vyberte poskytovatele textů. pořadí poskytovatelů je pořadí, ve kterém budou načítány",
"lyricFetchProvider_description": "vyberte poskytovatele textů",
"globalMediaHotkeys_description": "zapnout nebo vypnout použití vašich systémových zkratek médií pro ovládání přehrávače",
"customFontPath": "vlastní cesta k písmům",
"followLyric": "zobrazit aktuální texty",
@@ -221,11 +221,11 @@
"discordListening_description": "zobrazit stav jako „Poslouchá“ namísto „Hraje“",
"contextMenu": "nastavení kontextové nabídky (kliknutí pravým)",
"contextMenu_description": "umožňuje skrýt položky, které se zobrazí v nabídce po kliknutí pravým tlačítkem myši na položku. položky, které nejsou zaškrtnuté, se skryjí",
"customCssEnable": "povolit vlastní CSS",
"customCssEnable_description": "umožnit psaní vlastního CSS",
"customCssNotice": "Varování: i když provádíme určitou sanitizaci (zakázáním url() a content:), může používání CSS stále představovat riziko změnami rozhraní",
"customCss_description": "vlastní CSS obsah. Upozornění: vlastnosti content a vzdálené url jsou zakázané. Níže je zobrazen náhled vašeho obsahu. Další pole, která jste nenastavili, jsou přítomna z důvodu sanitizace",
"customCss": "vlastní CSS",
"customCssEnable": "povolit vlastní css",
"customCssEnable_description": "umožnit psaní vlastního css",
"customCssNotice": "Varování: i když provádíme určitou sanitizaci (zakázáním url() a content:), může používání css stále představovat riziko změnami rozhraní",
"customCss_description": "vlastní css obsah. Upozornění: vlastnosti content a vzdálené url jsou zakázané. Níže je zobrazen náhled vašeho obsahu. Další pole, která jste nenastavili, jsou přítomna z důvodu sanitizace",
"customCss": "vlastní css",
"webAudio": "použít webový zvuk",
"webAudio_description": "použít webový zvuk. tím povolíte pokročilé funkce jako replaygain. zakažte, pokud se objeví problémy",
"transcode_description": "zapnout překódování do různých formátů",
@@ -372,26 +372,34 @@
"pathReplace": "nahrazení cesty k souborům",
"pathReplace_description": "nahradit výchozí cestu k souborům vašeho serveru",
"pathReplace_optionRemovePrefix": "odstranit předponu",
"pathReplace_optionAddPrefix": "přidat předponu"
"pathReplace_optionAddPrefix": "přidat předponu",
"homeFeatureStyle_description": "ovládá styl doporučených skladeb na domovské stránce",
"homeFeatureStyle": "styl doporučených na domovské stránce",
"homeFeatureStyle_optionMultiple": "několik",
"homeFeatureStyle_optionSingle": "jeden",
"enableGridMultiSelect": "povolit vícenásobný výběr v mřížce",
"enableGridMultiSelect_description": "pokud je povoleno, umožňuje vybrat několik položek v zobrazení mřížky. pokud je zakázáno, kliknutím na obrázek položky mřížky přejdete na stránku položky",
"sidebarPlaylistSorting_description": "umožňuje ruční řazení seznamů skladeb v postranní liště pomocí přetažení namísto výchozího pořadí serveru",
"sidebarPlaylistSorting": "řazení seznamů skladeb v postranní liště"
},
"action": {
"editPlaylist": "upravit $t(entity.playlist_one)",
"editPlaylist": "upravit $t(entity.playlist, {\"count\": 1})",
"goToPage": "přejít na stránku",
"moveToTop": "přesunout nahoru",
"clearQueue": "vymazat frontu",
"addToFavorites": "přidat do $t(entity.favorite_other)",
"addToPlaylist": "přidat do $t(entity.playlist_one)",
"createPlaylist": "vytvořit $t(entity.playlist_one)",
"removeFromPlaylist": "odebrat z $t(entity.playlist_one)",
"viewPlaylists": "zobrazit $t(entity.playlist_other)",
"addToFavorites": "přidat do $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "přidat do $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "vytvořit $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "odebrat z $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "zobrazit $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "odstranit $t(entity.playlist_one)",
"deletePlaylist": "odstranit $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "odebrat z fronty",
"deselectAll": "zrušit výběr všeho",
"moveToBottom": "přesunout dolů",
"setRating": "nastavit hodnocení",
"toggleSmartPlaylistEditor": "přepnout editor $t(entity.smartPlaylist)",
"removeFromFavorites": "odebrat z $t(entity.favorite_other)",
"removeFromFavorites": "odebrat z $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "Otevřít v Last.fm",
"musicbrainz": "Otevřít v MusicBrainz"
@@ -407,8 +415,8 @@
"moveDown": "posunout dolů",
"holdToMoveToTop": "podržte pro přesunutí nahoru",
"holdToMoveToBottom": "podržte pro přesunutí dolů",
"createRadioStation": "vytvořit $t(entity.radioStation_one)",
"deleteRadioStation": "odstranit $t(entity.radioStation_one)",
"createRadioStation": "vytvořit $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "odstranit $t(entity.radioStation, {\"count\": 1})",
"openApplicationDirectory": "otevřít adresář aplikace",
"addOrRemoveFromSelection": "přidat nebo odebrat z výběru",
"selectRangeOfItems": "vyberte rozsah položek",
@@ -427,7 +435,7 @@
"left": "vlevo",
"save": "uložit",
"right": "vpravo",
"currentSong": "aktuální $t(entity.track_one)",
"currentSong": "aktuální $t(entity.track, {\"count\": 1})",
"collapse": "sbalit",
"trackNumber": "stopa",
"descending": "sestupně",
@@ -457,7 +465,9 @@
"delete": "odstranit",
"cancel": "zrušit",
"forceRestartRequired": "restartujte pro použití změn… zavřete oznámení pro restartování",
"setting": "nastavení",
"setting_one": "nastavení",
"setting_few": "nastavení",
"setting_other": "nastavení",
"version": "verze",
"title": "název",
"filter_one": "filtr",
@@ -484,7 +494,7 @@
"none": "žádný",
"menu": "nabídka",
"restartRequired": "vyžadován restart",
"previousSong": "předchozí $t(entity.track_one)",
"previousSong": "předchozí $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "nebyly nalezeny žádné výsledky",
"quit": "ukončit",
"expand": "rozbalit",
@@ -535,7 +545,8 @@
"mood": "nálada",
"example": "příklad",
"filter_single": "jeden",
"filter_multiple": "několik"
"filter_multiple": "několik",
"rename": "přejmenovat"
},
"table": {
"config": {
@@ -573,7 +584,8 @@
"alternateRowColors": "střídat barvy řádků",
"horizontalBorders": "okraje řádků",
"rowHoverHighlight": "zvýraznění řádku při přejetí myší",
"verticalBorders": "okraje sloupců"
"verticalBorders": "okraje sloupců",
"showHeader": "zobrazit záhlaví"
},
"label": {
"releaseDate": "datum vydání",
@@ -587,25 +599,25 @@
"trackNumber": "číslo stopy",
"rowIndex": "index řádku",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"playCount": "počet přehrání",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"actions": "$t(common.action, {\"count\": 2})",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "číslo disku",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)",
"albumCount": "$t(entity.album_other)",
"genreBadge": "$t(entity.genre_one) (značky)",
"songCount": "$t(entity.track, {\"count\": 2})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (značky)",
"image": "obrázek",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)",
@@ -619,7 +631,7 @@
"rating": "hodnocení",
"favorite": "oblíbené",
"playCount": "přehrání",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "rok",
"lastPlayed": "naposledy přehráno",
"biography": "biografie",
@@ -628,14 +640,14 @@
"title": "název",
"bpm": "bpm",
"dateAdded": "datum přidání",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "skladba",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "umělec alba",
"path": "cesta",
"discNumber": "disk",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"size": "$t(common.size)",
"codec": "$t(common.codec)",
"owner": "majitel",
@@ -679,7 +691,7 @@
"comment": "komentář",
"playCount": "počet přehrání",
"recentlyUpdated": "nedávno upraveno",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"isCompilation": "je kompilace",
"recentlyPlayed": "nedávno přehráno",
"isRated": "je hodnoceno",
@@ -688,17 +700,17 @@
"rating": "hodnocení",
"search": "hledat",
"bitrate": "datový tok",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "nedávno přidáno",
"note": "poznámka",
"name": "název",
"dateAdded": "datum přidání",
"releaseDate": "datum vydání",
"albumCount": "počet $t(entity.album_other)",
"albumCount": "počet $t(entity.album, {\"count\": 2})",
"communityRating": "komunitní hodnocení",
"path": "cesta",
"favorited": "oblíbené",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "je nedávno přehráno",
"isFavorited": "je oblíbené",
"bpm": "bpm",
@@ -707,7 +719,7 @@
"disc": "disk",
"biography": "biografie",
"songCount": "počet skladeb",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "trvání",
"isPublic": "je veřejné",
"random": "náhodně",
@@ -715,27 +727,29 @@
"toYear": "do roku",
"fromYear": "z roku",
"criticRating": "hodnocení kritiků",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "skladba",
"explicitStatus": "$t(common.explicitStatus)"
"explicitStatus": "$t(common.explicitStatus)",
"sortName": "název v řazení"
},
"page": {
"sidebar": {
"nowPlaying": "právě hraje",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"shared": "$t(entity.playlist_other) sdíleny",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) sdíleny",
"myLibrary": "moje knihovna",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})",
"collections": "sbírky"
},
"fullscreenPlayer": {
"config": {
@@ -763,7 +777,7 @@
"appMenu": {
"selectServer": "vybrat server",
"version": "verze {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "správce serverů",
"expandSidebar": "rozbalit postranní panel",
"collapseSidebar": "sbalit postranní panel",
@@ -801,8 +815,8 @@
"download": "stáhnout",
"playShuffled": "$t(player.shuffle)",
"moveToNext": "$t(action.moveToNext)",
"goToAlbum": "přejít na $t(entity.album_one)",
"goToAlbumArtist": "přejít na $t(entity.albumArtist_one)",
"goToAlbum": "přejít na $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "přejít na $t(entity.albumArtist, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "přejít na"
},
@@ -813,10 +827,10 @@
"explore": "procházet z vaší knihovny",
"recentlyPlayed": "nedávno přehráno",
"recentlyReleased": "nedávno vydáno",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "více od tohoto $t(entity.artist_one)",
"moreFromArtist": "více od tohoto $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "více od {{item}}",
"released": "vydáno"
},
@@ -846,17 +860,17 @@
"lyricsDisplay": "zobrazení textů"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showTracks": "zobrazit $t(entity.track_other) s žánrem $t(entity.genre_one)",
"showAlbums": "zobrazit $t(entity.album_other) s žánrem $t(entity.genre_one)"
"title": "$t(entity.genre, {\"count\": 2})",
"showTracks": "zobrazit $t(entity.track, {\"count\": 2}) s žánrem $t(entity.genre, {\"count\": 1})",
"showAlbums": "zobrazit $t(entity.album, {\"count\": 2}) s žánrem $t(entity.genre, {\"count\": 1})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "skladby od umělce {{artist}}",
"genreTracks": "$t(entity.track_other) s žánrem „{{genre}}“"
"genreTracks": "$t(entity.track, {\"count\": 2}) s žánrem „{{genre}}“"
},
"globalSearch": {
"commands": {
@@ -867,12 +881,12 @@
"title": "příkazy"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "alba od umělce {{artist}}",
"genreAlbums": "$t(entity.album_other) s žánrem „{{genre}}“"
"genreAlbums": "$t(entity.album, {\"count\": 2}) s žánrem „{{genre}}“"
},
"albumArtistDetail": {
"recentReleases": "nedávno vydáno",
@@ -881,8 +895,8 @@
"appearsOn": "také v",
"topSongs": "nejlepší skladby",
"topSongsFrom": "nejlepší skladby od umělce {{title}}",
"relatedArtists": "podobní $t(entity.artist_other)",
"viewAllTracks": "zobrazit všechny $t(entity.track_other)",
"relatedArtists": "podobní $t(entity.artist, {\"count\": 2})",
"viewAllTracks": "zobrazit všechny $t(entity.track, {\"count\": 2})",
"viewAll": "zobrazit vše",
"groupingTypeAll": "všechny typy vydání",
"groupingTypePrimary": "primární typy vydání"
@@ -904,27 +918,35 @@
"title": "správa serverů"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "stanice rádia"
},
"windowBar": {
"paused": "(Pozastaveno) ",
"privateMode": "(Soukromý režim)"
},
"collections": {
"overrideExisting": "nahradit existující",
"saveAsCollection": "uložit jako sbírku"
}
},
"form": {
"deletePlaylist": {
"title": "odstranit $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) úspěšně odstraněn",
"input_confirm": "pro potvrzení zadejte název $t(entity.playlist_one)u"
"title": "odstranit $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) úspěšně odstraněn",
"input_confirm": "pro potvrzení zadejte název $t(entity.playlist, {\"count\": 1})u"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "vytvořit $t(entity.playlist_one)",
"title": "vytvořit $t(entity.playlist, {\"count\": 1})",
"input_public": "veřejné",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) úspěšně vytvořen",
"success": "$t(entity.playlist, {\"count\": 1}) úspěšně vytvořen",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -936,8 +958,8 @@
"input_name": "název serveru",
"success": "server úspěšně přidán",
"input_savePassword": "uložit heslo",
"ignoreSsl": "ignorovat SSL $t(common.restartRequired)",
"ignoreCors": "ignorovat CORS $t(common.restartRequired)",
"ignoreSsl": "ignorovat ssl $t(common.restartRequired)",
"ignoreCors": "ignorovat cors $t(common.restartRequired)",
"error_savePassword": "při ukládání hesla se vyskytla chyba",
"input_preferInstantMix": "preferovat instantní mix",
"input_preferInstantMixDescription": "pro získání podobných skladeb použít pouze instantní mix. užitečné, pokud máte doplňky, které upravují toto chování",
@@ -947,11 +969,11 @@
},
"addToPlaylist": {
"success": "přidáno $t(entity.trackWithCount, {\"count\": {{message}} }) do $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "přidat do $t(entity.playlist_one)",
"title": "přidat do $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "přeskočit duplicity",
"input_playlists": "$t(entity.playlist_other)",
"create": "vytvořit $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "vyhledejte $t(entity.playlist_other) nebo pište pro vytvoření nového"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "vytvořit $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "vyhledejte $t(entity.playlist, {\"count\": 2}) nebo pište pro vytvoření nového"
},
"updateServer": {
"title": "upravit server",
@@ -968,12 +990,12 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "Hledat texty"
},
"editPlaylist": {
"title": "upravit $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) úspěšně aktualizován",
"title": "upravit $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) úspěšně aktualizován",
"publicJellyfinNote": "Jellyfin z nějakého důvodu neukazuje, zda je seznam skladeb veřejný, nebo ne. Pokud si přejete, aby zůstal veřejný, zvolte prosím následující vstup",
"editNote": "ruční úpravy velkých seznamů skladeb nejsou doporučeny. opravdu přijímáte riziko ztráty dat, které může vzniknout přepsáním existujícího seznamu skladeb?"
},
@@ -996,7 +1018,7 @@
},
"shuffleAll": {
"title": "přehrát náhodně",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "kolik skladeb?",
"input_minYear": "od roku",
"input_maxYear": "do roku",
@@ -1058,7 +1080,7 @@
"folder_one": "složka",
"folder_few": "složky",
"folder_other": "složky",
"smartPlaylist": "chytrý $t(entity.playlist_one)",
"smartPlaylist": "chytrý $t(entity.playlist, {\"count\": 1})",
"album_one": "album",
"album_few": "alba",
"album_other": "alba",
@@ -1088,7 +1110,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "vysílání",
"ep": "ep",
"other": "jiné",
+8
View File
@@ -0,0 +1,8 @@
{
"action": {
"addToFavorites": "tilføj til $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "tilføj til $t(entity.playlist, {\"count\": 1})",
"addOrRemoveFromSelection": "tilføj eller fjern fra valg",
"selectAll": "vælge alt"
}
}
+76 -74
View File
@@ -1,22 +1,22 @@
{
"action": {
"editPlaylist": "$t(entity.playlist_one) bearbeiten",
"editPlaylist": "$t(entity.playlist, {\"count\": 1}) bearbeiten",
"clearQueue": "Wiedergabeliste leeren",
"addToFavorites": "Zu $t(entity.favorite_other) hinzufügen",
"addToPlaylist": "Zu $t(entity.playlist_one) hinzufügen",
"createPlaylist": "$t(entity.playlist_one) erstellen",
"deletePlaylist": "$t(entity.playlist_one) löschen",
"addToFavorites": "Zu $t(entity.favorite, {\"count\": 2}) hinzufügen",
"addToPlaylist": "Zu $t(entity.playlist, {\"count\": 1}) hinzufügen",
"createPlaylist": "$t(entity.playlist, {\"count\": 1}) erstellen",
"deletePlaylist": "$t(entity.playlist, {\"count\": 1}) löschen",
"deselectAll": "Alle abwählen",
"goToPage": "Zu Seite gehen",
"moveToTop": "Als erstes",
"moveToBottom": "Als letztes",
"removeFromPlaylist": "Aus $t(entity.playlist_one) entfernen",
"viewPlaylists": "$t(entity.playlist_other) anzeigen",
"removeFromPlaylist": "Aus $t(entity.playlist, {\"count\": 1}) entfernen",
"viewPlaylists": "$t(entity.playlist, {\"count\": 2}) anzeigen",
"refresh": "$t(common.refresh)",
"removeFromQueue": "Aus Wiedergabeliste entfernen",
"setRating": "Bewerten",
"toggleSmartPlaylistEditor": "Editor für $t(entity.smartPlaylist) ein-/ausblenden",
"removeFromFavorites": "Aus $t(entity.favorite_other) entfernen",
"removeFromFavorites": "Aus $t(entity.favorite, {\"count\": 2}) entfernen",
"openIn": {
"lastfm": "Auf Last.fm öffnen",
"musicbrainz": "Auf MusicBrainz öffnen"
@@ -30,8 +30,8 @@
"viewMore": "Mehr zeigen",
"moveUp": "Nach oben bewegen",
"moveDown": "Nach unten bewegen",
"createRadioStation": "$t(entity.radioStation_one) erstellen",
"deleteRadioStation": "$t(entity.radioStation_one) löschen",
"createRadioStation": "$t(entity.radioStation, {\"count\": 1}) erstellen",
"deleteRadioStation": "$t(entity.radioStation, {\"count\": 1}) löschen",
"selectAll": "alle auswählen",
"openApplicationDirectory": "Anwendungsverzeichnis öffnen"
},
@@ -48,7 +48,7 @@
"left": "Linksbündig",
"save": "Speichern",
"right": "Rechtsbündig",
"currentSong": "Aktueller $t(entity.track_one)",
"currentSong": "Aktueller $t(entity.track, {\"count\": 1})",
"collapse": "Verkleinern",
"trackNumber": "Track",
"descending": "absteigend",
@@ -104,7 +104,7 @@
"none": "keine",
"menu": "Menü",
"restartRequired": "(Neustart benötigt)",
"previousSong": "vorheriger $t(entity.track_one)",
"previousSong": "vorheriger $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "Die Abfrage brachte keine Ergebnisse",
"quit": "verlassen",
"expand": "Vergrößern",
@@ -200,11 +200,11 @@
"name": "Name",
"dateAdded": "Datum hinzugefügt",
"releaseDate": "Veröffentlichungsdatum",
"albumCount": "$t(entity.album_other) Anzahl",
"albumCount": "$t(entity.album, {\"count\": 2}) Anzahl",
"communityRating": "Community-Wertung",
"path": "Pfad",
"favorited": "favorisiert",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "wurde kürzlich gespielt",
"isFavorited": "wird favorisiert",
"bpm": "bpm",
@@ -220,25 +220,25 @@
"toYear": "bis Jahr",
"fromYear": "ab Jahr",
"criticRating": "Kritikerbewertung",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "Track",
"channels": "$t(common.channel_other)",
"owner": "$t(common.owner)",
"genre": "$t(entity.genre_one)",
"artist": "$t(entity.artist_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"explicitStatus": "$t(common.explicitStatus)"
},
"form": {
"deletePlaylist": {
"title": "$t(entity.playlist_one) löschen",
"success": "$t(entity.playlist_one) erfolgreich gelöscht",
"input_confirm": "Geben Sie zur Bestätigung den Namen von $t(entity.playlist_one) ein"
"title": "$t(entity.playlist, {\"count\": 1}) löschen",
"success": "$t(entity.playlist, {\"count\": 1}) erfolgreich gelöscht",
"input_confirm": "Geben Sie zur Bestätigung den Namen von $t(entity.playlist, {\"count\": 1}) ein"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "$t(entity.playlist_one) erstellen",
"title": "$t(entity.playlist, {\"count\": 1}) erstellen",
"input_public": "öffentlich",
"success": "$t(entity.playlist_one) erfolgreich erstellt",
"success": "$t(entity.playlist, {\"count\": 1}) erfolgreich erstellt",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)"
},
@@ -259,11 +259,11 @@
},
"addToPlaylist": {
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) zu $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} }) hinzugefügt",
"title": "Zu $t(entity.playlist_one) hinzufügen",
"title": "Zu $t(entity.playlist, {\"count\": 1}) hinzufügen",
"input_skipDuplicates": "Duplikate überspringen",
"input_playlists": "$t(entity.playlist_other)",
"create": "$t(entity.playlist_one) {{playlist}} erstellen",
"searchOrCreate": "Nach $t(entity.playlist_other) suchen oder Namen eingeben, um eine neue zu erstellen"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "$t(entity.playlist, {\"count\": 1}) {{playlist}} erstellen",
"searchOrCreate": "Nach $t(entity.playlist, {\"count\": 2}) suchen oder Namen eingeben, um eine neue zu erstellen"
},
"updateServer": {
"title": "Server aktualisieren",
@@ -279,15 +279,15 @@
"resetToDefault": "auf Standard zurücksetzen"
},
"editPlaylist": {
"title": "Bearbeite $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) erfolgreich aktualisiert",
"title": "Bearbeite $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) erfolgreich aktualisiert",
"publicJellyfinNote": "Jellyfin legt aus irgendwelchen Gründen nicht offen ob eine Playlist öffentlich ist oder nicht. Wenn du möchtest, dass sie öffentlich bleibt, wähle bitte diese Option aus",
"editNote": "Manuelles Bearbeiten wird für große Wiedergabelisten nicht empfohlen. Bist Du sicher, dass Du die aktuelle Wiedergabeliste unter dem Risiko von Datenverlust überschrieben möchtest?"
},
"lyricSearch": {
"title": "Songtext Suche",
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)"
"input_artist": "$t(entity.artist, {\"count\": 1})"
},
"shareItem": {
"description": "Beschreibung",
@@ -308,7 +308,7 @@
},
"shuffleAll": {
"title": "Zufallswiedergabe",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "Wie viele Songs?",
"input_minYear": "ab Jahr",
"input_maxYear": "bis Jahr",
@@ -362,7 +362,7 @@
"genreWithCount_other": "{{count}} Genres",
"trackWithCount_one": "{{count}} Track",
"trackWithCount_other": "{{count}} Tracks",
"smartPlaylist": "Intelligente $t(entity.playlist_one)",
"smartPlaylist": "Intelligente $t(entity.playlist, {\"count\": 1})",
"play_one": "{{count}} Wiedergabe",
"play_other": "{{count}} Wiedergaben",
"song_one": "Lied",
@@ -405,12 +405,12 @@
"trackNumber": "Tracknummer",
"biography": "$t(common.biography)",
"bitrate": "$t(common.bitrate)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"favorite": "$t(common.favorite)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"album": "$t(entity.album_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"size": "$t(common.size)",
"bpm": "$t(common.bpm)",
"titleCombined": "$t(common.title) (kombiniert)",
@@ -425,13 +425,13 @@
"year": "$t(common.year)",
"discNumber": "disk-Nummer",
"playCount": "Wiedergaben",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"bitDepth": "$t(common.bitDepth)",
"codec": "$t(common.codec)",
"image": "Bild",
"sampleRate": "$t(common.sampleRate)",
"songCount": "$t(entity.track_other)",
"genreBadge": "$t(entity.genre_one) (Abzeichen)"
"songCount": "$t(entity.track, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (Abzeichen)"
}
},
"column": {
@@ -447,15 +447,15 @@
"favorite": "Favorit",
"lastPlayed": "zuletzt gespielt",
"rating": "Bewertung",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"channels": "$t(common.channel_other)",
"comment": "Kommentar",
"dateAdded": "hinzugefügt am",
"playCount": "Abgespielt",
"discNumber": "Disk",
"genre": "$t(entity.genre_one)",
"songCount": "$t(entity.track_other)",
"genre": "$t(entity.genre, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "titel",
"size": "$t(common.size)",
"bitDepth": "$t(common.bitDepth)",
@@ -497,7 +497,7 @@
"openBrowserDevtools": "Browser-Entwicklungswerkzeuge öffnen",
"goBack": "Gehe zurück",
"goForward": "Gehe vorwärts",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"quit": "$t(common.quit)",
"privateModeOff": "Privatmodus deaktivieren",
"privateModeOn": "Privatmodus aktivieren",
@@ -513,10 +513,10 @@
"recentlyPlayed": "Kürzlich gespielt",
"title": "$t(common.home)",
"recentlyReleased": "kürzlich veröffentlicht",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "mehr von diesem $t(entity.artist_one)",
"moreFromArtist": "mehr von diesem $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "Mehr von {{item}}",
"released": "erschienen"
},
@@ -551,27 +551,27 @@
"moveToNext": "$t(action.moveToNext)",
"shareItem": "teilen",
"showDetails": "Informationen",
"goToAlbum": "zu $t(entity.album_one) gehen",
"goToAlbumArtist": "zu $t(entity.albumArtist_one) gehen",
"goToAlbum": "zu $t(entity.album, {\"count\": 1}) gehen",
"goToAlbumArtist": "zu $t(entity.albumArtist, {\"count\": 1}) gehen",
"moveItems": "$t(action.moveItems)",
"goTo": "Gehe zu"
},
"sidebar": {
"nowPlaying": "läuft gerade",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"shared": "$t(entity.playlist_other) geteilt",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) geteilt",
"myLibrary": "meine bibliothek",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"setting": {
"playbackTab": "Wiedergabe",
@@ -598,36 +598,36 @@
"remote": "Fernsteuerung"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showTracks": "$t(entity.genre_one) $t(entity.track_other) anzeigen",
"showAlbums": "$t(entity.genre_one) $t(entity.album_other) anzeigen"
"title": "$t(entity.genre, {\"count\": 2})",
"showTracks": "$t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2}) anzeigen",
"showAlbums": "$t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2}) anzeigen"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "Tracks von {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "Alben von {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"albumArtistDetail": {
"about": "Über {{artist}}",
"appearsOn": "erscheint auf",
"recentReleases": "Kürzliche Veröffentlichungen",
"viewDiscography": "Diskographie ansehen",
"viewAllTracks": "Alle $t(entity.track_other) ansehen",
"viewAllTracks": "Alle $t(entity.track, {\"count\": 2}) ansehen",
"topSongsFrom": "Toplieder von {{title}}",
"viewAll": "Alles ansehen",
"topSongs": "Toplieder",
"relatedArtists": "ähnliche $t(entity.artist_other)",
"relatedArtists": "ähnliche $t(entity.artist, {\"count\": 2})",
"groupingTypeAll": "alle Veröffentlichungsformate",
"groupingTypePrimary": "primäre Veröffentlichungsformate"
},
@@ -645,10 +645,10 @@
"openFile": "Track im Dateiexplorer anzeigen"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"playlist": {
"reorder": "Neuanordnung nur bei Sortierung nach ID möglich"
@@ -757,7 +757,7 @@
"gaplessAudio_description": "Legt die lückenlose Audioeinstellung für MPV fest",
"remoteUsername_description": "Legt den Benutzernamen für den Fernsteuerungsserver fest. Wenn sowohl Benutzername als auch Passwort leer sind, wird die Authentifizierung deaktiviert",
"hotkey_favoritePreviousSong": "Favorit $t(common.previousSong)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "Zeitversatz des Songtextes (ms)",
"themeDark_description": "Legt das Erscheinungsbild für den dunklen Modus fest",
"remotePassword": "Passwort des Fernsteuerungsservers",
@@ -765,7 +765,7 @@
"language_description": "Legt die Sprache für die Anwendung fest $t(common.restartRequired)",
"playbackStyle_optionCrossFade": "Überblendung",
"hotkey_rate3": "Bewertung 3 Sterne",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "Legt das Erscheinungsbild für den hellen Modus fest",
"hotkey_toggleFullScreenPlayer": "Vollbildmodus umschalten",
"hotkey_localSearch": "Suche auf Seite",
@@ -791,6 +791,7 @@
"playButtonBehavior": "Verhalten der Wiedergabetaste",
"volumeWheelStep": "Lautstärkeänderung mit Mausrad",
"sidebarPlaylistList_description": "Ein- oder Ausblenden der Playlisten-Liste in der Seitenleiste",
"sidebarPlaylistSorting_description": "sortiere Playlists in der Seitenleiste per Drag & Drop anstelle der standardmäßigen Serverreihenfolge",
"sidePlayQueueStyle_description": "legt den Stil der Wiedergabeliste in der Seitenleiste fest",
"replayGainMode": "{{ReplayGain}} Modus",
"playbackStyle_optionNormal": "Normal",
@@ -815,6 +816,7 @@
"hotkey_browserBack": "Browser zurück",
"showSkipButton": "Schaltflächen zum Überspringen anzeigen",
"sidebarPlaylistList": "Seitenleiste Playlisten-Liste",
"sidebarPlaylistSorting": "Playlist-Sortierung in der Seitenleiste",
"minimizeToTray": "Zur Taskleiste minimieren",
"skipPlaylistPage": "Playlisten-Seite überspringen",
"themeDark": "Erscheinungsbild (dunkel)",
@@ -1006,7 +1008,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "Broadcast",
"ep": "EP",
"other": "andere",
+101 -79
View File
@@ -1,18 +1,18 @@
{
"action": {
"addToFavorites": "add to $t(entity.favorite_other)",
"addToPlaylist": "add to $t(entity.playlist_one)",
"addToFavorites": "add to $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "add to $t(entity.playlist, {\"count\": 1})",
"addOrRemoveFromSelection": "add or remove from selection",
"selectRangeOfItems": "select a range of items",
"clearQueue": "clear queue",
"createPlaylist": "create $t(entity.playlist_one)",
"createRadioStation": "create $t(entity.radioStation_one)",
"deletePlaylist": "delete $t(entity.playlist_one)",
"deleteRadioStation": "delete $t(entity.radioStation_one)",
"createPlaylist": "create $t(entity.playlist, {\"count\": 1})",
"createRadioStation": "create $t(entity.radioStation, {\"count\": 1})",
"deletePlaylist": "delete $t(entity.playlist, {\"count\": 1})",
"deleteRadioStation": "delete $t(entity.radioStation, {\"count\": 1})",
"selectAll": "select all",
"deselectAll": "deselect all",
"downloadStarted": "started download of {{count}} items",
"editPlaylist": "edit $t(entity.playlist_one)",
"editPlaylist": "edit $t(entity.playlist, {\"count\": 1})",
"goToPage": "go to page",
"moveToNext": "move to next",
"moveToBottom": "move to bottom",
@@ -26,12 +26,12 @@
"shuffleAll": "shuffle all",
"shuffleSelected": "shuffle selected",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "remove from $t(entity.favorite_other)",
"removeFromPlaylist": "remove from $t(entity.playlist_one)",
"removeFromFavorites": "remove from $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "remove from $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "remove from queue",
"setRating": "set rating",
"toggleSmartPlaylistEditor": "toggle $t(entity.smartPlaylist) editor",
"viewPlaylists": "view $t(entity.playlist_other)",
"viewPlaylists": "view $t(entity.playlist, {\"count\": 2})",
"viewMore": "view more",
"openApplicationDirectory": "open application directory",
"openIn": {
@@ -69,7 +69,7 @@
"configure": "configure",
"confirm": "confirm",
"create": "create",
"currentSong": "current $t(entity.track_one)",
"currentSong": "current $t(entity.track, {\"count\": 1})",
"decrease": "decrease",
"delete": "delete",
"descending": "descending",
@@ -117,7 +117,7 @@
"path": "path",
"playerMustBePaused": "player must be paused",
"preview": "preview",
"previousSong": "previous $t(entity.track_one)",
"previousSong": "previous $t(entity.track, {\"count\": 1})",
"private": "private",
"public": "public",
"quit": "quit",
@@ -128,6 +128,7 @@
"releaseType": "release type",
"refresh": "refresh",
"reload": "reload",
"rename": "rename",
"reset": "reset",
"resetToDefault": "reset to default",
"restartRequired": "restart required",
@@ -137,7 +138,6 @@
"saveAndReplace": "save and replace",
"saveAs": "save as",
"search": "search",
"setting": "setting",
"setting_one": "setting",
"setting_other": "settings",
"slower": "slower",
@@ -194,7 +194,7 @@
"play_other": "{{count}} plays",
"playlistWithCount_one": "{{count}} playlist",
"playlistWithCount_other": "{{count}} playlists",
"smartPlaylist": "smart $t(entity.playlist_one)",
"smartPlaylist": "smart $t(entity.playlist, {\"count\": 1})",
"track_one": "track",
"track_other": "tracks",
"song_one": "song",
@@ -234,14 +234,14 @@
"settingsSyncError": "discrepancies were found between the settings in the renderer and the main process. restart the application to apply the changes"
},
"filter": {
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumCount": "$t(entity.album_other) count",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2}) count",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biography",
"bitrate": "bitrate",
"bpm": "bpm",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"comment": "comment",
"communityRating": "community rating",
"criticRating": "critic rating",
@@ -250,7 +250,7 @@
"duration": "duration",
"favorited": "favorited",
"fromYear": "from year",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "id",
"isCompilation": "is compilation",
"isFavorited": "is favorited",
@@ -273,6 +273,7 @@
"releaseYear": "release year",
"search": "search",
"songCount": "song count",
"sortName": "sort name",
"title": "title",
"toYear": "to year",
"trackNumber": "track",
@@ -329,20 +330,20 @@
"description": "This action will add all items in the current filtered view"
},
"addToPlaylist": {
"create": "create $t(entity.playlist_one) {{playlist}}",
"input_playlists": "$t(entity.playlist_other)",
"create": "create $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "skip duplicates",
"searchOrCreate": "search $t(entity.playlist_other) or type to create a new one",
"searchOrCreate": "search $t(entity.playlist, {\"count\": 2}) or type to create a new one",
"success": "added $t(entity.trackWithCount, {\"count\": {{message}} }) to $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "add to $t(entity.playlist_one)"
"title": "add to $t(entity.playlist, {\"count\": 1})"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "public",
"success": "$t(entity.playlist_one) created successfully",
"title": "create $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) created successfully",
"title": "create $t(entity.playlist, {\"count\": 1})"
},
"createRadioStation": {
"success": "radio station created successfully",
@@ -352,15 +353,15 @@
"input_streamUrl": "stream url"
},
"deletePlaylist": {
"input_confirm": "type the name of the $t(entity.playlist_one) to confirm",
"success": "$t(entity.playlist_one) deleted successfully",
"title": "delete $t(entity.playlist_one)"
"input_confirm": "type the name of the $t(entity.playlist, {\"count\": 1}) to confirm",
"success": "$t(entity.playlist, {\"count\": 1}) deleted successfully",
"title": "delete $t(entity.playlist, {\"count\": 1})"
},
"editPlaylist": {
"publicJellyfinNote": "Jellyfin for some reason does not expose whether a playlist is public or not. If you wish for this to remain public, please have the following input selected",
"editNote": "manual edits are not recommended for large playlists. are you sure you accept the risk of data loss incurred by overwriting the existing playlist?",
"success": "$t(entity.playlist_one) updated successfully",
"title": "edit $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) updated successfully",
"title": "edit $t(entity.playlist, {\"count\": 1})"
},
"lyricsExport": {
"export": "export lyrics",
@@ -368,7 +369,7 @@
"input_offset": "$t(setting.lyricOffset)"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "lyric search"
},
@@ -394,7 +395,7 @@
},
"shuffleAll": {
"title": "play random",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "how many songs?",
"input_minYear": "from year",
"input_maxYear": "to year",
@@ -421,30 +422,34 @@
"groupingTypePrimary": "primary release types",
"recentReleases": "recent releases",
"viewDiscography": "view discography",
"relatedArtists": "related $t(entity.artist_other)",
"relatedArtists": "related $t(entity.artist, {\"count\": 2})",
"topSongs": "top songs",
"topSongsFrom": "top songs from {{title}}",
"viewAll": "view all",
"viewAllTracks": "view all $t(entity.track_other)"
"viewAllTracks": "view all $t(entity.track, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "more from this $t(entity.artist_one)",
"moreFromArtist": "more from this $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "more from {{item}}",
"released": "released"
},
"albumList": {
"artistAlbums": "albums by {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"radioList": {
"title": "radio stations"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"windowBar": {
"paused": "(Paused) ",
"privateMode": "(Private mode)"
},
"appMenu": {
"collapseSidebar": "collapse sidebar",
@@ -461,7 +466,7 @@
"selectMusicFolder": "select music folder",
"noMusicFolder": "no music folder selected",
"multipleMusicFolders": "{{count}} music folders selected",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "version {{version}}"
},
"manageServers": {
@@ -496,8 +501,8 @@
"playShuffled": "$t(player.shuffle)",
"shareItem": "share item",
"goTo": "go to",
"goToAlbum": "go to $t(entity.album_one)",
"goToAlbumArtist": "go to $t(entity.albumArtist_one)",
"goToAlbum": "go to $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "go to $t(entity.albumArtist, {\"count\": 1})",
"showDetails": "get info"
},
"fullscreenPlayer": {
@@ -524,12 +529,12 @@
"noLyrics": "no lyrics found"
},
"genreList": {
"showAlbums": "show $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "show $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "show $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "show $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -541,7 +546,7 @@
},
"home": {
"explore": "explore from your library",
"genres": "$t(entity.genre_other)",
"genres": "$t(entity.genre, {\"count\": 2})",
"mostPlayed": "most played",
"newlyAdded": "newly added releases",
"recentlyPlayed": "recently played",
@@ -557,7 +562,11 @@
"reorder": "reordering only enabled when sorting by id"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"collections": {
"overrideExisting": "override existing",
"saveAsCollection": "save as collection"
},
"setting": {
"advanced": "advanced",
@@ -585,26 +594,27 @@
"playerFilters": "player filters"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"favorites": "$t(entity.favorite_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"collections": "collections",
"artists": "$t(entity.artist, {\"count\": 2})",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"radio": "$t(entity.radioStation_other)",
"radio": "$t(entity.radioStation, {\"count\": 2})",
"myLibrary": "my library",
"nowPlaying": "now playing",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "shared $t(entity.playlist_other)",
"tracks": "$t(entity.track_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "shared $t(entity.playlist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})"
},
"trackList": {
"artistTracks": "tracks by {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
}
},
"player": {
@@ -656,7 +666,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "broadcast",
"ep": "ep",
"other": "other",
@@ -796,6 +806,10 @@
"homeConfiguration": "home page configuration",
"homeFeature_description": "controls whether to show the large featured carousel on the home page",
"homeFeature": "home featured carousel",
"homeFeatureStyle_description": "controls the style of the home featured carousel",
"homeFeatureStyle": "home featured carousel style",
"homeFeatureStyle_optionMultiple": "multiple",
"homeFeatureStyle_optionSingle": "single",
"hotkey_browserBack": "browser back",
"hotkey_browserForward": "browser forward",
"hotkey_favoriteCurrentSong": "favorite $t(common.currentSong)",
@@ -918,6 +932,8 @@
"showLyricsInSidebar": "show lyrics in player sidebar",
"showRatings_description": "controls if the star ratings feature shows up in the interface",
"showRatings": "show star ratings",
"enableGridMultiSelect": "enable grid multi-select",
"enableGridMultiSelect_description": "when enabled, allows selecting multiple items in grid views. when disabled, clicking grid item images will navigate to the item page",
"showVisualizerInSidebar_description": "a panel will be added to the player sidebar that displays the visualizer",
"showVisualizerInSidebar": "show visualizer in player sidebar",
"combinedLyricsAndVisualizer_description": "combine lyrics and visualizer into the same panel",
@@ -939,9 +955,9 @@
"replayGainFallback_description": "gain in db to apply if the file has no {{ReplayGain}} tags",
"replayGainFallback": "{{ReplayGain}} fallback",
"replayGainMode_description": "adjust volume gain according to {{ReplayGain}} values stored in the file metadata",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainMode": "{{ReplayGain}} mode",
"replayGainPreamp_description": "adjust the preamp gain applied to the {{ReplayGain}} values",
"replayGainPreamp": "{{ReplayGain}} preamp (dB)",
@@ -961,6 +977,11 @@
"sidebarConfiguration": "sidebar configuration",
"sidebarPlaylistList_description": "show or hide the playlist list in the sidebar",
"sidebarPlaylistList": "sidebar playlist list",
"sidebarPlaylistSorting_description": "allows manual playlist sorting in the sidebar using drag and drop instead of the default server order",
"sidebarPlaylistSorting": "sidebar playlist sorting",
"sidebarPlaylistListFilterRegex_description": "hide playlists in the sidebar that match this regular expression",
"sidebarPlaylistListFilterRegex_placeholder": "e.g. ^Daily Mix.*",
"sidebarPlaylistListFilterRegex": "playlist filter regex",
"sidePlayQueueStyle_description": "sets the style of the side play queue",
"sidePlayQueueStyle_optionAttached": "attached",
"sidePlayQueueStyle_optionDetached": "detached",
@@ -1015,19 +1036,19 @@
"column": {
"album": "album",
"albumArtist": "album artist",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biography",
"bitDepth": "$t(common.bitDepth)",
"bitrate": "bitrate",
"bpm": "bpm",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"codec": "$t(common.codec)",
"comment": "comment",
"dateAdded": "date added",
"discNumber": "disc",
"favorite": "favorite",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "last played",
"path": "path",
"playCount": "plays",
@@ -1036,7 +1057,7 @@
"releaseYear": "year",
"sampleRate": "$t(common.sampleRate)",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "title",
"trackNumber": "track",
"owner": "owner"
@@ -1071,27 +1092,28 @@
"alternateRowColors": "alternate row colors",
"horizontalBorders": "row borders",
"rowHoverHighlight": "row hover highlight",
"showHeader": "show header",
"verticalBorders": "column borders"
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumCount": "$t(entity.album_other)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"actions": "$t(common.action, {\"count\": 2})",
"album": "$t(entity.album, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "$t(common.biography)",
"bitDepth": "$t(common.bitDepth)",
"bitrate": "$t(common.bitrate)",
"bpm": "$t(common.bpm)",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"codec": "$t(common.codec)",
"composer": "composer",
"dateAdded": "date added",
"discNumber": "disc number",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genreBadge": "$t(entity.genre_one) (badges)",
"genre": "$t(entity.genre, {\"count\": 1})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (badges)",
"image": "image",
"lastPlayed": "last played",
"note": "$t(common.note)",
@@ -1103,7 +1125,7 @@
"rowIndex": "row index",
"sampleRate": "$t(common.sampleRate)",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"titleArtist": "$t(common.title) (artist)",
"titleCombined": "$t(common.title) (combined)",
+106 -84
View File
@@ -99,7 +99,7 @@
"exitToTray_description": "sale de la aplicación a la bandeja del sistema",
"followLyric_description": "desplaza la letra a la posición de reproducción actual",
"hotkey_favoritePreviousSong": "$t(common.previousSong) favorita",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "desfase de letra (ms)",
"discordUpdateInterval_description": "el tiempo en segundos entre cada actualización (mínimo 15 segundos)",
"fontType_optionCustom": "fuente personalizada",
@@ -111,7 +111,7 @@
"playbackStyle_optionCrossFade": "crossfade",
"hotkey_rate3": "calificar con 3 estrellas",
"font": "fuente",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "establece el tema claro a usar por la aplicación",
"hotkey_toggleFullScreenPlayer": "cambia el reproductor a pantalla completa",
"hotkey_localSearch": "búsqueda en la página",
@@ -155,7 +155,7 @@
"useSystemTheme_description": "sigue la preferencia clara u oscura definida por el sistema",
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
"lyricFetch_description": "busca letras en varias fuentes de Internet",
"lyricFetchProvider_description": "selecciona los proveedores para buscar letras. el orden de los proveedores es el orden en el que se consultarán",
"lyricFetchProvider_description": "Selecciona los proveedores para buscar letras",
"globalMediaHotkeys_description": "activa o desactiva el uso de las teclas de acceso rápidas del sistema a medios para controlar la reproducción",
"customFontPath": "ruta de fuente personalizada",
"followLyric": "seguir la letra actual",
@@ -372,26 +372,34 @@
"pathReplace_description": "Reemplaza la ruta de archivo predeterminada de tu servidor",
"pathReplace": "Reemplazo de la ruta de archivo",
"pathReplace_optionRemovePrefix": "Eliminar prefijo",
"pathReplace_optionAddPrefix": "Añadir prefijo"
"pathReplace_optionAddPrefix": "Añadir prefijo",
"homeFeatureStyle": "Estilo del carrusel de destacados del inicio",
"homeFeatureStyle_description": "Controla el estilo del carrusel de destacados del inicio",
"homeFeatureStyle_optionMultiple": "Múltiple",
"homeFeatureStyle_optionSingle": "Simple",
"enableGridMultiSelect": "Activar selección múltiple de rejilla",
"enableGridMultiSelect_description": "Cuando está activo, permite seleccionar múltiples elementos en las vistas de rejilla. Cuando está desactivado, hacer clic en las imágenes de los elementos de la rejilla navegará a la página del elemento",
"sidebarPlaylistSorting": "Ordenación de la lista de reproducción de la barra lateral",
"sidebarPlaylistSorting_description": "Permite la ordenación manual de la lista de reproducción en la barra lateral usando arrastrar y soltar en lugar del orden predeterminado del servidor"
},
"action": {
"editPlaylist": "editar $t(entity.playlist_one)",
"editPlaylist": "editar $t(entity.playlist, {\"count\": 1})",
"goToPage": "ir a la página",
"moveToTop": "mover al principio",
"clearQueue": "limpiar cola",
"addToFavorites": "añadir a $t(entity.favorite_other)",
"addToPlaylist": "añadir a $t(entity.playlist_one)",
"createPlaylist": "crear $t(entity.playlist_one)",
"removeFromPlaylist": "eliminar de $t(entity.playlist_one)",
"viewPlaylists": "ver $t(entity.playlist_other)",
"addToFavorites": "añadir a $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "añadir a $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "crear $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "eliminar de $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "ver $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "eliminar $t(entity.playlist_one)",
"deletePlaylist": "eliminar $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "eliminar de la cola",
"deselectAll": "desmarcar todo",
"moveToBottom": "mover al final",
"setRating": "establecer calificación",
"toggleSmartPlaylistEditor": "cambiar editor $t(entity.smartPlaylist)",
"removeFromFavorites": "eliminar de $t(entity.favorite_other)",
"removeFromFavorites": "eliminar de $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "Abrir en Last.fm",
"musicbrainz": "Abrir en MusicBrainz"
@@ -407,8 +415,8 @@
"holdToMoveToTop": "Mantener pulsado para desplazar hacia arriba",
"moveUp": "Desplazar hacia arriba",
"moveDown": "Desplazar hacia abajo",
"createRadioStation": "Crear $t(entity.radioStation_one)",
"deleteRadioStation": "Borrar $t(entity.radioStation_one)",
"createRadioStation": "Crear $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "Borrar $t(entity.radioStation, {\"count\": 1})",
"openApplicationDirectory": "Abrir directorio de la aplicación",
"addOrRemoveFromSelection": "Añadir o quitar de la selección",
"selectRangeOfItems": "Seleccionar un intervalo de elementos",
@@ -427,7 +435,7 @@
"left": "izquierda",
"save": "guardar",
"right": "derecha",
"currentSong": "$t(entity.track_one) actual",
"currentSong": "$t(entity.track, {\"count\": 1}) actual",
"collapse": "contraer",
"trackNumber": "pista",
"descending": "descendiente",
@@ -456,7 +464,9 @@
"delete": "eliminar",
"cancel": "cancelar",
"forceRestartRequired": "reiniciar para aplicar cambios... cerrar la notificación para reiniciar",
"setting": "configuración",
"setting_one": "configuración",
"setting_many": "configuraciones",
"setting_other": "configuraciones",
"version": "versión",
"title": "título",
"filters": "filtros",
@@ -474,7 +484,7 @@
"none": "ninguno",
"menu": "menú",
"restartRequired": "reinicio requerido",
"previousSong": "anterior $t(entity.track_one)",
"previousSong": "$t(entity.track, {\"count\": 1}) anterior",
"noResultsFromQuery": "la petición no devolvió resultados",
"quit": "salir",
"expand": "expandir",
@@ -535,7 +545,8 @@
"mood": "Estado de ánimo",
"example": "Ejemplo",
"filter_single": "simple",
"filter_multiple": "multi"
"filter_multiple": "multi",
"rename": "Renombrar"
},
"error": {
"remotePortWarning": "reiniciar el servidor para aplicar el nuevo puerto",
@@ -585,14 +596,14 @@
"communityRating": "calificación de la comunidad",
"path": "ruta",
"favorited": "favoritos",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "reproducido recientemente",
"isFavorited": "es favorito",
"bpm": "lpm",
"releaseYear": "año de lanzamiento",
"disc": "disco",
"biography": "biografía",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "duración",
"random": "aleatorio",
"lastPlayed": "última reproducción",
@@ -603,38 +614,40 @@
"comment": "comentarios",
"playCount": "número de reproducciones",
"recentlyUpdated": "actualizado recientemente",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"owner": "$t(common.owner)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "id",
"songCount": "número de canción",
"isPublic": "es público",
"album": "$t(entity.album_one)",
"albumCount": "Contar $t(entity.album_other)",
"explicitStatus": "$t(common.explicitStatus)"
"album": "$t(entity.album, {\"count\": 1})",
"albumCount": "Contar $t(entity.album, {\"count\": 2})",
"explicitStatus": "$t(common.explicitStatus)",
"sortName": "Ordenar por nombre"
},
"page": {
"sidebar": {
"nowPlaying": "reproduciendo",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"shared": "compartido $t(entity.playlist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"shared": "compartido $t(entity.playlist, {\"count\": 2})",
"myLibrary": "Mi biblioteca",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})",
"collections": "Colecciones"
},
"appMenu": {
"selectServer": "seleccionar servidor",
"version": "versión {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "gestionar servidores",
"expandSidebar": "ampliar barra lateral",
"collapseSidebar": "contraer barra lateral",
@@ -672,8 +685,8 @@
"download": "descargar",
"playShuffled": "$t(player.shuffle)",
"moveToNext": "$t(action.moveToNext)",
"goToAlbum": "Ir a $t(entity.album_one)",
"goToAlbumArtist": "Ir a $t(entity.albumArtist_one)",
"goToAlbum": "Ir a $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "Ir a $t(entity.albumArtist, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "Ir a"
},
@@ -684,7 +697,7 @@
"explore": "explora desde tu biblioteca",
"recentlyPlayed": "reproducidos recientemente",
"recentlyReleased": "Lanzado recientemente",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"fullscreenPlayer": {
"upNext": "siguiente",
@@ -710,7 +723,7 @@
"noLyrics": "sin letras"
},
"albumDetail": {
"moreFromArtist": "más de este $t(entity.artist_one)",
"moreFromArtist": "más de este $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "más de {{item}}",
"released": "publicado el"
},
@@ -740,16 +753,16 @@
"lyricsDisplay": "Mostrar letras"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "Mostrar $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "Mostrar $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "Mostrar $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "Mostrar $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"artistTracks": "Pistas de {{artist}}"
},
"globalSearch": {
@@ -761,16 +774,16 @@
"title": "comandos"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"artistAlbums": "Álbumes de {{artist}}"
},
"albumArtistDetail": {
"viewAllTracks": "ver todas las $t(entity.track_other)",
"relatedArtists": "$t(entity.artist_other) similares",
"viewAllTracks": "ver todas las $t(entity.track, {\"count\": 2})",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) similares",
"topSongs": "mejores canciones",
"topSongsFrom": "las mejores canciones de {{title}}",
"viewAll": "Ver todo",
@@ -798,27 +811,35 @@
"url": "URL"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "Estaciones de radio"
},
"windowBar": {
"privateMode": "(Modo privado)",
"paused": "(Pausado) "
},
"collections": {
"overrideExisting": "Sobreescribir existente",
"saveAsCollection": "Guardar como colección"
}
},
"form": {
"deletePlaylist": {
"title": "eliminar $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) eliminado correctamente",
"input_confirm": "escribe el nombre de $t(entity.playlist_one) para confirmar"
"title": "eliminar $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) eliminado correctamente",
"input_confirm": "escribe el nombre de $t(entity.playlist, {\"count\": 1}) para confirmar"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "crear $t(entity.playlist_one)",
"title": "crear $t(entity.playlist, {\"count\": 1})",
"input_public": "público",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) creado correctamente",
"success": "$t(entity.playlist, {\"count\": 1}) creado correctamente",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -841,11 +862,11 @@
},
"addToPlaylist": {
"success": "añadido $t(entity.trackWithCount, {\"count\": {{message}} }) a $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "añadir a $t(entity.playlist_one)",
"title": "añadir a $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "saltar duplicados",
"input_playlists": "$t(entity.playlist_other)",
"create": "Crear $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "Buscar $t(entity.playlist_other) o tipo para crear uno nuevo"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "Crear $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "Buscar $t(entity.playlist, {\"count\": 2}) o escribir para crear uno nuevo"
},
"updateServer": {
"title": "actualizar servidor",
@@ -853,12 +874,12 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "buscar letras"
},
"editPlaylist": {
"title": "editar $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) actualizada correctamente",
"title": "editar $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) actualizada correctamente",
"publicJellyfinNote": "Jellyfin por alguna razón no expone si una lista de reproducción es pública o no. Si deseas que ésta siga siendo pública, por favor ten seleccionada la siguiente entrada",
"editNote": "No se recomiendan las ediciones manuales para grandes listas de reproducción. ¿Seguro que aceptas el riesgo de pérdida de información incurrido por sobrescribir la lista de reproducción existente?"
},
@@ -890,7 +911,7 @@
},
"shuffleAll": {
"title": "Reproducir aleatorio",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "¿Cuántas canciones?",
"input_minYear": "Del año",
"input_maxYear": "Hasta el año",
@@ -922,7 +943,7 @@
"album": "álbum",
"favorite": "favorito",
"playCount": "reproducciones",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "año",
"lastPlayed": "última reproducción",
"biography": "biografía",
@@ -931,14 +952,14 @@
"title": "título",
"bpm": "lpm",
"dateAdded": "fecha de adición",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "pista",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "artista del álbum",
"path": "ruta",
"discNumber": "disco",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"size": "$t(common.size)",
"codec": "$t(common.codec)",
"owner": "Propietario",
@@ -951,13 +972,13 @@
"dateAdded": "fecha de adición",
"bpm": "$t(common.bpm)",
"lastPlayed": "última reproducción",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"biography": "$t(common.biography)",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"albumArtist": "$t(entity.albumArtist_one)",
"actions": "$t(common.action, {\"count\": 2})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"discNumber": "número de disco",
"releaseDate": "fecha de lanzamiento",
"title": "$t(common.title)",
@@ -970,13 +991,13 @@
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"playCount": "número de reproducciones",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)",
"albumCount": "$t(entity.album_other)",
"genreBadge": "$t(entity.genre_one) (insignias)",
"songCount": "$t(entity.track, {\"count\": 2})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (insignias)",
"image": "Imagen",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)",
@@ -1012,7 +1033,8 @@
"alternateRowColors": "Colores de fila alternativos",
"horizontalBorders": "Bordes de fila",
"verticalBorders": "Bordes de columna",
"rowHoverHighlight": "Resaltar al pasar el cursor por la fila"
"rowHoverHighlight": "Resaltar al pasar el cursor por la fila",
"showHeader": "Mostrar cabecera"
},
"view": {
"table": "tabla",
@@ -1022,7 +1044,7 @@
}
},
"entity": {
"smartPlaylist": "$t(entity.playlist_one) inteligente",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) inteligente",
"genre_one": "género",
"genre_many": "géneros",
"genre_other": "géneros",
@@ -1088,7 +1110,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "Emisión",
"ep": "EP",
"other": "Otro",
+169 -80
View File
@@ -1,29 +1,29 @@
{
"action": {
"deselectAll": "deshautatu dena",
"editPlaylist": "editatu $t(entity.playlist_one)",
"editPlaylist": "editatu $t(entity.playlist, {\"count\": 1})",
"goToPage": "joan orrira",
"moveToNext": "mugitu hurrengora",
"moveToBottom": "mugitu behera",
"moveToTop": "mugitu gora",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "kendu gogokoetatik",
"removeFromPlaylist": "kendu $t(entity.playlist_one)-(e)tik",
"removeFromPlaylist": "kendu $t(entity.playlist, {\"count\": 1})-(e)tik",
"removeFromQueue": "kendu ilaratik",
"setRating": "ezarri balorazioa",
"toggleSmartPlaylistEditor": "txandakatu $t(entity.smartPlaylist) editorea",
"viewPlaylists": "ikusi $t(entity.playlist_other)",
"viewPlaylists": "ikusi $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "Ireki Last.fm-n",
"musicbrainz": "Ireki MusicBrainz-en"
},
"clearQueue": "garbitu ilara",
"createPlaylist": "sortu $t(entity.playlist_one)",
"deletePlaylist": "ezabatu $t(entity.playlist_one)",
"createPlaylist": "sortu $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "ezabatu $t(entity.playlist, {\"count\": 1})",
"addToFavorites": "gehitu gogokoetara",
"addToPlaylist": "gehitu $t(entity.playlist_one)ra",
"createRadioStation": "sortu $t(entity.radioStation_one)",
"deleteRadioStation": "ezabatu $t(entity.radioStation_one)",
"addToPlaylist": "gehitu $t(entity.playlist, {\"count\": 1})ra",
"createRadioStation": "sortu $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "ezabatu $t(entity.radioStation, {\"count\": 1})",
"viewMore": "ikusi gehiago",
"shuffle": "nahastu",
"selectAll": "aukeratu guztiak",
@@ -31,7 +31,9 @@
"addOrRemoveFromSelection": "gehitu edo kendu hautapenetik",
"selectRangeOfItems": "aukeratu elementu sorta bat",
"shuffleAll": "nahastu dena",
"shuffleSelected": "nahastu aukeratutak"
"shuffleSelected": "nahastu aukeratutak",
"moveItems": "elementuak mugitu",
"openApplicationDirectory": "ireki aplikazioaren direktorioa"
},
"common": {
"add": "gehitu",
@@ -48,7 +50,7 @@
"configure": "konfiguratu",
"confirm": "berretsi",
"create": "sortu",
"currentSong": "uneko $t(entity.track_one)",
"currentSong": "uneko $t(entity.track, {\"count\": 1})",
"decrease": "gutxitu",
"delete": "ezabatu",
"descending": "beheranzkoa",
@@ -65,7 +67,8 @@
"filter_other": "iragazkiak",
"filters": "iragazkiak",
"forceRestartRequired": "berreabiarazi aldaketak aplikatzeko... itxi notifikazioa berreabiarazteko",
"setting": "ezarpenak",
"setting_one": "ezarpenak",
"setting_other": "",
"share": "partekatu",
"action_one": "ekintza",
"action_other": "ekintzak",
@@ -101,7 +104,7 @@
"path": "bidea",
"playerMustBePaused": "erreproduzitzailea pausatuta egon behar da",
"preview": "aurrebista",
"previousSong": "aurreko $t(entity.track_one)",
"previousSong": "aurreko $t(entity.track, {\"count\": 1})",
"quit": "irten",
"random": "ausazkoa",
"rating": "balorazioa",
@@ -146,7 +149,8 @@
"sort": "ordenatu",
"recordLabel": "diskoetxea",
"example": "adibidea",
"tableColumns": "taulako zutabeak"
"tableColumns": "taulako zutabeak",
"doNotShowAgain": "ez erakutsi hau berriro"
},
"player": {
"repeat": "errepikatu",
@@ -184,7 +188,9 @@
"restoreQueueFromServer": "berrezarri ilara zerbitzaritik",
"saveQueueToServer": "gorde ilara zerbitzarira",
"addLastShuffled": "azkena (ausaz)",
"addNextShuffled": "hurrengoa (ausaz)"
"addNextShuffled": "hurrengoa (ausaz)",
"artistRadio": "artista irratia",
"trackRadio": "pista irratia"
},
"table": {
"config": {
@@ -215,9 +221,9 @@
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"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)",
@@ -225,13 +231,13 @@
"codec": "$t(common.codec)",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"rating": "$t(common.rating)",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"year": "$t(common.year)",
"titleCombined": "$t(common.title) (batuta)",
@@ -240,7 +246,7 @@
"lastPlayed": "azken aldiz entzunda",
"discNumber": "disko zenbakia",
"dateAdded": "gehitze data",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"image": "irudia",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)"
@@ -248,20 +254,20 @@
},
"column": {
"album": "albuma",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografia",
"bitrate": "bit-emaria",
"channels": "$t(common.channel_other)",
"codec": "$t(common.codec)",
"discNumber": "diskoa",
"favorite": "gogokoa",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"path": "bidea",
"rating": "balorazioa",
"releaseYear": "urtea",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "tituloa",
"trackNumber": "pista",
"bpm": "bpm",
@@ -305,7 +311,7 @@
"play_other": "{{count}} erreprodukzio",
"playlistWithCount_one": "erreprodukzio-zerrenda {{count}}",
"playlistWithCount_other": "{{count}} erreprodukzio-zerrenda",
"smartPlaylist": "$t(entity.playlist_one) adimentsua",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) adimentsua",
"track_one": "pista",
"track_other": "pistak",
"song_one": "abestia",
@@ -344,7 +350,8 @@
"systemFontError": "errore bat gertatu da sistemaren letra-tipoak lortzen saiatzean",
"noNetwork": "zerbitzaria ez dago erabilgarri",
"noNetworkDescription": "ezin izan da zerbitzari honetara konektatu",
"saveQueueFailed": "huts egin du ilara gordetzean"
"saveQueueFailed": "huts egin du ilara gordetzean",
"multipleServerSaveQueueError": "erreprodukzio-ilarak zerbitzarikoak ez diren abesti bat edo gehiago ditu. hau ez da onartzen"
},
"filter": {
"disc": "diskoa",
@@ -358,19 +365,19 @@
"random": "ausazkoa",
"rating": "balorazioa",
"trackNumber": "pista",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografia",
"bitrate": "bit-emaria",
"bpm": "bpm-ak",
"channels": "$t(common.channel_other)",
"comment": "iruzkina",
"favorited": "gogoko gisa markatua",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"search": "bilatu",
"title": "tituloa",
"albumCount": "$t(entity.album_other) kopurua",
"albumCount": "$t(entity.album, {\"count\": 2}) kopurua",
"communityRating": "komunitatearen balorazioa",
"criticRating": "kritikarien balorazioa",
"dateAdded": "gehitutako data",
@@ -397,9 +404,9 @@
"playbackStyle_optionNormal": "normala",
"playButtonBehavior_optionPlay": "$t(player.play)",
"playButtonBehavior_optionPlayShuffled": "$t(player.shuffle)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"font": "letra-tipoa",
"hotkey_playbackStop": "gelditu",
"buttonSize_description": "erreproduzitzailearen barrako botoien tamaina",
@@ -635,7 +642,41 @@
"transcodeBitrate": "transkodetzeko bit-emaria",
"transcodeFormat_description": "transkodetzeko formatua hautatzen du. utzi hutsik zerbitzariak erabaki dezan",
"transcodeFormat": "transkodetzeko formatua",
"queryBuilderCustomFields_inputLabel": "etiketa"
"queryBuilderCustomFields_inputLabel": "etiketa",
"autoDJ": "DJ automatikoa",
"autoDJ_description": "automatikoki gehitu antzeko abestiak ilaran",
"autoDJ_itemCount_description": "DJ automatikoa gaituta dagoenean 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",
"contextMenu_description": "elementu batean eskuineko botoiarekin klik egitean menuan agertzen diren elementuak ezkutatzeko aukera ematen dizu. hautatuta ez dauden elementuak ezkutatuta egongo dira",
"enableAutoTranslation_description": "Gaitu itzulpena automatikoki letra kargatzen denean",
"exportImportSettings_control_description": "JSON bidez ezarpenak esportatu eta inportatu",
"exportImportSettings_destructiveWarning": "Ezarpenak inportatzea arriskutsua da, mesedez, berrikusi goikoa beheko \"inportatu\" klikatu aurretik!",
"exportImportSettings_importSuccess": "ezarpenak behar bezala inportatu dira!",
"exportImportSettings_offendingKeyError": "\"{{offendingKey}}\" okerra da - {{reason}}",
"hotkey_listPlayDefault": "zerrenda erreproduzitu",
"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_optionDebug": "arazketa",
"playerFilters_description": "saltatu abestiak ilaran gehitzea irizpide hauen arabera",
"artistRadioCount_description": "artista eta abestien irratian bilatu beharreko abesti kopurua ezartzen du",
"artistRadioCount": "artista/abesti irratiko kopurua",
"imageResolution_optionItemCard": "elementu txartela",
"imageResolution_optionHeader": "goiburua",
"imageResolution_optionFullScreenPlayer": "pantaila osoko erreproduzitzailea",
"showVisualizerInSidebar": "erakutsi bistaratzailea erreproduzitzailearen alboko barran",
"combinedLyricsAndVisualizer_description": "konbinatu letrak eta bistaratzailea panel berean",
"combinedLyricsAndVisualizer": "konbinatu letrak eta bistaratzailea erreproduzitzailearen alboko barran",
"preventSleepOnPlayback_description": "saihestu pantaila lotan jartzea musika erreproduzitzen ari den bitartean",
"remotePassword_description": "urruneko kontrol zerbitzariaren pasahitza ezartzen du. Kredentzial hauek modu ez-seguruan transferitzen dira lehenespenez, beraz, axola ez zaizun pasahitz bakarra erabili beharko zenuke",
"remotePassword": "urruneko kontrol zerbitzariaren pasahitza",
"remotePort_description": "urruneko kontrol zerbitzariaren portua ezartzen du",
"remotePort": "urruneko kontrol zerbitzariaren ataka",
"remoteUsername_description": "urruneko kontrol zerbitzariaren erabiltzaile-izena ezartzen du. Erabiltzaile-izena eta pasahitza hutsik badaude, autentifikazioa desgaituta egongo da",
"remoteUsername": "urruneko kontrol zerbitzariaren erabiltzaile-izena"
},
"form": {
"addServer": {
@@ -655,23 +696,23 @@
"input_remoteUrl": "URL publikoa"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) gehitu da $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })-ra",
"input_skipDuplicates": "saltatu bikoiztuak",
"title": "gehitu $t(entity.playlist_one)-(a)ri",
"create": "sortu $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "bilatu $t(entity.playlist_other) edo idatzi berri bat sortzeko"
"title": "gehitu $t(entity.playlist, {\"count\": 1})-(a)ri",
"create": "sortu $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "bilatu $t(entity.playlist, {\"count\": 2}) edo idatzi berri bat sortzeko"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "publikoa",
"title": "$t(entity.playlist_one) sortu",
"success": "$t(entity.playlist_one) behar bezala sortu da"
"title": "$t(entity.playlist, {\"count\": 1}) sortu",
"success": "$t(entity.playlist, {\"count\": 1}) behar bezala sortu da"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "letra bilatu"
},
@@ -684,13 +725,13 @@
"createFailed": "partekatzea sortzeak huts egin du (partekatzea gaituta al dago?)"
},
"deletePlaylist": {
"success": "$t(entity.playlist_one) behar bezala ezabatu da",
"title": "$t(entity.playlist_one) ezabatu",
"input_confirm": "idatzi $t(entity.playlist_one)-(a)ren izena berresteko"
"success": "$t(entity.playlist, {\"count\": 1}) behar bezala ezabatu da",
"title": "$t(entity.playlist, {\"count\": 1}) ezabatu",
"input_confirm": "idatzi $t(entity.playlist, {\"count\": 1})-(a)ren izena berresteko"
},
"editPlaylist": {
"success": "$t(entity.playlist_one) behar bezala eguneratu da",
"title": "$t(entity.playlist_one) editatu",
"success": "$t(entity.playlist, {\"count\": 1}) behar bezala eguneratu da",
"title": "$t(entity.playlist, {\"count\": 1}) editatu",
"publicJellyfinNote": "Arrazoiren batengatik, Jellyfin ez du erakusten erreprodukzio-zerrendak publikoak diren edo ez. Hau publiko izaten jarraitzea nahi baduzu, hautatu sarrera hau",
"editNote": "ez da gomendatzen eskuzko edizioak egitea erreprodukzio-zerrenda handietarako. ziur zaude onartzen duzula lehendik dagoen erreprodukzio-zerrenda gainidazteagatik datuak galtzeko arriskua?"
},
@@ -725,7 +766,7 @@
"input_offset": "$t(setting.lyricOffset)"
},
"shuffleAll": {
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"title": "ausaz erreproduzitu",
"input_limit": "zenbat abesti?",
"input_played_optionAll": "pista guztiak",
@@ -738,21 +779,21 @@
},
"page": {
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"released": "argitaratuta",
"moreFromArtist": "$t(entity.artist_one) honetatik gehiago",
"moreFromArtist": "$t(entity.artist, {\"count\": 1}) honetatik gehiago",
"moreFromGeneric": "{{item}}-(e)tik gehiago"
},
"albumList": {
"title": "$t(entity.album_other)",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"artistAlbums": "{{artist}}-(a)ren albumak"
},
"appMenu": {
"quit": "$t(common.quit)",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"collapseSidebar": "tolestu alboko barra",
"expandSidebar": "zabaldu alboko barra",
"goBack": "atzera",
@@ -798,7 +839,7 @@
"playShuffled": "$t(player.shuffle)",
"numberSelected": "{{count}} hautatuta",
"shareItem": "partekatu elementua",
"goToAlbum": "joan $t(entity.album_one)-(e)ra",
"goToAlbum": "joan $t(entity.album, {\"count\": 1})-(e)ra",
"goToAlbumArtist": "joan albumera",
"showDetails": "informazioa lortu",
"moveItems": "$t(action.moveItems)"
@@ -827,9 +868,9 @@
"noLyrics": "ez da letrarik aurkitu"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "erakutsi $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "erakutsi $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "erakutsi $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "erakutsi $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"title": "komandoak",
@@ -846,10 +887,10 @@
"recentlyPlayed": "azken aldian entzundakoak",
"recentlyReleased": "azken aldian argitaratutak",
"explore": "arakatu zure liburutegitik",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "aurreratua",
@@ -874,34 +915,34 @@
"lyricsDisplay": "erakutsi letrak"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})",
"myLibrary": "nire liburutegia",
"nowPlaying": "orain erreproduzitzen",
"shared": "partekatutako $t(entity.playlist_other)",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"shared": "partekatutako $t(entity.playlist, {\"count\": 2})",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"artistTracks": "{{artist}}-(r)en abestiak"
},
"albumArtistDetail": {
"about": "{{artist}}-(r)i buruz",
"relatedArtists": "erlazionatutako $t(entity.artist_other)",
"relatedArtists": "erlazionatutako $t(entity.artist, {\"count\": 2})",
"topSongs": "abesti nagusiak",
"topSongsFrom": "{{title}}-(a)ren abesti nagusiak",
"viewAll": "ikusi guztiak",
"viewAllTracks": "ikusi $t(entity.track_other) guztiak",
"viewAllTracks": "ikusi $t(entity.track, {\"count\": 2}) guztiak",
"appearsOn": "agertzen da hemen",
"recentReleases": "azken argitalpenak",
"viewDiscography": "ikusi diskografia",
@@ -917,10 +958,10 @@
"reorder": "berrantolaketa IDaren arabera ordenatzean bakarrik gaituta dago"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"radioList": {
"title": "irrati-kateak"
@@ -928,7 +969,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"other": "bestelakoa",
"ep": "ep"
},
@@ -936,7 +977,8 @@
"compilation": "konpilazioa",
"audiobook": "audioliburua",
"interview": "elkarrizketa",
"remix": "nahasketa"
"remix": "nahasketa",
"djMix": "dj nahasketa"
}
},
"datetime": {
@@ -946,7 +988,8 @@
"dayShort": "d"
},
"queryBuilder": {
"customTags": "etiketa pertsonalizatutak"
"customTags": "etiketa pertsonalizatutak",
"standardTags": "etiketa estandarrak"
},
"filterOperator": {
"is": "da",
@@ -984,7 +1027,8 @@
"gradient": {
"classic": "Klasikoa",
"prism": "Prisma",
"rainbow": "Ostadarra"
"rainbow": "Ostadarra",
"orangered": "Laranja-gorria"
},
"weightingFilter": {
"none": "Bat ere ez",
@@ -993,6 +1037,24 @@
"c": "C",
"d": "D",
"z": "Z"
},
"mode": {
"0": "[0] Maiztasun Diskretuak",
"1": "[1] 1/24 oktaba / 240 banda",
"2": "[2] 1/12 oktaba / 120 banda",
"3": "[3] 1/8 oktaba / 80 banda",
"4": "[4] 1/6ko oktaba / 60 banda",
"5": "[5] 1/4 oktaba / 40 banda",
"6": "[6] 1/3 oktaba / 30 banda",
"7": "[7] Oktaba erdi / 20 banda",
"8": "[8] Oktaba osoa / 10 banda",
"10": "[10] Lerroa / Azalera grafikoa"
},
"frequencyScale": {
"none": "Bat ere ez",
"linear": "Eskala Lineala",
"bark": "Bark Eskala",
"mel": "Mel Eskala"
}
},
"opacity": "Opakotasuna",
@@ -1009,6 +1071,33 @@
"configCopyFailed": "Konfigurazioa kopiatzeak huts egin du",
"configPasted": "Konfigurazioa behar bezala aplikatu da",
"configPasteFailed": "Konfigurazioa aplikatzeak huts egin du. Mesedez, egiaztatu formatua.",
"configPasteReadFailed": "Arbelatik irakurtzeak huts egin du"
"configPasteReadFailed": "Arbelatik irakurtzeak huts egin du",
"colorMode": "Kolore Modua",
"fftSize": "FFT tamaina",
"frequencyRangeAndScaling": "Maiztasun-tartea eta eskalatzea",
"showScaleY": "Erakutsi Y Eskala",
"pasteGradientPlaceholder": "Itsatsi JSON gradientea hemen...",
"pasteGradient": "Itsatsi Gradientea",
"addColor": "Gehitu Kolorea",
"colorStops": "Kolore Geldialdiak",
"gradientNamePlaceholder": "Gradientearen Izena",
"gradientName": "Gradientearen Izena",
"addCustomGradient": "Gehitu Gradiente Pertsonalizatua",
"customGradients": "Gradiente Pertsonalizatuak",
"maxFPS": "FPS maximoak",
"channelLayout": "Kanalaren Diseinua",
"lineWidth": "Lerroaren Zabalera",
"presetNamePlaceholder": "Sartu aurrezarpenaren izena",
"presetName": "Aurrezarpenaren Izena",
"applyConfiguration": "Aplikatu konfigurazioa",
"pasteFromClipboard": "Itsatsi Arbeletik",
"pasteConfigurationPlaceholder": "Itsatsi JSON konfigurazioa hemen...",
"pasteConfiguration": "Itsatsi Konfigurazioa",
"copyConfiguration": "Kopiatu Konfigurazioa",
"updatePreset": "Aurrezarpena Eguneratu",
"saveAsPreset": "Aurrezarpen gisa gorde",
"applyPreset": "Aurrezarpena Aplikatu",
"selectPreset": "Aukeratu Aurrezarpena",
"presets": "Aurrezarpenak"
}
}
+55 -54
View File
@@ -33,23 +33,23 @@
"muted": "بی‌صدا"
},
"action": {
"editPlaylist": "ویرایش $t(entity.playlist_one)",
"editPlaylist": "ویرایش $t(entity.playlist, {\"count\": 1})",
"goToPage": "برو به صفحهٔ",
"moveToTop": "انتقال به بالا",
"clearQueue": "خالی کردن صف",
"addToFavorites": "افزودن به $t(entity.favorite_other)",
"addToPlaylist": "افزودن به $t(entity.playlist_one)",
"createPlaylist": "ساخت $t(entity.playlist_one)",
"removeFromPlaylist": "حذف از $t(entity.playlist_one)",
"viewPlaylists": "نمایش $t(entity.playlist_other)",
"addToFavorites": "افزودن به $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "افزودن به $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "ساخت $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "حذف از $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "نمایش $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "حذف $t(entity.playlist_one)",
"deletePlaylist": "حذف $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "حذف از صف",
"deselectAll": "لغو انتخاب همه",
"moveToBottom": "انتقال به پایین",
"setRating": "تعیین امتیاز",
"toggleSmartPlaylistEditor": "تغییر ویرایشگر $t(entity.smartPlaylist)",
"removeFromFavorites": "حذف از $t(entity.favorite_other)",
"removeFromFavorites": "حذف از $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "باز کردن در Last.fm",
"musicbrainz": "باز کردن در MusicBranz"
@@ -78,14 +78,14 @@
"hotkey_globalSearch": "جست و جوی سراسری",
"disableAutomaticUpdates": "غیرفعال کردن به‌‌روزرسانی خودکار",
"exitToTray_description": "خروج از اپلیکیشن به system tray",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"discordUpdateInterval_description": "فاصلهٔ بین هر به روزرسانی به ثانیه (حداقل ۱۵ ثانیه)",
"audioExclusiveMode": "حالت اختصاصی صدا",
"remotePassword": "رمز عبور کنترل از راه دور",
"language_description": "زبان اپلیکیشن را معین می‌کند $t(common.restartRequired)",
"hotkey_rate3": "امتیاز ۳ ستاره",
"font": "قلم",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"hotkey_toggleFullScreenPlayer": "تغییر به پخش‌کنندهٔ تمام‌صفحه",
"hotkey_localSearch": "جست و جو در صفحه",
"hotkey_toggleQueue": "تغییر صف",
@@ -186,7 +186,7 @@
"left": "چپ",
"save": "ذخیره",
"right": "راست",
"currentSong": "فعلی $t(entity.track_one)",
"currentSong": "فعلی $t(entity.track, {\"count\": 1})",
"collapse": "بستن",
"trackNumber": "قطعه",
"descending": "نزولی",
@@ -239,7 +239,7 @@
"none": "هیچ",
"menu": "منو",
"restartRequired": "راه‌اندازی دوباره لازم است",
"previousSong": "$t(entity.track_one) پیشین",
"previousSong": "$t(entity.track, {\"count\": 1}) پیشین",
"noResultsFromQuery": "جست‌وجو نتیجه‌ای نداشت",
"quit": "خروج",
"expand": "گسترش",
@@ -256,7 +256,8 @@
"albumPeak": "اوج آلبوم",
"mbid": "شناسه‌ی MusicBrainz",
"reload": "بارگذاری مجدد",
"setting": "پیکربندی",
"setting_one": "پیکربندی",
"setting_other": "",
"trackGain": "گین قطعه",
"trackPeak": "اوج قطعه",
"translation": "ترجمه",
@@ -301,16 +302,16 @@
"rating": "امتیاز",
"search": "جست‌وجو",
"bitrate": "بیت‌ریت",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "به تازگی افزوده شده",
"note": "توجه",
"name": "نام",
"dateAdded": "تاریخ افزوده شدن",
"releaseDate": "تاریخ انتشار",
"albumCount": "$t(entity.album_other) عدد",
"albumCount": "$t(entity.album, {\"count\": 2}) عدد",
"path": "مسیر",
"favorited": "موردعلاقه",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "به تازگی پخش شده است",
"isFavorited": "موردعلاقه است",
"bpm": "bpm",
@@ -319,7 +320,7 @@
"disc": "دیسک",
"biography": "زندگی‌نامه",
"songCount": "تعداد ترانه",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "مدت",
"isPublic": "عمومی است",
"random": "تصادفی",
@@ -327,23 +328,23 @@
"toYear": "تا سال",
"fromYear": "از سال",
"criticRating": "امتیاز منتقدین",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "قطعه",
"communityRating": "رتبه بندی جامعه",
"isCompilation": "مخلوط است"
},
"form": {
"deletePlaylist": {
"title": "حذف $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) حذف شد",
"input_confirm": "برای تایید، نام $t(entity.playlist_one) را وارد کنید"
"title": "حذف $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) حذف شد",
"input_confirm": "برای تایید، نام $t(entity.playlist, {\"count\": 1}) را وارد کنید"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "ساخت $t(entity.playlist_one)",
"title": "ساخت $t(entity.playlist, {\"count\": 1})",
"input_public": "عمومی",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) ساخته شد",
"success": "$t(entity.playlist, {\"count\": 1}) ساخته شد",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -360,19 +361,19 @@
"ignoreSsl": "نادیده گرفتن ssl ($t(common.restartRequired))"
},
"addToPlaylist": {
"success": "$t(entity.song_other) به {{numOfPlaylists}}$t(entity.playlist_other) افزوده شد",
"title": "افزودن به $t(entity.playlist_one)",
"input_playlists": "$t(entity.playlist_other)",
"success": "$t(entity.song, {\"count\": 2}) به {{numOfPlaylists}}$t(entity.playlist, {\"count\": 2}) افزوده شد",
"title": "افزودن به $t(entity.playlist, {\"count\": 1})",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "پرش از تکراری‌ها"
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "جست‌وجو در متن شعر"
},
"editPlaylist": {
"title": "ویرایش $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) با موفقیت بروزرسانی شد",
"title": "ویرایش $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) با موفقیت بروزرسانی شد",
"publicJellyfinNote": "جلی‌فین به دلیلی این‌که فهرست پخش عمومی‌ست یا خصوصی را فاش نمی‌کند. اگر می‌خواهید این عمومی باقی بماند، لطفاٌ ورودی پیش‌رو را منتخب داشته باشید"
},
"queryEditor": {
@@ -417,7 +418,7 @@
"artistWithCount_other": "{{count}} هنرمند",
"folder_one": "پوشه",
"folder_other": "پوشه‌ها",
"smartPlaylist": "$t(entity.playlist_one) هوشمند",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) هوشمند",
"album_one": "آلبوم",
"album_other": "آلبوم‌ها",
"genreWithCount_one": "{{count}} ژانر",
@@ -431,12 +432,12 @@
},
"page": {
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "آلبوم‌های {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"appMenu": {
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"selectServer": "گزینش سرویس‌دهنده",
"expandSidebar": "گسترش نوار کناری",
"collapseSidebar": "فروکش نوار کناری",
@@ -451,11 +452,11 @@
"appearsOn": "مشاهده می‌شود در",
"about": "درباره‌ی {{artist}}",
"recentReleases": "عرضه‌های اخیر",
"viewAllTracks": "نمایش همه‌ی $t(entity.track_other)",
"viewAllTracks": "نمایش همه‌ی $t(entity.track, {\"count\": 2})",
"topSongsFrom": "قطعه‌های برتر از {{title}}",
"viewAll": "نمایش همه",
"viewDiscography": "نمایش کاتالوگ",
"relatedArtists": "$t(entity.artist_other) مربوطه",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) مربوطه",
"topSongs": "قطعه‌های برتر"
},
"contextMenu": {
@@ -523,21 +524,21 @@
"playbackTab": "پخش"
},
"sidebar": {
"genres": "$t(entity.genre_other)",
"playlists": "$t(entity.playlist_other)",
"genres": "$t(entity.genre, {\"count\": 2})",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"folders": "$t(entity.folder_other)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"home": "$t(common.home)",
"nowPlaying": "پخش کنونی",
"tracks": "$t(entity.track_other)",
"settings": "$t(common.setting_other)",
"shared": "$t(entity.playlist_other) اشتراک‌گذاری شده"
"tracks": "$t(entity.track, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) اشتراک‌گذاری شده"
},
"albumDetail": {
"moreFromArtist": "موارد بیشتر از این $t(entity.artist_one)",
"moreFromArtist": "موارد بیشتر از این $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "موارد بیشتر از {{item}}",
"released": "عرضه شده"
},
@@ -550,9 +551,9 @@
"editServerDetailsTooltip": "ویرایش ریزگان سرویس‌دهنده"
},
"genreList": {
"showAlbums": "نمایش $t(entity.genre_one) $t(entity.album_other)",
"title": "$t(entity.genre_other)",
"showTracks": "نمایش $t(entity.genre_one) $t(entity.track_other)"
"showAlbums": "نمایش $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})",
"showTracks": "نمایش $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -563,15 +564,15 @@
"title": "فرمان‌ها"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "قطعه‌های {{artist}}",
"genreTracks": "$t(entity.track_other) \"{{genre}}\""
"genreTracks": "$t(entity.track, {\"count\": 2}) \"{{genre}}\""
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"itemDetail": {
"copyPath": "کپی کردن مسیر در کلیپ‌بورد",
@@ -584,11 +585,11 @@
"size": "$t(common.size)",
"lastPlayed": "آخرین بار پخش شده",
"discNumber": "دیسک",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "عنوان",
"trackNumber": "قطعه",
"favorite": "مورد علاقه",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"comment": "دیدگاه",
"playCount": "تعداد پخش",
"rating": "امتیاز",
+66 -65
View File
@@ -3,7 +3,8 @@
"size": "koko",
"search": "etsi",
"sortOrder": "järjestys",
"setting": "asetus",
"setting_one": "asetus",
"setting_other": "",
"title": "otsikko",
"trackNumber": "raita",
"action_one": "toiminto",
@@ -44,7 +45,7 @@
"owner": "omistaja",
"path": "polku",
"preview": "esikatsele",
"previousSong": "edellinen $t(entity.track_one)",
"previousSong": "edellinen $t(entity.track, {\"count\": 1})",
"resetToDefault": "palauta oletusarvoihin",
"restartRequired": "vaatii uudelleenkäynnistyksen",
"right": "oikea",
@@ -66,7 +67,7 @@
"codec": "koodekki",
"create": "luo",
"description": "kuvaus",
"currentSong": "nykyinen $t(entity.track_one)",
"currentSong": "nykyinen $t(entity.track, {\"count\": 1})",
"delete": "poista",
"duration": "kesto",
"edit": "muokkaa",
@@ -130,7 +131,7 @@
"genre_other": "genret",
"genreWithCount_one": "{{count}} genre",
"genreWithCount_other": "{{count}} genreä",
"smartPlaylist": "älykäs $t(entity.playlist_one)",
"smartPlaylist": "älykäs $t(entity.playlist, {\"count\": 1})",
"track_one": "raita",
"track_other": "raidat",
"trackWithCount_one": "{{count}} raita",
@@ -142,11 +143,11 @@
},
"action": {
"clearQueue": "tyhjennä jono",
"createPlaylist": "luo $t(entity.playlist_one)",
"createPlaylist": "luo $t(entity.playlist, {\"count\": 1})",
"deselectAll": "poista kaikkien valinta",
"editPlaylist": "muokkaa $t(entity.playlist_one)",
"editPlaylist": "muokkaa $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "poista jonosta",
"viewPlaylists": "katsele $t(entity.playlist_other)",
"viewPlaylists": "katsele $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "Avaa Last.fm:ssä",
"musicbrainz": "Avaa MusicBrainz:ssä"
@@ -154,13 +155,13 @@
"goToPage": "mene sivulle",
"moveToBottom": "siirry pohjalle",
"moveToTop": "siirry ylös",
"addToFavorites": "lisää kohteeseen $t(entity.favorite_other)",
"addToPlaylist": "lisää kohteeseen $t(entity.playlist_one)",
"addToFavorites": "lisää kohteeseen $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "lisää kohteeseen $t(entity.playlist, {\"count\": 1})",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "poista kohteesta $t(entity.favorite_other)",
"removeFromFavorites": "poista kohteesta $t(entity.favorite, {\"count\": 2})",
"toggleSmartPlaylistEditor": "kytke $t(entity.smartPlaylist) editori",
"deletePlaylist": "poista $t(entity.playlist_one)",
"removeFromPlaylist": "poista kohteesta $t(entity.playlist_one)",
"deletePlaylist": "poista $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "poista kohteesta $t(entity.playlist, {\"count\": 1})",
"setRating": "aseta arvostelu",
"moveToNext": "siirry seuraavaan"
},
@@ -191,9 +192,9 @@
"notificationDenied": "luvat ilmouilmoituksia varten evättiin. tällä asetuksella ei ole vaikutusta"
},
"filter": {
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografia",
"bitrate": "bittinopeus",
"bpm": "lyöntiä minuutissa (bpm)",
@@ -213,12 +214,12 @@
"search": "haku",
"trackNumber": "raita",
"isPublic": "on julkinen",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"favorited": "suosikeissa",
"fromYear": "vuodelta",
"isRated": "on arvosteltu",
"recentlyPlayed": "äskettäin toistetut",
"albumCount": "$t(entity.album_other) määrä",
"albumCount": "$t(entity.album, {\"count\": 2}) määrä",
"disc": "levy",
"duration": "kesto",
"id": "tunnus",
@@ -255,34 +256,34 @@
"input_public": "julkinen",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"success": "$t(entity.playlist_one) luotu onnistuneesti",
"title": "luo $t(entity.playlist_one)",
"success": "$t(entity.playlist, {\"count\": 1}) luotu onnistuneesti",
"title": "luo $t(entity.playlist, {\"count\": 1})",
"input_description": "$t(common.description)"
},
"addToPlaylist": {
"input_skipDuplicates": "ohita kaksoiskappaleet",
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) lisätty $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "lisää soittolistalle $t(entity.playlist_one)",
"input_playlists": "$t(entity.playlist_other)",
"create": "luo $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "hae $t(entity.playlist_other) tai tyyppiä luodaksesi uuden"
"title": "lisää soittolistalle $t(entity.playlist, {\"count\": 1})",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "luo $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "hae $t(entity.playlist, {\"count\": 2}) tai tyyppiä luodaksesi uuden"
},
"updateServer": {
"success": "palvelin on päivitetty onnistuneesti",
"title": "päivitä palvelin"
},
"deletePlaylist": {
"success": "$t(entity.playlist_one) poistettu onnistuneesti",
"title": "poista $t(entity.playlist_one)",
"input_confirm": "kirjoita soittolistan $t(entity.playlist_one) nimi vahvistaaksesi"
"success": "$t(entity.playlist, {\"count\": 1}) poistettu onnistuneesti",
"title": "poista $t(entity.playlist, {\"count\": 1})",
"input_confirm": "kirjoita soittolistan $t(entity.playlist, {\"count\": 1}) nimi vahvistaaksesi"
},
"editPlaylist": {
"success": "$t(entity.playlist_one) päivitetty onnistuneesti",
"title": "muokkaa $t(entity.playlist_one)",
"success": "$t(entity.playlist, {\"count\": 1}) päivitetty onnistuneesti",
"title": "muokkaa $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Jellyfin ei jostain syystä kerro onko soittolista julkinen vai ei. Jos haluat sen pysyvän julkisena, pidä seuraava valinta valittuna"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "sanojen haku"
},
@@ -437,7 +438,7 @@
"gaplessAudio": "tauoton toisto",
"transcodeFormat_description": "valitsee transkoodattavan formaatin. jätä tyhjäksi palvelimen valintaa varten",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeDark": "teema (tumma)",
"translationApiKey_description": "API-avain käännöstä varten (tukee vain globaalia palvelun palvelupistettä)",
"playbackStyle_description": "valitse toiston tyyli, jota käytetään soittimessa",
@@ -474,7 +475,7 @@
"replayGainClipping": "{{ReplayGain}} leikkaus",
"replayGainClipping_description": "Estää {{ReplayGain}}n aiheuttaman leikkauksen laskemalla vahvistusta automaatisesti",
"replayGainFallback": "{{ReplayGain}} palautus",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainPreamp": "{{ReplayGain}} esivahvistus (dB)",
"scrobble_description": "skrobblaa toistot mediapalvelimellesi",
"replayGainPreamp_description": "säätää esivahvistuksen määrää {{ReplayGain}} arvoon",
@@ -549,24 +550,24 @@
"openFile": "näytä kappale tiedostonhallinnassa"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "siirrä kohteesta $t(entity.artist_one)",
"moreFromArtist": "siirrä kohteesta $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "listää kohteesta {{item}}",
"released": "julkaistu"
},
"albumList": {
"artistAlbums": "artistin {{artist}} albumit",
"genreAlbums": "\"{{genre}}\"$t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\"$t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"appMenu": {
"goBack": "mene takaisin",
"openBrowserDevtools": "avaa selaimen kehitystyökalut",
"quit": "$t(common.quit)",
"selectServer": "valitse palvelin",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"expandSidebar": "laajenna sivupalkki",
"goForward": "mene eteenpäin",
"manageServers": "hallitse palvelimia",
@@ -598,21 +599,21 @@
"addLast": "$t(player.addLast)",
"moveToNext": "$t(action.moveToNext)",
"removeFromQueue": "$t(action.removeFromQueue)",
"goToAlbum": "mene $t(entity.album_one)",
"goToAlbumArtist": "mene $t(entity.albumArtist_one)"
"goToAlbum": "mene $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "mene $t(entity.albumArtist, {\"count\": 1})"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"settings": "$t(common.setting_other)",
"shared": "$t(entity.playlist_other) jaettu",
"tracks": "$t(entity.track_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) jaettu",
"tracks": "$t(entity.track, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"nowPlaying": "nyt soi",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"myLibrary": "oma kirjasto"
},
@@ -647,9 +648,9 @@
"related": "liittyvät"
},
"genreList": {
"showAlbums": "näytä $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "näytä $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "näytä $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "näytä $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -670,16 +671,16 @@
"albumArtistDetail": {
"about": "{{artist}}{sta/stä",
"viewDiscography": "katsele diskografiaa",
"relatedArtists": "liittyvät $t(entity.artist_other)",
"relatedArtists": "liittyvät $t(entity.artist, {\"count\": 2})",
"appearsOn": "esiintyy",
"topSongs": "parhaat kappaleet",
"topSongsFrom": "parhaat kappaleet albumilta {{title}}",
"recentReleases": "hiljattaiset julkaisut",
"viewAll": "katsele kaikkia",
"viewAllTracks": "katsele kaikkia $t(entity.track_other)"
"viewAllTracks": "katsele kaikkia $t(entity.track, {\"count\": 2})"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"manageServers": {
"title": "hallitse palvelimia",
@@ -694,8 +695,8 @@
},
"trackList": {
"artistTracks": "artistin {{artist}} kappaleet",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
}
},
"player": {
@@ -746,14 +747,14 @@
"label": {
"channels": "$t(common.channel_other)",
"trackNumber": "raidan numero",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"actions": "$t(common.action_other)",
"codec": "$t(common.codec)",
"dateAdded": "lisäyspäivämäärä",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"discNumber": "levyn numero",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
@@ -764,12 +765,12 @@
"biography": "$t(common.biography)",
"bitrate": "$t(common.bitrate)",
"bpm": "$t(common.bpm)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"playCount": "toistojen lukumäärä",
"rating": "$t(common.rating)",
"releaseDate": "julkaisupäivämäärä",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"year": "$t(common.year)"
},
@@ -782,7 +783,7 @@
"column": {
"releaseYear": "vuosi",
"bpm": "bpm",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografia",
"dateAdded": "lisäyspäivämäärä",
"album": "albumi",
@@ -790,17 +791,17 @@
"lastPlayed": "viimeksi toistettu",
"path": "polku",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "nimi",
"trackNumber": "raita",
"codec": "$t(common.codec)",
"comment": "kommentti",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"bitrate": "bittinopeus",
"channels": "$t(common.channel_other)",
"discNumber": "levy",
"favorite": "suosikki",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"playCount": "toistoja",
"rating": "arvostelu",
"releaseDate": "julkaisupäivämäärä"
@@ -808,7 +809,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "lähetys",
"ep": "EP",
"other": "muu",
+75 -75
View File
@@ -41,23 +41,23 @@
"trackRadio": "radio du titre"
},
"action": {
"editPlaylist": "éditer $t(entity.playlist_one)",
"editPlaylist": "éditer $t(entity.playlist, {\"count\": 1})",
"goToPage": "aller à la page",
"moveToTop": "déplacer en haut",
"clearQueue": "vider la file d'attente",
"addToFavorites": "ajouter aux $t(entity.favorite_other)",
"addToPlaylist": "ajouter à $t(entity.playlist_one)",
"createPlaylist": "créer $t(entity.playlist_one)",
"removeFromPlaylist": "supprimer des $t(entity.playlist_one)",
"viewPlaylists": "voir $t(entity.playlist_other)",
"addToFavorites": "ajouter aux $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "ajouter à $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "créer $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "supprimer des $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "voir $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "supprimer de $t(entity.playlist_one)",
"deletePlaylist": "supprimer de $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "retirer de la file d'attente",
"deselectAll": "désélectionner tout",
"moveToBottom": "déplacer en bas",
"setRating": "noter",
"toggleSmartPlaylistEditor": "basculer l'éditeur de $t(entity.smartPlaylist)",
"removeFromFavorites": "retirer des $t(entity.favorite_other)",
"removeFromFavorites": "retirer des $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "Ouvrir dans Last.fm",
"musicbrainz": "Ouvrir dans MusicBrainz"
@@ -73,8 +73,8 @@
"moveDown": "descendre",
"holdToMoveToTop": "Maintenir pour déplacer en haut",
"holdToMoveToBottom": "Maintenir pour déplacer en bas",
"createRadioStation": "créer $t(entity.radioStation_one)",
"deleteRadioStation": "supprimer $t(entity.radioStation_one)",
"createRadioStation": "créer $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "supprimer $t(entity.radioStation, {\"count\": 1})",
"addOrRemoveFromSelection": "ajouter ou supprimer de la sélection",
"selectRangeOfItems": "sélectionner une plage d'entrées",
"selectAll": "tout sélectionner",
@@ -93,7 +93,7 @@
"left": "gauche",
"save": "enregistrer",
"right": "droite",
"currentSong": "$t(entity.track_one) actuelle",
"currentSong": "$t(entity.track, {\"count\": 1}) actuelle",
"collapse": "réduire",
"trackNumber": "piste",
"descending": "décroisant",
@@ -153,7 +153,7 @@
"none": "aucun",
"menu": "menu",
"restartRequired": "redémarrage requis",
"previousSong": "$t(entity.track_one) précédente",
"previousSong": "$t(entity.track, {\"count\": 1}) précédente",
"noResultsFromQuery": "la requête n'a retourné aucun résultat",
"quit": "quitter",
"expand": "étendre",
@@ -267,36 +267,36 @@
"fromYear": "depuis l'année",
"criticRating": "note des critiques",
"trackNumber": "piste",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"comment": "commentaire",
"recentlyUpdated": "mis à jour récemment",
"channels": "$t(common.channel_other)",
"owner": "$t(common.owner)",
"genre": "$t(entity.genre_one)",
"albumCount": "$t(entity.album_other) total",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2}) total",
"id": "id",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"isPublic": "est public",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"explicitStatus": "$t(common.explicitStatus)"
},
"page": {
"sidebar": {
"nowPlaying": "lecture en cours",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"shared": "partagé $t(entity.playlist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"shared": "partagé $t(entity.playlist, {\"count\": 2})",
"myLibrary": "Bibliothèque",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"fullscreenPlayer": {
"config": {
@@ -330,7 +330,7 @@
"goBack": "retour arrière",
"goForward": "avancer",
"version": "version {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"quit": "$t(common.quit)",
"privateModeOff": "désactiver le mode privé",
"privateModeOn": "activer le mode privé",
@@ -346,10 +346,10 @@
"recentlyPlayed": "Joués récemment",
"title": "$t(common.home)",
"recentlyReleased": "Sortis récemment",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "plus de $t(entity.artist_one)",
"moreFromArtist": "plus de $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "plus de {{item}}",
"released": "publié"
},
@@ -409,41 +409,41 @@
"download": "télécharger",
"playShuffled": "$t(player.shuffle)",
"moveToNext": "$t(action.moveToNext)",
"goToAlbumArtist": "aller à l'$t(entity.albumArtist_one)",
"goToAlbum": "aller à l'$t(entity.album_one)",
"goToAlbumArtist": "aller à l'$t(entity.albumArtist, {\"count\": 1})",
"goToAlbum": "aller à l'$t(entity.album, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "aller à"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "afficher $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "afficher $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "afficher $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "afficher $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "pistes par {{artist}}",
"genreTracks": "'{{genre}}' $t(entity.track_other)"
"genreTracks": "'{{genre}}' $t(entity.track, {\"count\": 2})"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "albums par {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"albumArtistDetail": {
"about": "À propos de {{artist}}",
"appearsOn": "apparaît sur",
"topSongsFrom": "meilleurs titres de {{title}}",
"viewAll": "voir tout",
"viewAllTracks": "voir tout $t(entity.track_other)",
"viewAllTracks": "voir tout $t(entity.track, {\"count\": 2})",
"recentReleases": "sorties récentes",
"viewDiscography": "voir la discographie",
"relatedArtists": "$t(entity.artist_other) similaires",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) similaires",
"topSongs": "meilleurs titres",
"groupingTypeAll": "toutes les types de sortie"
},
@@ -464,10 +464,10 @@
"editServerDetailsTooltip": "modifier les détails du serveur"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "stations radio"
@@ -565,7 +565,7 @@
"remotePort": "port du serveur de contrôle à distance",
"hotkey_playbackNext": "piste suivante",
"lyricFetch_description": "récupère les paroles depuis divers source d'internet",
"lyricFetchProvider_description": "sélectionnez le fournisseur auprès desquels récupérer les paroles. l'ordre des fournisseurs et l'ordre dans lequel ils seront interrogés",
"lyricFetchProvider_description": "sélectionnez les fournisseurs auprès desquels récupérer les paroles",
"globalMediaHotkeys_description": "active ou désactive l'utilisation des raccourcis clavier multimédia système pour contrôler la lecture",
"followLyric": "suivre les paroles actuelles",
"discordIdleStatus": "afficher l'état d'inactivité dans le statut de l'activité",
@@ -617,8 +617,8 @@
"playButtonBehavior_optionPlay": "$t(player.play)",
"replayGainMode_optionNone": "$t(common.none)",
"playButtonBehavior_optionAddLast": "$t(player.addLast)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
"replayGainMode_description": "ajuste le gain de volume accordement à la valeur de {{ReplayGain}} sauvegardé dans les métadonnées du fichier",
"replayGainFallback": "valeur de repli {{ReplayGain}}",
@@ -804,9 +804,9 @@
},
"form": {
"deletePlaylist": {
"title": "supprimer de $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) supprimée avec succès",
"input_confirm": "taper le nom de la $t(entity.playlist_one) pour confirmer"
"title": "supprimer de $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) supprimée avec succès",
"input_confirm": "taper le nom de la $t(entity.playlist, {\"count\": 1}) pour confirmer"
},
"addServer": {
"title": "ajouter un serveur",
@@ -828,16 +828,16 @@
},
"addToPlaylist": {
"success": "$t(entity.trackWithCount, {\"count\" : {{message}} }) ajouté à $t(entity.playlistWithCount, {\"count\" : {{numOfPlaylists}} })",
"title": "ajouter à $t(entity.playlist_one)",
"title": "ajouter à $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "sauter les doublons",
"input_playlists": "$t(entity.playlist_other)",
"create": "créer $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "rechercher $t(entity.playlist_other) ou tapez pour en créer une nouvelle"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "créer $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "rechercher $t(entity.playlist, {\"count\": 2}) ou tapez pour en créer une nouvelle"
},
"createPlaylist": {
"title": "créer une $t(entity.playlist_one)",
"title": "créer une $t(entity.playlist, {\"count\": 1})",
"input_public": "publique",
"success": "$t(entity.playlist_one) créée avec succès",
"success": "$t(entity.playlist, {\"count\": 1}) créée avec succès",
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)"
@@ -856,15 +856,15 @@
"clearFilters": "réinitialiser les filtres"
},
"editPlaylist": {
"title": "modifier $t(entity.playlist_one)",
"title": "modifier $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Jellyfin n'indique pas si une liste de lecture est publique ou non. Si vous souhaitez que cette liste de lecture reste publique, veuillez sélectionner l'entrée suivante",
"success": "$t(entity.playlist_one) mis à jour avec succès",
"success": "$t(entity.playlist, {\"count\": 1}) mis à jour avec succès",
"editNote": "les modifications manuelles ne sont pas recommandées pour les listes de lecture volumineuses. êtes-vous sûre d'accepter le risque d'une perte de données en écrasant la liste de lecture existante?"
},
"lyricSearch": {
"title": "recherche de paroles",
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)"
"input_artist": "$t(entity.artist, {\"count\": 1})"
},
"shareItem": {
"allowDownloading": "autoriser le téléchargement",
@@ -885,7 +885,7 @@
},
"shuffleAll": {
"title": "jouer aléatoirement",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "combien de titres?",
"input_minYear": "à partir de l'année",
"input_maxYear": "à l'année",
@@ -947,7 +947,7 @@
"folder_one": "dossier",
"folder_many": "dossiers",
"folder_other": "dossiers",
"smartPlaylist": "$t(entity.playlist_one) intelligente",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) intelligente",
"album_one": "album",
"album_many": "albums",
"album_other": "albums",
@@ -1019,26 +1019,26 @@
"discNumber": "disque n°",
"duration": "$t(common.duration)",
"bpm": "$t(common.bpm)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"biography": "$t(common.biography)",
"channels": "$t(common.channel_other)",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"favorite": "$t(common.favorite)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"rating": "$t(common.rating)",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"title": "$t(common.title)",
"size": "$t(common.size)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"year": "$t(common.year)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"codec": "$t(common.codec)",
"albumCount": "$t(entity.album_other)",
"genreBadge": "$t(entity.genre_one) (badges)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (badges)",
"image": "image",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)"
@@ -1061,11 +1061,11 @@
"albumArtist": "artiste de l'album",
"path": "chemin",
"discNumber": "disque",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"lastPlayed": "écouté récemment",
"artist": "$t(entity.artist_one)",
"genre": "$t(entity.genre_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"genre": "$t(entity.genre, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"channels": "$t(common.channel_other)",
"size": "$t(common.size)",
"codec": "$t(common.codec)",
@@ -1081,7 +1081,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "diffuser",
"ep": "ep",
"other": "autre",
+76 -75
View File
@@ -1,26 +1,26 @@
{
"action": {
"moveToNext": "ugrás a következőre",
"deletePlaylist": "$t(entity.playlist_one) törlése",
"removeFromFavorites": "eltávolítás innen $t(entity.favorite_other)",
"deletePlaylist": "$t(entity.playlist, {\"count\": 1}) törlése",
"removeFromFavorites": "eltávolítás innen $t(entity.favorite, {\"count\": 2})",
"setRating": "értékelés",
"viewPlaylists": "$t(entity.playlist_other) megtekintése",
"viewPlaylists": "$t(entity.playlist, {\"count\": 2}) megtekintése",
"openIn": {
"lastfm": "Megnyitás Last.fm-ben",
"musicbrainz": "Megnyitás MusicBrainz-ben"
},
"clearQueue": "műsorlista kiürítése",
"createPlaylist": "$t(entity.playlist_one) létrehozása",
"createPlaylist": "$t(entity.playlist, {\"count\": 1}) létrehozása",
"deselectAll": "kijelölés törlése",
"editPlaylist": "$t(entity.playlist_one) szerkesztése",
"editPlaylist": "$t(entity.playlist, {\"count\": 1}) szerkesztése",
"goToPage": "menj az oldalra",
"moveToBottom": "ugrás az aljára",
"moveToTop": "ugrás a tetejére",
"removeFromPlaylist": "eltávolítás innen $t(entity.playlist_one)",
"removeFromPlaylist": "eltávolítás innen $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "eltávolítás a műsorlistáról",
"toggleSmartPlaylistEditor": "$t(entity.smartPlaylist) szerkesztője",
"addToFavorites": "$t(entity.favorite_other) kedvelése",
"addToPlaylist": "hozzáadás lejátszási listához: $t(entity.playlist_one)",
"addToFavorites": "$t(entity.favorite, {\"count\": 2}) kedvelése",
"addToPlaylist": "hozzáadás lejátszási listához: $t(entity.playlist, {\"count\": 1})",
"refresh": "$t(common.refresh)",
"downloadStarted": "megkezdődött {{count}} elem letöltése",
"moveItems": "elemek mozgatása",
@@ -33,15 +33,15 @@
"holdToMoveToTop": "hosszan nyomva felülre mozgat",
"holdToMoveToBottom": "hosszan nyomva lejjebb mozgat",
"selectAll": "összes kijelölése",
"deleteRadioStation": "$t(entity.radioStation_one) törlése",
"createRadioStation": "$t(entity.radioStation_one) létrehozása",
"deleteRadioStation": "$t(entity.radioStation, {\"count\": 1}) törlése",
"createRadioStation": "$t(entity.radioStation, {\"count\": 1}) létrehozása",
"openApplicationDirectory": "app könyvtár megnyitása",
"addOrRemoveFromSelection": "hozzáadás vagy eltávolítás a kiválasztásból",
"selectRangeOfItems": "válaszd ki a tartományt"
},
"common": {
"collapse": "összecsukás",
"currentSong": "jelenlegi: $t(entity.track_one)",
"currentSong": "jelenlegi: $t(entity.track, {\"count\": 1})",
"no": "nem",
"close": "bezárás",
"confirm": "rendben",
@@ -100,7 +100,7 @@
"path": "elérési út",
"playerMustBePaused": "a lejátszónak szüneteltetve kell lennie",
"preview": "előnézet",
"previousSong": "előző $t(entity.track_one)",
"previousSong": "előző $t(entity.track, {\"count\": 1})",
"quit": "kilépés",
"random": "véletlenszerű",
"refresh": "frissítés",
@@ -116,7 +116,8 @@
"yes": "igen",
"none": "egyik sem",
"restartRequired": "újraindítás szükséges",
"setting": "beállítás",
"setting_one": "beállítás",
"setting_other": "",
"translation": "fordítás",
"rating": "értékelés",
"reload": "újratöltés",
@@ -176,7 +177,7 @@
"song_other": "dalok",
"album_one": "album",
"album_other": "albumok",
"smartPlaylist": "intelligens $t(entity.playlist_one)",
"smartPlaylist": "intelligens $t(entity.playlist, {\"count\": 1})",
"artistWithCount_one": "{{count}} előadó",
"artistWithCount_other": "{{count}} előadók",
"playlist_one": "lejátszási lista",
@@ -228,7 +229,7 @@
"multipleServerSaveQueueError": "a műsorlistában egy vagy több olyan dal található, amely nem az aktuális szerverről származik. Ez nem támogatott"
},
"filter": {
"albumCount": "$t(entity.album_other) darab",
"albumCount": "$t(entity.album, {\"count\": 2}) darab",
"bitrate": "bitráta",
"comment": "megjegyzés",
"dateAdded": "hozzáadás ideje",
@@ -249,9 +250,9 @@
"disc": "lemez",
"criticRating": "kritikusok értékelése",
"communityRating": "közösségi értékelés",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"biography": "életrajz",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"favorited": "kedvelt",
"isRecentlyPlayed": "mostanában lejátszott",
"name": "név",
@@ -266,10 +267,10 @@
"path": "elérési út",
"toYear": "évhez",
"trackNumber": "sáv",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"bpm": "bpm",
"channels": "$t(common.channel_other)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"explicitStatus": "$t(common.explicitStatus)"
},
"form": {
@@ -290,33 +291,33 @@
},
"addToPlaylist": {
"input_skipDuplicates": "duplikátumok átugrása",
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"success": "hozzáadtuk ezt: $t(entity.trackWithCount, {\"count\": {{message}} }) a következőhöz: $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "hozzáadás a következőhöz: $t(entity.playlist_one)",
"create": "létrehoz $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "keresés $t(entity.playlist_other) vagy új létrehozása"
"title": "hozzáadás a következőhöz: $t(entity.playlist, {\"count\": 1})",
"create": "létrehoz $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "keresés $t(entity.playlist, {\"count\": 2}) vagy új létrehozása"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "publikus",
"title": "$t(entity.playlist_one) létrehozása",
"success": "$t(entity.playlist_one) sikeresen létrehozva"
"title": "$t(entity.playlist, {\"count\": 1}) létrehozása",
"success": "$t(entity.playlist, {\"count\": 1}) sikeresen létrehozva"
},
"deletePlaylist": {
"input_confirm": "a megerősítéshez írd be a(z) $t(entity.playlist_one) nevét",
"success": "$t(entity.playlist_one) sikeresen törölve",
"title": "$t(entity.playlist_one) törlése"
"input_confirm": "a megerősítéshez írd be a(z) $t(entity.playlist, {\"count\": 1}) nevét",
"success": "$t(entity.playlist, {\"count\": 1}) sikeresen törölve",
"title": "$t(entity.playlist, {\"count\": 1}) törlése"
},
"editPlaylist": {
"success": "$t(entity.playlist_one) sikeresen módosítva",
"success": "$t(entity.playlist, {\"count\": 1}) sikeresen módosítva",
"publicJellyfinNote": "A Jellyfin valamiért nem teszi közzé, hogy egy lejátszási lista publikus-e vagy sem. Amennyiben azt szeretnéd, hogy publikus maradjon, válaszd ki az alábbi beviteli mezőt",
"title": "szerkesztés $t(entity.playlist_one)",
"title": "szerkesztés $t(entity.playlist, {\"count\": 1})",
"editNote": "A kézi szerkesztés nem ajánlott nagy lejátszási listák esetén. Biztosan vállalod a meglévő lejátszási lista felülírásával járó adatvesztés kockázatát?"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "dalszöveg kereső"
},
@@ -352,7 +353,7 @@
},
"shuffleAll": {
"title": "véletlenszerű lejátszás",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "Hány dal?",
"input_minYear": "ettől az évtől",
"input_maxYear": "eddig az évig",
@@ -383,24 +384,24 @@
"appearsOn": "megjelenik",
"recentReleases": "legújabb kiadványok",
"viewDiscography": "Diszkográfia megtekintése",
"relatedArtists": "kapcsolódik $t(entity.artist_other)",
"relatedArtists": "kapcsolódik $t(entity.artist, {\"count\": 2})",
"topSongs": "sláger dalok",
"topSongsFrom": "sláger dalok tőle {{title}}",
"viewAll": "mindet megtekint",
"viewAllTracks": "mindet megtekint $t(entity.track_other)"
"viewAllTracks": "mindet megtekint $t(entity.track, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "még több ettől $t(entity.artist_one)",
"moreFromArtist": "még több ettől $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "Még több {{item}}",
"released": "megjelent"
},
"albumList": {
"artistAlbums": "albumok tőle {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"appMenu": {
"collapseSidebar": "oldalsáv",
@@ -413,7 +414,7 @@
"openBrowserDevtools": "Fejlesztői eszközök",
"quit": "$t(common.quit)",
"selectServer": "Szerver választása",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "verzió {{version}}",
"selectMusicFolder": "zene mappa kiválasztása",
"noMusicFolder": "nincs zene mappa kiválasztva",
@@ -450,8 +451,8 @@
"setRating": "$t(action.setRating)",
"playShuffled": "$t(player.shuffle)",
"shareItem": "Megosztás",
"goToAlbum": "menj az $t(entity.album_one)",
"goToAlbumArtist": "menj a $t(entity.albumArtist_one)",
"goToAlbum": "menj az $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "menj a $t(entity.albumArtist, {\"count\": 1})",
"showDetails": "info",
"moveItems": "$t(action.moveItems)",
"goTo": "menj"
@@ -480,9 +481,9 @@
"noLyrics": "nem található dalszöveg"
},
"genreList": {
"showAlbums": "mutasd a $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "mutasd a $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "mutasd a $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "mutasd a $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -499,7 +500,7 @@
"recentlyPlayed": "nemrég játszott",
"recentlyReleased": "nemrég megjelent",
"title": "$t(common.home)",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"itemDetail": {
"copyPath": "másolja az útvonalat a vágólapra",
@@ -510,7 +511,7 @@
"reorder": "átrendezés csak ID szerinti rendezés esetén engedélyezett"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "haladó",
@@ -537,32 +538,32 @@
"logger": "naplózó"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"myLibrary": "Könyvtáram",
"nowPlaying": "most játszott",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "megosztott $t(entity.playlist_other)",
"tracks": "$t(entity.track_other)",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "megosztott $t(entity.playlist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"trackList": {
"artistTracks": "dalok tőle {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "rádió állomások"
@@ -609,7 +610,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "sugárzás",
"ep": "ep",
"other": "más",
@@ -824,9 +825,9 @@
"passwordStore_description": "jelszó/titkos tároló kiválasztása. Módosítsd, ha problémát tapasztalsz a jelszavak tárolásánál",
"passwordStore": "jelszó/titkos tároló",
"playbackStyle_optionCrossFade": "áthúzás",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainMode": "{{ReplayGain}} mód",
"replayGainClipping_description": "A {{ReplayGain}} által okozott torzítás megelőzése az erősítés automatikus csökkentésével",
"replayGainClipping": "{{ReplayGain}} torzítás",
@@ -947,17 +948,17 @@
"releaseDate": "megjelenés dátuma",
"rowIndex": "sor index",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"titleCombined": "$t(common.title) (kombinált)",
"trackNumber": "szám",
"year": "$t(common.year)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "utoljára játszott",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "$t(common.biography)",
"bitrate": "$t(common.bitrate)",
"bpm": "$t(common.bpm)",
@@ -968,9 +969,9 @@
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumCount": "$t(entity.album_other)",
"genreBadge": "$t(entity.genre_one) (jelvények)",
"album": "$t(entity.album, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (jelvények)",
"image": "kép",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)"
@@ -1013,8 +1014,8 @@
}
},
"column": {
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "életrajz",
"bitrate": "bitráta",
"bpm": "bpm",
@@ -1024,7 +1025,7 @@
"dateAdded": "hozzáadva",
"discNumber": "lemez",
"favorite": "kedvenc",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "utoljára játszott",
"path": "elérési út",
"playCount": "lejátszások",
@@ -1032,7 +1033,7 @@
"releaseDate": "megjelenés",
"releaseYear": "év",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "cím",
"trackNumber": "sáv",
"album": "album",
+633 -96
View File
@@ -1,27 +1,43 @@
{
"action": {
"createPlaylist": "buat $t(entity.playlist_one)",
"createPlaylist": "buat $t(entity.playlist, {\"count\": 1})",
"toggleSmartPlaylistEditor": "ubah editor $t(entity.smartPlaylist)",
"goToPage": "pergi ke halaman",
"moveToTop": "pindah ke atas",
"addToPlaylist": "tambahkan ke $t(entity.playlist_one)",
"removeFromFavorites": "hapus dari $t(entity.favorite_other)",
"removeFromPlaylist": "hapus dari $t(entity.playlist_one)",
"addToPlaylist": "tambahkan ke $t(entity.playlist, {\"count\": 1})",
"removeFromFavorites": "hapus dari $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "hapus dari $t(entity.playlist, {\"count\": 1})",
"deselectAll": "batalkan pilih semua",
"editPlaylist": "ubah $t(entity.playlist_one)",
"editPlaylist": "ubah $t(entity.playlist, {\"count\": 1})",
"moveToNext": "pindah ke berikutnya",
"refresh": "$t(common.refresh)",
"removeFromQueue": "hapus dari antrean",
"setRating": "setel penilaian",
"viewPlaylists": "lihat $t(entity.playlist_other)",
"viewPlaylists": "lihat $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "Buka di Last.fm",
"musicbrainz": "Buka di MusicBrainz"
},
"addToFavorites": "tambahkan ke $t(entity.favorite_other)",
"addToFavorites": "tambahkan ke $t(entity.favorite, {\"count\": 2})",
"clearQueue": "kosongkan antrian",
"deletePlaylist": "hapus $t(entity.playlist_one)",
"moveToBottom": "pindah ke bawah"
"deletePlaylist": "hapus $t(entity.playlist, {\"count\": 1})",
"moveToBottom": "pindah ke bawah",
"addOrRemoveFromSelection": "tambahkan atau hapus dari pilihan",
"selectRangeOfItems": "pilih rentang item",
"createRadioStation": "buat $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "hapus $t(entity.radioStation, {\"count\": 1})",
"selectAll": "pilih semua",
"downloadStarted": "memulai unduhan {{count}} item",
"moveUp": "pindahkan ke atas",
"moveDown": "pindahkan ke bawah",
"holdToMoveToTop": "tahan untuk memindahkan ke paling atas",
"holdToMoveToBottom": "tahan untuk memindahkan ke paling bawah",
"moveItems": "pindahkan item",
"shuffle": "acak",
"shuffleAll": "acak semua",
"shuffleSelected": "acak yang dipilih",
"viewMore": "lihat lebih banyak",
"openApplicationDirectory": "buka direktori aplikasi"
},
"common": {
"clear": "bersihkan",
@@ -38,7 +54,7 @@
"cancel": "batal",
"close": "Tutup",
"configure": "konfigurasi",
"currentSong": "lagu saat ini $t(entity.track_one)",
"currentSong": "lagu saat ini $t(entity.track, {\"count\": 1})",
"delete": "hapus",
"description": "deskripsi",
"edit": "ubah",
@@ -74,7 +90,7 @@
"owner": "pemilik",
"playerMustBePaused": "pemain harus dijeda",
"preview": "Pratinjau",
"previousSong": "lagu sebelumnya $t(entity.track_one)",
"previousSong": "lagu sebelumnya $t(entity.track, {\"count\": 1})",
"quit": "keluar",
"random": "acak",
"rating": "penilaian",
@@ -88,7 +104,7 @@
"saveAndReplace": "simpan dan ganti",
"saveAs": "simpan sebagai",
"search": "cari",
"setting": "pengaturan",
"setting_other": "pengaturan",
"share": "Bagikan",
"size": "ukuran",
"sortOrder": "urutkan",
@@ -109,7 +125,37 @@
"decrease": "kurangi",
"dismiss": "abaikan",
"translation": "terjemahan",
"backward": "mundur"
"backward": "mundur",
"countSelected": "{{count}} dipilih",
"explicitStatus": "status eksplisit",
"additionalParticipants": "peserta tambahan",
"newVersion": "versi baru telah diinstal ({{version}})",
"viewReleaseNotes": "lihat catatan rilis",
"bitDepth": "kedalaman bit",
"doNotShowAgain": "jangan tampilkan ini lagi",
"view": "tampilan",
"example": "contoh",
"externalLinks": "tautan eksternal",
"faster": "lebih cepat",
"filter_single": "tunggal",
"filter_multiple": "multi",
"mood": "suasana",
"noFilters": "tidak ada filter yang dikonfigurasi",
"private": "pribadi",
"public": "publik",
"retry": "coba lagi",
"recordLabel": "label rekaman",
"releaseType": "jenis rilis",
"rename": "ganti nama",
"sampleRate": "laju sampel",
"slower": "lebih lambat",
"sort": "urutkan",
"tags": "tag",
"explicit": "eksplisit",
"clean": "bersih",
"gridRows": "baris kisi",
"tableColumns": "kolom tabel",
"itemsMore": "{{count}} lagi"
},
"entity": {
"album_other": "album",
@@ -126,10 +172,12 @@
"playlist_other": "daftar putar",
"play_other": "Putar {{count}}",
"playlistWithCount_other": "{{count}} daftar putar",
"smartPlaylist": "$t(entity.playlist_one) pintar",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) pintar",
"track_other": "pista",
"song_other": "lagu",
"trackWithCount_other": "{{count}} pista"
"trackWithCount_other": "{{count}} pista",
"radioStation_other": "stasiun radio",
"radioStationWithCount_other": "{{count}} stasiun radio"
},
"error": {
"apiRouteError": "tidak dapat mengarahkan permintaan",
@@ -153,17 +201,24 @@
"serverNotSelectedError": "tidak ada server yang dipilih",
"serverRequired": "server diperlukan",
"sessionExpiredError": "sesi Anda telah kedaluwarsa",
"systemFontError": "terjadi kesalahan saat mencoba mendapatkan font sistem"
"systemFontError": "terjadi kesalahan saat mencoba mendapatkan font sistem",
"badValue": "opsi tidak valid \"{{value}}\". nilai ini sudah tidak ada",
"multipleServerSaveQueueError": "antrean putar memiliki satu atau lebih lagu yang bukan dari server saat ini. ini tidak didukung",
"noNetwork": "server tidak tersedia",
"noNetworkDescription": "tidak dapat terhubung ke server ini",
"notificationDenied": "izin untuk notifikasi ditolak. pengaturan ini tidak berpengaruh",
"saveQueueFailed": "gagal menyimpan antrean",
"settingsSyncError": "ditemukan ketidaksesuaian antara pengaturan di perender dan proses utama. mulai ulang aplikasi untuk menerapkan perubahan"
},
"filter": {
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumCount": "Hitung $t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"albumCount": "Hitung $t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografi",
"bitrate": "bitrate",
"bpm": "lpm",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"comment": "komentar",
"communityRating": "penilaian komunitas",
"criticRating": "penilaian kritik",
@@ -171,7 +226,7 @@
"disc": "disk",
"duration": "durasi",
"favorited": "favorit",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "id",
"isCompilation": "apakah ini kompilasi",
"isFavorited": "apakah ini favorit",
@@ -197,7 +252,9 @@
"trackNumber": "nomor pista",
"fromYear": "dari tahun",
"title": "judul",
"path": "path(jalur)"
"path": "path(jalur)",
"sortName": "nama pengurutan",
"explicitStatus": "$t(common.explicitStatus)"
},
"form": {
"addServer": {
@@ -211,40 +268,53 @@
"input_url": "url",
"input_username": "nama pengguna",
"success": "server berhasil ditambahkan",
"title": "tambah server"
"title": "tambah server",
"input_preferInstantMix": "utamakan mix instan",
"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"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "lewati duplikat",
"success": "ditambahkan $t(entity.trackWithCount, {\"count\": {{message}} }) ke $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "tambahkan ke $t(entity.playlist_one)"
"title": "tambahkan ke $t(entity.playlist, {\"count\": 1})",
"create": "buat $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "cari $t(entity.playlist, {\"count\": 2}) atau ketik untuk membuat yang baru"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "publik",
"success": "$t(entity.playlist_one) berhasil dibuat",
"title": "buat $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) berhasil dibuat",
"title": "buat $t(entity.playlist, {\"count\": 1})"
},
"deletePlaylist": {
"input_confirm": "ketik nama $t(entity.playlist_one) untuk mengonfirmasi",
"success": "$t(entity.playlist_one) berhasil dihapus",
"title": "hapus $t(entity.playlist_one)"
"input_confirm": "ketik nama $t(entity.playlist, {\"count\": 1}) untuk mengonfirmasi",
"success": "$t(entity.playlist, {\"count\": 1}) berhasil dihapus",
"title": "hapus $t(entity.playlist, {\"count\": 1})"
},
"editPlaylist": {
"publicJellyfinNote": "Jellyfin entah bagaimana tidak menampilkan apakah playlist ini publik atau tidak. Jika Anda ingin playlist ini tetap publik, harap pilih entri berikut",
"success": "$t(entity.playlist_one) berhasil diperbarui",
"title": "ubah $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) berhasil diperbarui",
"title": "ubah $t(entity.playlist, {\"count\": 1})",
"editNote": "pengeditan manual tidak disarankan untuk playlist besar. apakah Anda yakin menerima risiko kehilangan data yang timbul akibat menimpa playlist yang ada?"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "cari lirik"
},
"queryEditor": {
"input_optionMatchAll": "cocokkan semua",
"input_optionMatchAny": "cocokkan salah satu"
"input_optionMatchAny": "cocokkan salah satu",
"title": "editor kueri",
"addRuleGroup": "tambahkan grup aturan",
"removeRuleGroup": "hapus grup aturan",
"resetToDefault": "reset ke default",
"clearFilters": "hapus filter"
},
"shareItem": {
"allowDownloading": "Izinkan unduhan",
@@ -257,6 +327,41 @@
"updateServer": {
"success": "Server berhasil diperbarui",
"title": "perbarui server"
},
"largeFetchConfirmation": {
"title": "tambahkan item ke antrean",
"description": "Tindakan ini akan menambahkan semua item dalam tampilan terfilter saat ini"
},
"createRadioStation": {
"success": "stasiun radio berhasil dibuat",
"title": "buat stasiun radio",
"input_homepageUrl": "url beranda",
"input_name": "nama",
"input_streamUrl": "url streaming"
},
"lyricsExport": {
"export": "ekspor lirik",
"input_synced": "ekspor lirik tersinkron",
"input_offset": "$t(setting.lyricOffset)"
},
"saveQueue": {
"success": "antrean putar disimpan ke server"
},
"shuffleAll": {
"title": "putar acak",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "berapa banyak lagu?",
"input_minYear": "dari tahun",
"input_maxYear": "hingga tahun",
"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"
},
"privateMode": {
"enabled": "mode pribadi diaktifkan, status pemutaran kini disembunyikan dari integrasi eksternal",
"disabled": "mode pribadi dinonaktifkan, status pemutaran kini terlihat oleh integrasi eksternal yang diaktifkan",
"title": "mode pribadi"
}
},
"page": {
@@ -264,25 +369,27 @@
"about": "Tentang {{artist}}",
"recentReleases": "Rilis terbaru",
"viewDiscography": "Lihat diskografi",
"relatedArtists": "$t(entity.artist_other) serupa",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) serupa",
"topSongs": "Lagu terbaik",
"topSongsFrom": "Lagu terbaik dari {{title}}",
"viewAll": "Lihat semua",
"viewAllTracks": "Lihat semua $t(entity.track_other)",
"appearsOn": "Tampil di"
"viewAllTracks": "Lihat semua $t(entity.track, {\"count\": 2})",
"appearsOn": "Tampil di",
"groupingTypeAll": "semua jenis rilis",
"groupingTypePrimary": "jenis rilis utama"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "lebih banyak dari $t(entity.artist_one) ini",
"moreFromArtist": "lebih banyak dari $t(entity.artist, {\"count\": 1}) ini",
"moreFromGeneric": "lebih banyak dari {{item}}",
"released": "dirilis"
},
"albumList": {
"artistAlbums": "album dari {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"appMenu": {
"collapseSidebar": "perkecil sidebar",
@@ -293,8 +400,14 @@
"openBrowserDevtools": "buka alat pengembang browser",
"quit": "$t(common.quit)",
"selectServer": "pilih server",
"settings": "$t(common.setting_other)",
"version": "versi {{version}}"
"settings": "$t(common.setting, {\"count\": 2})",
"version": "versi {{version}}",
"commandPalette": "buka palet perintah",
"privateModeOff": "matikan mode pribadi",
"privateModeOn": "nyalakan mode pribadi",
"selectMusicFolder": "pilih folder musik",
"noMusicFolder": "tidak ada folder musik yang dipilih",
"multipleMusicFolders": "{{count}} folder musik dipilih"
},
"manageServers": {
"title": "kelola server",
@@ -326,7 +439,11 @@
"shareItem": "Bagikan item",
"showDetails": "Lihat detail",
"moveToTop": "$t(action.moveToTop)",
"play": "$t(player.play)"
"play": "$t(player.play)",
"moveItems": "$t(action.moveItems)",
"goTo": "buka ke",
"goToAlbum": "buka ke $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "buka ke $t(entity.albumArtist, {\"count\": 1})"
},
"fullscreenPlayer": {
"config": {
@@ -352,9 +469,9 @@
"visualizer": "visualisasi"
},
"genreList": {
"showAlbums": "Tampilkan $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "Tampilkan $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "Tampilkan $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "Tampilkan $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -369,7 +486,9 @@
"mostPlayed": "paling banyak diputar",
"newlyAdded": "rilis baru ditambahkan",
"recentlyPlayed": "baru saja diputar",
"title": "$t(common.home)"
"title": "$t(common.home)",
"genres": "$t(entity.genre, {\"count\": 2})",
"recentlyReleased": "baru dirilis"
},
"itemDetail": {
"copyPath": "Salin jalur ke papan klip",
@@ -377,40 +496,79 @@
"openFile": "Tampilkan lagu di pengelola file"
},
"playlist": {
"reorder": "penataan ulang hanya aktif saat mengurutkan berdasarkan ID"
"reorder": "pengurutan ulang hanya diaktifkan saat mengurutkan berdasarkan id"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "Lanjutan",
"generalTab": "umum",
"hotkeysTab": "tombol pintasan",
"playbackTab": "pemutaran",
"windowTab": "jendela"
"windowTab": "jendela",
"analytics": "analitik",
"updates": "perbarui",
"cache": "cache",
"application": "aplikasi",
"queryBuilder": "pembuat kueri",
"theme": "tema",
"controls": "kontrol",
"sidebar": "bilah samping",
"remote": "jarak jauh",
"exportImport": "impor/ekspor",
"scrobble": "scrobble",
"audio": "audio",
"lyrics": "lirik",
"lyricsDisplay": "tampilan lirik",
"transcoding": "transcoding",
"discord": "discord",
"logger": "logger",
"playerFilters": "filter pemutar"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"nowPlaying": "sedang diputar",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "berbagi $t(entity.playlist_other)",
"tracks": "$t(entity.track_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "berbagi $t(entity.playlist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})",
"collections": "koleksi",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})",
"myLibrary": "pustaka saya"
},
"trackList": {
"artistTracks": "lagu oleh {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
},
"radioList": {
"title": "stasiun radio"
},
"favorites": {
"title": "$t(entity.favorite, {\"count\": 2})"
},
"windowBar": {
"paused": "(Dijeda) ",
"privateMode": "(Mode pribadi)"
},
"folderList": {
"title": "$t(entity.folder, {\"count\": 2})"
},
"collections": {
"overrideExisting": "timpa yang ada",
"saveAsCollection": "simpan sebagai koleksi"
}
},
"player": {
"addLast": "tambahkan terakhir",
"addLast": "sebelumnya",
"favorite": "favorit",
"mute": "bisukan",
"muted": "terbisukan",
@@ -430,7 +588,7 @@
"repeat": "ulang",
"repeat_all": "ulang semua",
"repeat_off": "ulang dimatikan",
"shuffle": "putar acak",
"shuffle": "putar (diacak)",
"shuffle_off": "acak dimatikan",
"skip": "lewati",
"skip_back": "mundur",
@@ -440,7 +598,15 @@
"unfavorite": "bukan favorit",
"pause": "jeda",
"viewQueue": "lihat antrean",
"addNext": "tambahkan berikutnya"
"addNext": "berikutnya",
"addLastShuffled": "sebelumnya (diacak)",
"addNextShuffled": "berikutnya (diacak)",
"artistRadio": "radio artis",
"holdToShuffle": "tahan untuk mengacak",
"lyrics": "lirik",
"restoreQueueFromServer": "pulihkan antrean dari server",
"saveQueueToServer": "simpan antrean ke server",
"trackRadio": "radio trek"
},
"setting": {
"accentColor": "warna sorotan",
@@ -475,16 +641,16 @@
"crossfadeDuration": "durasi crossfade",
"crossfadeDuration_description": "atur durasi efek crossfade",
"crossfadeStyle_description": "pilih gaya crossfade yang digunakan oleh pemutar audio",
"customCssEnable": "Aktifkan CSS kustom",
"customCssEnable_description": "Memungkinkan penulisan CSS kustom",
"customCssNotice": "Pemberitahuan: meskipun ada sanitasi (menolak url() dan content:), menggunakan CSS kustom masih dapat berisiko mengubah antarmuka",
"customCss": "CSS kustom",
"customCss_description": "CSS kustom konten. Catatan: content dan url eksternal adalah properti yang ditolak. Pratinjau konten Anda ditampilkan di bawah. Entri tambahan yang tidak Anda tentukan hadir karena sanitasi",
"customCssEnable": "aktifkan CSS kustom",
"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",
"customFontPath": "jalur font kustom",
"customFontPath_description": "tentukan jalur font kustom yang akan digunakan aplikasi",
"disableAutomaticUpdates": "nonaktifkan pembaruan otomatis",
"discordApplicationId": "ID aplikasi {{discord}}",
"discordApplicationId_description": "ID aplikasi untuk status aktivitas {{discord}} (defaultnya adalah {{defaultId}})",
"discordApplicationId_description": "id aplikasi untuk rich presence {{discord}} (default: {{defaultId}})",
"discordIdleStatus": "tampilkan status tidak aktif dalam status aktivitas",
"discordIdleStatus_description": "ketika diaktifkan, memperbarui status saat pemutar tidak aktif",
"discordListening": "Tampilkan status sebagai mendengarkan",
@@ -557,7 +723,7 @@
"lyricFetch": "cari lirik di Internet",
"lyricFetch_description": "mencari lirik dari berbagai sumber di Internet",
"lyricFetchProvider": "penyedia untuk mencari lirik",
"lyricFetchProvider_description": "pilih penyedia untuk mencari lirik. urutan penyedia adalah urutan pencarian",
"lyricFetchProvider_description": "pilih penyedia untuk mengambil lirik dari",
"lyricOffset": "geser lirik (ms)",
"lyricOffset_description": "geser lirik sebanyak jumlah milidetik yang ditentukan",
"minimizeToTray": "minimalkan ke baki",
@@ -593,9 +759,9 @@
"replayGainFallback_description": "gain dalam dB yang akan diterapkan jika file tidak memiliki tag {{ReplayGain}}",
"replayGainMode": "mode {{ReplayGain}}",
"replayGainMode_description": "menyesuaikan volume gain sesuai dengan nilai {{ReplayGain}} yang disimpan dalam metadata file",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainPreamp": "preamplifier (dB) {{ReplayGain}}",
"replayGainPreamp_description": "menyesuaikan gain preamplifier yang diterapkan ke nilai {{ReplayGain}}",
"sampleRate_description": "pilih rasio sampel output yang akan digunakan jika frekuensi sampel yang dipilih berbeda dari media yang sedang diputar. nilai di bawah 8000 akan menggunakan frekuensi default",
@@ -633,10 +799,10 @@
"transcodeBitrate_description": "pilih bitrate untuk ditranskode. 0 berarti biarkan server yang memilih",
"transcodeFormat": "format untuk ditranskode",
"transcodeFormat_description": "pilih format untuk ditranskode. biarkan kosong agar server yang memutuskan",
"translationApiProvider": "Penyedia API penerjemahan",
"translationApiProvider_description": "Penyedia API untuk penerjemahan",
"translationApiKey": "kunci API penerjemahan",
"translationApiKey_description": "Kunci API untuk penerjemahan (hanya untuk endpoint layanan global)",
"translationApiProvider": "penyedia API terjemahan",
"translationApiProvider_description": "penyedia API 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",
"trayEnabled": "Tampilkan di area pemberitahuan",
@@ -653,24 +819,153 @@
"mpvExecutablePath": "jalur executable mpv",
"playButtonBehavior_optionPlay": "$t(player.play)",
"sampleRate": "rasio sampel",
"savePlayQueue": "simpan antrean pemutaran"
"savePlayQueue": "simpan antrean pemutaran",
"autoDJ": "DJ otomatis",
"autoDJ_description": "tambahkan lagu serupa secara otomatis ke antrean",
"autoDJ_itemCount": "jumlah item",
"autoDJ_itemCount_description": "jumlah item yang dicoba ditambahkan ke antrean saat DJ otomatis diaktifkan",
"autoDJ_timing": "waktu",
"autoDJ_timing_description": "jumlah lagu yang tersisa dalam antrean sebelum DJ otomatis dipicu",
"useThemeAccentColor": "gunakan warna aksen tema",
"useThemeAccentColor_description": "gunakan warna utama yang ditentukan dalam tema yang dipilih alih-alih warna aksen kustom",
"analyticsDisable": "nonaktifkan analitik berbasis penggunaan",
"analyticsDisable_description": "data penggunaan yang dianonimkan dikirim ke pengembang untuk membantu meningkatkan aplikasi",
"artistBackground": "gambar latar belakang artis",
"artistBackground_description": "menambahkan gambar latar belakang untuk halaman artis yang memuat artwork artis",
"artistBackgroundBlur": "ukuran blur gambar latar belakang artis",
"artistBackgroundBlur_description": "menyesuaikan tingkat blur yang diterapkan pada gambar latar belakang artis",
"artistReleaseTypeConfiguration": "konfigurasi jenis rilis artis",
"artistReleaseTypeConfiguration_description": "konfigurasikan jenis rilis yang ditampilkan, dan urutannya, di halaman artis album",
"crossfadeStyle": "gaya crossfade",
"releaseChannel_optionBeta": "beta",
"releaseChannel_optionLatest": "terbaru",
"releaseChannel": "kanal rilis",
"releaseChannel_description": "pilih antara rilis stabil atau rilis beta untuk pembaruan otomatis",
"discordDisplayType_artistname": "nama artis",
"discordDisplayType_description": "mengubah apa yang Anda dengarkan di status Anda",
"discordDisplayType_songname": "nama lagu",
"discordDisplayType": "jenis tampilan presence {{discord}}",
"discordLinkType_description": "menambahkan tautan eksternal ke {{lastfm}} atau {{musicbrainz}} pada kolom lagu dan artis di rich presence {{discord}}. {{musicbrainz}} paling akurat tetapi memerlukan tag dan tidak menyediakan tautan artis, sedangkan {{lastfm}} seharusnya selalu menyediakan tautan. tidak membuat permintaan jaringan tambahan",
"discordLinkType_mbz_lastfm": "{{musicbrainz}} dengan fallback {{lastfm}}",
"discordLinkType_none": "$t(common.none)",
"discordLinkType": "tautan presence {{discord}}",
"discordPausedStatus_description": "saat diaktifkan, status akan ditampilkan ketika pemutar dijeda",
"discordPausedStatus": "tampilkan rich presence saat dijeda",
"discordRichPresence": "rich presence {{discord}}",
"discordServeImage": "sajikan gambar {{discord}} dari server",
"discordServeImage_description": "bagikan cover art untuk rich presence {{discord}} dari server itu sendiri, hanya tersedia untuk Jellyfin dan Navidrome. {{discord}} menggunakan bot untuk mengambil gambar, jadi server Anda harus dapat dijangkau dari internet publik",
"enableAutoTranslation_description": "aktifkan terjemahan secara otomatis saat lirik dimuat",
"enableAutoTranslation": "aktifkan terjemahan otomatis",
"exportImportSettings_control_description": "ekspor dan impor pengaturan melalui JSON",
"exportImportSettings_control_exportText": "ekspor pengaturan",
"exportImportSettings_control_importText": "impor pengaturan",
"exportImportSettings_control_title": "impor / ekspor pengaturan",
"exportImportSettings_destructiveWarning": "mengimpor pengaturan bersifat destruktif, harap tinjau hal di atas sebelum mengklik \"impor\" di bawah!",
"exportImportSettings_importBtn": "impor pengaturan",
"exportImportSettings_importModalTitle": "impor pengaturan feishin",
"exportImportSettings_importSuccess": "pengaturan berhasil diimpor!",
"exportImportSettings_notValidJSON": "file yang diberikan bukan JSON yang valid",
"exportImportSettings_offendingKeyError": "\"{{offendingKey}}\" tidak benar - {{reason}}",
"followCurrentSong_description": "gulirkan antrean putar secara otomatis ke lagu yang sedang diputar",
"followCurrentSong": "ikuti lagu saat ini",
"homeFeatureStyle_description": "mengontrol gaya carousel unggulan beranda",
"homeFeatureStyle": "gaya carousel unggulan beranda",
"homeFeatureStyle_optionMultiple": "beberapa",
"homeFeatureStyle_optionSingle": "tunggal",
"hotkey_listNavigateToPage": "navigasi daftar ke halaman item",
"hotkey_listPlayDefault": "putar dari daftar",
"hotkey_listPlayLast": "putar terakhir dari daftar",
"hotkey_listPlayNext": "putar berikutnya dari daftar",
"hotkey_listPlayNow": "putar sekarang dari daftar",
"hotkey_navigateHome": "navigasi ke beranda",
"language": "bahasa",
"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_optionDebug": "debug",
"logLevel_optionError": "error",
"logLevel_optionInfo": "info",
"logLevel_optionWarn": "warn",
"mpvExtraParameters": "parameter tambahan mpv",
"mpvExtraParameters_description": "argumen tambahan untuk diteruskan ke mpv",
"musicbrainz_description": "tampilkan tautan ke MusicBrainz pada halaman artis/album, saat ID MusicBrainz tersedia",
"musicbrainz": "tampilkan tautan MusicBrainz",
"neteaseTranslation_description": "Saat diaktifkan, mengambil dan menampilkan lirik terjemahan dari NetEase jika tersedia",
"neteaseTranslation": "aktifkan terjemahan NetEase",
"notify": "aktifkan notifikasi lagu",
"notify_description": "tampilkan notifikasi saat mengganti lagu saat ini",
"pathReplace": "penggantian jalur file",
"pathReplace_description": "ganti filepath default server Anda",
"pathReplace_optionRemovePrefix": "hapus prefiks",
"pathReplace_optionAddPrefix": "tambahkan prefiks",
"playerFilters": "Filter lagu dari antrean",
"playerFilters_description": "abaikan lagu agar tidak ditambahkan ke antrean berdasarkan kriteria berikut",
"artistRadioCount_description": "menetapkan jumlah lagu yang diambil untuk radio artis dan radio trek",
"artistRadioCount": "jumlah radio artis/trek",
"imageResolution": "resolusi gambar",
"imageResolution_description": "resolusi untuk gambar yang digunakan di seluruh aplikasi. menggunakan nilai 0 akan kembali ke resolusi gambar asli",
"imageResolution_optionTable": "tabel",
"imageResolution_optionItemCard": "kartu item",
"imageResolution_optionSidebar": "bilah samping",
"imageResolution_optionHeader": "header",
"imageResolution_optionFullScreenPlayer": "pemutar layar penuh",
"playerbarSlider": "slider bilah pemutar",
"playerbarSlider_description": "waveform tidak direkomendasikan jika menggunakan koneksi internet yang lambat atau berbatas kuota",
"playerbarSliderType_optionSlider": "slider",
"playerbarSliderType_optionWaveform": "waveform",
"playerbarWaveformAlign": "perataan waveform",
"playerbarWaveformAlign_optionTop": "atas",
"playerbarWaveformAlign_optionCenter": "tengah",
"playerbarWaveformAlign_optionBottom": "bawah",
"playerbarWaveformBarWidth": "lebar batang waveform",
"playerbarWaveformGap": "jarak waveform",
"playerbarWaveformRadius": "radius waveform",
"preferLocalLyrics_description": "utamakan lirik lokal dibanding lirik jarak jauh jika tersedia",
"preferLocalLyrics": "utamakan lirik lokal",
"showLyricsInSidebar_description": "panel akan ditambahkan pada antrean putar terlampir yang menampilkan lirik",
"showLyricsInSidebar": "tampilkan lirik di bilah samping pemutar",
"showRatings_description": "mengontrol apakah fitur penilaian bintang muncul di antarmuka",
"showRatings": "tampilkan penilaian bintang",
"enableGridMultiSelect": "aktifkan pilihan multi kisi",
"enableGridMultiSelect_description": "saat diaktifkan, memungkinkan memilih beberapa item pada tampilan kisi. saat dinonaktifkan, mengklik gambar item kisi akan menavigasi ke halaman item",
"showVisualizerInSidebar_description": "panel akan ditambahkan pada bilah samping pemutar yang menampilkan visualizer",
"showVisualizerInSidebar": "tampilkan visualizer di bilah samping pemutar",
"combinedLyricsAndVisualizer_description": "gabungkan lirik dan visualizer ke dalam panel yang sama",
"combinedLyricsAndVisualizer": "gabungkan lirik dan visualizer di bilah samping pemutar",
"preservePitch_description": "mempertahankan pitch saat memodifikasi kecepatan pemutaran",
"preservePitch": "pertahankan pitch",
"audioFadeOnStatusChange": "fade audio saat status berubah",
"audioFadeOnStatusChange_description": "mengaktifkan fade out dan fade in saat status putar/jeda berubah",
"preventSleepOnPlayback_description": "cegah layar tidur saat musik diputar",
"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": "aktifkan media session",
"transcode": "aktifkan transcoding",
"queryBuilder": "pembuat kueri",
"queryBuilderCustomFields_inputLabel": "label",
"queryBuilderCustomFields_inputTag": "tag",
"queryBuilderCustomFields": "kolom kustom",
"queryBuilderCustomFields_description": "tambahkan kolom kustom untuk digunakan di pembuat kueri"
},
"table": {
"column": {
"album": "album",
"albumArtist": "artis album",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografi",
"bitrate": "bitrate",
"bpm": "lpm",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"codec": "$t(common.codec)",
"comment": "komentar",
"dateAdded": "tanggal ditambahkan",
"discNumber": "nomor disk",
"favorite": "favorit",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "terakhir diputar",
"path": "jalur",
"playCount": "putaran",
@@ -678,9 +973,12 @@
"releaseDate": "tanggal rilis",
"releaseYear": "tahun",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "judul",
"trackNumber": "pista"
"trackNumber": "pista",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)",
"owner": "pemilik"
},
"config": {
"general": {
@@ -691,23 +989,45 @@
"itemGap": "jarak antar elemen (px)",
"itemSize": "ukuran elemen (px)",
"size": "$t(common.size)",
"tableColumns": "kolom tabel"
"tableColumns": "kolom tabel",
"advancedSettings": "pengaturan lanjutan",
"autosize": "ukuran otomatis",
"moveUp": "pindahkan ke atas",
"moveDown": "pindahkan ke bawah",
"pinToLeft": "sematkan ke kiri",
"pinToRight": "sematkan ke kanan",
"alignLeft": "rata kiri",
"alignCenter": "rata tengah",
"alignRight": "rata kanan",
"itemsPerRow": "item per baris",
"size_default": "default",
"size_compact": "ringkas",
"size_large": "besar",
"pagination": "paginasi",
"pagination_itemsPerPage": "item per halaman",
"pagination_infinite": "tak terbatas",
"pagination_paginate": "berhalaman",
"alternateRowColors": "warna baris bergantian",
"horizontalBorders": "batas baris",
"rowHoverHighlight": "sorotan hover baris",
"showHeader": "tampilkan header",
"verticalBorders": "batas kolom"
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"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)",
"dateAdded": "tanggal ditambahkan",
"discNumber": "nomor disk",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "terakhir diputar",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
@@ -717,14 +1037,231 @@
"releaseDate": "tanggal rilis",
"rowIndex": "indeks baris",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"titleCombined": "$t(common.title) (digabungkan)",
"trackNumber": "nomor pista",
"year": "$t(common.year)"
"year": "$t(common.year)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"bitDepth": "$t(common.bitDepth)",
"composer": "komposer",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (lencana)",
"image": "gambar",
"sampleRate": "$t(common.sampleRate)",
"titleArtist": "$t(common.title) (artis)"
},
"view": {
"table": "tabel"
"table": "tabel",
"grid": "kisi",
"list": "daftar"
}
}
},
"datetime": {
"minuteShort": "m",
"secondShort": "s",
"hourShort": "h",
"dayShort": "d"
},
"filterOperator": {
"after": "setelah",
"afterDate": "setelah (tanggal)",
"before": "sebelum",
"beforeDate": "sebelum (tanggal)",
"contains": "berisi",
"endsWith": "diakhiri dengan",
"inPlaylist": "berada di",
"inTheLast": "dalam kurun terakhir",
"inTheRange": "berada dalam rentang",
"inTheRangeDate": "berada dalam rentang (tanggal)",
"is": "adalah",
"isNot": "bukan",
"isGreaterThan": "lebih besar dari",
"isLessThan": "lebih kecil dari",
"matchesRegex": "cocok dengan regex",
"notContains": "tidak berisi",
"notInPlaylist": "tidak berada di",
"notInTheLast": "tidak dalam kurun terakhir",
"startsWith": "diawali dengan"
},
"queryBuilder": {
"standardTags": "tag standar",
"customTags": "tag kustom"
},
"releaseType": {
"primary": {
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "siaran",
"ep": "ep",
"other": "lainnya",
"single": "single"
},
"secondary": {
"audiobook": "buku audio",
"audioDrama": "drama audio",
"compilation": "kompilasi",
"djMix": "dj mix",
"demo": "demo",
"fieldRecording": "rekaman lapangan",
"interview": "wawancara",
"live": "live",
"mixtape": "mixtape",
"remix": "remix",
"soundtrack": "soundtrack",
"spokenWord": "spoken word"
}
},
"dragDropZone": {
"error_oneFileOnly": "Harap pilih hanya 1 file",
"error_readingFile": "terjadi masalah saat membaca file: {{errorMessage}}",
"mainText": "jatuhkan file di sini"
},
"visualizer": {
"visualizerType": "Jenis Visualizer",
"cyclePresets": "Putar Preset",
"cycleTime": "Waktu Siklus (detik)",
"includeAllPresets": "Sertakan Semua Preset",
"ignoredPresets": "Preset yang Diabaikan",
"selectedPresets": "Preset yang Dipilih",
"randomizeNextPreset": "Acak Preset Berikutnya",
"blendTime": "Waktu Pencampuran",
"presets": "Preset",
"selectPreset": "Pilih Preset",
"applyPreset": "Terapkan Preset",
"saveAsPreset": "Simpan sebagai Preset",
"updatePreset": "Perbarui Preset",
"copyConfiguration": "Salin Konfigurasi",
"pasteConfiguration": "Tempel Konfigurasi",
"pasteConfigurationPlaceholder": "Tempel konfigurasi JSON di sini...",
"pasteFromClipboard": "Tempel dari Clipboard",
"applyConfiguration": "Terapkan Konfigurasi",
"configCopied": "Konfigurasi disalin ke clipboard",
"configCopyFailed": "Gagal menyalin konfigurasi",
"configPasted": "Konfigurasi berhasil diterapkan",
"configPasteFailed": "Gagal menerapkan konfigurasi. Harap periksa formatnya.",
"configPasteReadFailed": "Gagal membaca dari clipboard",
"presetName": "Nama Preset",
"presetNamePlaceholder": "Masukkan nama preset",
"general": "Umum",
"mode": "Mode",
"mode1To8": "Mode 1 - 8",
"mode10": "Mode 10",
"barSpace": "Jarak Batang",
"lineWidth": "Lebar Garis",
"fillAlpha": "Alpha Isian",
"channelLayout": "Tata Letak Kanal",
"maxFPS": "FPS Maksimum",
"opacity": "Opasitas",
"customGradients": "Gradien Kustom",
"addCustomGradient": "Tambah Gradien Kustom",
"gradientName": "Nama Gradien",
"gradientNamePlaceholder": "Nama Gradien",
"vertical": "Vertikal",
"horizontal": "Horizontal",
"colorStops": "Titik Warna",
"addColor": "Tambah Warna",
"position": "Posisi",
"level": "Level",
"remove": "Hapus",
"pasteGradient": "Tempel Gradien",
"pasteGradientPlaceholder": "Tempel JSON gradien di sini...",
"custom": "Kustom",
"builtIn": "Bawaan",
"colors": "Warna",
"colorMode": "Mode Warna",
"gradient": "Gradien",
"gradientLeft": "Gradien Kiri",
"gradientRight": "Gradien Kanan",
"fft": "FFT",
"fftSize": "Ukuran FFT",
"smoothing": "Penghalusan",
"frequencyRangeAndScaling": "Rentang frekuensi dan penskalaan",
"minimumFrequency": "Frekuensi Minimum",
"maximumFrequency": "Frekuensi Maksimum",
"frequencyScale": "Skala Frekuensi",
"sensitivity": "Sensitivitas",
"weightingFilter": "Filter Pembobotan",
"minimumDecibels": "Desibel Minimum",
"maximumDecibels": "Desibel Maksimum",
"linearAmplitude": "Amplitudo Linear",
"linearBoost": "Peningkatan Linear",
"peakBehavior": "Perilaku Puncak",
"showPeaks": "Tampilkan Puncak",
"fadePeaks": "Pudarkan Puncak",
"peakLine": "Garis Puncak",
"gravity": "Gravitasi",
"peakFadeTime": "Waktu Pudarnya Puncak (ms)",
"peakHoldTime": "Waktu Menahan Puncak (ms)",
"radialSpectrum": "Spektrum Radial",
"radial": "Radial",
"radialInvert": "Balik Radial",
"spinSpeed": "Kecepatan Putar",
"radius": "Jari-jari",
"reflexMirror": "Cermin Refleks",
"reflexFit": "Kesesuaian Refleks",
"reflexRatio": "Rasio Refleks",
"reflexAlpha": "Alpha Refleks",
"reflexBrightness": "Kecerahan Refleks",
"mirror": "Cermin",
"miscellaneousSettings": "Pengaturan Lain-lain",
"alphaBars": "Batang Alpha",
"ansiBands": "Pita ANSI",
"ledBars": "Batang LED",
"trueLeds": "LED Sebenarnya",
"lumiBars": "Batang Lumi",
"outlineBars": "Batang Outline",
"roundBars": "Batang Bulat",
"lowResolution": "Resolusi Rendah",
"splitGradient": "Pemisahan Gradien",
"showFPS": "Tampilkan FPS",
"showScaleX": "Tampilkan Skala X",
"noteLabels": "Label Nada",
"showScaleY": "Tampilkan Skala Y",
"options": {
"mode": {
"0": "Frekuensi Diskret",
"1": "1/24 oktaf / 240 pita",
"2": "1/12 oktaf / 120 pita",
"3": "1/8 oktaf / 80 pita",
"4": "1/6 oktaf / 60 pita",
"5": "1/4 oktaf / 40 pita",
"6": "1/3 oktaf / 30 pita",
"7": "Setengah oktaf / 20 pita",
"8": "Satu oktaf penuh / 10 pita",
"10": "Grafik garis / area"
},
"colorMode": {
"gradient": "Gradien",
"barIndex": "Indeks Batang",
"barLevel": "Level Batang"
},
"gradient": {
"classic": "Klasik",
"prism": "Prisma",
"rainbow": "Pelangi",
"steelblue": "Biru baja",
"orangered": "Oranye kemerahan"
},
"channelLayout": {
"single": "Tunggal",
"dualCombined": "Dua-Gabungan",
"dualHorizontal": "Dua-Horizontal",
"dualVertical": "Dua-Vertikal"
},
"frequencyScale": {
"none": "Tidak ada",
"bark": "Skala Bark",
"linear": "Skala Linear",
"log": "Skala Log",
"mel": "Skala Mel"
},
"weightingFilter": {
"none": "Tidak ada",
"a": "A",
"b": "B",
"c": "C",
"d": "D",
"z": "Z"
}
}
}
+64 -62
View File
@@ -1,20 +1,20 @@
{
"action": {
"editPlaylist": "modifica $t(entity.playlist_one)",
"editPlaylist": "modifica $t(entity.playlist, {\"count\": 1})",
"goToPage": "vai alla pagina",
"clearQueue": "cancella la coda",
"addToFavorites": "aggiungi a $t(entity.favorite_other)",
"addToPlaylist": "aggiungi a $t(entity.playlist_one)",
"createPlaylist": "crea $t(entity.playlist_one)",
"removeFromPlaylist": "rimuovi da $t(entity.playlist_one)",
"viewPlaylists": "visualizza $t(entity.playlist_other)",
"addToFavorites": "aggiungi a $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "aggiungi a $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "crea $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "rimuovi da $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "visualizza $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "elimina $t(entity.playlist_one)",
"deletePlaylist": "elimina $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "rimuovi dalla coda",
"deselectAll": "deseleziona tutto",
"setRating": "vota",
"toggleSmartPlaylistEditor": "attiva/disattiva editor $t(entity.smartPlaylist)",
"removeFromFavorites": "rimuovi da $t(entity.favorite_other)",
"removeFromFavorites": "rimuovi da $t(entity.favorite, {\"count\": 2})",
"moveToTop": "sposta in cima",
"moveToBottom": "sposta in fondo",
"moveToNext": "passa al successivo",
@@ -51,7 +51,7 @@
"left": "sinistra",
"save": "salva",
"right": "destra",
"currentSong": "$t(entity.track_one) corrente",
"currentSong": "$t(entity.track, {\"count\": 1}) corrente",
"trackNumber": "traccia",
"descending": "decrescente",
"gap": "gap",
@@ -75,7 +75,9 @@
"forward": "successivo",
"delete": "elimina",
"forceRestartRequired": "riavvia per applicare le modifiche... chiudi la notifica per riavviare",
"setting": "impostazione",
"setting_one": "impostazione",
"setting_many": "",
"setting_other": "",
"version": "versione",
"title": "titolo",
"filter_one": "filtro",
@@ -94,7 +96,7 @@
"none": "nessuno",
"menu": "menù",
"restartRequired": "riavvio richiesto",
"previousSong": "$t(entity.track_one) precedente",
"previousSong": "$t(entity.track, {\"count\": 1}) precedente",
"noResultsFromQuery": "la query non ha ritornato risultati",
"quit": "esci",
"expand": "espandi",
@@ -204,7 +206,7 @@
"exitToTray_description": "riduce a icona nella barra di sistema all'uscita",
"followLyric_description": "scorre il testo alla posizione di riproduzione corrente",
"hotkey_favoritePreviousSong": "$t(common.previousSong) preferita",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "offset testi (ms)",
"discordUpdateInterval_description": "il tempo in secondi tra ogni aggiornamento (minimo 15 secondi)",
"fontType_optionCustom": "font personalizzato",
@@ -216,7 +218,7 @@
"playbackStyle_optionCrossFade": "dissolvenza",
"hotkey_rate3": "voto 3 stelle",
"font": "font",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "imposta il tema chiaro da usare per l'applicazione",
"hotkey_toggleFullScreenPlayer": "attiva/disattiva player a schermo intero",
"hotkey_localSearch": "ricerca in-pagina",
@@ -434,17 +436,17 @@
"rating": "voto",
"search": "cerca",
"bitrate": "bitrate",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "aggiunti recentemente",
"note": "nota",
"name": "nome",
"dateAdded": "data aggiunta",
"releaseDate": "data di rilascio",
"albumCount": "numero $t(entity.album_other)",
"albumCount": "numero $t(entity.album, {\"count\": 2})",
"communityRating": "voto della community",
"path": "percorso",
"favorited": "preferito",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "è stato recentemente riprodotto",
"isFavorited": "è preferito",
"bpm": "bpm",
@@ -453,7 +455,7 @@
"disc": "disco",
"biography": "biografia",
"songCount": "conteggio canzoni",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "durata",
"isPublic": "è pubblico",
"random": "casuale",
@@ -461,24 +463,24 @@
"toYear": "fino all'anno",
"fromYear": "dall'anno",
"criticRating": "voto della critica",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "traccia"
},
"page": {
"sidebar": {
"nowPlaying": "in riproduzione",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"myLibrary": "la mia libreria",
"shared": "condivisa $t(entity.playlist_other)"
"shared": "condivisa $t(entity.playlist, {\"count\": 2})"
},
"fullscreenPlayer": {
"config": {
@@ -506,7 +508,7 @@
"appMenu": {
"selectServer": "seleziona server",
"version": "versione {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "gestisci server",
"expandSidebar": "espandi barra laterale",
"collapseSidebar": "collassa barra laterale",
@@ -540,8 +542,8 @@
"playShuffled": "$t(player.shuffle)",
"shareItem": "condividi elemento",
"showDetails": "mostra info",
"goToAlbum": "vai a $t(entity.album_one)",
"goToAlbumArtist": "vai a $t(entity.albumArtist_one)"
"goToAlbum": "vai a $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "vai a $t(entity.albumArtist, {\"count\": 1})"
},
"home": {
"mostPlayed": "più riprodotti",
@@ -552,7 +554,7 @@
"recentlyReleased": "appena pubblicato"
},
"albumDetail": {
"moreFromArtist": "di più da questo $t(entity.artist_one)",
"moreFromArtist": "di più da questo $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "di più da {{item}}",
"released": "rilasciato"
},
@@ -564,17 +566,17 @@
"advanced": "avanzate"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "mostra $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "mostra $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "mostra $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "mostra $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "tracce di {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -585,23 +587,23 @@
"title": "comandi"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "albums di {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"albumArtistDetail": {
"about": "Info {{artist}}",
"appearsOn": "compare su",
"recentReleases": "uscite recenti",
"viewDiscography": "mostra discografia",
"relatedArtists": "correlati $t(entity.artist_other)",
"relatedArtists": "correlati $t(entity.artist, {\"count\": 2})",
"topSongs": "brani migliori",
"topSongsFrom": "brani migliori da {{title}}",
"viewAll": "mostra tutto",
"viewAllTracks": "mostra tutto $t(entity.track_other)"
"viewAllTracks": "mostra tutto $t(entity.track, {\"count\": 2})"
},
"manageServers": {
"title": "gestisci servers",
@@ -622,16 +624,16 @@
},
"form": {
"deletePlaylist": {
"title": "elimina $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) eliminata correttamente",
"input_confirm": "digita il nome della $t(entity.playlist_one) per confermare"
"title": "elimina $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) eliminata correttamente",
"input_confirm": "digita il nome della $t(entity.playlist, {\"count\": 1}) per confermare"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "crea $t(entity.playlist_one)",
"title": "crea $t(entity.playlist, {\"count\": 1})",
"input_public": "publico",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) creata con successo",
"success": "$t(entity.playlist, {\"count\": 1}) creata con successo",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -651,9 +653,9 @@
},
"addToPlaylist": {
"success": "aggiunto $t(entity.trackWithCount, {\"count\": {{message}} }) a $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "aggiungi a $t(entity.playlist_one)",
"title": "aggiungi a $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "salta duplicati",
"input_playlists": "$t(entity.playlist_other)"
"input_playlists": "$t(entity.playlist, {\"count\": 2})"
},
"updateServer": {
"title": "aggiorna server",
@@ -666,13 +668,13 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "cerca testi"
},
"editPlaylist": {
"title": "modifica $t(entity.playlist_one)",
"title": "modifica $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Jellyfin non mostra se una playlist è pubblica o meno. Se vuoi che rimanga pubblica, assicurati di selezionare lopzione seguente",
"success": "$t(entity.playlist_one) aggiornato con successo"
"success": "$t(entity.playlist, {\"count\": 1}) aggiornato con successo"
},
"shareItem": {
"allowDownloading": "consentire il download",
@@ -717,8 +719,8 @@
"trackNumber": "numero traccia",
"rowIndex": "indice riga",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
@@ -727,13 +729,13 @@
"playCount": "numero riproduzioni",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "numero disco",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)"
"songCount": "$t(entity.track, {\"count\": 2})"
}
},
"column": {
@@ -742,7 +744,7 @@
"rating": "voto",
"favorite": "preferito",
"playCount": "riproduzioni",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "anno",
"lastPlayed": "ultima riproduzione",
"biography": "biografia",
@@ -751,10 +753,10 @@
"title": "titolo",
"bpm": "bpm",
"dateAdded": "data aggiunta",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "traccia",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "artista album",
"path": "percorso",
"discNumber": "disco",
@@ -800,7 +802,7 @@
"folder_one": "cartella",
"folder_many": "cartelle",
"folder_other": "cartelle",
"smartPlaylist": "$t(entity.playlist_one) smart",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) smart",
"album_one": "album",
"album_many": "album",
"album_other": "album",
+182 -106
View File
@@ -33,7 +33,9 @@
"viewQueue": "キューを表示する",
"lyrics": "歌詞",
"restoreQueueFromServer": "サーバーからキューを復元",
"saveQueueToServer": "サーバーにキューを保存"
"saveQueueToServer": "サーバーにキューを保存",
"addLastShuffled": "最後 (シャッフル)",
"addNextShuffled": "次 (シャッフル)"
},
"setting": {
"crossfadeStyle_description": "オーディオプレーヤーが使用するクロスフェードのスタイルを選択します",
@@ -97,7 +99,7 @@
"exitToTray_description": "アプリケーション終了ボタンが押された際、システムトレイに格納します",
"followLyric_description": "現在の再生位置に歌詞をスクロールします",
"hotkey_favoritePreviousSong": "$t(common.previousSong) をお気に入り",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "歌詞のオフセット (ミリ秒)",
"discordUpdateInterval_description": "更新間隔 (秒単位, 最小15秒)",
"fontType_optionCustom": "カスタムフォント",
@@ -109,7 +111,7 @@
"playbackStyle_optionCrossFade": "クロスフェード",
"hotkey_rate3": "3つ星で評価",
"font": "フォント",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "アプリケーションに使用するライトテーマを設定します",
"hotkey_toggleFullScreenPlayer": "フルスクリーンプレーヤーの切り替え",
"hotkey_localSearch": "ページ内検索",
@@ -118,7 +120,7 @@
"remotePassword_description": "リモートコントロール サーバーのパスワードを設定します。 ログイン情報はデフォルトでセキュアな通信がされないため、個人情報と関係ないランダムなパスワードを利用してください",
"hotkey_rate5": "5つ星で評価",
"hotkey_playbackPrevious": "前のトラック",
"showSkipButtons_description": "プレーヤーバーのスキップボタンを表示/非表示にします",
"showSkipButtons_description": "プレーヤーバーのスキップボタンを表示または非表示にします",
"crossfadeDuration_description": "クロスフェード効果の時間を設定します",
"playbackStyle": "再生スタイル",
"hotkey_toggleShuffle": "シャッフルの切り替え",
@@ -133,7 +135,7 @@
"exitToTray": "終了時にシステムトレイに格納",
"hotkey_rate4": "4つ星で評価",
"enableRemote": "リモートコントロール サーバーを有効化",
"showSkipButton_description": "プレーヤーバーのスキップボタンを表示/非表示にします",
"showSkipButton_description": "プレーヤーバーのスキップボタンを表示または非表示にします",
"savePlayQueue": "再生キューを保存",
"minimumScrobbleSeconds_description": "Scrobble されるために必要な最短の再生時間 (秒)",
"skipPlaylistPage_description": "プレイリストに移動するときに、デフォルトページではなくプレイリストの曲リストページに移動します",
@@ -159,7 +161,7 @@
"useSystemTheme_description": "システム設定のライト/ダークテーマに従います",
"playButtonBehavior_optionAddNext": "$t(player.addNext)",
"lyricFetch_description": "様々なインターネットソースから歌詞を取得します",
"lyricFetchProvider_description": "歌詞を取得するサービスを選択します。サービスの並び順に検索されます",
"lyricFetchProvider_description": "歌詞を取得するプロバイダーを選択します",
"globalMediaHotkeys_description": "システムのメディアホットキーでの再生コントロールを有効/無効化します",
"customFontPath": "カスタムフォントパス",
"followLyric": "歌詞を再生位置に追従",
@@ -191,7 +193,7 @@
"savePlayQueue_description": "アプリケーション終了時に再生キューを保存し、アプリケーション開始時に復元します",
"useSystemTheme": "システムテーマを使用",
"webAudio": "Web Audio を使用する",
"mediaSession_description": "Windows Media Session の統合を有効にし、システムボリュームオーバーレイとロック画面にメディアコントロールとメタデータを表示します (Windows のみ)",
"mediaSession_description": "Media Session の統合を有効にし、システムボリュームオーバーレイとロック画面にメディアコントロールとメタデータを表示します",
"mediaSession": "Media Session を有効にする",
"startMinimized_description": "システムトレイでアプリケーションを起動する",
"startMinimized": "最小化して起動する",
@@ -294,8 +296,8 @@
"discordDisplayType_description": "ステータスで聴いている内容を変更します",
"discordLinkType": "{{discord}} Presence リンク",
"discordLinkType_mbz_lastfm": "{{musicbrainz}} と {{lastfm}} のフォールバック",
"homeFeature": "ホーム画面の注目カルーセル",
"homeFeature_description": "ホーム画面に大きな注目カルーセルを表示するかどうかを制御します",
"homeFeature": "ホーム画面のカルーセル",
"homeFeature_description": "ホーム画面に大きなカルーセルを表示するかどうかを制御します",
"exportImportSettings_notValidJSON": "渡されたファイルは有効な JSON ではありません",
"exportImportSettings_importSuccess": "設定が正常にインポートされました!",
"exportImportSettings_importModalTitle": "Feishin 設定をインポート",
@@ -339,30 +341,45 @@
"playerbarWaveformAlign": "波形アライメント",
"showRatings_description": "インターフェースに星評価機能を表示するかどうかを制御します",
"showVisualizerInSidebar": "プレーヤーのサイドバーにビジュアライザーを表示する",
"combinedLyricsAndVisualizer": "プレヤーのサイドバーに歌詞とビジュアライザーを統合する",
"combinedLyricsAndVisualizer": "プレヤーのサイドバーに歌詞とビジュアライザーを統合する",
"audioFadeOnStatusChange_description": "再生 / 一時停止の状態が変わったときにフェードアウトとフェードインを有効にします",
"audioFadeOnStatusChange": "ステータス変更時の音声フェード",
"combinedLyricsAndVisualizer_description": "歌詞とビジュアライザーを同じパネルに統合します",
"showVisualizerInSidebar_description": "プレーヤーのサイドバーにビジュアライザーを表示するパネルが追加されます"
"showVisualizerInSidebar_description": "プレーヤーのサイドバーにビジュアライザーを表示するパネルが追加されます",
"queryBuilderCustomFields": "カスタムフィールド",
"queryBuilderCustomFields_inputLabel": "ラベル",
"queryBuilderCustomFields_inputTag": "タグ",
"queryBuilderCustomFields_description": "クエリビルダーで使用するカスタムフィールドを追加します",
"queryBuilder": "クエリビルダー",
"homeFeatureStyle_description": "ホーム画面のカルーセルのスタイルを制御します",
"homeFeatureStyle": "ホーム画面のカルーセルのスタイル",
"homeFeatureStyle_optionMultiple": "複数",
"homeFeatureStyle_optionSingle": "単数",
"mpvExtraParameters": "MPV の追加パラメータ",
"mpvExtraParameters_description": "MPV に渡す追加の引数を設定します",
"pathReplace": "ファイルパスの置換",
"pathReplace_description": "サーバーのデフォルトのファイルパスを置き換えます",
"pathReplace_optionRemovePrefix": "接頭辞を削除",
"pathReplace_optionAddPrefix": "接頭辞を追加"
},
"action": {
"editPlaylist": "$t(entity.playlist_one) を編集",
"editPlaylist": "$t(entity.playlist, {\"count\": 1}) を編集",
"goToPage": "ページへ移動",
"moveToTop": "先頭に移動",
"clearQueue": "キューをクリア",
"addToFavorites": "$t(entity.favorite_other) に追加",
"addToPlaylist": "$t(entity.playlist_one) に追加",
"createPlaylist": "$t(entity.playlist_one) を作成",
"removeFromPlaylist": "$t(entity.playlist_one) から削除",
"viewPlaylists": "$t(entity.playlist_other) を表示",
"addToFavorites": "$t(entity.favorite, {\"count\": 2}) に追加",
"addToPlaylist": "$t(entity.playlist, {\"count\": 1}) に追加",
"createPlaylist": "$t(entity.playlist, {\"count\": 1}) を作成",
"removeFromPlaylist": "$t(entity.playlist, {\"count\": 1}) から削除",
"viewPlaylists": "$t(entity.playlist, {\"count\": 2}) を表示",
"refresh": "$t(common.refresh)",
"deletePlaylist": "$t(entity.playlist_one) を削除",
"deletePlaylist": "$t(entity.playlist, {\"count\": 1}) を削除",
"removeFromQueue": "キューから削除",
"deselectAll": "すべて選択解除",
"moveToBottom": "末尾に移動",
"setRating": "評価を設定する",
"toggleSmartPlaylistEditor": "$t(entity.smartPlaylist) エディタの切り替え",
"removeFromFavorites": "$t(entity.favorite_other) から削除",
"removeFromFavorites": "$t(entity.favorite, {\"count\": 2}) から削除",
"openIn": {
"lastfm": "Last.fm で開く",
"musicbrainz": "MusicBrainz で開く"
@@ -374,8 +391,8 @@
"shuffleAll": "すべてシャッフル",
"shuffleSelected": "選択した曲をシャッフル",
"viewMore": "さらに表示",
"createRadioStation": "$t(entity.radioStation_one) を作成",
"deleteRadioStation": "$t(entity.radioStation_one) を削除",
"createRadioStation": "$t(entity.radioStation, {\"count\": 1}) を作成",
"deleteRadioStation": "$t(entity.radioStation, {\"count\": 1}) を削除",
"selectAll": "すべて選択",
"moveUp": "上に移動",
"moveDown": "下に移動",
@@ -398,7 +415,7 @@
"left": "左側",
"save": "保存",
"right": "右側",
"currentSong": "現在の $t(entity.track_one)",
"currentSong": "現在の $t(entity.track, {\"count\": 1})",
"collapse": "折りたたみ",
"trackNumber": "トラック",
"descending": "降順",
@@ -428,7 +445,7 @@
"delete": "削除",
"cancel": "キャンセル",
"forceRestartRequired": "変更を適用するために再起動が必要です… 通知を閉じると再起動します",
"setting": "設定",
"setting_other": "設定",
"version": "バージョン",
"title": "タイトル",
"filter_other": "フィルタ",
@@ -449,7 +466,7 @@
"none": "なし",
"menu": "メニュー",
"restartRequired": "再起動が必要です",
"previousSong": "前の $t(entity.track_one)",
"previousSong": "前の $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "条件にマッチするものがありません",
"quit": "終了",
"expand": "展開",
@@ -498,7 +515,10 @@
"mood": "気分",
"recordLabel": "レコードレーベル",
"tableColumns": "テーブル列",
"clean": "クリーン"
"clean": "クリーン",
"filter_single": "シングル",
"filter_multiple": "複数枚組",
"rename": "名前を変更"
},
"table": {
"config": {
@@ -515,42 +535,59 @@
"size": "$t(common.size)",
"itemSize": "項目のサイズ (px)",
"itemGap": "項目の間隔 (px)",
"followCurrentSong": "現在の曲をフォロー"
"followCurrentSong": "現在の曲をフォロー",
"advancedSettings": "詳細設定",
"autosize": "自動サイズ調整",
"moveUp": "上に移動",
"moveDown": "下に移動",
"alignLeft": "左揃え",
"alignCenter": "中央揃え",
"alignRight": "右揃え",
"itemsPerRow": "行あたりの項目数",
"size_default": "デフォルト",
"pinToLeft": "左にピン留め",
"pinToRight": "右にピン留め",
"size_compact": "コンパクト",
"size_large": "大きい",
"pagination_itemsPerPage": "ページあたりの項目数",
"pagination_infinite": "無限"
},
"label": {
"releaseDate": "リリース日時",
"releaseDate": "発売日",
"title": "$t(common.title)",
"duration": "$t(common.duration)",
"titleCombined": "$t(common.title) (結合)",
"dateAdded": "追加された日時",
"dateAdded": "追加",
"size": "$t(common.size)",
"bpm": "$t(common.bpm)",
"lastPlayed": "最後に再生",
"trackNumber": "トラック番号",
"rowIndex": "行インデックス",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"playCount": "再生回数",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"actions": "$t(common.action, {\"count\": 2})",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "ディスク番号",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)",
"albumCount": "$t(entity.album_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"bitDepth": "$t(common.bitDepth)",
"genreBadge": "$t(entity.genre_one) (バッジ)",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (バッジ)",
"image": "画像",
"sampleRate": "$t(common.sampleRate)"
"sampleRate": "$t(common.sampleRate)",
"composer": "作曲家",
"titleArtist": "$t(common.title) (アーティスト)"
}
},
"column": {
@@ -559,7 +596,7 @@
"rating": "評価",
"favorite": "お気に入り",
"playCount": "再生回数",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "年",
"lastPlayed": "最後に再生",
"biography": "バイオグラフィー",
@@ -567,19 +604,20 @@
"bitrate": "ビットレート",
"title": "タイトル",
"bpm": "BPM",
"dateAdded": "追加された日時",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"dateAdded": "追加",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "トラック",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "アルバムアーティスト",
"path": "パス",
"discNumber": "ディスク",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"size": "$t(common.size)",
"codec": "$t(common.codec)",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)"
"sampleRate": "$t(common.sampleRate)",
"owner": "所有者"
}
},
"error": {
@@ -602,7 +640,7 @@
"invalidServer": "無効なサーバー",
"loginRateError": "ログイン試行回数が多すぎます。数秒後に再試行してください",
"endpointNotImplementedError": "{{serverType}} にはエンドポイント {{endpoint}} が実装されていません",
"badAlbum": "このページが表示されたのは、この曲がアルバムに含まれていないためです。この問題は、音楽フォルダの最上位に曲がある場合に発生する可能性が高くなります。Jellyfin は、トラックがフォルダ内にある場合にのみトラックをグループ化します",
"badAlbum": "このページが表示されたのは、この曲がアルバムに含まれていないためです。この問題は、音楽フォルダの最上位に曲がある場合に発生する可能性が高くなります。Jellyfin は、トラックがフォルダ内にある場合にのみトラックをグループ化します",
"networkError": "ネットワークエラーが発生しました",
"notificationDenied": "通知の許可が拒否されました。この設定は効果がありません",
"openError": "ファイルを開けませんでした",
@@ -626,12 +664,12 @@
"recentlyAdded": "最近の追加",
"note": "ノート",
"name": "名前",
"dateAdded": "追加された日時",
"dateAdded": "追加",
"releaseDate": "発売日",
"communityRating": "コミュニティの評価",
"path": "パス",
"favorited": "お気に入り",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "最近再生済み",
"isFavorited": "お気に入り済み",
"bpm": "BPM",
@@ -639,7 +677,7 @@
"disc": "ディスク",
"biography": "バイオグラフィー",
"songCount": "曲数",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "長さ",
"random": "ランダム",
"lastPlayed": "最後に再生",
@@ -650,31 +688,33 @@
"comment": "コメント",
"recentlyUpdated": "新規更新",
"isPublic": "共有済み",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"owner": "$t(common.owner)",
"genre": "$t(entity.genre_one)",
"albumCount": "$t(entity.album_other) ",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2}) ",
"id": "ID",
"album": "$t(entity.album_one)",
"explicitStatus": "$t(common.explicitStatus)"
"album": "$t(entity.album, {\"count\": 1})",
"explicitStatus": "$t(common.explicitStatus)",
"sortName": "ソート名"
},
"page": {
"sidebar": {
"nowPlaying": "再生中",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"myLibrary": "マイライブラリ",
"shared": "$t(entity.playlist_other) を共有",
"radio": "$t(entity.radioStation_other)",
"favorites": "$t(entity.favorite_other)"
"shared": "$t(entity.playlist, {\"count\": 2}) を共有",
"radio": "$t(entity.radioStation, {\"count\": 2})",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"collections": "コレクション"
},
"fullscreenPlayer": {
"config": {
@@ -702,7 +742,7 @@
"appMenu": {
"selectServer": "サーバーを選択",
"version": "バージョン {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "サーバーの管理",
"expandSidebar": "サイドバーを展開",
"collapseSidebar": "サイドバーを折りたたむ",
@@ -712,10 +752,10 @@
"goForward": "進む",
"privateModeOff": "プライベートモードをオフにする",
"privateModeOn": "プライベートモードをオンにする",
"selectMusicFolder": "音楽フォルダを選択",
"noMusicFolder": "音楽フォルダを選択",
"selectMusicFolder": "音楽フォルダを選択",
"noMusicFolder": "音楽フォルダーが選択されていません",
"commandPalette": "コマンドパレットを開く",
"multipleMusicFolders": "{{count}} 個の音楽フォルダが選択されました"
"multipleMusicFolders": "{{count}} 個の音楽フォルダが選択されました"
},
"contextMenu": {
"addToPlaylist": "$t(action.addToPlaylist)",
@@ -738,8 +778,8 @@
"moveToNext": "$t(action.moveToNext)",
"playSimilarSongs": "$t(player.playSimilarSongs)",
"shareItem": "アイテムを共有する",
"goToAlbum": "$t(entity.album_one) に移動",
"goToAlbumArtist": "$t(entity.albumArtist_one) に移動",
"goToAlbum": "$t(entity.album, {\"count\": 1}) に移動",
"goToAlbumArtist": "$t(entity.albumArtist, {\"count\": 1}) に移動",
"showDetails": "情報を取得する",
"playShuffled": "$t(player.shuffle)",
"moveItems": "$t(action.moveItems)",
@@ -752,10 +792,10 @@
"explore": "ライブラリから検索",
"recentlyPlayed": "最近の再生",
"recentlyReleased": "最近のリリース",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "$t(entity.artist_one) の他の項目",
"moreFromArtist": "$t(entity.artist, {\"count\": 1}) の他の項目",
"moreFromGeneric": "{{item}} の他の作品",
"released": "リリース"
},
@@ -781,20 +821,21 @@
"lyricsDisplay": "歌詞表示",
"transcoding": "トランスコーディング",
"discord": "Discord",
"logger": "ロガー"
"logger": "ロガー",
"playerFilters": "プレーヤーフィルター"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "$t(entity.genre_one) $t(entity.album_other) を表示",
"showTracks": "$t(entity.genre_one) $t(entity.track_other) を表示"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "$t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2}) を表示",
"showTracks": "$t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2}) を表示"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "{{artist}} のトラック",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -805,12 +846,12 @@
"title": "コマンド"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "{{artist}} のアルバム",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"albumArtistDetail": {
"about": "{{artist}} について",
@@ -820,8 +861,8 @@
"topSongs": "人気曲",
"topSongsFrom": "{{title}} からの人気曲",
"viewAll": "すべて表示",
"viewAllTracks": "$t(entity.track_other) をすべて表示",
"relatedArtists": "関連の $t(entity.artist_other)",
"viewAllTracks": "$t(entity.track, {\"count\": 2}) をすべて表示",
"relatedArtists": "関連の $t(entity.artist, {\"count\": 2})",
"groupingTypeAll": "すべてのリリースタイプ",
"groupingTypePrimary": "主なリリースタイプ"
},
@@ -845,24 +886,32 @@
"title": "ラジオ局"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"windowBar": {
"paused": "(一時停止) ",
"privateMode": "(プライベートモード)"
},
"collections": {
"overrideExisting": "既存のものを上書き",
"saveAsCollection": "コレクションとして保存"
}
},
"form": {
"deletePlaylist": {
"title": "$t(entity.playlist_one) を削除",
"success": "$t(entity.playlist_one) が削除されました",
"input_confirm": "確認のため $t(entity.playlist_one) の名前を入力してください"
"title": "$t(entity.playlist, {\"count\": 1}) を削除",
"success": "$t(entity.playlist, {\"count\": 1}) が削除されました",
"input_confirm": "確認のため $t(entity.playlist, {\"count\": 1}) の名前を入力してください"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "$t(entity.playlist_one) を作成",
"title": "$t(entity.playlist, {\"count\": 1}) を作成",
"input_public": "公開",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) を作成しました",
"success": "$t(entity.playlist, {\"count\": 1}) を作成しました",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -885,11 +934,11 @@
},
"addToPlaylist": {
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) を $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} }) に追加しました",
"title": "$t(entity.playlist_one) に追加",
"title": "$t(entity.playlist, {\"count\": 1}) に追加",
"input_skipDuplicates": "重複をスキップ",
"input_playlists": "$t(entity.playlist_other)",
"create": "$t(entity.playlist_one) {{playlist}} を作成する",
"searchOrCreate": "$t(entity.playlist_other) を検索するか、入力して新しいものを作成してください"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "$t(entity.playlist, {\"count\": 1}) {{playlist}} を作成する",
"searchOrCreate": "$t(entity.playlist, {\"count\": 2}) を検索するか、入力して新しいプレイリストを作成してください"
},
"updateServer": {
"title": "サーバーをアップデート",
@@ -898,17 +947,21 @@
"queryEditor": {
"input_optionMatchAll": "すべて一致",
"input_optionMatchAny": "一部一致",
"title": "クエリエディタ"
"title": "クエリエディタ",
"addRuleGroup": "ルールグループを追加",
"removeRuleGroup": "ルールグループを削除",
"resetToDefault": "デフォルトにリセット",
"clearFilters": "フィルターを削除"
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "歌詞検索"
},
"editPlaylist": {
"title": "$t(entity.playlist_one) を編集",
"title": "$t(entity.playlist, {\"count\": 1}) を編集",
"publicJellyfinNote": "Jellyfin では、何らかの理由でプレイリストが公開されているかどうかが表示されません。公開されたままにしたい場合は、以下の項目を選択してください",
"success": "$t(entity.playlist_one) が正常に更新されました",
"success": "$t(entity.playlist, {\"count\": 1}) が正常に更新されました",
"editNote": "大規模なプレイリストの場合、手動編集は推奨されません。既存のプレイリストを上書きすることでデータ損失が発生するリスクを許容しますか?"
},
"shareItem": {
@@ -942,7 +995,7 @@
},
"shuffleAll": {
"title": "ランダムに再生",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "曲が多すぎます",
"input_minYear": "年から",
"input_maxYear": "年まで",
@@ -950,6 +1003,9 @@
"input_played_optionUnplayed": "未再生のトラックのみ",
"input_played_optionPlayed": "再生されたトラックのみ",
"input_played": "再生フィルター"
},
"saveQueue": {
"success": "プレイキューをサーバーに保存しました"
}
},
"entity": {
@@ -957,15 +1013,15 @@
"playlistWithCount_other": "{{count}} 個のプレイリスト",
"playlist_other": "プレイリスト",
"artist_other": "アーティスト",
"folderWithCount_other": "{{count}} 個のフォルダ",
"folderWithCount_other": "{{count}} 個のフォルダ",
"albumArtist_other": "アルバムアーティスト",
"track_other": "トラック",
"albumArtistCount_other": "{{count}} アルバムアーティスト",
"albumWithCount_other": "{{count}} 枚のアルバム",
"favorite_other": "お気に入り",
"artistWithCount_other": "{{count}} 人のアーティスト",
"folder_other": "フォルダ",
"smartPlaylist": "スマート $t(entity.playlist_one)",
"folder_other": "フォルダ",
"smartPlaylist": "スマート $t(entity.playlist, {\"count\": 1})",
"album_other": "アルバム",
"genreWithCount_other": "{{count}} 個のジャンル",
"trackWithCount_other": "{{count}} 個のトラック",
@@ -985,7 +1041,7 @@
"ep": "EP",
"other": "その他",
"single": "シングル",
"album": "$t(entity.album_one)"
"album": "$t(entity.album, {\"count\": 1})"
},
"secondary": {
"audiobook": "オーディオブック",
@@ -1008,6 +1064,26 @@
},
"filterOperator": {
"matchesRegex": "正規表現に一致",
"notContains": "含まれていない"
"notContains": "含まれていない",
"after": "以降",
"afterDate": "以降 (日付)",
"before": "以前",
"beforeDate": "以前 (日付)",
"contains": "を含む",
"endsWith": "で終わる",
"inPlaylist": "いずれか",
"inTheRange": "範囲内",
"inTheRangeDate": "範囲内 (日付)",
"is": "完全一致",
"isNot": "不一致",
"startsWith": "で始まる",
"inTheLast": "以内",
"isGreaterThan": "より大きい",
"isLessThan": "より小さい",
"notInPlaylist": "いずれでもない",
"notInTheLast": "より前"
},
"visualizer": {
"visualizerType": "ビジュアライザーの種類"
}
}
+40 -40
View File
@@ -1,31 +1,31 @@
{
"action": {
"createPlaylist": "$t(entity.playlist_one) 생성",
"addToFavorites": "$t(entity.favorite_other)에 추가",
"addToPlaylist": "$t(entity.playlist_one)에 추가",
"createPlaylist": "$t(entity.playlist, {\"count\": 1}) 생성",
"addToFavorites": "$t(entity.favorite, {\"count\": 2})에 추가",
"addToPlaylist": "$t(entity.playlist, {\"count\": 1})에 추가",
"clearQueue": "대기열 지우기",
"deletePlaylist": "$t(entity.playlist_one) 삭제",
"deletePlaylist": "$t(entity.playlist, {\"count\": 1}) 삭제",
"deselectAll": "모두 선택 해제",
"editPlaylist": "$t(entity.playlist_one) 편집",
"editPlaylist": "$t(entity.playlist, {\"count\": 1}) 편집",
"goToPage": "페이지 이동",
"moveToBottom": "맨 아래로 이동",
"moveToTop": "맨 위로 이동",
"moveToNext": "다음으로 이동",
"removeFromQueue": "대기열에서 제거",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "$t(entity.favorite_other)에서 제거",
"removeFromPlaylist": "$t(entity.playlist_one)에서 제거",
"removeFromFavorites": "$t(entity.favorite, {\"count\": 2})에서 제거",
"removeFromPlaylist": "$t(entity.playlist, {\"count\": 1})에서 제거",
"openIn": {
"musicbrainz": "MusicBrainz에서 보기",
"lastfm": "Last.fm에서 보기"
},
"viewPlaylists": "$t(entity.playlist_other) 보기",
"viewPlaylists": "$t(entity.playlist, {\"count\": 2}) 보기",
"setRating": "평점 지정",
"toggleSmartPlaylistEditor": "$t(entity.smartPlaylist) 편집기 펼치기",
"addOrRemoveFromSelection": "선택항목에서 추가 또는 제거",
"selectRangeOfItems": "항목의 범위 선택",
"createRadioStation": "$t(entity.radioStation_one) 생성",
"deleteRadioStation": "$t(entity.radioStation_one) 삭제",
"createRadioStation": "$t(entity.radioStation, {\"count\": 1}) 생성",
"deleteRadioStation": "$t(entity.radioStation, {\"count\": 1}) 삭제",
"selectAll": "전부 선택",
"downloadStarted": "{{count}}개 항목 다운로드 시작했습니다",
"moveUp": "위로 옮기기",
@@ -59,7 +59,7 @@
"backward": "뒤로",
"saveAs": "(으)로 저장하기",
"search": "검색",
"setting": "설정",
"setting_other": "설정",
"share": "공유",
"size": "크기",
"sortOrder": "순서",
@@ -74,7 +74,7 @@
"comingSoon": "조만간…",
"configure": "설정",
"confirm": "확인",
"currentSong": "현재 $t(entity.track_one)",
"currentSong": "현재 $t(entity.track, {\"count\": 1})",
"decrease": "감소",
"delete": "삭제",
"descending": "내림차순",
@@ -96,7 +96,7 @@
"path": "경로",
"playerMustBePaused": "플레이어가 일시정지 되어야 합니다",
"preview": "미리보기",
"previousSong": "이전곡 $t(entity.track_one)",
"previousSong": "이전곡 $t(entity.track, {\"count\": 1})",
"quit": "종료",
"refresh": "새로고침",
"reload": "리로드",
@@ -168,7 +168,7 @@
"song_other": "곡",
"play_other": "{{count}} 재생",
"playlistWithCount_other": "{{count}} 재생목록",
"smartPlaylist": "스마트 $t(entity.playlist_one)",
"smartPlaylist": "스마트 $t(entity.playlist, {\"count\": 1})",
"track_other": "트랙",
"radioStation_other": "라디오 방송국",
"radioStationWithCount_other": "{{count}}개 라디오 방송국"
@@ -214,9 +214,9 @@
"dateAdded": "추가된 날짜",
"lastPlayed": "마지막으로 재생한",
"mostPlayed": "가장 많이 재생한",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"communityRating": "커뮤니티 평점",
"criticRating": "비평가 평점",
"disc": "디스크",
@@ -225,11 +225,11 @@
"channels": "$t(common.channel_other)",
"duration": "길이",
"bpm": "bpm",
"albumCount": "$t(entity.album_other) 앨범수",
"albumCount": "$t(entity.album, {\"count\": 2}) 앨범수",
"comment": "코멘트",
"favorited": "즐겨찾기",
"fromYear": "시작 년도",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "아이디",
"isCompilation": "편집앨범 여부",
"isFavorited": "즐겨찾기 여부",
@@ -262,16 +262,16 @@
},
"addToPlaylist": {
"input_skipDuplicates": "중복 건너뛰기",
"title": "$t(entity.playlist_one) 에 추가",
"input_playlists": "$t(entity.playlist_other)",
"title": "$t(entity.playlist, {\"count\": 1}) 에 추가",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"success": "$t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })에 $t(entity.trackWithCount, {\"count\": {{message}} })가 추가되었습니다",
"create": "$t(entity.playlist_one) {{playlist}} 생성",
"searchOrCreate": "$t(entity.playlist_other) 검색 또는 입력하여 새로 만들기"
"create": "$t(entity.playlist, {\"count\": 1}) {{playlist}} 생성",
"searchOrCreate": "$t(entity.playlist, {\"count\": 2}) 검색 또는 입력하여 새로 만들기"
},
"lyricSearch": {
"title": "가사 검색",
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)"
"input_artist": "$t(entity.artist, {\"count\": 1})"
},
"queryEditor": {
"input_optionMatchAll": "모두 일치",
@@ -279,9 +279,9 @@
"title": "쿼리 편집기"
},
"editPlaylist": {
"title": "$t(entity.playlist_one) 편집",
"title": "$t(entity.playlist, {\"count\": 1}) 편집",
"publicJellyfinNote": "Jellyfin은 재생목록 공개 여부를 노출하지 않습니다. 만약 공개되길 원한다면 다음을 선택하세요",
"success": "$t(entity.playlist_one) 업데이트 되었습니다"
"success": "$t(entity.playlist, {\"count\": 1}) 업데이트 되었습니다"
},
"shareItem": {
"allowDownloading": "다운로드 허용",
@@ -298,15 +298,15 @@
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one)를 생성했습니다",
"success": "$t(entity.playlist, {\"count\": 1})를 생성했습니다",
"input_owner": "$t(common.owner)",
"input_public": "공개",
"title": "$t(entity.playlist_one) 생성"
"title": "$t(entity.playlist, {\"count\": 1}) 생성"
},
"deletePlaylist": {
"input_confirm": "확인을 위해 $t(entity.playlist_one)의 이름을 적어주세요",
"success": "$t(entity.playlist_one)가 삭제되었습니다",
"title": "$t(entity.playlist_one) 삭제"
"input_confirm": "확인을 위해 $t(entity.playlist, {\"count\": 1})의 이름을 적어주세요",
"success": "$t(entity.playlist, {\"count\": 1})가 삭제되었습니다",
"title": "$t(entity.playlist, {\"count\": 1}) 삭제"
},
"privateMode": {
"enabled": "프라이빗 모드가 활성화되었습니다. 재생상태가 외부 서비스에 지금부터 노출되지 않습니다",
@@ -362,8 +362,8 @@
"download": "다운로드",
"numberSelected": "{{count}}개 선택됨",
"shareItem": "공유",
"goToAlbum": "$t(entity.album_one)으로 이동",
"goToAlbumArtist": "$t(entity.albumArtist_one)으로 이동",
"goToAlbum": "$t(entity.album, {\"count\": 1})으로 이동",
"goToAlbumArtist": "$t(entity.albumArtist, {\"count\": 1})으로 이동",
"showDetails": "추가정보"
},
"albumArtistDetail": {
@@ -371,17 +371,17 @@
"viewDiscography": "디스코그래피 보기",
"appearsOn": "참여 앨범",
"recentReleases": "최근 앨범",
"relatedArtists": "연관 $t(entity.artist_other)",
"relatedArtists": "연관 $t(entity.artist, {\"count\": 2})",
"topSongs": "최고의 곡들",
"topSongsFrom": "{{title}}이 포함된 최고의 곡들",
"viewAll": "전부 보이기",
"viewAllTracks": "$t(entity.track_other) 전부 보이기"
"viewAllTracks": "$t(entity.track, {\"count\": 2}) 전부 보이기"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "$t(entity.artist_one) 더 보기",
"moreFromArtist": "$t(entity.artist, {\"count\": 1}) 더 보기",
"moreFromGeneric": "{{item}} 더 보기",
"released": "발매"
},
@@ -389,8 +389,8 @@
"artistAlbums": "{{artist}}의 앨범"
},
"genreList": {
"showAlbums": "$t(entity.genre_one) $t(entity.album_other) 표시",
"showTracks": "$t(entity.genre_one) $t(entity.track_other) 표시"
"showAlbums": "$t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2}) 표시",
"showTracks": "$t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2}) 표시"
},
"globalSearch": {
"commands": {
@@ -425,7 +425,7 @@
"sidebar": {
"myLibrary": "내 라이브러리",
"nowPlaying": "재생중",
"shared": "공유 $t(entity.playlist_other)"
"shared": "공유 $t(entity.playlist, {\"count\": 2})"
},
"trackList": {
"artistTracks": "{{artist}}의 음악"
+50 -49
View File
@@ -5,22 +5,22 @@
"musicbrainz": "Åpne i MusicBrainz"
},
"moveToBottom": "flytt til bunnen",
"deletePlaylist": "slett $t(entity.playlist_one)",
"deletePlaylist": "slett $t(entity.playlist, {\"count\": 1})",
"deselectAll": "avmarker alle",
"editPlaylist": "rediger $t(entity.playlist_one)",
"addToFavorites": "legg til $t(entity.favorite_other)",
"addToPlaylist": "legg til $t(entity.playlist_one)",
"editPlaylist": "rediger $t(entity.playlist, {\"count\": 1})",
"addToFavorites": "legg til $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "legg til $t(entity.playlist, {\"count\": 1})",
"clearQueue": "tøm kø",
"createPlaylist": "opprett $t(entity.playlist_one)",
"createPlaylist": "opprett $t(entity.playlist, {\"count\": 1})",
"goToPage": "gå til side",
"moveToTop": "flytt til toppen",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "fjern fra $t(entity.favorite_other)",
"removeFromFavorites": "fjern fra $t(entity.favorite, {\"count\": 2})",
"moveToNext": "flytt til neste",
"setRating": "angi vurdering",
"removeFromQueue": "fjern fra kø",
"removeFromPlaylist": "fjern fra $t(entity.playlist_one)",
"viewPlaylists": "vise $t(entity.playlist_other)",
"removeFromPlaylist": "fjern fra $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "vise $t(entity.playlist, {\"count\": 2})",
"toggleSmartPlaylistEditor": "bytt $t(entity.smartPlaylist) editor"
},
"common": {
@@ -31,7 +31,7 @@
"collapse": "slå sammen",
"configure": "konfigurer",
"confirm": "bekreft",
"currentSong": "gjeldende $t(entity.track_one)",
"currentSong": "gjeldende $t(entity.track, {\"count\": 1})",
"version": "versjon",
"areYouSure": "er du sikker?",
"ascending": "stigende",
@@ -69,7 +69,7 @@
"owner": "eier",
"playerMustBePaused": "spilleren må settes på pause",
"path": "sti",
"previousSong": "forrige $t(entity.track_one)",
"previousSong": "forrige $t(entity.track, {\"count\": 1})",
"refresh": "frisk opp",
"rating": "vurdering",
"random": "vilkårlig",
@@ -87,7 +87,8 @@
"share": "del",
"quit": "avslutt",
"size": "størrelse",
"setting": "innstilling",
"setting_one": "innstilling",
"setting_other": "",
"trackNumber": "spor",
"title": "tittel",
"channel_one": "kanal",
@@ -121,7 +122,7 @@
"sampleRate": "samplingsfrekvens"
},
"entity": {
"smartPlaylist": "smart $t(entity.playlist_one)",
"smartPlaylist": "smart $t(entity.playlist, {\"count\": 1})",
"album_one": "album",
"album_other": "album",
"albumArtist_one": "albumartist",
@@ -189,10 +190,10 @@
"id": "id",
"name": "navn",
"bitrate": "bithastighet",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografi",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"duration": "lengde",
"favorited": "merket som favoritt",
"comment": "kommentar",
@@ -223,21 +224,21 @@
"isFavorited": "er merket som favoritt",
"recentlyAdded": "nylig lagt til",
"channels": "$t(common.channel_other)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"trackNumber": "spor",
"albumCount": "$t(entity.album_other) opptelling"
"albumCount": "$t(entity.album, {\"count\": 2}) opptelling"
},
"form": {
"createPlaylist": {
"input_description": "$t(common.description)",
"input_owner": "$t(common.owner)",
"input_public": "offentlig",
"title": "opprett $t(entity.playlist_one)",
"title": "opprett $t(entity.playlist, {\"count\": 1})",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) opprettet"
"success": "$t(entity.playlist, {\"count\": 1}) opprettet"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "sangtekstsøk"
},
@@ -256,18 +257,18 @@
},
"addToPlaylist": {
"success": "la $t(entity.trackWithCount, {\"count\": {{message}} }) til $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "legg til i $t(entity.playlist_one)",
"title": "legg til i $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "hopp over duplikater",
"input_playlists": "$t(entity.playlist_other)"
"input_playlists": "$t(entity.playlist, {\"count\": 2})"
},
"deletePlaylist": {
"title": "slett $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) er slettet",
"input_confirm": "skrive inn navnet på $t(entity.playlist_one) for å bekrefte"
"title": "slett $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) er slettet",
"input_confirm": "skrive inn navnet på $t(entity.playlist, {\"count\": 1}) for å bekrefte"
},
"editPlaylist": {
"title": "rediger $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) er oppdatert"
"title": "rediger $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) er oppdatert"
},
"shareItem": {
"allowDownloading": "tillat nedlasting",
@@ -296,7 +297,7 @@
"manageServers": "administrere servere",
"goBack": "gå tilbake",
"openBrowserDevtools": "åpne utviklingsverktøy i nettleser",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"expandSidebar": "utvid sidefelt",
"goForward": "gå fremover"
},
@@ -329,22 +330,22 @@
"viewDiscography": "se diskografi",
"recentReleases": "nylige utgivelser",
"topSongsFrom": "beste sanger fra {{title}}",
"viewAllTracks": "se alle $t(entity.track_other)",
"viewAllTracks": "se alle $t(entity.track, {\"count\": 2})",
"viewAll": "se alle",
"about": "Om {{artist}}",
"appearsOn": "opptrer på",
"relatedArtists": "relatert $t(entity.artist_other)"
"relatedArtists": "relatert $t(entity.artist, {\"count\": 2})"
},
"albumList": {
"artistAlbums": "album av {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "mer fra denne $t(entity.artist_one)",
"moreFromArtist": "mer fra denne $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "mer fra {{item}}",
"released": "utgitt"
},
@@ -372,9 +373,9 @@
"related": "relatert"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "vis $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "vis $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "vis $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "vis $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"title": "kommandoer",
@@ -405,23 +406,23 @@
"copyPath": "kopier stien til utklippstavlen"
},
"trackList": {
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)",
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "spor fra {{artist}}"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"tracks": "$t(entity.track_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})",
"nowPlaying": "spilles nå",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"albums": "$t(entity.album_other)",
"playlists": "$t(entity.playlist_other)",
"albums": "$t(entity.album, {\"count\": 2})",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "delt $t(entity.playlist_other)",
"artists": "$t(entity.artist_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "delt $t(entity.playlist, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"myLibrary": "mitt bibliotek"
},
"setting": {
@@ -432,7 +433,7 @@
"windowTab": "vindu"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"playlist": {
"reorder": "omorganisering kun mulig ved sortering på id"
+65 -63
View File
@@ -1,21 +1,21 @@
{
"action": {
"editPlaylist": "pas $t(entity.playlist_one) aan",
"editPlaylist": "pas $t(entity.playlist, {\"count\": 1}) aan",
"goToPage": "ga naar pagina",
"moveToTop": "verplaats naar begin",
"addToFavorites": "toevoegen aan $t(entity.favorite_other)",
"addToPlaylist": "toevoegen aan $t(entity.playlist_one)",
"createPlaylist": "maak $t(entity.playlist_one)",
"removeFromPlaylist": "verwijder uit $t(entity.playlist_one)",
"viewPlaylists": "bekijk $t(entity.playlist_other)",
"addToFavorites": "toevoegen aan $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "toevoegen aan $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "maak $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "verwijder uit $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "bekijk $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "verwijder $t(entity.playlist_one)",
"deletePlaylist": "verwijder $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "verwijder uit wachtrij",
"deselectAll": "deselecteer alles",
"moveToBottom": "verplaats naar einde",
"setRating": "kies beoordeling",
"toggleSmartPlaylistEditor": "editor $t(entity.smartPlaylist) schakelen",
"removeFromFavorites": "verwijder uit $t(entity.favorite_other)",
"removeFromFavorites": "verwijder uit $t(entity.favorite, {\"count\": 2})",
"clearQueue": "verwijder lijst",
"openIn": {
"lastfm": "Open in Last.fm",
@@ -30,8 +30,8 @@
"viewMore": "bekijk meer",
"addOrRemoveFromSelection": "toevoegen aan of verwijderen uit selectie",
"selectRangeOfItems": "selecteer een reeks van nummers",
"createRadioStation": "maak $t(entity.radioStation_one)",
"deleteRadioStation": "verwijder $t(entity.radioStation_one)",
"createRadioStation": "maak $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "verwijder $t(entity.radioStation, {\"count\": 1})",
"selectAll": "selecteer alles",
"moveUp": "verplaats omhoog",
"moveDown": "verplaats omlaag",
@@ -48,7 +48,7 @@
"edit": "aanpassen",
"favorite": "favoriet",
"left": "links",
"currentSong": "huidig $t(entity.track_one)",
"currentSong": "huidig $t(entity.track, {\"count\": 1})",
"collapse": "samenvouwen",
"descending": "aflopend",
"add": "toevoegen",
@@ -92,7 +92,7 @@
"disable": "deactiveren",
"none": "geen",
"menu": "menu",
"previousSong": "vorige $t(entity.track_one)",
"previousSong": "vorige $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "de zoekopdracht leverde geen resultaten op",
"quit": "sluiten",
"expand": "vergroten",
@@ -118,7 +118,8 @@
"yes": "ja",
"size": "grootte",
"reload": "herlaad",
"setting": "instelling",
"setting_one": "instelling",
"setting_other": "",
"close": "sluiten",
"additionalParticipants": "andere deelnemers",
"newVersion": "een nieuwe versie is geïnstalleerd ({{version}})",
@@ -155,7 +156,8 @@
"noFilters": "geen filters ingesteld",
"example": "voorbeeld",
"mood": "stemming",
"retry": "opnieuw proberen"
"retry": "opnieuw proberen",
"filter_single": "single"
},
"filter": {
"rating": "rating",
@@ -171,28 +173,28 @@
"isRated": "is rated",
"owner": "$t(common.owner)",
"bitrate": "bitrate",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "recentelijk toegevoegd",
"note": "notitie",
"name": "naam",
"dateAdded": "datum toegevoegd",
"albumCount": "$t(entity.album_other) totaal",
"albumCount": "$t(entity.album, {\"count\": 2}) totaal",
"path": "pad",
"favorited": "favoriet",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "is recentelijk afgespeeld",
"isFavorited": "is favoriet",
"bpm": "bpm",
"id": "id",
"disc": "disk",
"biography": "biografie",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "duratie",
"isPublic": "is publiek",
"random": "willekeurig",
"lastPlayed": "laatst gespeeld",
"fromYear": "van jaar",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"title": "titel",
"search": "zoeken",
"releaseDate": "releasedatum",
@@ -222,8 +224,8 @@
"removeFromQueue": "$t(action.removeFromQueue)",
"download": "download",
"shareItem": "deel item",
"goToAlbum": "ga naar $t(entity.album_one)",
"goToAlbumArtist": "ga naar $t(entity.albumArtist_one)",
"goToAlbum": "ga naar $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "ga naar $t(entity.albumArtist, {\"count\": 1})",
"showDetails": "haal info op",
"moveItems": "$t(action.moveItems)",
"moveToNext": "$t(action.moveToNext)",
@@ -234,7 +236,7 @@
"appMenu": {
"selectServer": "selecteer server",
"version": "versie {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "beheer servers",
"expandSidebar": "sidebar uitklappen",
"collapseSidebar": "sidebar inklappen",
@@ -250,7 +252,7 @@
"commandPalette": "open opdrachtvenster"
},
"albumDetail": {
"moreFromArtist": "meer van deze $t(entity.artist_one)",
"moreFromArtist": "meer van deze $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "meer van {{item}}",
"released": "uitgebracht"
},
@@ -278,22 +280,22 @@
"visualizer": "visualizer"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "albums van {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"albumArtistDetail": {
"about": "Over {{artist}}",
"appearsOn": "verschijnt op",
"viewDiscography": "bekijk discografie",
"relatedArtists": "gerelateerd $t(entity.artist_other)",
"relatedArtists": "gerelateerd $t(entity.artist, {\"count\": 2})",
"topSongs": "top nummers",
"topSongsFrom": "top nummers van {{title}}",
"viewAll": "bekijk alle",
"viewAllTracks": "bekijk alle $t(entity.track_other)",
"viewAllTracks": "bekijk alle $t(entity.track, {\"count\": 2})",
"recentReleases": "recente uitgaven",
"groupingTypeAll": "alle soorten publicaties",
"groupingTypePrimary": "primaire publicatiesoorten"
@@ -307,9 +309,9 @@
"removeServer": "verwijder server"
},
"genreList": {
"showAlbums": "toon $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "toon $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "toon $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "toon $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -326,10 +328,10 @@
"recentlyPlayed": "recent afgespeeld",
"recentlyReleased": "recent uitgekomen",
"title": "$t(common.home)",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"itemDetail": {
"copyPath": "kopieer pad naar klembord",
@@ -340,7 +342,7 @@
"reorder": "herschikken is alleen ingeschakeld wanneer er op ID wordt gestorteerd"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "geavanceerd",
@@ -368,32 +370,32 @@
"playerFilters": "spelerfilters"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"favorites": "$t(entity.favorite_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"myLibrary": "mijn bibliotheek",
"nowPlaying": "nu aan het spelen",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "$t(entity.playlist_other) gedeeld",
"tracks": "$t(entity.track_other)",
"radio": "$t(entity.radioStation_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) gedeeld",
"tracks": "$t(entity.track, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"trackList": {
"artistTracks": "nummers van {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
},
"radioList": {
"title": "radiostations"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
}
},
"error": {
@@ -452,7 +454,7 @@
"artistWithCount_other": "{{count}} artiesten",
"folder_one": "folder",
"folder_other": "folders",
"smartPlaylist": "smart $t(entity.playlist_one)",
"smartPlaylist": "smart $t(entity.playlist, {\"count\": 1})",
"album_one": "album",
"album_other": "albums",
"genreWithCount_one": "{{count}} genre",
@@ -780,25 +782,25 @@
"input_remoteUrlPlaceholder": "optioneel: publieke url voor externe mogelijkheden"
},
"deletePlaylist": {
"title": "verwijder $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) succesvol verwijdert",
"input_confirm": "Typ de naam van $t(entity.playlist_one) om te bevestigen"
"title": "verwijder $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) succesvol verwijdert",
"input_confirm": "Typ de naam van $t(entity.playlist, {\"count\": 1}) om te bevestigen"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "$t(entity.playlist_one) aanmaken",
"title": "$t(entity.playlist, {\"count\": 1}) aanmaken",
"input_public": "publiek",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) aangemaakt",
"success": "$t(entity.playlist, {\"count\": 1}) aangemaakt",
"input_owner": "$t(common.owner)"
},
"addToPlaylist": {
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) aan $t(entity.trackWithCount, {\"count\": {{message}} }) toegevoegd",
"title": "aan $t(entity.playlist_one) toevoegen",
"title": "aan $t(entity.playlist, {\"count\": 1}) toevoegen",
"input_skipDuplicates": "duplicaten overslaan",
"input_playlists": "$t(entity.playlist_other)",
"create": "maak $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "zoek $t(entity.playlist_other) of typ om een nieuwe te maken"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "maak $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "zoek $t(entity.playlist, {\"count\": 2}) of typ om een nieuwe te maken"
},
"queryEditor": {
"input_optionMatchAll": "alles matchen",
@@ -811,13 +813,13 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "tekst zoeken"
},
"editPlaylist": {
"title": "$t(entity.playlist_one) aanpassen",
"title": "$t(entity.playlist, {\"count\": 1}) aanpassen",
"publicJellyfinNote": "Jellyfin laat niet weten of een playlist publiek of privaat is. Als u wilt dat dit publiek blijft, selecteer de volgende invoer",
"success": "$t(entity.playlist_one) succesvol geüpdatet",
"success": "$t(entity.playlist, {\"count\": 1}) succesvol geüpdatet",
"editNote": "Handmatige bewerking wordt afgeraden voor grote afspeellijsten. Weet je zeker dat je het risico op dataverlies wilt accepteren door de bestaande afspeellijst te overschrijven?"
},
"updateServer": {
@@ -843,7 +845,7 @@
},
"shuffleAll": {
"title": "willekeurig afspelen",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "hoeveel nummers?",
"input_minYear": "van jaar",
"input_maxYear": "naar jaar",
@@ -942,7 +944,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "uitzending",
"ep": "ep",
"other": "overig",
+95 -83
View File
@@ -1,20 +1,20 @@
{
"action": {
"editPlaylist": "edytuj $t(entity.playlist_one)",
"editPlaylist": "edytuj $t(entity.playlist, {\"count\": 1})",
"goToPage": "idź do strony",
"clearQueue": "wyczyść kolejkę",
"addToFavorites": "dodaj do $t(entity.favorite_other)",
"removeFromPlaylist": "usuń z $t(entity.playlist_one)",
"viewPlaylists": "zobacz $t(entity.playlist_other)",
"addToFavorites": "dodaj do $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "usuń z $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "zobacz $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"removeFromQueue": "usuń z kolejki",
"deselectAll": "odznacz wszystko",
"toggleSmartPlaylistEditor": "przełącz edytor $t(entity.smartPlaylist)",
"removeFromFavorites": "usuń z $t(entity.favorite_other)",
"removeFromFavorites": "usuń z $t(entity.favorite, {\"count\": 2})",
"moveToTop": "przesuń na górę",
"addToPlaylist": "dodaj do $t(entity.playlist_one)",
"createPlaylist": "utwórz $t(entity.playlist_one)",
"deletePlaylist": "usuń $t(entity.playlist_one)",
"addToPlaylist": "dodaj do $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "utwórz $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "usuń $t(entity.playlist, {\"count\": 1})",
"moveToBottom": "przesuń na dół",
"setRating": "oceń",
"openIn": {
@@ -32,8 +32,8 @@
"moveDown": "przenieś niżej",
"holdToMoveToTop": "przytrzymaj aby, przesunąć na górę",
"holdToMoveToBottom": "przytrzymaj aby, przesunąć na dół",
"createRadioStation": "utwórz $t(entity.radioStation_one)",
"deleteRadioStation": "usuń $t(entity.radioStation_one)",
"createRadioStation": "utwórz $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "usuń $t(entity.radioStation, {\"count\": 1})",
"addOrRemoveFromSelection": "dodaj lub usuń z wyboru",
"selectRangeOfItems": "wybierz zakres elementów",
"selectAll": "wybierz wszystkie",
@@ -73,7 +73,9 @@
"delete": "usuń",
"cancel": "anuluj",
"forceRestartRequired": "zrestartuj aby zastosować zmiany... zamknij powiadomienie aby zrestartować",
"setting": "ustawienia",
"setting_one": "ustawienia",
"setting_few": "",
"setting_many": "",
"version": "wersja",
"title": "tytuł",
"filter_one": "filtr",
@@ -100,7 +102,7 @@
"none": "żaden",
"menu": "menu",
"restartRequired": "wymagany restart",
"previousSong": "poprzedni $t(entity.track_one)",
"previousSong": "poprzedni $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "kolejka zwróciła brak wyników",
"quit": "wyjdź",
"expand": "rozszerz",
@@ -113,7 +115,7 @@
"biography": "biografia",
"backward": "wstecz",
"left": "lewo",
"currentSong": "obecnie $t(entity.track_one)",
"currentSong": "obecnie $t(entity.track, {\"count\": 1})",
"collapse": "zwiń",
"gap": "luka",
"manage": "zarządzaj",
@@ -199,7 +201,7 @@
"folder_one": "katalog",
"folder_few": "katalogi",
"folder_many": "katalogów",
"smartPlaylist": "inteligentna $t(entity.playlist_one)",
"smartPlaylist": "inteligentna $t(entity.playlist, {\"count\": 1})",
"album_one": "album",
"album_few": "albumy",
"album_many": "albumów",
@@ -271,7 +273,7 @@
"communityRating": "ocena społeczności",
"path": "ścieżka",
"favorited": "ulubione",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "było niedawno odtwarzane",
"isFavorited": "jest ulubione",
"bpm": "bpm",
@@ -279,7 +281,7 @@
"disc": "płyta",
"biography": "biografia",
"songCount": "liczba utworów",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "długość",
"random": "losowy",
"lastPlayed": "ostatnio odtwarzane",
@@ -289,27 +291,28 @@
"trackNumber": "utwór",
"comment": "komentarz",
"recentlyUpdated": "ostatnio aktualizowane",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"owner": "$t(common.owner)",
"genre": "$t(entity.genre_one)",
"albumCount": "liczba $t(entity.album_other)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumCount": "liczba $t(entity.album, {\"count\": 2})",
"id": "id",
"isPublic": "jest publiczny",
"album": "$t(entity.album_one)",
"explicitStatus": "$t(common.explicitStatus)"
"album": "$t(entity.album, {\"count\": 1})",
"explicitStatus": "$t(common.explicitStatus)",
"sortName": "sortowanie po nazwie"
},
"form": {
"deletePlaylist": {
"title": "usuń $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) usunięto pomyślnie",
"input_confirm": "wpisz nazwę $t(entity.playlist_one) aby potwierdzić"
"title": "usuń $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) usunięta pomyślnie",
"input_confirm": "wpisz nazwę $t(entity.playlist, {\"count\": 1}) aby potwierdzić"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "utwórz $t(entity.playlist_one)",
"title": "utwórz $t(entity.playlist, {\"count\": 1})",
"input_public": "publiczny",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) utworzono pomyślnie",
"success": "$t(entity.playlist, {\"count\": 1}) utworzona pomyślnie",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -332,11 +335,11 @@
},
"addToPlaylist": {
"success": "dodano $t(entity.trackWithCount, {\"count\": {{message}} }) do $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "dodano do $t(entity.playlist_one)",
"title": "dodano do $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "pomiń duplikaty",
"input_playlists": "$t(entity.playlist_other)",
"create": "utwórz $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "wyszukaj $t(entity.playlist_other) lub wpisz, aby utworzyć nową"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "utwórz $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "wyszukaj $t(entity.playlist, {\"count\": 2}) lub wpisz, aby utworzyć nową"
},
"updateServer": {
"title": "uaktualnij serwer",
@@ -353,12 +356,12 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "wyszukiwanie tekstów"
},
"editPlaylist": {
"title": "edytuj $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) zaktualizowana pomyślnie",
"title": "edytuj $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) zaktualizowana pomyślnie",
"publicJellyfinNote": "Z jakiegoś powodu Jellyfin nie udostępnia informacji na temat publiczności playlisty. Jeżeli chcesz, aby ta pozostała publiczna, mniej wybraną poniższą opcję",
"editNote": "manualne edytowanie nie jest zalecane dla dużych playlist. czy na pewno zgadzasz się na ryzyko utraty danych wywołane przez nadpisanie istniejącej playlisty?"
},
@@ -381,7 +384,7 @@
},
"shuffleAll": {
"title": "odtwarzaj losowo",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "ile piosenek?",
"input_minYear": "z roku",
"input_maxYear": "do roku",
@@ -433,7 +436,7 @@
"appMenu": {
"selectServer": "wybierz serwer",
"version": "wersja {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "zarządzaj serwerami",
"expandSidebar": "rozwiń pasek boczny",
"collapseSidebar": "zwiń pasek boczny",
@@ -471,45 +474,45 @@
"playShuffled": "$t(player.shuffle)",
"playSimilarSongs": "$t(player.playSimilarSongs)",
"moveToNext": "$t(action.moveToNext)",
"goToAlbum": "przejdź do $t(entity.album_one)",
"goToAlbumArtist": "przejdź do $t(entity.albumArtist_one)",
"goToAlbum": "przejdź do $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "przejdź do $t(entity.albumArtist, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "przejdź do"
},
"albumDetail": {
"moreFromArtist": "więcej od $t(entity.artist_one)",
"moreFromArtist": "więcej od $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "więcej od {{item}}",
"released": "wydany"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "pokaż $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "pokaż $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "pokaż $t(entity.album, {\"count\": 2}) $t(entity.genre, {\"count\": 1})",
"showTracks": "pokaż $t(entity.track, {\"count\": 2}) $t(entity.genre, {\"count\": 1})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "albumy wykonawcy {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "$t(entity.album, {\"count\": 2}) \"{{genre}}\""
},
"sidebar": {
"nowPlaying": "teraz odtwarzane",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"shared": "udostępnione $t(entity.playlist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"shared": "udostępniono $t(entity.playlist, {\"count\": 2})",
"myLibrary": "Moja biblioteka",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"home": {
"mostPlayed": "najczęściej odtwarzane",
@@ -518,7 +521,7 @@
"explore": "przeglądaj z biblioteki",
"recentlyPlayed": "ostatnio odtwarzane",
"recentlyReleased": "ostatnio wydane",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"setting": {
"playbackTab": "odtworzenia",
@@ -546,9 +549,9 @@
"lyricsDisplay": "wyświetlanie tekstu"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "utwory przez {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "$t(entity.track, {\"count\": 2}) \"{{genre}}\""
},
"globalSearch": {
"commands": {
@@ -559,7 +562,7 @@
"title": "komendy"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumArtistDetail": {
"topSongs": "popularne utwory",
@@ -568,9 +571,9 @@
"recentReleases": "ostatnie wydania",
"viewAll": "zobacz wszystko",
"viewDiscography": "przeglądaj dyskografię",
"relatedArtists": "powiązane z $t(entity.artist_other)",
"relatedArtists": "powiązane z $t(entity.artist, {\"count\": 2})",
"appearsOn": "pojawia się na",
"viewAllTracks": "zobacz wszystko $t(entity.track_other)",
"viewAllTracks": "zobacz wszystko $t(entity.track, {\"count\": 2})",
"groupingTypeAll": "wszystkie typy wydań",
"groupingTypePrimary": "główne typy wydań"
},
@@ -591,10 +594,10 @@
"reorder": "zmiana kolejności jest możliwa tylko podczas sortowania według id"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "stacje radiowe"
@@ -705,7 +708,7 @@
"applicationHotkeys": "skróty klawiszowe aplikacji",
"hotkey_playbackNext": "następny utwór",
"lyricFetch_description": "pobierz teksty z rozmaitych źródeł internetowych",
"lyricFetchProvider_description": "wybierz dostawców internetowych dla tekstów. zapytania będą wykonywane według podanej kolejności",
"lyricFetchProvider_description": "wybierz dostawców od których pobierane będą teksty",
"globalMediaHotkeys_description": "włącz lub wyłącz używanie systemowych skrótów klawiszowych do kontroli odtwarzania",
"customFontPath": "niestandardowa ścieżka czcionki",
"followLyric": "podążaj za tekstem",
@@ -761,8 +764,8 @@
"scrobble_description": "przekazywanie informacji o odtwarzaniu (scrobbling) do twojego serwera multimediów",
"sidePlayQueueStyle": "boczny styl kolejki odtwarzania",
"remoteUsername_description": "ustaw nazwę użytkownika dla serwera zdalnej kontroli. Jeśli nazwa użytkownika i hasło są puste, autoryzacja będzie wyłączona",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"remotePassword_description": "ustawia hasło dla serwera zdalnego sterowania. Te poświadczenia są domyślnie przesyłane w sposób niezabezpieczony, dlatego należy użyć unikalnego hasła na którym ci nie zależy",
"showSkipButtons_description": "pokaż lub ukryj przyciski pomijania na pasku odtwarzacza",
"showSkipButton_description": "pokaż lub ukryj przyciski pomijania na pasku odtwarzacza",
@@ -973,7 +976,15 @@
"pathReplace": "zamiana ścieżki pliku",
"pathReplace_description": "zamień domyślną ścieżkę pliku twojego serwera",
"pathReplace_optionRemovePrefix": "usuń prefix",
"pathReplace_optionAddPrefix": "dodaj prefix"
"pathReplace_optionAddPrefix": "dodaj prefix",
"homeFeatureStyle_description": "kontroluje styl karuzeli polecanych na stronie głównej",
"homeFeatureStyle": "Styl karuzeli polecanych na stronie głównej",
"homeFeatureStyle_optionMultiple": "wiele",
"homeFeatureStyle_optionSingle": "jeden",
"enableGridMultiSelect_description": "gdy włączone, pozwala na wybieranie wielu elementów w widokach siatki, gdy wyłączone, klikanie obrazów elementów siatki będzie przenosić na stronę elementu",
"enableGridMultiSelect": "wybieranie wielu w siatce",
"sidebarPlaylistSorting_description": "pozwala na ręczne sortowanie playlist w bocznym pasku używając przeciągania i upuszczania zamiast używania domyślnej kolejności serwera",
"sidebarPlaylistSorting": "sortowanie playlist w bocznym pasku"
},
"table": {
"config": {
@@ -1011,7 +1022,8 @@
"alternateRowColors": "naprzemienne kolory wierszy",
"horizontalBorders": "obwódki wierszy",
"rowHoverHighlight": "podświetlanie wierszy po najechaniu",
"verticalBorders": "obwódki kolumn"
"verticalBorders": "obwódki kolumn",
"showHeader": "pokaż nagłówek"
},
"label": {
"releaseDate": "data premiery",
@@ -1025,25 +1037,25 @@
"trackNumber": "numer utworu",
"rowIndex": "indeks wiersza",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"playCount": "liczba odtworzeń",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"actions": "$t(common.action, {\"count\": 2})",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "numer płyty",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)",
"albumCount": "$t(entity.album_other)",
"genreBadge": "$t(entity.genre_one) (znaczki)",
"songCount": "$t(entity.track, {\"count\": 2})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (znaczki)",
"image": "obraz",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)",
@@ -1057,7 +1069,7 @@
"rating": "ocena",
"favorite": "ulubione",
"playCount": "odtwarzane",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "rok",
"lastPlayed": "ostatnio odtwarzane",
"biography": "biografia",
@@ -1066,14 +1078,14 @@
"title": "tytuł",
"bpm": "bpm",
"dateAdded": "data dodania",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "utwór",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "wykonawca albumu",
"path": "ścieżka",
"discNumber": "płyta",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"size": "$t(common.size)",
"codec": "$t(common.codec)",
"owner": "właściciel",
@@ -1087,7 +1099,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "broadcast",
"ep": "ep",
"other": "inne",
+64 -62
View File
@@ -14,7 +14,7 @@
"bpm": "BPM",
"edit": "editar",
"favorite": "favorito",
"currentSong": "$t(entity.track_one) atual",
"currentSong": "$t(entity.track, {\"count\": 1}) atual",
"descending": "abaixar",
"dismiss": "liberar",
"duration": "duração",
@@ -58,7 +58,9 @@
"owner": "dono",
"forward": "para frente",
"forceRestartRequired": "reinicie para aplicar as alterações… feche a notificação para reiniciar",
"setting": "configuração",
"setting_one": "configuração",
"setting_many": "",
"setting_other": "",
"version": "versão",
"filter_one": "filtro",
"filter_many": "filtros",
@@ -72,7 +74,7 @@
"none": "nenhum",
"menu": "menu",
"restartRequired": "é necessário reiniciar",
"previousSong": "anterior $t(entity.track_one)",
"previousSong": "anterior $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "a consulta não retornou resultados",
"quit": "sair",
"search": "procurar",
@@ -101,21 +103,21 @@
},
"action": {
"goToPage": "vá para página",
"addToFavorites": "adicionar em $t(entity.favorite_other)",
"viewPlaylists": "ver $t(entity.playlist_other)",
"addToFavorites": "adicionar em $t(entity.favorite, {\"count\": 2})",
"viewPlaylists": "ver $t(entity.playlist, {\"count\": 2})",
"setRating": "definir classificação",
"moveToTop": "mover para o topo",
"refresh": "$t(common.refresh)",
"removeFromQueue": "remover da fila",
"moveToBottom": "mover para baixo",
"editPlaylist": "editar $t(entity.playlist_one)",
"editPlaylist": "editar $t(entity.playlist, {\"count\": 1})",
"clearQueue": "Limpar fila",
"addToPlaylist": "adicionar à $t(entity.playlist_one)",
"createPlaylist": "Criar $t(entity.playlist_one)",
"removeFromPlaylist": "remover da $t(entity.playlist_one)",
"deletePlaylist": "deletar $t(entity.playlist_one)",
"addToPlaylist": "adicionar à $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "Criar $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "remover da $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "deletar $t(entity.playlist, {\"count\": 1})",
"deselectAll": "desmarcar todos",
"removeFromFavorites": "remover de $t(entity.favorite_other)",
"removeFromFavorites": "remover de $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "Abrir em Last.fm",
"musicbrainz": "Abrir em MusicBrainz"
@@ -125,9 +127,9 @@
},
"form": {
"deletePlaylist": {
"title": "deletar $t(entity.playlist_one)",
"input_confirm": "escreva o nome da $t(entity.playlist_one) para confirmar",
"success": "$t(entity.playlist_one) deletada com sucesso"
"title": "deletar $t(entity.playlist, {\"count\": 1})",
"input_confirm": "escreva o nome da $t(entity.playlist, {\"count\": 1}) para confirmar",
"success": "$t(entity.playlist, {\"count\": 1}) deletada com sucesso"
},
"addServer": {
"title": "adicionar servidor",
@@ -145,10 +147,10 @@
"input_preferInstantMixDescription": "Usar apenas a mixagem instantânea para obter músicas semelhantes. Útil se você tiver plugins que modificam esse comportamento"
},
"createPlaylist": {
"title": "criar $t(entity.playlist_one)",
"title": "criar $t(entity.playlist, {\"count\": 1})",
"input_public": "público",
"input_description": "$t(common.description)",
"success": "$t(entity.playlist_one) criada com sucesso",
"success": "$t(entity.playlist, {\"count\": 1}) criada com sucesso",
"input_owner": "$t(common.owner)",
"input_name": "$t(common.name)"
},
@@ -157,19 +159,19 @@
"success": "servidor atualizado com sucesso"
},
"editPlaylist": {
"title": "editar $t(entity.playlist_one)",
"title": "editar $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "O Jellyfin por algum motivo não expõe se uma playlist é pública ou não. Se você deseja que ela permaneça pública, por favor selecione a seguinte entrada",
"success": "$t(entity.playlist_one) atualizada com sucesso"
"success": "$t(entity.playlist, {\"count\": 1}) atualizada com sucesso"
},
"addToPlaylist": {
"title": "adicionar à $t(entity.playlist_one)",
"input_playlists": "$t(entity.playlist_other)",
"title": "adicionar à $t(entity.playlist, {\"count\": 1})",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "pular duplicadas",
"success": "adicionado $t(entity.trackWithCount, {\"count\": {{message}} }) para $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })"
},
"lyricSearch": {
"title": "pesquisa de letras",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)"
},
"shareItem": {
@@ -370,9 +372,9 @@
"replayGainFallback_description": "Ganho em dB a ser aplicado se o arquivo não tiver tags de {{ReplayGain}}",
"replayGainMode": "Modo {{ReplayGain}}",
"replayGainMode_description": "Ajustar o ganho de volume de acordo com os valores de {{ReplayGain}} armazenados nos metadados do arquivo",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainPreamp": "Pré-amplificador {{ReplayGain}} (dB)",
"replayGainPreamp_description": "Ajustar o ganho do pré-amplificador aplicado aos valores de {{ReplayGain}}",
"sampleRate": "Taxa de amostragem (sample rate)",
@@ -448,9 +450,9 @@
"titleCombined": "$t(common.title) (combinado)",
"discNumber": "numero do disco",
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"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)",
@@ -459,7 +461,7 @@
"dateAdded": "Data de adição",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "Última reprodução",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
@@ -469,7 +471,7 @@
"releaseDate": "Data de lançamento",
"rowIndex": "Índice da linha",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "Número da faixa",
"year": "$t(common.year)"
},
@@ -495,8 +497,8 @@
"size": "$t(common.size)",
"album": "Álbum",
"albumArtist": "Artista do álbum",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "Biografia",
"bitrate": "Taxa de bits",
"bpm": "BPM",
@@ -505,14 +507,14 @@
"comment": "Comentário",
"dateAdded": "Data adicionada",
"favorite": "Favorito",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "Último tocado",
"path": "Caminho",
"playCount": "Tocados",
"rating": "Avaliação",
"releaseDate": "Data de lançamento",
"releaseYear": "Ano",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "Faixa"
}
},
@@ -526,17 +528,17 @@
"recentlyReleased": "Lançamentos recentes"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showTracks": "mostrar $t(entity.genre_one) $t(entity.track_other)",
"showAlbums": "mostrar $t(entity.genre_one) $t(entity.album_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showTracks": "mostrar $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"showAlbums": "mostrar $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "faixas de {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"title": "comandos",
@@ -548,26 +550,26 @@
},
"sidebar": {
"home": "$t(common.home)",
"tracks": "$t(entity.track_other)",
"shared": "$t(entity.playlist_other) compartilhada",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"artists": "$t(entity.artist_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) compartilhada",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"nowPlaying": "tocando agora",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"myLibrary": "minha biblioteca"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "álbuns de {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"appMenu": {
"openBrowserDevtools": "abrir ferramentas do desenvolvedor",
@@ -579,7 +581,7 @@
"goForward": "avançar",
"version": "versão {{version}}",
"manageServers": "gerenciar servidores",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"privateModeOff": "Desativar modo privado",
"privateModeOn": "Ativar modo privado"
},
@@ -606,15 +608,15 @@
"moveToNext": "$t(action.moveToNext)",
"removeFromPlaylist": "$t(action.removeFromPlaylist)",
"setRating": "$t(action.setRating)",
"goToAlbum": "Ir para $t(entity.album_one)",
"goToAlbumArtist": "Ir para $t(entity.albumArtist_one)"
"goToAlbum": "Ir para $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "Ir para $t(entity.albumArtist, {\"count\": 1})"
},
"albumArtistDetail": {
"viewAllTracks": "ver todas as $t(entity.track_other)",
"viewAllTracks": "ver todas as $t(entity.track, {\"count\": 2})",
"appearsOn": "aparece em",
"recentReleases": "lançamentos recentes",
"viewDiscography": "ver discografia",
"relatedArtists": "$t(entity.artist_other) relacionados",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) relacionados",
"viewAll": "ver tudo",
"topSongsFrom": "músicas mais tocadas de {{title}}",
"topSongs": "músicas mais tocadas",
@@ -644,7 +646,7 @@
"noLyrics": "nenhuma letra encontrada"
},
"albumDetail": {
"moreFromArtist": "mais deste $t(entity.artist_one)",
"moreFromArtist": "mais deste $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "mais de {{item}}",
"released": "lançado"
},
@@ -676,7 +678,7 @@
"title": "titulo",
"disc": "disco",
"mostPlayed": "mais tocado",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"name": "nome",
"biography": "bibliografia",
"duration": "duração",
@@ -695,7 +697,7 @@
"recentlyUpdated": "atualizado recentemente",
"dateAdded": "data de adição",
"isRecentlyPlayed": "foi tocado recentemente",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"recentlyAdded": "adicionado recentemente",
"releaseDate": "data de lançamento",
"recentlyPlayed": "tocado recentemente",
@@ -703,7 +705,7 @@
"isFavorited": "é favoritado",
"releaseYear": "ano de lançamento",
"rating": "avaliação",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"bpm": "bpm",
"channels": "$t(common.channel_other)",
"comment": "comentário",
@@ -713,8 +715,8 @@
"bitrate": "bitrate",
"isRated": "possui avaliação",
"note": "nota",
"albumCount": "número de $t(entity.album_other)",
"genre": "$t(entity.genre_one)"
"albumCount": "número de $t(entity.album, {\"count\": 2})",
"genre": "$t(entity.genre, {\"count\": 1})"
},
"player": {
"playbackFetchNoResults": "nenhuma música encontrada",
@@ -795,7 +797,7 @@
"track_one": "faixa",
"track_many": "faixas",
"track_other": "faixas",
"smartPlaylist": "$t(entity.playlist_one) inteligente",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) inteligente",
"song_one": "música",
"song_many": "músicas",
"song_other": "músicas",
+51 -49
View File
@@ -1,23 +1,23 @@
{
"action": {
"addToFavorites": "adicionar a $t(entity.favorite_other)",
"addToPlaylist": "adicionar a $t(entity.playlist_one)",
"addToFavorites": "adicionar a $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "adicionar a $t(entity.playlist, {\"count\": 1})",
"clearQueue": "limpar fila",
"createPlaylist": "criar $t(entity.playlist_one)",
"deletePlaylist": "apagar $t(entity.playlist_one)",
"createPlaylist": "criar $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "apagar $t(entity.playlist, {\"count\": 1})",
"deselectAll": "desmarcar todos",
"editPlaylist": "editar $t(entity.playlist_one)",
"editPlaylist": "editar $t(entity.playlist, {\"count\": 1})",
"goToPage": "vá para página",
"moveToNext": "mover para o próximo",
"moveToBottom": "mover para baixo",
"moveToTop": "mover para o topo",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "remover de $t(entity.favorite_other)",
"removeFromPlaylist": "remover da $t(entity.playlist_one)",
"removeFromFavorites": "remover de $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "remover da $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "remover da fila",
"setRating": "definir classificação",
"toggleSmartPlaylistEditor": "alternar editor $t(entity.smartPlaylist)",
"viewPlaylists": "ver $t(entity.playlist_other)",
"viewPlaylists": "ver $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "Abrir em Last.fm",
"musicbrainz": "Abrir em MusicBrainz"
@@ -52,7 +52,7 @@
"configure": "configurar",
"confirm": "confirmar",
"create": "criar",
"currentSong": "$t(entity.track_one) atual",
"currentSong": "$t(entity.track, {\"count\": 1}) atual",
"decrease": "diminuir",
"delete": "apagar",
"descending": "abaixar",
@@ -92,7 +92,7 @@
"path": "caminho",
"playerMustBePaused": "o player deve estar pausado",
"preview": "pré-visualizar",
"previousSong": "anterior $t(entity.track_one)",
"previousSong": "anterior $t(entity.track, {\"count\": 1})",
"quit": "sair",
"random": "aleatório",
"rating": "classificação",
@@ -106,7 +106,9 @@
"saveAndReplace": "gravar e substituir",
"saveAs": "gravar como",
"search": "procurar",
"setting": "configuração",
"setting_one": "configuração",
"setting_many": "",
"setting_other": "",
"share": "partilhar",
"size": "tamanho",
"sortOrder": "ordem",
@@ -164,7 +166,7 @@
"playlistWithCount_one": "{{count}} playlist",
"playlistWithCount_many": "{{count}} playlists",
"playlistWithCount_other": "{{count}} playlists",
"smartPlaylist": "$t(entity.playlist_one) inteligente",
"smartPlaylist": "$t(entity.playlist, {\"count\": 1}) inteligente",
"track_one": "faixa",
"track_many": "faixas",
"track_other": "faixas",
@@ -201,10 +203,10 @@
"systemFontError": "ocorreu um erro ao tentar obter fontes do sistema"
},
"filter": {
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumCount": "número de $t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"albumCount": "número de $t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "bibliografia",
"bitrate": "bitrate",
"bpm": "bpm",
@@ -217,7 +219,7 @@
"duration": "duração",
"favorited": "favoritado",
"fromYear": "a partir do ano",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "id",
"isCompilation": "é compilação",
"isFavorited": "é favoritado",
@@ -259,31 +261,31 @@
"title": "adicionar servidor"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "pular duplicadas",
"success": "adicionado $t(entity.trackWithCount, {\"count\": {{message}} }) para $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "adicionar à $t(entity.playlist_one)"
"title": "adicionar à $t(entity.playlist, {\"count\": 1})"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "público",
"success": "$t(entity.playlist_one) criada com sucesso",
"title": "criar $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) criada com sucesso",
"title": "criar $t(entity.playlist, {\"count\": 1})"
},
"deletePlaylist": {
"input_confirm": "escreva o nome da $t(entity.playlist_one) para confirmar",
"success": "$t(entity.playlist_one) apagada com sucesso",
"title": "apagar $t(entity.playlist_one)"
"input_confirm": "escreva o nome da $t(entity.playlist, {\"count\": 1}) para confirmar",
"success": "$t(entity.playlist, {\"count\": 1}) apagada com sucesso",
"title": "apagar $t(entity.playlist, {\"count\": 1})"
},
"editPlaylist": {
"publicJellyfinNote": "O Jellyfin por algum motivo não expõe se uma playlist é pública ou não. Se deseja que ela permaneça pública, por favor selecione a seguinte entrada",
"success": "$t(entity.playlist_one) atualizada com sucesso",
"title": "editar $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) atualizada com sucesso",
"title": "editar $t(entity.playlist, {\"count\": 1})"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "pesquisa de letras"
},
@@ -310,24 +312,24 @@
"appearsOn": "aparece em",
"recentReleases": "lançamentos recentes",
"viewDiscography": "ver discografia",
"relatedArtists": "$t(entity.artist_other) relacionados",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) relacionados",
"topSongs": "músicas mais tocadas",
"topSongsFrom": "músicas mais tocadas de {{title}}",
"viewAll": "ver tudo",
"viewAllTracks": "ver todas as $t(entity.track_other)"
"viewAllTracks": "ver todas as $t(entity.track, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "mais deste $t(entity.artist_one)",
"moreFromArtist": "mais deste $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "mais que {{item}}",
"released": "lançado"
},
"albumList": {
"artistAlbums": "álbuns de {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"appMenu": {
"collapseSidebar": "recolher barra lateral",
@@ -338,7 +340,7 @@
"openBrowserDevtools": "abrir ferramentas do programador",
"quit": "$t(common.quit)",
"selectServer": "selecionar servidor",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "versão {{version}}"
},
"manageServers": {
@@ -397,9 +399,9 @@
"noLyrics": "nenhuma letra encontrada"
},
"genreList": {
"showAlbums": "mostrar $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "mostrar $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "mostrar $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "mostrar $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -425,7 +427,7 @@
"reorder": "reordenar apenas disponível quando ordenado pelo id"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "avançado",
@@ -435,24 +437,24 @@
"windowTab": "janela"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"myLibrary": "a minha biblioteca",
"nowPlaying": "agora a tocar",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "$t(entity.playlist_other) partilhada",
"tracks": "$t(entity.track_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) partilhada",
"tracks": "$t(entity.track, {\"count\": 2})"
},
"trackList": {
"artistTracks": "faixas de {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
}
},
"player": {
+155 -75
View File
@@ -1,30 +1,30 @@
{
"action": {
"editPlaylist": "редактировать $t(entity.playlist_one)",
"editPlaylist": "редактировать $t(entity.playlist, {\"count\": 1})",
"goToPage": "перейти на страницу",
"moveToTop": "вверх",
"clearQueue": "очистить очередь",
"addToFavorites": "добавить в $t(entity.favorite_other)",
"addToPlaylist": "добавить в $t(entity.playlist_one)",
"createPlaylist": "создать $t(entity.playlist_one)",
"removeFromPlaylist": "удалить из $t(entity.playlist_one)",
"viewPlaylists": "показать $t(entity.playlist_other)",
"addToFavorites": "добавить в $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "добавить в $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "создать $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "удалить из $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "показать $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "удалить $t(entity.playlist_one)",
"deletePlaylist": "удалить $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "удалить из очереди",
"deselectAll": "снять выделение",
"moveToBottom": "вниз",
"setRating": "оценить",
"toggleSmartPlaylistEditor": "вкл./откл. редактор $t(entity.smartPlaylist)",
"removeFromFavorites": "удалить из $t(entity.favorite_other)",
"removeFromFavorites": "удалить из $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "открыть на Last.fm",
"musicbrainz": "открыть на MusicBrainz"
},
"moveToNext": "следующий",
"addOrRemoveFromSelection": "добавить или удалить из выделения",
"createRadioStation": "создать $t(entity.radioStation_one)",
"deleteRadioStation": "удалить $t(entity.radioStation_one)",
"createRadioStation": "создать $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "удалить $t(entity.radioStation, {\"count\": 1})",
"selectAll": "выделить все",
"downloadStarted": "Начата загрузка {{count}} предметов",
"moveUp": "перейти наверх",
@@ -36,7 +36,8 @@
"shuffleAll": "перемешать все",
"shuffleSelected": "Смешать выбранное",
"viewMore": "Посмотреть больше",
"openApplicationDirectory": "открыть папку приложения"
"openApplicationDirectory": "открыть папку приложения",
"selectRangeOfItems": "выбрать диапазон элементов"
},
"common": {
"backward": "назад",
@@ -51,7 +52,7 @@
"left": "лево",
"save": "сохранить",
"right": "право",
"currentSong": "текущий $t(entity.track_one)",
"currentSong": "текущий $t(entity.track, {\"count\": 1})",
"collapse": "закрыть",
"trackNumber": "трек",
"descending": "по убыванию",
@@ -83,8 +84,8 @@
"forceRestartRequired": "перезапустите приложение, чтобы применить изменения... закройте уведомление для перезапуска",
"setting": "настройка",
"setting_one": "настройка",
"setting_few": "",
"setting_many": "",
"setting_few": "настройки",
"setting_many": "настроек",
"version": "версия",
"title": "название",
"filter_one": "фильтр",
@@ -110,7 +111,7 @@
"sortOrder": "порядок",
"menu": "меню",
"restartRequired": "необходим перезапуск приложения",
"previousSong": "предыдущий $t(entity.track_one)",
"previousSong": "предыдущий $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "ничего не найдено",
"quit": "выйти",
"expand": "раскрыть",
@@ -155,7 +156,14 @@
"sort": "сортировать",
"clean": "очистить",
"gridRows": "Строки в сетке",
"tableColumns": "Столбцы таблицы"
"tableColumns": "Столбцы таблицы",
"doNotShowAgain": "не показывать снова",
"itemsMore": "{{count}} более",
"view": "посмотреть",
"example": "пример",
"rename": "переименовать",
"explicit": "нецензурная лексика",
"externalLinks": "внешние ссылки"
},
"entity": {
"album_one": "альбом",
@@ -204,7 +212,7 @@
"folder_one": "папка",
"folder_few": "папки",
"folder_many": "папок",
"smartPlaylist": "умный $t(entity.playlist_one)",
"smartPlaylist": "умный $t(entity.playlist, {\"count\": 1})",
"genreWithCount_one": "{{count}} жанр",
"genreWithCount_few": "{{count}} жанра",
"genreWithCount_many": "{{count}} жанров",
@@ -245,8 +253,8 @@
"trackNumber": "номер трека",
"rowIndex": "номер строки",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
@@ -255,13 +263,14 @@
"playCount": "количество воспроизведений",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "номер диска",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)"
"songCount": "$t(entity.track, {\"count\": 2})",
"titleArtist": "$t(common.title) (артист)"
}
},
"column": {
@@ -272,9 +281,9 @@
"lastPlayed": "последний",
"releaseDate": "дата выхода",
"title": "название",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "трек",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"path": "путь",
"discNumber": "диск",
"size": "$t(common.size)",
@@ -284,8 +293,8 @@
"biography": "биография",
"codec": "$t(common.codec)",
"comment": "комментарий",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"bitrate": "битрейт",
"channels": "$t(common.channel_other)",
"bpm": "bpm"
@@ -329,12 +338,12 @@
"dateAdded": "дата добавления",
"communityRating": "рейтинг сообщества",
"favorited": "любимый",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isFavorited": "любимые",
"bpm": "уд./мин.",
"disc": "диск",
"biography": "биография",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "длительность",
"fromYear": "год",
"criticRating": "рейтинг критиков",
@@ -348,12 +357,12 @@
"title": "название",
"rating": "рейтинг",
"search": "поиск",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "недавно добавленные",
"note": "заметка",
"name": "название",
"releaseDate": "дата выхода",
"albumCount": "количество $t(entity.album_other)",
"albumCount": "количество $t(entity.album, {\"count\": 2})",
"path": "путь",
"isRecentlyPlayed": "недавно проигрывался",
"releaseYear": "год выхода",
@@ -363,7 +372,7 @@
"random": "случайно",
"lastPlayed": "последний раз проигрывалась",
"toYear": "до года",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "трек"
},
"player": {
@@ -397,23 +406,32 @@
"addLast": "последний",
"mute": "отключить звук",
"skip_forward": "вперёд",
"viewQueue": "показать очередь"
"viewQueue": "показать очередь",
"addLastShuffled": "последний (смешанный)",
"addNextShuffled": "следующий (смешанный)",
"artistRadio": "Радио артист",
"holdToShuffle": "удержать для смешивания",
"lyrics": "тексты песен",
"restoreQueueFromServer": "восстановить очередь с сервера",
"saveQueueToServer": "сохранить очередь на сервер",
"trackRadio": "трек радио"
},
"page": {
"sidebar": {
"nowPlaying": "сейчас играет",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"myLibrary": "Моя библиотека",
"shared": "Публичные плейлисты $t(entity.playlist_other)"
"shared": "Публичные плейлисты $t(entity.playlist, {\"count\": 2})",
"collections": "коллекции"
},
"fullscreenPlayer": {
"config": {
@@ -441,7 +459,7 @@
"appMenu": {
"selectServer": "список серверов",
"version": "версия {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "редактировать список серверов",
"expandSidebar": "развернуть боковую панель",
"collapseSidebar": "Скрыть боковую панель",
@@ -453,7 +471,8 @@
"privateModeOn": "Включить приватный режим",
"selectMusicFolder": "выбрать папку с музыкой",
"noMusicFolder": "папка с музыкой не выбрана",
"multipleMusicFolders": "{{count}} выбрано музыкальных папок"
"multipleMusicFolders": "{{count}} выбрано музыкальных папок",
"commandPalette": "открыть командную строку"
},
"manageServers": {
"title": "сервера",
@@ -483,8 +502,8 @@
"removeFromQueue": "$t(action.removeFromQueue)",
"showDetails": "получить информацию",
"shareItem": "поделиться",
"goToAlbum": "Перейти к $t(entity.album_one)",
"goToAlbumArtist": "Перейти к $t(entity.albumArtist_one)",
"goToAlbum": "Перейти к $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "Перейти к $t(entity.albumArtist, {\"count\": 1})",
"goTo": "перейти в"
},
"home": {
@@ -496,7 +515,7 @@
"recentlyReleased": "Новинки"
},
"albumDetail": {
"moreFromArtist": "больше от $t(entity.artist_one)",
"moreFromArtist": "больше от $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "больше из {{item}}",
"released": "выпущен"
},
@@ -518,19 +537,22 @@
"audio": "аудио",
"lyrics": "тексты песен",
"lyricsDisplay": "отображение текстов песен",
"transcoding": "транскодирование"
"transcoding": "транскодирование",
"scrobble": "скробблер",
"logger": "Отладка",
"playerFilters": "фильтры проигрывателя"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "показать $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "показать $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "показать $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "показать $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"artistTracks": "Треки {{artist}}"
},
"globalSearch": {
@@ -545,20 +567,20 @@
"reorder": "сортировка доступна только по ID"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "альбомы {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"albumArtistDetail": {
"topSongs": "популярные треки",
"viewAll": "посмотреть всё",
"appearsOn": "появляется в",
"viewDiscography": "посмотреть дискографию",
"relatedArtists": "похож на $t(entity.artist_other)",
"viewAllTracks": "посмотреть все $t(entity.track_other)",
"relatedArtists": "похож на $t(entity.artist, {\"count\": 2})",
"viewAllTracks": "посмотреть все $t(entity.track, {\"count\": 2})",
"recentReleases": "недавние релизы",
"about": "О {{artist}}",
"topSongsFrom": "популярные треки из {{title}}",
@@ -572,20 +594,26 @@
},
"radioList": {
"title": "радиостанции"
},
"windowBar": {
"privateMode": "(Режим приватности)"
},
"collections": {
"saveAsCollection": "сохранить коллекцией"
}
},
"form": {
"deletePlaylist": {
"title": "удалить $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) успешно удалён",
"input_confirm": "напишите название $t(entity.playlist_one) для подтверждения"
"title": "удалить $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) успешно удалён",
"input_confirm": "напишите название $t(entity.playlist, {\"count\": 1}) для подтверждения"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "создать $t(entity.playlist_one)",
"title": "создать $t(entity.playlist, {\"count\": 1})",
"input_public": "публичный",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) успешно создан",
"success": "$t(entity.playlist, {\"count\": 1}) успешно создан",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -608,11 +636,11 @@
},
"addToPlaylist": {
"success": "добавлено: $t(entity.trackWithCount, {\"count\": {{message}} }) в $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "добавить в $t(entity.playlist_one)",
"title": "добавить в $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "не добавлять дубликаты",
"input_playlists": "$t(entity.playlist_other)",
"create": "создать $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "для создания нового списка выполните поиск по $t(entity.playlist_other) или введите соответствующий текст"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "создать $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "для создания нового списка выполните поиск по $t(entity.playlist, {\"count\": 2}) или введите соответствующий текст"
},
"updateServer": {
"title": "обновление сервера",
@@ -629,12 +657,12 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "поиск слов песни"
},
"editPlaylist": {
"title": "редактировать $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) обновлён успешно",
"title": "редактировать $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) обновлён успешно",
"publicJellyfinNote": "Jellyfin по какой-то причине не предоставляет информацию о том, публичный плейлист или нет. Если вы хотите, чтобы он остался публичным, выберите следующую опцию",
"editNote": "редактирование больших плейлистов вручную не рекомендуется. Вы уверены, что готовы принять риск потери данных, который может возникнуть в результате перезаписи существующего плейлиста?"
},
@@ -732,9 +760,9 @@
"hotkey_zoomOut": "уменьшить масштаб",
"playbackStyle_optionCrossFade": "затухание",
"replayGainMode": "режим {{ReplayGain}}",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"clearQueryCache_description": "так называемая \"мягкая очистка\" feishin: обновляются плейлисты, метаданные треков, но сохранённые тексты треков сбрасываются. настройки, учётные данные и кэшированные изображения сохраняются",
"hotkey_favoriteCurrentSong": "добавить $t(common.currentSong) в избранное",
"globalMediaHotkeys": "глобальные мультимедийные горячие клавиши",
@@ -878,7 +906,28 @@
"artistBackground": "Фоновое изображение исполнителя",
"artistBackground_description": "Добавляет фоновое изображение для страниц исполнителя, содержащих обложку исполнителя",
"artistBackgroundBlur": "процент размытия обложки исполнителя",
"artistBackgroundBlur_description": "регулирует процент размытия к заднему фону исполнителя"
"artistBackgroundBlur_description": "регулирует процент размытия к заднему фону исполнителя",
"autoDJ_description": "автоматически добавлять похожие песни в очередь воспроизведения",
"autoDJ_itemCount": "количество элементов",
"autoDJ_itemCount_description": "количество элементов, которые пытаются добавить в очередь при включенной функции автоматического диджеинга",
"autoDJ_timing": "расчетное время",
"autoDJ_timing_description": "количество песен, оставшихся в очереди до срабатывания автоматического диджея",
"useThemeAccentColor": "использовать цвет темы",
"useThemeAccentColor_description": "используйте основной цвет определенный в выбранной теме вместо пользовательского акцентного цвета",
"analyticsDisable": "Отказаться от аналитики на основе использования",
"analyticsDisable_description": "Анонимизированные данные об использовании отправляются разработчику для улучшения приложения",
"crossfadeStyle": "стиль перехода",
"customCss_description": "пользовательский CSS-контент. Примечание: свойства content и remote urls не допускаются. Предварительный просмотр вашего контента показан ниже. Дополнительные поля, которые вы не задали, присутствуют из-за проверки на наличие ошибок",
"customCss": "Пользовательский CSS",
"customCssNotice": "Предупреждение: несмотря на некоторую очистку (запрет использования url() и content:), использование пользовательских CSS-стилей всё ещё может представлять риски, изменяя интерфейс",
"releaseChannel_optionBeta": "Бета",
"releaseChannel_optionLatest": "последний",
"releaseChannel": "Тип релиза",
"releaseChannel_description": "Выберите между стабильной или бета версией для автоматического обновления",
"discordDisplayType_artistname": "Имя (имена) исполнителя",
"discordDisplayType_description": "это меняет то, что вы слушаете в своем статусе",
"discordDisplayType_songname": "имя песни",
"discordDisplayType": "{{discord}} тип отображения"
},
"releaseType": {
"secondary": {
@@ -887,10 +936,16 @@
"compilation": "подборка",
"interview": "интервью",
"remix": "ремикс",
"live": "прямой эфир"
"live": "прямой эфир",
"soundtrack": "саундтрек",
"spokenWord": "Художественная декламация",
"audioDrama": "радиопостановка"
},
"primary": {
"other": "другие"
"other": "другие",
"broadcast": "транслировать",
"ep": "эп",
"single": "сингл"
}
},
"datetime": {
@@ -919,5 +974,30 @@
"notInPlaylist": "не в",
"notInTheLast": "не в последнем",
"startsWith": "начинается с"
},
"queryBuilder": {
"standardTags": "стандартные теги",
"customTags": "пользовательские теги"
},
"visualizer": {
"presets": "Пресеты",
"selectPreset": "Выбрать Пресет",
"applyPreset": "Применить Пресет",
"saveAsPreset": "Сохранить пресет",
"updatePreset": "Обновить пресет",
"copyConfiguration": "Копировать Конфигурацию",
"pasteConfiguration": "Вставить Конфигурацию",
"pasteConfigurationPlaceholder": "Вставить JSON конфигурацию",
"pasteFromClipboard": "Вставить из буфера обмена",
"applyConfiguration": "Применить Конфигурацию",
"configCopied": "Конфигурация скопирована в буфер обмена",
"configCopyFailed": "Ошибка применения конфигурации",
"configPasted": "Конфигурация успешно установлена",
"configPasteFailed": "Ошибка применения конфигурации. Проверьте формат.",
"configPasteReadFailed": "Ошибка чтения из буфера обмена",
"presetName": "Название пресета",
"presetNamePlaceholder": "Введите название пресета",
"general": "Главная",
"lineWidth": "Ширина линии"
}
}
+64 -62
View File
@@ -1,23 +1,23 @@
{
"action": {
"addToFavorites": "pridať do $t(entity.favorite_other)",
"addToPlaylist": "pridať do $t(entity.playlist_one)",
"addToFavorites": "pridať do $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "pridať do $t(entity.playlist, {\"count\": 1})",
"clearQueue": "vymazať frontu",
"createPlaylist": "vytvoriť $t(entity.playlist_one)",
"deletePlaylist": "odstrániť $t(entity.playlist_one)",
"createPlaylist": "vytvoriť $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "odstrániť $t(entity.playlist, {\"count\": 1})",
"deselectAll": "odznačiť všetko",
"editPlaylist": "upraviť $t(entity.playlist_one)",
"editPlaylist": "upraviť $t(entity.playlist, {\"count\": 1})",
"goToPage": "ísť na stránku",
"moveToNext": "prejsť na ďalší",
"moveToBottom": "presunúť sa na spodok",
"moveToTop": "presunúť sa navrch",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "odstrániť z $t(entity.favorite_other)",
"removeFromPlaylist": "odstrániť z $t(entity.playlist_one)",
"removeFromFavorites": "odstrániť z $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "odstrániť z $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "odstrániť z fronty",
"setRating": "ohodnotiť",
"toggleSmartPlaylistEditor": "prepnúť $t(entity.smartPlaylist) editor",
"viewPlaylists": "zobraziť $t(entity.playlist_other)",
"viewPlaylists": "zobraziť $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "Otvoriť v Last.fm",
"musicbrainz": "Otvoriť v MusicBrainz"
@@ -54,7 +54,7 @@
"configure": "nastaviť",
"confirm": "potvrdiť",
"create": "vytvoriť",
"currentSong": "aktuálne $t(entity.track_one)",
"currentSong": "aktuálne $t(entity.track, {\"count\": 1})",
"decrease": "znížiť",
"delete": "zmazať",
"descending": "zostupne",
@@ -94,7 +94,7 @@
"path": "cesta",
"playerMustBePaused": "prehrávač musí byť pozastavený",
"preview": "náhľad",
"previousSong": "predchádzajúca $t(entity.track_one)",
"previousSong": "predchádzajúca $t(entity.track, {\"count\": 1})",
"quit": "ukončiť",
"random": "náhodne",
"rating": "hodnotenie",
@@ -109,7 +109,9 @@
"saveAndReplace": "uložiť a nahradiť",
"saveAs": "uložiť ako",
"search": "vyhľadať",
"setting": "nastavenie",
"setting_one": "nastavenie",
"setting_few": "",
"setting_other": "",
"share": "zdieľať",
"size": "veľkosť",
"sortOrder": "poradie",
@@ -126,10 +128,10 @@
},
"filter": {
"name": "meno",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumCount": "$t(entity.album_other) počet",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2}) počet",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "životopis",
"bitrate": "bitrate",
"bpm": "bpm",
@@ -142,7 +144,7 @@
"duration": "dĺžka",
"favorited": "obľúbené",
"fromYear": "od roku",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "id",
"isCompilation": "je kompilácia",
"isFavorited": "je obľúbený",
@@ -183,31 +185,31 @@
"title": "pridať server"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "preskočiť duplicity",
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) pridané do $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "pridať do $t(entity.playlist_one)"
"title": "pridať do $t(entity.playlist, {\"count\": 1})"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "verejný",
"success": "$t(entity.playlist_one) úspešne vytvorený",
"title": "vytvoriť $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) úspešne vytvorený",
"title": "vytvoriť $t(entity.playlist, {\"count\": 1})"
},
"deletePlaylist": {
"input_confirm": "pre potvrdenie zadajte názov $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) bol úspešne odstránený",
"title": "odstrániť $t(entity.playlist_one)"
"input_confirm": "pre potvrdenie zadajte názov $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) bol úspešne odstránený",
"title": "odstrániť $t(entity.playlist, {\"count\": 1})"
},
"editPlaylist": {
"publicJellyfinNote": "Jellyfin z nejakého dôvodu neinformuje, či je playlist verejný alebo nie. Ak si ho želáte ponechať ako verejný, ponechajte nasledujúci vstup ako povolený",
"success": "$t(entity.playlist_one) úspešne aktualizovaný",
"title": "upraviť $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) úspešne aktualizovaný",
"title": "upraviť $t(entity.playlist, {\"count\": 1})"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "vyhľadať text skladby"
},
@@ -277,7 +279,7 @@
"playlistWithCount_one": "{{count}} playlist",
"playlistWithCount_few": "{{count}} playlisty",
"playlistWithCount_other": "{{count}} playlistov",
"smartPlaylist": "smart $t(entity.playlist_one)",
"smartPlaylist": "smart $t(entity.playlist, {\"count\": 1})",
"track_one": "stopa",
"track_few": "stopy",
"track_other": "stôp",
@@ -320,24 +322,24 @@
"appearsOn": "vyskytuje sa na",
"recentReleases": "posledné vydania",
"viewDiscography": "zobraziť diskografiu",
"relatedArtists": "súvisiaci s $t(entity.artist_other)",
"relatedArtists": "súvisiaci s $t(entity.artist, {\"count\": 2})",
"topSongs": "top skladby",
"topSongsFrom": "top skladby z {{title}}",
"viewAll": "zobraziť všetko",
"viewAllTracks": "zobraziť všetky $t(entity.track_other)"
"viewAllTracks": "zobraziť všetky $t(entity.track, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "viac od $t(entity.artist_one)",
"moreFromArtist": "viac od $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "viac z {{item}}",
"released": "vydané"
},
"albumList": {
"artistAlbums": "albumy {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"appMenu": {
"collapseSidebar": "zbaliť bočnú lištu",
@@ -350,7 +352,7 @@
"openBrowserDevtools": "otvoriť vývojárske nástroje prehliadača",
"quit": "$t(common.quit)",
"selectServer": "vybrať server",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "verzia {{version}}"
},
"manageServers": {
@@ -384,8 +386,8 @@
"playShuffled": "$t(player.shuffle)",
"shareItem": "zdieľať položku",
"showDetails": "získať informácie",
"goToAlbum": "choď na $t(entity.album_one)",
"goToAlbumArtist": "choď na $t(entity.albumArtist_one)"
"goToAlbum": "choď na $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "choď na $t(entity.albumArtist, {\"count\": 1})"
},
"fullscreenPlayer": {
"config": {
@@ -411,9 +413,9 @@
"noLyrics": "nenašli sa žiadne texty"
},
"genreList": {
"showAlbums": "zobraziť $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "zobraziť $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "zobraziť $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "zobraziť $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -439,7 +441,7 @@
"reorder": "zmena poradia povolená len pri zoradení podľa id"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "pokročilé",
@@ -449,24 +451,24 @@
"windowTab": "okno"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"myLibrary": "moja knižnica",
"nowPlaying": "teraz hrá",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "zdieľaný $t(entity.playlist_other)",
"tracks": "$t(entity.track_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "zdieľaný $t(entity.playlist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})"
},
"trackList": {
"artistTracks": "skladby {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
}
},
"player": {
@@ -669,9 +671,9 @@
"replayGainFallback_description": "zosilenie v db, ktoré sa aplikuje, ak súbor nemá {{ReplayGain}} štítky",
"replayGainMode": "{{ReplayGain}} režim",
"replayGainMode_description": "pozmení zosilenie hlasitosti podľa hodnôt {{ReplayGain}} uložených v metadátach súboru",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainPreamp": "predzosilenie {{ReplayGain}} dB",
"replayGainPreamp_description": "pozmení predzosilenie použité na hodnoty {{ReplayGain}}",
"sampleRate": "vzorkovacia frekvencia",
@@ -740,8 +742,8 @@
"column": {
"album": "album",
"albumArtist": "interpret albumu",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "životopis",
"bitrate": "bitrate",
"bpm": "bpm",
@@ -751,7 +753,7 @@
"dateAdded": "dátum pridania",
"discNumber": "disk",
"favorite": "obľúbené",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "posledne hraný",
"path": "cesta",
"playCount": "prehratí",
@@ -759,7 +761,7 @@
"releaseDate": "dátum vydania",
"releaseYear": "rok",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "názov",
"trackNumber": "skladba"
},
@@ -776,9 +778,9 @@
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"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)",
@@ -788,7 +790,7 @@
"discNumber": "číslo disku",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "posledne prehraté",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
@@ -798,7 +800,7 @@
"releaseDate": "dátum vydania",
"rowIndex": "číslo riadku",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"titleCombined": "$t(common.title) (kombinovaný)",
"trackNumber": "číslo skladby",
+52 -49
View File
@@ -1,23 +1,23 @@
{
"action": {
"addToFavorites": "dodaj na $t(entity.favorite_other)",
"addToPlaylist": "dodaj na $t(entity.playlist_one)",
"addToFavorites": "dodaj na $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "dodaj na $t(entity.playlist, {\"count\": 1})",
"clearQueue": "počisti čakalno vrsto",
"createPlaylist": "ustvari $t(entity.playlist_one)",
"deletePlaylist": "izbriši $t(entity.playlist_one)",
"createPlaylist": "ustvari $t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "izbriši $t(entity.playlist, {\"count\": 1})",
"deselectAll": "odizberi vse",
"editPlaylist": "uredi $t(entity.playlist_one)",
"editPlaylist": "uredi $t(entity.playlist, {\"count\": 1})",
"goToPage": "pojdi na stran",
"moveToNext": "pojdi na naslednjo",
"moveToBottom": "pojdi na dno",
"moveToTop": "pojdi na vrh",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "odstrani iz $t(entity.favorite_other)",
"removeFromPlaylist": "odstrani iz $t(entity.playlist_one)",
"removeFromFavorites": "odstrani iz $t(entity.favorite, {\"count\": 2})",
"removeFromPlaylist": "odstrani iz $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "odstrani iz čakalne vrste",
"setRating": "nastavi oceno",
"toggleSmartPlaylistEditor": "preklopi urejevalnik $t(entity.smartPlaylist)",
"viewPlaylists": "poglej $t(entity.playlist_other)",
"viewPlaylists": "poglej $t(entity.playlist, {\"count\": 2})",
"openIn": {
"lastfm": "Odpri v Last.fm",
"musicbrainz": "Odpri v MusicBrainz"
@@ -54,7 +54,7 @@
"configure": "prilagodi",
"confirm": "potrdi",
"create": "ustvari",
"currentSong": "trenutna $t(entity.track_one)",
"currentSong": "trenutna $t(entity.track, {\"count\": 1})",
"decrease": "zmanjšaj",
"delete": "izbriši",
"descending": "padajoče",
@@ -94,7 +94,7 @@
"path": "pot",
"playerMustBePaused": "predvajalnik mora biti ustavljen",
"preview": "predogled",
"previousSong": "prejšnja $t(entity.track_one)",
"previousSong": "prejšnja $t(entity.track, {\"count\": 1})",
"quit": "izhod",
"random": "naključno",
"rating": "ocena",
@@ -108,7 +108,10 @@
"saveAndReplace": "shrani in zamenjaj",
"saveAs": "shrani kot",
"search": "išči",
"setting": "nastavitev",
"setting_one": "nastavitev",
"setting_two": "",
"setting_few": "",
"setting_other": "",
"share": "deli",
"size": "velikost",
"sortOrder": "vrstni red",
@@ -181,7 +184,7 @@
"playlistWithCount_two": "{{count}} seznama predvajanja",
"playlistWithCount_few": "{{count}} seznami predvajanja",
"playlistWithCount_other": "{{count}} seznamov predvajanja",
"smartPlaylist": "pametni $t(entity.playlist_one)",
"smartPlaylist": "pametni $t(entity.playlist, {\"count\": 1})",
"track_one": "skladba",
"track_two": "skladbi",
"track_few": "skladbe",
@@ -221,10 +224,10 @@
"systemFontError": "napaka pri pridobivanju sistemskih pisav"
},
"filter": {
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumCount": "število $t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"albumCount": "število $t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biografija",
"bitrate": "bitna hitrost",
"bpm": "bpm",
@@ -237,7 +240,7 @@
"duration": "trajanje",
"favorited": "priljubljeno",
"fromYear": "od leta",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "identifikator",
"isCompilation": "je kompilacija",
"isFavorited": "je dodan med priljubljene",
@@ -279,31 +282,31 @@
"title": "dodaj strežnik"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "preskoči duplikate",
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) dodan v $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "dodaj v $t(entity.playlist_one)"
"title": "dodaj v $t(entity.playlist, {\"count\": 1})"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "javno",
"success": "$t(entity.playlist_one) je bil uspešno ustvarjen",
"title": "ustvari $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) je bil uspešno ustvarjen",
"title": "ustvari $t(entity.playlist, {\"count\": 1})"
},
"deletePlaylist": {
"input_confirm": "vpišite ime $t(entity.playlist_one) za potrditev",
"success": "$t(entity.playlist_one) uspešno izbrisan",
"title": "izbriši $t(entity.playlist_one)"
"input_confirm": "vpišite ime $t(entity.playlist, {\"count\": 1}) za potrditev",
"success": "$t(entity.playlist, {\"count\": 1}) uspešno izbrisan",
"title": "izbriši $t(entity.playlist, {\"count\": 1})"
},
"editPlaylist": {
"publicJellyfinNote": "Jellyfin ne poda informacij o tem, ali gre za javni ali zasebni seznam predvajanja. Če želite, da seznam predvajanja ostane javen, izberite naslednji vnos",
"success": "$t(entity.playlist_one) uspešno posodobljen",
"title": "uredi $t(entity.playlist_one)"
"success": "$t(entity.playlist, {\"count\": 1}) uspešno posodobljen",
"title": "uredi $t(entity.playlist, {\"count\": 1})"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "iskanje po besedilu"
},
@@ -331,24 +334,24 @@
"appearsOn": "se pojavi na",
"recentReleases": "zadnje izdaje",
"viewDiscography": "poglej diskografijo",
"relatedArtists": "sorodni $t(entity.artist_other)",
"relatedArtists": "sorodni $t(entity.artist, {\"count\": 2})",
"topSongs": "najboljše skladbe",
"topSongsFrom": "najboljše skladbe iz {{title}}",
"viewAll": "poglej vse",
"viewAllTracks": "poglej vse $t(entity.track_other)"
"viewAllTracks": "poglej vse $t(entity.track, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "več od $t(entity.artist_one)",
"moreFromArtist": "več od $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "več iz {{item}}",
"released": "izdano"
},
"albumList": {
"artistAlbums": "albumi izvajalca {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
},
"appMenu": {
"collapseSidebar": "skrij stransko vrstico",
@@ -359,7 +362,7 @@
"openBrowserDevtools": "odpri orodja za razvijalce brskalnika",
"quit": "$t(common.quit)",
"selectServer": "izberi strežnik",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "verzija {{version}}"
},
"manageServers": {
@@ -418,9 +421,9 @@
"noLyrics": "ni bilo najdenih besedil"
},
"genreList": {
"showAlbums": "prikaži $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "prikaži $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "prikaži $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "prikaži $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -446,7 +449,7 @@
"reorder": "preurejanje je omogočeno samo pri razvrščanju po identifikatorju"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "napredno",
@@ -456,24 +459,24 @@
"windowTab": "okno"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"myLibrary": "moja knjižnica",
"nowPlaying": "trenutno se predvaja",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "deljen $t(entity.playlist_other)",
"tracks": "$t(entity.track_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "deljen $t(entity.playlist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})"
},
"trackList": {
"artistTracks": "skladbe po {{artist}}",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
}
},
"player": {
+54 -52
View File
@@ -92,7 +92,7 @@
"exitToTray_description": "izlazak aplikacije u sistemsku traku",
"followLyric_description": "pomera tekst pesme na trenutnu poziciju reprodukcije",
"hotkey_favoritePreviousSong": "omiljena $t(common.previousSong)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "pomeraj teksta (ms)",
"discordUpdateInterval_description": "vreme u sekundama između svakog ažuriranja (minimum 15 sekundi)",
"fontType_optionCustom": "prilagođeni font",
@@ -104,7 +104,7 @@
"playbackStyle_optionCrossFade": "prelazak sa preklapanjem",
"hotkey_rate3": "oceni sa 3 zvezdice",
"font": "font",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "postavlja svetlu temu za aplikaciju",
"hotkey_toggleFullScreenPlayer": "prebaci na prikaz na celom ekranu",
"hotkey_localSearch": "pretraživanje na stranici",
@@ -187,23 +187,23 @@
"useSystemTheme": "koristi sistemsku temu"
},
"action": {
"editPlaylist": "izmeni $t(entity.playlist_one)",
"editPlaylist": "izmeni $t(entity.playlist, {\"count\": 1})",
"goToPage": "idi na stranu",
"moveToTop": "idi na vrh",
"clearQueue": "očisti listu",
"addToFavorites": "dodaj u $t(entity.favorite_other)",
"addToPlaylist": "dodaj u $t(entity.playlist_one)",
"createPlaylist": "napravi $t(entity.playlist_one)",
"removeFromPlaylist": "ukloni iz $t(entity.playlist_one)",
"viewPlaylists": "vidi $t(entity.playlist_other)",
"addToFavorites": "dodaj u $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "dodaj u $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "napravi $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "ukloni iz $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "vidi $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "obriši $t(entity.playlist_one)",
"deletePlaylist": "obriši $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "ukloni iz liste",
"deselectAll": "deselektuj sve",
"moveToBottom": "idi na dno",
"setRating": "oceni",
"toggleSmartPlaylistEditor": "pokreni $t(entity.smartPlaylist) editor",
"removeFromFavorites": "ukloni iz $t(entity.favorite_other)",
"removeFromFavorites": "ukloni iz $t(entity.favorite, {\"count\": 2})",
"openIn": {
"lastfm": "Otvori u Last.fm",
"musicbrainz": "Otvori u MusicBrainz"
@@ -222,7 +222,7 @@
"left": "levo",
"save": "sačuvaj",
"right": "desno",
"currentSong": "trenutno $t(entity.track_one)",
"currentSong": "trenutno $t(entity.track, {\"count\": 1})",
"collapse": "sklopi",
"trackNumber": "pesma",
"descending": "silazno",
@@ -252,7 +252,9 @@
"delete": "obriši",
"cancel": "otkaži",
"forceRestartRequired": "restartuj da primeniš izmene… zatvori notifikaciju za restart",
"setting": "podešavanje",
"setting_one": "podešavanje",
"setting_few": "",
"setting_other": "",
"version": "verzija",
"title": "naziv",
"filter_one": "filter",
@@ -279,7 +281,7 @@
"none": "nijedan",
"menu": "meni",
"restartRequired": "restart potreban",
"previousSong": "prethodna $t(entity.track_one)",
"previousSong": "prethodna $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "upit je bez rezultata",
"quit": "izađi",
"expand": "proširi",
@@ -316,8 +318,8 @@
"trackNumber": "broj pesme",
"rowIndex": "indeks reda",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
@@ -326,11 +328,11 @@
"playCount": "broj puštanja",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "disk broj",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)"
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})"
}
},
"column": {
@@ -339,7 +341,7 @@
"rating": "rejting",
"favorite": "favorit",
"playCount": "puštanja",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "godina",
"lastPlayed": "zadnje puštana",
"biography": "biografija",
@@ -348,10 +350,10 @@
"title": "naziv",
"bpm": "bpm",
"dateAdded": "datum dodavanja",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "pesma",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "album artist",
"path": "putanja",
"discNumber": "disk",
@@ -394,17 +396,17 @@
"rating": "rejting",
"search": "pretraga",
"bitrate": "bitrejt",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "skorije dodata",
"note": "notacija",
"name": "ime",
"dateAdded": "datum dodavanja",
"releaseDate": "datum izdavanja",
"albumCount": "$t(entity.album_other) albuma",
"albumCount": "$t(entity.album, {\"count\": 2}) albuma",
"communityRating": "ocena zajednice",
"path": "putanja",
"favorited": "favoriti",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "je skorije puštana",
"isFavorited": "je favorit",
"bpm": "bpm",
@@ -413,7 +415,7 @@
"disc": "disk",
"biography": "biografija",
"songCount": "broj pesama",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "trajanje",
"isPublic": "je javna",
"random": "nasumično",
@@ -421,22 +423,22 @@
"toYear": "do godine",
"fromYear": "iz godine",
"criticRating": "ocena kritičara",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "pesma"
},
"page": {
"sidebar": {
"nowPlaying": "trenutno pušta",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)"
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})"
},
"fullscreenPlayer": {
"config": {
@@ -459,7 +461,7 @@
"appMenu": {
"selectServer": "izaberi server",
"version": "verzija {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "upravljaj serverima",
"expandSidebar": "proširi bočnu traku",
"collapseSidebar": "skloni bočnu traku",
@@ -494,7 +496,7 @@
"recentlyPlayed": "nedavno puštane pesme"
},
"albumDetail": {
"moreFromArtist": "još od ovog $t(entity.artist_one)",
"moreFromArtist": "još od ovog $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "još od {{item}}"
},
"setting": {
@@ -504,13 +506,13 @@
"windowTab": "prozor"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)"
"title": "$t(entity.genre, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)"
"title": "$t(entity.track, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -521,24 +523,24 @@
"title": "komande"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)"
"title": "$t(entity.album, {\"count\": 2})"
}
},
"form": {
"deletePlaylist": {
"title": "obriši $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) uspešno obrisan",
"input_confirm": "unesite ime $t(entity.playlist_one) za potvrdu"
"title": "obriši $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) uspešno obrisan",
"input_confirm": "unesite ime $t(entity.playlist, {\"count\": 1}) za potvrdu"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "kreiraj $t(entity.playlist_one)",
"title": "kreiraj $t(entity.playlist, {\"count\": 1})",
"input_public": "javno",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) uspešno kreiran",
"success": "$t(entity.playlist, {\"count\": 1}) uspešno kreiran",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -555,10 +557,10 @@
"error_savePassword": "došlo je do greške prilikom pokušaja čuvanja lozinke"
},
"addToPlaylist": {
"success": "dodato {{message}} $t(entity.track_other) u {{numOfPlaylists}} $t(entity.playlist_other)",
"title": "dodaj u $t(entity.playlist_one)",
"success": "dodato {{message}} $t(entity.track, {\"count\": 2}) u {{numOfPlaylists}} $t(entity.playlist, {\"count\": 2})",
"title": "dodaj u $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "preskoči duplikate",
"input_playlists": "$t(entity.playlist_other)"
"input_playlists": "$t(entity.playlist, {\"count\": 2})"
},
"updateServer": {
"title": "ažuriraj server",
@@ -570,11 +572,11 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "pretraga teksta pesme"
},
"editPlaylist": {
"title": "izmeni $t(entity.playlist_one)"
"title": "izmeni $t(entity.playlist, {\"count\": 1})"
}
},
"entity": {
@@ -614,7 +616,7 @@
"folder_one": "folder",
"folder_few": "foldera",
"folder_other": "foldera",
"smartPlaylist": "pametna $t(entity.playlist_one)",
"smartPlaylist": "pametna $t(entity.playlist, {\"count\": 1})",
"album_one": "album",
"album_few": "albumi",
"album_other": "albuma",
+37 -36
View File
@@ -1,22 +1,22 @@
{
"action": {
"editPlaylist": "redigera $t(entity.playlist_one)",
"editPlaylist": "redigera $t(entity.playlist, {\"count\": 1})",
"goToPage": "gå till sida",
"moveToTop": "flytta till toppen",
"clearQueue": "rensa kö",
"addToFavorites": "lägg till $t(entity.favorite_other)",
"addToPlaylist": "lägg till $t(entity.playlist_one)",
"createPlaylist": "skapa $t(entity.playlist_one)",
"removeFromPlaylist": "ta bort från $t(entity.playlist_one)",
"viewPlaylists": "visa $t(entity.playlist_other)",
"addToFavorites": "lägg till $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "lägg till $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "skapa $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "ta bort från $t(entity.playlist, {\"count\": 1})",
"viewPlaylists": "visa $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "ta bort $t(entity.playlist_one)",
"deletePlaylist": "ta bort $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "ta bort från kö",
"deselectAll": "avmarkera alla",
"moveToBottom": "flytta till botten",
"setRating": "sätt betyg",
"toggleSmartPlaylistEditor": "växla $t(entity.smartPlaylist) redigerare",
"removeFromFavorites": "ta bort från $t(entity.favorite_other)",
"removeFromFavorites": "ta bort från $t(entity.favorite, {\"count\": 2})",
"downloadStarted": "startade nedladdning av {{count}} objekt",
"moveToNext": "flytta till nästa",
"moveUp": "flytta upp",
@@ -32,8 +32,8 @@
"lastfm": "Öppna i Last.fm",
"musicbrainz": "Öppna i MusicBrainz"
},
"createRadioStation": "skapa $t(entity.radioStation_one)",
"deleteRadioStation": "ta bort $t(entity.radioStation_one)",
"createRadioStation": "skapa $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "ta bort $t(entity.radioStation, {\"count\": 1})",
"addOrRemoveFromSelection": "lägg till eller ta bort från markerade",
"selectRangeOfItems": "välj en mängd objekt",
"selectAll": "markera alla",
@@ -52,7 +52,7 @@
"left": "vänster",
"save": "spara",
"right": "höger",
"currentSong": "aktuell $t(entity.track_one)",
"currentSong": "aktuell $t(entity.track, {\"count\": 1})",
"collapse": "kollaps",
"trackNumber": "spår",
"descending": "fallande",
@@ -81,7 +81,8 @@
"delete": "ta bort",
"cancel": "avbryt",
"forceRestartRequired": "starta om för att tillämpa ändringar... Stäng meddelandet för att starta om",
"setting": "inställning",
"setting_one": "inställning",
"setting_other": "",
"version": "version",
"title": "titel",
"filter_one": "filter",
@@ -105,7 +106,7 @@
"none": "ingen",
"menu": "meny",
"restartRequired": "omstart krävs",
"previousSong": "föregående $t(entity.track_one)",
"previousSong": "föregående $t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "frågan returnerade inga resultat",
"quit": "avsluta",
"expand": "expandera",
@@ -192,7 +193,7 @@
"rating": "betyg",
"search": "sök",
"bitrate": "bithastighet",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"recentlyAdded": "nyligen tillagda",
"note": "anteckning",
"name": "namn",
@@ -201,7 +202,7 @@
"communityRating": "betyg från communityn",
"path": "sökväg",
"favorited": "favoritmärkt",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"isRecentlyPlayed": "spelas nyligen",
"isFavorited": "är favoritmärkt",
"bpm": "bpm",
@@ -209,32 +210,32 @@
"id": "id",
"disc": "skiva",
"biography": "biografi",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"duration": "längd",
"isPublic": "är offentlig",
"random": "slumpmässig",
"lastPlayed": "senast spelad",
"toYear": "till år",
"fromYear": "från år",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"trackNumber": "spår",
"songCount": "sångräkning",
"criticRating": "kritikerbetyg",
"albumCount": "$t(entity.album_other) antal",
"albumCount": "$t(entity.album, {\"count\": 2}) antal",
"explicitStatus": "$t(common.explicitStatus)"
},
"form": {
"deletePlaylist": {
"title": "ta bort $t(entity.playlist_one)",
"success": "$t(entity.playlist_one) har tagits bort",
"input_confirm": "Skriv namnet på $t(entity.playlist_one) för att bekräfta"
"title": "ta bort $t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1}) har tagits bort",
"input_confirm": "Skriv namnet på $t(entity.playlist, {\"count\": 1}) för att bekräfta"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"title": "skapa $t(entity.playlist_one)",
"title": "skapa $t(entity.playlist, {\"count\": 1})",
"input_public": "offentlig",
"input_name": "$t(common.name)",
"success": "$t(entity.playlist_one) skapad",
"success": "$t(entity.playlist, {\"count\": 1}) skapad",
"input_owner": "$t(common.owner)"
},
"addServer": {
@@ -254,11 +255,11 @@
},
"addToPlaylist": {
"success": "lade till $t(entity.trackWithCount, {\"count\": {{message}} }) till $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "lägg till i $t(entity.playlist_one)",
"title": "lägg till i $t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "hoppa över dubbletter",
"input_playlists": "$t(entity.playlist_other)",
"create": "skapa $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "sök $t(entity.playlist_other) eller skriv för att skapa en ny"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "skapa $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "sök $t(entity.playlist, {\"count\": 2}) eller skriv för att skapa en ny"
},
"updateServer": {
"title": "uppdatera server",
@@ -270,11 +271,11 @@
},
"lyricSearch": {
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"title": "sångtext sök"
},
"editPlaylist": {
"title": "redigera $t(entity.playlist_one)",
"title": "redigera $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Jellyfin visar av någon anledning inte om en spellista är publik eller inte. Om du önskar att denna ska förbli publik, så får du ha följande indata markerade"
},
"largeFetchConfirmation": {
@@ -309,7 +310,7 @@
"appMenu": {
"selectServer": "välj server",
"version": "version {{version}}",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"manageServers": "hantera servrar",
"expandSidebar": "expandera sidofältet",
"openBrowserDevtools": "öppna webbläsarens utvecklingsverktyg",
@@ -342,19 +343,19 @@
"playShuffled": "$t(player.shuffle)",
"shareItem": "dela objekt",
"goTo": "gå till",
"goToAlbum": "gå till $t(entity.album_one)",
"goToAlbumArtist": "gå till $t(entity.albumArtist_one)",
"goToAlbum": "gå till $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "gå till $t(entity.albumArtist, {\"count\": 1})",
"showDetails": "hämta information"
},
"albumDetail": {
"moreFromArtist": "mer från $t(entity.artist_one)",
"moreFromArtist": "mer från $t(entity.artist, {\"count\": 1})",
"moreFromGeneric": "mer från {{item}}"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)"
"title": "$t(entity.album, {\"count\": 2})"
},
"sidebar": {
"nowPlaying": "nu spelas"
@@ -419,7 +420,7 @@
"genreWithCount_other": "{{count}} genrer",
"play_one": "{{count}} spelning",
"play_other": "{{count}} spelningar",
"smartPlaylist": "smart $t(entity.playlist_one)",
"smartPlaylist": "smart $t(entity.playlist, {\"count\": 1})",
"song_one": "låt",
"song_other": "låtar",
"radioStation_one": "radiostation",
+61 -60
View File
@@ -1,22 +1,22 @@
{
"action": {
"addToFavorites": "$t(entity.favorite_other) இல் சேர்க்கவும்",
"addToFavorites": "$t(entity.favorite, {\"count\": 2}) இல் சேர்க்கவும்",
"clearQueue": "தெளிவான வரிசை",
"goToPage": "பக்கத்திற்குச் செல்லுங்கள்",
"moveToBottom": "கீழே செல்லுங்கள்",
"moveToTop": "மேலே செல்லுங்கள்",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "$t(entity.favorite_other)இலிருந்து அகற்று",
"removeFromPlaylist": "$t(entity.playlist_one) இலிருந்து அகற்று",
"removeFromFavorites": "$t(entity.favorite, {\"count\": 2})இலிருந்து அகற்று",
"removeFromPlaylist": "$t(entity.playlist, {\"count\": 1}) இலிருந்து அகற்று",
"removeFromQueue": "வரிசையிலிருந்து அகற்று",
"setRating": "மதிப்பீட்டை அமைக்கவும்",
"toggleSmartPlaylistEditor": "மாற்று $t(entity.smartPlaylist) ஆசிரியர்",
"viewPlaylists": "$t(entity.playlist_other) காண்க",
"addToPlaylist": "$t(entity.playlist_one)இல் சேர்க்கவும்",
"createPlaylist": "$t(entity.playlist_one)ஐ உருவாக்கவும்",
"deletePlaylist": "$t(entity.playlist_one)ஐ நீக்கு",
"viewPlaylists": "$t(entity.playlist, {\"count\": 2}) காண்க",
"addToPlaylist": "$t(entity.playlist, {\"count\": 1})இல் சேர்க்கவும்",
"createPlaylist": "$t(entity.playlist, {\"count\": 1})ஐ உருவாக்கவும்",
"deletePlaylist": "$t(entity.playlist, {\"count\": 1})ஐ நீக்கு",
"deselectAll": "அனைத்தையும் தேர்வு செய்யுங்கள்",
"editPlaylist": "திருத்து $t(entity.playlist_one)",
"editPlaylist": "திருத்து $t(entity.playlist, {\"count\": 1})",
"moveToNext": "அடுத்து செல்லுங்கள்",
"openIn": {
"lastfm": "Last.fm இல் திறந்திருக்கும்",
@@ -33,7 +33,7 @@
"configure": "உள்ளமைக்கவும்",
"confirm": "உறுதிப்படுத்தவும்",
"create": "உருவாக்கு",
"currentSong": "தற்போதைய $t(entity.track_one)",
"currentSong": "தற்போதைய $t(entity.track, {\"count\": 1})",
"decrease": "குறைவு",
"action_one": "செயல்",
"action_other": "செயல்கள்",
@@ -87,7 +87,7 @@
"path": "பாதை",
"playerMustBePaused": "வீரர் இடைநிறுத்தப்பட வேண்டும்",
"preview": "முன்னோட்டம்",
"previousSong": "முந்தைய $t(entity.track_one)",
"previousSong": "முந்தைய $t(entity.track, {\"count\": 1})",
"quit": "வெளியேறு",
"random": "சீரற்ற",
"rating": "செயல்வரம்பு",
@@ -100,7 +100,8 @@
"save": "சேமி",
"saveAndReplace": "சேமித்து மாற்றவும்",
"search": "தேடல்",
"setting": "அமைத்தல்",
"setting_one": "அமைத்தல்",
"setting_other": "",
"share": "பங்கு",
"size": "அளவு",
"sortOrder": "ஒழுங்கு",
@@ -149,7 +150,7 @@
"play_other": "{{count}} நாடகங்கள்",
"playlistWithCount_one": "{{count}} பிளேலிச்ட்",
"playlistWithCount_other": "{{count}} பிளேலிச்ட்கள்",
"smartPlaylist": "அறிவுள்ள $t(entity.playlist_one)",
"smartPlaylist": "அறிவுள்ள $t(entity.playlist, {\"count\": 1})",
"track_one": "மின்தடம்",
"track_other": "தடங்கள்",
"song_one": "பாடல்",
@@ -184,9 +185,9 @@
"notificationDenied": "அறிவிப்புகளுக்கான அனுமதிகள் மறுக்கப்பட்டன. இந்த அமைப்பு எந்த விளைவையும் ஏற்படுத்தாது"
},
"filter": {
"albumArtist": "$t(entity.albumArtist_one)",
"albumCount": "$t(entity.album_other) எண்ணிக்கை",
"artist": "$t(entity.artist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"albumCount": "$t(entity.album, {\"count\": 2}) எண்ணிக்கை",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "சுயசரிதை",
"bitrate": "பிட்ரேட்",
"bpm": "பிபிஎம்",
@@ -197,14 +198,14 @@
"playCount": "விளையாட்டு எண்ணிக்கை",
"random": "சீரற்ற",
"rating": "செயல்வரம்பு",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"criticRating": "விமர்சகர் மதிப்பீடு",
"dateAdded": "தேதி சேர்க்கப்பட்டது",
"disc": "வட்டு",
"duration": "காலம்",
"favorited": "பிடித்தது",
"fromYear": "ஆண்டு முதல்",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"id": "ஐடி",
"isCompilation": "தொகுப்பு",
"isFavorited": "பிடித்தது",
@@ -242,17 +243,17 @@
"title": "சேவையகத்தைச் சேர்க்கவும்"
},
"deletePlaylist": {
"input_confirm": "உறுதிப்படுத்த $t(entity.playlist_one) பெயரைத் தட்டச்சு செய்க",
"success": "$t(entity.playlist_one) வெற்றிகரமாக நீக்கப்பட்டது",
"title": "$t(entity.playlist_one)ஐ நீக்கு"
"input_confirm": "உறுதிப்படுத்த $t(entity.playlist, {\"count\": 1}) பெயரைத் தட்டச்சு செய்க",
"success": "$t(entity.playlist, {\"count\": 1}) வெற்றிகரமாக நீக்கப்பட்டது",
"title": "$t(entity.playlist, {\"count\": 1})ஐ நீக்கு"
},
"editPlaylist": {
"title": "திருத்து $t(entity.playlist_one)",
"title": "திருத்து $t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "சில காரணங்களால் செல்லிஃபின் ஒரு பிளேலிச்ட் பொதுவில் இல்லையா என்பதை அம்பலப்படுத்தவில்லை. இது பொதுவில் இருக்க விரும்பினால், தயவுசெய்து பின்வரும் உள்ளீட்டைத் தேர்ந்தெடுக்கவும்",
"success": "$t(entity.playlist_one) வெற்றிகரமாகப் புதுப்பிக்கப்பட்டது"
"success": "$t(entity.playlist, {\"count\": 1}) வெற்றிகரமாகப் புதுப்பிக்கப்பட்டது"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "பாடல் தேடல்"
},
@@ -270,18 +271,18 @@
"createFailed": "பங்கை உருவாக்கத் தவறிவிட்டது (பகிர்வு இயக்கப்பட்டதா?)"
},
"createPlaylist": {
"success": "$t(entity.playlist_one) வெற்றிகரமாக உருவாக்கப்பட்டது",
"title": "$t(entity.playlist_one) ஐ உருவாக்கவும்",
"success": "$t(entity.playlist, {\"count\": 1}) வெற்றிகரமாக உருவாக்கப்பட்டது",
"title": "$t(entity.playlist, {\"count\": 1}) ஐ உருவாக்கவும்",
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "பொது"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "நகல்களைத் தவிர்க்கவும்",
"success": "$t(entity.trackWithCount, {\"count\": {{message}} }) இதற்கு $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} }) சேர்க்கப்பட்டது",
"title": "$t(entity.playlist_one) இல் சேர்"
"title": "$t(entity.playlist, {\"count\": 1}) இல் சேர்"
},
"updateServer": {
"success": "சேவையகம் வெற்றிகரமாக புதுப்பிக்கப்பட்டது",
@@ -295,8 +296,8 @@
"recentReleases": "அண்மைக் கால வெளியீடுகள்",
"viewDiscography": "டிச்கோகிராஃபி காண்க",
"topSongs": "சிறந்த பாடல்கள்",
"viewAllTracks": "அனைத்தையும் காண்க $t(entity.track_other)",
"relatedArtists": "தொடர்புடைய $t(entity.artist_other)",
"viewAllTracks": "அனைத்தையும் காண்க $t(entity.track, {\"count\": 2})",
"relatedArtists": "தொடர்புடைய $t(entity.artist, {\"count\": 2})",
"topSongsFrom": "{{title}} இலிருந்து சிறந்த பாடல்கள்",
"viewAll": "அனைத்தையும் காண்க"
},
@@ -309,7 +310,7 @@
"openBrowserDevtools": "திறந்த உலாவி தேவ்டூல்கள்",
"quit": "$t(common.quit)",
"selectServer": "சேவையகத்தைத் தேர்ந்தெடுக்கவும்",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "பதிப்பு {{version}}"
},
"manageServers": {
@@ -368,9 +369,9 @@
"related": "தொடர்புடைய"
},
"genreList": {
"showAlbums": "காட்டு $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "காட்டு $t(entity.genre_one) $t(entity.track_other)",
"title": "$t(entity.genre_other)"
"showAlbums": "காட்டு $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "காட்டு $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -396,7 +397,7 @@
"reorder": "ஐடியால் வரிசைப்படுத்தும்போது மட்டுமே மறுசீரமைப்பு இயக்கப்பட்டது"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "மேம்பட்ட",
@@ -406,37 +407,37 @@
"windowTab": "சாளரம்"
},
"sidebar": {
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"nowPlaying": "இப்போது விளையாடுகிறது",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"shared": "$t(entity.playlist_other) பகிரப்பட்டது",
"tracks": "$t(entity.track_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"shared": "$t(entity.playlist, {\"count\": 2}) பகிரப்பட்டது",
"tracks": "$t(entity.track, {\"count\": 2})",
"myLibrary": "எனது நூலகம்"
},
"trackList": {
"title": "$t(entity.track_other)",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"artistTracks": "{{artist}}"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "இந்த $t(entity.artist_one) இலிருந்து மேலும்",
"moreFromArtist": "இந்த $t(entity.artist, {\"count\": 1}) இலிருந்து மேலும்",
"moreFromGeneric": "{{item}} இலிருந்து மேலும்",
"released": "வெளியிடப்பட்டது"
},
"albumList": {
"artistAlbums": "ஆல்பங்கள் {{artist}}",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"title": "$t(entity.album, {\"count\": 2})"
}
},
"player": {
@@ -564,9 +565,9 @@
"replayGainFallback_description": "கோப்பில் {{ReplayGain}} குறிச்சொற்கள் இல்லையென்றால் விண்ணப்பிக்க DB இல் ஆதாயம்",
"replayGainMode": "{{ReplayGain}} பயன்முறை",
"replayGainMode_description": "{{ReplayGain}}} மதிப்புகளின் படி தொகுதி ஆதாயத்தை சரிசெய்யவும் மேனிலை தரவு கோப்பு",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainPreamp": "{{ReplayGain}} preamp (db)",
"replayGainPreamp_description": "{{ReplayGain}}} மதிப்புகளுக்கு பயன்படுத்தப்படும் Preamp ஆதாயத்தை சரிசெய்யவும்",
"sampleRate": "மாதிரி வீதம்",
@@ -702,8 +703,8 @@
"table": {
"config": {
"label": {
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "$t(common.biography)",
"bitrate": "$t(common.bitrate)",
"bpm": "$t(common.bpm)",
@@ -720,14 +721,14 @@
"note": "$t(common.note)",
"owner": "$t(common.owner)",
"actions": "$t(common.action_other)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"discNumber": "வட்டு எண்",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"path": "$t(common.path)",
"playCount": "விளையாட்டு எண்ணிக்கை",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"titleCombined": "$t(common.title) (இணைந்தது)"
},
@@ -750,8 +751,8 @@
"column": {
"album": "ஆல்பம்",
"albumArtist": "ஆல்பம் கலைஞர்",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "சுயசரிதை",
"bitrate": "பிட்ரேட்",
"bpm": "பிபிஎம்",
@@ -761,7 +762,7 @@
"dateAdded": "தேதி சேர்க்கப்பட்டது",
"discNumber": "வட்டு",
"favorite": "பிடித்த",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "கடைசியாக விளையாடியது",
"path": "பாதை",
"playCount": "நாடகங்கள்",
@@ -769,7 +770,7 @@
"releaseDate": "வெளியீட்டு தேதி",
"releaseYear": "ஆண்டு",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "தலைப்பு",
"trackNumber": "மின்தடம்"
}
+71 -67
View File
@@ -2,30 +2,30 @@
"action": {
"moveToBottom": "alttakine geç",
"moveToTop": "başa dön",
"removeFromFavorites": "$t(entity.favorite_other)lerden kaldır",
"removeFromPlaylist": "$t(entity.playlist_one) listesinden kaldır",
"removeFromFavorites": "$t(entity.favorite, {\"count\": 2})lerden kaldır",
"removeFromPlaylist": "$t(entity.playlist, {\"count\": 1}) listesinden kaldır",
"removeFromQueue": "sıradan kaldır",
"setRating": "oyla",
"viewPlaylists": "$t(entity.playlist_other) listesini görüntüle",
"viewPlaylists": "$t(entity.playlist, {\"count\": 2}) listesini görüntüle",
"openIn": {
"lastfm": "Last.fm'de aç",
"musicbrainz": "MusicBrainz'da aç"
},
"addToFavorites": "$t(entity.favorite_other) listesine ekle",
"addToPlaylist": "$t(entity.playlist_one) listesine ekle",
"addToFavorites": "$t(entity.favorite, {\"count\": 2}) listesine ekle",
"addToPlaylist": "$t(entity.playlist, {\"count\": 1}) listesine ekle",
"clearQueue": "sırayı temizle",
"createPlaylist": "$t(entity.playlist_one) listesini oluştur",
"deletePlaylist": "$t(entity.playlist_one) listesini sil",
"createPlaylist": "$t(entity.playlist, {\"count\": 1}) listesini oluştur",
"deletePlaylist": "$t(entity.playlist, {\"count\": 1}) listesini sil",
"deselectAll": "seçimleri kaldır",
"editPlaylist": "$t(entity.playlist_one) listesini düzenle",
"editPlaylist": "$t(entity.playlist, {\"count\": 1}) listesini düzenle",
"goToPage": "sayfaya git",
"moveToNext": "sonrakine geç",
"refresh": "$t(common.refresh)",
"toggleSmartPlaylistEditor": "$t(entity.smartPlaylist) düzenleyiciye geç",
"addOrRemoveFromSelection": "seçime ekle veya seçimi kaldır",
"selectRangeOfItems": "bir dizi öğe seçin",
"createRadioStation": "$t(entity.radioStation_one) oluştur",
"deleteRadioStation": "$t(entity.radioStation_one) istasyonunu sil",
"createRadioStation": "$t(entity.radioStation, {\"count\": 1}) oluştur",
"deleteRadioStation": "$t(entity.radioStation, {\"count\": 1}) istasyonunu sil",
"selectAll": "tümünü seç",
"downloadStarted": "{{count}} öğenin indirilmesine başlandı",
"moveUp": "yukarı kaydır",
@@ -55,7 +55,7 @@
"configure": "yapılandır",
"confirm": "onayla",
"create": "oluştur",
"currentSong": "şu anki parça $t(entity.track_one)",
"currentSong": "şu anki parça $t(entity.track, {\"count\": 1})",
"decrease": "azalt",
"delete": "sil",
"descending": "azalan",
@@ -93,7 +93,7 @@
"path": "yol",
"playerMustBePaused": "oynatıcı duraklatılmalı",
"preview": "önizleme",
"previousSong": "önceki $t(entity.track_one)",
"previousSong": "önceki $t(entity.track, {\"count\": 1})",
"quit": "çık",
"random": "rastgele",
"rating": "oylama",
@@ -108,7 +108,8 @@
"saveAndReplace": "kaydet ve değiştir",
"saveAs": "farklı kaydet",
"search": "arama",
"setting": "ayarlar",
"setting_one": "ayarlar",
"setting_other": "",
"share": "paylaş",
"size": "boyut",
"sortOrder": "sıralama düzeni",
@@ -129,7 +130,8 @@
"trackPeak": "parça zirvesi",
"private": "gizli",
"clean": "temiz",
"countSelected": "{{count}} adet seçildi"
"countSelected": "{{count}} adet seçildi",
"public": "herkese açık"
},
"entity": {
"album_one": "albüm",
@@ -160,13 +162,15 @@
"play_other": "{{count}} oynatma",
"playlistWithCount_one": "{{count}} oynatma listesi",
"playlistWithCount_other": "{{count}} oynatma listesi",
"smartPlaylist": "akıllı $t(entity.playlist_one)",
"smartPlaylist": "akıllı $t(entity.playlist, {\"count\": 1})",
"track_one": "parça",
"track_other": "parçalar",
"song_one": "şarkı",
"song_other": "şarkılar",
"trackWithCount_one": "{{count}} parça",
"trackWithCount_other": "{{count}} parça"
"trackWithCount_other": "{{count}} parça",
"radioStation_one": "radyo istasyonu",
"radioStation_other": "radyo istasyonları"
},
"error": {
"apiRouteError": "istek yönlendirilemiyor",
@@ -195,7 +199,7 @@
"remoteEnableError": "uzak sunucuyu $t(common.enable) yapmaya çalışırken bir hata oluştu"
},
"filter": {
"albumCount": "$t(entity.album_other) sayısı",
"albumCount": "$t(entity.album, {\"count\": 2}) sayısı",
"biography": "biyografi",
"bitrate": "bit hızı",
"bpm": "bpm",
@@ -210,7 +214,7 @@
"id": "kimlik",
"isCompilation": "derleme",
"isFavorited": "favorilendi",
"isPublic": "herkese açık",
"isPublic": "halka açıktır",
"isRated": "oylandı",
"isRecentlyPlayed": "yakın zamanda çalındı",
"lastPlayed": "son çalınan",
@@ -232,10 +236,10 @@
"title": "başlık",
"toYear": "yılına kadar",
"trackNumber": "parça",
"genre": "$t(entity.genre_one)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"channels": "$t(common.channel_other)"
},
"form": {
@@ -255,9 +259,9 @@
"input_preferInstantMixDescription": "sadece benzer şarkılari bulmak icin anında mix kullan. Bu davranışı değiştiren eklentilere sahipseniz faydalı"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "kopyaları atla",
"title": "$t(entity.playlist_one) listesine ekle",
"title": "$t(entity.playlist, {\"count\": 1}) listesine ekle",
"success": "$t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} }) $t(entity.trackWithCount, {\"count\": {{message}} }) eklendi"
},
"createPlaylist": {
@@ -265,21 +269,21 @@
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "herkese açık",
"success": "$t(entity.playlist_one) listesi başarıyla oluşturuldu",
"title": "$t(entity.playlist_one) listesini oluştur"
"success": "$t(entity.playlist, {\"count\": 1}) listesi başarıyla oluşturuldu",
"title": "$t(entity.playlist, {\"count\": 1}) listesini oluştur"
},
"deletePlaylist": {
"input_confirm": "onaylamak için $t(entity.playlist_one) listesinin adını yazın",
"success": "$t(entity.playlist_one) listesi başarıyla silindi",
"title": "$t(entity.playlist_one) listesini sil"
"input_confirm": "onaylamak için $t(entity.playlist, {\"count\": 1}) listesinin adını yazın",
"success": "$t(entity.playlist, {\"count\": 1}) listesi başarıyla silindi",
"title": "$t(entity.playlist, {\"count\": 1}) listesini sil"
},
"editPlaylist": {
"publicJellyfinNote": "Jellyfin bazı nedenlerden dolayı bir çalma listesinin herkese açık olup olmadığını göstermez. Bunun herkese açık kalmasını istiyorsanız, lütfen aşağıdaki girdiyi seçin",
"success": "$t(entity.playlist_one) listesi başarıyla güncellendi",
"title": "$t(entity.playlist_one) listesini düzenle"
"success": "$t(entity.playlist, {\"count\": 1}) listesi başarıyla güncellendi",
"title": "$t(entity.playlist, {\"count\": 1}) listesini düzenle"
},
"lyricSearch": {
"input_artist": "$t(entity.artist_one)",
"input_artist": "$t(entity.artist, {\"count\": 1})",
"input_name": "$t(common.name)",
"title": "şarkı sözü arama"
},
@@ -312,10 +316,10 @@
"appearsOn": "üzerinde görünür",
"recentReleases": "son sürümler",
"viewDiscography": "diskografiyi görüntüle",
"relatedArtists": "$t(entity.artist_other) ile benzer",
"relatedArtists": "$t(entity.artist, {\"count\": 2}) ile benzer",
"topSongs": "en iyi şarkılar",
"viewAll": "tümünü görüntüle",
"viewAllTracks": "tüm $t(entity.track_other) görüntüle",
"viewAllTracks": "tüm $t(entity.track, {\"count\": 2}) görüntüle",
"topSongsFrom": "{{title}} tarafından en iyi şarkılar"
},
"contextMenu": {
@@ -341,8 +345,8 @@
"playShuffled": "$t(player.shuffle)",
"shareItem": "öğeyi paylaş",
"showDetails": "bilgi al",
"goToAlbum": "$t(entity.album_one) sayfasına git",
"goToAlbumArtist": "$t(entity.albumArtist_one) sayfasına git"
"goToAlbum": "$t(entity.album, {\"count\": 1}) sayfasına git",
"goToAlbumArtist": "$t(entity.albumArtist, {\"count\": 1}) sayfasına git"
},
"manageServers": {
"url": "URL",
@@ -376,9 +380,9 @@
"noLyrics": "şarkı sözü bulunamadı"
},
"genreList": {
"showAlbums": "$t(entity.genre_one) $t(entity.album_other) göster",
"showTracks": "$t(entity.genre_one)$t(entity.track_other) göster",
"title": "$t(entity.genre_other)"
"showAlbums": "$t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2}) göster",
"showTracks": "$t(entity.genre, {\"count\": 1})$t(entity.track, {\"count\": 2}) göster",
"title": "$t(entity.genre, {\"count\": 2})"
},
"globalSearch": {
"commands": {
@@ -404,7 +408,7 @@
"reorder": "yeniden sıralama yalnızca kimliğe göre sıralama yapıldığında etkinleştirilir"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"advanced": "gelişmiş",
@@ -414,36 +418,36 @@
"windowTab": "pencere"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"genres": "$t(entity.genre_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"myLibrary": "kütüphanem",
"nowPlaying": "şimdi oynatılıyor",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"shared": "paylaşılan $t(entity.playlist_other)",
"tracks": "$t(entity.track_other)"
"settings": "$t(common.setting, {\"count\": 2})",
"shared": "paylaşılan $t(entity.playlist, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})"
},
"trackList": {
"artistTracks": "{{artist}} parçaları",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"title": "$t(entity.track, {\"count\": 2})"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "$t(entity.artist_one) sanatçısından daha fazla",
"moreFromArtist": "$t(entity.artist, {\"count\": 1}) sanatçısından daha fazla",
"moreFromGeneric": "{{item}} tarafından daha fazla",
"released": "yayınlandı"
},
"albumList": {
"title": "$t(entity.album_other)",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})",
"artistAlbums": "{{artist}} albümleri"
},
"appMenu": {
@@ -455,7 +459,7 @@
"openBrowserDevtools": "tarayıcı geliştirici araçlarını aç",
"quit": "$t(common.quit)",
"selectServer": "sunucu seç",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "{{version}} sürümü",
"privateModeOff": "gizli modu kapat",
"privateModeOn": "gizli modu aç"
@@ -627,9 +631,9 @@
"replayGainFallback_description": "dosyada {{ReplayGain}} etiketi yoksa db'e uygulanacak kazanç",
"replayGainMode": "{{ReplayGain}} modu",
"replayGainMode_description": "ses seviyesi kazancını dosya meta verilerinde saklanan {{ReplayGain}} değerlerine göre ayarlayın",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainPreamp": "{{ReplayGain}} preamp (dB)",
"replayGainPreamp_description": "{{ReplayGain}} değerlerine uygulanan preamp kazancını ayarlar",
"sampleRate": "örnekleme hızı",
@@ -736,8 +740,8 @@
"column": {
"album": "albüm",
"albumArtist": "albüm sanatçısı",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "biyografi",
"bitrate": "bit hızı",
"bpm": "bpm (dakika başına vuruş)",
@@ -747,7 +751,7 @@
"dateAdded": "tarih eklendi",
"discNumber": "disk",
"favorite": "favori",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "son çalınan",
"path": "yol",
"playCount": "oynatılıyor",
@@ -755,7 +759,7 @@
"releaseDate": "çıkış tarihi",
"releaseYear": "yıl",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "başlık",
"trackNumber": "parça"
},
@@ -772,9 +776,9 @@
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"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)",
@@ -784,7 +788,7 @@
"discNumber": "disk numarası",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "son çalınan",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
@@ -794,7 +798,7 @@
"releaseDate": "çıkış tarihi",
"rowIndex": "satır indeksi",
"size": "$t(common.size)",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "$t(common.title)",
"titleCombined": "$t(common.title) (birleşik)",
"trackNumber": "parça numarası",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"action": {
"addToFavorites": "додати до $t(entity.favorite_other)"
"addToFavorites": "додати до $t(entity.favorite, {\"count\": 2})"
}
}
+75 -75
View File
@@ -1,21 +1,21 @@
{
"action": {
"editPlaylist": "编辑 $t(entity.playlist_one)",
"editPlaylist": "编辑 $t(entity.playlist, {\"count\": 1})",
"moveToTop": "移至顶部",
"clearQueue": "清空播放队列",
"addToFavorites": "添加到 $t(entity.favorite_other)",
"addToPlaylist": "添加到 $t(entity.playlist_one)",
"createPlaylist": "创建 $t(entity.playlist_one)",
"removeFromPlaylist": "从 $t(entity.playlist_one) 移除",
"viewPlaylists": "查看 $t(entity.playlist_other)",
"addToFavorites": "添加到 $t(entity.favorite, {\"count\": 2})",
"addToPlaylist": "添加到 $t(entity.playlist, {\"count\": 1})",
"createPlaylist": "创建 $t(entity.playlist, {\"count\": 1})",
"removeFromPlaylist": "从 $t(entity.playlist, {\"count\": 1}) 移除",
"viewPlaylists": "查看 $t(entity.playlist, {\"count\": 2})",
"refresh": "$t(common.refresh)",
"deletePlaylist": "删除 $t(entity.playlist_one)",
"deletePlaylist": "删除 $t(entity.playlist, {\"count\": 1})",
"removeFromQueue": "从播放队列中移除",
"deselectAll": "取消全选",
"moveToBottom": "移至底部",
"setRating": "评分",
"toggleSmartPlaylistEditor": "切换 $t(entity.smartPlaylist) 编辑器",
"removeFromFavorites": "从 $t(entity.favorite_other) 移除",
"removeFromFavorites": "从 $t(entity.favorite, {\"count\": 2}) 移除",
"goToPage": "前往页面",
"openIn": {
"lastfm": "在 Last.fm 中打开",
@@ -35,8 +35,8 @@
"addOrRemoveFromSelection": "在所选内容中添加或移除",
"selectRangeOfItems": "批量选择",
"selectAll": "全选",
"createRadioStation": "创建$t(entity.radioStation_one)",
"deleteRadioStation": "删除$t(entity.radioStation_one)",
"createRadioStation": "创建$t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "删除$t(entity.radioStation, {\"count\": 1})",
"openApplicationDirectory": "打开应用程序目录"
},
"common": {
@@ -50,7 +50,7 @@
"left": "左",
"save": "保存",
"right": "右",
"currentSong": "当前$t(entity.track_one)",
"currentSong": "当前$t(entity.track, {\"count\": 1})",
"collapse": "折叠",
"trackNumber": "音轨编号",
"descending": "降序",
@@ -75,7 +75,7 @@
"delete": "删除",
"cancel": "取消",
"forceRestartRequired": "重启应用使更改生效…关闭通知即可重启",
"setting": "设置",
"setting_other": "设置",
"version": "版本",
"title": "标题",
"filter_other": "筛选",
@@ -92,7 +92,7 @@
"disable": "禁用",
"menu": "菜单",
"restartRequired": "需要重启应用",
"previousSong": "上一首$t(entity.track_one)",
"previousSong": "上一首$t(entity.track, {\"count\": 1})",
"noResultsFromQuery": "未查询到匹配结果",
"quit": "退出",
"expand": "展开",
@@ -166,7 +166,7 @@
"favorite_other": "收藏",
"artistWithCount_other": "{{count}} 位艺术家",
"folder_other": "文件夹",
"smartPlaylist": "智能$t(entity.playlist_one)",
"smartPlaylist": "智能$t(entity.playlist, {\"count\": 1})",
"genreWithCount_other": "{{count}} 种流派",
"trackWithCount_other": "{{count}} 首曲目",
"play_other": "{{count}} 次播放",
@@ -283,7 +283,7 @@
"remoteUsername_description": "设置远程控制服务器的用户名。如果用户名和密码都为空,则身份验证将被禁用",
"exitToTray_description": "退出应用时最小化到系统托盘",
"hotkey_favoritePreviousSong": "收藏$t(common.previousSong)",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"lyricOffset": "歌词偏移(毫秒)",
"fontType_optionCustom": "自定义字体",
"themeDark_description": "应用将使用深色主题",
@@ -292,7 +292,7 @@
"language_description": "设置应用的语言($t(common.restartRequired)",
"playbackStyle_optionCrossFade": "淡入淡出",
"hotkey_rate3": "评为 3 星",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"themeLight_description": "应用将使用浅色主题",
"hotkey_toggleFullScreenPlayer": "全屏播放",
"hotkey_localSearch": "页面内搜索",
@@ -563,7 +563,7 @@
"communityRating": "社区评分",
"path": "路径",
"favorited": "已收藏",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"releaseYear": "发布年份",
"biography": "个人简介",
"songCount": "歌曲数量",
@@ -574,7 +574,7 @@
"criticRating": "评论家评分",
"trackNumber": "曲目",
"bpm": "bpm",
"artist": "$t(entity.artist_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"comment": "评论",
"isCompilation": "为合辑",
"isFavorited": "已收藏",
@@ -584,32 +584,32 @@
"isRecentlyPlayed": "最近播放过",
"channels": "$t(common.channel_other)",
"owner": "$t(common.owner)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"note": "注释",
"albumCount": "$t(entity.album_other)数",
"albumCount": "$t(entity.album, {\"count\": 2})数",
"id": "id",
"disc": "碟片",
"duration": "时长",
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"explicitStatus": "$t(common.explicitStatus)"
},
"page": {
"sidebar": {
"nowPlaying": "正在播放",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"search": "$t(common.search)",
"tracks": "$t(entity.track_other)",
"albums": "$t(entity.album_other)",
"genres": "$t(entity.genre_other)",
"folders": "$t(entity.folder_other)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"settings": "$t(common.setting, {\"count\": 2})",
"home": "$t(common.home)",
"artists": "$t(entity.artist_other)",
"albumArtists": "$t(entity.albumArtist_other)",
"shared": "共享$t(entity.playlist_other)",
"artists": "$t(entity.artist, {\"count\": 2})",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"shared": "共享$t(entity.playlist, {\"count\": 2})",
"myLibrary": "我的媒体库",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"fullscreenPlayer": {
"config": {
@@ -643,7 +643,7 @@
"openBrowserDevtools": "打开浏览器开发者工具",
"goBack": "返回",
"goForward": "前进",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"quit": "$t(common.quit)",
"privateModeOff": "关闭私人模式",
"privateModeOn": "开启私人模式",
@@ -658,10 +658,10 @@
"recentlyPlayed": "最近播放",
"title": "$t(common.home)",
"recentlyReleased": "最近发布",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "更多该$t(entity.artist_one)作品",
"moreFromArtist": "更多该$t(entity.artist, {\"count\": 1})作品",
"moreFromGeneric": "更多{{item}}作品",
"released": "已发布"
},
@@ -720,39 +720,39 @@
"download": "下载",
"playShuffled": "$t(player.shuffle)",
"moveToNext": "$t(action.moveToNext)",
"goToAlbum": "转到 $t(entity.album_one)",
"goToAlbumArtist": "转到 $t(entity.albumArtist_one)",
"goToAlbum": "转到 $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "转到 $t(entity.albumArtist, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "前往"
},
"trackList": {
"title": "$t(entity.track_other)",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})",
"artistTracks": "{{artist}} 的曲目"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "{{artist}}的专辑",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "显示$t(entity.genre_one) $t(entity.album_other)",
"showTracks": "显示$t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "显示$t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "显示$t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"albumArtistDetail": {
"recentReleases": "最近发布",
"viewDiscography": "查看唱片目录",
"relatedArtists": "相关$t(entity.artist_other)",
"relatedArtists": "相关$t(entity.artist, {\"count\": 2})",
"topSongs": "热门歌曲",
"topSongsFrom": "{{title}}的热门歌曲",
"viewAllTracks": "查看所有$t(entity.track_other)",
"viewAllTracks": "查看所有$t(entity.track, {\"count\": 2})",
"about": "关于{{artist}}",
"appearsOn": "出现在",
"viewAll": "查看全部",
@@ -775,17 +775,17 @@
"removeServer": "移除服务器"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
}
},
"form": {
"deletePlaylist": {
"title": "删除$t(entity.playlist_one)",
"success": "$t(entity.playlist_one)已成功删除",
"input_confirm": "输入$t(entity.playlist_one)的名称进行确认"
"title": "删除$t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1})已成功删除",
"input_confirm": "输入$t(entity.playlist, {\"count\": 1})的名称进行确认"
},
"addServer": {
"title": "添加服务器",
@@ -807,16 +807,16 @@
},
"addToPlaylist": {
"success": "添加$t(entity.trackWithCount, {\"count\": {{message}} })到$t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "添加到$t(entity.playlist_one)",
"title": "添加到$t(entity.playlist, {\"count\": 1})",
"input_skipDuplicates": "跳过重复",
"input_playlists": "$t(entity.playlist_other)",
"create": "创建 $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "搜索 $t(entity.playlist_other) 或键入以创建一个新的"
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"create": "创建 $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "搜索 $t(entity.playlist, {\"count\": 2}) 或键入以创建一个新的"
},
"createPlaylist": {
"title": "创建$t(entity.playlist_one)",
"title": "创建$t(entity.playlist, {\"count\": 1})",
"input_public": "公开",
"success": "已成功创建 $t(entity.playlist_one)",
"success": "已成功创建 $t(entity.playlist, {\"count\": 1})",
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)"
@@ -835,15 +835,15 @@
"removeRuleGroup": "移除规则组"
},
"editPlaylist": {
"title": "编辑$t(entity.playlist_one)",
"title": "编辑$t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Jellyfin 出于某种原因不会显示播放列表是否公开。如果您希望保持公开,请选择以下输入",
"success": "$t(entity.playlist_one)更新成功",
"success": "$t(entity.playlist, {\"count\": 1})更新成功",
"editNote": "不建议对大型播放列表进行手动编辑,你确定接受新播放列表覆盖已有播放列表可能导致的数据丢失风险吗?"
},
"lyricSearch": {
"title": "搜索歌词",
"input_name": "$t(common.name)",
"input_artist": "$t(entity.artist_one)"
"input_artist": "$t(entity.artist, {\"count\": 1})"
},
"shareItem": {
"expireInvalid": "过期时间必须是将来的时间",
@@ -877,7 +877,7 @@
},
"shuffleAll": {
"title": "随机播放",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_played_optionAll": "所有曲目",
"input_maxYear": "截止年份",
"input_minYear": "起始年份",
@@ -934,8 +934,8 @@
"trackNumber": "音轨编号",
"rowIndex": "行索引",
"rating": "$t(common.rating)",
"artist": "$t(entity.artist_one)",
"album": "$t(entity.album_one)",
"artist": "$t(entity.artist, {\"count\": 1})",
"album": "$t(entity.album, {\"count\": 1})",
"note": "$t(common.note)",
"biography": "$t(common.biography)",
"owner": "$t(common.owner)",
@@ -944,19 +944,19 @@
"playCount": "播放次数",
"bitrate": "$t(common.bitrate)",
"actions": "$t(common.action_other)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"discNumber": "碟片编号",
"favorite": "$t(common.favorite)",
"year": "$t(common.year)",
"albumArtist": "$t(entity.albumArtist_one)",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"titleCombined": "$t(common.title)(合并)",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)",
"albumCount": "$t(entity.album_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"image": "图片",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)",
"genreBadge": "$t(entity.genre_one)(徽章)"
"genreBadge": "$t(entity.genre, {\"count\": 1})(徽章)"
}
},
"column": {
@@ -965,7 +965,7 @@
"rating": "评分",
"favorite": "收藏",
"playCount": "播放次数",
"albumCount": "$t(entity.album_other)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"releaseYear": "年份",
"lastPlayed": "最后播放",
"biography": "简介",
@@ -974,10 +974,10 @@
"title": "标题",
"bpm": "bpm",
"dateAdded": "添加日期",
"artist": "$t(entity.artist_one)",
"songCount": "$t(entity.track_other)",
"artist": "$t(entity.artist, {\"count\": 1})",
"songCount": "$t(entity.track, {\"count\": 2})",
"trackNumber": "音轨编号",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"albumArtist": "专辑艺术家",
"path": "路径",
"channels": "$t(common.channel_other)",
@@ -996,7 +996,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"broadcast": "播送",
"ep": "迷你专辑(EP",
"single": "单曲",
+88 -84
View File
@@ -23,7 +23,7 @@
"dismiss": "忽略",
"duration": "時長",
"edit": "編輯",
"enable": "用",
"enable": "用",
"expand": "展開",
"favorite": "收藏",
"filter_other": "篩選",
@@ -40,7 +40,7 @@
"owner": "所有者",
"path": "路徑",
"playerMustBePaused": "播放器必須被暫停",
"previousSong": "上一首$t(entity.track_one)",
"previousSong": "上一首$t(entity.track, {\"count\": 1})",
"quit": "退出",
"random": "隨機",
"rating": "評分",
@@ -66,7 +66,7 @@
"channel_other": "聲道",
"configure": "配置",
"create": "創建",
"currentSong": "目前$t(entity.track_one)",
"currentSong": "目前$t(entity.track, {\"count\": 1})",
"minimize": "最小化",
"modified": "已修改",
"name": "名稱",
@@ -86,7 +86,7 @@
"preview": "預覽",
"reload": "重新載入",
"sampleRate": "取樣率",
"setting": "設定",
"setting_other": "設定",
"share": "分享",
"tags": "標籤",
"trackGain": "曲目增益",
@@ -110,7 +110,10 @@
"countSelected": "{{count}}個已選取",
"retry": "重試",
"example": "範例",
"mood": "情緒"
"mood": "情緒",
"view": "查看",
"rename": "重新命名",
"itemsMore": "{{count}} 更多"
},
"error": {
"endpointNotImplementedError": "{{serverType}} 尚未實現端點 {{endpoint}}",
@@ -167,8 +170,8 @@
"playShuffled": "$t(player.shuffle)",
"shareItem": "分享項目",
"showDetails": "取得資訊",
"goToAlbum": "前往 $t(entity.album_one)",
"goToAlbumArtist": "前往 $t(entity.albumArtist_one)",
"goToAlbum": "前往 $t(entity.album, {\"count\": 1})",
"goToAlbumArtist": "前往 $t(entity.albumArtist, {\"count\": 1})",
"moveItems": "$t(action.moveItems)",
"goTo": "前往"
},
@@ -187,7 +190,7 @@
"mostPlayed": "最多播放",
"newlyAdded": "最近新增的發行",
"recentlyReleased": "最近發佈",
"genres": "$t(entity.genre_other)"
"genres": "$t(entity.genre, {\"count\": 2})"
},
"appMenu": {
"openBrowserDevtools": "打開瀏覽器開發者工具",
@@ -197,7 +200,7 @@
"goForward": "前進",
"quit": "$t(common.quit)",
"selectServer": "選擇伺服器",
"settings": "$t(common.setting_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"version": "版本 {{version}}",
"manageServers": "管理伺服器",
"privateModeOff": "關閉私人模式",
@@ -231,7 +234,7 @@
"noLyrics": "未找到歌詞"
},
"playlistList": {
"title": "$t(entity.playlist_other)"
"title": "$t(entity.playlist, {\"count\": 2})"
},
"setting": {
"hotkeysTab": "快捷鍵",
@@ -259,55 +262,55 @@
"lyricsDisplay": "歌詞顯示"
},
"albumArtistList": {
"title": "$t(entity.albumArtist_other)"
"title": "$t(entity.albumArtist, {\"count\": 2})"
},
"albumDetail": {
"moreFromArtist": "更多來自 $t(entity.artist_one) 的作品",
"moreFromArtist": "更多來自 $t(entity.artist, {\"count\": 1}) 的作品",
"moreFromGeneric": "更多{{item}}作品",
"released": "發行"
},
"albumList": {
"title": "$t(entity.album_other)",
"title": "$t(entity.album, {\"count\": 2})",
"artistAlbums": "{{artist}} 的專輯",
"genreAlbums": "\"{{genre}}\" $t(entity.album_other)"
"genreAlbums": "\"{{genre}}\" $t(entity.album, {\"count\": 2})"
},
"genreList": {
"title": "$t(entity.genre_other)",
"showAlbums": "顯示 $t(entity.genre_one) $t(entity.album_other)",
"showTracks": "顯示 $t(entity.genre_one) $t(entity.track_other)"
"title": "$t(entity.genre, {\"count\": 2})",
"showAlbums": "顯示 $t(entity.genre, {\"count\": 1}) $t(entity.album, {\"count\": 2})",
"showTracks": "顯示 $t(entity.genre, {\"count\": 1}) $t(entity.track, {\"count\": 2})"
},
"sidebar": {
"albumArtists": "$t(entity.albumArtist_other)",
"albums": "$t(entity.album_other)",
"artists": "$t(entity.artist_other)",
"folders": "$t(entity.folder_other)",
"albumArtists": "$t(entity.albumArtist, {\"count\": 2})",
"albums": "$t(entity.album, {\"count\": 2})",
"artists": "$t(entity.artist, {\"count\": 2})",
"folders": "$t(entity.folder, {\"count\": 2})",
"search": "$t(common.search)",
"settings": "$t(common.setting_other)",
"tracks": "$t(entity.track_other)",
"genres": "$t(entity.genre_other)",
"settings": "$t(common.setting, {\"count\": 2})",
"tracks": "$t(entity.track, {\"count\": 2})",
"genres": "$t(entity.genre, {\"count\": 2})",
"home": "$t(common.home)",
"nowPlaying": "正在播放",
"playlists": "$t(entity.playlist_other)",
"playlists": "$t(entity.playlist, {\"count\": 2})",
"myLibrary": "我的媒體庫",
"shared": "已分享 $t(entity.playlist_other)",
"favorites": "$t(entity.favorite_other)",
"radio": "$t(entity.radioStation_other)"
"shared": "已分享 $t(entity.playlist, {\"count\": 2})",
"favorites": "$t(entity.favorite, {\"count\": 2})",
"radio": "$t(entity.radioStation, {\"count\": 2})"
},
"trackList": {
"title": "$t(entity.track_other)",
"title": "$t(entity.track, {\"count\": 2})",
"artistTracks": "{{artist}} 的歌曲",
"genreTracks": "\"{{genre}}\" $t(entity.track_other)"
"genreTracks": "\"{{genre}}\" $t(entity.track, {\"count\": 2})"
},
"albumArtistDetail": {
"about": "關於{{artist}}",
"appearsOn": "出現在",
"recentReleases": "最近發行",
"viewDiscography": "查看音樂作品",
"relatedArtists": "關聯$t(entity.artist_other)",
"relatedArtists": "關聯$t(entity.artist, {\"count\": 2})",
"topSongs": "熱門歌曲",
"topSongsFrom": "{{title}} 的熱門歌曲",
"viewAll": "檢視所有",
"viewAllTracks": "檢視所有$t(entity.track_other)",
"viewAllTracks": "檢視所有$t(entity.track, {\"count\": 2})",
"groupingTypeAll": "所有發佈類型",
"groupingTypePrimary": "主要發佈類型"
},
@@ -328,10 +331,10 @@
"reorder": "僅當按 ID 排序時才啟用重新排序"
},
"favorites": {
"title": "$t(entity.favorite_other)"
"title": "$t(entity.favorite, {\"count\": 2})"
},
"folderList": {
"title": "$t(entity.folder_other)"
"title": "$t(entity.folder, {\"count\": 2})"
},
"radioList": {
"title": "電台"
@@ -456,7 +459,7 @@
"lyricFetchProvider": "歌詞來源",
"lyricOffset": "歌詞偏移(毫秒)",
"lyricOffset_description": "將歌詞偏移指定的毫秒數",
"lyricFetchProvider_description": "選擇歌詞來源。 來源順序即為搜尋的順序",
"lyricFetchProvider_description": "選擇歌詞來源",
"minimizeToTray": "最小化到系統匣",
"minimizeToTray_description": "將應用程式最小化到系統匣",
"minimumScrobbleSeconds": "最小紀錄時間(秒)",
@@ -475,9 +478,9 @@
"replayGainFallback_description": "歌曲沒有{{ReplayGain}}標簽時使用的增益(以分貝為單位)",
"replayGainMode": "{{ReplayGain}}模式",
"replayGainMode_description": "根據歌曲標籤中儲存的{{ReplayGain}}值調整音量增益",
"replayGainMode_optionAlbum": "$t(entity.album_one)",
"replayGainMode_optionAlbum": "$t(entity.album, {\"count\": 1})",
"replayGainMode_optionNone": "$t(common.none)",
"replayGainMode_optionTrack": "$t(entity.track_one)",
"replayGainMode_optionTrack": "$t(entity.track, {\"count\": 1})",
"replayGainPreamp": "{{ReplayGain}}前置放大(分貝)",
"replayGainPreamp_description": "調整使用在{{ReplayGain}}值上的前置放大增益",
"savePlayQueue": "儲存播放佇列",
@@ -742,25 +745,25 @@
"verticalBorders": "列邊框線"
},
"label": {
"actions": "$t(common.action_other)",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"artist": "$t(entity.artist_one)",
"actions": "$t(common.action, {\"count\": 2})",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"artist": "$t(entity.artist, {\"count\": 1})",
"bpm": "$t(common.bpm)",
"biography": "$t(common.biography)",
"bitrate": "$t(common.bitrate)",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"dateAdded": "新增日期",
"discNumber": "光碟編號",
"duration": "$t(common.duration)",
"favorite": "$t(common.favorite)",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"lastPlayed": "最後播放",
"note": "$t(common.note)",
"owner": "$t(common.owner)",
"path": "$t(common.path)",
"playCount": "播放次數",
"releaseDate": "發日期",
"releaseDate": "發日期",
"rowIndex": "行號",
"size": "$t(common.size)",
"title": "$t(common.title)",
@@ -769,9 +772,9 @@
"year": "$t(common.year)",
"rating": "$t(common.rating)",
"codec": "$t(common.codec)",
"songCount": "$t(entity.track_other)",
"albumCount": "$t(entity.album_other)",
"genreBadge": "$t(entity.genre_one) (徽章)",
"songCount": "$t(entity.track, {\"count\": 2})",
"albumCount": "$t(entity.album, {\"count\": 2})",
"genreBadge": "$t(entity.genre, {\"count\": 1}) (徽章)",
"image": "圖片",
"bitDepth": "$t(common.bitDepth)",
"sampleRate": "$t(common.sampleRate)"
@@ -785,11 +788,11 @@
"column": {
"album": "專輯",
"albumArtist": "專輯藝人",
"albumCount": "$t(entity.album_other)",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "簡介",
"bitrate": "比特率",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"comment": "評論",
"dateAdded": "新增日期",
"discNumber": "光碟",
@@ -800,9 +803,9 @@
"rating": "評價",
"releaseDate": "發布日期",
"releaseYear": "年份",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"bpm": "bpm",
"songCount": "$t(entity.track_other)",
"songCount": "$t(entity.track, {\"count\": 2})",
"title": "標題",
"trackNumber": "曲目編號",
"size": "$t(common.size)",
@@ -813,23 +816,23 @@
}
},
"action": {
"addToFavorites": "新增到$t(entity.favorite_other)",
"addToFavorites": "新增到$t(entity.favorite, {\"count\": 2})",
"clearQueue": "清空播放佇列",
"createPlaylist": "創建$t(entity.playlist_one)",
"deletePlaylist": "刪除$t(entity.playlist_one)",
"addToPlaylist": "新增到$t(entity.playlist_one)",
"createPlaylist": "創建$t(entity.playlist, {\"count\": 1})",
"deletePlaylist": "刪除$t(entity.playlist, {\"count\": 1})",
"addToPlaylist": "新增到$t(entity.playlist, {\"count\": 1})",
"deselectAll": "取消全選",
"editPlaylist": "編輯 $t(entity.playlist_one)",
"editPlaylist": "編輯 $t(entity.playlist, {\"count\": 1})",
"goToPage": "前往頁面",
"moveToBottom": "移至底部",
"moveToTop": "移至頂部",
"refresh": "$t(common.refresh)",
"removeFromFavorites": "從$t(entity.favorite_other)移除",
"removeFromPlaylist": "從$t(entity.playlist_one)移除",
"removeFromFavorites": "從$t(entity.favorite, {\"count\": 2})移除",
"removeFromPlaylist": "從$t(entity.playlist, {\"count\": 1})移除",
"removeFromQueue": "從播放佇列中移除",
"setRating": "評分",
"toggleSmartPlaylistEditor": "切換$t(entity.smartPlaylist)編輯器",
"viewPlaylists": "查看$t(entity.playlist_other)",
"viewPlaylists": "查看$t(entity.playlist, {\"count\": 2})",
"moveToNext": "移至下一項",
"openIn": {
"lastfm": "在Last.fm開啟",
@@ -845,11 +848,12 @@
"moveDown": "向下移動",
"holdToMoveToTop": "按住以移動至頂部",
"holdToMoveToBottom": "按住以移動至底部",
"createRadioStation": "創建 $t(entity.radioStation_one)",
"deleteRadioStation": "刪除 $t(entity.radioStation_one)",
"createRadioStation": "創建 $t(entity.radioStation, {\"count\": 1})",
"deleteRadioStation": "刪除 $t(entity.radioStation, {\"count\": 1})",
"openApplicationDirectory": "開啟應用程式目錄",
"addOrRemoveFromSelection": "新增或移除選取項目",
"selectAll": "全選"
"selectAll": "全選",
"selectRangeOfItems": "批量選取"
},
"entity": {
"album_other": "專輯",
@@ -864,7 +868,7 @@
"genreWithCount_other": "{{count}} 種曲風",
"playlist_other": "播放清單",
"playlistWithCount_other": "{{count}} 個播放清單",
"smartPlaylist": "智慧$t(entity.playlist_one)",
"smartPlaylist": "智慧$t(entity.playlist, {\"count\": 1})",
"track_other": "曲目",
"trackWithCount_other": "{{count}} 首曲目",
"albumWithCount_other": "{{count}} 張專輯",
@@ -874,12 +878,12 @@
"radioStationWithCount_other": "{{count}} 個電台"
},
"filter": {
"albumCount": "$t(entity.album_other)數",
"artist": "$t(entity.artist_one)",
"albumCount": "$t(entity.album, {\"count\": 2})數",
"artist": "$t(entity.artist, {\"count\": 1})",
"biography": "個人簡介",
"bitrate": "比特率",
"bpm": "bpm",
"channels": "$t(common.channel_other)",
"channels": "$t(common.channel, {\"count\": 2})",
"comment": "評論",
"communityRating": "社群評分",
"criticRating": "評論家評分",
@@ -888,7 +892,7 @@
"duration": "時長",
"id": "id",
"fromYear": "從年份",
"genre": "$t(entity.genre_one)",
"genre": "$t(entity.genre, {\"count\": 1})",
"isCompilation": "為合輯",
"isFavorited": "已收藏",
"isPublic": "已公開",
@@ -907,8 +911,8 @@
"recentlyUpdated": "最近更新",
"releaseDate": "發布日期",
"songCount": "曲目數",
"album": "$t(entity.album_one)",
"albumArtist": "$t(entity.albumArtist_one)",
"album": "$t(entity.album, {\"count\": 1})",
"albumArtist": "$t(entity.albumArtist, {\"count\": 1})",
"favorited": "已收藏",
"recentlyAdded": "最近新增",
"releaseYear": "發布年份",
@@ -938,25 +942,25 @@
"input_remoteUrlPlaceholder": "選用:對外功能的公開網址"
},
"addToPlaylist": {
"input_playlists": "$t(entity.playlist_other)",
"input_playlists": "$t(entity.playlist, {\"count\": 2})",
"input_skipDuplicates": "跳過重複",
"success": "新增 $t(entity.trackWithCount, {\"count\": {{message}} }) 到 $t(entity.playlistWithCount, {\"count\": {{numOfPlaylists}} })",
"title": "新增到$t(entity.playlist_one)",
"create": "創建 $t(entity.playlist_one) {{playlist}}",
"searchOrCreate": "搜尋$t(entity.playlist_other) 或輸入內容以建立新項目"
"title": "新增到$t(entity.playlist, {\"count\": 1})",
"create": "創建 $t(entity.playlist, {\"count\": 1}) {{playlist}}",
"searchOrCreate": "搜尋$t(entity.playlist, {\"count\": 2}) 或輸入內容以建立新項目"
},
"createPlaylist": {
"input_description": "$t(common.description)",
"input_name": "$t(common.name)",
"input_owner": "$t(common.owner)",
"input_public": "公開",
"success": "已成功創建 $t(entity.playlist_one)",
"title": "創建$t(entity.playlist_one)"
"success": "已成功創建 $t(entity.playlist, {\"count\": 1})",
"title": "創建$t(entity.playlist, {\"count\": 1})"
},
"lyricSearch": {
"input_name": "$t(common.name)",
"title": "搜尋歌詞",
"input_artist": "$t(entity.artist_one)"
"input_artist": "$t(entity.artist, {\"count\": 1})"
},
"queryEditor": {
"input_optionMatchAll": "匹配全部",
@@ -972,14 +976,14 @@
"title": "更新伺服器"
},
"deletePlaylist": {
"input_confirm": "輸入$t(entity.playlist_one)的名稱進行確認",
"title": "刪除$t(entity.playlist_one)",
"success": "$t(entity.playlist_one)已成功刪除"
"input_confirm": "輸入$t(entity.playlist, {\"count\": 1})的名稱進行確認",
"title": "刪除$t(entity.playlist, {\"count\": 1})",
"success": "$t(entity.playlist, {\"count\": 1})已成功刪除"
},
"editPlaylist": {
"title": "編輯$t(entity.playlist_one)",
"title": "編輯$t(entity.playlist, {\"count\": 1})",
"publicJellyfinNote": "Jellyfin 出於某種原因,不會顯示播放清單是否公開。如果您希望保持公開狀態,請選擇以下輸入",
"success": "$t(entity.playlist_one) 更新成功",
"success": "$t(entity.playlist, {\"count\": 1}) 更新成功",
"editNote": "不建議手動編輯大型播放清單,你確定要承擔覆寫現有播放清單可能造成的資料遺失風險嗎?"
},
"shareItem": {
@@ -1001,7 +1005,7 @@
},
"shuffleAll": {
"title": "隨機播放",
"input_genre": "$t(entity.genre_one)",
"input_genre": "$t(entity.genre, {\"count\": 1})",
"input_limit": "多少曲目?",
"input_minYear": "起始年份",
"input_maxYear": "結束年份",
@@ -1028,7 +1032,7 @@
},
"releaseType": {
"primary": {
"album": "$t(entity.album_one)",
"album": "$t(entity.album, {\"count\": 1})",
"ep": "EP",
"other": "其他",
"broadcast": "廣播",
+28 -23
View File
@@ -78,6 +78,30 @@ const MAX_CACHED_ITEMS = 10;
const lyricCache = new Map<string, CachedLyrics>();
const searchAllSources = async (
params: LyricSearchQuery,
): Promise<InternetProviderLyricSearchResponse[]> => {
const sources = store.get('lyrics', []) as LyricSource[];
const searchPromises = sources.map((source) =>
SEARCH_FETCHERS[source](params).then((searchResults) => ({ searchResults, source })),
);
const settled = await Promise.allSettled(searchPromises);
const allSearchResults: InternetProviderLyricSearchResponse[] = [];
for (const result of settled) {
if (result.status === 'fulfilled' && result.value.searchResults) {
allSearchResults.push(...result.value.searchResults);
} else if (result.status === 'rejected') {
const index = settled.indexOf(result);
console.error(`Error searching ${sources[index]} for lyrics:`, result.reason);
}
}
return allSearchResults;
};
const getRemoteLyrics = async (song: Song) => {
const sources = store.get('lyrics', []) as LyricSource[];
@@ -97,18 +121,7 @@ const getRemoteLyrics = async (song: Song) => {
name: song.name,
};
const allSearchResults: InternetProviderLyricSearchResponse[] = [];
for (const source of sources) {
try {
const searchResults = await SEARCH_FETCHERS[source](params);
if (searchResults) {
allSearchResults.push(...searchResults);
}
} catch (error) {
console.error(`Error searching ${source} for lyrics:`, error);
}
}
const allSearchResults = await searchAllSources(params);
if (allSearchResults.length === 0) {
return null;
@@ -172,24 +185,16 @@ const getRemoteLyrics = async (song: Song) => {
};
const searchRemoteLyrics = async (params: LyricSearchQuery) => {
const sources = store.get('lyrics', []) as LyricSource[];
const allSearchResults = await searchAllSources(params);
const results: Record<LyricSource, InternetProviderLyricSearchResponse[]> = {
[LyricSource.GENIUS]: [],
[LyricSource.LRCLIB]: [],
[LyricSource.NETEASE]: [],
};
for (const source of sources) {
const response = await SEARCH_FETCHERS[source](params);
if (response) {
response.forEach((result) => {
results[source].push(result);
});
}
for (const item of allSearchResults) {
results[item.source].push(item);
}
return results;
};
+57
View File
@@ -0,0 +1,57 @@
import { app, ipcMain, Menu } from 'electron';
import { getMainWindow } from '/@/main/index';
import { PlayerStatus } from '/@/shared/types/types';
let currentStatus: PlayerStatus = PlayerStatus.PAUSED;
const updateDockMenu = () => {
if (!app.dock) return;
const isPlaying = currentStatus === PlayerStatus.PLAYING;
const dockMenu = Menu.buildFromTemplate([
{
click: () => {
getMainWindow()?.webContents.send('renderer-player-play-pause');
},
label: isPlaying ? 'Pause' : 'Play',
},
{
type: 'separator',
},
{
click: () => {
getMainWindow()?.webContents.send('renderer-player-next');
},
label: 'Next',
},
{
click: () => {
getMainWindow()?.webContents.send('renderer-player-previous');
},
label: 'Previous',
},
{
type: 'separator',
},
{
click: () => {
getMainWindow()?.webContents.send('renderer-player-stop');
},
label: 'Stop',
},
]);
app.dock.setMenu(dockMenu);
};
ipcMain.on('update-playback', (_event, status: PlayerStatus) => {
currentStatus = status;
updateDockMenu();
});
// Initialize dock menu after app is ready
app.whenReady().then(() => {
updateDockMenu();
});
+1
View File
@@ -0,0 +1 @@
import './dock-menu';
+14 -4
View File
@@ -187,10 +187,20 @@ const createWinThumbarButtons = () => {
};
const createTray = () => {
tray =
isLinux() || isMacOS()
? new Tray(getAssetPath('icons/icon.png'))
: new Tray(getAssetPath('icons/icon.ico'));
let trayIcon: Electron.NativeImage | string;
if (isMacOS()) {
const iconPath = getAssetPath('icons/IconTemplate.png');
const icon = nativeImage.createFromPath(iconPath);
icon.setTemplateImage(true);
trayIcon = icon;
} else if (isLinux()) {
trayIcon = getAssetPath('icons/icon.png');
} else {
trayIcon = getAssetPath('icons/icon.ico');
}
tray = new Tray(trayIcon);
const contextMenu = Menu.buildFromTemplate([
{
@@ -226,7 +226,7 @@ export const JellyfinController: InternalControllerEndpoint = {
userId: apiClientProps.server?.userId,
},
query: {
Fields: 'Genres, Overview',
Fields: 'Genres, Overview, SortName',
},
}),
jfApiClient(apiClientProps).getSimilarArtistList({
@@ -253,7 +253,7 @@ export const JellyfinController: InternalControllerEndpoint = {
const res = await jfApiClient(apiClientProps).getAlbumArtistList({
query: {
Fields: 'Genres, DateCreated, ExternalUrls, Overview',
Fields: 'Genres, DateCreated, ExternalUrls, Overview, SortName',
ImageTypeLimit: 1,
Limit: query.limit,
ParentId: getLibraryId(query.musicFolderId),
@@ -305,7 +305,7 @@ export const JellyfinController: InternalControllerEndpoint = {
userId: apiClientProps.server.userId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
IncludeItemTypes: 'Audio',
ParentId: query.id,
SortBy: 'ParentIndexNumber,IndexNumber,SortName',
@@ -363,7 +363,7 @@ export const JellyfinController: InternalControllerEndpoint = {
},
query: {
...artistQuery,
Fields: 'People, Tags, Studios',
Fields: 'People, Tags, Studios, SortName',
GenreIds: query.genreIds ? query.genreIds.join(',') : undefined,
IncludeItemTypes: 'MusicAlbum',
IsFavorite: query.favorite,
@@ -399,7 +399,7 @@ export const JellyfinController: InternalControllerEndpoint = {
const res = await jfApiClient(apiClientProps).getArtistList({
query: {
Fields: 'Genres, DateCreated, ExternalUrls, Overview',
Fields: 'Genres, DateCreated, ExternalUrls, Overview, SortName',
ImageTypeLimit: 1,
Limit: query.limit,
ParentId: getLibraryId(query.musicFolderId),
@@ -438,7 +438,7 @@ export const JellyfinController: InternalControllerEndpoint = {
itemId: query.artistId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ParentId',
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
Limit: query.count,
UserId: apiClientProps.server?.userId || undefined,
},
@@ -794,7 +794,7 @@ export const JellyfinController: InternalControllerEndpoint = {
userId: apiClientProps.server?.userId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ChildCount, ParentId',
Fields: 'Genres, DateCreated, MediaSources, ChildCount, ParentId, SortName',
Ids: query.id,
},
});
@@ -855,7 +855,7 @@ export const JellyfinController: InternalControllerEndpoint = {
id: query.id,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId, People, Tags, SortName',
IncludeItemTypes: 'Audio',
UserId: apiClientProps.server?.userId,
},
@@ -902,7 +902,7 @@ export const JellyfinController: InternalControllerEndpoint = {
userId: apiClientProps.server?.userId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
GenreIds: query.genre ? query.genre : undefined,
IncludeItemTypes: 'Audio',
IsPlayed:
@@ -974,7 +974,7 @@ export const JellyfinController: InternalControllerEndpoint = {
itemId: query.songId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ParentId',
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
Limit: query.count,
UserId: apiClientProps.server?.userId || undefined,
},
@@ -1007,7 +1007,7 @@ export const JellyfinController: InternalControllerEndpoint = {
itemId: query.songId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ParentId',
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
Limit: query.count,
UserId: apiClientProps.server?.userId || undefined,
},
@@ -1092,7 +1092,7 @@ export const JellyfinController: InternalControllerEndpoint = {
query: {
AlbumIds: albumIdsFilter,
ArtistIds: artistIdsFilter,
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
GenreIds: query.genreIds?.join(','),
IncludeItemTypes: 'Audio',
IsFavorite: query.favorite,
@@ -1127,7 +1127,7 @@ export const JellyfinController: InternalControllerEndpoint = {
query: {
AlbumIds: albumIdsFilter,
ArtistIds: artistIdsFilter,
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
GenreIds: query.genreIds?.join(','),
IncludeItemTypes: 'Audio',
IsFavorite: query.favorite,
@@ -1282,7 +1282,7 @@ export const JellyfinController: InternalControllerEndpoint = {
},
query: {
ArtistIds: query.artistId,
Fields: 'Genres, DateCreated, MediaSources, ParentId',
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
IncludeItemTypes: 'Audio',
Limit: query.limit,
Recursive: true,
@@ -1378,7 +1378,7 @@ export const JellyfinController: InternalControllerEndpoint = {
id: query.id,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId, People, Tags, SortName',
IncludeItemTypes: 'Audio',
UserId: apiClientProps.server?.userId,
},
@@ -1404,7 +1404,7 @@ export const JellyfinController: InternalControllerEndpoint = {
userId: apiClientProps.server?.userId,
},
query: {
Fields: 'Genres, DateCreated, MediaSources, ChildCount, ParentId',
Fields: 'Genres, DateCreated, MediaSources, ChildCount, ParentId, SortName',
Ids: query.id,
},
});
@@ -1562,7 +1562,7 @@ export const JellyfinController: InternalControllerEndpoint = {
},
query: {
EnableTotalRecordCount: true,
Fields: 'People, Tags',
Fields: 'People, Tags, SortName',
ImageTypeLimit: 1,
IncludeItemTypes: 'MusicAlbum',
Limit: query.albumLimit,
@@ -1610,7 +1610,7 @@ export const JellyfinController: InternalControllerEndpoint = {
},
query: {
EnableTotalRecordCount: true,
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags',
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
IncludeItemTypes: 'Audio',
Limit: query.songLimit,
Recursive: true,
@@ -46,6 +46,7 @@ const ALBUM_LIST_SORT_MAPPING: Record<AlbumListSort, AlbumListSortType | undefin
[AlbumListSort.RECENTLY_PLAYED]: AlbumListSortType.RECENT,
[AlbumListSort.RELEASE_DATE]: AlbumListSortType.BY_YEAR,
[AlbumListSort.SONG_COUNT]: undefined,
[AlbumListSort.SORT_NAME]: AlbumListSortType.ALPHABETICAL_BY_NAME,
[AlbumListSort.YEAR]: AlbumListSortType.BY_YEAR,
};
@@ -778,6 +779,7 @@ export const SubsonicController: InternalControllerEndpoint = {
res.body.indexes?.index?.flatMap((idx) =>
idx.artist.map((artist) => ({
artist: artist.name,
coverArt: artist.coverArt,
id: artist.id.toString(),
isDir: true,
title: artist.name,
@@ -119,6 +119,9 @@ const CarouselItem = ({ album }: CarouselItemProps) => {
<ItemImage
className={styles.albumImage}
containerClassName={styles.albumImageContainer}
enableDebounce={false}
enableViewport={false}
fetchPriority="high"
id={album.imageId}
itemType={LibraryItem.ALBUM}
src={imageUrl}
@@ -116,6 +116,9 @@ const CarouselItem = ({ album }: CarouselItemProps) => {
<ItemImage
className={styles.albumImage}
containerClassName={styles.albumImageContainer}
enableDebounce={false}
enableViewport={false}
fetchPriority="high"
id={album.imageId}
itemType={LibraryItem.ALBUM}
type="itemCard"
@@ -205,11 +205,70 @@ function BaseGridCarousel(props: GridCarouselProps) {
],
);
const swipeCooldownRef = useRef(0);
const dragStartTargetRef = useRef<HTMLElement | null>(null);
const swipeCooldownMs = 300;
const swipeThreshold = 50;
const swipeVelocityThreshold = 500;
const handleDragStart = useCallback((event: MouseEvent | PointerEvent | TouchEvent) => {
dragStartTargetRef.current = (event.target as HTMLElement) || null;
}, []);
const handleDragEnd = useCallback(
(
_event: MouseEvent | PointerEvent | TouchEvent,
info: { offset: { x: number }; velocity: { x: number } },
) => {
const startTarget = dragStartTargetRef.current;
if (startTarget) {
if (startTarget.closest('button, a, input, select, textarea, [role="button"]')) {
dragStartTargetRef.current = null;
return;
}
}
const now = Date.now();
const elapsed = now - swipeCooldownRef.current;
if (elapsed < swipeCooldownMs) {
dragStartTargetRef.current = null;
return;
}
const { offset, velocity } = info;
const absOffset = Math.abs(offset.x);
const absVelocity = Math.abs(velocity.x);
if (absOffset > swipeThreshold || absVelocity > swipeVelocityThreshold) {
swipeCooldownRef.current = now;
if (offset.x > 0 && !isPrevDisabled) {
handlePrevPage();
} else if (offset.x < 0 && !isNextDisabled) {
handleNextPage();
}
}
dragStartTargetRef.current = null;
},
[handleNextPage, handlePrevPage, isNextDisabled, isPrevDisabled],
);
return (
<div className={styles.gridCarousel} ref={ref}>
{cq.isCalculated && (
<>
<div className={styles.navigation}>
<motion.div
className={styles.navigation}
drag="x"
dragConstraints={{ left: 0, right: 0 }}
dragElastic={0}
dragMomentum={false}
dragPropagation={false}
onDragEnd={handleDragEnd}
onDragStart={handleDragStart}
>
{typeof title === 'string' ? (
<Group gap="xs" justify="space-between" w="100%">
<Group gap="xs">
@@ -269,7 +328,7 @@ function BaseGridCarousel(props: GridCarouselProps) {
</Group>
</div>
)}
</div>
</motion.div>
<AnimatePresence custom={currentPage} initial={false} mode="wait">
<motion.div
animate="animate"
@@ -10,8 +10,17 @@
.navigation {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: space-between;
width: 100%;
touch-action: pan-x;
cursor: grab;
user-select: none;
}
.navigation:active {
cursor: grabbing;
}
.custom-title-container {
@@ -19,6 +19,7 @@ import {
Album,
AlbumArtist,
Artist,
Genre,
LibraryItem,
Playlist,
ServerType,
@@ -30,7 +31,7 @@ interface ItemCardControlsProps {
controls?: ItemControls;
enableExpansion?: boolean;
internalState?: ItemListStateActions;
item: Album | AlbumArtist | Artist | Playlist | Song | undefined;
item: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined;
itemType: LibraryItem;
showRating: boolean;
type?: 'compact' | 'default' | 'poster';
@@ -60,7 +61,7 @@ const containerProps = {
const createPlayHandler =
(
controls: ItemControls | undefined,
item: Album | AlbumArtist | Artist | Playlist | Song | undefined,
item: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined,
internalState: ItemListStateActions | undefined,
itemType: LibraryItem,
playType: Play,
@@ -108,7 +109,7 @@ const createPlayHandler =
const createFavoriteHandler =
(
controls: ItemControls | undefined,
item: Album | AlbumArtist | Artist | Playlist | Song | undefined,
item: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined,
internalState: ItemListStateActions | undefined,
itemType: LibraryItem,
) =>
@@ -133,7 +134,7 @@ const createFavoriteHandler =
const createRatingChangeHandler =
(
controls: ItemControls | undefined,
item: Album | AlbumArtist | Artist | Playlist | Song | undefined,
item: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined,
internalState: ItemListStateActions | undefined,
itemType: LibraryItem,
) =>
@@ -165,7 +166,7 @@ const moreDoubleClickHandler = (e: MouseEvent<HTMLButtonElement>) => {
const createMoreHandler =
(
controls: ItemControls | undefined,
item: Album | AlbumArtist | Artist | Playlist | Song | undefined,
item: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined,
internalState: ItemListStateActions | undefined,
itemType: LibraryItem,
) =>
@@ -183,7 +184,7 @@ const createMoreHandler =
const createExpandHandler =
(
controls: ItemControls | undefined,
item: Album | AlbumArtist | Artist | Playlist | Song | undefined,
item: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined,
internalState: ItemListStateActions | undefined,
itemType: LibraryItem,
) =>
@@ -28,6 +28,7 @@
overflow: hidden;
color: inherit;
text-decoration: none;
border-radius: var(--theme-radius-md);
&::before {
position: absolute;
@@ -35,6 +36,7 @@
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
content: '';
background-color: rgb(0 0 0);
opacity: 0;
@@ -112,6 +114,29 @@
border-radius: 50%;
}
.genre-placeholder {
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
padding: var(--theme-spacing-sm);
text-align: center;
}
.genre-placeholder-text {
display: -webkit-box;
width: 100%;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
font-weight: 600;
line-height: 1.2;
-webkit-box-orient: vertical;
}
.detail-container {
display: flex;
flex-direction: column;
+127 -43
View File
@@ -38,25 +38,31 @@ import {
Album,
AlbumArtist,
Artist,
Genre,
LibraryItem,
Playlist,
Song,
} from '/@/shared/types/domain-types';
import { DragOperation, DragTarget } from '/@/shared/types/drag-and-drop';
import { stringToColor } from '/@/shared/utils/string-to-color';
export type DataRow = {
align?: 'center' | 'end' | 'start';
format: (data: Album | AlbumArtist | Artist | Playlist | Song) => null | ReactNode | string;
format: (
data: Album | AlbumArtist | Artist | Genre | Playlist | Song,
) => null | ReactNode | string;
id: string;
isMuted?: boolean;
};
export interface ItemCardProps {
controls?: ItemControls;
data: Album | AlbumArtist | Artist | Playlist | Song | undefined;
data: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined;
enableDrag?: boolean;
enableExpansion?: boolean;
enableMultiSelect?: boolean;
enableNavigation?: boolean;
imageAsLink?: boolean;
internalState?: ItemListStateActions;
isRound?: boolean;
itemType: LibraryItem;
@@ -70,7 +76,9 @@ export const ItemCard = ({
data,
enableDrag,
enableExpansion,
enableMultiSelect,
enableNavigation = true,
imageAsLink,
internalState,
isRound,
itemType,
@@ -90,7 +98,9 @@ export const ItemCard = ({
data={data}
enableDrag={enableDrag}
enableExpansion={enableExpansion}
enableMultiSelect={enableMultiSelect}
enableNavigation={enableNavigation}
imageAsLink={imageAsLink}
imageUrl={imageUrl}
internalState={internalState}
isRound={isRound}
@@ -107,7 +117,9 @@ export const ItemCard = ({
data={data}
enableDrag={enableDrag}
enableExpansion={enableExpansion}
enableMultiSelect={enableMultiSelect}
enableNavigation={enableNavigation}
imageAsLink={imageAsLink}
imageUrl={imageUrl}
internalState={internalState}
isRound={isRound}
@@ -126,6 +138,7 @@ export const ItemCard = ({
enableDrag={enableDrag}
enableExpansion={enableExpansion}
enableNavigation={enableNavigation}
imageAsLink={imageAsLink}
imageUrl={imageUrl}
internalState={internalState}
isRound={isRound}
@@ -142,6 +155,7 @@ export interface ItemCardDerivativeProps extends Omit<ItemCardProps, 'type'> {
controls?: ItemControls;
enableExpansion?: boolean;
enableNavigation?: boolean;
imageAsLink?: boolean;
imageUrl: string | undefined;
internalState?: ItemListStateActions;
rows: DataRow[];
@@ -153,7 +167,9 @@ const CompactItemCard = ({
data,
enableDrag,
enableExpansion,
enableMultiSelect,
enableNavigation,
imageAsLink,
internalState,
isRound,
itemType,
@@ -173,29 +189,29 @@ const CompactItemCard = ({
return [];
}
const draggedItems = getDraggedItems(data, internalState);
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
return draggedItems.map((item) => item.id);
}, [data, internalState]);
}, [data, internalState, enableMultiSelect]);
const getItem = useCallback(() => {
if (!data) {
return [];
}
const draggedItems = getDraggedItems(data, internalState);
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
return draggedItems;
}, [data, internalState]);
}, [data, internalState, enableMultiSelect]);
const onDragStart = useCallback(() => {
if (!data) {
return;
}
const draggedItems = getDraggedItems(data, internalState);
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
if (internalState) {
internalState.setDragging(draggedItems);
}
}, [data, internalState]);
}, [data, internalState, enableMultiSelect]);
const onDrop = useCallback(() => {
if (internalState) {
@@ -329,15 +345,28 @@ const CompactItemCard = ({
const imageContainerContent = (
<>
<ItemImage
className={clsx(styles.image, {
[styles.isRound]: isRound,
})}
id={data?.imageId}
itemType={itemType}
src={(data as Album | AlbumArtist | Playlist | Song)?.imageUrl}
type="itemCard"
/>
{itemType === LibraryItem.GENRE &&
data &&
'name' in data &&
typeof (data as Genre).name === 'string' ? (
<GenreImagePlaceholder
className={clsx(styles.image, styles.genrePlaceholder, {
[styles.isRound]: isRound,
})}
name={(data as Genre).name}
/>
) : (
<ItemImage
className={clsx(styles.image, {
[styles.isRound]: isRound,
})}
enableDebounce={false}
id={data?.imageId}
itemType={itemType}
src={(data as Album | AlbumArtist | Playlist | Song)?.imageUrl}
type="itemCard"
/>
)}
{isFavorite && <div className={styles.favoriteBadge} />}
{hasRating && <div className={styles.ratingBadge}>{userRating}</div>}
<AnimatePresence>
@@ -380,7 +409,7 @@ const CompactItemCard = ({
})}
ref={ref}
>
{enableNavigation && navigationPath && !internalState ? (
{enableNavigation && navigationPath && (imageAsLink ?? !internalState) ? (
<Link
className={imageContainerClassName}
draggable={false}
@@ -441,6 +470,7 @@ const DefaultItemCard = ({
data,
enableExpansion,
enableNavigation,
imageAsLink,
internalState,
isRound,
itemType,
@@ -551,13 +581,26 @@ const DefaultItemCard = ({
const imageContainerContent = (
<>
<ItemImage
className={clsx(styles.image, { [styles.isRound]: isRound })}
id={data?.imageId}
itemType={itemType}
src={(data as Album | AlbumArtist | Playlist | Song)?.imageUrl}
type="itemCard"
/>
{itemType === LibraryItem.GENRE &&
data &&
'name' in data &&
typeof (data as Genre).name === 'string' ? (
<GenreImagePlaceholder
className={clsx(styles.image, styles.genrePlaceholder, {
[styles.isRound]: isRound,
})}
name={(data as Genre).name}
/>
) : (
<ItemImage
className={clsx(styles.image, { [styles.isRound]: isRound })}
enableDebounce={false}
id={data?.imageId}
itemType={itemType}
src={(data as Album | AlbumArtist | Playlist | Song)?.imageUrl}
type="itemCard"
/>
)}
{isFavorite && <div className={styles.favoriteBadge} />}
{hasRating && <div className={styles.ratingBadge}>{userRating}</div>}
<AnimatePresence>
@@ -581,7 +624,7 @@ const DefaultItemCard = ({
[styles.selected]: isSelected,
})}
>
{enableNavigation && navigationPath && !internalState ? (
{enableNavigation && navigationPath && (imageAsLink ?? !internalState) ? (
<Link
className={imageContainerClassName}
draggable={false}
@@ -657,7 +700,9 @@ const PosterItemCard = ({
data,
enableDrag,
enableExpansion,
enableMultiSelect,
enableNavigation,
imageAsLink,
internalState,
isRound,
itemType,
@@ -677,29 +722,29 @@ const PosterItemCard = ({
return [];
}
const draggedItems = getDraggedItems(data, internalState);
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
return draggedItems.map((item) => item.id);
}, [data, internalState]);
}, [data, internalState, enableMultiSelect]);
const getItem = useCallback(() => {
if (!data) {
return [];
}
const draggedItems = getDraggedItems(data, internalState);
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
return draggedItems;
}, [data, internalState]);
}, [data, internalState, enableMultiSelect]);
const onDragStart = useCallback(() => {
if (!data) {
return;
}
const draggedItems = getDraggedItems(data, internalState);
const draggedItems = getDraggedItems(data, internalState, enableMultiSelect !== false);
if (internalState) {
internalState.setDragging(draggedItems);
}
}, [data, internalState]);
}, [data, internalState, enableMultiSelect]);
const onDrop = useCallback(() => {
if (internalState) {
@@ -833,13 +878,26 @@ const PosterItemCard = ({
const imageContainerContent = (
<>
<ItemImage
className={clsx(styles.image, { [styles.isRound]: isRound })}
id={(data as { imageId: string })?.imageId}
itemType={itemType}
src={(data as { imageUrl: string })?.imageUrl}
type="itemCard"
/>
{itemType === LibraryItem.GENRE &&
data &&
'name' in data &&
typeof (data as Genre).name === 'string' ? (
<GenreImagePlaceholder
className={clsx(styles.image, styles.genrePlaceholder, {
[styles.isRound]: isRound,
})}
name={(data as Genre).name}
/>
) : (
<ItemImage
className={clsx(styles.image, { [styles.isRound]: isRound })}
enableDebounce={false}
id={(data as { imageId: string })?.imageId}
itemType={itemType}
src={(data as { imageUrl: string })?.imageUrl}
type="itemCard"
/>
)}
{isFavorite && <div className={styles.favoriteBadge} />}
{hasRating && <div className={styles.ratingBadge}>{userRating}</div>}
<AnimatePresence>
@@ -866,7 +924,7 @@ const PosterItemCard = ({
})}
ref={ref}
>
{enableNavigation && navigationPath && !internalState ? (
{enableNavigation && navigationPath && (imageAsLink ?? !internalState) ? (
<Link
className={imageContainerClassName}
draggable={false}
@@ -981,6 +1039,17 @@ export const getDataRows = (type?: 'compact' | 'default' | 'poster'): DataRow[]
{data.name}
</Link>
);
case LibraryItem.GENRE:
return (
<Link
state={{ item: data }}
to={generatePath(AppRoute.LIBRARY_GENRES_DETAIL, {
genreId: data.id,
})}
>
{data.name}
</Link>
);
case LibraryItem.PLAYLIST:
return (
<Link
@@ -1209,7 +1278,7 @@ export const getDataRowsCount = () => {
return getDataRows().length;
};
const getImageUrl = (data: Album | AlbumArtist | Artist | Playlist | Song | undefined) => {
const getImageUrl = (data: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined) => {
if (data && 'imageUrl' in data) {
return data.imageUrl || undefined;
}
@@ -1217,8 +1286,23 @@ const getImageUrl = (data: Album | AlbumArtist | Artist | Playlist | Song | unde
return undefined;
};
const GenreImagePlaceholder = ({ className, name }: { className?: string; name: string }) => {
const { color, isLight } = useMemo(() => stringToColor(name), [name]);
return (
<div
className={className}
style={{
backgroundColor: color,
color: isLight ? '#000' : '#fff',
}}
>
<span className={styles.genrePlaceholderText}>{name}</span>
</div>
);
};
const getItemNavigationPath = (
data: Album | AlbumArtist | Artist | Playlist | Song | undefined,
data: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined,
itemType: LibraryItem,
): null | string => {
if (!data || !('id' in data) || !data.id) {
@@ -1237,7 +1321,7 @@ const ItemCardRow = memo(
row,
type,
}: {
data: Album | AlbumArtist | Artist | Playlist | Song | undefined;
data: Album | AlbumArtist | Artist | Genre | Playlist | Song | undefined;
index: number;
row: DataRow;
type?: 'compact' | 'default' | 'poster';
@@ -2,7 +2,15 @@ import {
ItemListStateActions,
ItemListStateItemWithRequiredProperties,
} from '/@/renderer/components/item-list/helpers/item-list-state';
import { Album, AlbumArtist, Artist, Folder, Playlist, Song } from '/@/shared/types/domain-types';
import {
Album,
AlbumArtist,
Artist,
Folder,
Genre,
Playlist,
Song,
} from '/@/shared/types/domain-types';
/**
* Type guard to assert that an item has the required properties for dragging
@@ -34,7 +42,7 @@ const hasRequiredDragProperties = (
* @returns Array of items that should be dragged (with original values, asserting id, itemType, and _serverId)
*/
export const getDraggedItems = (
data: Album | AlbumArtist | Artist | Folder | Playlist | Song | undefined,
data: Album | AlbumArtist | Artist | Folder | Genre | Playlist | Song | undefined,
internalState?: ItemListStateActions,
updateSelection: boolean = true,
): ItemListStateItemWithRequiredProperties[] => {
@@ -6,10 +6,13 @@ import { ItemListStateItemWithRequiredProperties } from '/@/renderer/components/
import { DefaultItemControlProps, ItemControls } from '/@/renderer/components/item-list/types';
import { ContextMenuController } from '/@/renderer/features/context-menu/context-menu-controller';
import { usePlayer } from '/@/renderer/features/player/context/player-context';
import { useSetFavorite } from '/@/renderer/features/shared/hooks/use-set-favorite';
import { useSetRating } from '/@/renderer/features/shared/hooks/use-set-rating';
import { LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types';
import { Play, TableColumn } from '/@/shared/types/types';
interface UseDefaultItemListControlsArgs {
enableMultiSelect?: boolean;
onColumnReordered?: (
columnIdFrom: TableColumn,
columnIdTo: TableColumn,
@@ -33,12 +36,14 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
const player = usePlayer();
const navigate = useNavigate();
const navigateRef = useRef(navigate);
const setFavorite = useSetFavorite();
const setRating = useSetRating();
useEffect(() => {
navigateRef.current = navigate;
}, [navigate]);
const { onColumnReordered, onColumnResized, overrides } = args || {};
const { enableMultiSelect = true, onColumnReordered, onColumnResized, overrides } = args || {};
const controls: ItemControls = useMemo(() => {
return {
@@ -301,7 +306,7 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
return;
}
player.setFavorite(item._serverId, [item.id], apiItemType, favorite);
setFavorite(item._serverId, [item.id], apiItemType, favorite);
},
onMore: ({ event, internalState, item, itemType }: DefaultItemControlProps) => {
@@ -329,6 +334,13 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
if (!rowId) return;
if (!enableMultiSelect) {
return ContextMenuController.call({
cmd: { items: [item] as any[], type: actualItemType as any },
event,
});
}
// If none selected, select this item
if (internalState.getSelected().length === 0) {
internalState.setSelected([item]);
@@ -398,12 +410,20 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
newRating = 0;
}
player.setRating(item._serverId, [item.id], apiItemType, newRating);
setRating(item._serverId, [item.id], apiItemType, newRating);
},
...overrides,
};
}, [onColumnReordered, onColumnResized, overrides, player]);
}, [
enableMultiSelect,
overrides,
onColumnReordered,
onColumnResized,
player,
setFavorite,
setRating,
]);
return controls;
};
@@ -26,6 +26,10 @@ const getDefaultRowsForItemType = (
return [rowMap.get('name')].filter(
(row): row is NonNullable<typeof row> => row !== undefined,
);
case LibraryItem.GENRE:
return [rowMap.get('name')].filter(
(row): row is NonNullable<typeof row> => row !== undefined,
);
case LibraryItem.PLAYLIST:
return [rowMap.get('name')].filter(
(row): row is NonNullable<typeof row> => row !== undefined,
@@ -53,6 +57,7 @@ const getRowIdFromTableColumn = (tableColumn: TableColumn): null | string => {
[TableColumn.CHANNELS]: null,
[TableColumn.CODEC]: null,
[TableColumn.COMMENT]: null,
[TableColumn.COMPOSER]: null,
[TableColumn.DATE_ADDED]: 'createdAt',
[TableColumn.DISC_NUMBER]: null,
[TableColumn.DURATION]: 'duration',
@@ -1,4 +1,4 @@
import { useMemo } from 'react';
import { useCallback, useMemo } from 'react';
import { useSearchParams } from 'react-router';
import { parseIntParam, setSearchParam } from '/@/renderer/utils/query-params';
@@ -12,11 +12,16 @@ export const useItemListScrollPersist = ({ enabled }: UseItemListScrollPersistPr
const scrollOffset = useMemo(() => parseIntParam(searchParams, 'scrollOffset'), [searchParams]);
const handleOnScrollEnd = (offset: number) => {
if (!enabled) return;
const handleOnScrollEnd = useCallback(
(offset: number) => {
if (!enabled) return;
setSearchParams((prev) => setSearchParam(prev, 'scrollOffset', offset), { replace: true });
};
setSearchParams((prev) => setSearchParam(prev, 'scrollOffset', offset), {
replace: true,
});
},
[enabled, setSearchParams],
);
return { handleOnScrollEnd, scrollOffset };
};
@@ -56,6 +56,7 @@ interface VirtualizedGridListProps {
dataVersion?: number;
enableDrag?: boolean;
enableExpansion: boolean;
enableMultiSelect: boolean;
enableSelection: boolean;
gap: 'lg' | 'md' | 'sm' | 'xl' | 'xs';
getItem?: (index: number) => ItemCardProps['data'];
@@ -86,6 +87,7 @@ const VirtualizedGridList = React.memo(
dataVersion,
enableDrag,
enableExpansion,
enableMultiSelect,
enableSelection,
gap,
getItem,
@@ -106,6 +108,8 @@ const VirtualizedGridList = React.memo(
}: VirtualizedGridListProps) => {
const tableMeta = tableMetaRef.current;
const scrollEndTimeoutRef = useRef<NodeJS.Timeout | null>(null);
const isInitialScrollRef = useRef(true);
const initialScrollOffsetRef = useRef<null | number>(null);
const itemData: GridItemProps = useMemo(() => {
return {
@@ -114,6 +118,7 @@ const VirtualizedGridList = React.memo(
dataVersion,
enableDrag,
enableExpansion,
enableMultiSelect,
enableSelection,
gap,
getItem,
@@ -133,6 +138,7 @@ const VirtualizedGridList = React.memo(
dataVersion,
enableDrag,
enableExpansion,
enableMultiSelect,
enableSelection,
gap,
internalState,
@@ -144,6 +150,16 @@ const VirtualizedGridList = React.memo(
({ scrollDirection, scrollOffset }: ListOnScrollProps) => {
onScroll?.(scrollOffset, scrollDirection === 'forward' ? 'down' : 'up');
if (isInitialScrollRef.current) {
if (initialScrollOffsetRef.current === null) {
initialScrollOffsetRef.current = scrollOffset;
return;
} else if (Math.abs(initialScrollOffsetRef.current - scrollOffset) < 1) {
return;
}
isInitialScrollRef.current = false;
}
if (scrollEndTimeoutRef.current) {
clearTimeout(scrollEndTimeoutRef.current);
}
@@ -175,6 +191,11 @@ const VirtualizedGridList = React.memo(
[onRangeChanged, tableMetaRef],
);
useEffect(() => {
isInitialScrollRef.current = true;
initialScrollOffsetRef.current = null;
}, [initialTop]);
if (!tableMeta) {
return null;
}
@@ -296,6 +317,7 @@ export interface GridItemProps {
dataVersion?: number;
enableDrag?: boolean;
enableExpansion?: boolean;
enableMultiSelect: boolean;
enableSelection?: boolean;
gap: 'lg' | 'md' | 'sm' | 'xl' | 'xs';
getItem?: (index: number) => ItemCardProps['data'];
@@ -318,6 +340,7 @@ export interface ItemGridListProps {
enableDrag?: boolean;
enableEntranceAnimation?: boolean;
enableExpansion?: boolean;
enableMultiSelect?: boolean;
enableSelection?: boolean;
enableSelectionDialog?: boolean;
gap?: 'lg' | 'md' | 'sm' | 'xl' | 'xs';
@@ -347,6 +370,7 @@ const BaseItemGridList = ({
enableDrag = true,
enableEntranceAnimation = true,
enableExpansion = false,
enableMultiSelect = false,
enableSelection = true,
gap = 'sm',
getItem,
@@ -487,7 +511,10 @@ const BaseItemGridList = ({
});
}, [containerWidth, resolvedItemCount, throttledSetTableMeta, containerRef]);
const controls = useDefaultItemListControls({ overrides: overrideControls });
const controls = useDefaultItemListControls({
enableMultiSelect,
overrides: overrideControls,
});
const scrollToIndex = useCallback(
(
@@ -770,7 +797,7 @@ const BaseItemGridList = ({
ref={mergedContainerRef}
tabIndex={0}
{...animationProps.fadeIn}
transition={{ duration: enableEntranceAnimation ? 1 : 0, ease: 'anticipate' }}
transition={{ duration: enableEntranceAnimation ? 0.5 : 0, ease: 'anticipate' }}
>
<AutoSizer>
{({ height, width }) => (
@@ -781,6 +808,7 @@ const BaseItemGridList = ({
dataVersion={dataVersion}
enableDrag={enableDrag}
enableExpansion={enableExpansion}
enableMultiSelect={enableMultiSelect}
enableSelection={enableSelection}
gap={gap}
getItem={resolvedGetItem}
@@ -811,8 +839,18 @@ const BaseItemGridList = ({
const ListComponent = memo((props: ListChildComponentProps<GridItemProps>) => {
const { index, style } = props;
const { columns, controls, enableDrag, gap, getItem, itemCount, itemType, rows, size } =
props.data;
const {
columns,
controls,
enableDrag,
enableMultiSelect,
gap,
getItem,
itemCount,
itemType,
rows,
size,
} = props.data;
const items: ReactNode[] = [];
const startIndex = index * columns;
@@ -840,6 +878,8 @@ const ListComponent = memo((props: ListChildComponentProps<GridItemProps>) => {
data={item}
enableDrag={enableDrag}
enableExpansion={props.data.enableExpansion}
enableMultiSelect={enableMultiSelect}
imageAsLink={!enableMultiSelect}
internalState={props.data.internalState}
itemType={itemType}
rows={rows}
@@ -0,0 +1,43 @@
import React from 'react';
import { CellComponentProps } from 'react-window-v2';
import { TableItemProps } from '/@/renderer/components/item-list/item-table-list/item-table-list';
import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { LibraryItem } from '/@/shared/types/domain-types';
import { TableColumn } from '/@/shared/types/types';
export const createColumnCellComponent = (
columnType: TableColumn,
itemType: LibraryItem,
): React.ComponentType<CellComponentProps<TableItemProps>> => {
return React.memo(
(props: CellComponentProps<TableItemProps>) => {
return <ItemTableListColumn {...props} columnType={columnType} itemType={itemType} />;
},
(prevProps, nextProps) => {
return (
prevProps.rowIndex === nextProps.rowIndex &&
prevProps.columnIndex === nextProps.columnIndex &&
prevProps.data === nextProps.data &&
prevProps.style === nextProps.style &&
prevProps.columns === nextProps.columns
);
},
);
};
export const createColumnCellComponents = (
columns: TableColumn[],
itemType: LibraryItem,
): Map<TableColumn, React.ComponentType<CellComponentProps<TableItemProps>>> => {
const componentMap = new Map<
TableColumn,
React.ComponentType<CellComponentProps<TableItemProps>>
>();
columns.forEach((columnType) => {
componentMap.set(columnType, createColumnCellComponent(columnType, itemType));
});
return componentMap;
};
@@ -1,5 +1,4 @@
import clsx from 'clsx';
import { memo } from 'react';
import styles from './album-artists-column.module.css';
@@ -54,6 +53,4 @@ const AlbumArtistsColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonVariable {...props} />;
};
export const AlbumArtistsColumnMemo = memo(AlbumArtistsColumn);
export { AlbumArtistsColumnMemo as AlbumArtistsColumn };
export { AlbumArtistsColumn };
@@ -1,5 +1,5 @@
import clsx from 'clsx';
import { memo, useMemo } from 'react';
import { useMemo } from 'react';
import { generatePath, Link } from 'react-router';
import styles from './album-column.module.css';
@@ -75,6 +75,4 @@ const AlbumColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonVariable {...props} />;
};
export const AlbumColumnMemo = memo(AlbumColumn);
export { AlbumColumnMemo as AlbumColumn };
export { AlbumColumn };
@@ -1,5 +1,5 @@
import clsx from 'clsx';
import { Fragment, memo, useMemo } from 'react';
import { Fragment, useMemo } from 'react';
import { generatePath, Link } from 'react-router';
import styles from './album-artists-column.module.css';
@@ -109,6 +109,4 @@ const BaseArtistsColumn = (props: ItemTableListInnerColumn) => {
}
};
const ArtistsColumnMemo = memo(BaseArtistsColumn);
export { ArtistsColumnMemo as ArtistsColumn };
export { BaseArtistsColumn as ArtistsColumn };
@@ -1,5 +1,4 @@
import clsx from 'clsx';
import { memo } from 'react';
import styles from './composer-column.module.css';
@@ -12,7 +11,7 @@ import {
import { JoinedArtists } from '/@/renderer/features/albums/components/joined-artists';
import { Album, RelatedArtist, Song } from '/@/shared/types/domain-types';
const ComposerColumn = (props: ItemTableListInnerColumn) => {
export const ComposerColumn = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const item = rowItem as Album | Song | undefined;
@@ -44,7 +43,3 @@ const ComposerColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonVariable {...props} />;
};
export const ComposerColumnMemo = memo(ComposerColumn);
export { ComposerColumnMemo as ComposerColumn };
@@ -1,3 +1,5 @@
import { useMemo } from 'react';
import {
ColumnNullFallback,
ColumnSkeletonFixed,
@@ -29,15 +31,25 @@ const getDateTooltipLabel = (utcString: string) => {
);
};
export const DateColumn = (props: ItemTableListInnerColumn) => {
const DateColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
const { formattedDate, tooltipLabel } = useMemo(() => {
if (typeof row === 'string' && row) {
return {
formattedDate: formatDateAbsolute(row),
tooltipLabel: getDateTooltipLabel(row),
};
}
return { formattedDate: null, tooltipLabel: null };
}, [row]);
if (typeof row === 'string' && row) {
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(row)} multiline={false}>
<span>{formatDateAbsolute(row)}</span>
<Tooltip label={tooltipLabel} multiline={false}>
<span>{formattedDate}</span>
</Tooltip>
</TableColumnTextContainer>
);
@@ -50,42 +62,63 @@ export const DateColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonFixed {...props} />;
};
export const AbsoluteDateColumn = (props: ItemTableListInnerColumn) => {
export const DateColumn = DateColumnBase;
const AbsoluteDateColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
const releaseDateContent = useMemo(() => {
if (props.type === TableColumn.RELEASE_DATE) {
const item = rowItem as any;
if (item && 'releaseDate' in item && item.releaseDate) {
const releaseDate = item.releaseDate;
const originalDate =
'originalDate' in item && item.originalDate && item.originalDate !== releaseDate
? item.originalDate
: null;
if (originalDate) {
const formattedOriginalDate = formatDateAbsoluteUTC(originalDate);
const formattedReleaseDate = formatDateAbsoluteUTC(releaseDate);
const displayText = `${formattedOriginalDate}${SEPARATOR_STRING}${formattedReleaseDate}`;
return {
displayText,
tooltipLabel: getDateTooltipLabel(releaseDate),
};
}
if (typeof releaseDate === 'string' && releaseDate) {
return {
displayText: formatDateAbsoluteUTC(releaseDate),
tooltipLabel: getDateTooltipLabel(releaseDate),
};
}
}
}
return null;
}, [props.type, rowItem]);
const { formattedDate, tooltipLabel } = useMemo(() => {
if (typeof row === 'string' && row) {
return {
formattedDate: formatDateAbsoluteUTC(row),
tooltipLabel: getDateTooltipLabel(row),
};
}
return { formattedDate: null, tooltipLabel: null };
}, [row]);
if (props.type === TableColumn.RELEASE_DATE) {
const item = rowItem as any;
if (item && 'releaseDate' in item && item.releaseDate) {
const releaseDate = item.releaseDate;
const originalDate =
'originalDate' in item && item.originalDate && item.originalDate !== releaseDate
? item.originalDate
: null;
if (originalDate) {
const formattedOriginalDate = formatDateAbsoluteUTC(originalDate);
const formattedReleaseDate = formatDateAbsoluteUTC(releaseDate);
const displayText = `${formattedOriginalDate}${SEPARATOR_STRING}${formattedReleaseDate}`;
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(releaseDate)} multiline={false}>
<span>{displayText}</span>
</Tooltip>
</TableColumnTextContainer>
);
}
if (typeof releaseDate === 'string' && releaseDate) {
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(releaseDate)} multiline={false}>
<span>{formatDateAbsoluteUTC(releaseDate)}</span>
</Tooltip>
</TableColumnTextContainer>
);
}
if (releaseDateContent) {
return (
<TableColumnTextContainer {...props}>
<Tooltip label={releaseDateContent.tooltipLabel} multiline={false}>
<span>{releaseDateContent.displayText}</span>
</Tooltip>
</TableColumnTextContainer>
);
}
if (row === null) {
@@ -98,8 +131,8 @@ export const AbsoluteDateColumn = (props: ItemTableListInnerColumn) => {
if (typeof row === 'string' && row) {
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(row)} multiline={false}>
<span>{formatDateAbsoluteUTC(row)}</span>
<Tooltip label={tooltipLabel} multiline={false}>
<span>{formattedDate}</span>
</Tooltip>
</TableColumnTextContainer>
);
@@ -112,15 +145,27 @@ export const AbsoluteDateColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonFixed {...props} />;
};
export const RelativeDateColumn = (props: ItemTableListInnerColumn) => {
export const AbsoluteDateColumn = AbsoluteDateColumnBase;
const RelativeDateColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
const { formattedDate, tooltipLabel } = useMemo(() => {
if (typeof row === 'string') {
return {
formattedDate: formatDateRelative(row),
tooltipLabel: getDateTooltipLabel(row),
};
}
return { formattedDate: null, tooltipLabel: null };
}, [row]);
if (typeof row === 'string') {
return (
<TableColumnTextContainer {...props}>
<Tooltip label={getDateTooltipLabel(row)} multiline={false}>
<span>{formatDateRelative(row)}</span>
<Tooltip label={tooltipLabel} multiline={false}>
<span>{formattedDate}</span>
</Tooltip>
</TableColumnTextContainer>
);
@@ -132,3 +177,5 @@ export const RelativeDateColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonFixed {...props} />;
};
export const RelativeDateColumn = RelativeDateColumnBase;
@@ -1,4 +1,5 @@
import formatDuration from 'format-duration';
import { useMemo } from 'react';
import {
ColumnNullFallback,
@@ -7,14 +8,16 @@ import {
TableColumnTextContainer,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
export const DurationColumn = (props: ItemTableListInnerColumn) => {
const DurationColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: number | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
const formattedDuration = useMemo(() => {
return typeof row === 'number' ? formatDuration(row) : null;
}, [row]);
if (typeof row === 'number') {
return (
<TableColumnTextContainer {...props}>{formatDuration(row)}</TableColumnTextContainer>
);
return <TableColumnTextContainer {...props}>{formattedDuration}</TableColumnTextContainer>;
}
if (row === null) {
@@ -23,3 +26,5 @@ export const DurationColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonFixed {...props} />;
};
export const DurationColumn = DurationColumnBase;
@@ -1,4 +1,4 @@
import { memo, useMemo } from 'react';
import { useMemo } from 'react';
import { generatePath, Link } from 'react-router';
import styles from './genre-badge-column.module.css';
@@ -60,6 +60,4 @@ const GenreBadgeColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonVariable {...props} />;
};
export const GenreColumnMemo = memo(GenreBadgeColumn);
export { GenreColumnMemo as GenreBadgeColumn };
export { GenreBadgeColumn };
@@ -1,5 +1,5 @@
import clsx from 'clsx';
import { Fragment, memo, useMemo } from 'react';
import { Fragment, useMemo } from 'react';
import { generatePath, Link } from 'react-router';
import styles from './genre-column.module.css';
@@ -64,6 +64,4 @@ const GenreColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonVariable {...props} />;
};
export const GenreColumnMemo = memo(GenreColumn);
export { GenreColumnMemo as GenreColumn };
export { GenreColumn };
@@ -19,7 +19,7 @@ import { Skeleton } from '/@/shared/components/skeleton/skeleton';
import { Folder, LibraryItem } from '/@/shared/types/domain-types';
import { Play } from '/@/shared/types/types';
export const ImageColumn = (props: ItemTableListInnerColumn) => {
const ImageColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: string | undefined = rowItem?.id;
const item = rowItem as any;
@@ -27,6 +27,9 @@ export const ImageColumn = (props: ItemTableListInnerColumn) => {
const internalState = (props as any).internalState;
const [isHovered, setIsHovered] = useState(false);
const isFolder = (rowItem as unknown as Folder)?._itemType === LibraryItem.FOLDER;
const shouldShowFolderIcon = isFolder && !item?.imageId && !item?.imageUrl;
const handlePlay = (playType: Play, event: React.MouseEvent<HTMLButtonElement>) => {
if (!item) {
return;
@@ -81,9 +84,12 @@ export const ImageColumn = (props: ItemTableListInnerColumn) => {
>
<ItemImage
containerClassName={clsx({
[styles.compactImageContainer]: props.size === 'compact',
[styles.imageContainerWithAspectRatio]:
props.size === 'default' || props.size === 'large',
})}
enableDebounce={true}
enableViewport={false}
id={item?.imageId}
itemType={item?._itemType}
src={item?.imageUrl}
@@ -114,7 +120,7 @@ export const ImageColumn = (props: ItemTableListInnerColumn) => {
);
}
if ((rowItem as unknown as Folder)?._itemType === LibraryItem.FOLDER) {
if (shouldShowFolderIcon) {
return (
<TableColumnContainer {...props}>
<Icon className={styles.folderIcon} icon="folder" size="2xl" />
@@ -136,3 +142,5 @@ export const ImageColumn = (props: ItemTableListInnerColumn) => {
</TableColumnContainer>
);
};
export const ImageColumn = ImageColumnBase;
@@ -19,7 +19,7 @@ import { useLongPress } from '/@/shared/hooks/use-long-press';
import { LibraryItem } from '/@/shared/types/domain-types';
import { DragOperation, DragTarget, DragTargetMap } from '/@/shared/types/drag-and-drop';
export const PlaylistReorderColumn = (props: ItemTableListInnerColumn) => {
const PlaylistReorderColumnBase = (props: ItemTableListInnerColumn) => {
const { t } = useTranslation();
const { playlistId } = useParams() as { playlistId?: string };
const isHeaderEnabled = !!props.enableHeader;
@@ -363,3 +363,5 @@ export const PlaylistReorderColumn = (props: ItemTableListInnerColumn) => {
</TableColumnContainer>
);
};
export const PlaylistReorderColumn = PlaylistReorderColumnBase;
@@ -1,5 +1,4 @@
import clsx from 'clsx';
import { memo } from 'react';
import styles from './row-index-column.module.css';
@@ -18,7 +17,7 @@ import { Text } from '/@/shared/components/text/text';
import { LibraryItem, QueueSong } from '/@/shared/types/domain-types';
import { PlayerStatus } from '/@/shared/types/types';
export const RowIndexColumn = (props: ItemTableListInnerColumn) => {
const RowIndexColumnBase = (props: ItemTableListInnerColumn) => {
const { itemType } = props;
switch (itemType) {
@@ -32,6 +31,8 @@ export const RowIndexColumn = (props: ItemTableListInnerColumn) => {
}
};
export const RowIndexColumn = RowIndexColumnBase;
const DefaultRowIndexColumn = (props: ItemTableListInnerColumn) => {
const {
controls,
@@ -112,30 +113,28 @@ const QueueSongRowIndexColumn = (props: ItemTableListInnerColumn) => {
);
};
const InnerQueueSongRowIndexColumn = memo(
(
props: ItemTableListInnerColumn & {
adjustedRowIndex: number;
isActive: boolean;
isPlaying: boolean;
},
) => {
return (
<TableColumnTextContainer {...props}>
{props.isActive ? (
props.isPlaying ? (
<Flex>
<Icon fill="primary" icon="mediaPlay" />
</Flex>
) : (
<Flex>
<Icon fill="primary" icon="mediaPause" />
</Flex>
)
) : (
props.adjustedRowIndex
)}
</TableColumnTextContainer>
);
const InnerQueueSongRowIndexColumn = (
props: ItemTableListInnerColumn & {
adjustedRowIndex: number;
isActive: boolean;
isPlaying: boolean;
},
);
) => {
return (
<TableColumnTextContainer {...props}>
{props.isActive ? (
props.isPlaying ? (
<Flex>
<Icon fill="primary" icon="mediaPlay" />
</Flex>
) : (
<Flex>
<Icon fill="primary" icon="mediaPause" />
</Flex>
)
) : (
props.adjustedRowIndex
)}
</TableColumnTextContainer>
);
};
@@ -1,3 +1,5 @@
import { useMemo } from 'react';
import {
ColumnNullFallback,
ColumnSkeletonFixed,
@@ -6,14 +8,16 @@ import {
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { formatSizeString } from '/@/renderer/utils/format';
export const SizeColumn = (props: ItemTableListInnerColumn) => {
const SizeColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: number | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
const formattedSize = useMemo(() => {
return typeof row === 'number' ? formatSizeString(row) : null;
}, [row]);
if (typeof row === 'number') {
return (
<TableColumnTextContainer {...props}>{formatSizeString(row)}</TableColumnTextContainer>
);
return <TableColumnTextContainer {...props}>{formattedSize}</TableColumnTextContainer>;
}
if (row === null) {
@@ -22,3 +26,5 @@ export const SizeColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonFixed {...props} />;
};
export const SizeColumn = SizeColumnBase;
@@ -194,7 +194,7 @@ export const QueueSongTitleArtistColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonVariable {...props} />;
};
export const TitleArtistColumn = (props: ItemTableListInnerColumn) => {
const TitleArtistColumnBase = (props: ItemTableListInnerColumn) => {
const { itemType } = props;
switch (itemType) {
@@ -207,3 +207,5 @@ export const TitleArtistColumn = (props: ItemTableListInnerColumn) => {
return <DefaultTitleArtistColumn {...props} />;
}
};
export const TitleArtistColumn = TitleArtistColumnBase;
@@ -14,7 +14,7 @@ import { useIsActiveRow } from '/@/renderer/components/item-list/item-table-list
import { Text } from '/@/shared/components/text/text';
import { LibraryItem, QueueSong } from '/@/shared/types/domain-types';
export const TitleColumn = (props: ItemTableListInnerColumn) => {
const TitleColumnBase = (props: ItemTableListInnerColumn) => {
const { itemType } = props;
switch (itemType) {
@@ -28,6 +28,8 @@ export const TitleColumn = (props: ItemTableListInnerColumn) => {
}
};
export const TitleColumn = TitleColumnBase;
function DefaultTitleColumn(props: ItemTableListInnerColumn) {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const row: string | undefined = rowItem?.[props.columns[props.columnIndex].id];
@@ -103,6 +103,8 @@ export const DefaultTitleCombinedColumn = (props: ItemTableListInnerColumn) => {
>
<ItemImage
containerClassName={styles.image}
enableDebounce={true}
enableViewport={false}
id={item?.imageId}
itemType={item?._itemType}
src={item?.imageUrl}
@@ -361,7 +363,7 @@ export const QueueSongTitleCombinedColumn = (props: ItemTableListInnerColumn) =>
return <ColumnSkeletonVariable {...props} />;
};
export const TitleCombinedColumn = (props: ItemTableListInnerColumn) => {
const TitleCombinedColumnBase = (props: ItemTableListInnerColumn) => {
const { itemType } = props;
switch (itemType) {
@@ -374,3 +376,5 @@ export const TitleCombinedColumn = (props: ItemTableListInnerColumn) => {
return <DefaultTitleCombinedColumn {...props} />;
}
};
export const TitleCombinedColumn = TitleCombinedColumnBase;
@@ -1,3 +1,5 @@
import { useMemo } from 'react';
import {
ColumnNullFallback,
ColumnSkeletonFixed,
@@ -6,28 +8,29 @@ import {
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { SEPARATOR_STRING } from '/@/shared/api/utils';
export const YearColumn = (props: ItemTableListInnerColumn) => {
const YearColumnBase = (props: ItemTableListInnerColumn) => {
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
const item = rowItem as any;
if (item && 'releaseYear' in item && item.releaseYear !== null) {
const releaseYear = item.releaseYear;
const originalYear =
'originalYear' in item && item.originalYear !== null ? item.originalYear : null;
const yearDisplay = useMemo(() => {
if (item && 'releaseYear' in item && item.releaseYear !== null) {
const releaseYear = item.releaseYear;
const originalYear =
'originalYear' in item && item.originalYear !== null ? item.originalYear : null;
if (originalYear !== null && originalYear !== releaseYear) {
return (
<TableColumnTextContainer {...props}>
{originalYear}
{SEPARATOR_STRING}
{releaseYear}
</TableColumnTextContainer>
);
}
if (originalYear !== null && originalYear !== releaseYear) {
return `${originalYear}${SEPARATOR_STRING}${releaseYear}`;
}
if (typeof releaseYear === 'number') {
return <TableColumnTextContainer {...props}>{releaseYear}</TableColumnTextContainer>;
if (typeof releaseYear === 'number') {
return releaseYear;
}
}
return null;
}, [item]);
if (yearDisplay !== null) {
return <TableColumnTextContainer {...props}>{yearDisplay}</TableColumnTextContainer>;
}
const row: number | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
@@ -38,3 +41,5 @@ export const YearColumn = (props: ItemTableListInnerColumn) => {
return <ColumnSkeletonFixed {...props} />;
};
export const YearColumn = YearColumnBase;
@@ -1,4 +1,4 @@
import { useEffect } from 'react';
import { useLayoutEffect } from 'react';
interface UseContainerWidthTrackingProps {
autoFitColumns: boolean;
@@ -18,14 +18,58 @@ export const useContainerWidthTracking = ({
setCenterContainerWidth,
setTotalContainerWidth,
}: UseContainerWidthTrackingProps) => {
const createWidthUpdater = (
el: HTMLDivElement,
setWidth: (width: number) => void,
opts?: { maxRafRetries?: number },
) => {
const maxRafRetries = opts?.maxRafRetries ?? 10;
let rafId: null | number = null;
const cancel = () => {
if (rafId !== null) cancelAnimationFrame(rafId);
rafId = null;
};
const updateWidth = () => {
const measured = el.clientWidth || 0;
if (measured > 0) {
cancel();
setWidth(measured);
return;
}
// Some layouts can report 0 on first paint
// Retry a few frames to catch the first non-zero measurement
cancel();
let attempts = 0;
const retry = () => {
const next = el.clientWidth || 0;
if (next > 0) {
rafId = null;
setWidth(next);
return;
}
attempts++;
if (attempts < maxRafRetries) {
rafId = requestAnimationFrame(retry);
} else {
rafId = null;
setWidth(0);
}
};
rafId = requestAnimationFrame(retry);
};
return { cancel, updateWidth };
};
// Track center container width (for column distribution)
useEffect(() => {
useLayoutEffect(() => {
const el = rowRef.current;
if (!el) return;
const updateWidth = () => {
setCenterContainerWidth(el.clientWidth || 0);
};
const { cancel, updateWidth } = createWidthUpdater(el, setCenterContainerWidth);
updateWidth();
@@ -45,18 +89,17 @@ export const useContainerWidthTracking = ({
if (debounceTimeout) {
clearTimeout(debounceTimeout);
}
cancel();
resizeObserver.disconnect();
};
}, [rowRef, setCenterContainerWidth]);
// Track total container width for autoFitColumns
useEffect(() => {
useLayoutEffect(() => {
const el = containerRef.current;
if (!el || !autoFitColumns) return;
const updateWidth = () => {
setTotalContainerWidth(el.clientWidth || 0);
};
const { cancel, updateWidth } = createWidthUpdater(el, setTotalContainerWidth);
updateWidth();
@@ -76,6 +119,7 @@ export const useContainerWidthTracking = ({
if (debounceTimeout) {
clearTimeout(debounceTimeout);
}
cancel();
resizeObserver.disconnect();
};
}, [autoFitColumns, containerRef, setTotalContainerWidth]);
@@ -0,0 +1,306 @@
import { getDraggedItems } from '/@/renderer/components/item-list/helpers/get-dragged-items';
import { useItemDraggingState } from '/@/renderer/components/item-list/helpers/item-list-state';
import { ItemListStateActions } from '/@/renderer/components/item-list/helpers/item-list-state';
import { eventEmitter } from '/@/renderer/events/event-emitter';
import { PlayerContext } from '/@/renderer/features/player/context/player-context';
import { useDragDrop } from '/@/renderer/hooks/use-drag-drop';
import { Folder, LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types';
import { DragOperation, DragTarget, DragTargetMap } from '/@/shared/types/drag-and-drop';
interface DragDropState {
dragRef: null | React.Ref<HTMLDivElement>;
isDraggedOver: 'bottom' | 'top' | null;
isDragging: boolean;
}
interface UseItemDragDropStateProps {
enableDrag: boolean;
internalState: ItemListStateActions;
isDataRow: boolean;
item: unknown;
itemType: LibraryItem;
playerContext: PlayerContext;
playlistId?: string;
}
export const useItemDragDropState = ({
enableDrag,
internalState,
isDataRow,
item,
itemType,
playerContext,
playlistId,
}: UseItemDragDropStateProps): DragDropState => {
const shouldEnableDrag = enableDrag && isDataRow && !!item;
const {
isDraggedOver,
isDragging: isDraggingLocal,
ref: dragRef,
} = useDragDrop<HTMLDivElement>({
drag: {
getId: () => {
if (!item || !isDataRow) {
return [];
}
const draggedItems = getDraggedItems(item as any, internalState);
return draggedItems.map((draggedItem) => draggedItem.id);
},
getItem: () => {
if (!item || !isDataRow) {
return [];
}
const draggedItems = getDraggedItems(item as any, internalState);
return draggedItems;
},
itemType,
onDragStart: () => {
if (!item || !isDataRow) {
return;
}
const draggedItems = getDraggedItems(item as any, internalState);
if (internalState) {
internalState.setDragging(draggedItems);
}
},
onDrop: () => {
if (internalState) {
internalState.setDragging([]);
}
},
operation:
itemType === LibraryItem.QUEUE_SONG
? [DragOperation.REORDER, DragOperation.ADD]
: itemType === LibraryItem.PLAYLIST_SONG
? [DragOperation.REORDER, DragOperation.ADD]
: [DragOperation.ADD],
target: DragTargetMap[itemType] || DragTarget.GENERIC,
},
drop: {
canDrop: (args) => {
if (args.source.type === DragTarget.TABLE_COLUMN) {
return false;
}
// Allow drops for QUEUE_SONG (queue reordering)
if (itemType === LibraryItem.QUEUE_SONG) {
return true;
}
// Allow drops for PLAYLIST_SONG (playlist reordering)
// Only allow drops when drag is started from the reorder handle
if (
itemType === LibraryItem.PLAYLIST_SONG &&
args.source.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.metadata?.fromReorderHandle === true
) {
return true;
}
return false;
},
getData: () => {
return {
id: [(item as unknown as { id: string }).id],
item: [item as unknown as unknown[]],
itemType,
type: DragTargetMap[itemType] || DragTarget.GENERIC,
};
},
onDrag: () => {
return;
},
onDragLeave: () => {
return;
},
onDrop: (args) => {
if (args.self.type === DragTarget.QUEUE_SONG) {
const sourceServerId = (
args.source.item?.[0] as unknown as { _serverId: string }
)._serverId;
const sourceItemType = args.source.itemType as LibraryItem;
const droppedOnUniqueId = (
args.self.item?.[0] as unknown as { _uniqueId: string }
)._uniqueId;
switch (args.source.type) {
case DragTarget.ALBUM: {
playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.ALBUM_ARTIST: {
playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.ARTIST: {
playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.FOLDER: {
const items = args.source.item;
const { folders, songs } = (items || []).reduce<{
folders: Folder[];
songs: Song[];
}>(
(acc, item) => {
if ((item as unknown as Song)._itemType === LibraryItem.SONG) {
acc.songs.push(item as unknown as Song);
} else if (
(item as unknown as Folder)._itemType === LibraryItem.FOLDER
) {
acc.folders.push(item as unknown as Folder);
}
return acc;
},
{ folders: [], songs: [] },
);
const folderIds = folders.map((folder) => folder.id);
// Handle folders: fetch and add to queue
if (folderIds.length > 0) {
playerContext.addToQueueByFetch(
sourceServerId,
folderIds,
LibraryItem.FOLDER,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
}
// Handle songs: add directly to queue
if (songs.length > 0) {
playerContext.addToQueueByData(songs, {
edge: args.edge,
uniqueId: droppedOnUniqueId,
});
}
break;
}
case DragTarget.GENRE: {
playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.PLAYLIST: {
playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.QUEUE_SONG: {
const sourceItems = (args.source.item || []) as QueueSong[];
if (
sourceItems.length > 0 &&
args.edge &&
(args.edge === 'top' || args.edge === 'bottom')
) {
playerContext.moveSelectedTo(
sourceItems,
args.edge,
droppedOnUniqueId,
);
}
break;
}
case DragTarget.SONG: {
const sourceItems = (args.source.item || []) as Song[];
if (sourceItems.length > 0) {
playerContext.addToQueueByData(sourceItems, {
edge: args.edge,
uniqueId: droppedOnUniqueId,
});
}
break;
}
default: {
break;
}
}
}
// Handle PLAYLIST_SONG reordering
// Only allow drops when drag is started from the reorder handle
if (
args.self.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.metadata?.fromReorderHandle === true &&
playlistId
) {
const sourceItems = (args.source.item || []) as any[];
const targetItem = item as any;
if (
sourceItems.length > 0 &&
args.edge &&
(args.edge === 'top' || args.edge === 'bottom') &&
targetItem
) {
// Emit event to reorder playlist songs
eventEmitter.emit('PLAYLIST_REORDER', {
edge: args.edge,
playlistId,
sourceIds: args.source.id,
targetId: targetItem.id,
});
}
}
if (internalState) {
internalState.setDragging([]);
}
return;
},
},
isEnabled: shouldEnableDrag,
});
const itemRowId =
item && typeof item === 'object' && 'id' in item && internalState
? internalState.extractRowId(item)
: undefined;
const isDraggingState = useItemDraggingState(
internalState,
itemRowId ||
(item && typeof item === 'object' && 'id' in item ? (item as any).id : undefined),
);
const isDragging = internalState ? isDraggingState : isDraggingLocal;
return {
dragRef: shouldEnableDrag ? dragRef : null,
isDraggedOver: isDraggedOver === 'top' || isDraggedOver === 'bottom' ? isDraggedOver : null,
isDragging,
};
};
@@ -7,6 +7,7 @@ import { ItemListStateActions } from '/@/renderer/components/item-list/helpers/i
export const useTablePaneSync = ({
enableDrag,
enableDragScroll,
enableHeader,
handleRef,
onScrollEndRef,
@@ -22,6 +23,7 @@ export const useTablePaneSync = ({
setShowTopShadow,
}: {
enableDrag: boolean | undefined;
enableDragScroll: boolean | undefined;
enableHeader: boolean;
handleRef: React.RefObject<null | { internalState: ItemListStateActions }>;
onScrollEndRef: React.RefObject<
@@ -104,8 +106,9 @@ export const useTablePaneSync = ({
target: root,
});
if (enableDrag) {
autoScrollForElements({
let autoScrollCleanup: (() => void) | null = null;
if (enableDrag && enableDragScroll) {
autoScrollCleanup = autoScrollForElements({
canScroll: () => true,
element: viewport,
getAllowedAxis: () => 'vertical',
@@ -114,6 +117,10 @@ export const useTablePaneSync = ({
}
return () => {
if (autoScrollCleanup) {
autoScrollCleanup();
}
try {
const instance = osInstance();
const { current: root } = scrollContainerRef;
@@ -132,7 +139,14 @@ export const useTablePaneSync = ({
// Ignore error
}
};
}, [enableDrag, initialize, osInstance, pinnedRightColumnCount, scrollContainerRef]);
}, [
enableDrag,
enableDragScroll,
initialize,
osInstance,
pinnedRightColumnCount,
scrollContainerRef,
]);
useEffect(() => {
if (pinnedLeftColumnCount === 0) {
@@ -147,15 +161,22 @@ export const useTablePaneSync = ({
const viewport = root.firstElementChild as HTMLElement;
if (enableDrag) {
autoScrollForElements({
let autoScrollCleanup: (() => void) | null = null;
if (enableDrag && enableDragScroll) {
autoScrollCleanup = autoScrollForElements({
canScroll: () => true,
element: viewport,
getAllowedAxis: () => 'vertical',
getConfiguration: () => ({ maxScrollSpeed: 'fast' }),
});
}
}, [enableDrag, pinnedLeftColumnCount, pinnedLeftColumnRef]);
return () => {
if (autoScrollCleanup) {
autoScrollCleanup();
}
};
}, [enableDrag, enableDragScroll, pinnedLeftColumnCount, pinnedLeftColumnRef]);
// Initialize overlayscrollbars for right pinned columns
useEffect(() => {
@@ -176,8 +197,9 @@ export const useTablePaneSync = ({
target: root,
});
if (enableDrag) {
autoScrollForElements({
let autoScrollCleanup: (() => void) | null = null;
if (enableDrag && enableDragScroll) {
autoScrollCleanup = autoScrollForElements({
canScroll: () => true,
element: viewport,
getAllowedAxis: () => 'vertical',
@@ -186,6 +208,10 @@ export const useTablePaneSync = ({
}
return () => {
if (autoScrollCleanup) {
autoScrollCleanup();
}
try {
const instance = osInstanceRightPinned();
const { current: root } = pinnedRightColumnRef;
@@ -206,6 +232,7 @@ export const useTablePaneSync = ({
};
}, [
enableDrag,
enableDragScroll,
initializeRightPinned,
osInstanceRightPinned,
pinnedRightColumnCount,
@@ -10,18 +10,22 @@ import {
} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
import { disableNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/disable-native-drag-preview';
import clsx from 'clsx';
import React, { CSSProperties, ReactElement, ReactNode, useEffect, useRef, useState } from 'react';
import React, {
CSSProperties,
memo,
ReactElement,
ReactNode,
useEffect,
useRef,
useState,
} from 'react';
import { useParams } from 'react-router';
import { CellComponentProps } from 'react-window-v2';
import styles from './item-table-list-column.module.css';
import i18n from '/@/i18n/i18n';
import { getDraggedItems } from '/@/renderer/components/item-list/helpers/get-dragged-items';
import {
useItemDraggingState,
useItemSelectionState,
} from '/@/renderer/components/item-list/helpers/item-list-state';
import { useItemSelectionState } from '/@/renderer/components/item-list/helpers/item-list-state';
import { ActionsColumn } from '/@/renderer/components/item-list/item-table-list/columns/actions-column';
import { AlbumArtistsColumn } from '/@/renderer/components/item-list/item-table-list/columns/album-artists-column';
import { AlbumColumn } from '/@/renderer/components/item-list/item-table-list/columns/album-column';
@@ -50,27 +54,22 @@ import { TitleArtistColumn } from '/@/renderer/components/item-list/item-table-l
import { TitleColumn } from '/@/renderer/components/item-list/item-table-list/columns/title-column';
import { TitleCombinedColumn } from '/@/renderer/components/item-list/item-table-list/columns/title-combined-column';
import { YearColumn } from '/@/renderer/components/item-list/item-table-list/columns/year-column';
import { useItemDragDropState } from '/@/renderer/components/item-list/item-table-list/hooks/use-item-drag-drop-state';
import { TableItemProps } from '/@/renderer/components/item-list/item-table-list/item-table-list';
import { ItemControls, ItemListItem } from '/@/renderer/components/item-list/types';
import { eventEmitter } from '/@/renderer/events/event-emitter';
import { useDragDrop } from '/@/renderer/hooks/use-drag-drop';
import { Flex } from '/@/shared/components/flex/flex';
import { Icon } from '/@/shared/components/icon/icon';
import { Skeleton } from '/@/shared/components/skeleton/skeleton';
import { Text } from '/@/shared/components/text/text';
import { useDoubleClick } from '/@/shared/hooks/use-double-click';
import { useMergedRef } from '/@/shared/hooks/use-merged-ref';
import { Folder, LibraryItem, QueueSong, Song } from '/@/shared/types/domain-types';
import {
dndUtils,
DragData,
DragOperation,
DragTarget,
DragTargetMap,
} from '/@/shared/types/drag-and-drop';
import { LibraryItem } from '/@/shared/types/domain-types';
import { dndUtils, DragData, DragOperation, DragTarget } from '/@/shared/types/drag-and-drop';
import { TableColumn } from '/@/shared/types/types';
export interface ItemTableListColumn extends CellComponentProps<TableItemProps> {}
export interface ItemTableListColumn extends CellComponentProps<TableItemProps> {
columnType?: TableColumn;
}
export interface ItemTableListInnerColumn extends ItemTableListColumn {
controls: ItemControls;
@@ -80,9 +79,9 @@ export interface ItemTableListInnerColumn extends ItemTableListColumn {
type: TableColumn;
}
export const ItemTableListColumn = (props: ItemTableListColumn) => {
const ItemTableListColumnBase = (props: ItemTableListColumn) => {
const { playlistId } = useParams() as { playlistId?: string };
const type = props.columns[props.columnIndex].id as TableColumn;
const type = props.columnType ?? (props.columns[props.columnIndex].id as TableColumn);
const isHeaderEnabled = !!props.enableHeader;
const isDataRow = isHeaderEnabled ? props.rowIndex > 0 : true;
@@ -127,270 +126,16 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => {
}
}
const {
isDraggedOver,
isDragging: isDraggingLocal,
ref: dragRef,
} = useDragDrop<HTMLDivElement>({
drag: {
getId: () => {
if (!item || !isDataRow) {
return [];
}
const draggedItems = getDraggedItems(item as any, props.internalState);
return draggedItems.map((draggedItem) => draggedItem.id);
},
getItem: () => {
if (!item || !isDataRow) {
return [];
}
const draggedItems = getDraggedItems(item as any, props.internalState);
return draggedItems;
},
itemType: props.itemType,
onDragStart: () => {
if (!item || !isDataRow) {
return;
}
const draggedItems = getDraggedItems(item as any, props.internalState);
if (props.internalState) {
props.internalState.setDragging(draggedItems);
}
},
onDrop: () => {
if (props.internalState) {
props.internalState.setDragging([]);
}
},
operation:
props.itemType === LibraryItem.QUEUE_SONG
? [DragOperation.REORDER, DragOperation.ADD]
: props.itemType === LibraryItem.PLAYLIST_SONG
? [DragOperation.REORDER, DragOperation.ADD]
: [DragOperation.ADD],
target: DragTargetMap[props.itemType] || DragTarget.GENERIC,
},
drop: {
canDrop: (args) => {
if (args.source.type === DragTarget.TABLE_COLUMN) {
return false;
}
// Allow drops for QUEUE_SONG (queue reordering)
if (props.itemType === LibraryItem.QUEUE_SONG) {
return true;
}
// Allow drops for PLAYLIST_SONG (playlist reordering)
// Only allow drops when drag is started from the reorder handle
if (
props.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.metadata?.fromReorderHandle === true
) {
return true;
}
return false;
},
getData: () => {
return {
id: [(item as unknown as { id: string }).id],
item: [item as unknown as unknown[]],
itemType: props.itemType,
type: DragTargetMap[props.itemType] || DragTarget.GENERIC,
};
},
onDrag: () => {
return;
},
onDragLeave: () => {
return;
},
onDrop: (args) => {
if (args.self.type === DragTarget.QUEUE_SONG) {
const sourceServerId = (
args.source.item?.[0] as unknown as { _serverId: string }
)._serverId;
const sourceItemType = args.source.itemType as LibraryItem;
const droppedOnUniqueId = (
args.self.item?.[0] as unknown as { _uniqueId: string }
)._uniqueId;
switch (args.source.type) {
case DragTarget.ALBUM: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.ALBUM_ARTIST: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.ARTIST: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.FOLDER: {
const items = args.source.item;
const { folders, songs } = (items || []).reduce<{
folders: Folder[];
songs: Song[];
}>(
(acc, item) => {
if ((item as unknown as Song)._itemType === LibraryItem.SONG) {
acc.songs.push(item as unknown as Song);
} else if (
(item as unknown as Folder)._itemType === LibraryItem.FOLDER
) {
acc.folders.push(item as unknown as Folder);
}
return acc;
},
{ folders: [], songs: [] },
);
const folderIds = folders.map((folder) => folder.id);
// Handle folders: fetch and add to queue
if (folderIds.length > 0) {
props.playerContext.addToQueueByFetch(
sourceServerId,
folderIds,
LibraryItem.FOLDER,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
}
// Handle songs: add directly to queue
if (songs.length > 0) {
props.playerContext.addToQueueByData(songs, {
edge: args.edge,
uniqueId: droppedOnUniqueId,
});
}
break;
}
case DragTarget.GENRE: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.PLAYLIST: {
props.playerContext.addToQueueByFetch(
sourceServerId,
args.source.id,
sourceItemType,
{ edge: args.edge, uniqueId: droppedOnUniqueId },
);
break;
}
case DragTarget.QUEUE_SONG: {
const sourceItems = (args.source.item || []) as QueueSong[];
if (
sourceItems.length > 0 &&
args.edge &&
(args.edge === 'top' || args.edge === 'bottom')
) {
props.playerContext.moveSelectedTo(
sourceItems,
args.edge,
droppedOnUniqueId,
);
}
break;
}
case DragTarget.SONG: {
const sourceItems = (args.source.item || []) as Song[];
if (sourceItems.length > 0) {
props.playerContext.addToQueueByData(sourceItems, {
edge: args.edge,
uniqueId: droppedOnUniqueId,
});
}
break;
}
default: {
break;
}
}
}
// Handle PLAYLIST_SONG reordering
// Only allow drops when drag is started from the reorder handle
if (
args.self.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.itemType === LibraryItem.PLAYLIST_SONG &&
args.source.metadata?.fromReorderHandle === true &&
playlistId
) {
const sourceItems = (args.source.item || []) as any[];
const targetItem = item as any;
if (
sourceItems.length > 0 &&
args.edge &&
(args.edge === 'top' || args.edge === 'bottom') &&
targetItem
) {
// Emit event to reorder playlist songs
eventEmitter.emit('PLAYLIST_REORDER', {
edge: args.edge,
playlistId,
sourceIds: args.source.id,
targetId: targetItem.id,
});
}
}
if (props.internalState) {
props.internalState.setDragging([]);
}
return;
},
},
isEnabled: shouldEnableDrag,
const { dragRef, isDraggedOver, isDragging } = useItemDragDropState({
enableDrag: !!props.enableDrag,
internalState: props.internalState,
isDataRow,
item,
itemType: props.itemType,
playerContext: props.playerContext,
playlistId,
});
const itemRowId =
item && typeof item === 'object' && 'id' in item && props.internalState
? props.internalState.extractRowId(item)
: undefined;
const isDraggingState = useItemDraggingState(
props.internalState,
itemRowId ||
(item && typeof item === 'object' && 'id' in item ? (item as any).id : undefined),
);
const isDragging = props.internalState ? isDraggingState : isDraggingLocal;
const controls = props.controls;
const dragProps = {
@@ -583,6 +328,37 @@ export const ItemTableListColumn = (props: ItemTableListColumn) => {
}
};
export const ItemTableListColumn = memo(ItemTableListColumnBase, (prevProps, nextProps) => {
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
return (
prevProps.rowIndex === nextProps.rowIndex &&
prevProps.columnIndex === nextProps.columnIndex &&
prevProps.data === nextProps.data &&
prevProps.columns === nextProps.columns &&
prevProps.style === nextProps.style &&
prevProps.columnType === nextProps.columnType &&
prevProps.itemType === nextProps.itemType &&
prevProps.enableHeader === nextProps.enableHeader &&
prevProps.enableDrag === nextProps.enableDrag &&
prevProps.groups === nextProps.groups &&
prevProps.groupHeaderInfoByRowIndex === nextProps.groupHeaderInfoByRowIndex &&
prevProps.pinnedLeftColumnCount === nextProps.pinnedLeftColumnCount &&
prevProps.pinnedLeftColumnWidths === nextProps.pinnedLeftColumnWidths &&
prevProps.size === nextProps.size &&
prevProps.enableAlternateRowColors === nextProps.enableAlternateRowColors &&
prevProps.enableHorizontalBorders === nextProps.enableHorizontalBorders &&
prevProps.enableVerticalBorders === nextProps.enableVerticalBorders &&
prevProps.enableRowHoverHighlight === nextProps.enableRowHoverHighlight &&
prevProps.enableSelection === nextProps.enableSelection &&
prevProps.enableColumnResize === nextProps.enableColumnResize &&
prevProps.enableColumnReorder === nextProps.enableColumnReorder &&
prevProps.cellPadding === nextProps.cellPadding &&
prevItem === nextItem
);
});
const NonMutedColumns = [TableColumn.TITLE, TableColumn.TITLE_ARTIST, TableColumn.TITLE_COMBINED];
export const TableColumnTextContainer = (
@@ -715,7 +491,7 @@ export const TableColumnTextContainer = (
props.enableHorizontalBorders &&
props.enableHeader &&
props.rowIndex > 0 &&
!isLastRow,
(props.rowIndex === 1 || !isLastRow),
[styles.withVerticalBorder]: props.enableVerticalBorders && !isLastColumn,
})}
data-row-index={isDataRow ? `${props.tableId}-${props.rowIndex}` : undefined}
@@ -868,7 +644,7 @@ export const TableColumnContainer = (
props.enableHorizontalBorders &&
props.enableHeader &&
props.rowIndex > 0 &&
!isLastRow,
(props.rowIndex === 1 || !isLastRow),
[styles.withVerticalBorder]: props.enableVerticalBorders && !isLastColumn,
})}
data-row-index={isDataRow ? `${props.tableId}-${props.rowIndex}` : undefined}
@@ -43,10 +43,15 @@ import { useTableKeyboardNavigation } from '/@/renderer/components/item-list/ite
import { useTablePaneSync } from '/@/renderer/components/item-list/item-table-list/hooks/use-table-pane-sync';
import { useTableRowModel } from '/@/renderer/components/item-list/item-table-list/hooks/use-table-row-model';
import { useTableScrollToIndex } from '/@/renderer/components/item-list/item-table-list/hooks/use-table-scroll-to-index';
import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import {
ItemTableListConfigProvider,
ItemTableListStoreProvider,
} from '/@/renderer/components/item-list/item-table-list/item-table-list-context';
import {
MemoizedCellRouter,
useColumnCellComponents,
} from '/@/renderer/components/item-list/item-table-list/memoized-cell-router';
import {
ItemControls,
ItemListHandle,
@@ -197,6 +202,22 @@ const VirtualizedTableGrid = ({
[calculatedColumnWidths],
);
const columnWidthMemoized = useCallback(
(index: number) => columnWidth(index + pinnedLeftColumnCount),
[columnWidth, pinnedLeftColumnCount],
);
const rowHeightMemoized = useCallback(
(index: number, cellProps: TableItemProps) =>
getRowHeight(index + pinnedRowCount, cellProps),
[getRowHeight, pinnedRowCount],
);
const pinnedRightColumnWidthMemoized = useCallback(
(index: number) => columnWidth(index + pinnedLeftColumnCount + totalColumnCount),
[columnWidth, pinnedLeftColumnCount, totalColumnCount],
);
const groupHeaderInfoByRowIndex = useMemo(() => {
if (!groups || groups.length === 0) return undefined;
@@ -425,14 +446,16 @@ const VirtualizedTableGrid = ({
/>
);
},
[pinnedLeftColumnCount, CellComponent],
// eslint-disable-next-line react-hooks/exhaustive-deps
[pinnedLeftColumnCount, CellComponent, featureFlags, calculatedColumnWidths],
);
const PinnedColumnCell = useCallback(
(cellProps: CellComponentProps & TableItemProps) => {
return <CellComponent {...cellProps} rowIndex={cellProps.rowIndex + pinnedRowCount} />;
},
[pinnedRowCount, CellComponent],
// eslint-disable-next-line react-hooks/exhaustive-deps
[pinnedRowCount, CellComponent, featureFlags, calculatedColumnWidths],
);
const PinnedRightColumnCell = useCallback(
@@ -445,7 +468,15 @@ const VirtualizedTableGrid = ({
/>
);
},
[pinnedLeftColumnCount, pinnedRowCount, totalColumnCount, CellComponent],
// eslint-disable-next-line react-hooks/exhaustive-deps
[
pinnedLeftColumnCount,
pinnedRowCount,
totalColumnCount,
CellComponent,
featureFlags,
calculatedColumnWidths,
],
);
const PinnedRightIntersectionCell = useCallback(
@@ -457,7 +488,14 @@ const VirtualizedTableGrid = ({
/>
);
},
[pinnedLeftColumnCount, totalColumnCount, CellComponent],
// eslint-disable-next-line react-hooks/exhaustive-deps
[
pinnedLeftColumnCount,
totalColumnCount,
CellComponent,
featureFlags,
calculatedColumnWidths,
],
);
const RowCell = useCallback(
@@ -470,7 +508,14 @@ const VirtualizedTableGrid = ({
/>
);
},
[pinnedLeftColumnCount, pinnedRowCount, CellComponent],
// eslint-disable-next-line react-hooks/exhaustive-deps
[
pinnedLeftColumnCount,
pinnedRowCount,
CellComponent,
featureFlags,
calculatedColumnWidths,
],
);
const handleOnCellsRendered = useCallback(
@@ -595,14 +640,10 @@ const VirtualizedTableGrid = ({
cellProps={itemProps}
className={styles.height100}
columnCount={totalColumnCount}
columnWidth={(index) => {
return columnWidth(index + pinnedLeftColumnCount);
}}
columnWidth={columnWidthMemoized}
onCellsRendered={handleOnCellsRendered}
rowCount={totalRowCount}
rowHeight={(index, cellProps) => {
return getRowHeight(index + pinnedRowCount, cellProps);
}}
rowHeight={rowHeightMemoized}
/>
{pinnedLeftColumnCount > 0 && enableScrollShadow && showLeftShadow && (
<div className={styles.itemTableLeftScrollShadow} />
@@ -669,15 +710,9 @@ const VirtualizedTableGrid = ({
cellProps={itemProps}
className={clsx(styles.noScrollbar, styles.height100)}
columnCount={pinnedRightColumnCount}
columnWidth={(index) => {
return columnWidth(
index + pinnedLeftColumnCount + totalColumnCount,
);
}}
columnWidth={pinnedRightColumnWidthMemoized}
rowCount={totalRowCount}
rowHeight={(index, cellProps) => {
return getRowHeight(index + pinnedRowCount, cellProps);
}}
rowHeight={rowHeightMemoized}
/>
</div>
</div>
@@ -757,6 +792,7 @@ export interface TableItemProps {
enableColumnReorder?: boolean;
enableColumnResize?: boolean;
enableDrag?: ItemTableListProps['enableDrag'];
enableDragScroll?: boolean;
enableExpansion?: ItemTableListProps['enableExpansion'];
enableHeader?: ItemTableListProps['enableHeader'];
enableHorizontalBorders?: ItemTableListProps['enableHorizontalBorders'];
@@ -785,12 +821,13 @@ export interface TableItemProps {
interface ItemTableListProps {
activeRowId?: string;
autoFitColumns?: boolean;
CellComponent: JSXElementConstructor<CellComponentProps<TableItemProps>>;
CellComponent?: JSXElementConstructor<CellComponentProps<TableItemProps>>;
cellPadding?: 'lg' | 'md' | 'sm' | 'xl' | 'xs';
columns: ItemTableListColumnConfig[];
data: unknown[];
enableAlternateRowColors?: boolean;
enableDrag?: boolean;
enableDragScroll?: boolean;
enableEntranceAnimation?: boolean;
enableExpansion?: boolean;
enableHeader?: boolean;
@@ -832,12 +869,13 @@ interface ItemTableListProps {
const BaseItemTableList = ({
activeRowId,
autoFitColumns = false,
CellComponent,
CellComponent = ItemTableListColumn,
cellPadding = 'sm',
columns,
data,
enableAlternateRowColors = false,
enableDrag = true,
enableDragScroll = true,
enableEntranceAnimation = true,
enableExpansion = true,
enableHeader = true,
@@ -990,6 +1028,7 @@ const BaseItemTableList = ({
useTablePaneSync({
enableDrag,
enableDragScroll,
enableHeader,
handleRef,
onScrollEndRef,
@@ -1074,7 +1113,6 @@ const BaseItemTableList = ({
});
const getDataFn = useCallback(() => {
// For infinite lists, callers should pass `data` as the currently loaded items only.
return data;
}, [data]);
@@ -1082,7 +1120,6 @@ const BaseItemTableList = ({
const internalState = useItemListState(getDataFn, extractRowId);
// Helper function to get ItemListStateItemWithRequiredProperties (rowId is separate, not part of item)
const getStateItem = useCallback(
(item: any): ItemListStateItemWithRequiredProperties | null => {
if (!hasRequiredItemProperties(item)) {
@@ -1532,6 +1569,25 @@ const BaseItemTableList = ({
],
);
const columnCellComponents = useColumnCellComponents(
parsedColumns.map((c) => c.id as TableColumn),
itemType,
);
const optimizedCellComponent = useMemo<
JSXElementConstructor<CellComponentProps<TableItemProps>>
>(() => {
if (CellComponent && CellComponent !== ItemTableListColumn) {
return CellComponent;
}
return (cellProps: CellComponentProps<TableItemProps>) => {
return (
<MemoizedCellRouter {...cellProps} columnCellComponents={columnCellComponents} />
);
};
}, [CellComponent, columnCellComponents]);
return (
<ItemTableListStoreProvider activeRowId={activeRowId}>
<ItemTableListConfigProvider value={tableConfigValue}>
@@ -1548,13 +1604,13 @@ const BaseItemTableList = ({
ref={mergedContainerRef}
tabIndex={0}
{...animationProps.fadeIn}
transition={{ duration: enableEntranceAnimation ? 1 : 0, ease: 'anticipate' }}
transition={{ duration: enableEntranceAnimation ? 0.3 : 0, ease: 'anticipate' }}
>
{StickyHeader}
{StickyGroupRow}
<MemoizedVirtualizedTableGrid
calculatedColumnWidths={calculatedColumnWidths}
CellComponent={CellComponent}
CellComponent={optimizedCellComponent}
cellPadding={cellPadding}
controls={controls}
data={data}
@@ -0,0 +1,54 @@
import React, { memo, useMemo } from 'react';
import { CellComponentProps } from 'react-window-v2';
import { createColumnCellComponents } from './cell-component-factory';
import { TableItemProps } from './item-table-list';
import { ItemTableListColumn } from './item-table-list-column';
import { LibraryItem } from '/@/shared/types/domain-types';
import { TableColumn } from '/@/shared/types/types';
interface MemoizedCellRouterProps extends CellComponentProps<TableItemProps> {
columnCellComponents: Map<TableColumn, React.ComponentType<CellComponentProps<TableItemProps>>>;
}
const MemoizedCellRouterBase = (props: MemoizedCellRouterProps) => {
const columnType = props.columns[props.columnIndex]?.id as TableColumn;
const ColumnComponent = props.columnCellComponents.get(columnType);
if (ColumnComponent) {
// eslint-disable-next-line react-hooks/static-components
return <ColumnComponent {...props} />;
}
return <ItemTableListColumn {...props} />;
};
export const MemoizedCellRouter = memo(MemoizedCellRouterBase, (prevProps, nextProps) => {
return (
prevProps.rowIndex === nextProps.rowIndex &&
prevProps.columnIndex === nextProps.columnIndex &&
prevProps.data === nextProps.data &&
prevProps.columns === nextProps.columns &&
prevProps.columnCellComponents === nextProps.columnCellComponents &&
prevProps.size === nextProps.size &&
prevProps.enableAlternateRowColors === nextProps.enableAlternateRowColors &&
prevProps.enableHorizontalBorders === nextProps.enableHorizontalBorders &&
prevProps.enableVerticalBorders === nextProps.enableVerticalBorders &&
prevProps.enableRowHoverHighlight === nextProps.enableRowHoverHighlight &&
prevProps.enableSelection === nextProps.enableSelection &&
prevProps.enableColumnResize === nextProps.enableColumnResize &&
prevProps.enableColumnReorder === nextProps.enableColumnReorder &&
prevProps.cellPadding === nextProps.cellPadding
);
});
export const useColumnCellComponents = (
columns: TableColumn[],
itemType: LibraryItem,
): Map<TableColumn, React.ComponentType<CellComponentProps<TableItemProps>>> => {
const columnsKey = useMemo(() => columns.join(','), [columns]);
// eslint-disable-next-line react-hooks/exhaustive-deps
return useMemo(() => createColumnCellComponents(columns, itemType), [columnsKey, itemType]);
};
+11 -1
View File
@@ -4,6 +4,7 @@ import {
AlbumArtist,
Artist,
Folder,
Genre,
LibraryItem,
Playlist,
Song,
@@ -78,12 +79,21 @@ export interface ItemListHandle {
scrollToOffset: (offset: number, options?: { behavior?: 'auto' | 'smooth' }) => void;
}
export type ItemListItem = Album | AlbumArtist | Artist | Folder | Playlist | Song | undefined;
export type ItemListItem =
| Album
| AlbumArtist
| Artist
| Folder
| Genre
| Playlist
| Song
| undefined;
export interface ItemListTableComponentProps<TQuery> extends ItemListComponentProps<TQuery> {
autoFitColumns?: boolean;
columns: ItemTableListColumnConfig[];
enableAlternateRowColors?: boolean;
enableHeader?: boolean;
enableHorizontalBorders?: boolean;
enableRowHoverHighlight?: boolean;
enableSelection?: boolean;
@@ -121,6 +121,5 @@
align-self: start;
width: 300px;
max-height: calc(100vh - 90px - var(--theme-spacing-lg) - 4rem);
overflow-y: auto;
}
}
@@ -639,7 +639,7 @@ const AlbumDetailSongsTable = ({ songs }: AlbumDetailSongsTableProps) => {
const groups = useMemo(() => {
// Remove groups when filtering
if (debouncedSearchTerm.trim()) {
if (debouncedSearchTerm?.trim()) {
return undefined;
}
@@ -771,9 +771,10 @@ const AlbumDetailSongsTable = ({ songs }: AlbumDetailSongsTableProps) => {
data={filteredSongs}
enableAlternateRowColors={tableConfig.enableAlternateRowColors}
enableDrag
enableDragScroll={false}
enableEntranceAnimation={false}
enableExpansion={false}
enableHeader
enableHeader={tableConfig.enableHeader}
enableHorizontalBorders={tableConfig.enableHorizontalBorders}
enableRowHoverHighlight={tableConfig.enableRowHoverHighlight}
enableSelection
@@ -13,6 +13,8 @@ import {
LibraryHeader,
LibraryHeaderMenu,
} from '/@/renderer/features/shared/components/library-header';
import { useSetFavorite } from '/@/renderer/features/shared/hooks/use-set-favorite';
import { useSetRating } from '/@/renderer/features/shared/hooks/use-set-rating';
import { AppRoute } from '/@/renderer/router/routes';
import { useCurrentServer, useShowRatings } from '/@/renderer/store';
import { usePlayButtonBehavior } from '/@/renderer/store/settings.store';
@@ -39,9 +41,12 @@ export const AlbumDetailHeader = forwardRef<HTMLDivElement>((_props, ref) => {
(detailQuery?.data?._serverType === ServerType.NAVIDROME ||
detailQuery?.data?._serverType === ServerType.SUBSONIC);
const { addToQueueByFetch, setFavorite, setRating } = usePlayer();
const { addToQueueByFetch } = usePlayer();
const playButtonBehavior = usePlayButtonBehavior();
const setRating = useSetRating();
const setFavorite = useSetFavorite();
const handleFavorite = () => {
if (!detailQuery?.data) return;
setFavorite(
@@ -4,6 +4,7 @@ import { useListContext } from '/@/renderer/context/list-context';
import { useAlbumListFilters } from '/@/renderer/features/albums/hooks/use-album-list-filters';
import { ListFilters, ListFiltersTitle } from '/@/renderer/features/shared/components/list-filters';
import { ListWithSidebarContainer } from '/@/renderer/features/shared/components/list-with-sidebar-container';
import { SaveAsCollectionButton } from '/@/renderer/features/shared/components/save-as-collection-button';
import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store';
import { ScrollArea } from '/@/shared/components/scroll-area/scroll-area';
import { Spinner } from '/@/shared/components/spinner/spinner';
@@ -38,11 +39,14 @@ const AlbumListPaginatedTable = lazy(() =>
const AlbumListFilters = () => {
return (
<ListWithSidebarContainer.SidebarPortal>
<Stack h="100%">
<Stack h="100%" style={{ minHeight: 0 }}>
<ListFiltersTitle itemType={LibraryItem.ALBUM} />
<ScrollArea>
<ScrollArea style={{ flex: 1, minHeight: 0 }}>
<ListFilters itemType={LibraryItem.ALBUM} />
</ScrollArea>
<Stack p="sm">
<SaveAsCollectionButton fullWidth itemType={LibraryItem.ALBUM} />
</Stack>
</Stack>
</ListWithSidebarContainer.SidebarPortal>
);
@@ -143,6 +147,7 @@ export const AlbumListView = ({
autoFitColumns={table.autoFitColumns}
columns={table.columns}
enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableVerticalBorders={table.enableVerticalBorders}
@@ -159,6 +164,7 @@ export const AlbumListView = ({
autoFitColumns={table.autoFitColumns}
columns={table.columns}
enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableVerticalBorders={table.enableVerticalBorders}
@@ -35,8 +35,8 @@ export const AlbumListHeaderFilters = ({ toggleGenreTarget }: { toggleGenreTarge
const choice = useMemo(() => {
return target === GenreTarget.ALBUM
? t('entity.album_other', { postProcess: 'titleCase' })
: t('entity.track_other', { postProcess: 'titleCase' });
? t('entity.album', { count: 2, postProcess: 'titleCase' })
: t('entity.track', { count: 2, postProcess: 'titleCase' });
}, [target, t]);
const handleToggleGenreTarget = useCallback(() => {
@@ -7,6 +7,7 @@ import { useItemListScrollPersist } from '/@/renderer/components/item-list/helpe
import { ItemGridList } from '/@/renderer/components/item-list/item-grid-list/item-grid-list';
import { ItemListGridComponentProps } from '/@/renderer/components/item-list/types';
import { albumQueries } from '/@/renderer/features/albums/api/album-api';
import { useGeneralSettings } from '/@/renderer/store';
import {
AlbumListQuery,
AlbumListSort,
@@ -52,12 +53,14 @@ export const AlbumListInfiniteGrid = ({
});
const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.ALBUM, size);
const { enableGridMultiSelect } = useGeneralSettings();
return (
<ItemGridList
data={loadedItems}
dataVersion={dataVersion}
enableExpansion
enableMultiSelect={enableGridMultiSelect}
gap={gap}
getItem={getItem}
getItemIndex={getItemIndex}
@@ -23,6 +23,7 @@ export const AlbumListInfiniteTable = ({
autoFitColumns = false,
columns,
enableAlternateRowColors = false,
enableHeader = true,
enableHorizontalBorders = false,
enableRowHoverHighlight = true,
enableSelection = true,
@@ -73,6 +74,7 @@ export const AlbumListInfiniteTable = ({
columns={columns}
data={loadedItems}
enableAlternateRowColors={enableAlternateRowColors}
enableHeader={enableHeader}
enableHorizontalBorders={enableHorizontalBorders}
enableRowHoverHighlight={enableRowHoverHighlight}
enableSelection={enableSelection}
@@ -9,6 +9,7 @@ import { ItemListWithPagination } from '/@/renderer/components/item-list/item-li
import { useItemListPagination } from '/@/renderer/components/item-list/item-list-pagination/use-item-list-pagination';
import { ItemListGridComponentProps } from '/@/renderer/components/item-list/types';
import { albumQueries } from '/@/renderer/features/albums/api/album-api';
import { useGeneralSettings } from '/@/renderer/store';
import {
AlbumListQuery,
AlbumListSort,
@@ -56,6 +57,7 @@ export const AlbumListPaginatedGrid = ({
});
const rows = useGridRows(LibraryItem.ALBUM, ItemListKey.ALBUM, size);
const { enableGridMultiSelect } = useGeneralSettings();
return (
<ItemListWithPagination
@@ -69,6 +71,7 @@ export const AlbumListPaginatedGrid = ({
currentPage={currentPage}
data={data || []}
enableExpansion
enableMultiSelect={enableGridMultiSelect}
gap={gap}
initialTop={{
to: scrollOffset ?? 0,
@@ -25,6 +25,7 @@ export const AlbumListPaginatedTable = ({
autoFitColumns = false,
columns,
enableAlternateRowColors = false,
enableHeader = true,
enableHorizontalBorders = false,
enableRowHoverHighlight = true,
enableSelection = true,
@@ -86,6 +87,7 @@ export const AlbumListPaginatedTable = ({
columns={columns}
data={data || []}
enableAlternateRowColors={enableAlternateRowColors}
enableHeader={enableHeader}
enableHorizontalBorders={enableHorizontalBorders}
enableRowHoverHighlight={enableRowHoverHighlight}
enableSelection={enableSelection}
@@ -15,8 +15,9 @@ import {
import { LibraryContainer } from '/@/renderer/features/shared/components/library-container';
import { LibraryHeaderBar } from '/@/renderer/features/shared/components/library-header-bar';
import { PageErrorBoundary } from '/@/renderer/features/shared/components/page-error-boundary';
import { useFastAverageColor, useWaitForColorCalculation } from '/@/renderer/hooks';
import { useFastAverageColor } from '/@/renderer/hooks';
import { useAlbumBackground, useCurrentServer } from '/@/renderer/store';
import { Spinner } from '/@/shared/components/spinner/spinner';
import { LibraryItem } from '/@/shared/types/domain-types';
const AlbumDetailRoute = () => {
@@ -44,22 +45,15 @@ const AlbumDetailRoute = () => {
const { background: backgroundColor, isLoading: isColorLoading } = useFastAverageColor({
id: albumId,
src: imageUrl,
srcLoaded: !detailQuery.isLoading,
srcLoaded: true,
});
const background = backgroundColor;
const showBlurredImage = albumBackground;
const { isReady } = useWaitForColorCalculation({
hasImage: !!imageUrl,
isLoading: isColorLoading,
routeId: albumId,
showBlurredImage,
});
if (!isReady) {
return null;
if (isColorLoading) {
return <Spinner container />;
}
return (
@@ -262,7 +262,7 @@ const AlbumArtistMetadataTopSongsContent = ({
const filteredSongs = useMemo(() => {
const filtered = searchLibraryItems(songs, debouncedSearchTerm, LibraryItem.SONG);
// When searching, show all results. Otherwise, limit to 5 if not showing all
if (debouncedSearchTerm.trim() || showAll) {
if (debouncedSearchTerm?.trim() || showAll) {
return filtered;
}
return filtered.slice(0, 5);
@@ -402,8 +402,9 @@ const AlbumArtistMetadataTopSongsContent = ({
data={filteredSongs}
enableAlternateRowColors={tableConfig.enableAlternateRowColors}
enableDrag
enableDragScroll={false}
enableExpansion={false}
enableHeader
enableHeader={tableConfig.enableHeader}
enableHorizontalBorders={tableConfig.enableHorizontalBorders}
enableRowHoverHighlight={tableConfig.enableRowHoverHighlight}
enableSelection
@@ -122,6 +122,7 @@ export const AlbumArtistListView = ({
autoFitColumns={table.autoFitColumns}
columns={table.columns}
enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableVerticalBorders={table.enableVerticalBorders}
@@ -138,6 +139,7 @@ export const AlbumArtistListView = ({
autoFitColumns={table.autoFitColumns}
columns={table.columns}
enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableVerticalBorders={table.enableVerticalBorders}
@@ -7,6 +7,7 @@ import { useItemListScrollPersist } from '/@/renderer/components/item-list/helpe
import { ItemGridList } from '/@/renderer/components/item-list/item-grid-list/item-grid-list';
import { ItemListGridComponentProps } from '/@/renderer/components/item-list/types';
import { artistsQueries } from '/@/renderer/features/artists/api/artists-api';
import { useGeneralSettings } from '/@/renderer/store';
import {
AlbumArtistListQuery,
AlbumArtistListSort,
@@ -53,11 +54,13 @@ export const AlbumArtistListInfiniteGrid = ({
});
const rows = useGridRows(LibraryItem.ALBUM_ARTIST, ItemListKey.ALBUM_ARTIST, size);
const { enableGridMultiSelect } = useGeneralSettings();
return (
<ItemGridList
data={loadedItems}
dataVersion={dataVersion}
enableMultiSelect={enableGridMultiSelect}
gap={gap}
getItem={getItem}
getItemIndex={getItemIndex}
@@ -24,6 +24,7 @@ export const AlbumArtistListInfiniteTable = ({
autoFitColumns = false,
columns,
enableAlternateRowColors = false,
enableHeader = true,
enableHorizontalBorders = false,
enableRowHoverHighlight = true,
enableSelection = true,
@@ -75,6 +76,7 @@ export const AlbumArtistListInfiniteTable = ({
data={loadedItems}
enableAlternateRowColors={enableAlternateRowColors}
enableExpansion={false}
enableHeader={enableHeader}
enableHorizontalBorders={enableHorizontalBorders}
enableRowHoverHighlight={enableRowHoverHighlight}
enableSelection={enableSelection}
@@ -9,6 +9,7 @@ import { ItemListWithPagination } from '/@/renderer/components/item-list/item-li
import { useItemListPagination } from '/@/renderer/components/item-list/item-list-pagination/use-item-list-pagination';
import { ItemListGridComponentProps } from '/@/renderer/components/item-list/types';
import { artistsQueries } from '/@/renderer/features/artists/api/artists-api';
import { useGeneralSettings } from '/@/renderer/store';
import {
AlbumArtistListQuery,
AlbumArtistListSort,
@@ -57,6 +58,7 @@ export const AlbumArtistListPaginatedGrid = ({
});
const rows = useGridRows(LibraryItem.ALBUM_ARTIST, ItemListKey.ALBUM_ARTIST, size);
const { enableGridMultiSelect } = useGeneralSettings();
return (
<ItemListWithPagination
@@ -69,6 +71,7 @@ export const AlbumArtistListPaginatedGrid = ({
<ItemGridList
currentPage={currentPage}
data={data || []}
enableMultiSelect={enableGridMultiSelect}
gap={gap}
initialTop={{
to: scrollOffset ?? 0,
@@ -26,6 +26,7 @@ export const AlbumArtistListPaginatedTable = ({
autoFitColumns = false,
columns,
enableAlternateRowColors = false,
enableHeader = true,
enableHorizontalBorders = false,
enableRowHoverHighlight = true,
enableSelection = true,
@@ -88,6 +89,7 @@ export const AlbumArtistListPaginatedTable = ({
data={data || []}
enableAlternateRowColors={enableAlternateRowColors}
enableExpansion={false}
enableHeader={enableHeader}
enableHorizontalBorders={enableHorizontalBorders}
enableRowHoverHighlight={enableRowHoverHighlight}
enableSelection={enableSelection}
@@ -114,6 +114,7 @@ export const ArtistListView = ({
autoFitColumns={table.autoFitColumns}
columns={table.columns}
enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableVerticalBorders={table.enableVerticalBorders}
@@ -130,6 +131,7 @@ export const ArtistListView = ({
autoFitColumns={table.autoFitColumns}
columns={table.columns}
enableAlternateRowColors={table.enableAlternateRowColors}
enableHeader={table.enableHeader}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableVerticalBorders={table.enableVerticalBorders}
@@ -19,7 +19,7 @@ interface ArtistListHeaderProps {
export const ArtistListHeader = ({ title }: ArtistListHeaderProps) => {
const { t } = useTranslation();
const pageTitle = title || t('entity.artist_other', { postProcess: 'titleCase' });
const pageTitle = title || t('entity.artist', { count: 2, postProcess: 'titleCase' });
return (
<Stack gap={0}>
@@ -7,6 +7,7 @@ import { useItemListScrollPersist } from '/@/renderer/components/item-list/helpe
import { ItemGridList } from '/@/renderer/components/item-list/item-grid-list/item-grid-list';
import { ItemListGridComponentProps } from '/@/renderer/components/item-list/types';
import { artistsQueries } from '/@/renderer/features/artists/api/artists-api';
import { useGeneralSettings } from '/@/renderer/store';
import {
ArtistListQuery,
ArtistListSort,
@@ -52,11 +53,13 @@ export const ArtistListInfiniteGrid = ({
});
const rows = useGridRows(LibraryItem.ARTIST, ItemListKey.ARTIST, size);
const { enableGridMultiSelect } = useGeneralSettings();
return (
<ItemGridList
data={loadedItems}
dataVersion={dataVersion}
enableMultiSelect={enableGridMultiSelect}
gap={gap}
getItem={getItem}
getItemIndex={getItemIndex}

Some files were not shown because too many files have changed in this diff Show More