Compare commits

...

157 Commits

Author SHA1 Message Date
f4bbd53e1a chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2026-01-13 22:01:47 +00:00
272ee7bdb1 chore(i18n): Translated using Weblate (Estonian)
Currently translated at 32.8% (152 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2026-01-12 19:01:50 +00:00
cece515696 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2026-01-12 19:01:48 +00:00
82b7b24ef7 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2026-01-06 00:01:50 +01:00
732bbc17f4 chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (462 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2026-01-06 00:01:48 +01:00
29da42d9ff chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (462 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2026-01-06 00:01:47 +01:00
269d0cd638 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2026-01-04 05:01:48 +00:00
69e15165e3 chore(i18n): Translated using Weblate (Georgian)
Currently translated at 32.3% (150 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2026-01-03 00:02:04 +01:00
Fin
7663a12ee4 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2026-01-03 00:02:03 +01:00
dcda0b3561 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2026-01-03 00:02:02 +01:00
5f82fd9e5a chore: Update README with Warp details 2026-01-02 14:59:50 +09:00
af11fa31d3 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 78.4% (363 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-01-01 12:02:01 +01:00
a049d618e5 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 98.7% (457 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2026-01-01 12:02:01 +01:00
41bc03a737 Revert "fix macos build (?)"
This reverts commit 2ab6eff761.
2025-12-30 22:23:14 +02:00
2ab6eff761 fix macos build (?) 2025-12-30 22:17:18 +02:00
6c881a265a fix tests 2025-12-30 22:02:23 +02:00
2b15f0a87c chore(i18n): Translated using Weblate (Persian)
Currently translated at 99.5% (461 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-12-30 10:00:31 +01:00
1d6ab2a82b update eslint config 2025-12-29 17:04:25 +02:00
24e82e69d1 chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-12-28 21:00:38 +00:00
b079d411de feat: apply new icon (#4215) 2025-12-29 01:39:53 +09:00
e04c8eb99f chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-26 12:00:20 +00:00
3a6b793948 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-12-24 02:00:23 +01:00
f5361de78d chore(i18n): Translated using Weblate (Dutch)
Currently translated at 98.4% (456 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-12-24 02:00:21 +01:00
e0759afc70 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-12-24 02:00:20 +01:00
700e4ba38e chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-12-22 19:00:35 +00:00
cc82b232ce chore(i18n): Translated using Weblate (Hindi)
Currently translated at 85.0% (394 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-12-22 19:00:34 +00:00
c1f422e325 chore(i18n): Translated using Weblate (Persian)
Currently translated at 98.2% (455 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-12-22 19:00:33 +00:00
ffaaba29d7 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 98.2% (455 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-12-22 19:00:31 +00:00
9cad841efb chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 27.8% (129 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-12-22 19:00:30 +00:00
324ab09b5d chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-12-22 19:00:28 +00:00
0b5e9e923b chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-12-22 19:00:27 +00:00
f2308e567d chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-12-22 19:00:26 +00:00
1466c6451b chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-12-22 19:00:23 +00:00
598c708e92 chore(i18n): Translated using Weblate (German)
Currently translated at 99.7% (462 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-22 19:00:22 +00:00
1f903b4f75 chore(i18n): Translated using Weblate (Russian)
Currently translated at 98.2% (455 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-12-22 19:00:20 +00:00
7951b17877 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.7% (457 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-12-21 18:00:36 +00:00
2a39b7315b chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (463 of 463 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-21 18:00:35 +00:00
8b35a60997 chore: add svg version of icon 2025-12-20 21:58:50 +09:00
696ff0fc7a Improved compatibility 2025-12-20 21:57:47 +09:00
29736f480d fix(deps): update dependency semver to v7.7.3 (#4183)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:58:59 +09:00
f4251f3e1d fix(deps): update dependency happy-dom to v20.0.11 (#4182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:50:59 +09:00
ae981396e5 fix(deps): update dependency @hono/zod-validator to v0.7.6 (#4178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:50:39 +09:00
ca0b86bee7 fix(deps): update dependency color to v5.0.3 (#4179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:49:30 +09:00
26ca1ec456 fix(deps): update dependency es-hangul to v2.3.8 (#4180)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:49:22 +09:00
017e4c2e4d chore(deps): update dependency vite-plugin-solid to v2.11.10 (#4174)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:49:01 +09:00
a89658e8c3 chore(deps): update dependency utf-8-validate to v6.0.6 (#4173)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:48:40 +09:00
99be7c2629 chore(deps): update dependency typescript to v5.9.3 (#4171)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:48:33 +09:00
200da8dfaa chore(deps): update dependency electron-vite to v4.0.1 (#4170)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:48:27 +09:00
9a218a6516 fix(deps): update dependency @hono/zod-openapi to v1.2.0 (#4177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 18:48:20 +09:00
933ee0ef75 chore(i18n): Translated using Weblate (Georgian)
Currently translated at 32.8% (150 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2025-12-20 04:00:34 +00:00
8dd7bcdf97 chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-12-20 04:00:33 +00:00
d5c7e0475b chore: extend startingPages with Mixed for you entry (#3994) 2025-12-19 16:50:07 +09:00
a5af233683 chore(deps): update dependency vite to v7.3.0 (#3869)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:38:40 +09:00
27e3796622 "feat(api-server): add /api/v1/queue/next endpoint (#4117)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-19 16:17:30 +09:00
5843e85c4d fix(deps): update dependency happy-dom to v20.0.2 [security] (#4168)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:14:13 +09:00
92a943c755 Fixes 2 sync and UI bugs in music-together plugin (#4071)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-19 16:13:56 +09:00
58a19cdaa2 feat(api-server): Add HTTPS support and custom certificate configuration (#3874) 2025-12-19 16:10:12 +09:00
b1d2112bfc fix(deps): update dependency zod to v4.2.1 (#3870)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:09:37 +09:00
d229bc7f00 fix(deps): update dependency @hono/node-server to v1.19.7 (#3862)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:09:31 +09:00
033a4d3122 chore(deps): update dependency ts-morph to v27.0.2 (#4167)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:09:24 +09:00
8d252b6375 chore(deps): update dependency discord-api-types to v0.38.37 (#3866)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:06:49 +09:00
9453c0ca8f chore(deps): update dependency @electron/universal to v3.0.2 (#4166)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:06:41 +09:00
ce073b30d9 fix(deps): update dependency happy-dom to v20 [security] (#4021)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:05:43 +09:00
8f63e5e3a3 chore(deps): update dependency playwright to v1.55.1 [security] (#4026)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 16:00:12 +09:00
23853b66c6 chore(deps-dev): bump glob from 11.0.3 to 11.1.0 (#4092)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-19 15:59:56 +09:00
62a322f10d fix(deps): update dependency virtua to v0.48.2 (#3871)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 15:59:47 +09:00
9627dd2202 chore(deps): update dependency electron to v38.7.2 (#3867)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 15:59:39 +09:00
3383926faa chore(deps): update dependency glob to v11.1.0 [security] (#4091)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 15:59:30 +09:00
8179664064 fix(deps): update dependency hono to v4.10.3 [security] (#3880)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-19 15:58:25 +09:00
1a5e417f4f chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-12-19 02:00:21 +00:00
ceb6da9bc9 chore(i18n): Translated using Weblate (Quechua)
Currently translated at 1.5% (7 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/qu/
2025-12-19 02:00:20 +00:00
fdafb2dd07 chore(i18n): Translated using Weblate (Nepali)
Currently translated at 93.4% (427 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ne/
2025-12-19 02:00:19 +00:00
c3700e0e59 chore(i18n): Added translation using Weblate (Quechua) 2025-12-18 02:42:35 +01:00
3f1c26f82d chore(i18n): Translated using Weblate (German)
Currently translated at 99.5% (455 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-12-17 21:00:21 +01:00
bb7816815c chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-12-17 21:00:19 +01:00
a1773fd992 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-12-13 21:00:19 +00:00
1671bea942 chore(i18n): Added translation using Weblate (Kurdish (Northern)) 2025-12-11 15:44:04 +01:00
Adi
141ae03208 chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-12-09 14:02:30 +01:00
55c1012cda chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-12-09 14:02:30 +01:00
612c5c89c9 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-12-09 14:02:29 +01:00
01bbf7e3f7 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 88.4% (404 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-12-09 14:02:29 +01:00
6a7b7d88de chore(i18n): Translated using Weblate (Georgian)
Currently translated at 32.8% (150 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2025-12-09 14:02:29 +01:00
d06896450c chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-12-08 06:00:18 +01:00
4a59afc505 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-12-08 06:00:18 +01:00
7b0d63b6cf chore(i18n): Translated using Weblate (Georgian)
Currently translated at 31.0% (142 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2025-12-06 19:00:19 +01:00
c734ffe70f chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-12-04 23:00:20 +01:00
3d0ad69ddb chore(i18n): Translated using Weblate (Albanian)
Currently translated at 5.0% (23 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sq/
2025-12-04 23:00:18 +01:00
6c4ae0dbfa chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (457 of 457 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-12-03 01:00:18 +01:00
f7aaa3377a chore(i18n): Translated using Weblate (Slovak)
Currently translated at 88.3% (403 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-12-01 22:00:36 +01:00
ab1a0478cf chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-12-01 22:00:35 +01:00
127f56905c fix(album-color-theme): improve theming consistency across UI elements (#4109)
Co-authored-by: 최민우 <chaeminu0711@gmail.com>
2025-12-01 16:25:14 +09:00
8d448c667f chore(i18n): Translated using Weblate (Urdu)
Currently translated at 25.0% (114 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ur/
2025-11-29 08:01:53 +01:00
e00f33eb2d chore(i18n): Translated using Weblate (Slovak)
Currently translated at 84.4% (385 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-29 08:01:52 +01:00
8100804ced chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 46.9% (214 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-11-28 06:02:01 +01:00
4fba3ffd92 fix(downloader): update youtubei.js and remove player_id (#4069) 2025-11-26 21:20:58 +02:00
bef8252314 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 84.4% (385 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-22 23:51:18 +01:00
a96cc5aa8a chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-11-22 23:51:16 +01:00
b7e43e3125 chore(i18n): Translated using Weblate (Galician)
Currently translated at 23.2% (106 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/gl/
2025-11-21 21:51:18 +00:00
2d059eb353 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 86.6% (395 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-11-20 13:51:30 +01:00
bce0f8ad17 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 86.6% (395 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-11-20 13:51:22 +01:00
e04a084be9 chore(i18n): Translated using Weblate (Estonian)
Currently translated at 33.3% (152 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2025-11-20 13:51:21 +01:00
J
e94aa5c513 chore(i18n): Translated using Weblate (Estonian)
Currently translated at 33.3% (152 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2025-11-20 13:51:20 +01:00
fa2862ca9a chore(i18n): Translated using Weblate (Azerbaijani)
Currently translated at 16.4% (75 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/az/
2025-11-17 18:51:19 +01:00
e764c69f2b chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-11-15 14:51:17 +01:00
b5052d85ad chore(i18n): Translated using Weblate (Slovak)
Currently translated at 81.1% (370 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-08 09:51:16 +00:00
e4fa850871 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 77.6% (354 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-06 14:51:55 +01:00
db4be4ae25 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 77.6% (354 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-06 14:51:54 +01:00
55680531c5 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 77.6% (354 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-06 14:51:19 +01:00
ae4557d32c chore(i18n): Translated using Weblate (Czech)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-11-06 14:51:14 +01:00
f5f65e73ca chore(i18n): Translated using Weblate (Slovak)
Currently translated at 25.2% (115 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-05 08:51:18 +01:00
e9f4958252 chore(i18n): Translated using Weblate (Slovak)
Currently translated at 25.0% (114 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sk/
2025-11-04 04:51:18 +01:00
00626bc37d chore(i18n): Translated using Weblate (Urdu)
Currently translated at 24.3% (111 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ur/
2025-11-04 04:51:13 +01:00
8e36d77245 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-11-02 20:51:14 +00:00
8f6d16ae89 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-11-02 20:51:12 +00:00
2d1d0257ef chore(i18n): Added translation using Weblate (Belarusian) 2025-10-31 19:41:59 +01:00
7b2543847a chore(i18n): Translated using Weblate (Malay)
Currently translated at 70.3% (321 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-10-31 19:41:57 +01:00
00af45ddee chore(i18n): Translated using Weblate (Malay)
Currently translated at 70.3% (321 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-10-31 19:41:57 +01:00
786961c33b chore(i18n): Translated using Weblate (Estonian)
Currently translated at 25.2% (115 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2025-10-29 13:50:16 +01:00
8dc69cd9ac chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 96.0% (438 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-10-29 13:50:15 +01:00
d8e0bd903e chore(i18n): Translated using Weblate (Azerbaijani)
Currently translated at 16.0% (73 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/az/
2025-10-27 16:02:51 +00:00
4f31d47097 chore(i18n): Translated using Weblate (Georgian)
Currently translated at 20.1% (92 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2025-10-23 06:02:44 +00:00
cdb1ccec76 chore(i18n): Translated using Weblate (Persian)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-10-21 21:04:16 +00:00
4998fa1e28 Merge pull request #4019 from BigicecreamTaken/update-electron-version 2025-10-19 00:49:43 +03:00
f912598416 chore(deps): Update Electron to version 38.2.0 2025-10-18 11:33:47 +03:00
1f063c41d4 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-10-16 17:07:27 +00:00
7b4a4b81ae chore(i18n): Translated using Weblate (Hungarian)
Currently translated at 95.8% (437 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hu/
2025-10-16 17:07:26 +00:00
b7750ad50e chore(i18n): Translated using Weblate (Arabic)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-10-15 15:02:48 +02:00
886f2ae3b2 chore(i18n): Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/
2025-10-14 09:08:02 +02:00
4c2d3253e7 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 99.7% (455 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-10-14 09:07:55 +02:00
c03d3af289 chore(i18n): Translated using Weblate (Russian)
Currently translated at 99.7% (455 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-10-14 09:07:53 +02:00
b006466eab chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-10-14 09:07:53 +02:00
39a859703d chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-10-14 09:07:52 +02:00
d1e9f5272f chore(i18n): Translated using Weblate (Korean)
Currently translated at 99.3% (453 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-10-14 09:07:51 +02:00
2c16e68799 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-10-14 09:07:50 +02:00
d7381f1847 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 100.0% (456 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-10-14 09:07:50 +02:00
97cee6ca54 chore(i18n): Translated using Weblate (German)
Currently translated at 99.7% (455 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-10-14 09:07:49 +02:00
b2c339a879 Update lv.json 2025-10-14 00:06:13 +03:00
7192ad74bc fix conflict 2 2025-10-13 15:07:49 +09:00
022125755b fix conflict 2025-10-13 15:02:44 +09:00
b40851e92a chore(i18n): Translated using Weblate (Latvian)
Currently translated at 66.8% (305 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-10-13 05:07:26 +00:00
1590f2e309 chore(i18n): Translated using Weblate (Malay)
Currently translated at 68.8% (314 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-10-13 05:07:24 +00:00
b8e0d53ef3 chore: improve readability 2 2025-10-12 14:34:36 +09:00
ffa61687bf chore: improve readability 2025-10-12 14:28:29 +09:00
4f716d8e0b feat(workflows): skip pr workflows on draft prs 2025-10-12 03:51:17 +03:00
9932316be1 remove typing for mdui icons 2025-10-12 03:17:42 +03:00
86a4a1b41e proper support for tree-shakeable Lit components 2025-10-12 03:16:35 +03:00
c6c71bea9f chore(i18n): Translated using Weblate (Malayalam)
Currently translated at 11.6% (53 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ml/
2025-10-11 23:07:34 +02:00
cbc6449621 fix preload 2025-10-11 18:18:36 +03:00
9b8daac28c Add Material UI 3 component library (#3606)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-10-11 00:11:38 +03:00
cbc0077690 chore(i18n): Translated using Weblate (Malay)
Currently translated at 62.7% (286 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-10-10 10:07:41 +00:00
c43d636549 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 79.1% (361 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2025-10-10 10:07:40 +00:00
af1513a0b5 chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 94.9% (433 of 456 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-10-10 10:07:39 +00:00
3a7d3ff73d Merge pull request #3973 from pear-devs/downloader-fix 2025-10-10 12:41:34 +03:00
f22b887a3f Merge pull request #3883 from dima-dencep/master 2025-10-10 12:37:31 +03:00
5d0116ff2e remove asset 2025-10-10 16:53:51 +09:00
98a8244f5f chore: Update README for package names and links 2025-10-10 16:50:22 +09:00
127760d509 Update plugins.ts 2025-09-13 19:26:03 +07:00
186 changed files with 7310 additions and 4750 deletions

View File

@ -1,5 +1,5 @@
name: Bug Report name: Bug Report
description: Report a YouTube Music bug description: Report a Pear Desktop bug
title: "[Bug]: " title: "[Bug]: "
labels: "bug :beetle:" labels: "bug :beetle:"
body: body:
@ -8,17 +8,17 @@ body:
label: Preflight Checklist label: Preflight Checklist
description: Please ensure you've completed all of the following. description: Please ensure you've completed all of the following.
options: options:
- label: I use the latest version of YouTube Music (Application). - label: I use the latest version of Pear Desktop (Application).
required: true required: true
- label: I have searched the [issue tracker](https://github.com/th-ch/youtube-music/issues) for a bug report that matches the one I want to file, without success. - label: I have searched the [issue tracker](https://github.com/pear-devs/pear-desktop/issues) for a bug report that matches the one I want to file, without success.
required: true required: true
- label: I understand that **th-ch/youtube-music has NO affiliation with Google or YouTube** - label: I understand that **pear-devs/pear-desktop has NO affiliation with Google or YouTube**
required: true required: true
- type: input - type: input
attributes: attributes:
label: YouTube Music (Application) Version label: Pear Desktop (Application) Version
description: | description: |
What version of the YouTube Music Application are you using? What version of the Pear Desktop Application are you using?
Note: Please check if this issue is reproducible with the latest stable release. Note: Please check if this issue is reproducible with the latest stable release.
placeholder: 2.0.0 placeholder: 2.0.0
@ -28,7 +28,7 @@ body:
attributes: attributes:
label: Checklists label: Checklists
options: options:
- label: I use the portable version of the YouTube Music Application. - label: I use the portable version of the Pear Desktop Application.
- label: I can reproduce this issue in the [official version of (WEB) YTM](https://music.youtube.com). - label: I can reproduce this issue in the [official version of (WEB) YTM](https://music.youtube.com).
- type: dropdown - type: dropdown
attributes: attributes:
@ -60,8 +60,8 @@ body:
required: true required: true
- type: input - type: input
attributes: attributes:
label: Last Known Working YouTube Music (Application) version label: Last Known Working Pear Desktop (Application) version
description: (If applicable) What is the last version of YouTube Music this worked in? description: (If applicable) What is the last version of Pear Desktop this worked in?
placeholder: 1.20.0 placeholder: 1.20.0
- type: textarea - type: textarea
attributes: attributes:

View File

@ -1,5 +1,5 @@
name: Feature Request name: Feature Request
description: Suggest an idea for YouTube Music description: Suggest an idea for Pear Desktop
title: "[Feature Request]: " title: "[Feature Request]: "
labels: "enhancement :sparkles:" labels: "enhancement :sparkles:"
body: body:
@ -8,9 +8,9 @@ body:
label: Preflight Checklist label: Preflight Checklist
description: Please ensure you've completed all of the following. description: Please ensure you've completed all of the following.
options: options:
- label: I use the latest version of YouTube Music (Application). - label: I use the latest version of Pear Desktop (Application).
required: true required: true
- label: I have searched the [issue tracker](https://github.com/th-ch/youtube-music/issues) for a feature request that matches the one I want to file, without success. - label: I have searched the [issue tracker](https://github.com/pear-devs/pear-desktop/issues) for a feature request that matches the one I want to file, without success.
required: true required: true
- type: textarea - type: textarea
attributes: attributes:

View File

@ -1,4 +1,4 @@
name: Build YouTube Music name: Build Pear Desktop
on: on:
push: push:
@ -10,7 +10,8 @@ env:
jobs: jobs:
build: build:
name: Build YouTube Music if: github.event.pull_request.draft == false
name: Build Pear Desktop
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: true fail-fast: true
@ -44,20 +45,20 @@ jobs:
# Only vite build without release if it is a fork, or it is a pull-request # Only vite build without release if it is a fork, or it is a pull-request
- name: Vite Build - name: Vite Build
if: github.repository == 'th-ch/youtube-music' && github.event_name == 'pull_request' if: github.repository == 'pear-devs/pear-desktop' && github.event_name == 'pull_request'
run: | run: |
pnpm build pnpm build
# Build and release if it's the main repository and is not pull-request # Build and release if it's the main repository and is not pull-request
- name: Build and release on Mac - name: Build and release on Mac
if: startsWith(matrix.os, 'macOS') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request') if: startsWith(matrix.os, 'macOS') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
pnpm release:mac pnpm release:mac
- name: Build and release on Linux - name: Build and release on Linux
if: startsWith(matrix.os, 'ubuntu') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request') if: startsWith(matrix.os, 'ubuntu') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@ -71,7 +72,7 @@ jobs:
pnpm release:linux pnpm release:linux
- name: Build and release on Windows - name: Build and release on Windows
if: startsWith(matrix.os, 'windows') && (github.repository == 'th-ch/youtube-music' && github.event_name != 'pull_request') if: startsWith(matrix.os, 'windows') && (github.repository == 'pear-devs/pear-desktop' && github.event_name != 'pull_request')
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
@ -87,8 +88,8 @@ jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: Release YouTube Music name: Release Pear Desktop
if: github.repository == 'th-ch/youtube-music' && github.ref == 'refs/heads/master' if: github.repository == 'pear-devs/pear-desktop' && github.ref == 'refs/heads/master'
needs: build needs: build
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v5
@ -149,11 +150,11 @@ jobs:
name: ${{ env.VERSION_TAG }} name: ${{ env.VERSION_TAG }}
replacebody: true replacebody: true
body: | body: |
See [changelog](https://github.com/th-ch/youtube-music/blob/master/changelog.md#${{ env.CHANGELOG_ANCHOR }}) for the list of updates and the full diff. See [changelog](https://github.com/pear-devs/pear-desktop/blob/master/changelog.md#${{ env.CHANGELOG_ANCHOR }}) for the list of updates and the full diff.
Thanks to all contributors! 🏅 Thanks to all contributors! 🏅
(Note for Windows: `YouTube-Music-Web-Setup-${{ env.VERSION_TAG }}.exe` is an installer, and `YouTube-Music-${{ env.VERSION_TAG }}.exe` is a portable version) (Note for Windows: `Pear-Desktop-Web-Setup-${{ env.VERSION_TAG }}.exe` is an installer, and `Pear-Desktop-${{ env.VERSION_TAG }}.exe` is a portable version)
- name: Update changelog - name: Update changelog
if: ${{ env.VERSION_HASH == '' }} if: ${{ env.VERSION_HASH == '' }}

View File

@ -12,6 +12,7 @@ permissions:
jobs: jobs:
dependency-review: dependency-review:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: "Checkout Repository" - name: "Checkout Repository"

View File

@ -9,6 +9,7 @@ env:
jobs: jobs:
check-permissions: check-permissions:
if: github.event.pull_request.draft == false
name: Check if user has write access name: Check if user has write access
runs-on: ubuntu-latest runs-on: ubuntu-latest
outputs: outputs:

View File

@ -7,6 +7,7 @@ env:
jobs: jobs:
eslint: eslint:
if: github.event.pull_request.draft == false
name: runner / eslint name: runner / eslint
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:

View File

@ -22,9 +22,9 @@ jobs:
- name: Submit package to Windows Package Manager Community Repository - name: Submit package to Windows Package Manager Community Repository
uses: vedantmgoyal2009/winget-releaser@main uses: vedantmgoyal2009/winget-releaser@main
with: with:
identifier: th-ch.YouTubeMusic identifier: pear-devs.PearDesktop
installers-regex: '^YouTube-Music-Web-Setup-[\d\.]+\.exe$' installers-regex: '^Pear-Desktop-Web-Setup-[\d\.]+\.exe$'
version: ${{ env.WINGET_TAG_NAME }} version: ${{ env.WINGET_TAG_NAME }}
release-tag: ${{ inputs.tag_name || github.event.release.tag_name }} release-tag: ${{ inputs.tag_name || github.event.release.tag_name }}
token: ${{ secrets.WINGET_ACC_TOKEN }} token: ${{ secrets.WINGET_ACC_TOKEN }}
fork-user: youtube-music-winget fork-user: pear-desktop-winget

View File

@ -1,13 +1,27 @@
<div align="center" markdown="1">
<sup>Special thanks to:</sup>
<br>
<br>
<a href="https://go.warp.dev/pear-desktop">
<img alt="Warp sponsorship" width="400" src="https://github.com/user-attachments/assets/8307ea56-e872-494a-8a9c-de0e296a06ed" />
</a>
### [Warp, built for coding with multiple AI agents](https://go.warp.dev/pear-desktop)
[Available for macOS, Linux, & Windows](https://go.warp.dev/pear-desktop)<br>
</div>
<hr>
<div align="center"> <div align="center">
# :pear: Pear Desktop # :pear: Pear Desktop
[![GitHub release](https://img.shields.io/github/release/pear-devs/pear-desktop.svg?style=for-the-badge&logo=youtube-music)](https://github.com/pear-devs/pear-desktop/releases/) [![GitHub release](https://img.shields.io/github/release/pear-devs/pear-desktop.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/releases/)
[![GitHub license](https://img.shields.io/github/license/pear-devs/pear-desktop.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/license) [![GitHub license](https://img.shields.io/github/license/pear-devs/pear-desktop.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs) [![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs)
[![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/)
[![AUR](https://img.shields.io/aur/version/youtube-music-bin?color=blueviolet&style=for-the-badge&logo=youtube-music)](https://aur.archlinux.org/packages/youtube-music-bin) <!--[![AUR](https://img.shields.io/aur/version/pear-desktop-bin?color=blueviolet&style=for-the-badge)](https://aur.archlinux.org/packages/pear-desktop-bin)-->
[![Known Vulnerabilities](https://snyk.io/test/github/pear-devs/pear-desktop/badge.svg)](https://snyk.io/test/github/pear-devs/pear-desktop) [![Known Vulnerabilities](https://snyk.io/test/github/pear-devs/pear-desktop/badge.svg)](https://snyk.io/test/github/pear-devs/pear-desktop)
</div> </div>
@ -53,11 +67,11 @@
## Translation ## Translation
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/). You can help with translation on [Hosted Weblate](https://bit.ly/48n5YF7).
<a href="https://hosted.weblate.org/engage/youtube-music/"> <a href="https://bit.ly/48n5YF7/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" /> <img src="https://bit.ly/4q83L6S" alt="translation status" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" /> <img src="https://bit.ly/4h3zBxo" alt="translation status 2" />
</a> </a>
## Download ## Download
@ -67,12 +81,12 @@ latest version.
### Arch Linux ### Arch Linux
Install the [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) package from the AUR. For AUR installation instructions, take a look at Install the [`pear-desktop`](https://aur.archlinux.org/packages/pear-desktop) package from the AUR. For AUR installation instructions, take a look at
this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages). this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
### macOS ### macOS
You can install the app using Homebrew (see the [cask definition](https://github.com/th-ch/homebrew-youtube-music)): You can install the app using Homebrew (see the [cask definition](https://github.com/pear-devs/pear-desktop-homebrew)):
```bash ```bash
brew install pear-devs/pear-desktop brew install pear-devs/pear-desktop
@ -86,23 +100,23 @@ If you install the app manually and get an error "is damaged and cant be open
### Windows ### Windows
You can use the [Scoop package manager](https://scoop.sh) to install the `youtube-music` package from You can use the [Scoop package manager](https://scoop.sh) to install the `pear-desktop` package from
the [`extras` bucket](https://github.com/ScoopInstaller/Extras). the [`extras` bucket](https://github.com/ScoopInstaller/Extras).
```bash ```bash
scoop bucket add extras scoop bucket add extras
scoop install extras/youtube-music scoop install extras/pear-desktop
``` ```
Alternately you can use [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), Windows 11s Alternately you can use [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), Windows 11s
official CLI package manager to install the `th-ch.YouTubeMusic` package. official CLI package manager to install the `pear-devs.pear-desktop` package.
*Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is also *Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is also
true for the manual installation when trying to run the executable(.exe) after a manual download here on github (same true for the manual installation when trying to run the executable(.exe) after a manual download here on github (same
file).* file).*
```bash ```bash
winget install th-ch.YouTubeMusic winget install pear-devs.pear-desktop
``` ```
#### How to install without a network connection? (in Windows) #### How to install without a network connection? (in Windows)
@ -190,7 +204,7 @@ export default createPlugin({
console.log(await context.ipc.invoke('some-event')); console.log(await context.ipc.invoke('some-event'));
}, },
// Only renderer available hook // Only renderer available hook
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) { onPlayerApiReady(api, context) {
// set plugin config easily // set plugin config easily
context.setConfig({ myConfig: api.getVolume() }); context.setConfig({ myConfig: api.getVolume() });
}, },

View File

@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>Cannot load YouTube Music</title> <title>Cannot load Pear Desktop</title>
<style> <style>
body { body {
background: #000; background: #000;
@ -43,7 +43,7 @@
<body> <body>
<div class="container"> <div class="container">
<p>Cannot load YouTube Music… Internet disconnected?</p> <p>Cannot load Pear Desktop… Internet disconnected?</p>
<a class="button" href="#" onclick="reload()">Retry</a> <a class="button" href="#" onclick="reload()">Retry</a>
</div> </div>
</body> </body>

View File

@ -0,0 +1,35 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_18_2)">
<circle cx="512" cy="512" r="410" fill="url(#paint0_linear_18_2)"/>
<circle cx="512" cy="512" r="402" stroke="url(#paint1_radial_18_2)" stroke-opacity="0.5" stroke-width="16"/>
</g>
<path d="M675 505.072C680.333 508.152 680.333 515.849 675 518.928L436.5 656.626C431.167 659.705 424.5 655.857 424.5 649.698V374.302C424.5 368.24 430.96 364.415 436.249 367.234L436.5 367.374L675 505.072Z" fill="url(#paint2_linear_18_2)" stroke="url(#paint3_linear_18_2)" stroke-width="8" stroke-linejoin="round"/>
<defs>
<filter id="filter0_d_18_2" x="78" y="90" width="868" height="868" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="12"/>
<feGaussianBlur stdDeviation="12"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.866667 0 0 0 0 0.141176 0 0 0 0 0.462745 0 0 0 0.4 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_18_2"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_18_2" result="shape"/>
</filter>
<linearGradient id="paint0_linear_18_2" x1="102" y1="102" x2="922" y2="922" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF632F"/>
<stop offset="1" stop-color="#DC148C"/>
</linearGradient>
<radialGradient id="paint1_radial_18_2" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(512 512) rotate(45) scale(579.828)">
<stop offset="0.68" stop-color="white" stop-opacity="0"/>
<stop offset="0.72" stop-color="white"/>
</radialGradient>
<linearGradient id="paint2_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white"/>
<stop offset="1" stop-color="white" stop-opacity="0.4"/>
</linearGradient>
<linearGradient id="paint3_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0"/>
<stop offset="1" stop-color="white" stop-opacity="0.5"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,67 @@
{
"fill" : {
"linear-gradient" : [
"display-p3:1.00000,1.00000,1.00000,1.00000",
"srgb:0.84314,0.84314,0.84314,1.00000"
],
"orientation" : {
"start" : {
"x" : 0.5,
"y" : 0
},
"stop" : {
"x" : 0.5,
"y" : 0.7
}
}
},
"groups" : [
{
"blur-material" : null,
"hidden" : false,
"layers" : [
{
"blend-mode-specializations" : [
{
"appearance" : "dark",
"value" : "normal"
}
],
"image-name" : "SVG Image.svg",
"name" : "transparent-icon",
"opacity-specializations" : [
{
"value" : 1
},
{
"appearance" : "dark",
"value" : 1
}
]
}
],
"name" : "group",
"opacity-specializations" : [
{
"appearance" : "dark",
"value" : 0.8
}
],
"shadow" : {
"kind" : "layer-color",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : false,
"value" : 0.5
}
}
],
"supported-platforms" : {
"circles" : [
"watchOS"
],
"squares" : "shared"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 KiB

40
assets/icon.svg Normal file
View File

@ -0,0 +1,40 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_18_2)">
<circle cx="512" cy="512" r="410" fill="url(#paint0_linear_18_2)" />
<circle cx="512" cy="512" r="402" stroke="url(#paint1_radial_18_2)" stroke-opacity="0.5" stroke-width="16" />
</g>
<path
d="M675 505.072C680.333 508.152 680.333 515.849 675 518.928L436.5 656.626C431.167 659.705 424.5 655.857 424.5 649.698V374.302C424.5 368.24 430.96 364.415 436.249 367.234L436.5 367.374L675 505.072Z"
fill="url(#paint2_linear_18_2)" stroke="url(#paint3_linear_18_2)" stroke-width="8" stroke-linejoin="round" />
<defs>
<filter id="filter0_d_18_2" x="78" y="90" width="868" height="868" filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix" />
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
result="hardAlpha" />
<feOffset dy="12" />
<feGaussianBlur stdDeviation="12" />
<feComposite in2="hardAlpha" operator="out" />
<feColorMatrix type="matrix" values="0 0 0 0 0.866667 0 0 0 0 0.141176 0 0 0 0 0.462745 0 0 0 0.4 0" />
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_18_2" />
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_18_2" result="shape" />
</filter>
<linearGradient id="paint0_linear_18_2" x1="102" y1="102" x2="922" y2="922" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF632F" />
<stop offset="1" stop-color="#DC148C" />
</linearGradient>
<radialGradient id="paint1_radial_18_2" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse"
gradientTransform="translate(512 512) rotate(45) scale(579.828)">
<stop offset="0.68" stop-color="white" stop-opacity="0" />
<stop offset="0.72" stop-color="white" />
</radialGradient>
<linearGradient id="paint2_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white" />
<stop offset="1" stop-color="white" stop-opacity="0.4" />
</linearGradient>
<linearGradient id="paint3_linear_18_2" x1="512" y1="329" x2="512" y2="695" gradientUnits="userSpaceOnUse">
<stop stop-color="white" stop-opacity="0" />
<stop offset="1" stop-color="white" stop-opacity="0.5" />
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

607
assets/mdui.css Normal file
View File

@ -0,0 +1,607 @@
:root {
--mdui-breakpoint-xs: 0px;
--mdui-breakpoint-sm: 600px;
--mdui-breakpoint-md: 840px;
--mdui-breakpoint-lg: 1080px;
--mdui-breakpoint-xl: 1440px;
--mdui-breakpoint-xxl: 1920px;
}
:root {
--mdui-color-primary-light: 103, 80, 164;
--mdui-color-primary-container-light: 234, 221, 255;
--mdui-color-on-primary-light: 255, 255, 255;
--mdui-color-on-primary-container-light: 33, 0, 94;
--mdui-color-inverse-primary-light: 208, 188, 255;
--mdui-color-secondary-light: 98, 91, 113;
--mdui-color-secondary-container-light: 232, 222, 248;
--mdui-color-on-secondary-light: 255, 255, 255;
--mdui-color-on-secondary-container-light: 30, 25, 43;
--mdui-color-tertiary-light: 125, 82, 96;
--mdui-color-tertiary-container-light: 255, 216, 228;
--mdui-color-on-tertiary-light: 255, 255, 255;
--mdui-color-on-tertiary-container-light: 55, 11, 30;
--mdui-color-surface-light: 254, 247, 255;
--mdui-color-surface-dim-light: 222, 216, 225;
--mdui-color-surface-bright-light: 254, 247, 255;
--mdui-color-surface-container-lowest-light: 255, 255, 255;
--mdui-color-surface-container-low-light: 247, 242, 250;
--mdui-color-surface-container-light: 243, 237, 247;
--mdui-color-surface-container-high-light: 236, 230, 240;
--mdui-color-surface-container-highest-light: 230, 224, 233;
--mdui-color-surface-variant-light: 231, 224, 236;
--mdui-color-on-surface-light: 28, 27, 31;
--mdui-color-on-surface-variant-light: 73, 69, 78;
--mdui-color-inverse-surface-light: 49, 48, 51;
--mdui-color-inverse-on-surface-light: 244, 239, 244;
--mdui-color-background-light: 254, 247, 255;
--mdui-color-on-background-light: 28, 27, 31;
--mdui-color-error-light: 179, 38, 30;
--mdui-color-error-container-light: 249, 222, 220;
--mdui-color-on-error-light: 255, 255, 255;
--mdui-color-on-error-container-light: 65, 14, 11;
--mdui-color-outline-light: 121, 116, 126;
--mdui-color-outline-variant-light: 196, 199, 197;
--mdui-color-shadow-light: 0, 0, 0;
--mdui-color-surface-tint-color-light: 103, 80, 164;
--mdui-color-scrim-light: 0, 0, 0;
--mdui-color-primary-dark: 208, 188, 255;
--mdui-color-primary-container-dark: 79, 55, 139;
--mdui-color-on-primary-dark: 55, 30, 115;
--mdui-color-on-primary-container-dark: 234, 221, 255;
--mdui-color-inverse-primary-dark: 103, 80, 164;
--mdui-color-secondary-dark: 204, 194, 220;
--mdui-color-secondary-container-dark: 74, 68, 88;
--mdui-color-on-secondary-dark: 51, 45, 65;
--mdui-color-on-secondary-container-dark: 232, 222, 248;
--mdui-color-tertiary-dark: 239, 184, 200;
--mdui-color-tertiary-container-dark: 99, 59, 72;
--mdui-color-on-tertiary-dark: 73, 37, 50;
--mdui-color-on-tertiary-container-dark: 255, 216, 228;
--mdui-color-surface-dark: 20, 18, 24;
--mdui-color-surface-dim-dark: 20, 18, 24;
--mdui-color-surface-bright-dark: 59, 56, 62;
--mdui-color-surface-container-lowest-dark: 15, 13, 19;
--mdui-color-surface-container-low-dark: 29, 27, 32;
--mdui-color-surface-container-dark: 33, 31, 38;
--mdui-color-surface-container-high-dark: 43, 41, 48;
--mdui-color-surface-container-highest-dark: 54, 52, 59;
--mdui-color-surface-variant-dark: 73, 69, 79;
--mdui-color-on-surface-dark: 230, 225, 229;
--mdui-color-on-surface-variant-dark: 202, 196, 208;
--mdui-color-inverse-surface-dark: 230, 225, 229;
--mdui-color-inverse-on-surface-dark: 49, 48, 51;
--mdui-color-background-dark: 20, 18, 24;
--mdui-color-on-background-dark: 230, 225, 229;
--mdui-color-error-dark: 242, 184, 181;
--mdui-color-error-container-dark: 140, 29, 24;
--mdui-color-on-error-dark: 96, 20, 16;
--mdui-color-on-error-container-dark: 249, 222, 220;
--mdui-color-outline-dark: 147, 143, 153;
--mdui-color-outline-variant-dark: 68, 71, 70;
--mdui-color-shadow-dark: 0, 0, 0;
--mdui-color-surface-tint-color-dark: 208, 188, 255;
--mdui-color-scrim-dark: 0, 0, 0;
}
.mdui-theme-dark,
:root {
color-scheme: dark;
--mdui-color-primary: var(--mdui-color-primary-dark);
--mdui-color-primary-container: var(--mdui-color-primary-container-dark);
--mdui-color-on-primary: var(--mdui-color-on-primary-dark);
--mdui-color-on-primary-container: var(
--mdui-color-on-primary-container-dark
);
--mdui-color-inverse-primary: var(--mdui-color-inverse-primary-dark);
--mdui-color-secondary: var(--mdui-color-secondary-dark);
--mdui-color-secondary-container: var(--mdui-color-secondary-container-dark);
--mdui-color-on-secondary: var(--mdui-color-on-secondary-dark);
--mdui-color-on-secondary-container: var(
--mdui-color-on-secondary-container-dark
);
--mdui-color-tertiary: var(--mdui-color-tertiary-dark);
--mdui-color-tertiary-container: var(--mdui-color-tertiary-container-dark);
--mdui-color-on-tertiary: var(--mdui-color-on-tertiary-dark);
--mdui-color-on-tertiary-container: var(
--mdui-color-on-tertiary-container-dark
);
--mdui-color-surface: var(--mdui-color-surface-dark);
--mdui-color-surface-dim: var(--mdui-color-surface-dim-dark);
--mdui-color-surface-bright: var(--mdui-color-surface-bright-dark);
--mdui-color-surface-container-lowest: var(
--mdui-color-surface-container-lowest-dark
);
--mdui-color-surface-container-low: var(
--mdui-color-surface-container-low-dark
);
--mdui-color-surface-container: var(--mdui-color-surface-container-dark);
--mdui-color-surface-container-high: var(
--mdui-color-surface-container-high-dark
);
--mdui-color-surface-container-highest: var(
--mdui-color-surface-container-highest-dark
);
--mdui-color-surface-variant: var(--mdui-color-surface-variant-dark);
--mdui-color-on-surface: var(--mdui-color-on-surface-dark);
--mdui-color-on-surface-variant: var(--mdui-color-on-surface-variant-dark);
--mdui-color-inverse-surface: var(--mdui-color-inverse-surface-dark);
--mdui-color-inverse-on-surface: var(--mdui-color-inverse-on-surface-dark);
--mdui-color-background: var(--mdui-color-background-dark);
--mdui-color-on-background: var(--mdui-color-on-background-dark);
--mdui-color-error: var(--mdui-color-error-dark);
--mdui-color-error-container: var(--mdui-color-error-container-dark);
--mdui-color-on-error: var(--mdui-color-on-error-dark);
--mdui-color-on-error-container: var(--mdui-color-on-error-container-dark);
--mdui-color-outline: var(--mdui-color-outline-dark);
--mdui-color-outline-variant: var(--mdui-color-outline-variant-dark);
--mdui-color-shadow: var(--mdui-color-shadow-dark);
--mdui-color-surface-tint-color: var(--mdui-color-surface-tint-color-dark);
--mdui-color-scrim: var(--mdui-color-scrim-dark);
color: rgb(var(--mdui-color-on-background));
background-color: rgb(var(--mdui-color-background));
}
:root {
--mdui-elevation-level0: none;
--mdui-elevation-level1: 0 0.5px 1.5px 0 rgba(var(--mdui-color-shadow), 19%),
0 0 1px 0 rgba(var(--mdui-color-shadow), 3.9%);
--mdui-elevation-level2: 0 0.85px 3px 0 rgba(var(--mdui-color-shadow), 19%),
0 0.25px 1px 0 rgba(var(--mdui-color-shadow), 3.9%);
--mdui-elevation-level3: 0 1.25px 5px 0 rgba(var(--mdui-color-shadow), 19%),
0 0.3333px 1.5px 0 rgba(var(--mdui-color-shadow), 3.9%);
--mdui-elevation-level4: 0 1.85px 6.25px 0 rgba(var(--mdui-color-shadow), 19%),
0 0.5px 1.75px 0 rgba(var(--mdui-color-shadow), 3.9%);
--mdui-elevation-level5: 0 2.75px 9px 0 rgba(var(--mdui-color-shadow), 19%),
0 0.25px 3px 0 rgba(var(--mdui-color-shadow), 3.9%);
}
:root {
--mdui-motion-easing-linear: cubic-bezier(0, 0, 1, 1);
--mdui-motion-easing-standard: cubic-bezier(0.2, 0, 0, 1);
--mdui-motion-easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1);
--mdui-motion-easing-standard-decelerate: cubic-bezier(0, 0, 0, 1);
--mdui-motion-easing-emphasized: var(--mdui-motion-easing-standard);
--mdui-motion-easing-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15);
--mdui-motion-easing-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1);
--mdui-motion-duration-short1: 50ms;
--mdui-motion-duration-short2: 100ms;
--mdui-motion-duration-short3: 150ms;
--mdui-motion-duration-short4: 200ms;
--mdui-motion-duration-medium1: 250ms;
--mdui-motion-duration-medium2: 300ms;
--mdui-motion-duration-medium3: 350ms;
--mdui-motion-duration-medium4: 400ms;
--mdui-motion-duration-long1: 450ms;
--mdui-motion-duration-long2: 500ms;
--mdui-motion-duration-long3: 550ms;
--mdui-motion-duration-long4: 600ms;
--mdui-motion-duration-extra-long1: 700ms;
--mdui-motion-duration-extra-long2: 800ms;
--mdui-motion-duration-extra-long3: 900ms;
--mdui-motion-duration-extra-long4: 1000ms;
}
.mdui-prose {
line-height: 1.75;
word-wrap: break-word;
}
.mdui-prose :first-child {
margin-top: 0;
}
.mdui-prose :last-child {
margin-bottom: 0;
}
.mdui-prose code,
.mdui-prose kbd,
.mdui-prose pre,
.mdui-prose pre tt,
.mdui-prose samp {
font-family: Consolas, Courier, 'Courier New', monospace;
}
.mdui-prose caption {
text-align: left;
}
.mdui-prose [draggable='true'],
.mdui-prose [draggable] {
cursor: move;
}
.mdui-prose [draggable='false'] {
cursor: inherit;
}
.mdui-prose dl,
.mdui-prose form,
.mdui-prose ol,
.mdui-prose p,
.mdui-prose ul {
margin-top: 1.25em;
margin-bottom: 1.25em;
}
.mdui-prose a {
text-decoration: none;
outline: 0;
color: rgb(var(--mdui-color-primary));
}
.mdui-prose a:focus,
.mdui-prose a:hover {
border-bottom: 0.0625rem solid rgb(var(--mdui-color-primary));
}
.mdui-prose small {
font-size: 0.875em;
}
.mdui-prose strong {
font-weight: 600;
}
.mdui-prose blockquote {
margin: 1.6em 2em;
padding-left: 1em;
border-left: 0.25rem solid rgb(var(--mdui-color-surface-variant));
}
@media only screen and (max-width: 599.98px) {
.mdui-prose blockquote {
margin: 1.6em 0;
}
}
.mdui-prose blockquote footer {
font-size: 86%;
color: rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose mark {
color: inherit;
background-color: rgb(var(--mdui-color-secondary-container));
border-bottom: 0.0625rem solid rgb(var(--mdui-color-secondary));
margin: 0 0.375rem;
padding: 0.125rem;
}
.mdui-prose h1,
.mdui-prose h2,
.mdui-prose h3,
.mdui-prose h4,
.mdui-prose h5,
.mdui-prose h6 {
font-weight: 400;
}
.mdui-prose h1 small,
.mdui-prose h2 small,
.mdui-prose h3 small,
.mdui-prose h4 small,
.mdui-prose h5 small,
.mdui-prose h6 small {
font-weight: inherit;
font-size: 65%;
color: rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose h1 strong,
.mdui-prose h2 strong,
.mdui-prose h3 strong,
.mdui-prose h4 strong,
.mdui-prose h5 strong,
.mdui-prose h6 strong {
font-weight: 600;
}
.mdui-prose h1 {
font-size: 2.5em;
margin-top: 0;
margin-bottom: 1.25em;
line-height: 1.1111;
}
.mdui-prose h2 {
font-size: 1.875em;
margin-top: 2.25em;
margin-bottom: 1.125em;
line-height: 1.3333;
}
.mdui-prose h3 {
font-size: 1.5em;
margin-top: 2em;
margin-bottom: 1em;
line-height: 1.6;
}
.mdui-prose h4 {
font-size: 1.25em;
margin-top: 1.875em;
margin-bottom: 0.875em;
line-height: 1.5;
}
.mdui-prose h2 + *,
.mdui-prose h3 + *,
.mdui-prose h4 + *,
.mdui-prose hr + * {
margin-top: 0;
}
.mdui-prose code,
.mdui-prose kbd {
font-size: 0.875em;
color: rgb(var(--mdui-color-on-surface-container));
background-color: rgba(var(--mdui-color-surface-variant), 0.28);
padding: 0.125rem 0.375rem;
border-radius: var(--mdui-shape-corner-extra-small);
}
.mdui-prose kbd {
font-size: 0.9em;
}
.mdui-prose abbr[title] {
text-decoration: none;
cursor: help;
border-bottom: 0.0625rem dotted rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose ins,
.mdui-prose u {
text-decoration: none;
border-bottom: 0.0625rem solid rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose del {
text-decoration: line-through;
}
.mdui-prose hr {
margin-top: 3em;
margin-bottom: 3em;
border: none;
border-bottom: 0.0625rem solid rgb(var(--mdui-color-surface-variant));
}
.mdui-prose pre {
margin-top: 1.7143em;
margin-bottom: 1.7143em;
}
.mdui-prose pre code {
padding: 0.8571em 1.1429em;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
background-color: rgb(var(--mdui-color-surface-container));
color: rgb(var(--mdui-color-on-surface-container));
border-radius: var(--mdui-shape-corner-extra-small);
}
.mdui-prose ol,
.mdui-prose ul {
padding-left: 1.625em;
}
.mdui-prose ul {
list-style-type: disc;
}
.mdui-prose ol {
list-style-type: decimal;
}
.mdui-prose ol[type='A'] {
list-style-type: upper-alpha;
}
.mdui-prose ol[type='a'] {
list-style-type: lower-alpha;
}
.mdui-prose ol[type='I'] {
list-style-type: upper-roman;
}
.mdui-prose ol[type='i'] {
list-style-type: lower-roman;
}
.mdui-prose ol[type='1'] {
list-style-type: decimal;
}
.mdui-prose li {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.mdui-prose ol > li,
.mdui-prose ul > li {
padding-left: 0.375em;
}
.mdui-prose ol > li > p,
.mdui-prose ul > li > p {
margin-top: 0.75em;
margin-bottom: 0.75em;
}
.mdui-prose ol > li > :first-child,
.mdui-prose ul > li > :first-child {
margin-top: 1.25em;
}
.mdui-prose ol > li > :last-child,
.mdui-prose ul > li > :last-child {
margin-bottom: 1.25em;
}
.mdui-prose ol > li::marker {
font-weight: 400;
color: rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose ul > li::marker {
color: rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose ol ol,
.mdui-prose ol ul,
.mdui-prose ul ol,
.mdui-prose ul ul {
margin-top: 0.75em;
margin-bottom: 0.75em;
}
.mdui-prose fieldset,
.mdui-prose img {
border: none;
}
.mdui-prose figure,
.mdui-prose img,
.mdui-prose video {
margin-top: 2em;
margin-bottom: 2em;
max-width: 100%;
}
.mdui-prose figure > * {
margin-top: 0;
margin-bottom: 0;
}
.mdui-prose figcaption {
font-size: 0.875em;
line-height: 1.4286;
margin-top: 0.8571em;
color: rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose figcaption:empty::before {
z-index: -1;
cursor: text;
content: attr(placeholder);
color: rgb(var(--mdui-color-on-surface-variant));
}
.mdui-prose table {
margin-top: 2em;
margin-bottom: 2em;
border: 0.0625rem solid rgb(var(--mdui-color-surface-variant));
border-radius: var(--mdui-shape-corner-large);
}
.mdui-table {
width: 100%;
overflow-x: auto;
margin-top: 2em;
margin-bottom: 2em;
border: 0.0625rem solid rgb(var(--mdui-color-surface-variant));
border-radius: var(--mdui-shape-corner-large);
}
.mdui-table table {
margin-top: 0;
margin-bottom: 0;
border: none;
border-radius: 0;
}
.mdui-prose table,
.mdui-table table {
width: 100%;
text-align: left;
border-collapse: collapse;
border-spacing: 0;
}
.mdui-prose td,
.mdui-prose th,
.mdui-table td,
.mdui-table th {
border-top: 0.0625rem solid rgb(var(--mdui-color-surface-variant));
}
.mdui-prose td:not(:first-child),
.mdui-prose th:not(:first-child),
.mdui-table td:not(:first-child),
.mdui-table th:not(:first-child) {
border-left: 0.0625rem solid rgb(var(--mdui-color-surface-variant));
}
.mdui-prose td:not(:last-child),
.mdui-prose th:not(:last-child),
.mdui-table td:not(:last-child),
.mdui-table th:not(:last-child) {
border-right: 0.0625rem solid rgb(var(--mdui-color-surface-variant));
}
.mdui-prose tfoot td,
.mdui-prose tfoot th,
.mdui-prose thead td,
.mdui-prose thead th,
.mdui-table tfoot td,
.mdui-table tfoot th,
.mdui-table thead td,
.mdui-table thead th {
position: relative;
vertical-align: middle;
padding: 1.125rem 1rem;
font-weight: var(--mdui-typescale-title-medium-weight);
letter-spacing: var(--mdui-typescale-title-medium-tracking);
line-height: var(--mdui-typescale-title-medium-line-height);
color: rgb(var(--mdui-color-on-surface-variant));
box-shadow: var(--mdui-elevation-level1);
}
.mdui-prose tbody td,
.mdui-prose tbody th,
.mdui-table tbody td,
.mdui-table tbody th {
padding: 0.875rem 1rem;
}
.mdui-prose tbody th,
.mdui-table tbody th {
vertical-align: middle;
font-weight: inherit;
}
.mdui-prose tbody td,
.mdui-table tbody td {
vertical-align: baseline;
}
.mdui-prose tbody:first-child tr:first-child td,
.mdui-prose thead:first-child tr:first-child th,
.mdui-table tbody:first-child tr:first-child td,
.mdui-table thead:first-child tr:first-child th {
border-top: 0;
}
:root {
--mdui-shape-corner-none: 0;
--mdui-shape-corner-extra-small: 0.25rem;
--mdui-shape-corner-small: 0.5rem;
--mdui-shape-corner-medium: 0.75rem;
--mdui-shape-corner-large: 1rem;
--mdui-shape-corner-extra-large: 1.75rem;
--mdui-shape-corner-full: 1000rem;
}
:root {
--mdui-state-layer-hover: 0.08;
--mdui-state-layer-focus: 0.12;
--mdui-state-layer-pressed: 0.12;
--mdui-state-layer-dragged: 0.16;
}
:root {
--mdui-typescale-display-large-weight: 400;
--mdui-typescale-display-medium-weight: 400;
--mdui-typescale-display-small-weight: 400;
--mdui-typescale-display-large-line-height: 4rem;
--mdui-typescale-display-medium-line-height: 3.25rem;
--mdui-typescale-display-small-line-height: 2.75rem;
--mdui-typescale-display-large-size: 3.5625rem;
--mdui-typescale-display-medium-size: 2.8125rem;
--mdui-typescale-display-small-size: 2.25rem;
--mdui-typescale-display-large-tracking: 0rem;
--mdui-typescale-display-medium-tracking: 0rem;
--mdui-typescale-display-small-tracking: 0rem;
--mdui-typescale-headline-large-weight: 400;
--mdui-typescale-headline-medium-weight: 400;
--mdui-typescale-headline-small-weight: 400;
--mdui-typescale-headline-large-line-height: 2.5rem;
--mdui-typescale-headline-medium-line-height: 2.25rem;
--mdui-typescale-headline-small-line-height: 2rem;
--mdui-typescale-headline-large-size: 2rem;
--mdui-typescale-headline-medium-size: 1.75rem;
--mdui-typescale-headline-small-size: 1.5rem;
--mdui-typescale-headline-large-tracking: 0rem;
--mdui-typescale-headline-medium-tracking: 0rem;
--mdui-typescale-headline-small-tracking: 0rem;
--mdui-typescale-title-large-weight: 400;
--mdui-typescale-title-medium-weight: 500;
--mdui-typescale-title-small-weight: 500;
--mdui-typescale-title-large-line-height: 1.75rem;
--mdui-typescale-title-medium-line-height: 1.5rem;
--mdui-typescale-title-small-line-height: 1.25rem;
--mdui-typescale-title-large-size: 1.375rem;
--mdui-typescale-title-medium-size: 1rem;
--mdui-typescale-title-small-size: 0.875rem;
--mdui-typescale-title-large-tracking: 0rem;
--mdui-typescale-title-medium-tracking: 0.009375rem;
--mdui-typescale-title-small-tracking: 0.00625rem;
--mdui-typescale-label-large-weight: 500;
--mdui-typescale-label-medium-weight: 500;
--mdui-typescale-label-small-weight: 500;
--mdui-typescale-label-large-line-height: 1.25rem;
--mdui-typescale-label-medium-line-height: 1rem;
--mdui-typescale-label-small-line-height: 0.375rem;
--mdui-typescale-label-large-size: 0.875rem;
--mdui-typescale-label-medium-size: 0.75rem;
--mdui-typescale-label-small-size: 0.6875rem;
--mdui-typescale-label-large-tracking: 0.00625rem;
--mdui-typescale-label-medium-tracking: 0.03125rem;
--mdui-typescale-label-small-tracking: 0.03125rem;
--mdui-typescale-body-large-weight: 400;
--mdui-typescale-body-medium-weight: 400;
--mdui-typescale-body-small-weight: 400;
--mdui-typescale-body-large-line-height: 1.5rem;
--mdui-typescale-body-medium-line-height: 1.25rem;
--mdui-typescale-body-small-line-height: 1rem;
--mdui-typescale-body-large-size: 1rem;
--mdui-typescale-body-medium-size: 0.875rem;
--mdui-typescale-body-small-size: 0.75rem;
--mdui-typescale-body-large-tracking: 0.009375rem;
--mdui-typescale-body-medium-tracking: 0.015625rem;
--mdui-typescale-body-small-tracking: 0.025rem;
}
.mdui-lock-screen {
overflow: hidden !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
assets/tray-paused.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
assets/tray-white.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
assets/tray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
appId: com.github.th-ch.youtube-music appId: "com.github.th-ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063"
productName: YouTube Music productName: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063"
files: files:
- '!*' - '!*'
- dist - dist
@ -20,7 +20,7 @@ mac:
arch: arch:
- x64 - x64
- arm64 - arm64
icon: assets/generated/icons/mac/icon.icns icon: assets/generated/icons/mac/icon.icon
compression: maximum compression: maximum
win: win:
icon: assets/generated/icons/win/icon.ico icon: assets/generated/icons/win/icon.ico
@ -43,7 +43,7 @@ linux:
category: AudioVideo category: AudioVideo
desktop: desktop:
entry: entry:
StartupWMClass: com.github.th_ch.youtube_music StartupWMClass: "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063"
target: target:
- target: AppImage - target: AppImage
arch: arch:
@ -76,14 +76,10 @@ linux:
- arm64 - arm64
- armv7l - armv7l
appImage: appImage:
description: >- description: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App bundled with custom plugins"
YouTube Music Desktop App bundled with custom plugins (and built-in ad
blocker / downloader)
category: AudioVideo category: AudioVideo
flatpak: flatpak:
description: >- description: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App bundled with custom plugins"
YouTube Music Desktop App bundled with custom plugins (and built-in ad
blocker / downloader)
category: AudioVideo category: AudioVideo
runtimeVersion: '24.08' runtimeVersion: '24.08'
baseVersion: '24.08' baseVersion: '24.08'
@ -98,7 +94,7 @@ flatpak:
- '--talk-name=org.freedesktop.Notifications' - '--talk-name=org.freedesktop.Notifications'
- '--talk-name=org.gnome.SessionManager' - '--talk-name=org.gnome.SessionManager'
- '--talk-name=org.kde.StatusNotifierWatcher' - '--talk-name=org.kde.StatusNotifierWatcher'
- '--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*' - "--own-name=org.mpris.MediaPlayer2.\u0059\u006f\u0075\u0074\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063.*"
deb: deb:
depends: depends:
- libgtk-3-0 - libgtk-3-0

View File

@ -159,7 +159,8 @@ export default defineConfig({
}, },
server: { server: {
cors: { cors: {
origin: 'https://music.youtube.com', origin:
'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
}, },
}, },
}; };

View File

@ -18,51 +18,89 @@ export default tsEslint.config(
{ {
plugins: { plugins: {
stylistic, stylistic,
importPlugin importPlugin,
}, },
languageOptions: { languageOptions: {
parser: tsEslint.parser, parser: tsEslint.parser,
parserOptions: { parserOptions: {
project: true, project: ['tsconfig.json', 'tsconfig.test.json'],
sourceType: 'module', sourceType: 'module',
ecmaVersion: 'latest' ecmaVersion: 'latest',
} },
}, },
rules: { rules: {
'stylistic/arrow-parens': ['error', 'always'], 'stylistic/arrow-parens': ['error', 'always'],
'stylistic/object-curly-spacing': ['error', 'always'], 'stylistic/object-curly-spacing': ['error', 'always'],
'stylistic/jsx-pascal-case': 'error', 'stylistic/jsx-pascal-case': 'error',
'stylistic/jsx-curly-spacing': ['error', { when: 'never', children: true }], 'stylistic/jsx-curly-spacing': [
'error',
{ when: 'never', children: true },
],
'stylistic/jsx-sort-props': 'error', 'stylistic/jsx-sort-props': 'error',
'prettier/prettier': ['error', { singleQuote: true, semi: true, tabWidth: 2, trailingComma: 'all', quoteProps: 'preserve' }], 'prettier/prettier': [
'error',
{
singleQuote: true,
semi: true,
tabWidth: 2,
trailingComma: 'all',
quoteProps: 'preserve',
},
],
'@typescript-eslint/no-floating-promises': 'off', '@typescript-eslint/no-floating-promises': 'off',
'@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }], '@typescript-eslint/no-misused-promises': [
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], 'off',
{ checksVoidReturn: false },
],
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_' },
],
'@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/consistent-type-imports': ['error', { '@typescript-eslint/consistent-type-imports': [
fixStyle: 'inline-type-imports', 'error',
prefer: 'type-imports', {
disallowTypeAnnotations: false, fixStyle: 'inline-type-imports',
}], prefer: 'type-imports',
disallowTypeAnnotations: false,
},
],
'importPlugin/first': 'error', 'importPlugin/first': 'error',
'importPlugin/newline-after-import': 'off', 'importPlugin/newline-after-import': 'off',
'importPlugin/no-default-export': 'off', 'importPlugin/no-default-export': 'off',
'importPlugin/no-duplicates': 'error', 'importPlugin/no-duplicates': 'error',
'importPlugin/no-unresolved': ['error', { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }], 'importPlugin/no-unresolved': [
'importPlugin/order': ['error', { 'error',
'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'], {
'newlines-between': 'always-and-inside-groups', ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'],
'alphabetize': { order: 'ignore', caseInsensitive: false } },
}], ],
'importPlugin/order': [
'error',
{
'groups': [
'builtin',
'external',
['internal', 'index', 'sibling'],
'parent',
'type',
],
'newlines-between': 'always-and-inside-groups',
'alphabetize': { order: 'ignore', caseInsensitive: false },
},
],
'importPlugin/prefer-default-export': 'off', 'importPlugin/prefer-default-export': 'off',
'camelcase': ['error', { properties: 'never' }], 'camelcase': ['error', { properties: 'never' }],
'class-methods-use-this': 'off', 'class-methods-use-this': 'off',
'stylistic/lines-around-comment': ['error', { 'stylistic/lines-around-comment': [
beforeBlockComment: false, 'error',
afterBlockComment: false, {
beforeLineComment: false, beforeBlockComment: false,
afterLineComment: false, afterBlockComment: false,
}], beforeLineComment: false,
afterLineComment: false,
},
],
'stylistic/max-len': 'off', 'stylistic/max-len': 'off',
'stylistic/no-mixed-operators': 'warn', // prettier does not support no-mixed-operators 'stylistic/no-mixed-operators': 'warn', // prettier does not support no-mixed-operators
'stylistic/no-multi-spaces': ['error', { ignoreEOLComments: true }], 'stylistic/no-multi-spaces': ['error', { ignoreEOLComments: true }],
@ -70,16 +108,20 @@ export default tsEslint.config(
'no-void': 'error', 'no-void': 'error',
'no-empty': 'off', 'no-empty': 'off',
'prefer-promise-reject-errors': 'off', 'prefer-promise-reject-errors': 'off',
'stylistic/quotes': ['error', 'single', { 'stylistic/quotes': [
avoidEscape: true, 'error',
allowTemplateLiterals: false, 'single',
}], {
avoidEscape: true,
allowTemplateLiterals: 'never',
},
],
'stylistic/quote-props': ['error', 'consistent'], 'stylistic/quote-props': ['error', 'consistent'],
'stylistic/semi': ['error', 'always'], 'stylistic/semi': ['error', 'always'],
}, },
settings: { settings: {
'import/parsers': { 'import/parsers': {
'@typescript-eslint/parser': ['.ts'] '@typescript-eslint/parser': ['.ts'],
}, },
'import/resolver': { 'import/resolver': {
typescript: {}, typescript: {},

View File

@ -1,6 +1,6 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) th-ch <th-ch@users.noreply.github.com> (https://github.com/th-ch/youtube-music) Copyright (c) th-ch <th-ch@users.noreply.github.com> (https://github.com/pear-devs/pear-desktop)
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,17 +1,17 @@
{ {
"name": "youtube-music", "name": "\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063",
"desktopName": "com.github.th_ch.youtube_music", "desktopName": "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063",
"productName": "YouTube Music", "productName": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063",
"version": "3.11.0", "version": "3.11.0",
"description": "YouTube Music Desktop App - including custom plugins", "description": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App - including custom plugins",
"main": "./dist/main/index.js", "main": "./dist/main/index.js",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
"repository": "th-ch/youtube-music", "repository": "pear-devs/pear-desktop",
"author": { "author": {
"name": "th-ch", "name": "th-ch",
"email": "th-ch@users.noreply.github.com", "email": "th-ch@users.noreply.github.com",
"url": "https://github.com/th-ch/youtube-music" "url": "https://github.com/pear-devs/pear-desktop"
}, },
"scripts": { "scripts": {
"test": "pnpm playwright test", "test": "pnpm playwright test",
@ -45,11 +45,11 @@
}, },
"pnpm": { "pnpm": {
"overrides": { "overrides": {
"vite": "npm:rolldown-vite@7.1.8", "vite": "npm:rolldown-vite@7.3.0",
"node-gyp": "11.4.2", "node-gyp": "11.4.2",
"xml2js": "0.6.2", "xml2js": "0.6.2",
"node-fetch": "3.3.2", "node-fetch": "3.3.2",
"@electron/universal": "3.0.1", "@electron/universal": "3.0.2",
"@babel/runtime": "7.28.4" "@babel/runtime": "7.28.4"
}, },
"patchedDependencies": { "patchedDependencies": {
@ -57,7 +57,8 @@
"@malept/flatpak-bundler@0.4.0": "patches/@malept__flatpak-bundler@0.4.0.patch", "@malept/flatpak-bundler@0.4.0": "patches/@malept__flatpak-bundler@0.4.0.patch",
"kuromoji@0.1.2": "patches/kuromoji@0.1.2.patch", "kuromoji@0.1.2": "patches/kuromoji@0.1.2.patch",
"file-type@16.5.4": "patches/file-type@16.5.4.patch", "file-type@16.5.4": "patches/file-type@16.5.4.patch",
"electron-is@3.0.0": "patches/electron-is@3.0.0.patch" "electron-is@3.0.0": "patches/electron-is@3.0.0.patch",
"mdui@2.1.4": "patches/mdui@2.1.4.patch"
}, },
"neverBuiltDependencies": [] "neverBuiltDependencies": []
}, },
@ -71,22 +72,23 @@
"@foobar404/wave": "2.0.5", "@foobar404/wave": "2.0.5",
"@ghostery/adblocker-electron": "2.11.6", "@ghostery/adblocker-electron": "2.11.6",
"@ghostery/adblocker-electron-preload": "2.11.6", "@ghostery/adblocker-electron-preload": "2.11.6",
"@hono/node-server": "1.19.1", "@hono/node-server": "1.19.7",
"@hono/node-ws": "1.2.0", "@hono/node-ws": "1.2.0",
"@hono/swagger-ui": "0.5.2", "@hono/swagger-ui": "0.5.2",
"@hono/zod-openapi": "1.1.0", "@hono/zod-openapi": "1.2.0",
"@hono/zod-validator": "0.7.2", "@hono/zod-validator": "0.7.6",
"@jellybrick/dbus-next": "0.10.3", "@jellybrick/dbus-next": "0.10.3",
"@jellybrick/electron-better-web-request": "1.0.4", "@jellybrick/electron-better-web-request": "2.0.0",
"@jellybrick/mpris-service": "2.1.5", "@jellybrick/mpris-service": "2.1.5",
"@jimp/plugin-color": "1.6.0", "@jimp/plugin-color": "1.6.0",
"@mdui/icons": "^1.0.3",
"@skyra/jaro-winkler": "1.1.1", "@skyra/jaro-winkler": "1.1.1",
"@xhayper/discord-rpc": "1.3.0", "@xhayper/discord-rpc": "1.3.0",
"async-mutex": "0.5.0", "async-mutex": "0.5.0",
"bgutils-js": "3.2.0", "bgutils-js": "3.2.0",
"butterchurn": "3.0.0-beta.5", "butterchurn": "3.0.0-beta.5",
"butterchurn-presets": "3.0.0-beta.4", "butterchurn-presets": "3.0.0-beta.4",
"color": "5.0.0", "color": "5.0.3",
"conf": "14.0.0", "conf": "14.0.0",
"custom-electron-prompt": "1.5.8", "custom-electron-prompt": "1.5.8",
"deepmerge-ts": "7.1.5", "deepmerge-ts": "7.1.5",
@ -97,14 +99,14 @@
"electron-store": "10.1.0", "electron-store": "10.1.0",
"electron-unhandled": "5.0.0", "electron-unhandled": "5.0.0",
"electron-updater": "6.6.2", "electron-updater": "6.6.2",
"es-hangul": "2.3.5", "es-hangul": "2.3.8",
"fast-average-color": "9.5.0", "fast-average-color": "9.5.0",
"fast-equals": "5.2.2", "fast-equals": "5.2.2",
"fflate": "0.8.2", "fflate": "0.8.2",
"filenamify": "6.0.0", "filenamify": "6.0.0",
"hanja": "1.1.5", "hanja": "1.1.5",
"happy-dom": "18.0.1", "happy-dom": "20.0.11",
"hono": "4.9.6", "hono": "4.10.3",
"howler": "2.2.4", "howler": "2.2.4",
"html-to-text": "9.0.5", "html-to-text": "9.0.5",
"i18next": "25.5.2", "i18next": "25.5.2",
@ -115,12 +117,12 @@
"kuroshiro": "1.2.0", "kuroshiro": "1.2.0",
"kuroshiro-analyzer-kuromoji": "1.1.0", "kuroshiro-analyzer-kuromoji": "1.1.0",
"lazy-var": "2.2.2", "lazy-var": "2.2.2",
"mdui": "2.1.4",
"node-html-parser": "7.0.1", "node-html-parser": "7.0.1",
"node-id3": "0.2.9", "node-id3": "0.2.9",
"peerjs": "1.5.5", "peerjs": "1.5.5",
"semver": "7.7.2", "semver": "7.7.3",
"serve": "14.2.5", "serve": "14.2.5",
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
"socks": "2.8.7", "socks": "2.8.7",
"solid-element": "1.9.1", "solid-element": "1.9.1",
"solid-floating-ui": "0.3.1", "solid-floating-ui": "0.3.1",
@ -129,11 +131,11 @@
"solid-transition-group": "0.3.0", "solid-transition-group": "0.3.0",
"tiny-pinyin": "1.3.2", "tiny-pinyin": "1.3.2",
"tinyld": "1.3.4", "tinyld": "1.3.4",
"virtua": "0.42.3", "virtua": "0.48.2",
"vudio": "2.1.1", "vudio": "2.1.1",
"x11": "2.3.0", "x11": "2.3.0",
"youtubei.js": "15.0.1", "youtubei.js": "^16.0.1",
"zod": "4.1.5" "zod": "4.2.1"
}, },
"devDependencies": { "devDependencies": {
"@electron-toolkit/tsconfig": "1.0.1", "@electron-toolkit/tsconfig": "1.0.1",
@ -151,12 +153,12 @@
"builtin-modules": "5.0.0", "builtin-modules": "5.0.0",
"cross-env": "10.0.0", "cross-env": "10.0.0",
"del-cli": "6.0.0", "del-cli": "6.0.0",
"discord-api-types": "0.38.23", "discord-api-types": "0.38.37",
"electron": "38.0.0", "electron": "38.7.2",
"electron-builder": "26.0.12", "electron-builder": "26.4.0",
"electron-builder-squirrel-windows": "26.0.12", "electron-builder-squirrel-windows": "26.0.12",
"electron-devtools-installer": "4.0.0", "electron-devtools-installer": "4.0.0",
"electron-vite": "4.0.0", "electron-vite": "4.0.1",
"eslint": "9.35.0", "eslint": "9.35.0",
"eslint-config-prettier": "10.1.8", "eslint-config-prettier": "10.1.8",
"eslint-import-resolver-exports": "1.0.0-beta.5", "eslint-import-resolver-exports": "1.0.0-beta.5",
@ -164,17 +166,16 @@
"eslint-plugin-import": "2.32.0", "eslint-plugin-import": "2.32.0",
"eslint-plugin-prettier": "5.5.4", "eslint-plugin-prettier": "5.5.4",
"eslint-plugin-solid": "0.14.5", "eslint-plugin-solid": "0.14.5",
"glob": "11.0.3", "glob": "11.1.0",
"node-gyp": "11.4.2", "node-gyp": "11.4.2",
"playwright": "1.55.0", "ts-morph": "27.0.2",
"ts-morph": "27.0.0", "typescript": "5.9.3",
"typescript": "5.9.2",
"typescript-eslint": "8.43.0", "typescript-eslint": "8.43.0",
"utf-8-validate": "6.0.5", "utf-8-validate": "6.0.6",
"vite": "npm:rolldown-vite@7.1.8", "vite": "npm:rolldown-vite@7.3.0",
"vite-plugin-inspect": "11.3.3", "vite-plugin-inspect": "11.3.3",
"vite-plugin-resolve": "2.5.2", "vite-plugin-resolve": "2.5.2",
"vite-plugin-solid": "2.11.8", "vite-plugin-solid": "2.11.10",
"ws": "8.18.3" "ws": "8.18.3"
}, },
"auto-changelog": { "auto-changelog": {

40
patches/mdui@2.1.4.patch Normal file
View File

@ -0,0 +1,40 @@
diff --git a/jsx.en.d.ts b/jsx.en.d.ts
index 514d455dcdb436aaf7b2ee88deaefe01943c8b4b..48dff045dead4315936afd931336198996c88217 100644
--- a/jsx.en.d.ts
+++ b/jsx.en.d.ts
@@ -1,12 +1,8 @@
-import React from 'react';
import { JQ } from '@mdui/jq';
-type HTMLElementProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
+type HTMLElementProps = import("solid-js").JSX.HTMLAttributes<HTMLElement>;
-declare global {
- namespace React {
- namespace JSX {
- interface IntrinsicElements {
+export interface IntrinsicElements {
/**
* Avatar Component
*
@@ -3296,7 +3292,4 @@ declare global {
*/
'order'?: number;
} & HTMLElementProps;
- }
- }
- }
}
diff --git a/package.json b/package.json
index 3fa3eeb471ce4c31d7ac1c9bcb2d6823947e91ca..c4b062020bf20b8db34ccfea500fa682a4af19a6 100644
--- a/package.json
+++ b/package.json
@@ -60,5 +60,8 @@
"tslib": "^2.8.1",
"@mdui/shared": "^1.0.8",
"@mdui/jq": "^3.0.3"
+ },
+ "peerDependencies": {
+ "solid-js": "^1.9.7"
}
}

1388
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -50,7 +50,7 @@ export const defaultConfig: DefaultConfig = {
x: -1, x: -1,
y: -1, y: -1,
}, },
'url': 'https://music.youtube.com', 'url': 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
'options': { 'options': {
tray: false, tray: false,
appVisible: true, appVisible: true,

View File

@ -13,7 +13,7 @@ export function getPlugins() {
export async function isEnabled(plugin: string) { export async function isEnabled(plugin: string) {
const pluginConfig = deepmerge( const pluginConfig = deepmerge(
(await allPlugins())[plugin].config ?? { enabled: false }, (await allPlugins())[plugin]?.config ?? { enabled: false },
(store.get('plugins') as Record<string, PluginConfig>)[plugin] ?? {}, (store.get('plugins') as Record<string, PluginConfig>)[plugin] ?? {},
); );
return pluginConfig !== undefined && pluginConfig.enabled; return pluginConfig !== undefined && pluginConfig.enabled;

View File

@ -112,7 +112,10 @@ const migrations = {
'>=2.1.3'(store: IStore) { '>=2.1.3'(store: IStore) {
const listenAlong = store.get('plugins.discord.listenAlong'); const listenAlong = store.get('plugins.discord.listenAlong');
if (listenAlong !== undefined) { if (listenAlong !== undefined) {
store.set('plugins.discord.playOnYouTubeMusic', listenAlong); store.set(
'plugins.discord.playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063',
listenAlong,
);
store.delete('plugins.discord.listenAlong'); store.delete('plugins.discord.listenAlong');
} }
}, },

View File

@ -2,6 +2,9 @@ import i18next, { init, t as i18t, changeLanguage } from 'i18next';
import { languageResources } from 'virtual:i18n'; import { languageResources } from 'virtual:i18n';
export const APPLICATION_NAME =
'\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063';
export const loadI18n = async () => export const loadI18n = async () =>
await init({ await init({
resources: await languageResources(), resources: await languageResources(),

View File

@ -2,10 +2,10 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "فشل تشغيل الاضافة {{pluginName}}::{{contextName}}", "execute-failed": "فشل بدأ الاضافة {{pluginName}}::{{contextName}}",
"executed-at-ms": "تم تشغيل الاضافة {{pluginName}}::{{contextName}} خلال {{ms}} جزء من الثانية", "executed-at-ms": "تم بدأ الاضافة {{pluginName}}::{{contextName}} خلال {{ms}} جزء من الثانية",
"initialize-failed": "فشل تنفيذ الاضافة \"{{pluginName}}\"", "initialize-failed": "فشل تشغيل الاضافة \"{{pluginName}}\"",
"load-all": "جاري تحميل جميع الاضافات", "load-all": "جار تحميل جميع الاضافات",
"load-failed": "فشل في تحميل الاضافة \"{{pluginName}}\"", "load-failed": "فشل في تحميل الاضافة \"{{pluginName}}\"",
"loaded": "تم تحميل الاضافة \"{{pluginName}}\"", "loaded": "تم تحميل الاضافة \"{{pluginName}}\"",
"unload-failed": "فشل ازالة الاضافة \"{{pluginName}}\"", "unload-failed": "فشل ازالة الاضافة \"{{pluginName}}\"",
@ -30,21 +30,21 @@
"receive-command": "تم الحصول على أمر عن طريق: \"{{command}}\"" "receive-command": "تم الحصول على أمر عن طريق: \"{{command}}\""
}, },
"theme": { "theme": {
"css-file-not-found": "ملف \"{{cssFile}}\" غير متواجد,سيتم التجاهل" "css-file-not-found": "ملف \"{{cssFile}}\" غير متواجد، سيتم التجاهل"
}, },
"unresponsive": { "unresponsive": {
"details": "خطء عدم استجابة!\n{{error}}" "details": "خطء عدم استجابة!\n{{error}}"
}, },
"when-ready": { "when-ready": {
"clearing-cache-after-20s": "ازالة بيانات التطبيق المخزنة" "clearing-cache-after-20s": "ازالة ذاكرة التخزين المؤقت للتطبيق"
}, },
"window": { "window": {
"tried-to-render-offscreen": "تم محاولة فتح الصفحة خارج الشاشة, حجم الصفحة={{windowSize}}, حجم الشاشة={{displaySize}}, مكان={{position}}" "tried-to-render-offscreen": "تم محاولة فتح الصفحة خارج الشاشة, حجم الصفحة={{windowSize}}, حجم النافذة={{displaySize}}, المكان={{position}}"
} }
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "تم اخفاء القائمة, استخدم 'Alt' لاظهار القائمة (أو 'Escape' اذا كنت تستخدم القائمة داخل التطبيق)", "detail": "تم اخفاء القائمة, استخدم 'Alt' لاظهار القائمة (أو 'Escape' اذا كنت تستخدم القائمة التي داخل التطبيق)",
"message": "اخفاء القائمة مفعل", "message": "اخفاء القائمة مفعل",
"title": "تم تفعيل اخفاء القائمة" "title": "تم تفعيل اخفاء القائمة"
}, },
@ -65,27 +65,27 @@
}, },
"detail": "نأسف على الإزعاج! يرجى اختيار ما يجب القيام به:", "detail": "نأسف على الإزعاج! يرجى اختيار ما يجب القيام به:",
"message": "التطبيق لا يستجيب", "message": "التطبيق لا يستجيب",
"title": "الصفحة لا تستجيب" "title": "النافذة لا تستجيب"
}, },
"update-available": { "update-available": {
"buttons": { "buttons": {
"disable": "ايقاف التحديثات", "disable": "ايقاف التحديثات",
"download": حميل", "download": نزيل",
"ok": "موافق" "ok": "حسنا"
}, },
"detail": "يوجد نسخة جديدة يمكن تحميلها من خلال {{downloadLink}}", "detail": "يوجد نسخة جديدة يمكن تنزيلها من {{downloadLink}}",
"message": "يوجد نسخة حديثة", "message": "يوجد نسخة جديدة",
"title": "يوجد تحديث" "title": "يوجد تحديث"
} }
}, },
"menu": { "menu": {
"about": "عنا", "about": "عنا",
"navigation": { "navigation": {
"label": "التنقل", "label": "شريط التنقل",
"submenu": { "submenu": {
"copy-current-url": "نسخ الرابط الحالي", "copy-current-url": "نسخ الرابط الحالي",
"go-back": "العودة للخلف", "go-back": "عودة",
"go-forward": "التقدم", "go-forward": "تقدم",
"quit": "الخروج", "quit": "الخروج",
"restart": "اعادة تشغيل التطبيق" "restart": "اعادة تشغيل التطبيق"
} }
@ -96,28 +96,28 @@
"advanced-options": { "advanced-options": {
"label": "الاعدادات المتقدمة", "label": "الاعدادات المتقدمة",
"submenu": { "submenu": {
"auto-reset-app-cache": "إعادة تعيين ذاكرة التخزين المؤقت للتطبيق عند بدء التشغيل", "auto-reset-app-cache": "إعادة ضبط ذاكرة التخزين المؤقت للتطبيق عند بدء التشغيل",
"disable-hardware-acceleration": "تعطيل تسريع الأجهزة", "disable-hardware-acceleration": "اطفاء تسريع الأجهزة",
"edit-config-json": "تعديل ملف الاعدادات", "edit-config-json": "تعديل ملف الاعدادات",
"override-user-agent": "تجاوز وكيل المستخدم", "override-user-agent": "تجاوز وكيل المستخدم",
"restart-on-config-changes": "اعادة التشغيل بعد تعديل الاعدادات", "restart-on-config-changes": "اعادة التشغيل بعد تعديل الاعدادات",
"set-proxy": { "set-proxy": {
"label": "تعيين الوكيل", "label": "تعيين الوكيل",
"prompt": { "prompt": {
"label": "أدخل عنوان الوكيل: (اتركه فارغًا للتعطيل)", "label": "أدخل عنوان الوكيل: (اتركه فارغًا لإطفائه)",
"placeholder": "مثال: SOCKS5://127.0.0.1:9999", "placeholder": "مثال: SOCKS5://127.0.0.1:9999",
"title": "اضافة الوكيل" "title": "ضع proxy"
} }
}, },
"toggle-dev-tools": "تثبيت أدوات التطوير" "toggle-dev-tools": "تثبيت أدوات التطوير"
} }
}, },
"always-on-top": "دائما في القمة", "always-on-top": "دائما في المقدمة",
"auto-update": "تحديث تلقائي", "auto-update": "تحديث تلقائي",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "سيتم إخفاء القائمة عند التشغيل التالي، استخدم [Alt] لإظهارها (أو ضع علامة اختيار على [`] في حالة استخدام القائمة داخل التطبيق)", "message": "سيتم إخفاء القائمة عند التشغيل التالي، استخدم [Alt] لإظهارها (أو اضغط [`] في حالة استخدام القائمة التي داخل التطبيق)",
"title": "إخفاء القائمة ممكن" "title": "إخفاء القائمة مفعل"
}, },
"label": "إخفاء القائمة" "label": "إخفاء القائمة"
}, },
@ -131,20 +131,20 @@
"to-help-translate": "تريد المساعدة في الترجمة؟ اضغط هنا" "to-help-translate": "تريد المساعدة في الترجمة؟ اضغط هنا"
} }
}, },
"resume-on-start": "تكملة الأغنية الأخيرة عند بدأ التشغيل", "resume-on-start": "استأنف الأغنية الأخيرة عند بدأ التشغيل",
"single-instance-lock": "قفل مثيل واحد", "single-instance-lock": "قفل مثيل واحد",
"start-at-login": "‎ابدأ عند تسجيل الدخول", "start-at-login": "‎ابدأ عند تسجيل الدخول",
"starting-page": { "starting-page": {
"label": "صفحة البداية", "label": "صفحة البداية",
"unset": "الغاء" "unset": "عدم تعيين"
}, },
"tray": { "tray": {
"label": "قائمة", "label": "قائمة",
"submenu": { "submenu": {
"disabled": "غير مفعل", "disabled": "غير مفعل",
"enabled-and-hide-app": "تمكين وإخفاء التطبيق", "enabled-and-hide-app": "مفعل وإخفاء التطبيق",
"enabled-and-show-app": مكين وأظهر التطبيق", "enabled-and-show-app": فعل وأظهر التطبيق",
"play-pause-on-click": "تشغيل/إيقاف مؤقت عند النقر" "play-pause-on-click": "تشغيل/إيقاف عند النقر"
} }
}, },
"visual-tweaks": { "visual-tweaks": {
@ -153,7 +153,8 @@
"custom-window-title": { "custom-window-title": {
"label": "عنوان نافذة مخصص", "label": "عنوان نافذة مخصص",
"prompt": { "prompt": {
"placeholder": "مثال: YouTube Music" "label": "ادخل عنوان مخصص للنافذة: (اتركه فارغًا إلغاء التفعيل)",
"placeholder": "مثال: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -162,7 +163,7 @@
"hide": "اخفاء", "hide": "اخفاء",
"label": "أزرار الاعجاب" "label": "أزرار الاعجاب"
}, },
"remove-upgrade-button": "ازالة زرار التطوير", "remove-upgrade-button": "ازالة زر التطوير",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -207,8 +208,8 @@
"restart": "إعادة تشغيل التطبيق", "restart": "إعادة تشغيل التطبيق",
"show": "عرض النافدة", "show": "عرض النافدة",
"tooltip": { "tooltip": {
"default": "يوتيوب اغاني", "default": "{{applicationName}}",
"with-song-info": "أغاني يوتيوب: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -232,25 +233,25 @@
"description": "يطبق ثيمًا ديناميكيًا وتأثيرات بصرية بناء على ألوان الألبوم", "description": "يطبق ثيمًا ديناميكيًا وتأثيرات بصرية بناء على ألوان الألبوم",
"menu": { "menu": {
"color-mix-ratio": { "color-mix-ratio": {
"label": "‬نسبة قوة اللون", "label": "‬نسبة قوة مزيج الألوان",
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}٪"
} }
} }
}, },
"name": "ثيم ألوان الألبوم" "name": "سمة ألوان الألبوم"
}, },
"ambient-mode": { "ambient-mode": {
"description": "يطبق تأثير إضاءة عن طريق إسقاط ألوان ناعمة من الفيديو على خلفية شاشتك", "description": "يطبق تأثير إضاءة عن طريق إسقاط ألوان ناعمة من الفيديو على خلفية شاشتك",
"menu": { "menu": {
"blur-amount": { "blur-amount": {
"label": "مقدار التمويه", "label": "مقدار الطمس",
"submenu": { "submenu": {
"pixels": "{{blurAmount}} بكسل" "pixels": "{{blurAmount}} بكسل"
} }
}, },
"buffer": { "buffer": {
"label": "تخزين الصوت الؤقت", "label": "تخزين الصوت المؤقت",
"submenu": { "submenu": {
"buffer": "{{buffer}}" "buffer": "{{buffer}}"
} }
@ -258,7 +259,7 @@
"opacity": { "opacity": {
"label": "الشفافية", "label": "الشفافية",
"submenu": { "submenu": {
"percent": "{{opacity}}%" "percent": "{{opacity}}٪"
} }
}, },
"quality": { "quality": {
@ -270,7 +271,7 @@
"size": { "size": {
"label": "الحجم", "label": "الحجم",
"submenu": { "submenu": {
"percent": "{{size}}%" "percent": "{{size}}٪"
} }
}, },
"smoothness-transition": { "smoothness-transition": {
@ -286,30 +287,30 @@
"name": "الوضع المحيطي" "name": "الوضع المحيطي"
}, },
"amuse": { "amuse": {
"description": "تكامل دعم YouTube Music مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs", "description": "تكامل دعم {{applicationName}} مع ويدجت Amuse لعرض الأغنية التي قيد التشغيل، من إنتاج 6K Labs",
"name": "تلسيه", "name": "تلسيه",
"response": { "response": {
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية." "query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
} }
}, },
"api-server": { "api-server": {
"description": "يضيف خادم للتحكم في المشغل", "description": "يضيف API للتحكم في المشغل",
"dialog": { "dialog": {
"request": { "request": {
"buttons": { "buttons": {
"allow": "سماح", "allow": "سماح",
"deny": "رفض" "deny": "رفض"
}, },
"message": "السماح لـ {{ID}} ({{origin}}) بالوصول إلى واجهة برمجة التطبيقات (API)؟", "message": "السماح لـ {{ID}} ({{origin}}) بالوصول إلى الAPI؟",
"title": "طلب السماح بالوصول إلى واجهة برمجة التطبيقات(API)" "title": "طلب السماح بالوصول إلى الAPI"
} }
}, },
"menu": { "menu": {
"auth-strategy": { "auth-strategy": {
"label": "نهج التفويض", "label": "استراتيجية التفويض",
"submenu": { "submenu": {
"auth-at-first": { "auth-at-first": {
"label": "التفويض المبدئي عند الطلب الأول" "label": "التفويض عند الطلب الأول"
}, },
"none": { "none": {
"label": "بدون تفويض" "label": "بدون تفويض"
@ -340,10 +341,10 @@
"name": "ضاغط الصوت" "name": "ضاغط الصوت"
}, },
"auth-proxy-adapter": { "auth-proxy-adapter": {
"description": "دعم استخدام خدمات وكيل المصادقة", "description": "دعم استخدام خدمات proxy للإثبات",
"menu": { "menu": {
"disable": "تعطيل مكيف الوكيل", "disable": "تعطيل مكيف الوكيل",
"enable": "تفعيل مكيف الوكيل", "enable": "تفعيل مكيف proxy للصداقة",
"hostname": { "hostname": {
"label": "إسم المستضيف" "label": "إسم المستضيف"
}, },
@ -351,28 +352,28 @@
"label": "المدخل" "label": "المدخل"
} }
}, },
"name": "مكيّف وسيط المصادقة", "name": "مكيّف proxy للمصادقة",
"prompt": { "prompt": {
"hostname": { "hostname": {
"label": "أدخل اسم المستضيف لخادم الوسيط المحلي (يتطلب إعادة التشغيل):", "label": "أدخل اسم المستضيف لخادم proxy المحلي (يتطلب إعادة التشغيل):",
"title": "إسم مستضيف الوسيط" "title": "إسم مستضيف proxy"
}, },
"port": { "port": {
"label": "أدخل مدخلًا لخادم الوسيط المحلي (يتطلب إعادة التشغيل):", "label": "أدخل مدخلًا لخادم proxy المحلي (يتطلب إعادة التشغيل):",
"title": "مدخل الوسيط" "title": "مدخل proxy"
} }
} }
}, },
"blur-nav-bar": { "blur-nav-bar": {
"description": "يجعل شريط التنقل شفاف و ضبابي", "description": "يجعل شريط التنقل شفاف و مطموس",
"name": "تغبيش شريط التنقل" "name": "طمس شريط التنقل"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "تجاوز تَحَقّق اليوتيوب من السن", "description": "تجاوز تَحَقّق مشغل الموسيقى من السن",
"name": "تجاوز التحقق من السن" "name": "تجاوز التحقق من السن"
}, },
"captions-selector": { "captions-selector": {
"description": "محدد ترجمات المقاطع الصوتية لYoutube Music", "description": "محدد ترجمات المقاطع الصوتية ل{{applicationName}}",
"menu": { "menu": {
"autoload": "اختار اخر ترجمة مستخدمة تلقائيا", "autoload": "اختار اخر ترجمة مستخدمة تلقائيا",
"disable-captions": "لا توجد ترجمات بشكل افتراضي" "disable-captions": "لا توجد ترجمات بشكل افتراضي"
@ -390,7 +391,7 @@
}, },
"toast": { "toast": {
"caption-changed": "تم تغيير الترجمة الى {{language}}", "caption-changed": "تم تغيير الترجمة الى {{language}}",
"caption-disabled": "الترجمة معطلة", "caption-disabled": "الترجمة غير مفعلة",
"no-captions": "الترجمة لهاته الأغنية غير متاحة" "no-captions": "الترجمة لهاته الأغنية غير متاحة"
} }
}, },
@ -408,25 +409,33 @@
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "مدة التداخل (بأجزاء الثانية)", "fade-in-duration": "مدة التداخل (بأجزاء الثانية)",
"fade-out-duration": "مدة التلاشي (جزء ثانية)", "fade-out-duration": "مدة التلاشي (بأجزاء الثانية)",
"fade-scaling": { "fade-scaling": {
"label": "توسيع التداخل", "label": "توسيع التداخل",
"linear": "خطي", "linear": "خطي",
"logarithmic": "لوغاريتمي" "logarithmic": "لوغاريتمي"
}, },
"seconds-before-end": "التلاشي قبل النهاية بـ N ثوانٍ" "seconds-before-end": "التداخل قبل النهاية بـ N ثوانٍ"
}, },
"title": "خيارات التداخل" "title": "خيارات التداخل"
} }
} }
}, },
"custom-output-device": { "custom-output-device": {
"description": "ضبط مخرج جهاز وسائط مخصص للأغاني",
"menu": { "menu": {
"device-selector": "اختر جهاز" "device-selector": "اختر جهاز"
},
"name": "جهاز اخراج مخصص",
"prompt": {
"device-selector": {
"label": "اختر جهاز الوسائط الذي سيتم استخدامه للاخراج",
"title": "اختر الجهاز الإخراج"
}
} }
}, },
"disable-autoplay": { "disable-autoplay": {
"description": "يجعل الأغنية تبدأ في وضع \"الإيقاف المؤقت\"", "description": "يجعل الأغنية تبدأ في وضع \"الإيقاف\"",
"menu": { "menu": {
"apply-once": "ينطبق فقط عند بدء التشغيل" "apply-once": "ينطبق فقط عند بدء التشغيل"
}, },
@ -444,13 +453,21 @@
"clear-activity": "مسح النشاط", "clear-activity": "مسح النشاط",
"clear-activity-after-timeout": "مسح النشاط بعد انتهاء المهلة", "clear-activity-after-timeout": "مسح النشاط بعد انتهاء المهلة",
"connected": "متصل", "connected": "متصل",
"disconnected": "قطع الاتصال", "disconnected": "غير متصل",
"hide-duration-left": "إخفاء المدة المتبقية", "hide-duration-left": "إخفاء المدة المتبقية",
"hide-github-button": "إخفاء زر رابط GitHub", "hide-github-button": "إخفاء زر رابط GitHub",
"play-on-youtube-music": "شغل في YouTube Music", "play-on-application": "شغل في {{applicationName}}",
"set-inactivity-timeout": "ضبط مهلة عدم النشاط" "set-inactivity-timeout": "ضبط مهلة عدم النشاط",
"set-status-display-type": {
"label": "نص الحالة",
"submenu": {
"artist": "جار السمع ل{artist}",
"application": "جار السمع ل{{applicationName}}",
"title": "جار السمع ل{song title}"
}
}
}, },
"name": "حالة ديسكورد", "name": "Discord Rich Presence",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "أدخل مهلة عدم النشاط بالثواني:", "label": "أدخل مهلة عدم النشاط بالثواني:",
@ -465,70 +482,70 @@
"buttons": { "buttons": {
"ok": "حسنا" "ok": "حسنا"
}, },
"message": "نعتذر، فشل التحميل…", "message": "اه! نعتذر، فشل التنزيل…",
"title": "خطأ في التحميل!" "title": "خطأ في التنزيل!"
}, },
"start-download-playlist": { "start-download-playlist": {
"buttons": { "buttons": {
"ok": "حسنا" "ok": "حسنا"
}, },
"detail": "({{playlistSize}} أغنية)", "detail": "({{playlistSize}} أغنية)",
"message": حميل القائمة {{playlistTitle}}", "message": نزيل القائمة {{playlistTitle}}",
"title": "بدأ التحميل" "title": "تم بدأ التنزيل"
} }
}, },
"feedback": { "feedback": {
"conversion-progress": "التحويل: {{percent}}%", "conversion-progress": "التحويل: {{percent}}٪",
"converting": "جارٍ التحويل…", "converting": "جارٍ التحويل…",
"done": "تم: {{filePath}}", "done": "تم: {{filePath}}",
"download-info": حميل {{artist}} - {{title}} {{videoId}}", "download-info": نزيل {{artist}} - {{title}} {{videoId}}",
"download-progress": حميل: {{percent}}%", "download-progress": نزيل: {{percent}}٪",
"downloading": "تحميل…", "downloading": "جار التنزيل…",
"downloading-counter": "تنزيل {{current}}/{{total}}…", "downloading-counter": "جار التنزيل {{current}}/{{total}}…",
"downloading-playlist": "يتم تحميل القائمة \"{{playlistTitle}}\" - {{playlistSize}} أغاني ({{playlistId}})", "downloading-playlist": "جار تنزيل القائمة \"{{playlistTitle}}\" - {{playlistSize}} أغاني ({{playlistId}})",
"error-while-downloading": "خطأ في تحميل \"{{author}} - {{title}}\": {{error}}", "error-while-downloading": "خطأ في تنزيل \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "الملف {{playlistFolder}} موجود بالفعل", "folder-already-exists": "الملف {{playlistFolder}} موجود بالفعل",
"getting-playlist-info": "الحصول على معلومات القائمة…", "getting-playlist-info": "جار الحصول على معلومات القائمة…",
"loading": "جار التحميل…", "loading": "جارِ التنزيل…",
"playlist-has-only-one-song": "تحتوي قائمة التشغيل على عنصر واحد فقط، يتم تحميله الأن", "playlist-has-only-one-song": "تحتوي قائمة التشغيل على عنصر واحد فقط، جار تنزيله الأن",
"playlist-id-not-found": "لم يتم العثور على معرف قائمة التشغيل", "playlist-id-not-found": "لم يتم العثور على معرف قائمة التشغيل",
"playlist-is-empty": "قائمة التشغيل فارغة", "playlist-is-empty": "قائمة التشغيل فارغة",
"playlist-is-mix-or-private": "حدث خطأ أثناء الحصول على معلومات قائمة التشغيل: تأكد من أنها ليست قائمة تشغيل خاصة أو قائمة تشغيل \"مختلطة لك\"\n\n{{error}}", "playlist-is-mix-or-private": "حدث خطأ أثناء الحصول على معلومات قائمة التشغيل: تأكد من أنها ليست قائمة تشغيل خاصة أو قائمة تشغيل \"مختلطة لك\"\n\n{{error}}",
"preparing-file": "يتم تجهيز الملف…", "preparing-file": "جار تجهيز الملف…",
"saving": "يتم الحفظ…", "saving": "جار الحفظ…",
"trying-to-get-playlist-id": "محاولة الحصول على معرف قائمة التشغيل: {{playlistId}}", "trying-to-get-playlist-id": "جار محاولة الحصول على معرف قائمة التشغيل: {{playlistId}}",
"video-id-not-found": "لم يتم ايجاد الفيديو", "video-id-not-found": "لم يتم ايجاد الفيديو",
"writing-id3": "كتابة علامات ID3…" "writing-id3": "جار كتابة علامات ID3…"
} }
}, },
"description": "يقوم بتنزيل ملفات MP3/مصدر الصوت مباشرة من الواجهة", "description": "يقوم بتنزيل ملفات MP3/مصدر الصوت مباشرة من الواجهة",
"menu": { "menu": {
"choose-download-folder": "اختر مكان التحميل", "choose-download-folder": "اختر مكان التنزيل",
"download-finish-settings": { "download-finish-settings": {
"label": حميل عند الانتهاء", "label": نزيل عند الانتهاء",
"prompt": { "prompt": {
"last-percent": "بعد ( عدد مجهول ) بالمئة", "last-percent": "بعد x بالمئة",
"last-seconds": "آخر (x) ثانية", "last-seconds": "آخر x ثانية",
"title": "تكوين وقت التحميل" "title": "تكوين وقت التنزيل"
}, },
"submenu": { "submenu": {
"advanced": "متقدم", "advanced": "متقدم",
"enabled": "مفعل", "enabled": "مفعل",
"mode": "وضع الوقت", "mode": "وضع الوقت",
"percent": "النسبة", "percent": "نسبة",
"seconds": "ثواني" "seconds": "ثواني"
} }
}, },
"download-playlist": حميل قائمة التشغيل", "download-playlist": نزيل قائمة التشغيل",
"presets": "الإعدادات المسبقة", "presets": "الإعدادات المسبقة",
"skip-existing": "تخطي الملفات الموجودة" "skip-existing": "تخطي الملفات الموجودة بالفعل"
}, },
"name": "أداة التنزيل", "name": "أداة التنزيل",
"renderer": { "renderer": {
"can-not-update-progress": "لا يمكن تحديث التقدم" "can-not-update-progress": "لا يمكن تحديث التقدم"
}, },
"templates": { "templates": {
"button": حميل" "button": نزيل"
} }
}, },
"equalizer": { "equalizer": {
@ -552,11 +569,11 @@
"menu": { "menu": {
"hide-dom-window-controls": "إخفاء عناصر التحكم في نافذة DOM" "hide-dom-window-controls": "إخفاء عناصر التحكم في نافذة DOM"
}, },
"name": "قائمة داخل التطبيق" "name": "قائمة التي داخل التطبيق"
}, },
"lumiastream": { "lumiastream": {
"description": "يضيف دعم Lumia Stream", "description": "يضيف دعم Lumia Stream",
"name": "Lumia Stream [بيتا]" "name": "Lumia Stream [تجريبي]"
}, },
"lyrics-genius": { "lyrics-genius": {
"description": "يضيف دعم الكلمات لمعظم الأغاني", "description": "يضيف دعم الكلمات لمعظم الأغاني",
@ -575,17 +592,17 @@
}, },
"internal": { "internal": {
"save": "حفظ", "save": "حفظ",
"track-source": "مصدر الاغنية", "track-source": "تتبع مصدر الاغنية",
"unknown-user": "مستخدم مجهول" "unknown-user": "مستخدم مجهول"
}, },
"menu": { "menu": {
"click-to-copy-id": "نسخ معرف المستضيف", "click-to-copy-id": "نسخ معرف المستضيف",
"close": "إغلاق \"الموسيقى معًا\"", "close": "إغلاق الموسيقى معًا",
"connected-users": "المستخدمون المتصلون", "connected-users": "المستخدمون المتصلون",
"disconnect": "قطع اتصال من \"الموسيقى معًا\"", "disconnect": "قطع اتصال من الموسيقى معًا",
"empty-user": "لا يوجد مستعملون متصلون", "empty-user": "لا يوجد مستعملون متصلون",
"host": "مضيف \"الموسيقى معًا\"", "host": "مضيف الموسيقى معًا",
"join": "الانضمام إلى \"الموسيقى معا\"", "join": "الانضمام إلى الموسيقى معا",
"permission": { "permission": {
"all": "السماح للضيوف بالتحكم في قائمة التشغيل والمشغل", "all": "السماح للضيوف بالتحكم في قائمة التشغيل والمشغل",
"host-only": "فقط المضيف يستطيع التحكم بالقائمة و المشغل", "host-only": "فقط المضيف يستطيع التحكم بالقائمة و المشغل",
@ -593,29 +610,29 @@
}, },
"set-permission": "تغيير إذن التحكم", "set-permission": "تغيير إذن التحكم",
"status": { "status": {
"disconnected": "قطع الاتصال", "disconnected": "غير متصل",
"guest": "متصل كضيف", "guest": "متصل كضيف",
"host": "متصل كمضيف" "host": "متصل كمضيف"
} }
}, },
"name": "الموسيقى معا [بيتا]", "name": "الموسيقى معا [تجريبي]",
"toast": { "toast": {
"add-song-failed": "فشل في إضافة أغنية", "add-song-failed": "فشل في إضافة أغنية",
"closed": "تم إغلاق \"الموسيقى معا\"", "closed": "تم إغلاق الموسيقى معا",
"disconnected": "تم قطع اتصال \"الموسيقى معًا\"", "disconnected": "تم قطع اتصال الموسيقى معًا",
"host-failed": "فشل في استضافة \"الموسيقى معا\"", "host-failed": "فشل في استضافة الموسيقى معا",
"id-copied": "تم نسخ معرف المضيف", "id-copied": "تم نسخ معرف المضيف",
"id-copy-failed": م يتم نسخ معرف المضيف", "id-copy-failed": "فشل نسخ معرف المضيف",
"join-failed": "فشل الانضمام إلى \"الموسيقى معا\"", "join-failed": "فشل الانضمام إلى الموسيقى معا",
"joined": "تم الانضمام إلى \"الموسيقى معا\"", "joined": "تم الانضمام إلى الموسيقى معا",
"permission-changed": "تم تغيير إذن \"الموسيقى معًا\" إلى \"{{permission}}\"", "permission-changed": "تم تغيير إذن الموسيقى معًا إلى \"{{permission}}\"",
"remove-song-failed": "فشل في إزالة الأغنية", "remove-song-failed": "فشل في إزالة الأغنية",
"user-connected": "{{name}} انضم إلى \"الموسيقى معًا\"", "user-connected": "{{name}} انضم إلى الموسيقى معًا",
"user-disconnected": "{{name}} غادر \"الموسيقى معًا\"" "user-disconnected": "{{name}} غادر الموسيقى معًا"
} }
}, },
"navigation": { "navigation": {
"description": "أسهم التنقل \"التالي/السابق\" مدمجة مباشرة في الواجهة، كما في متصفحك", "description": "أسهم التنقل \"التالي/السابق\" مدمجة مباشرة في الواجهة، كما في متصفحك المفضل",
"name": "التنقل", "name": "التنقل",
"templates": { "templates": {
"back": { "back": {
@ -631,31 +648,31 @@
"name": "لا يوجد تسجيل دخول بجوجل" "name": "لا يوجد تسجيل دخول بجوجل"
}, },
"notifications": { "notifications": {
"description": "عرض إشعار عندما تبدأ الأغنية بالتشغيل (الإشعارات التفاعلية متوفرة على ويندوز)", "description": "عرض إشعار عندما تبدأ الأغنية (الإشعارات التفاعلية متوفرة على ويندوز)",
"menu": { "menu": {
"interactive": "إشعارات تفاعلية", "interactive": "إشعارات تفاعلية",
"interactive-settings": { "interactive-settings": {
"label": "إعدادات تفاعلية", "label": "إعدادات تفاعلية",
"submenu": { "submenu": {
"hide-button-text": "إخفاء زر النص", "hide-button-text": "إخفاء نص الزر",
"refresh-on-play-pause": "تحديث عند التشغيل/الإيقاف المؤقت", "refresh-on-play-pause": "اعادة تحميل عند التشغيل/الإيقاف",
"tray-controls": "فتح/إغلاق عند النقر على علامة الشريط" "tray-controls": "فتح/إغلاق عند النقر على علامة الشريط"
} }
}, },
"priority": "أولوية الإشعار", "priority": "أولوية الإشعار",
"toast-style": "تنسيق التوست", "toast-style": "تنسيق النخب",
"unpause-notification": "إظهار إشعار عند استئناف التشغيل" "unpause-notification": "إظهار إشعار عند استئناف التشغيل"
}, },
"name": "الإشعارات" "name": "الإشعارات"
}, },
"performance-improvement": { "performance-improvement": {
"description": "تحسين الأداء عبر تفعيل السكربتات التجريبية", "description": "تحسين الأداء عبر تفعيل السكربتات التجريبية",
"name": "تحسين الأداء [بيتا]" "name": "تحسين الأداء [تجريبي]"
}, },
"picture-in-picture": { "picture-in-picture": {
"description": "يسمح بتحويل التطبيق إلى وضع الصورة داخل الصورة", "description": "يسمح بتحويل التطبيق إلى وضع الصورة داخل الصورة",
"menu": { "menu": {
"always-on-top": "دائمًا في الأعلى", "always-on-top": "دائمًا في المقدمة",
"hotkey": { "hotkey": {
"label": "مفتاح اختصار", "label": "مفتاح اختصار",
"prompt": { "prompt": {
@ -670,7 +687,7 @@
"save-window-size": "حفظ حجم النافذة", "save-window-size": "حفظ حجم النافذة",
"use-native-pip": "استخدام وضع الصورة داخل الصورة الأصلي للمتصفح" "use-native-pip": "استخدام وضع الصورة داخل الصورة الأصلي للمتصفح"
}, },
"name": "الصورة داخل الصورة", "name": "وضع الصورة داخل الصورة",
"templates": { "templates": {
"button": "وضع الصورة داخل الصورة" "button": "وضع الصورة داخل الصورة"
} }
@ -683,7 +700,7 @@
} }
}, },
"precise-volume": { "precise-volume": {
"description": "التحكم في مستوى الصوت بدقة باستخدام عجلة الفأرة/مفاتيح الاختصار، مع واجهة مستخدم مخصصة وقابلة للتخصيص وخطوات صوتية قابلة للتعديل", "description": "التحكم في مستوى الصوت بدقة باستخدام عجلة الفأرة/مفاتيح الاختصار، مع واجهة مستخدم مخصصة وخطوات صوتية قابلة للتخصيص",
"menu": { "menu": {
"arrows-shortcuts": "عناصر التحكم بأسهم المفاتيح", "arrows-shortcuts": "عناصر التحكم بأسهم المفاتيح",
"custom-volume-steps": "تعيين خطوات صوتية خاصة", "custom-volume-steps": "تعيين خطوات صوتية خاصة",
@ -728,8 +745,8 @@
"dialog": { "dialog": {
"lastfm": { "lastfm": {
"auth-failed": { "auth-failed": {
"message": "فشل المصادقة مع Last.fm\nإخفاء النافذة المنبثقة حتى إعادة التشغيل التالية.", "message": "فشل التفويض مع Last.fm\nإخفاء النافذة المصغرة حتى إعادة التشغيل التالية.",
"title": "فشلت المصادقة" "title": "فشل التفويض"
} }
} }
}, },
@ -740,6 +757,7 @@
"listenbrainz": { "listenbrainz": {
"token": "أدخل رمز مستخدم ListenBrainz" "token": "أدخل رمز مستخدم ListenBrainz"
}, },
"scrobble-alternative-artist": "استخدم فنانين بديلين",
"scrobble-alternative-title": "استخدم عناوين بديلة", "scrobble-alternative-title": "استخدم عناوين بديلة",
"scrobble-other-media": "Scrobble الوسائط الأخرى" "scrobble-other-media": "Scrobble الوسائط الأخرى"
}, },
@ -758,12 +776,12 @@
} }
}, },
"shortcuts": { "shortcuts": {
"description": "يسمح بضبط اختصارات لوحة المفاتيح العالمية للتحكم في التشغيل (تشغيل/إيقاف مؤقت/التالي/السابق) وإيقاف تشغيل OSD الوسائط عن طريق تجاوز مفاتيح الوسائط، وتشغيل Ctrl/CMD + F للبحث، وتفعيل دعم Linux MPRIS لمفاتيح الوسائط، واختصارات مخصصة للمستخدمين المتقدمين", "description": "يسمح بضبط اختصارات لوحة المفاتيح للتحكم في التشغيل (تشغيل/إيقاف/التالي/السابق) وإيقاف تشغيل OSD الوسائط عن طريق تجاوز مفاتيح الوسائط، وتشغيل Ctrl/CMD + F للبحث، وتفعيل دعم Linux MPRIS لمفاتيح الوسائط، واختصارات مخصصة للمستخدمين المتقدمين",
"menu": { "menu": {
"override-media-keys": "تجاوز مفاتيح الوسائط", "override-media-keys": "تجاوز مفاتيح الوسائط",
"set-keybinds": "تعيين عناصر التحكم بالأغاني" "set-keybinds": "تعيين عناصر التحكم بالأغاني"
}, },
"name": "الاختصارات (& MPRIS)", "name": "الاختصارات (و MPRIS)",
"prompt": { "prompt": {
"keybind": { "keybind": {
"keybind-options": { "keybind-options": {
@ -772,17 +790,17 @@
"previous": "السابق" "previous": "السابق"
}, },
"label": "اختر اختصارات لوحة المفاتيح للتحكم في الأغاني:", "label": "اختر اختصارات لوحة المفاتيح للتحكم في الأغاني:",
"title": "اختصارات لوحة المفاتيح العالمية" "title": "اختصارات لوحة المفاتيح"
} }
} }
}, },
"skip-disliked-songs": { "skip-disliked-songs": {
"description": "تخطي الأغاني غير المرغوب فيها", "description": "يتخطى الأغاني الغير معجب فيها",
"name": "تخطي الأغاني الغير مرغوب فيها" "name": "تخطي الأغاني الغير معجب فيها"
}, },
"skip-silences": { "skip-silences": {
"description": "تخطي أقسام الصمت تلقائيًا في الأغاني", "description": "تخطي أقسام التي ليس لها صوت تلقائيًا في الأغاني",
"name": "تخطي فترات الصمت" "name": "تخطي الفترات التي ليس لها صوت"
}, },
"sponsorblock": { "sponsorblock": {
"description": "تخطي تلقائيًا الأجزاء غير الموسيقية مثل المقدمة/الختام أو أجزاء مقاطع الفيديو الموسيقية حيث لا يتم تشغيل الأغنية", "description": "تخطي تلقائيًا الأجزاء غير الموسيقية مثل المقدمة/الختام أو أجزاء مقاطع الفيديو الموسيقية حيث لا يتم تشغيل الأغنية",
@ -796,7 +814,7 @@
}, },
"menu": { "menu": {
"default-text-string": { "default-text-string": {
"label": "المسافة الافتراضي بين كلمات الأغاني", "label": "المسافة الافتراضية بين كلمات الأغاني",
"tooltip": "اختر الحرف الافتراضي لاستخدامه في الفجوة بين كلمات الأغنية" "tooltip": "اختر الحرف الافتراضي لاستخدامه في الفجوة بين كلمات الأغنية"
}, },
"line-effect": { "line-effect": {
@ -816,14 +834,22 @@
}, },
"scale": { "scale": {
"label": "تحجيم", "label": "تحجيم",
"tooltip": "تكبير السطر الحالي" "tooltip": "حجم السطر الحالي"
} }
}, },
"tooltip": "اختر التأثير لتطبيقه على السطر الحالي" "tooltip": "اختر التأثير لتطبيقه على السطر الحالي"
}, },
"precise-timing": { "precise-timing": {
"label": "اجعل كلمات الأغنية متزامنة بشكل مثالي", "label": "اجعل كلمات الأغنية متزامنة بشكل مثالي",
"tooltip": "احسب بدقة الملي ثانية عرض السطر التالي (قد يكون له تأثير طفيف على الأداء)" "tooltip": "احسب بدقة الملي ثانية عرض السطر التالي (قد يكون له تأثير صغير على الأداء)"
},
"preferred-provider": {
"label": "المزود المفضل",
"none": {
"label": "لا شيء",
"tooltip": "لا يوجد مزود مفضل"
},
"tooltip": "اختر المزود المفضل للإستخدام"
}, },
"romanization": { "romanization": {
"label": "اجعل الكلمات رومانية", "label": "اجعل الكلمات رومانية",
@ -850,7 +876,7 @@
} }
}, },
"taskbar-mediacontrol": { "taskbar-mediacontrol": {
"description": "التحكم في المشغل من شريط المهام ويندوز", "description": "التحكم في المشغل من شريط مهام ويندوز",
"name": "التحكم بالوسائط من شريط المهام" "name": "التحكم بالوسائط من شريط المهام"
}, },
"touchbar": { "touchbar": {
@ -858,12 +884,21 @@
"name": "شريط اللمس (TouchBar)" "name": "شريط اللمس (TouchBar)"
}, },
"transparent-player": { "transparent-player": {
"description": "يجعل نافذة التطبيق شفافة",
"menu": { "menu": {
"type": { "opacity": {
"label": "الشفافية",
"submenu": { "submenu": {
"acrylic": "زجاجي", "percent": "{{opacity}}٪"
"mica": "حجري", }
"none": "لاشيء" },
"type": {
"label": "النوع",
"submenu": {
"acrylic": "أكريليك",
"mica": "ميكا",
"none": "لاشيء",
"tabbed": "بديل ميكا"
} }
} }
}, },
@ -892,13 +927,13 @@
"mode": { "mode": {
"label": "وضع", "label": "وضع",
"submenu": { "submenu": {
"custom": "تبديل مخصص", "custom": "زر مخصص",
"disabled": "غير مفعل", "disabled": "غير مفعل",
"native": "تبديل طبيعي" "native": "زر طبيعي"
} }
} }
}, },
"name": "تفعيل الفيديو", "name": "زر الفيديو",
"templates": { "templates": {
"button-song": "أغنية", "button-song": "أغنية",
"button-video": "فيديو" "button-video": "فيديو"
@ -907,7 +942,7 @@
"visualizer": { "visualizer": {
"description": "يضيف معاينًا بصريًا للمشغل", "description": "يضيف معاينًا بصريًا للمشغل",
"menu": { "menu": {
"visualizer-type": "نوع المعاينة المصرية" "visualizer-type": "نوع المعاين البصري"
}, },
"name": "معاين بصري" "name": "معاين بصري"
} }

View File

@ -116,7 +116,54 @@
"auto-update": "Avtomatik Yeniləmə", "auto-update": "Avtomatik Yeniləmə",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "Menu will be hidden on next launch, use [Alt] to show it (or backtick [`] if using in-app-menu)" "message": "Menyu növbəti açılışda gizlədiləcək, göstərmək üçün [Alt] düyməsini basın (proqramdaxili menyudan istifadə edildikdə isə, [`] düyməsi).",
"title": "Menyu gizlətmə aktivdir"
},
"label": "Menyunu gizlət"
},
"language": {
"dialog": {
"message": "Dil yenidən başlatmadan sonra dəyişiləcək",
"title": "Dil dəyişdirildi"
},
"label": "Dil",
"submenu": {
"to-help-translate": "Tərcüməyə kömək etmək istəyirsiniz? Buraya basın"
}
},
"resume-on-start": "Tətbiq başladıqda son mahnıdan davam et",
"single-instance-lock": "Tək proqram kilidi",
"start-at-login": "Giriş səhifəsində başlat",
"starting-page": {
"label": "Giriş səhifəsi",
"unset": "Təyin edilməyib"
},
"tray": {
"submenu": {
"disabled": "Deaktiv edilib"
}
},
"visual-tweaks": {
"label": "Vizual düzəlişlər",
"submenu": {
"custom-window-title": {
"prompt": {
"placeholder": "Nümunə: {{applicationName}}"
}
},
"like-buttons": {
"default": "Standart",
"hide": "Gizlət"
},
"remove-upgrade-button": "Yeniləmə düyməsini sil",
"theme": {
"dialog": {
"button": {
"cancel": "Ləğv et",
"remove": "Sil"
}
}
}
} }
} }
} }

View File

@ -0,0 +1 @@
{}

View File

@ -154,7 +154,7 @@
"label": "Персонализирано заглавие на прозорец", "label": "Персонализирано заглавие на прозорец",
"prompt": { "prompt": {
"label": "Въведи персонализирано заглавие: (остави празно за да изключиш)", "label": "Въведи персонализирано заглавие: (остави празно за да изключиш)",
"placeholder": "Пример: Youtube Music" "placeholder": "Пример: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Рестартирай приложението", "restart": "Рестартирай приложението",
"show": "Покажи прозорец", "show": "Покажи прозорец",
"tooltip": { "tooltip": {
"default": "YouTube Музика", "default": "{{applicationName}}",
"with-song-info": "YouTube Музика: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Атмосферен режим" "name": "Атмосферен режим"
}, },
"amuse": { "amuse": {
"description": "Добавя поддръжка на YouTube Music за джаджата Amuse Now Play от 6K Labs", "description": "Добавя поддръжка на {{applicationName}} за джаджата Amuse Now Play от 6K Labs",
"name": "Забавление", "name": "Забавление",
"response": { "response": {
"query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента." "query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента."
@ -369,11 +369,11 @@
"name": "Размазанa навигационна лента" "name": "Размазанa навигационна лента"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Избягване на възрастова верификация на YouTube", "description": "Избягване на възрастова верификация на Music Player",
"name": "Избягване на възрастови ограничения" "name": "Избягване на възрастови ограничения"
}, },
"captions-selector": { "captions-selector": {
"description": "Избор на надписи за аудио тракове в YouTube Music", "description": "Избор на надписи за аудио тракове в {{applicationName}}",
"menu": { "menu": {
"autoload": "Автоматично избиране на последно използвания надпис", "autoload": "Автоматично избиране на последно използвания надпис",
"disable-captions": "Без надписи по подразбиране" "disable-captions": "Без надписи по подразбиране"
@ -456,14 +456,14 @@
"disconnected": "Прекъснато", "disconnected": "Прекъснато",
"hide-duration-left": "Скрий оставащото време", "hide-duration-left": "Скрий оставащото време",
"hide-github-button": "Скрий бутона за линк към GitHub", "hide-github-button": "Скрий бутона за линк към GitHub",
"play-on-youtube-music": "Възпроизведи в YouTube Music", "play-on-application": "Възпроизведи в {{applicationName}}",
"set-inactivity-timeout": "Задай таймаут за неактивност", "set-inactivity-timeout": "Задай таймаут за неактивност",
"set-status-display-type": { "set-status-display-type": {
"label": "Статус текст", "label": "Статус текст",
"submenu": { "submenu": {
"artist": "Слушам {artist}", "artist": "Слушам {artist}",
"title": "Слушам {song title}", "title": "Слушам {song title}",
"youtube-music": "Слушам YouTube Music" "application": "Слушам {{applicationName}}"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "কাস্টম উইন্ডো টাইটেল", "label": "কাস্টম উইন্ডো টাইটেল",
"prompt": { "prompt": {
"label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)", "label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)",
"placeholder": "উদাহরণস্বরূপ: YouTube Music" "placeholder": "উদাহরণস্বরূপ: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "অ্যাপ পুনরায় চালু করুন", "restart": "অ্যাপ পুনরায় চালু করুন",
"show": "উইন্ডো দেখান", "show": "উইন্ডো দেখান",
"tooltip": { "tooltip": {
"default": "ইউটিউব মিউজিক", "default": "{{applicationName}}",
"with-song-info": "ইউটিউব মিউজিক: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -443,7 +443,7 @@
"disconnected": "সংযোগ বিচ্ছিন্ন", "disconnected": "সংযোগ বিচ্ছিন্ন",
"hide-duration-left": "অবশিষ্ট সময় লুকান", "hide-duration-left": "অবশিষ্ট সময় লুকান",
"hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান", "hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান",
"play-on-youtube-music": "ইউটিউব মিউজিকে চালান", "play-on-application": "ইউটিউব মিউজিকে চালান",
"set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন" "set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন"
}, },
"name": "ডিসকর্ড রিচ প্রেজেন্স", "name": "ডিসকর্ড রিচ প্রেজেন্স",

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naslov prozora", "label": "Prilagođeni naslov prozora",
"prompt": { "prompt": {
"label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)", "label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)",
"placeholder": "Primjer: YouTube Music" "placeholder": "Primjer: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -184,9 +184,31 @@
} }
}, },
"plugins": { "plugins": {
"enabled": "Omogući", "enabled": "Omogućeno",
"label": "Dodaci", "label": "Dodaci",
"new": "Novo" "new": "Novo"
},
"view": {
"label": "Pogled",
"submenu": {
"force-reload": "Silom Ponovo Učitaj",
"reload": "Ponovo Učitaj",
"reset-zoom": "Stvarna Veličina",
"toggle-fullscreen": "Uključi/Isključi Prikaz Cijelog Ekrana",
"zoom-in": "Uvećaj",
"zoom-out": "Umanji"
}
}
},
"tray": {
"next": "Slijedeće",
"play-pause": "Plej/Pauza",
"previous": "Prethodno",
"quit": "Izlaz",
"restart": "Ponovo Pokreni Aplikaciju",
"show": "Pokaži prozor",
"tooltip": {
"default": "{{applicationName}}"
} }
} }
}, },
@ -197,6 +219,53 @@
"label": "Kvalitet" "label": "Kvalitet"
} }
} }
},
"discord": {
"menu": {
"set-status-display-type": {
"submenu": {
"application": "Slušate {{applicationName}}",
"artist": "Slušate {muzičar}",
"title": "Slušate {naziv pesme}"
}
}
},
"name": "Diskord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Unesi ograničenje neaktivnosti u sekundama:",
"title": "Postavi ograničenje neaktivnosti"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Ufff! Izvinite, preuzimanje nije uspelo…",
"title": "Greška u preuzimanju!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{Playlist Size}} pjesme)",
"message": "Preuzimanje Plejliste {{playlist Title}}",
"title": "Preuzimanje počelo"
}
},
"feedback": {
"conversion-progress": "Pretvaranje: {{percent}}%",
"converting": "Pretvaranje…",
"done": "Gotovo: {{file Path}}",
"download-info": "Preuzimanje {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Preuzimanje: {{percent}}%",
"downloading": "Preuzimanje…"
}
}
} }
} }
} }

View File

@ -2,7 +2,7 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "Ha fallat l'execució de l'extensió {{pluginName}}::{{contextName}}", "execute-failed": "Error en l'execució de l'extensió {{pluginName}}::{{contextName}}",
"executed-at-ms": "L'extensió {{pluginName}}::{{contextName}} s'ha executat als {{ms}}ms", "executed-at-ms": "L'extensió {{pluginName}}::{{contextName}} s'ha executat als {{ms}}ms",
"initialize-failed": "Ha fallat la inicialització de l'extensió \"{{pluginName}}\"", "initialize-failed": "Ha fallat la inicialització de l'extensió \"{{pluginName}}\"",
"load-all": "Carregant totes les extensions", "load-all": "Carregant totes les extensions",
@ -154,7 +154,7 @@
"label": "Títol personalitzat de la finestra", "label": "Títol personalitzat de la finestra",
"prompt": { "prompt": {
"label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)", "label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)",
"placeholder": "Exemple: YouTube Music" "placeholder": "Exemple: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reinicia l'aplicació", "restart": "Reinicia l'aplicació",
"show": "Mostra la finestra", "show": "Mostra la finestra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Activar el tema en la barra de progrés"
}, },
"name": "Tema de color de l'àlbum" "name": "Tema de color de l'àlbum"
}, },
@ -287,7 +288,7 @@
"name": "Mode ambient" "name": "Mode ambient"
}, },
"amuse": { "amuse": {
"description": "Afegeix suport a Youtube Music per el widget \"now playing\" d'Amuse per 6K Labs", "description": "Afegeix suport a {{applicationName}} per el widget \"now playing\" d'Amuse per 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó." "query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó."
@ -369,11 +370,11 @@
"name": "Desenfoca la barra de navegació" "name": "Desenfoca la barra de navegació"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Esquiva la verificació d'edat de YouTube", "description": "Esquiva la verificació d'edat de Music Player",
"name": "Esquiva les restriccions d'edat" "name": "Esquiva les restriccions d'edat"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtítols per les pistes d'àudio de YouTube Music", "description": "Selector de subtítols per les pistes d'àudio de {{applicationName}}",
"menu": { "menu": {
"autoload": "Selecciona automàticament l'últim subtítol emprat", "autoload": "Selecciona automàticament l'últim subtítol emprat",
"disable-captions": "Sense subtítols per defecte" "disable-captions": "Sense subtítols per defecte"
@ -456,14 +457,14 @@
"disconnected": "Desconnectat", "disconnected": "Desconnectat",
"hide-duration-left": "Amaga la durada restant", "hide-duration-left": "Amaga la durada restant",
"hide-github-button": "Amaga el botó de l'enllaç a GitHub", "hide-github-button": "Amaga el botó de l'enllaç a GitHub",
"play-on-youtube-music": "Reprodueix a YouTube Music", "play-on-application": "Reprodueix a {{applicationName}}",
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat", "set-inactivity-timeout": "Estableix temps d'espera d'inactivitat",
"set-status-display-type": { "set-status-display-type": {
"label": "Text d'estat", "label": "Text d'estat",
"submenu": { "submenu": {
"artist": "Escoltant {artist}", "artist": "Escoltant {artist}",
"title": "Escoltant {song title}", "application": "Escoltant {{applicationName}}",
"youtube-music": "Escoltant YouTube Music" "title": "Escoltant {song title}"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Vlastní název okna", "label": "Vlastní název okna",
"prompt": { "prompt": {
"label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)", "label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)",
"placeholder": "Příklad: Hudba YouTube" "placeholder": "Příklad: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restartovat aplikaci", "restart": "Restartovat aplikaci",
"show": "Zobrazit okno", "show": "Zobrazit okno",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambientní režim" "name": "Ambientní režim"
}, },
"amuse": { "amuse": {
"description": "Přídá YouTube Music podporu pro Amuse právě hraje widget od 6K Labs", "description": "Přídá {{applicationName}} podporu pro Amuse právě hraje widget od 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce." "query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce."
@ -337,7 +337,7 @@
} }
}, },
"audio-compressor": { "audio-compressor": {
"description": "Apply compression k audiu (snižuje hlasitost nejhlasitěších částí signálu and zvyšuje hlasitost nejjemnějších částí)", "description": "Aplikuje kompresi k audiu (snižuje hlasitost nejhlasitěších částí signálu a zvyšuje hlasitost nejjemnějších částí)",
"name": "Audio kompresor" "name": "Audio kompresor"
}, },
"auth-proxy-adapter": { "auth-proxy-adapter": {
@ -369,11 +369,11 @@
"name": "Rozmazaný navigační panel" "name": "Rozmazaný navigační panel"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Obejít ověření věku na YouTube", "description": "Obejít ověření věku na Music Player",
"name": "Obejít věková omezení" "name": "Obejít věková omezení"
}, },
"captions-selector": { "captions-selector": {
"description": "Titulkový selector pro zvukové stopy v YouTube Music", "description": "Titulkový selector pro zvukové stopy v {{applicationName}}",
"menu": { "menu": {
"autoload": "Automaticky vybrat naposledy použité titulky", "autoload": "Automaticky vybrat naposledy použité titulky",
"disable-captions": "Žádné titulky ve vychozím nastavení" "disable-captions": "Žádné titulky ve vychozím nastavení"
@ -456,14 +456,14 @@
"disconnected": "Odpojeno", "disconnected": "Odpojeno",
"hide-duration-left": "Skrýt zbývající duration", "hide-duration-left": "Skrýt zbývající duration",
"hide-github-button": "Skrýt tlačítko s odkazem na GitHub", "hide-github-button": "Skrýt tlačítko s odkazem na GitHub",
"play-on-youtube-music": "Hrát na YouTube Music", "play-on-application": "Hrát na {{applicationName}}",
"set-inactivity-timeout": "Nastavit timeout pro neaktivitu", "set-inactivity-timeout": "Nastavit timeout pro neaktivitu",
"set-status-display-type": { "set-status-display-type": {
"label": "Text statusu", "label": "Text statusu",
"submenu": { "submenu": {
"artist": "Poslouchám: {artist}", "artist": "Poslouchám: {artist}",
"title": "Poslouchám {song title}", "application": "Poslouchám {{applicationName}}",
"youtube-music": "Poslouchám YouTube Music" "title": "Poslouchám {song title}"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Tilpasset vindues titel", "label": "Tilpasset vindues titel",
"prompt": { "prompt": {
"label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)", "label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)",
"placeholder": "Eksempel: YouTube Music" "placeholder": "Eksempel: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -206,8 +206,8 @@
"restart": "Genstart app", "restart": "Genstart app",
"show": "Vis vindue", "show": "Vis vindue",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },

View File

@ -3,7 +3,7 @@
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "Erweiterung {{pluginName}}::{{contextName}} konnte nicht ausgeführt werden", "execute-failed": "Erweiterung {{pluginName}}::{{contextName}} konnte nicht ausgeführt werden",
"executed-at-ms": "Erweiterung {{pluginName}}::{{contextName}} ausgeführt in {{ms}}ms", "executed-at-ms": "Erweiterung {{pluginName}}::{{contextName}} in {{ms}}ms ausgeführt",
"initialize-failed": "Initialisierung der Erweiterung \"{{pluginName}}\" fehlgeschlagen", "initialize-failed": "Initialisierung der Erweiterung \"{{pluginName}}\" fehlgeschlagen",
"load-all": "Lade alle Erweiterungen", "load-all": "Lade alle Erweiterungen",
"load-failed": "Laden der Erweiterung \"{{pluginName}}\" fehlgeschlagen", "load-failed": "Laden der Erweiterung \"{{pluginName}}\" fehlgeschlagen",
@ -154,7 +154,7 @@
"label": "Benutzerdefinierter Fenstertitel", "label": "Benutzerdefinierter Fenstertitel",
"prompt": { "prompt": {
"label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)", "label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)",
"placeholder": "Beispiel: YouTube Music" "placeholder": "Beispiel: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Anwendung neu starten", "restart": "Anwendung neu starten",
"show": "Fenster anzeigen", "show": "Fenster anzeigen",
"tooltip": { "tooltip": {
"default": "YouTube Musik", "default": "{{applicationName}}",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Suchleisten-Design aktivieren"
}, },
"name": "Thema aus Albumfarbe" "name": "Thema aus Albumfarbe"
}, },
@ -287,7 +288,7 @@
"name": "Ambiente-Modus" "name": "Ambiente-Modus"
}, },
"amuse": { "amuse": {
"description": "Fügt Unterstützung für das Amuse \"Spielt gerade\"-Widget von 6K Labs hinzu", "description": "Fügt {{applicationName}} Unterstützung für das Amuse \"Spielt gerade\"-Widget von 6K Labs hinzu",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API-Server läuft. /query für Liedinformationen." "query": "Amuse API-Server läuft. /query für Liedinformationen."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Hostname" "label": "Hostname"
}, },
"https": {
"label": "HTTPS & Zertifikate",
"submenu": {
"cert": {
"dialogTitle": "HTTPS Zertifikat Datei auswählen",
"label": "Zertifikate Datei (.crt/.pem)"
},
"enable-https": {
"label": "HTTPS aktivieren"
},
"key": {
"dialogTitle": "HTTPS privaten Schlüssel Datei auswählen",
"label": "Privater Schlüssel Datei (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
@ -369,11 +386,11 @@
"name": "Verschwommene Navigationsleiste" "name": "Verschwommene Navigationsleiste"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Youtubes Altersbestätigung umgehen", "description": "Music Player Altersbestätigung umgehen",
"name": "Altersbeschränkungen umgehen" "name": "Altersbeschränkungen umgehen"
}, },
"captions-selector": { "captions-selector": {
"description": "Untertitelwähler für YouTube Music-Audio-Lieder", "description": "Untertitelwähler für {{applicationName}}-Audio-Lieder",
"menu": { "menu": {
"autoload": "Wähle automatisch den zuletzt verwendeten Untertitel", "autoload": "Wähle automatisch den zuletzt verwendeten Untertitel",
"disable-captions": "Standardmäßig keine Untertitel" "disable-captions": "Standardmäßig keine Untertitel"
@ -456,14 +473,14 @@
"disconnected": "Getrennt", "disconnected": "Getrennt",
"hide-duration-left": "Verbleibende Zeit verstecken", "hide-duration-left": "Verbleibende Zeit verstecken",
"hide-github-button": "Knopf mit Link zu GitHub ausblenden", "hide-github-button": "Knopf mit Link zu GitHub ausblenden",
"play-on-youtube-music": "Auf YouTube Music abspielen", "play-on-application": "Auf {{applicationName}} abspielen",
"set-inactivity-timeout": "Inaktivitätstimeout setzen", "set-inactivity-timeout": "Inaktivitätstimeout setzen",
"set-status-display-type": { "set-status-display-type": {
"label": "Status Text", "label": "Status Text",
"submenu": { "submenu": {
"application": "Hört {{applicationName}}",
"artist": "Hört {artist} zu", "artist": "Hört {artist} zu",
"title": "Du hörst {song title}", "title": "Du hörst {song title}"
"youtube-music": "Hört YouTube Music"
} }
} }
}, },
@ -606,7 +623,7 @@
"permission": { "permission": {
"all": "Gästen erlauben, Wiederhabeliste und Player zu bedienen", "all": "Gästen erlauben, Wiederhabeliste und Player zu bedienen",
"host-only": "Nur der Host kann die Playlist und den Player kontrollieren", "host-only": "Nur der Host kann die Playlist und den Player kontrollieren",
"playlist": "Gäste das Kontrollieren der Playlist erlauben" "playlist": "Gästen das Kontrollieren der Playlist erlauben"
}, },
"set-permission": "Kontrollberechtigung ändern", "set-permission": "Kontrollberechtigung ändern",
"status": { "status": {
@ -866,12 +883,12 @@
}, },
"name": "Synchronisierte Texte", "name": "Synchronisierte Texte",
"refetch-btn": { "refetch-btn": {
"fetching": "Hole Songtext...", "fetching": "Laden...",
"normal": "Songtext neu holen" "normal": "Songtext neu laden"
}, },
"warnings": { "warnings": {
"duration-mismatch": "⚠️ - Es kann sein, dass die Synchronization nicht stimmt, da die Songdauer nicht übereinstimmt.", "duration-mismatch": "⚠️ - Es kann sein, dass die Synchronization nicht stimmt, da die Songdauer nicht übereinstimmt.",
"inexact": "⚠️ - Der Songtext stimmt möglicherweise nicht überein", "inexact": "⚠️ - Es ist möglich, dass der Songtext für diesen Song nicht übereinstimmt.",
"instrumental": "⚠️ - Das ist ein instrumentales Lied" "instrumental": "⚠️ - Das ist ein instrumentales Lied"
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Προσαρμοσμένος τίτλος παραθύρου", "label": "Προσαρμοσμένος τίτλος παραθύρου",
"prompt": { "prompt": {
"label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)", "label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: YouTube Music" "placeholder": "Παράδειγμα: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Επανεκκίνηση εφαρμογής", "restart": "Επανεκκίνηση εφαρμογής",
"show": "Εμφάνιση παραθύρου", "show": "Εμφάνιση παραθύρου",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Λειτουργία περιβάλλοντος" "name": "Λειτουργία περιβάλλοντος"
}, },
"amuse": { "amuse": {
"description": "Προσθέτει υποστήριξη YouTube Music στο widget Amuse now playing από την 6K Labs", "description": "Προσθέτει υποστήριξη {{applicationName}} στο widget Amuse now playing από την 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι." "query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι."
@ -369,11 +369,11 @@
"name": "Θόλωμα γραμμής πλοήγησης" "name": "Θόλωμα γραμμής πλοήγησης"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Παράκαμψη επαλήθευσης ηλικίας στο YouTube", "description": "Παράκαμψη επαλήθευσης ηλικίας στο Music Player",
"name": "Παράκαμψη ηλικιακών περιορισμών" "name": "Παράκαμψη ηλικιακών περιορισμών"
}, },
"captions-selector": { "captions-selector": {
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του YouTube", "description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του {{applicationName}}",
"menu": { "menu": {
"autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας", "autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας",
"disable-captions": "Χωρίς λεζάντες από προεπιλογή" "disable-captions": "Χωρίς λεζάντες από προεπιλογή"
@ -443,7 +443,7 @@
"disconnected": "Αποσυνδεδεμένο", "disconnected": "Αποσυνδεδεμένο",
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει", "hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
"hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub", "hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub",
"play-on-youtube-music": "Αναπαραγωγή στο YouTube Music", "play-on-application": "Αναπαραγωγή στο {{applicationName}}",
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας" "set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
}, },
"name": "Discord Πλούσια παρουσία", "name": "Discord Πλούσια παρουσία",

View File

@ -160,7 +160,7 @@
"label": "Custom window title", "label": "Custom window title",
"prompt": { "prompt": {
"label": "Enter custom window title: (leave empty to disable)", "label": "Enter custom window title: (leave empty to disable)",
"placeholder": "Example: YouTube Music" "placeholder": "Example: {{applicationName}}"
} }
}, },
"remove-upgrade-button": "Remove upgrade button", "remove-upgrade-button": "Remove upgrade button",
@ -208,8 +208,8 @@
"restart": "Restart App", "restart": "Restart App",
"show": "Show window", "show": "Show window",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Enable seekbar theming"
}, },
"name": "Album Color Theme" "name": "Album Color Theme"
}, },
@ -287,7 +288,7 @@
"name": "Ambient Mode" "name": "Ambient Mode"
}, },
"amuse": { "amuse": {
"description": "Adds YouTube Music support for the Amuse now playing widget by 6K Labs", "description": "Adds {{applicationName}} support for the Amuse now playing widget by 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API server is running. GET /query to get song info." "query": "Amuse API server is running. GET /query to get song info."
@ -322,6 +323,22 @@
}, },
"port": { "port": {
"label": "Port" "label": "Port"
},
"https": {
"label": "HTTPS & Certificates",
"submenu": {
"enable-https": {
"label": "Enable HTTPS"
},
"cert": {
"label": "Certificate file (.crt/.pem)",
"dialogTitle": "Select HTTPS certificate file"
},
"key": {
"label": "Private key file (.key/.pem)",
"dialogTitle": "Select HTTPS private key file"
}
}
} }
}, },
"name": "API Server [Beta]", "name": "API Server [Beta]",
@ -369,11 +386,11 @@
"name": "Blur Navigation Bar" "name": "Blur Navigation Bar"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypass YouTube's age verification", "description": "Bypass Music Player's age verification",
"name": "Bypass Age Restrictions" "name": "Bypass Age Restrictions"
}, },
"captions-selector": { "captions-selector": {
"description": "Caption selector for YouTube Music audio tracks", "description": "Caption selector for {{applicationName}} audio tracks",
"menu": { "menu": {
"autoload": "Automatically select last used caption", "autoload": "Automatically select last used caption",
"disable-captions": "No captions by default" "disable-captions": "No captions by default"
@ -456,12 +473,12 @@
"disconnected": "Disconnected", "disconnected": "Disconnected",
"hide-duration-left": "Hide duration left", "hide-duration-left": "Hide duration left",
"hide-github-button": "Hide GitHub link Button", "hide-github-button": "Hide GitHub link Button",
"play-on-youtube-music": "Play on YouTube Music", "play-on-application": "Play on {{applicationName}}",
"set-inactivity-timeout": "Set inactivity timeout", "set-inactivity-timeout": "Set inactivity timeout",
"set-status-display-type": { "set-status-display-type": {
"label": "Status text", "label": "Status text",
"submenu": { "submenu": {
"youtube-music": "Listening to YouTube Music", "application": "Listening to {{applicationName}}",
"artist": "Listening to {artist}", "artist": "Listening to {artist}",
"title": "Listening to {song title}" "title": "Listening to {song title}"
} }

View File

@ -3,11 +3,11 @@
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "Error al ejecutar el complemento {{pluginName}}::{{contextName}}", "execute-failed": "Error al ejecutar el complemento {{pluginName}}::{{contextName}}",
"executed-at-ms": "Complemento {{pluginName}}::{{contextName}} Ejecutó en {{ms}}ms", "executed-at-ms": "Complemento {{pluginName}}::{{contextName}} se ejecutó en {{ms}}ms",
"initialize-failed": "Error al inicializar el complemento \"{{pluginName}}\"", "initialize-failed": "Error al inicializar el complemento \"{{pluginName}}\"",
"load-all": "Cargando todos los complementos", "load-all": "Cargando todos los complementos",
"load-failed": "Error al cargar el complemento \"{{pluginName}}\"", "load-failed": "Error al cargar el complemento \"{{pluginName}}\"",
"loaded": "Complementos \"{{pluginName}}\" cargado", "loaded": "Complementos \"{{pluginName}}\" cargados",
"unload-failed": "No se ha podido descargar el complemento \"{{pluginName}}\"", "unload-failed": "No se ha podido descargar el complemento \"{{pluginName}}\"",
"unloaded": "Complemento \"{{pluginName}}\" descargado" "unloaded": "Complemento \"{{pluginName}}\" descargado"
} }
@ -154,7 +154,7 @@
"label": "Título de ventana personalizado", "label": "Título de ventana personalizado",
"prompt": { "prompt": {
"label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)", "label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)",
"placeholder": "Ejemplo: YouTube Music" "placeholder": "Ejemplo: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar la aplicación", "restart": "Reiniciar la aplicación",
"show": "Mostrar ventana", "show": "Mostrar ventana",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Habilitar temas a la barra de búsqueda"
}, },
"name": "Tema de color del álbum" "name": "Tema de color del álbum"
}, },
@ -287,7 +288,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Agrega soporte a YouTube Music para el widget \"reproduciendo\" de Amuse por 6K Labs", "description": "Agrega soporte a {{applicationName}} para el widget \"reproduciendo\" de Amuse por 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción." "query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Nombre del host" "label": "Nombre del host"
}, },
"https": {
"label": "HTTPS & Certificados",
"submenu": {
"cert": {
"dialogTitle": "Selecciona el archivo de certificado HTTPS",
"label": "Archivo de certificado (.crt/.pem)"
},
"enable-https": {
"label": "Habilitar HTTPS"
},
"key": {
"dialogTitle": "Selecciona el archivo de clave privada HTTPS",
"label": "Archivo de clave privada (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Puerto" "label": "Puerto"
} }
@ -369,11 +386,11 @@
"name": "Desenfocar barra de navegación" "name": "Desenfocar barra de navegación"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Saltarse la verificación de edad de YouTube", "description": "Saltarse la verificación de edad de Music Player",
"name": "Saltarse las restricciones de edad" "name": "Saltarse las restricciones de edad"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtítulos para pistas de audio de YouTube Music", "description": "Selector de subtítulos para pistas de audio de {{applicationName}}",
"menu": { "menu": {
"autoload": "Seleccionar automáticamente el último subtítulo utilizado", "autoload": "Seleccionar automáticamente el último subtítulo utilizado",
"disable-captions": "Sin subtítulos por defecto" "disable-captions": "Sin subtítulos por defecto"
@ -456,14 +473,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar la duración restante", "hide-duration-left": "Ocultar la duración restante",
"hide-github-button": "Ocultar el botón de enlace a GitHub", "hide-github-button": "Ocultar el botón de enlace a GitHub",
"play-on-youtube-music": "Reproducir en YouTube Music", "play-on-application": "Reproducir en {{applicationName}}",
"set-inactivity-timeout": "Establecer tiempo de inactividad", "set-inactivity-timeout": "Establecer tiempo de inactividad",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de estado", "label": "Texto de estado",
"submenu": { "submenu": {
"application": "Escuchando {{applicationName}}",
"artist": "Escuchando a {artist}", "artist": "Escuchando a {artist}",
"title": "Escuchando {song title}", "title": "Escuchando {song title}"
"youtube-music": "Escuchando YouTube Music"
} }
} }
}, },

View File

@ -31,6 +31,15 @@
}, },
"theme": { "theme": {
"css-file-not-found": "CSS faili „{{cssFile}}“ pole olemas, seega eirame eelistust" "css-file-not-found": "CSS faili „{{cssFile}}“ pole olemas, seega eirame eelistust"
},
"unresponsive": {
"details": "Tõrge ei vasta!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Programmi vahemälu kustutamine"
},
"window": {
"tried-to-render-offscreen": "Akent prooviti renderdada väljaspool ekraani, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
} }
}, },
"dialog": { "dialog": {
@ -89,9 +98,29 @@
"submenu": { "submenu": {
"auto-reset-app-cache": "Rakenduse käivitamisel lähtesta puhverdatud andmed", "auto-reset-app-cache": "Rakenduse käivitamisel lähtesta puhverdatud andmed",
"disable-hardware-acceleration": "Lülita raudvaraline kiirendamine välja", "disable-hardware-acceleration": "Lülita raudvaraline kiirendamine välja",
"edit-config-json": "Muuda config.json faili" "edit-config-json": "Muuda config.json faili",
"override-user-agent": "Jõudlusta User-Agent",
"restart-on-config-changes": "Taaskäivita pärast konfiguratsiooni muutmist",
"set-proxy": {
"label": "Määra proxy",
"prompt": {
"label": "Sisesta proxy aadress: (jäta täitmata, et välja lülitada)",
"placeholder": "Näide: SOCKS5://127.0.0.1:9999",
"title": "Määra proxy"
}
},
"toggle-dev-tools": "Lülita sisse arendaja tööriistad"
} }
}, },
"always-on-top": "Alati esiplaanil",
"auto-update": "Automaatsed uuendused",
"hide-menu": {
"dialog": {
"message": "Järgmisel käivitamisel jääb menüü peidetuks, kasutage [Alt] klahvi, et näidata (või [`], kui kasutate rakendusesisest menüüd)",
"title": "Menüü peitmine on sisse lülitatud"
},
"label": "Peida menüü"
},
"language": { "language": {
"dialog": { "dialog": {
"message": "Keele muutmine jõustub peale uuesti käivitamist", "message": "Keele muutmine jõustub peale uuesti käivitamist",
@ -99,18 +128,72 @@
}, },
"label": "Keel", "label": "Keel",
"submenu": { "submenu": {
"to-help-translate": "Soovid aidata tõlkimisel? Klõpsi siin" "to-help-translate": "Soovid aidata tõlkimisel? Klõpsa siin"
} }
}, },
"resume-on-start": "Rakenduse käivitamisel jätka viimatiesitatud loo esitamist" "resume-on-start": "Rakenduse käivitamisel jätka viimatiesitatud loo esitamist",
"single-instance-lock": "Ühe instantsi lukk",
"start-at-login": "Käivita sisselogimisel",
"starting-page": {
"label": "Avaleht",
"unset": "Määramata"
},
"tray": {
"label": "Tasku",
"submenu": {
"disabled": "Välja lülitatud",
"enabled-and-hide-app": "Sisse lülitatud ja rakendus peidetud",
"enabled-and-show-app": "Sisse lülitatud ja rakendus nähtav",
"play-pause-on-click": "Mängi/Peata klõpsates"
}
},
"visual-tweaks": {
"label": "Visuaalsed muudatused",
"submenu": {
"custom-window-title": {
"label": "Kohandatud akna tiitel",
"prompt": {
"label": "Sisesta kohandatud akna tiitel: (jäta täitmata, et välja lülitada)",
"placeholder": "Näide: {{applicationName}}"
}
},
"like-buttons": {
"default": "Vaikimisi",
"force-show": "Sunni näitama",
"hide": "Peida",
"label": "Meeldib nupud"
},
"remove-upgrade-button": "Eemalda upgrade nupp",
"theme": {
"dialog": {
"button": {
"cancel": "Katkesta",
"remove": "Eemalda"
},
"remove-theme": "Kas oled kindel, et soovid enda loodud kujunduse eemaldada?",
"remove-theme-message": "Sellega saab sinu loodud kujundus eemdladatud"
},
"label": "Kujundus",
"submenu": {
"import-css-file": "Impordi kohandatud CSS fail",
"no-theme": "Ilma kujunduseta"
}
}
}
}
} }
}, },
"plugins": { "plugins": {
"enabled": "Kasutusel",
"label": "Lisamoodulid", "label": "Lisamoodulid",
"new": "UUS" "new": "UUS"
}, },
"view": { "view": {
"label": "Vaata",
"submenu": { "submenu": {
"force-reload": "Laadi sundkorras uuesti",
"reload": "Laadi uuesti",
"reset-zoom": "Tegelik suurus",
"toggle-fullscreen": "Lülita täisekraanivaade sisse/välja", "toggle-fullscreen": "Lülita täisekraanivaade sisse/välja",
"zoom-in": "Suumi sisse", "zoom-in": "Suumi sisse",
"zoom-out": "Suumi välja" "zoom-out": "Suumi välja"
@ -125,8 +208,8 @@
"restart": "Käivita rakendus uuesti", "restart": "Käivita rakendus uuesti",
"show": "Näita akent", "show": "Näita akent",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -142,8 +225,28 @@
}, },
"name": "Reklaamiblokeerija" "name": "Reklaamiblokeerija"
}, },
"ambient-mode": { "album-actions": {
"description": "Lisab Undislike, Ebameeldiv, Meeldiv ja Unlike nupud selle rakendamiseks kõikidele loendisse või albumisse kuuluvatele lauludele.",
"name": "Albumi aktsioonid"
},
"album-color-theme": {
"description": "Rakendab dünaamilist teemat ja visuaalseid efekte, mis põhinevad albumi värvipalettil",
"menu": { "menu": {
"color-mix-ratio": {
"label": "Värvide segamissuhe",
"submenu": {
"percent": "{{suhe}}%"
}
}
},
"name": "Albumi värviteema"
},
"ambient-mode": {
"description": "Rakendab valgusefekti, projitseerides videost õrnad värvid ekraani taustale",
"menu": {
"blur-amount": {
"label": "Hägusus"
},
"opacity": { "opacity": {
"submenu": { "submenu": {
"percent": "{{opacity}}%" "percent": "{{opacity}}%"

View File

@ -2,7 +2,7 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "اجرای افزونه {{pluginName}}::{{contextName}} با خطا مواجه شد", "execute-failed": "اجراى {{اسمزمىنه}}::{{اسمپلاگىن}} با خطا مواجه شد",
"executed-at-ms": "افزونه {{pluginName}}::{{contextName}} در {{ms}} میلی‌ثانیه اجرا شد", "executed-at-ms": "افزونه {{pluginName}}::{{contextName}} در {{ms}} میلی‌ثانیه اجرا شد",
"initialize-failed": "افزونه \"{{pluginName}}\" با خطا در حین مقداردهی اولیه مواجه شد", "initialize-failed": "افزونه \"{{pluginName}}\" با خطا در حین مقداردهی اولیه مواجه شد",
"load-all": "در حال بارگذاری تمامی افزونه‌ها", "load-all": "در حال بارگذاری تمامی افزونه‌ها",
@ -150,6 +150,13 @@
"visual-tweaks": { "visual-tweaks": {
"label": "تغییرات ظاهری", "label": "تغییرات ظاهری",
"submenu": { "submenu": {
"custom-window-title": {
"label": "عنوان پنجره سفارشى",
"prompt": {
"label": "عنوان پنجره سفارشى را وارد کنىد: (خالى بزارىد تا غىرفعال شود)",
"placeholder": "مثال :{{applicationName}}"
}
},
"like-buttons": { "like-buttons": {
"default": "پیش‌فرض", "default": "پیش‌فرض",
"force-show": "اجبار به نمایش", "force-show": "اجبار به نمایش",
@ -201,8 +208,8 @@
"restart": "راه‌اندازی مجدد برنامه", "restart": "راه‌اندازی مجدد برنامه",
"show": "نمایش پنجره", "show": "نمایش پنجره",
"tooltip": { "tooltip": {
"default": "یوتیوب موسیقی", "default": "{{applicationName}}",
"with-song-info": "یوتیوب موسیقی: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +287,7 @@
"name": "حالت محیطی" "name": "حالت محیطی"
}, },
"amuse": { "amuse": {
"description": "حالا ویجت Amuse از YouTube Music هم پشتیبانی می‌کنه! (توسط 6K Labs)", "description": "حالا ویجت Amuse از {{applicationName}} هم پشتیبانی می‌کنه! (توسط 6K Labs)",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید." "query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید."
@ -313,6 +320,22 @@
"hostname": { "hostname": {
"label": "نام میزبان" "label": "نام میزبان"
}, },
"https": {
"label": "HTTPS و گواهینامه‌ها",
"submenu": {
"cert": {
"dialogTitle": "پرونده گواهینامه HTTPS را انتخاب کنید",
"label": "پرونده گواهینامه (crt/.pem.)"
},
"enable-https": {
"label": "فعال کردن HTTPS"
},
"key": {
"dialogTitle": "پرونده کلید خصوصی HTTPS را انتخاب کنید",
"label": "پرونده کلید خصوصی (key/.pem)"
}
}
},
"port": { "port": {
"label": "پورت" "label": "پورت"
} }
@ -362,11 +385,11 @@
"name": "محو کردن نوار کنترل" "name": "محو کردن نوار کنترل"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "دور زدن تأیید سن یوتیوب", "description": "دور زدن تأیید سن مىوزىک پلىر",
"name": "دور زدن محدودیت‌های سنی" "name": "دور زدن محدودیت‌های سنی"
}, },
"captions-selector": { "captions-selector": {
"description": "انتخاب زیرنویس برای آهنگ‌های یوتیوب موسیقی", "description": "انتخاب زیرنویس برای آهنگ‌های پىر دسکتاپ",
"menu": { "menu": {
"autoload": "به طور خودکار انتخاب آخرین زیرنویس استفاده شده", "autoload": "به طور خودکار انتخاب آخرین زیرنویس استفاده شده",
"disable-captions": "بدون زیرنویس به صورت پیش‌فرض" "disable-captions": "بدون زیرنویس به صورت پیش‌فرض"
@ -414,6 +437,19 @@
} }
} }
}, },
"custom-output-device": {
"description": "ىک اسپىکر براى پخش آهنگها انتخاب کنىد",
"menu": {
"device-selector": "دستگاه را انتخاب کنىد"
},
"name": "اسپىکر دلخواه",
"prompt": {
"device-selector": {
"label": "اسپىکر دلخواه را انتخاب کنىد",
"title": "اسپىکر دلخواهتان را انتخاب کنىد"
}
}
},
"disable-autoplay": { "disable-autoplay": {
"description": "شروع آهنگ در حالت \"توقف\"", "description": "شروع آهنگ در حالت \"توقف\"",
"menu": { "menu": {
@ -436,8 +472,16 @@
"disconnected": "اتصال قطع شد", "disconnected": "اتصال قطع شد",
"hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده", "hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده",
"hide-github-button": "مخفی کردن دکمه لینک گیت هاب", "hide-github-button": "مخفی کردن دکمه لینک گیت هاب",
"play-on-youtube-music": "پخش در یوتیوب موزیک", "play-on-application": "پخش در یوتیوب موزیک",
"set-inactivity-timeout": "تنظیم زمان عدم فعالیت" "set-inactivity-timeout": "تنظیم زمان عدم فعالیت",
"set-status-display-type": {
"label": "متن وضعىت",
"submenu": {
"application": "به پىر دسکتاپ گوش مىکند",
"artist": "به {artist} گوش مىکند",
"title": "به {song title} گوش مىکند"
}
}
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",
"prompt": { "prompt": {
@ -729,6 +773,7 @@
"listenbrainz": { "listenbrainz": {
"token": "توکن کاربری ListenBrainz را وارد کنید" "token": "توکن کاربری ListenBrainz را وارد کنید"
}, },
"scrobble-alternative-artist": "از هنرمند دىگرى استفاده کنىد",
"scrobble-alternative-title": "از عناوین جایگزین استفاده کنید", "scrobble-alternative-title": "از عناوین جایگزین استفاده کنید",
"scrobble-other-media": "ردیابی رسانه‌های دیگر" "scrobble-other-media": "ردیابی رسانه‌های دیگر"
}, },
@ -814,6 +859,14 @@
"label": "هماهنگ‌سازی کامل متن ترانه‌", "label": "هماهنگ‌سازی کامل متن ترانه‌",
"tooltip": "محاسبه دقیق نمایش خط بعدی تا میلی‌ثانیه (ممکن است تاثیر کمی بر عملکرد داشته باشد)" "tooltip": "محاسبه دقیق نمایش خط بعدی تا میلی‌ثانیه (ممکن است تاثیر کمی بر عملکرد داشته باشد)"
}, },
"preferred-provider": {
"label": "منبع دلخواه",
"none": {
"label": "هىچکدام",
"tooltip": "منبح دلخواهى انتخاب نشده"
},
"tooltip": "منبع دلخواهتان را انتخاب کنىد"
},
"romanization": { "romanization": {
"label": "اشعار رومی شده", "label": "اشعار رومی شده",
"tooltip": "اگر اشعار به زبانی متفاوت هستند، سعی کنید نسخه لاتین را نمایش دهید." "tooltip": "اگر اشعار به زبانی متفاوت هستند، سعی کنید نسخه لاتین را نمایش دهید."
@ -846,6 +899,27 @@
"description": "افزودن ویجت TouchBar برای کاربران macOS", "description": "افزودن ویجت TouchBar برای کاربران macOS",
"name": "نوار لمسی" "name": "نوار لمسی"
}, },
"transparent-player": {
"description": "پنجره برنامه را شفاف مىکند",
"menu": {
"opacity": {
"label": "تارى",
"submenu": {
"percent": "%{{تارى}}"
}
},
"type": {
"label": "نوع",
"submenu": {
"acrylic": "اکرىلىک",
"mica": "مىکا",
"none": "هىچکدام",
"tabbed": "نوار دار"
}
}
},
"name": "پلىر شفاف"
},
"tuna-obs": { "tuna-obs": {
"description": "ادغام با پلاگین Tuna در OBS", "description": "ادغام با پلاگین Tuna در OBS",
"name": "Tuna OBS" "name": "Tuna OBS"

View File

@ -154,7 +154,7 @@
"label": "Mukautettu ikkunan otsikko", "label": "Mukautettu ikkunan otsikko",
"prompt": { "prompt": {
"label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)", "label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)",
"placeholder": "Esimerkki: YouTube Music" "placeholder": "Esimerkki: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Uudelleen käynnistä appi", "restart": "Uudelleen käynnistä appi",
"show": "Näytä ikkuna", "show": "Näytä ikkuna",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "{{applicationName}}",
"with-song-info": "Youtube Music {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Tunnelmallinen Tila" "name": "Tunnelmallinen Tila"
}, },
"amuse": { "amuse": {
"description": "Lisää YouTube Music tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs", "description": "Lisää {{applicationName}} tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot." "query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot."
@ -369,11 +369,11 @@
"name": "Sumenna Siirtymäpalkki" "name": "Sumenna Siirtymäpalkki"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Ohita YouTuben iän vahvistus", "description": "Ohita Music Player iän vahvistus",
"name": "Ohita Ikään Perustuvat Rajoitukset" "name": "Ohita Ikään Perustuvat Rajoitukset"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music ääniraitojen tekstitysten valitsin", "description": "{{applicationName}} ääniraitojen tekstitysten valitsin",
"menu": { "menu": {
"autoload": "Valitse automaattisesti viimeksi käytetty tekstitys", "autoload": "Valitse automaattisesti viimeksi käytetty tekstitys",
"disable-captions": "Tekstitys ei oletusarvoisesti käytössä" "disable-captions": "Tekstitys ei oletusarvoisesti käytössä"
@ -443,7 +443,7 @@
"disconnected": "Yhteys katkaistu", "disconnected": "Yhteys katkaistu",
"hide-duration-left": "Piilota kappaleen jäljellä oleva kesto", "hide-duration-left": "Piilota kappaleen jäljellä oleva kesto",
"hide-github-button": "Piilota \"linkki GitHubiin\" -nappi", "hide-github-button": "Piilota \"linkki GitHubiin\" -nappi",
"play-on-youtube-music": "Kuuntele palvelussa YouTube Music", "play-on-application": "Kuuntele palvelussa {{applicationName}}",
"set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu" "set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu"
}, },
"name": "Discord Aktiviteetti (Rich Presence)", "name": "Discord Aktiviteetti (Rich Presence)",

View File

@ -154,7 +154,7 @@
"label": "Custom na window title", "label": "Custom na window title",
"prompt": { "prompt": {
"label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)", "label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)",
"placeholder": "Halimbawa: YouTube Music" "placeholder": "Halimbawa: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "I-restart ang App", "restart": "I-restart ang App",
"show": "Ipakita ang window", "show": "Ipakita ang window",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambient Mode" "name": "Ambient Mode"
}, },
"amuse": { "amuse": {
"description": "Nagdaragdag ng suporta sa YouTube Music para sa Amuse now playing widget ng 6K Labs", "description": "Nagdaragdag ng suporta sa {{applicationName}} para sa Amuse now playing widget ng 6K Labs",
"response": { "response": {
"query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta." "query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta."
} }
@ -365,11 +365,11 @@
"name": "Palabuin ang Bar ng Nabigasyon" "name": "Palabuin ang Bar ng Nabigasyon"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "I-bypass ang pag-verify ng edad ng YouTube", "description": "I-bypass ang pag-verify ng edad ng Music Player",
"name": "I-bypass ang Restriksyon sa Edad" "name": "I-bypass ang Restriksyon sa Edad"
}, },
"captions-selector": { "captions-selector": {
"description": "Tagapili ng caption para sa mga audio track ng YouTube Music", "description": "Tagapili ng caption para sa mga audio track ng {{applicationName}}",
"menu": { "menu": {
"autoload": "Awtomatikong piliin ang huling ginamit na caption", "autoload": "Awtomatikong piliin ang huling ginamit na caption",
"disable-captions": "Walang mga caption bilang default" "disable-captions": "Walang mga caption bilang default"
@ -446,13 +446,13 @@
"disconnected": "Nadiskonekta", "disconnected": "Nadiskonekta",
"hide-duration-left": "Itago ang natitirang oras", "hide-duration-left": "Itago ang natitirang oras",
"hide-github-button": "Itago ang button na GitHub link", "hide-github-button": "Itago ang button na GitHub link",
"play-on-youtube-music": "Patugtugin sa YouTube Music", "play-on-application": "Patugtugin sa {{applicationName}}",
"set-inactivity-timeout": "I-set ang inactivity timeout", "set-inactivity-timeout": "I-set ang inactivity timeout",
"set-status-display-type": { "set-status-display-type": {
"submenu": { "submenu": {
"artist": "Nakikinig sa {artist}", "artist": "Nakikinig sa {artist}",
"title": "Nakikinig sa {song title}", "title": "Nakikinig sa {song title}",
"youtube-music": "Kumikinig sa YouTube Music" "application": "Kumikinig sa {{applicationName}}"
} }
} }
}, },

View File

@ -153,8 +153,8 @@
"custom-window-title": { "custom-window-title": {
"label": "Titre de fenêtre personnalisé", "label": "Titre de fenêtre personnalisé",
"prompt": { "prompt": {
"label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)", "label": "Entrer un titre de fenêtre : (Laissé vide pour désactiver)",
"placeholder": "Exemple : YouTube Musique" "placeholder": "Exemple : {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Redémarrer l'application", "restart": "Redémarrer l'application",
"show": "Afficher la fenêtre", "show": "Afficher la fenêtre",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}} : {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Activer le thème sur la barre de progression"
}, },
"name": "Thème de couleur d'album" "name": "Thème de couleur d'album"
}, },
@ -287,10 +288,10 @@
"name": "Mode ambiant" "name": "Mode ambiant"
}, },
"amuse": { "amuse": {
"description": "Ajout de la prise en charge de YouTube Music pour le widget Amuse now playing de 6K Labs", "description": "Ajout de la prise en charge de {{applicationName}} pour le widget Amuse now playing de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Le serveur API Amuse est en cours d'exécution. Envoyez une requête GET /query pour obtenir des informations sur la chanson." "query": "Le serveur API d'Amuse est en cours d'exécution. GET /query pour obtenir des informations sur les chansons."
} }
}, },
"api-server": { "api-server": {
@ -302,7 +303,7 @@
"deny": "Interdire" "deny": "Interdire"
}, },
"message": "Autoriser {{ID}} ({{origin}}) à accéder à l'API?", "message": "Autoriser {{ID}} ({{origin}}) à accéder à l'API?",
"title": "Requête d'autorisation d'API" "title": "Demande d'autorisation à l'API"
} }
}, },
"menu": { "menu": {
@ -310,7 +311,7 @@
"label": "Plan d'autorisation", "label": "Plan d'autorisation",
"submenu": { "submenu": {
"auth-at-first": { "auth-at-first": {
"label": "Autoriser à la première requête" "label": "Autoriser lors de la première requête"
}, },
"none": { "none": {
"label": "Pas d'autorisation" "label": "Pas d'autorisation"
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Nom de l'hôte" "label": "Nom de l'hôte"
}, },
"https": {
"label": "HTTPS & Certificats",
"submenu": {
"cert": {
"dialogTitle": "Sélectionner le fichier de certificat HTTPS",
"label": "Fichier de certificat (.crt/.pem)"
},
"enable-https": {
"label": "Activer HTTPS"
},
"key": {
"dialogTitle": "Sélectionner le fichier de clé privée HTTPS",
"label": "Fichier de clé privée (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
@ -331,7 +348,7 @@
"title": "Nom d'hôte" "title": "Nom d'hôte"
}, },
"port": { "port": {
"label": "Entrez le port du serveur de l'API :", "label": "Entrez le port du serveur API :",
"title": "Port" "title": "Port"
} }
} }
@ -369,11 +386,11 @@
"name": "Barre de navigation floue" "name": "Barre de navigation floue"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Contourner la vérification de l'âge de YouTube", "description": "Contourner la vérification de l'âge de Music Player",
"name": "Contourner les restrictions dâge" "name": "Contourner les restrictions dâge"
}, },
"captions-selector": { "captions-selector": {
"description": "Sélecteur de sous-titres pour les pistes audio YouTube Music", "description": "Sélecteur de sous-titres pour les pistes audio {{applicationName}}",
"menu": { "menu": {
"autoload": "Sélectionner automatiquement la dernière légende utilisée", "autoload": "Sélectionner automatiquement la dernière légende utilisée",
"disable-captions": "Pas de sous-titres par défaut" "disable-captions": "Pas de sous-titres par défaut"
@ -392,7 +409,7 @@
"toast": { "toast": {
"caption-changed": "Sous-titres changés en {{language}}", "caption-changed": "Sous-titres changés en {{language}}",
"caption-disabled": "Sous-titres désactivés", "caption-disabled": "Sous-titres désactivés",
"no-captions": "Aucun sous-titre disponible pour cette chanson" "no-captions": "Aucun sous-titres disponibles pour cette chanson"
} }
}, },
"compact-sidebar": { "compact-sidebar": {
@ -456,14 +473,14 @@
"disconnected": "Déconnecté", "disconnected": "Déconnecté",
"hide-duration-left": "Masquer la durée restante", "hide-duration-left": "Masquer la durée restante",
"hide-github-button": "Masquer le bouton du lien GitHub", "hide-github-button": "Masquer le bouton du lien GitHub",
"play-on-youtube-music": "Jouer sur YouTube Music", "play-on-application": "Jouer sur {{applicationName}}",
"set-inactivity-timeout": "Définir le délai d'inactivité", "set-inactivity-timeout": "Définir le délai d'inactivité",
"set-status-display-type": { "set-status-display-type": {
"label": "Texte d'état", "label": "Texte d'état",
"submenu": { "submenu": {
"application": "Écoute {{applicationName}}",
"artist": "Écoute {artiste}", "artist": "Écoute {artiste}",
"title": "Écoute {titre de la chanson}", "title": "Écoute {titre de la chanson}"
"youtube-music": "Écoute YouTube Music"
} }
} }
}, },
@ -482,8 +499,8 @@
"buttons": { "buttons": {
"ok": "Ok" "ok": "Ok"
}, },
"message": "Argh ! Désolé, le téléchargement a échoué…", "message": "Argh! Désolé, le téléchargement a échoué…",
"title": "Erreur de téléchargement !" "title": "Erreur de téléchargement!"
}, },
"start-download-playlist": { "start-download-playlist": {
"buttons": { "buttons": {
@ -491,30 +508,30 @@
}, },
"detail": "({{playlistSize}} chansons)", "detail": "({{playlistSize}} chansons)",
"message": "Téléchargement de la playlist {{playlistTitle}}", "message": "Téléchargement de la playlist {{playlistTitle}}",
"title": "Téléchargement a commencé" "title": "Téléchargement commencé"
} }
}, },
"feedback": { "feedback": {
"conversion-progress": "Conversion : {{percent}} %", "conversion-progress": "Conversion : {{percent}}%",
"converting": "Conversion…", "converting": "Conversion…",
"done": "Terminé : {{filePath}}", "done": "Terminé : {{filePath}}",
"download-info": "Téléchargement {{artist}} - {{title}} [{{videoId}}", "download-info": "Téléchargement {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Téléchargé: {{percent}}%", "download-progress": "Téléchargé : {{percent}}%",
"downloading": "Télécharge…", "downloading": "Télécharge…",
"downloading-counter": "Télécharge {{current}}/{{total}}…", "downloading-counter": "Télécharge {{current}}/{{total}}…",
"downloading-playlist": "Téléchargement de la playlist \"{{playlistTitle}}\"  {{playlistSize}} chansons ({{playlistId}})", "downloading-playlist": "Téléchargement de la playlist \"{{playlistTitle}}\" - {{playlistSize}} chansons ({{playlistId}})",
"error-while-downloading": "Erreur lors du téléchargement de \"{{author}} - {{title}}\" : {{error}}", "error-while-downloading": "Erreur lors du téléchargement de \"{{author}} - {{title}}\" : {{error}}",
"folder-already-exists": "Le dossier {{playlistFolder}} existe déjà", "folder-already-exists": "Le dossier {{playlistFolder}} existe déjà",
"getting-playlist-info": "Obtention d'informations sur la liste de lecture…", "getting-playlist-info": "Obtention des données de la playlist…",
"loading": "Chargement…", "loading": "Chargement…",
"playlist-has-only-one-song": "La liste de lecture ne contient qu'un seul élément, téléchargement du morceau seul", "playlist-has-only-one-song": "La playlist ne contient qu'un seul élément, téléchargement du morceau seul",
"playlist-id-not-found": "Aucun ID de liste de lecture trouvé", "playlist-id-not-found": "Aucun ID de playlist trouvé",
"playlist-is-empty": "La liste de lecture est vide", "playlist-is-empty": "La playlist est vide",
"playlist-is-mix-or-private": "Erreur lors de l'obtention des informations sur la liste de lecture: assurez-vous qu'il ne s'agit pas d'une liste privée ou \"Mixée pour vous\"\n\n{{error}}", "playlist-is-mix-or-private": "Erreur lors de l'obtention des informations sur la playlist : assurez-vous qu'il ne s'agit pas d'une playlist privée ou \"Mixée pour vous\"\n\n{{error}}",
"preparing-file": "Péparer des fichier…", "preparing-file": "Préparation des fichier…",
"saving": "Sauvegarde…", "saving": "Sauvegarde…",
"trying-to-get-playlist-id": "Obtention de l'ID de la liste de lecture: {{playlistId}}", "trying-to-get-playlist-id": "Obtention de l'ID de la playlist : {{playlistId}}",
"video-id-not-found": "Vidéo non trouvée", "video-id-not-found": "Vidéo introuvable",
"writing-id3": "Écriture des balises ID3…" "writing-id3": "Écriture des balises ID3…"
} }
}, },
@ -524,19 +541,19 @@
"download-finish-settings": { "download-finish-settings": {
"label": "Télécharger une fois terminé", "label": "Télécharger une fois terminé",
"prompt": { "prompt": {
"last-percent": "Après x pour cent", "last-percent": "Après x pourcents",
"last-seconds": "Dernières x secondes", "last-seconds": "Dernières x secondes",
"title": "Configurer quand télécharger" "title": "Configurer quand télécharger"
}, },
"submenu": { "submenu": {
"advanced": "Avancé", "advanced": "Avancé",
"enabled": "Activé", "enabled": "Activé",
"mode": "Mode de temps", "mode": "Unité de temps",
"percent": "Pourcent", "percent": "Pourcent",
"seconds": "Secondes" "seconds": "Secondes"
} }
}, },
"download-playlist": "Télécharger la liste de lecture", "download-playlist": "Télécharger la playlist",
"presets": "Préconfigurations", "presets": "Préconfigurations",
"skip-existing": "Passer les fichiers existants" "skip-existing": "Passer les fichiers existants"
}, },
@ -573,7 +590,7 @@
}, },
"lumiastream": { "lumiastream": {
"description": "Ajoute la prise en charge de Lumia Stream", "description": "Ajoute la prise en charge de Lumia Stream",
"name": "Lumia Stream [Bêta]" "name": "Lumia Stream [Beta]"
}, },
"lyrics-genius": { "lyrics-genius": {
"description": "Ajoute la prise en charge des paroles pour la plupart des chansons", "description": "Ajoute la prise en charge des paroles pour la plupart des chansons",
@ -604,9 +621,9 @@
"host": "Hôte du Music Together", "host": "Hôte du Music Together",
"join": "Rejoindre le Music Together", "join": "Rejoindre le Music Together",
"permission": { "permission": {
"all": "Autorisez les invités à contrôler la musique et le player", "all": "Autorisez les invités à contrôler la playlist et le lecteur",
"host-only": "Seulement l'hôte peut contrôler les playlists et le lecteur", "host-only": "Seulement l'hôte peut contrôler la playlist et le lecteur",
"playlist": "Autoriser les invités à contrôler les playlists" "playlist": "Autoriser les invités à contrôler la playlist"
}, },
"set-permission": "Changer les permissions de contrôle", "set-permission": "Changer les permissions de contrôle",
"status": { "status": {
@ -624,7 +641,7 @@
"id-copied": "Identifiant de l'hôte copié dans le presse papier", "id-copied": "Identifiant de l'hôte copié dans le presse papier",
"id-copy-failed": "Echec de la copie de l'identifiant de l'hôte dans le presse papier", "id-copy-failed": "Echec de la copie de l'identifiant de l'hôte dans le presse papier",
"join-failed": "Echec en rejoignant le Music Together", "join-failed": "Echec en rejoignant le Music Together",
"joined": "Rejoint le Music Together", "joined": "Music Together rejoint",
"permission-changed": "Permission du Music Together changé à \"{{permission}}\"", "permission-changed": "Permission du Music Together changé à \"{{permission}}\"",
"remove-song-failed": "Echec du retrait de la piste", "remove-song-failed": "Echec du retrait de la piste",
"user-connected": "{{name}} à rejoint le Music Together", "user-connected": "{{name}} à rejoint le Music Together",
@ -636,7 +653,7 @@
"name": "Navigation", "name": "Navigation",
"templates": { "templates": {
"back": { "back": {
"title": "Revenir à la page précédente" "title": "Aller à la page précédente"
}, },
"forward": { "forward": {
"title": "Aller à la page suivante" "title": "Aller à la page suivante"
@ -656,7 +673,7 @@
"submenu": { "submenu": {
"hide-button-text": "Masquer le texte du bouton", "hide-button-text": "Masquer le texte du bouton",
"refresh-on-play-pause": "Actualiser lors de la lecture/pause", "refresh-on-play-pause": "Actualiser lors de la lecture/pause",
"tray-controls": "Ouvrir/Fermer sur le plateau, cliquez" "tray-controls": "Ouvrir/Fermer au clic sur licône de la barre des tâches"
} }
}, },
"priority": "Priorité des notifications", "priority": "Priorité des notifications",
@ -670,30 +687,30 @@
"name": "Amélioration des performances [Beta]" "name": "Amélioration des performances [Beta]"
}, },
"picture-in-picture": { "picture-in-picture": {
"description": "Permet de basculer lapplication en mode image dans image", "description": "Permet de basculer lapplication en mode picture-in-picture",
"menu": { "menu": {
"always-on-top": "Toujours en haut", "always-on-top": "Toujours au dessus",
"hotkey": { "hotkey": {
"label": "Raccourci clavier", "label": "Raccourci clavier",
"prompt": { "prompt": {
"keybind-options": { "keybind-options": {
"hotkey": "Raccourci clavier" "hotkey": "Raccourci clavier"
}, },
"label": "Choisissez un raccourci clavier pour activer le mode Image dans l'image", "label": "Choisissez un raccourci clavier pour activer le mode picture-in-picture",
"title": "Touche de raccourci Image dans l'image" "title": "Touche de raccourci picture-in-picture"
} }
}, },
"save-window-position": "Enregistrer la position de la fenêtre", "save-window-position": "Enregistrer la position de la fenêtre",
"save-window-size": "Enregistrer la taille de la fenêtre", "save-window-size": "Enregistrer la taille de la fenêtre",
"use-native-pip": "Utiliser le mode image dans image natif du navigateur" "use-native-pip": "Utiliser le mode PiP natif du navigateur"
}, },
"name": "Image dans l'image", "name": "Picture-in-picture",
"templates": { "templates": {
"button": "Image dans l'image" "button": "Picture-in-picture"
} }
}, },
"playback-speed": { "playback-speed": {
"description": "Écoutez vite, écoutez lentement ! Ajoute un curseur qui contrôle la vitesse de la chanson", "description": "Écoutez vite, écoutez lentement! Ajoute un curseur qui contrôle la vitesse de la chanson",
"name": "Vitesse de lecture", "name": "Vitesse de lecture",
"templates": { "templates": {
"button": "Vitesse" "button": "Vitesse"
@ -726,14 +743,14 @@
"backend": { "backend": {
"dialog": { "dialog": {
"quality-changer": { "quality-changer": {
"detail": "Qualité actuelle: {{quality}}", "detail": "Qualité actuelle : {{quality}}",
"message": "Choisissez la qualité vidéo :", "message": "Choisissez la qualité vidéo :",
"title": "Choisissez la qualité vidéo" "title": "Choisissez la qualité vidéo"
} }
} }
}, },
"description": "Permet de changer la qualité vidéo avec un bouton sur la vidéo", "description": "Permet de changer la qualité vidéo avec un bouton sur l'overlay vidéo",
"name": "Changeur de qualité vidéo", "name": "Sélecteur de qualité vidéo",
"renderer": { "renderer": {
"quality-settings-button": { "quality-settings-button": {
"label": "Ouvrir le sélecteur de qualité du lecteur" "label": "Ouvrir le sélecteur de qualité du lecteur"
@ -745,7 +762,7 @@
"dialog": { "dialog": {
"lastfm": { "lastfm": {
"auth-failed": { "auth-failed": {
"message": "Erreur lors de l'authetification avec Last.fm\nCachez la popup jusqu'au prochain redémarrage.", "message": "Erreur lors de l'authetification avec Last.fm\nCacher la popup jusqu'au prochain redémarrage.",
"title": "Authentification échouée" "title": "Authentification échouée"
} }
} }
@ -761,7 +778,7 @@
"scrobble-alternative-title": "Utiliser des titres alternatifs", "scrobble-alternative-title": "Utiliser des titres alternatifs",
"scrobble-other-media": "Scrobbler d'autres médias" "scrobble-other-media": "Scrobbler d'autres médias"
}, },
"name": "Scrobble", "name": "Scrobbler",
"prompt": { "prompt": {
"lastfm": { "lastfm": {
"api-key": "Clé API de Last.fm", "api-key": "Clé API de Last.fm",
@ -769,7 +786,7 @@
}, },
"listenbrainz": { "listenbrainz": {
"token": { "token": {
"label": "Entrez votre token utilisateur ListenBrainz:", "label": "Entrez votre token utilisateur ListenBrainz :",
"title": "Token ListenBrainz" "title": "Token ListenBrainz"
} }
} }
@ -795,8 +812,8 @@
} }
}, },
"skip-disliked-songs": { "skip-disliked-songs": {
"description": "Passer les musiques que je n'aime pas", "description": "Passe les titres \"Je n'aime pas\"",
"name": "Passer les chansons « Je n'aime pas »" "name": "Passer les titres \"Je n'aime pas\""
}, },
"skip-silences": { "skip-silences": {
"description": "Ignorer automatiquement les sections de silence dans les chansons", "description": "Ignorer automatiquement les sections de silence dans les chansons",
@ -810,12 +827,12 @@
"description": "Ajoute des paroles synchronisées aux chansons, grâce à LRClib par exemple.", "description": "Ajoute des paroles synchronisées aux chansons, grâce à LRClib par exemple.",
"errors": { "errors": {
"fetch": "⚠️\tUne erreur s'est produite en allant chercher les paroles.\n\tMerci de réessayer plus tard.", "fetch": "⚠️\tUne erreur s'est produite en allant chercher les paroles.\n\tMerci de réessayer plus tard.",
"not-found": "⚠️ Aucune paroles trouvées pour cette musique." "not-found": "⚠️ Aucune paroles trouvées pour ce titre."
}, },
"menu": { "menu": {
"default-text-string": { "default-text-string": {
"label": "Caractère par défaut entre les paroles", "label": "Caractère par défaut entre les paroles",
"tooltip": "Choisi le caractère par défaut à utiliser pour l'espace entre les paroles" "tooltip": "Choisi le caractère par défaut à utiliser pour les blancs entre les paroles"
}, },
"line-effect": { "line-effect": {
"label": "Effet de ligne", "label": "Effet de ligne",
@ -826,7 +843,7 @@
}, },
"focus": { "focus": {
"label": "Focus", "label": "Focus",
"tooltip": "Rend seulement la ligne actuelle blanche" "tooltip": "Rend blanche seulement la ligne actuelle"
}, },
"offset": { "offset": {
"label": "Décalage", "label": "Décalage",
@ -849,7 +866,7 @@
"label": "Aucun", "label": "Aucun",
"tooltip": "Aucun fournisseur privilégié" "tooltip": "Aucun fournisseur privilégié"
}, },
"tooltip": "Choisissez le fournisseur par défaut à utiliser" "tooltip": "Choisissez le fournisseur à utiliser par défaut"
}, },
"romanization": { "romanization": {
"label": "Romaniser les paroles", "label": "Romaniser les paroles",
@ -861,7 +878,7 @@
}, },
"show-time-codes": { "show-time-codes": {
"label": "Afficher les timecodes", "label": "Afficher les timecodes",
"tooltip": "Affiche à côté de chaque paroles son timecode" "tooltip": "Affiche le timecode à côté de chaque paroles"
} }
}, },
"name": "Paroles Synchronisées", "name": "Paroles Synchronisées",
@ -872,7 +889,7 @@
"warnings": { "warnings": {
"duration-mismatch": "⚠️ - Les paroles peuvent ne pas être synchronisées à cause d'une différence de durée.", "duration-mismatch": "⚠️ - Les paroles peuvent ne pas être synchronisées à cause d'une différence de durée.",
"inexact": "⚠️ - Les paroles de cette chanson peuvent ne pas être exactes", "inexact": "⚠️ - Les paroles de cette chanson peuvent ne pas être exactes",
"instrumental": "⚠️ - Cette musique n'a pas de paroles" "instrumental": "⚠️ - C'est un titre instrumental"
} }
}, },
"taskbar-mediacontrol": { "taskbar-mediacontrol": {
@ -909,7 +926,7 @@
"name": "Tuna OBS" "name": "Tuna OBS"
}, },
"unobtrusive-player": { "unobtrusive-player": {
"description": "Empêche le lecteur de s'afficher quand un chanson est en lecture", "description": "Empêche le lecteur de s'afficher quand un titre est en cours de lecture",
"name": "Lecteur Non-Intrusif" "name": "Lecteur Non-Intrusif"
}, },
"video-toggle": { "video-toggle": {
@ -933,7 +950,7 @@
} }
} }
}, },
"name": "Basculer la vidéo", "name": "Bouton de bascule vidéo",
"templates": { "templates": {
"button-song": "Musique", "button-song": "Musique",
"button-video": "Vidéo" "button-video": "Vidéo"

View File

@ -53,8 +53,158 @@
"later": "Despois", "later": "Despois",
"restart-now": "Reiniciar Agora" "restart-now": "Reiniciar Agora"
}, },
"detail": "O plugin \"{{pluginName}}\" precisa dun reinicio para tomar efecto" "detail": "O plugin \"{{pluginName}}\" precisa dun reinicio para tomar efecto",
"message": "\"{{pluginName}}\" precisa reiniciar",
"title": "Requírese reinicio"
},
"unresponsive": {
"buttons": {
"quit": "Saír",
"relaunch": "Lanzar de novo",
"wait": "Agardar"
},
"detail": "Desculpa o inconveniente! Por favor escolle que facer:",
"message": "A aplicación non responde",
"title": "A xanela non responde"
},
"update-available": {
"buttons": {
"disable": "Desactivar actualizacións",
"download": "Descarregar",
"ok": "OK"
},
"detail": "Está dispoñíbel unha nova versión que se pode descarregar de {{downloadLink}}",
"message": "Hai una nova versión dispoñíbel",
"title": "Actualización dispoñíbel"
} }
},
"menu": {
"about": "Sobre",
"navigation": {
"label": "Navegación",
"submenu": {
"copy-current-url": "Copiar o URL actual",
"go-back": "Atrás",
"go-forward": "Adiante",
"quit": "Saír",
"restart": "Reiniciar a aplicación"
}
},
"options": {
"label": "Opcións",
"submenu": {
"advanced-options": {
"label": "Opcións avanzadas",
"submenu": {
"auto-reset-app-cache": "Reiniciar a caché cando a aplicación arrinque",
"disable-hardware-acceleration": "Desactivar a aceleración hardware",
"edit-config-json": "Editar config.json",
"override-user-agent": "Substituír o User-Agent",
"restart-on-config-changes": "Reiniciar ao alterar a configuración",
"set-proxy": {
"label": "Configurar o proxy",
"prompt": {
"label": "Introducir o enderezo do proxy (deixar baleiro para desactivalo)",
"placeholder": "Exemplo: SOCKS5://127.0.0.1:9999",
"title": "Configurar o proxy"
}
},
"toggle-dev-tools": "Activar ou desactivar as DevTools"
}
},
"always-on-top": "Sempre en primeiro plano",
"auto-update": "Actualización automática",
"hide-menu": {
"dialog": {
"message": "O menú ocultarase no próximo inicio; use [Alt] para mostralo (ou a tecla [`] se emprega o menú integrado)",
"title": "Ocultar Menú activado"
},
"label": "Ocultar Menú"
},
"language": {
"dialog": {
"message": "A lingua hase mudar despois do reinicio",
"title": "Mudouse a lingua"
},
"label": "Lingua",
"submenu": {
"to-help-translate": "Quere axudar a traducir? Prema aquí"
}
},
"resume-on-start": "Retomar a última canción ao iniciar a aplicación",
"single-instance-lock": "Bloqueo de instancia única",
"start-at-login": "Iniciar co inicio de sesión",
"starting-page": {
"label": "Páxina de inicio",
"unset": "Sen definir"
},
"tray": {
"label": "Bandexa",
"submenu": {
"disabled": "Desactivado",
"enabled-and-hide-app": "Activado e ocultar a aplicación",
"enabled-and-show-app": "Activado e mostrar a aplicación",
"play-pause-on-click": "Reproducir/Pausar ao premer"
}
},
"visual-tweaks": {
"label": "Axustes visuais",
"submenu": {
"custom-window-title": {
"label": "Título de xanela personalizado",
"prompt": {
"label": "Introduza o título personalizado da xanela (deixe baleiro para desactivala)",
"placeholder": "Exemplo: {{applicationName}}"
}
},
"like-buttons": {
"default": "Predeterminado",
"force-show": "Forzar a visualización",
"hide": "Agochar",
"label": "Botóns de Gústame"
},
"remove-upgrade-button": "Retirar o botón de anovación",
"theme": {
"dialog": {
"button": {
"cancel": "Cancelar",
"remove": "Retirar"
},
"remove-theme": "Estás certo que queres retirar o tema personalizado?",
"remove-theme-message": "Isto ha retirar o tema personalizado"
},
"label": "Tema",
"submenu": {
"import-css-file": "Importar arquivo CSS personalizado",
"no-theme": "Sen tema"
}
}
}
}
}
},
"plugins": {
"enabled": "Activado",
"label": "Complementos",
"new": "NOVO"
},
"view": {
"label": "Vista",
"submenu": {
"force-reload": "Forzar recarga",
"reload": "Recargar",
"reset-zoom": "Tamaño real",
"toggle-fullscreen": "Alternar Pantalla Completa",
"zoom-in": "Achegarse",
"zoom-out": "Afastarse"
}
}
},
"tray": {
"next": "Seguinte",
"play-pause": "Reproducir/Pausar",
"previous": "Anterior",
"quit": "Saír"
} }
} }
} }

View File

@ -150,6 +150,11 @@
"visual-tweaks": { "visual-tweaks": {
"label": "תיקונים חזותיים", "label": "תיקונים חזותיים",
"submenu": { "submenu": {
"custom-window-title": {
"prompt": {
"placeholder": "לדוגמה: שולחן כתיבה אגסי"
}
},
"like-buttons": { "like-buttons": {
"default": "ברירת מחדל", "default": "ברירת מחדל",
"force-show": "הפעל בכוח", "force-show": "הפעל בכוח",
@ -201,8 +206,8 @@
"restart": "הפעל מחדש", "restart": "הפעל מחדש",
"show": "הראה חלון", "show": "הראה חלון",
"tooltip": { "tooltip": {
"default": "יוטיוב מיוזיק", "default": "{{applicationName}}",
"with-song-info": "יוטיוב מיוזיק: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -212,7 +217,7 @@
"name": "הגבר מהירות פרסומת" "name": "הגבר מהירות פרסומת"
}, },
"adblocker": { "adblocker": {
"description": "חסום את כל המודעות והמעקב מחוץ לקופסה", "description": "חסום את כל המודעות והמעקבים",
"menu": { "menu": {
"blocker": "חוסם" "blocker": "חוסם"
}, },
@ -244,6 +249,7 @@
} }
}, },
"buffer": { "buffer": {
"label": "חוצץ",
"submenu": { "submenu": {
"buffer": "{{buffer}}" "buffer": "{{buffer}}"
} }
@ -279,7 +285,7 @@
"name": "מצב אווירה" "name": "מצב אווירה"
}, },
"amuse": { "amuse": {
"description": "מוסיף תמיכה ב-YouTube Music עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs", "description": "מוסיף תמיכה ב-{{applicationName}} עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs",
"name": "משעשע", "name": "משעשע",
"response": { "response": {
"query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query." "query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query."
@ -365,7 +371,7 @@
"name": "עקוף את ההחמרות של הגיל" "name": "עקוף את ההחמרות של הגיל"
}, },
"captions-selector": { "captions-selector": {
"description": "בורר כתוביות עבור רצועות אודיו של YouTube Music", "description": "בורר כתוביות עבור רצועות אודיו של {{applicationName}}",
"menu": { "menu": {
"autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה", "autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה",
"disable-captions": "ברירת מחד ללא כתוביות" "disable-captions": "ברירת מחד ללא כתוביות"
@ -380,6 +386,11 @@
}, },
"templates": { "templates": {
"title": "פתח בחירת כתוביות" "title": "פתח בחירת כתוביות"
},
"toast": {
"caption-changed": "תרגום שונה ל {{שפה}}",
"caption-disabled": "תרגום בוטל",
"no-captions": "אין תרגום זמין לשיר הזה"
} }
}, },
"compact-sidebar": { "compact-sidebar": {
@ -391,9 +402,11 @@
"menu": { "menu": {
"advanced": "מתקדם" "advanced": "מתקדם"
}, },
"name": "התפיידות צלב[בית]",
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "תתפייד בזמן[מילישניות]",
"fade-scaling": { "fade-scaling": {
"linear": "לינארי", "linear": "לינארי",
"logarithmic": "לוגריתמי" "logarithmic": "לוגריתמי"
@ -419,7 +432,7 @@
"connected": "מחובר", "connected": "מחובר",
"disconnected": "מנותק", "disconnected": "מנותק",
"hide-github-button": "הסתר את לחצן הקישור של GitHub", "hide-github-button": "הסתר את לחצן הקישור של GitHub",
"play-on-youtube-music": "הפעל ביוטיוב מיוזיק", "play-on-application": "הפעל ביוטיוב מיוזיק",
"set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות" "set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות"
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "कस्टम विंडो टाइटल", "label": "कस्टम विंडो टाइटल",
"prompt": { "prompt": {
"label": "कस्टम विंडो टाइटल डालें: (डिसएबल करने के लिए खाली छोड़ें)", "label": "कस्टम विंडो टाइटल डालें: (डिसएबल करने के लिए खाली छोड़ें)",
"placeholder": "उदाहरण: यूट्यूब संगीत" "placeholder": "उदाहरण: पियर डेस्कटॉप"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "ऐप पुनः प्रारंभ करें", "restart": "ऐप पुनः प्रारंभ करें",
"show": "ऐप दिखाए", "show": "ऐप दिखाए",
"tooltip": { "tooltip": {
"default": "यूट्यूब म्यूजिक", "default": "{{applicationName}}",
"with-song-info": "यूट्यूब म्यूजिक: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "अम्बिएन्ट मोड्" "name": "अम्बिएन्ट मोड्"
}, },
"amuse": { "amuse": {
"description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए YouTube म्यूजिक समर्थन जोड़ा गया", "description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए Music Player म्यूजिक समर्थन जोड़ा गया",
"name": "मन बहलाना", "name": "मन बहलाना",
"response": { "response": {
"query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।" "query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।"
@ -369,11 +369,11 @@
"name": "नेविगेशन बार को ब्लर करें" "name": "नेविगेशन बार को ब्लर करें"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube आयु की जांच को बायपास करें", "description": "Music Player आयु की जांच को बायपास करें",
"name": "आयु प्रतिबंध को बायपास करें" "name": "आयु प्रतिबंध को बायपास करें"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता", "description": "{{applicationName}} म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता",
"menu": { "menu": {
"autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें", "autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें",
"disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं" "disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं"
@ -426,7 +426,13 @@
"menu": { "menu": {
"device-selector": "डिवाइस चुनें" "device-selector": "डिवाइस चुनें"
}, },
"name": "अपनी पसंद का आउटपुट डिवाइस" "name": "अपनी पसंद का आउटपुट डिवाइस",
"prompt": {
"device-selector": {
"label": "उपयोग किए जाने वाला आउटपुट मीडिया चुने",
"title": "आउटपुट डिवाइस चुनें"
}
}
}, },
"disable-autoplay": { "disable-autoplay": {
"description": "गीत को \"रुके हुए \" मोड में शुरू करता है", "description": "गीत को \"रुके हुए \" मोड में शुरू करता है",
@ -450,8 +456,16 @@
"disconnected": "डिस्कनेक्ट किया गया", "disconnected": "डिस्कनेक्ट किया गया",
"hide-duration-left": "शेष अवधि छिपाएँ", "hide-duration-left": "शेष अवधि छिपाएँ",
"hide-github-button": "GitHub लिंक के बटन को छिपाएँ", "hide-github-button": "GitHub लिंक के बटन को छिपाएँ",
"play-on-youtube-music": "YouTube म्यूज़िक पर चलाएँ", "play-on-application": "{{applicationName}} म्यूज़िक पर चलाएँ",
"set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें" "set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें",
"set-status-display-type": {
"label": "स्टेटस टेक्स्ट",
"submenu": {
"application": "{{applicationName}} सुन रहे है",
"artist": "{artist} को सुन रहे है",
"title": "{song title} सुन रहे है"
}
}
}, },
"name": "डिस्कॉर्ड रिच प्रेजेंस", "name": "डिस्कॉर्ड रिच प्रेजेंस",
"prompt": { "prompt": {
@ -743,6 +757,7 @@
"listenbrainz": { "listenbrainz": {
"token": "listenbrainz उपयोगकर्ता टोकन दर्ज करें" "token": "listenbrainz उपयोगकर्ता टोकन दर्ज करें"
}, },
"scrobble-alternative-artist": "वैकल्पिक आर्टिस्ट का उपयोग करें",
"scrobble-alternative-title": "वैकल्पिक शीर्षक का उपयोग करें", "scrobble-alternative-title": "वैकल्पिक शीर्षक का उपयोग करें",
"scrobble-other-media": "अन्य मीडिया स्क्रोबल करें" "scrobble-other-media": "अन्य मीडिया स्क्रोबल करें"
}, },
@ -788,9 +803,12 @@
"name": "साइलेंस स्किप करें" "name": "साइलेंस स्किप करें"
}, },
"sponsorblock": { "sponsorblock": {
"description": "Intro/Outro जैसे गैर-संगीत भागों को स्किप करता है", "description": "गाने के वीडियो में जहाँ म्यूजिक नहीं चलता, जैसे शुरुआत या अंत के हिस्से, उन्हें अपने आप स्किप कर देता है",
"name": "SponsorBlock" "name": "SponsorBlock"
}, },
"synced-lyrics": {
"description": "LRClib जैसे सोर्सेज के उपयोग से, गानों के लिए सिंक किए गए लिरिक्स देता है।"
},
"video-toggle": { "video-toggle": {
"menu": { "menu": {
"align": { "align": {

View File

@ -55,7 +55,7 @@
}, },
"detail": "\"{{pluginName}}\" plugin zahtjeva ponovno pokretanje da bi postao aktivan", "detail": "\"{{pluginName}}\" plugin zahtjeva ponovno pokretanje da bi postao aktivan",
"message": "\"{{pluginName}}\" se treba ponovo pokreniti", "message": "\"{{pluginName}}\" se treba ponovo pokreniti",
"title": "Ponovno Pokrećanje je Potrebno" "title": "Potrebno Ponovno Pokretanje"
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
@ -128,7 +128,7 @@
}, },
"label": "Jezik", "label": "Jezik",
"submenu": { "submenu": {
"to-help-translate": "Želite pomoć za prijevodom? Kliknite ovdje" "to-help-translate": "Želite pomoći sa prijevodom? Kliknite ovdje"
} }
}, },
"resume-on-start": "Nastavi zadnju pjesmu kad se aplikacija pokrene", "resume-on-start": "Nastavi zadnju pjesmu kad se aplikacija pokrene",
@ -150,6 +150,13 @@
"visual-tweaks": { "visual-tweaks": {
"label": "Vizualna podešavanja", "label": "Vizualna podešavanja",
"submenu": { "submenu": {
"custom-window-title": {
"label": "Prilagođeni naslov prozora",
"prompt": {
"label": "Unesi prilagođeni naslov prozora: (ostavi prazno za onemogućiti)",
"placeholder": "Primjer: {{applicationName}}"
}
},
"like-buttons": { "like-buttons": {
"default": "Zadano", "default": "Zadano",
"force-show": "Prisilno prikaži", "force-show": "Prisilno prikaži",
@ -201,8 +208,8 @@
"restart": "Ponovo Pokreni Aplikaciju", "restart": "Ponovo Pokreni Aplikaciju",
"show": "Prikaži prozor", "show": "Prikaži prozor",
"tooltip": { "tooltip": {
"default": "YouTube Glazba", "default": "{{applicationName}}",
"with-song-info": "YouTube Glazba: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -230,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Omogući postavljanje teme \"seekbar\"-a"
}, },
"name": "Boja teme albuma" "name": "Boja teme albuma"
}, },
@ -280,8 +288,8 @@
"name": "Ambijentalni Način" "name": "Ambijentalni Način"
}, },
"amuse": { "amuse": {
"description": "Dodaje podršku za YouTube Glazbu za widget \"sada reproducira\" od Amuse od strane 6K Labs", "description": "Dodaje podršku za {{applicationName}} za widget \"sada reproducira\" od Amuse od strane 6K Labs",
"name": "Amuse", "name": "Zabavljati",
"response": { "response": {
"query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi." "query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi."
} }
@ -313,6 +321,22 @@
"hostname": { "hostname": {
"label": "Naziv hosta" "label": "Naziv hosta"
}, },
"https": {
"label": "HTTPS i Sertifikati",
"submenu": {
"cert": {
"dialogTitle": "Biraj HTTPS sertifikat datoteku",
"label": "Sertifikat datoteka (.crt/.pem)"
},
"enable-https": {
"label": "Omogući HTTPS"
},
"key": {
"dialogTitle": "Biraj privatni ključ datoteku za HTTPS",
"label": "Privatni ključ datoteka (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
@ -362,11 +386,11 @@
"name": "Zamagli Navigacijsku Traku" "name": "Zamagli Navigacijsku Traku"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Zaobiđi YouTubeovu provjeru dobi", "description": "Zaobiđi Music Player provjeru dobi",
"name": "Zaobiđi dobna ograničenja" "name": "Zaobiđi dobna ograničenja"
}, },
"captions-selector": { "captions-selector": {
"description": "Izbornik titlova za audiozapise od YouTube Musica", "description": "Izbornik titlova za audiozapise od {{applicationName}}a",
"menu": { "menu": {
"autoload": "Automatski izaberi posljednje korištene titlove", "autoload": "Automatski izaberi posljednje korištene titlove",
"disable-captions": "Bez titlova" "disable-captions": "Bez titlova"
@ -383,7 +407,7 @@
"title": "Otvori izbornik za titlove" "title": "Otvori izbornik za titlove"
}, },
"toast": { "toast": {
"caption-changed": "Titlovi su promenjeni u {{language}}", "caption-changed": "Titlovi su promijenjeni u {{language}}",
"caption-disabled": "Titlovi su isključeni", "caption-disabled": "Titlovi su isključeni",
"no-captions": "Za ovu pjesmu nisu dostupni titlovi" "no-captions": "Za ovu pjesmu nisu dostupni titlovi"
} }
@ -414,8 +438,21 @@
} }
} }
}, },
"custom-output-device": {
"description": "Konfiguriraj prilagođeni izlazni medijski uređaj za pjesme",
"menu": {
"device-selector": "Odaberi Uređaj"
},
"name": "Prilagođeni uređaj za izlaz",
"prompt": {
"device-selector": {
"label": "Odaberi izlazni medijski uređaj za korištenje",
"title": "Odaberi izlazni uređaj"
}
}
},
"disable-autoplay": { "disable-autoplay": {
"description": "Postavlja da pjesma počne pauzirana", "description": "Pokreće pjesmu u pauziranom načinu rada",
"menu": { "menu": {
"apply-once": "Primjenjuje se samo pri pokretanju aplikacije" "apply-once": "Primjenjuje se samo pri pokretanju aplikacije"
}, },
@ -436,10 +473,18 @@
"disconnected": "Odspojen", "disconnected": "Odspojen",
"hide-duration-left": "Sakrij preostalo vrijeme", "hide-duration-left": "Sakrij preostalo vrijeme",
"hide-github-button": "Sakrij gumb sa GitHub poveznicom", "hide-github-button": "Sakrij gumb sa GitHub poveznicom",
"play-on-youtube-music": "Reproduciraj na YouTube Musicu", "play-on-application": "Reproduciraj na {{applicationName}}u",
"set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)" "set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)",
"set-status-display-type": {
"label": "Tekst statusa",
"submenu": {
"application": "Slušate {{applicationName}}",
"artist": "Slušate {glazbenika}",
"title": "Slušate {naslov pjesme}"
}
}
}, },
"name": "Discord Rich Presence", "name": "Bogata prisutnost Discorda",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "Postavi vremensko ograničenje neaktivnosti u sekundama:", "label": "Postavi vremensko ograničenje neaktivnosti u sekundama:",
@ -479,10 +524,10 @@
"folder-already-exists": "Mapa {{playlistFolder}} već postoji", "folder-already-exists": "Mapa {{playlistFolder}} već postoji",
"getting-playlist-info": "Dobavljaju se informacije o playlisti…", "getting-playlist-info": "Dobavljaju se informacije o playlisti…",
"loading": "Učitavanje…", "loading": "Učitavanje…",
"playlist-has-only-one-song": "Playlista ima samo jedan stavku, preuzeti će se direktno", "playlist-has-only-one-song": "Playlista ima samo jednu stavku, preuzeti će se direktno",
"playlist-id-not-found": "Nije pronađen ID playliste", "playlist-id-not-found": "Nije pronađen ID playliste",
"playlist-is-empty": "Playlista je prazna", "playlist-is-empty": "Playlista je prazna",
"playlist-is-mix-or-private": "Pogreška pri dobivanju informacija o playlisti: provjerite da nije ili privatna ili \"Za vas\" playlista\n\n{{error}}", "playlist-is-mix-or-private": "Pogreška pri dobavljanju informacija o playlisti: provjerite da nije privatna ili \"Za vas\" playlista\n\n{{error}}",
"preparing-file": "Priprema se datoteka…", "preparing-file": "Priprema se datoteka…",
"saving": "Spremanje…", "saving": "Spremanje…",
"trying-to-get-playlist-id": "Pokušavam dobaviti playlist ID: {{playlistId}}", "trying-to-get-playlist-id": "Pokušavam dobaviti playlist ID: {{playlistId}}",
@ -533,7 +578,7 @@
"name": "Ekvalizator" "name": "Ekvalizator"
}, },
"exponential-volume": { "exponential-volume": {
"description": "Čini klizač glasnoće (volume slider) eksponencijalnim za lakše odabranje niže glasnoće.", "description": "Čini klizač glasnoće (volume slider) eksponencijalnim za lakši odabir niže glasnoće.",
"name": "Eksponencijalna Glasnoća" "name": "Eksponencijalna Glasnoća"
}, },
"in-app-menu": { "in-app-menu": {
@ -552,7 +597,7 @@
"menu": { "menu": {
"romanized-lyrics": "Romanizirani tekstovi pjesme" "romanized-lyrics": "Romanizirani tekstovi pjesme"
}, },
"name": "Genius teksovi pjesme", "name": "Genius tekstovi",
"renderer": { "renderer": {
"fetched-lyrics": "Dobavljen tekst pjesme s Genius-a" "fetched-lyrics": "Dobavljen tekst pjesme s Genius-a"
} }
@ -729,6 +774,7 @@
"listenbrainz": { "listenbrainz": {
"token": "Unesi korisnički žeton za ListenBrainz" "token": "Unesi korisnički žeton za ListenBrainz"
}, },
"scrobble-alternative-artist": "Izaberite druge glazbenike",
"scrobble-alternative-title": "Koristi alternativne naslove", "scrobble-alternative-title": "Koristi alternativne naslove",
"scrobble-other-media": "Učetkaj druge medije" "scrobble-other-media": "Učetkaj druge medije"
}, },
@ -781,7 +827,7 @@
"description": "Obezbjeđava sinkronizirane lirike pjesama, korištenjem dobavljača poput LRClib.", "description": "Obezbjeđava sinkronizirane lirike pjesama, korištenjem dobavljača poput LRClib.",
"errors": { "errors": {
"fetch": "⚠️\tDošlo je do greške prilikom dobavljanja stihova pjesme.\n\tMolimo vas da probate ponovno kasnije.", "fetch": "⚠️\tDošlo je do greške prilikom dobavljanja stihova pjesme.\n\tMolimo vas da probate ponovno kasnije.",
"not-found": "⚠️ Tekst za ovu pjesmu nije pronađen." "not-found": "⚠️ Tekst ove pjesme nije pronađen."
}, },
"menu": { "menu": {
"default-text-string": { "default-text-string": {
@ -789,7 +835,7 @@
"tooltip": "Odaberi zadane karaktere koji će biti korišteni za razmake između stihova pjesama" "tooltip": "Odaberi zadane karaktere koji će biti korišteni za razmake između stihova pjesama"
}, },
"line-effect": { "line-effect": {
"label": "Efekat crte", "label": "Efekt crte",
"submenu": { "submenu": {
"fancy": { "fancy": {
"label": "Kitnjast", "label": "Kitnjast",
@ -808,15 +854,23 @@
"tooltip": "Promjeni razmjeru trenutne crte" "tooltip": "Promjeni razmjeru trenutne crte"
} }
}, },
"tooltip": "Odaberi efekat koji će biti primjenjen na trenutnoj crti" "tooltip": "Odaberi efekt koji će biti primijenjen na trenutnoj crti"
}, },
"precise-timing": { "precise-timing": {
"label": "Napravi da tekst pjesme bude izvrsno usklađen", "label": "Napravi da tekst pjesme bude izvrsno usklađen",
"tooltip": "Izračunaj do milisekunde prikaz sljedeće crteteksta (može malo utjecati na učinak)" "tooltip": "Izračunaj do milisekunde prikaz sljedeće crteteksta (može malo utjecati na učinak)"
}, },
"preferred-provider": {
"label": "Željeni davatelj usluga",
"none": {
"label": "Nema / prazno",
"tooltip": "Nema željenog pružatelja usluga"
},
"tooltip": "Odaberite zadanog pružatelja usluga kojeg ćete koristiti"
},
"romanization": { "romanization": {
"label": "Romanizuj stihove pjesama", "label": "Romanizuj stihove pjesama",
"tooltip": "Ako je tekst pjesme na drugom jeziku, probajte da ga prikažete na latinici." "tooltip": "Ako je tekst pjesme na drugom jeziku, probajte ga prikazati na latinici."
}, },
"show-lyrics-even-if-inexact": { "show-lyrics-even-if-inexact": {
"label": "Prikaži tekst pjesme čak i ako je netačan", "label": "Prikaži tekst pjesme čak i ako je netačan",
@ -827,14 +881,14 @@
"tooltip": "Prikaži vremenske oznake pored teksta pjesme" "tooltip": "Prikaži vremenske oznake pored teksta pjesme"
} }
}, },
"name": "Sinkronizovani stihovi pjesama", "name": "Sinkronizirani stihovi pjesama",
"refetch-btn": { "refetch-btn": {
"fetching": "Dobavljanje...", "fetching": "Dobavljanje...",
"normal": "Ponovo dobavite tekst pjesme" "normal": "Ponovo dobavite tekst pjesme"
}, },
"warnings": { "warnings": {
"duration-mismatch": "⚠️ - Tekst pjesme možda nije usklađen zbog neuklapanja u daljini trajanja.", "duration-mismatch": "⚠️ - Tekst pjesme možda nije usklađen zbog neuklapanja u daljini trajanja.",
"inexact": "⚠️ - Tekst za ovu pjesmu možda nije tačan", "inexact": "⚠️ - Tekst ove pjesme možda nije točan",
"instrumental": "⚠️ - Ovo je instrumentalna glazba" "instrumental": "⚠️ - Ovo je instrumentalna glazba"
} }
}, },
@ -846,6 +900,27 @@
"description": "Dodaje dodatak dodirne trake za macOS korisnike", "description": "Dodaje dodatak dodirne trake za macOS korisnike",
"name": "Dodirna Traka" "name": "Dodirna Traka"
}, },
"transparent-player": {
"description": "Učinit će prozor aplikacije prozirnim",
"menu": {
"opacity": {
"label": "Neprozirnost",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Vrsta",
"submenu": {
"acrylic": "Akrilni",
"mica": "Tinjac",
"none": "Nema / prazno",
"tabbed": "U karticama"
}
}
},
"name": "Prozirni Svirač"
},
"tuna-obs": { "tuna-obs": {
"description": "Integracija sa OBS-ovim Tuna dodatkom", "description": "Integracija sa OBS-ovim Tuna dodatkom",
"name": "Tuna OBS" "name": "Tuna OBS"

View File

@ -154,7 +154,7 @@
"label": "Saját ablak cím", "label": "Saját ablak cím",
"prompt": { "prompt": {
"label": "Kérem az egyéni ablak címét: (hagyd üresen a kikapcsoláshoz)", "label": "Kérem az egyéni ablak címét: (hagyd üresen a kikapcsoláshoz)",
"placeholder": "Példa: Youtube Music" "placeholder": "Példa: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "YT Music újraindítása", "restart": "YT Music újraindítása",
"show": "Ablak megjelenítése", "show": "Ablak megjelenítése",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambient mód" "name": "Ambient mód"
}, },
"amuse": { "amuse": {
"description": "Hozzáadja a YouTube Music támogatását az Amuse \"now playing\" widgethez a 6K Labs által", "description": "Hozzáadja a {{applicationName}} támogatását az Amuse \"now playing\" widgethez a 6K Labs által",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez." "query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez."
@ -367,11 +367,11 @@
"name": "Navigációs sáv elmosása" "name": "Navigációs sáv elmosása"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "A YouTube korellenőrzését kihagyja, ezáltal nem kel meg erősíteni a zene meghallgatása elött. (Automatikusan megerősítve lesz.)", "description": "A Music Player korellenőrzését kihagyja, ezáltal nem kel meg erősíteni a zene meghallgatása elött. (Automatikusan megerősítve lesz.)",
"name": "Korellenőrzés kihagyása" "name": "Korellenőrzés kihagyása"
}, },
"captions-selector": { "captions-selector": {
"description": "Felirat választó a YouTube Music zenékhez", "description": "Felirat választó a {{applicationName}} zenékhez",
"menu": { "menu": {
"autoload": "Automatikusan kiválasztja az utoljára használt feliratot", "autoload": "Automatikusan kiválasztja az utoljára használt feliratot",
"disable-captions": "Alapértelmezetten nincsenek feliratok" "disable-captions": "Alapértelmezetten nincsenek feliratok"
@ -453,14 +453,14 @@
"disconnected": "Nincs Kapcsolódva", "disconnected": "Nincs Kapcsolódva",
"hide-duration-left": "Hátralévő idő elrejtése", "hide-duration-left": "Hátralévő idő elrejtése",
"hide-github-button": "GitHub url gombjának elrejtése", "hide-github-button": "GitHub url gombjának elrejtése",
"play-on-youtube-music": "Lejátszás a YouTube Music-on", "play-on-application": "Lejátszás a {{applicationName}}-on",
"set-inactivity-timeout": "Inaktivitási időkorlát beállítása", "set-inactivity-timeout": "Inaktivitási időkorlát beállítása",
"set-status-display-type": { "set-status-display-type": {
"label": "Tevékenység szöveg", "label": "Tevékenység szöveg",
"submenu": { "submenu": {
"artist": "Hallgatja: {artist}", "artist": "Hallgatja: {artist}",
"title": "Hallgatja: {song title}", "application": "Hallgatja: {{applicationName}}",
"youtube-music": "Hallgatja: YouTube Music" "title": "Hallgatja: {song title}"
} }
} }
}, },
@ -730,7 +730,7 @@
} }
}, },
"description": "Lehetővé teszi a videó minőségének megváltoztatását egy gombbal a videó fedvényen", "description": "Lehetővé teszi a videó minőségének megváltoztatását egy gombbal a videó fedvényen",
"name": "Videóminőség modosító" "name": "Videóminőség módosító"
}, },
"scrobbler": { "scrobbler": {
"description": "Scrobbling támogatás hozzáadása (pl. last.fm, ListenBrainz)", "description": "Scrobbling támogatás hozzáadása (pl. last.fm, ListenBrainz)",

View File

@ -154,7 +154,7 @@
"label": "Judul jendela kustom", "label": "Judul jendela kustom",
"prompt": { "prompt": {
"label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)", "label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)",
"placeholder": "Contoh: YouTube Music" "placeholder": "Contoh: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Restart aplikasi", "restart": "Restart aplikasi",
"show": "Tampilkan jendela", "show": "Tampilkan jendela",
"tooltip": { "tooltip": {
"default": "YouTube Musik", "default": "{{applicationName}}",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mode ambient" "name": "Mode ambient"
}, },
"amuse": { "amuse": {
"description": "Menambahkan dukungan YouTube Music untuk widget Amuse yang sedang diputar oleh 6K Labs", "description": "Menambahkan dukungan {{applicationName}} untuk widget Amuse yang sedang diputar oleh 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu." "query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu."
@ -369,11 +369,11 @@
"name": "Buramkan Bar Navigasi" "name": "Buramkan Bar Navigasi"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Lewati verifikasi umur dari YouTube", "description": "Lewati verifikasi umur dari Music Player",
"name": "Lewati batasan umur" "name": "Lewati batasan umur"
}, },
"captions-selector": { "captions-selector": {
"description": "Pemilih caption untuk trek audio YouTube Music", "description": "Pemilih caption untuk trek audio {{applicationName}}",
"menu": { "menu": {
"autoload": "Pilih caption terakhir secara otomatis", "autoload": "Pilih caption terakhir secara otomatis",
"disable-captions": "Tidak ada caption secara default" "disable-captions": "Tidak ada caption secara default"
@ -456,14 +456,14 @@
"disconnected": "Terputus", "disconnected": "Terputus",
"hide-duration-left": "Sembunyikan sisa durasi", "hide-duration-left": "Sembunyikan sisa durasi",
"hide-github-button": "Sembunyikan tombol link GitHub", "hide-github-button": "Sembunyikan tombol link GitHub",
"play-on-youtube-music": "Mainkan di YouTube Music", "play-on-application": "Mainkan di {{applicationName}}",
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif", "set-inactivity-timeout": "Tetapkan batas waktu tidak aktif",
"set-status-display-type": { "set-status-display-type": {
"label": "Teks status", "label": "Teks status",
"submenu": { "submenu": {
"artist": "Sedang mendengarkan {artist}", "artist": "Sedang mendengarkan {artist}",
"title": "Sedang mendengarkan {song title}", "title": "Sedang mendengarkan {song title}",
"youtube-music": "Sedang mendengarkan YouTube Music" "application": "Sedang mendengarkan {{applicationName}}"
} }
} }
}, },

View File

@ -201,8 +201,8 @@
"restart": "Endurræstu Forritið", "restart": "Endurræstu Forritið",
"show": "Sýna glugga", "show": "Sýna glugga",
"tooltip": { "tooltip": {
"default": "YouTube Tónlist", "default": "{{applicationName}}",
"with-song-info": "YouTube Tónlist: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -331,11 +331,11 @@
"name": "Þoka Leiðsagnarstika" "name": "Þoka Leiðsagnarstika"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Framhjá aldursstaðfestingu YouTube", "description": "Framhjá aldursstaðfestingu Music Player",
"name": "Farið Framhjá Aldurstakmörkunum" "name": "Farið Framhjá Aldurstakmörkunum"
}, },
"captions-selector": { "captions-selector": {
"description": "Skjátextavali fyrir YouTube Tónlist hljóðrásir", "description": "Skjátextavali fyrir {{applicationName}} hljóðrásir",
"menu": { "menu": {
"autoload": "Veldu sjálfkrafa síðast notaða myndatexta", "autoload": "Veldu sjálfkrafa síðast notaða myndatexta",
"disable-captions": "Engir skjátextar sjálfgefið" "disable-captions": "Engir skjátextar sjálfgefið"
@ -400,7 +400,7 @@
"disconnected": "Aftengt", "disconnected": "Aftengt",
"hide-duration-left": "Fela tímalengd til vinstri", "hide-duration-left": "Fela tímalengd til vinstri",
"hide-github-button": "Fela GitHub tengilhnapp", "hide-github-button": "Fela GitHub tengilhnapp",
"play-on-youtube-music": "Spilaðu á YouTube Tónlist", "play-on-application": "Spilaðu á {{applicationName}}",
"set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni" "set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni"
}, },
"name": "Discord Rík Nærvera", "name": "Discord Rík Nærvera",

View File

@ -154,7 +154,7 @@
"label": "Personalizza titolo finestra", "label": "Personalizza titolo finestra",
"prompt": { "prompt": {
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)", "label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
"placeholder": "Esempio: YouTube Music" "placeholder": "Esempio: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Riavvia l'app", "restart": "Riavvia l'app",
"show": "Mostra finestra", "show": "Mostra finestra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Abilita tematizzazione della seekbar"
}, },
"name": "Tema abbinato a colore album" "name": "Tema abbinato a colore album"
}, },
@ -287,7 +288,7 @@
"name": "Modalità Ambiente" "name": "Modalità Ambiente"
}, },
"amuse": { "amuse": {
"description": "Aggiunge il supporto a YouTube Music per il widget Amuse Now Playing di 6K Labs", "description": "Aggiunge il supporto a {{applicationName}} per il widget Amuse Now Playing di 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani." "query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Hostname" "label": "Hostname"
}, },
"https": {
"label": "HTTPS & Certificati",
"submenu": {
"cert": {
"dialogTitle": "Seleziona file di certificato HTTPS",
"label": "File di certificato (.crt/.pem)"
},
"enable-https": {
"label": "Abilita HTTPS"
},
"key": {
"dialogTitle": "Seleziona il file della chiave privata HTTPS",
"label": "File della chiave privata (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Porta" "label": "Porta"
} }
@ -369,11 +386,11 @@
"name": "Barra di navigazione trasparente" "name": "Barra di navigazione trasparente"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypassa la verifica dell'età di YouTube", "description": "Bypassa la verifica dell'età di Music Player",
"name": "Aggira i limiti d'età" "name": "Aggira i limiti d'età"
}, },
"captions-selector": { "captions-selector": {
"description": "Selettore sottotitolo per le tracce audio di YouTube", "description": "Selettore sottotitolo per le tracce audio di {{applicationName}}",
"menu": { "menu": {
"autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato", "autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato",
"disable-captions": "Disattiva i sottotitoli" "disable-captions": "Disattiva i sottotitoli"
@ -456,14 +473,14 @@
"disconnected": "Disconnesso", "disconnected": "Disconnesso",
"hide-duration-left": "Nascondi la durata rimasta", "hide-duration-left": "Nascondi la durata rimasta",
"hide-github-button": "Nascondi il pulsante link a GitHub", "hide-github-button": "Nascondi il pulsante link a GitHub",
"play-on-youtube-music": "Riproduci su YouTube Music", "play-on-application": "Riproduci su {{applicationName}}",
"set-inactivity-timeout": "Imposta il timeout di inattività", "set-inactivity-timeout": "Imposta il timeout di inattività",
"set-status-display-type": { "set-status-display-type": {
"label": "Testo dello status", "label": "Testo dello status",
"submenu": { "submenu": {
"application": "Ascoltando {{applicationName}}",
"artist": "Stai ascoltando {artist}", "artist": "Stai ascoltando {artist}",
"title": "Stai ascoltando {song title}", "title": "Stai ascoltando {song title}"
"youtube-music": "Ascoltando YouTube Music"
} }
} }
}, },
@ -866,7 +883,7 @@
}, },
"name": "Testi sincronizzati", "name": "Testi sincronizzati",
"refetch-btn": { "refetch-btn": {
"fetching": "Sto recuperando...", "fetching": "Caricamento...",
"normal": "Recupera i testi" "normal": "Recupera i testi"
}, },
"warnings": { "warnings": {

View File

@ -154,7 +154,7 @@
"label": "カスタムウィンドウタイトル", "label": "カスタムウィンドウタイトル",
"prompt": { "prompt": {
"label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)", "label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)",
"placeholder": "例: YouTube Music" "placeholder": "例: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "アプリを再起動", "restart": "アプリを再起動",
"show": "ウィンドウを表示", "show": "ウィンドウを表示",
"tooltip": { "tooltip": {
"default": "YouTube ミュージック", "default": "{{applicationName}}",
"with-song-info": "YouTube ミュージック: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "アンビエント モード" "name": "アンビエント モード"
}, },
"amuse": { "amuse": {
"description": "6K LabsのAmuse再生中ウィジェットがYouTube Musicに対応しました", "description": "6K LabsのAmuse再生中ウィジェットが{{applicationName}}に対応しました",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。" "query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。"
@ -369,11 +369,11 @@
"name": "ナビゲーションバーの曇り効果" "name": "ナビゲーションバーの曇り効果"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "ユーチューブの年齢制限を迂回します", "description": "音楽プレーヤーの年齢確認をバイパスする",
"name": "年齢制限迂回" "name": "年齢制限迂回"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Musicトラック用字幕選択機", "description": "{{applicationName}}トラック用字幕選択機",
"menu": { "menu": {
"autoload": "最後の字幕を自動に選択", "autoload": "最後の字幕を自動に選択",
"disable-captions": "デフォルトで字幕を無効化" "disable-captions": "デフォルトで字幕を無効化"
@ -456,14 +456,14 @@
"disconnected": "切断済み", "disconnected": "切断済み",
"hide-duration-left": "残りの再生時間を隠す", "hide-duration-left": "残りの再生時間を隠す",
"hide-github-button": "GitHubリンクボタンを隠す", "hide-github-button": "GitHubリンクボタンを隠す",
"play-on-youtube-music": "YouTube Musicで再生", "play-on-application": "{{applicationName}}で再生",
"set-inactivity-timeout": "タイムアウト時間を設定", "set-inactivity-timeout": "タイムアウト時間を設定",
"set-status-display-type": { "set-status-display-type": {
"label": "ステータステキスト", "label": "ステータステキスト",
"submenu": { "submenu": {
"artist": "{artist}を聴いている", "artist": "{artist}を聴いている",
"title": "{曲名}を聴いている", "application": "{{applicationName}}を聴く",
"youtube-music": "YouTube Musicを聴く" "title": "{曲名}を聴いている"
} }
} }
}, },

View File

@ -2,7 +2,7 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "პლაგინის დაყენების შეცდომა {{pluginName}}::{{contextName}}", "execute-failed": "დამატების შესრულების შეცდომა {{pluginName}}::{{contextName}}",
"executed-at-ms": "პლაგინი {{pluginName}}::{{contextName}} გაეშვა {{ms}} მილიწამში", "executed-at-ms": "პლაგინი {{pluginName}}::{{contextName}} გაეშვა {{ms}} მილიწამში",
"initialize-failed": "პლაგინის ინიციალიზაცია ვერ მოხდა\"{{pluginName}}\"", "initialize-failed": "პლაგინის ინიციალიზაცია ვერ მოხდა\"{{pluginName}}\"",
"load-all": "იტვირთება ყველა პლაგინი", "load-all": "იტვირთება ყველა პლაგინი",
@ -37,26 +37,45 @@
}, },
"when-ready": { "when-ready": {
"clearing-cache-after-20s": "აპლიკაციის ქეშის გაწმენდვა" "clearing-cache-after-20s": "აპლიკაციის ქეშის გაწმენდვა"
},
"window": {
"tried-to-render-offscreen": "ფანჯარამ სცადა, ეკრანსმიღმა გახსნილიყო, ფანჯრის ზომა={{windowSize}}, ეკრანის ზომა={{displaySize}}, მდებარეობა={{position}}"
} }
}, },
"dialog": { "dialog": {
"hide-menu-enabled": {
"detail": "მენიუ დამალულია, გამოიყენეთ 'Alt', რათა გამოაჩინოთ ის (ან 'Escape' თუ იყენებთ აპლიკაციის შიგნითა მენიუს)",
"message": "მენიუს დამალვა ჩართულია",
"title": "მენიუს დამალვა ჩართულია"
},
"need-to-restart": { "need-to-restart": {
"buttons": { "buttons": {
"later": "მოგვიანებით" "later": "მოგვიანებით",
} "restart-now": "გადატვირთვა ახლავე"
},
"detail": "„{{pluginName}}“ დანამატის ძალაში შესასვლელად გადატვირთვა საჭიროა",
"message": "\"{{pluginName}}\" საჭიროებს გადატვირთვას",
"title": "საჭიროებს გადატვირთვას"
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
"quit": "გასვლა", "quit": "გასვლა",
"relaunch": "თავიდან გაშვება", "relaunch": "თავიდან გაშვება",
"wait": "მოცდა" "wait": "მოცდა"
} },
"detail": "ბოდიშს გიხდით მოუხერხელობისათვის! გთხოვთ აირჩიეთ რა უნდა გაკეთდეს:",
"message": "აპლიკაცია არ პასუხობს",
"title": "ფანჯარა არ პასუხობს"
}, },
"update-available": { "update-available": {
"buttons": { "buttons": {
"disable": "განახლებების გამორთვა",
"download": "გადმოწერა", "download": "გადმოწერა",
"ok": "დიახ" "ok": "დიახ"
} },
"detail": "ახალი ვერსიაა ხელმისაწვდომი, მისი ჩამოტვირთვა შესაძლებელია {{downloadLink}}-დან",
"message": "ახალი ვერსია ხელმისაწვდომია",
"title": "განახლება ხელმისაწვდომია"
} }
}, },
"menu": { "menu": {
@ -64,19 +83,63 @@
"navigation": { "navigation": {
"label": "ნავიგაცია", "label": "ნავიგაცია",
"submenu": { "submenu": {
"quit": "გასვლა" "copy-current-url": "მიმდინარე URL-ის დაკოპირება",
"go-back": "უკან დაბრუნება",
"go-forward": "წინ გადასვლა",
"quit": "გასვლა",
"restart": "აპლიკაციის გადატვირთვა"
} }
}, },
"options": { "options": {
"label": "მორგება", "label": "მორგება",
"submenu": { "submenu": {
"language": { "advanced-options": {
"label": "ენა" "label": "გაფართოებული პარამეტრები",
"submenu": {
"auto-reset-app-cache": "აპლიკაციის ქეშის გადატვირთვა როცა აპლიკაცია დაიწყება",
"disable-hardware-acceleration": "აპარატურული აჩქარების გამორთვა",
"edit-config-json": "config.json-ის რედაქტირება",
"override-user-agent": "მომხმარებლის აგენტის შეცვლა",
"restart-on-config-changes": "გადატვირთვა კონფიგურაციის ცვლილებების დროს",
"set-proxy": {
"label": "პროქსის დაყენება",
"prompt": {
"label": "შეიყვანეთ პროქსის მისამართი: (გამორთვისთვის დატოვეთ ცარიელი)",
"placeholder": "მაგალითი: SOCKS5://127.0.0.1:9999",
"title": "პროქსის დაყენება"
}
},
"toggle-dev-tools": "DevTools-ის გადართვა"
}
}, },
"always-on-top": "მუდამ ზემოთ",
"auto-update": "ავტომატური განახლება",
"hide-menu": {
"dialog": {
"message": "მენიუ შემდეგი გაშვებისას დაიმალება, მის საჩვენებლად გამოიყენეთ [Alt] (ან თუ აპლიკაციის მენიუს იყენებთ, უკან დააწკაპუნეთ [`])",
"title": "მენიუს დამალვა ჩაირთო"
},
"label": "მენიუს დამალვა"
},
"language": {
"dialog": {
"message": "გადატვირთვის შემდეგ ენა შეიცვლება",
"title": "ენა შეიცვალა"
},
"label": "ენა",
"submenu": {
"to-help-translate": "გსურთ დაგვეხმაროთ თარგმნაში? დააწკაპუნეთ აქ"
}
},
"resume-on-start": "აპლიკაციის თავიდან გაშვებისას ბოლო სიმღერა დაუკრას",
"single-instance-lock": "ერთჯერადი ინსტანციის საკეტი",
"start-at-login": "შესვლაზე დაწყება",
"starting-page": { "starting-page": {
"label": "საწყისი გვერდი",
"unset": "მოხსნა" "unset": "მოხსნა"
}, },
"tray": { "tray": {
"label": "უჯრა",
"submenu": { "submenu": {
"disabled": "გამორთულია" "disabled": "გამორთულია"
} }
@ -156,11 +219,15 @@
"submenu": { "submenu": {
"percent": "{{size}}%" "percent": "{{size}}%"
} }
},
"use-fullscreen": {
"label": "სრული ეკრანის გამოყენება"
} }
} },
"name": "გარემოს რეჟიმი"
}, },
"amuse": { "amuse": {
"name": "Amuse" "name": "გაკვირვება"
}, },
"api-server": { "api-server": {
"dialog": { "dialog": {
@ -261,6 +328,13 @@
"status": { "status": {
"disconnected": "გათიშული" "disconnected": "გათიშული"
} }
},
"toast": {
"closed": "Music Together-ის ორგანიზატორი დაიხურა",
"disconnected": "Music Together-ის კავშირი გათიშულია",
"host-failed": "Music Together-ის გამოცხადება ვერ მოხერხდა",
"id-copied": "გამოსაცხადებელი ID დაკოპირებულია ბუფერში",
"id-copy-failed": "გამოსაცხადებელი ID-ის ვერ დაკოპირდა ბუფერში"
} }
}, },
"navigation": { "navigation": {
@ -303,6 +377,30 @@
} }
} }
} }
},
"video-toggle": {
"menu": {
"mode": {
"label": "რეჟიმი",
"submenu": {
"custom": "მორგებული გადამრთველი",
"disabled": "გამორთულია",
"native": "ადგილობრივი გადართვა"
}
}
},
"name": "ვიდეოს გადართვა",
"templates": {
"button-song": "სიმღერა",
"button-video": "ვიდეო"
}
},
"visualizer": {
"description": "პლეიერს ვიზუალიზატორს უმატებს",
"menu": {
"visualizer-type": "ვიზუალიზატორის ტიპი"
},
"name": "ვიზუალიზატორი"
} }
} }
} }

View File

@ -0,0 +1 @@
{}

View File

@ -154,7 +154,7 @@
"label": "사용자 정의 앱 제목", "label": "사용자 정의 앱 제목",
"prompt": { "prompt": {
"label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)", "label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)",
"placeholder": "예: YouTube Music" "placeholder": "예: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -171,7 +171,7 @@
"remove": "제거" "remove": "제거"
}, },
"remove-theme": "사용자 정의 테마를 제거하시겠습니까?", "remove-theme": "사용자 정의 테마를 제거하시겠습니까?",
"remove-theme-message": "사용자 정의 테마를 제거하시겠습니까?" "remove-theme-message": "이 설정을 변경하면 커스텀 테마가 삭제됩니다"
}, },
"label": "테마", "label": "테마",
"submenu": { "submenu": {
@ -208,8 +208,8 @@
"restart": "앱 재시작", "restart": "앱 재시작",
"show": "창 표시", "show": "창 표시",
"tooltip": { "tooltip": {
"default": "유튜브 뮤직", "default": "{{applicationName}}",
"with-song-info": "유튜브 뮤직: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "재생바 색조 변경 활성화"
}, },
"name": "앨범 컬러 기반 테마" "name": "앨범 컬러 기반 테마"
}, },
@ -287,8 +288,8 @@
"name": "앰비언트 모드" "name": "앰비언트 모드"
}, },
"amuse": { "amuse": {
"description": "6K Labs Amuse의 'now playing' 위젯에 YouTube Music 지원 추가", "description": "6K Labs Amuse의 'now playing' 위젯에 {{applicationName}} 지원 추가",
"name": "Amuse", "name": "Amuseio AB",
"response": { "response": {
"query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요." "query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요."
} }
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "호스트 명" "label": "호스트 명"
}, },
"https": {
"label": "HTTPS 및 인증서",
"submenu": {
"cert": {
"dialogTitle": "HTTPS 인증서 파일을 선택해 주세요",
"label": "인증서 파일(.crt/.pem)"
},
"enable-https": {
"label": "HTTPS 활성화"
},
"key": {
"dialogTitle": "HTTPS 개인 키 파일을 선택해 주세요",
"label": "개인 키 파일(.key/.pem)"
}
}
},
"port": { "port": {
"label": "포트" "label": "포트"
} }
@ -369,11 +386,11 @@
"name": "탐색 바 흐림 효과" "name": "탐색 바 흐림 효과"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "유튜브의 나이 제한을 우회합니다", "description": "음악 플레이어의 연령 확인 우회합니다",
"name": "나이 제한 우회" "name": "나이 제한 우회"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music 트랙용 자막 선택기입니다", "description": "{{applicationName}} 트랙용 자막 선택기입니다",
"menu": { "menu": {
"autoload": "마지막으로 사용한 자막을 자동으로 선택", "autoload": "마지막으로 사용한 자막을 자동으로 선택",
"disable-captions": "기본 자막 제거" "disable-captions": "기본 자막 제거"
@ -456,14 +473,14 @@
"disconnected": "연결 해제 됨", "disconnected": "연결 해제 됨",
"hide-duration-left": "남은 재생 시간 숨기기", "hide-duration-left": "남은 재생 시간 숨기기",
"hide-github-button": "GitHub 링크 버튼 숨기기", "hide-github-button": "GitHub 링크 버튼 숨기기",
"play-on-youtube-music": "유튜브 뮤직에서 재생", "play-on-application": "{{applicationName}} 에서 재생",
"set-inactivity-timeout": "비활성 시간 제한 설정", "set-inactivity-timeout": "비활성 시간 제한 설정",
"set-status-display-type": { "set-status-display-type": {
"label": "상태 텍스트", "label": "상태 텍스트",
"submenu": { "submenu": {
"application": "{{applicationName}} 듣는 중",
"artist": "{아티스트} 듣는 중", "artist": "{아티스트} 듣는 중",
"title": "{곡 제목} 듣는 중", "title": "{곡 제목} 듣는 중"
"youtube-music": "YouTube Music 듣는 중"
} }
} }
}, },

View File

@ -150,6 +150,13 @@
"visual-tweaks": { "visual-tweaks": {
"label": "Vizualiniai patobulinimai", "label": "Vizualiniai patobulinimai",
"submenu": { "submenu": {
"custom-window-title": {
"label": "Pasirinktinis lango pavadinimas",
"prompt": {
"label": "Įveskite pasirinktinį lango pavadinimą: (palikite tuščią, jei norite išjungti)",
"placeholder": "Pavyzdys: {{applicationName}}"
}
},
"like-buttons": { "like-buttons": {
"default": "Numatytasis", "default": "Numatytasis",
"force-show": "Priversti rodyti", "force-show": "Priversti rodyti",
@ -201,8 +208,8 @@
"restart": "Perkrauti programą", "restart": "Perkrauti programą",
"show": "Rodyti langą", "show": "Rodyti langą",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +287,7 @@
"name": "Aplinkos rėžimas" "name": "Aplinkos rėžimas"
}, },
"amuse": { "amuse": {
"description": "Prideda Youtube Muzika palaikyma Amuse grojimo valdikliui pagal 6K Labs", "description": "Prideda {{applicationName}} palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"name": "Amuse (Platforma Dainininkams)", "name": "Amuse (Platforma Dainininkams)",
"response": { "response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija." "query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija."
@ -338,11 +345,11 @@
"name": "Sulieti Navigacijos Lentą" "name": "Sulieti Navigacijos Lentą"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apeiti \"Youtube\" amžiaus patikrinimą", "description": "Apeiti \"Music Player\" amžiaus patikrinimą",
"name": "Apeiti Amžiaus Apribojimus" "name": "Apeiti Amžiaus Apribojimus"
}, },
"captions-selector": { "captions-selector": {
"description": "„YouTube Music“ Garso takelių antraščių parinkiklis", "description": "„{{applicationName}}“ Garso takelių antraščių parinkiklis",
"menu": { "menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę", "autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės" "disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės"
@ -357,6 +364,10 @@
}, },
"templates": { "templates": {
"title": "Atidaryti antraščių parinkiklį" "title": "Atidaryti antraščių parinkiklį"
},
"toast": {
"caption-changed": "Subtitrai pakeisti į {{language}}",
"caption-disabled": "Subtitrai išjungti"
} }
}, },
"compact-sidebar": { "compact-sidebar": {
@ -385,6 +396,17 @@
} }
} }
}, },
"custom-output-device": {
"menu": {
"device-selector": "Pasirinkti įrenginį"
},
"name": "Pasirinktinas išvesties įrenginys",
"prompt": {
"device-selector": {
"title": "Pasirinkite išvesties įrenginį"
}
}
},
"disable-autoplay": { "disable-autoplay": {
"description": "Pradeda dainą pristabdytame rėžime", "description": "Pradeda dainą pristabdytame rėžime",
"menu": { "menu": {
@ -407,8 +429,15 @@
"disconnected": "Atsijungta", "disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko", "hide-duration-left": "Slėpti kiek liko laiko",
"hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką", "hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką",
"play-on-youtube-music": "Leisti ant \"Youtube Music\"", "play-on-application": "Leisti ant \"{{applicationName}}\"",
"set-inactivity-timeout": "Nustatyti neveiklumo laiką" "set-inactivity-timeout": "Nustatyti neveiklumo laiką",
"set-status-display-type": {
"submenu": {
"application": "Klausosi {{applicationName}}",
"artist": "Klausosi {artist]",
"title": "Klausosi {song title}"
}
}
}, },
"name": "\"Discord\" Turtingas Buvimas (Rich Presence)", "name": "\"Discord\" Turtingas Buvimas (Rich Presence)",
"prompt": { "prompt": {
@ -464,6 +493,19 @@
"description": "Atsisiunčia MP3 / šaltinio garsą tiesiogiai iš sąsajos", "description": "Atsisiunčia MP3 / šaltinio garsą tiesiogiai iš sąsajos",
"menu": { "menu": {
"choose-download-folder": "Pasirinkti atsisiuntimų aplanką", "choose-download-folder": "Pasirinkti atsisiuntimų aplanką",
"download-finish-settings": {
"prompt": {
"last-percent": "Po x procentų",
"last-seconds": "Paskutinės x sekundės",
"title": "Nustatyti kada atsisiųsti"
},
"submenu": {
"enabled": "Įjungtas",
"mode": "Laiko rėžimas",
"percent": "Procentai",
"seconds": "Sekundės"
}
},
"download-playlist": "Atsisiųsti grojaraštį", "download-playlist": "Atsisiųsti grojaraštį",
"presets": "Iš anksto nustatyti nustatymai", "presets": "Iš anksto nustatyti nustatymai",
"skip-existing": "Praleisti egzistuojančius failus" "skip-existing": "Praleisti egzistuojančius failus"
@ -476,6 +518,13 @@
"button": "Atsisiųsti" "button": "Atsisiųsti"
} }
}, },
"equalizer": {
"menu": {
"presets": {
"label": "Išankstiniai nustatymai"
}
}
},
"exponential-volume": { "exponential-volume": {
"description": "Padaro garsumo slankiklį eksponentinį, kad būtų lengviau pasirinkti mažesnį garsumą.", "description": "Padaro garsumo slankiklį eksponentinį, kad būtų lengviau pasirinkti mažesnį garsumą.",
"name": "Eksponentinis garsas" "name": "Eksponentinis garsas"
@ -512,7 +561,20 @@
"unknown-user": "Nežinomas Naudotojas" "unknown-user": "Nežinomas Naudotojas"
}, },
"menu": { "menu": {
"click-to-copy-id": "Kopijuoti Vedėjo ID" "click-to-copy-id": "Kopijuoti Vedėjo ID",
"permission": {
"all": "Leisti svečiams valdyti grojaraštį ir grotuvą",
"playlist": "Leisti svečiams valdyti grojaraštį"
},
"set-permission": "Keisti valdymo leidimus",
"status": {
"disconnected": "Atsijungta",
"guest": "Prisijungta kaip svečias"
}
},
"toast": {
"add-song-failed": "Nepavyko pridėti dainos",
"remove-song-failed": "Nepavyko pašalinti dainos"
} }
}, },
"navigation": { "navigation": {
@ -607,6 +669,17 @@
"description": "Leidžia pakeisti vaizdo kokybę su mygtuku ant vaizdo perdangos", "description": "Leidžia pakeisti vaizdo kokybę su mygtuku ant vaizdo perdangos",
"name": "Vaizdo Kokybės Pakeitėjas" "name": "Vaizdo Kokybės Pakeitėjas"
}, },
"scrobbler": {
"menu": {
"scrobble-alternative-artist": "Naudoti alternatyvius atlikėjus",
"scrobble-alternative-title": "Naudoti alternatyvius pavadinimus"
},
"prompt": {
"lastfm": {
"api-key": "Last.fm API raktas"
}
}
},
"shortcuts": { "shortcuts": {
"description": "Leidžia nustatyti visuotinius atkūrimo sparčiuosius klavišus (paleisti / pristabdyti / kitą / ankstesnį) ir išjungti medijos OSD nepaisant medijos klavišų, įjungti Ctrl / CMD + F ieškoti, įjungti Linux MPRIS palaikymą medijos klavišams ir pasirinktinius sparčiuosius klavišus pažengusiems vartotojams.", "description": "Leidžia nustatyti visuotinius atkūrimo sparčiuosius klavišus (paleisti / pristabdyti / kitą / ankstesnį) ir išjungti medijos OSD nepaisant medijos klavišų, įjungti Ctrl / CMD + F ieškoti, įjungti Linux MPRIS palaikymą medijos klavišams ir pasirinktinius sparčiuosius klavišus pažengusiems vartotojams.",
"menu": { "menu": {
@ -639,6 +712,11 @@
"name": "Rėmėjų blokuotojas" "name": "Rėmėjų blokuotojas"
}, },
"synced-lyrics": { "synced-lyrics": {
"description": "Teikia sinchronizuotus dainų žodžius, naudojantis tiekėjais kaip LRClib.",
"errors": {
"fetch": "⚠️\t\tĮvyko klaida gaunant dainos žodžius.\n\tPabandykite dar karta vėliau.",
"not-found": "⚠️ Šiai dainai nerasti dainos tekstai."
},
"refetch-btn": { "refetch-btn": {
"fetching": "Gaunama...", "fetching": "Gaunama...",
"normal": "Atgauti dainos žodžius" "normal": "Atgauti dainos žodžius"

View File

@ -150,13 +150,20 @@
"visual-tweaks": { "visual-tweaks": {
"label": "Vizuāli Iestatījumi", "label": "Vizuāli Iestatījumi",
"submenu": { "submenu": {
"custom-window-title": {
"label": "Pielāgots loga nosaukums",
"prompt": {
"label": "Ievadiet pielāgotu loga nosaukumu: (atstājiet tukšu, lai atspējotu)",
"placeholder": "Piemērs: Pear mūzika"
}
},
"like-buttons": { "like-buttons": {
"default": "Noklusējums", "default": "Noklusējums",
"force-show": "Vienmēr rādīt", "force-show": "Vienmēr rādīt",
"hide": "Paslēpt", "hide": "Paslēpt",
"label": "Like pogas" "label": "Like pogas"
}, },
"remove-upgrade-button": "Noslēpt YouTube Premium pogu", "remove-upgrade-button": "Noslēpt Premium pogu",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -201,8 +208,8 @@
"restart": "Restartēt Lietotni", "restart": "Restartēt Lietotni",
"show": "Rādīt logu", "show": "Rādīt logu",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +287,7 @@
"name": "Ambientais Režīms" "name": "Ambientais Režīms"
}, },
"amuse": { "amuse": {
"description": "Pievieno YouTube Music atblastu priekš Amuse \"tagad spēlē\" no 6K Labs", "description": "Pievieno {{applicationName}} atblastu priekš Amuse \"tagad spēlē\" no 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info." "query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info."
@ -362,11 +369,11 @@
"name": "Izplūdusi Navigācijas Josla" "name": "Izplūdusi Navigācijas Josla"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apiet YouTube vecuma pārbaudi", "description": "Apiet Music Player vecuma pārbaudi",
"name": "Apiet Vecuma Ierobežojumus" "name": "Apiet Vecuma Ierobežojumus"
}, },
"captions-selector": { "captions-selector": {
"description": "Subtitru izvēlne priekš YouTube Music audio ceļiem", "description": "Subtitru izvēlne priekš {{applicationName}} audio ceļiem",
"menu": { "menu": {
"autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus", "autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus",
"disable-captions": "Bez subtitriem pēc noklusējuma" "disable-captions": "Bez subtitriem pēc noklusējuma"
@ -414,6 +421,19 @@
} }
} }
}, },
"custom-output-device": {
"description": "Pielāgotas izvades multivides ierīces konfigurēšana dziesmām",
"menu": {
"device-selector": "Izvēlieties ierīci"
},
"name": "Pielāgota izvades ierīce",
"prompt": {
"device-selector": {
"label": "Izvēlieties izmantojamo izvades multivides ierīci",
"title": "Izvēlieties izvades ierīci"
}
}
},
"disable-autoplay": { "disable-autoplay": {
"description": "Palaiž dziesmu nopauzētu", "description": "Palaiž dziesmu nopauzētu",
"menu": { "menu": {
@ -436,8 +456,15 @@
"disconnected": "Atvienojies", "disconnected": "Atvienojies",
"hide-duration-left": "Paslēpt cik palika laika", "hide-duration-left": "Paslēpt cik palika laika",
"hide-github-button": "Paslēpt GitHub saites pogu", "hide-github-button": "Paslēpt GitHub saites pogu",
"play-on-youtube-music": "Atskaņot uz YouTube Music", "play-on-application": "Atskaņot uz {{applicationName}}",
"set-inactivity-timeout": "Iestatīt neaktivitātes taimeru" "set-inactivity-timeout": "Iestatīt neaktivitātes taimeru",
"set-status-display-type": {
"label": "Statusa teksts",
"submenu": {
"artist": "Klausos {mākslinieku}",
"title": "Klausos {dziesmas nosaukums}"
}
}
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",
"prompt": { "prompt": {
@ -485,9 +512,114 @@
"playlist-is-mix-or-private": "Neizdevās iegūt atskaņošanas saraksta informāciju: pārliecinieties, ka tas nav privāts vai \"Jums izveidotā izlase\" saraksts.\n\n{{error}}", "playlist-is-mix-or-private": "Neizdevās iegūt atskaņošanas saraksta informāciju: pārliecinieties, ka tas nav privāts vai \"Jums izveidotā izlase\" saraksts.\n\n{{error}}",
"preparing-file": "Faila sagatavošana…", "preparing-file": "Faila sagatavošana…",
"saving": "Saglabāšana…", "saving": "Saglabāšana…",
"trying-to-get-playlist-id": "Mēģinu iegūt atskaņošanas saraksta ID: {{playlistId}}",
"video-id-not-found": "Video nav atrasts", "video-id-not-found": "Video nav atrasts",
"writing-id3": "Rakstam ID3 tegus…" "writing-id3": "Rakstam ID3 tegus…"
} }
},
"description": "Lejupielādē MP3/avota audio tieši no saskarnes",
"menu": {
"choose-download-folder": "Izvēlieties lejupielādes mapi",
"download-finish-settings": {
"label": "Lejupielādēt pēc pabeigšanas",
"prompt": {
"last-percent": "Pēc x procentiem",
"last-seconds": "Pēdējās x sekundes",
"title": "Konfigurējiet lejupielādes laiku"
},
"submenu": {
"advanced": "Paplašināts",
"enabled": "Iespējots",
"mode": "Laika režīms",
"percent": "Procenti",
"seconds": "Sekundes"
}
},
"download-playlist": "Lejupielādēt atskaņošanas sarakstu",
"presets": "Iepriekšiestatījumi",
"skip-existing": "Izlaist esošos failus"
},
"name": "Lejupielādētājs",
"renderer": {
"can-not-update-progress": "Nevar atjaunināt progresu"
},
"templates": {
"button": "Lejupielādēt"
}
},
"equalizer": {
"description": "Pievieno atskaņotājam ekvalaizeru",
"menu": {
"presets": {
"label": "Iepriekšiestatījumi",
"list": {
"bass-booster": "Basu pastiprinātājs"
}
}
},
"name": "Ekvalaizers"
},
"exponential-volume": {
"description": "Padara skaļuma slīdni eksponenciālu, lai būtu vieglāk izvēlēties zemākus skaļumus.",
"name": "Eksponenciālais apjoms"
},
"in-app-menu": {
"description": "Piešķir izvēļņu joslām greznu, tumšu vai albuma krāsas izskatu",
"menu": {
"hide-dom-window-controls": "Slēpt DOM loga vadīklas"
},
"name": "Lietotnes izvēlne"
},
"lumiastream": {
"description": "Pievieno Lumia Stream atbalstu",
"name": "Lumia Stream [Beta versija]"
},
"lyrics-genius": {
"description": "Pievieno dziesmu tekstu atbalstu lielākajai daļai dziesmu",
"menu": {
"romanized-lyrics": "Romanizēti dziesmu teksti"
},
"name": "Dziesmu vārdu ģēnijs",
"renderer": {
"fetched-lyrics": "Iegūti dziesmu vārdi priekš oriģināla"
}
},
"music-together": {
"description": "Kopīgojiet atskaņošanas sarakstu ar citiem. Kad vadītājs atskaņo dziesmu, visi pārējie dzirdēs to pašu dziesmu.",
"dialog": {
"enter-host": "Ievadiet resursdatora ID"
},
"internal": {
"save": "Saglabāt",
"track-source": "Dziesmas avots",
"unknown-user": "Nezināms lietotājs"
},
"menu": {
"click-to-copy-id": "Kopēt resursdatora ID",
"close": "Aizvērt mūziku kopā",
"connected-users": "Savienotie lietotāji",
"disconnect": "Atvienojiet mūziku kopā",
"empty-user": "Nav pievienotu lietotāju",
"host": "Kopklausīšanās vadītājs",
"join": "Pievienojieties mūzikai kopā",
"permission": {
"all": "Atļaut viesiem kontrolēt atskaņošanas sarakstu un atskaņotāju",
"host-only": "Tikai resursdators var kontrolēt atskaņošanas sarakstu un atskaņotāju",
"playlist": "Atļaut viesiem kontrolēt atskaņošanas sarakstu"
},
"set-permission": "Izmainīt kontroles piekļuvi",
"status": {
"disconnected": "Atvienots",
"guest": "Pieslēdzies kā viesis",
"host": "Pieslēdzies kā vadītājs"
}
},
"name": "Mūzika Kopā [Beta]",
"toast": {
"add-song-failed": "Neizdevās pievienot dziesmu",
"closed": "Mūzika Kopā slēgta",
"disconnected": "Mūzika Kopā atvienota",
"host-failed": "Neizdevās uzsākt Mūziku Kopā"
} }
} }
} }

View File

@ -27,7 +27,7 @@
"loaded": "i18n ലോഡ് ചെയ്തു" "loaded": "i18n ലോഡ് ചെയ്തു"
}, },
"second-instance": { "second-instance": {
"receive-command": "പ്രോട്ടോക്കോളിലൂടെ കമാൻഡ് ലഭിച്ചു : \"{{command}}\"" "receive-command": "പ്രോട്ടോക്കോളിലൂടെ കമാൻഡ് ലഭിച്ചു : \"{{command}}\""
}, },
"theme": { "theme": {
"css-file-not-found": "\"{{cssFile}}\" എന്ന CSS file നിലവിൽ ഇല്ല. ഉപേക്ഷിക്കുന്നു" "css-file-not-found": "\"{{cssFile}}\" എന്ന CSS file നിലവിൽ ഇല്ല. ഉപേക്ഷിക്കുന്നു"

View File

@ -53,7 +53,7 @@
"later": "Nanti", "later": "Nanti",
"restart-now": "Restart Sekarang" "restart-now": "Restart Sekarang"
}, },
"detail": "Plugin {{pluginName}} perlu dimulakan semula untuk berkuatkuasa", "detail": "\"{{pluginName}}\" plugin memerlukan mula semula untuk ambil keberkesanan",
"message": "\"{{pluginName}}\" perlu dimulakan semula", "message": "\"{{pluginName}}\" perlu dimulakan semula",
"title": "Mulakan Semula Diperlukan" "title": "Mulakan Semula Diperlukan"
}, },
@ -74,7 +74,7 @@
"ok": "OK" "ok": "OK"
}, },
"detail": "Versi baharu kini tersedia dan boleh dimuat turun di {{downloadLink}}", "detail": "Versi baharu kini tersedia dan boleh dimuat turun di {{downloadLink}}",
"message": "Versi baharu tersedia", "message": "Versi baharu kini tersedia",
"title": "Kemas Kini Tersedia" "title": "Kemas Kini Tersedia"
} }
}, },
@ -154,7 +154,7 @@
"label": "Tajuk tetingkap tersuai", "label": "Tajuk tetingkap tersuai",
"prompt": { "prompt": {
"label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)", "label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)",
"placeholder": "Contoh: YouTube Music" "placeholder": "Contoh: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Mulakan Semula Aplikasi", "restart": "Mulakan Semula Aplikasi",
"show": "Papar tetingkap", "show": "Papar tetingkap",
"tooltip": { "tooltip": {
"default": "YouTube Muzik", "default": "{{applicationName}}",
"with-song-info": "YouTube Muzik : {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mod Sekitaran" "name": "Mod Sekitaran"
}, },
"amuse": { "amuse": {
"description": "Menambahkan sokongan YouTube Music untuk widget sedang dimain Amuse oleh 6K Labs", "description": "Menambahkan sokongan {{applicationName}} untuk widget sedang dimain Amuse oleh 6K Labs",
"name": "Terhibur", "name": "Terhibur",
"response": { "response": {
"query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu." "query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu."
@ -369,11 +369,11 @@
"name": "Kaburkan Bar navigasi" "name": "Kaburkan Bar navigasi"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Pintas verifikasi umur Youtube", "description": "Pintas verifikasi umur Music Player",
"name": "Pintas Sekatan Umur" "name": "Pintas Sekatan Umur"
}, },
"captions-selector": { "captions-selector": {
"description": "Pemilih kapsyen untuk trek audio Youtube Music", "description": "Pemilih kapsyen untuk trek audio {{applicationName}}",
"menu": { "menu": {
"autoload": "Pilih kapsyen terakhir diguna secara automatik", "autoload": "Pilih kapsyen terakhir diguna secara automatik",
"disable-captions": "Tiada kapsyen secara lalai" "disable-captions": "Tiada kapsyen secara lalai"
@ -456,13 +456,14 @@
"disconnected": "Tidak disambungkan", "disconnected": "Tidak disambungkan",
"hide-duration-left": "Sembunyikan tempoh yang tinggal", "hide-duration-left": "Sembunyikan tempoh yang tinggal",
"hide-github-button": "Sembunyikan Butang pautan GitHub", "hide-github-button": "Sembunyikan Butang pautan GitHub",
"play-on-youtube-music": "Main di YouTube Music", "play-on-application": "Main di {{applicationName}}",
"set-inactivity-timeout": "Tetapkan tamat masa tidak aktif", "set-inactivity-timeout": "Tetapkan tamat masa tidak aktif",
"set-status-display-type": { "set-status-display-type": {
"label": "Teks status", "label": "Teks status",
"submenu": { "submenu": {
"artist": "Sedang mendengar {artist}", "artist": "Sedang mendengar {artist}",
"youtube-music": "Mendengar YouTube Music" "application": "Mendengar {{applicationName}}",
"title": "Sedang mendengar {tajuk lagu}"
} }
} }
}, },
@ -498,6 +499,7 @@
"converting": "Menukarkan…", "converting": "Menukarkan…",
"done": "Selesai: {{filePath}}", "done": "Selesai: {{filePath}}",
"download-info": "Memuat turun {{artist}} - {{title}} [{{videoId}}", "download-info": "Memuat turun {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Muat turun: {{percent}}%",
"downloading": "Memuat turun…", "downloading": "Memuat turun…",
"downloading-counter": "Memuat turun {{current}}/{{total}}…", "downloading-counter": "Memuat turun {{current}}/{{total}}…",
"downloading-playlist": "Memuat turun senarai main \"{{playlistTitle}}\" - {{playlistSize}} lagu ({{playlistId}})", "downloading-playlist": "Memuat turun senarai main \"{{playlistTitle}}\" - {{playlistSize}} lagu ({{playlistId}})",
@ -508,29 +510,67 @@
"playlist-has-only-one-song": "Senarai main hanya mempunyai satu item, memuat turunnya terus", "playlist-has-only-one-song": "Senarai main hanya mempunyai satu item, memuat turunnya terus",
"playlist-id-not-found": "ID senarai main tidak dijumpai", "playlist-id-not-found": "ID senarai main tidak dijumpai",
"playlist-is-empty": "Senarai main kosong", "playlist-is-empty": "Senarai main kosong",
"playlist-is-mix-or-private": "Ralat dalam mendapatkan senarai info main: pastikan ia tidak peribadi atau di dalam senarai main \"Campuran untuk anda\"\n\n{{error}}",
"preparing-file": "Menyediakan fail…",
"saving": "Menyimpan…", "saving": "Menyimpan…",
"trying-to-get-playlist-id": "Mencuba untuk mendapatkan ID senarai main: {{playlistId}}", "trying-to-get-playlist-id": "Mencuba untuk mendapatkan ID senarai main: {{playlistId}}",
"video-id-not-found": "Video tidak dijumpai" "video-id-not-found": "Video tidak dijumpai",
"writing-id3": "Sedang menulis tag ID3…"
} }
}, },
"description": "Memuat turun audio MP3 / sumber terus dari antara muka", "description": "Memuat turun audio MP3 / sumber terus dari antara muka",
"menu": { "menu": {
"choose-download-folder": "Pilih folder muat turun", "choose-download-folder": "Pilih folder muat turun",
"download-finish-settings": { "download-finish-settings": {
"label": "Muat turun selesai",
"prompt": { "prompt": {
"last-percent": "Selepas peratus x",
"last-seconds": "Saat x terakhir",
"title": "Konfigurasikan masa untuk memuat turun" "title": "Konfigurasikan masa untuk memuat turun"
}, },
"submenu": { "submenu": {
"advanced": "Lanjutan",
"enabled": "Dinyalakan", "enabled": "Dinyalakan",
"mode": "Mod masa", "mode": "Mod masa",
"percent": "Peratus", "percent": "Peratus",
"seconds": "Saat" "seconds": "Saat"
} }
}, },
"download-playlist": "Muat turun senarai main" "download-playlist": "Muat turun senarai main",
"presets": "Pratetap",
"skip-existing": "Langkau fail sedia ada"
},
"name": "Pemuat turun",
"renderer": {
"can-not-update-progress": "Tidak boleh memuat turun perkembangan"
},
"templates": {
"button": "Memuat turun"
} }
}, },
"equalizer": {
"description": "Menambahkan penyamaan kepada pemain",
"menu": {
"presets": {
"label": "Pratetap",
"list": {
"bass-booster": "Penggalak bass"
}
}
}
},
"exponential-volume": {
"description": "Menjadikan gelangsar kelantangan eksponen supaya lebih mudah memilih kelantangan yang lebih rendah."
},
"in-app-menu": {
"description": "Memberi bar menu rupa yang mewah, gelap atau warna album",
"menu": {
"hide-dom-window-controls": "Sembunyikan kawalan tetingkap DOM"
},
"name": "Menu Dalam Apl"
},
"lumiastream": { "lumiastream": {
"description": "Menambah sokongan Lumia Stream",
"name": "Lumia Stream [Beta]" "name": "Lumia Stream [Beta]"
}, },
"lyrics-genius": { "lyrics-genius": {
@ -545,15 +585,68 @@
}, },
"music-together": { "music-together": {
"description": "Kongsi senarai main dengan orang lain. Apabila hos memainkan lagu, semua orang akan mendengar lagu yang sama", "description": "Kongsi senarai main dengan orang lain. Apabila hos memainkan lagu, semua orang akan mendengar lagu yang sama",
"dialog": {
"enter-host": "Masukkan ID Hos"
},
"internal": { "internal": {
"save": "Simpan", "save": "Simpan",
"unknown-user": "Pengguna tidak diketahui" "unknown-user": "Pengguna tidak diketahui"
}, },
"menu": { "menu": {
"close": "Tutup Music Together" "click-to-copy-id": "Salin ID Hos",
"close": "Tutup Music Together",
"connected-users": "Pengguna yang telah berhubung",
"disconnect": "Putuskan Sambungan Music Together",
"empty-user": "Tiada pengguna yang disambungkan",
"host": "Hos Music Together",
"join": "Sertai Music Together",
"permission": {
"all": "Benarkan tetamu mengawal senarai main dan pemain",
"host-only": "Hanya hos boleh mengawal senarai main dan pemain",
"playlist": "Benarkan tetamu mengawal senarai main"
},
"set-permission": "Tukar Kebenaran Kawalan",
"status": {
"disconnected": "Terputus",
"guest": "Disambungkan sebagai Tetamu",
"host": "Disambungkan sebagai Hos"
}
},
"name": "Music Together [Beta]",
"toast": {
"add-song-failed": "Gagal menambah lagu",
"closed": "Music Together ditutup",
"disconnected": "Music Together terputus",
"host-failed": "Gagal untuk menjadi hos Music Together",
"id-copied": "ID hos disalin ke papan keratan",
"id-copy-failed": "Gagal menyalin ID Hos ke papan keratan"
}
},
"navigation": {
"name": "Navigasi"
},
"notifications": {
"name": "Notifikasi"
},
"scrobbler": {
"dialog": {
"lastfm": {
"auth-failed": {
"title": "Atuntikasi Gagal"
}
}
},
"prompt": {
"lastfm": {
"api-key": "kunci API Last.fm",
"api-secret": "rahasia API Last.fm"
}
} }
}, },
"synced-lyrics": { "synced-lyrics": {
"errors": {
"not-found": "⚠️ Tak ada liriks untuk lagu ini."
},
"menu": { "menu": {
"show-lyrics-even-if-inexact": { "show-lyrics-even-if-inexact": {
"label": "Tunjukkan lirik walaupun tidak tepat", "label": "Tunjukkan lirik walaupun tidak tepat",

View File

@ -257,11 +257,11 @@
"name": "Tilslør navigasjonsfelt" "name": "Tilslør navigasjonsfelt"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Omgå YouTube sin aldersgrenser", "description": "Omgå Music Player sin aldersgrenser",
"name": "Omgå aldersgrense" "name": "Omgå aldersgrense"
}, },
"captions-selector": { "captions-selector": {
"description": "Undertekstverktøy for lydspor i YouTube Music", "description": "Undertekstverktøy for lydspor i {{applicationName}}",
"menu": { "menu": {
"autoload": "Auto-velg sist brukte undertekst", "autoload": "Auto-velg sist brukte undertekst",
"disable-captions": "Ingen undertekst som forvalg" "disable-captions": "Ingen undertekst som forvalg"
@ -326,7 +326,7 @@
"disconnected": "Frakoblet", "disconnected": "Frakoblet",
"hide-duration-left": "Skjul gjenværende tid", "hide-duration-left": "Skjul gjenværende tid",
"hide-github-button": "Skjul GitHub-lenkeknapp", "hide-github-button": "Skjul GitHub-lenkeknapp",
"play-on-youtube-music": "Spill på YouTube Music", "play-on-application": "Spill på {{applicationName}}",
"set-inactivity-timeout": "Sett tid før tidsavbrudd" "set-inactivity-timeout": "Sett tid før tidsavbrudd"
}, },
"name": "Rik tilstedeværelse for Discord", "name": "Rik tilstedeværelse for Discord",

View File

@ -150,6 +150,13 @@
"visual-tweaks": { "visual-tweaks": {
"label": "भिजुअल ट्वीक्स", "label": "भिजुअल ट्वीक्स",
"submenu": { "submenu": {
"custom-window-title": {
"label": "अनुकूलन विन्डो शीर्षक",
"prompt": {
"label": "अनुकूलन विन्डो शीर्षक प्रविष्ट गर्नुहोस्: (असक्षम पार्न खाली छोड्नुहोस्)",
"placeholder": "उदाहरण: पियर डेस्कटप"
}
},
"like-buttons": { "like-buttons": {
"default": "पूर्वनिर्धारित", "default": "पूर्वनिर्धारित",
"force-show": "देखाउनुहोस", "force-show": "देखाउनुहोस",
@ -179,7 +186,7 @@
"plugins": { "plugins": {
"enabled": "सक्षम गरियो", "enabled": "सक्षम गरियो",
"label": "प्लगइनहरू", "label": "प्लगइनहरू",
"new": "NEW" "new": "नयाँ"
}, },
"view": { "view": {
"label": "हेर्नुहोस्", "label": "हेर्नुहोस्",
@ -201,8 +208,8 @@
"restart": "एप पुनः सुरु गर्नुहोस्", "restart": "एप पुनः सुरु गर्नुहोस्",
"show": "विन्डो देखाउनुहोस्", "show": "विन्डो देखाउनुहोस्",
"tooltip": { "tooltip": {
"default": "युट्युब मिउजिक", "default": "{{applicationName}}",
"with-song-info": "युट्युब मिउजिक:{{artist}}-{{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -436,7 +443,7 @@
"disconnected": "डिसकन्एक्टेड", "disconnected": "डिसकन्एक्टेड",
"hide-duration-left": "बाकी समय लुकाऊ", "hide-duration-left": "बाकी समय लुकाऊ",
"hide-github-button": "GitHub लिंक लुकाऊ", "hide-github-button": "GitHub लिंक लुकाऊ",
"play-on-youtube-music": "YouTube music मा बजाउ", "play-on-application": "{{applicationName}} मा बजाउ",
"set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख" "set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख"
}, },
"name": "डिसकार्ड रिच प्रीसेंस", "name": "डिसकार्ड रिच प्रीसेंस",

View File

@ -5,10 +5,10 @@
"execute-failed": "Mislukt om plugin {{pluginName}}::{{contextName}} uit te voeren", "execute-failed": "Mislukt om plugin {{pluginName}}::{{contextName}} uit te voeren",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms", "executed-at-ms": "Plugin {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
"initialize-failed": "Initialisatie van plugin \"{{pluginName}}\" mislukt", "initialize-failed": "Initialisatie van plugin \"{{pluginName}}\" mislukt",
"load-all": "Alle plugins laden", "load-all": "Alle plugins aan het laden",
"load-failed": "Mislukt om plugin \"{{pluginName}}\" te laden", "load-failed": "Mislukt om plugin \"{{pluginName}}\" te laden",
"loaded": "Plugin \"{{pluginName}}\" geladen", "loaded": "Plugin \"{{pluginName}}\" geladen",
"unload-failed": "Mislukt om plugin \"{{pluginName}}\" te lossen", "unload-failed": "Mislukt om plugin \"{{pluginName}}\" te ontladen",
"unloaded": "Plugin \"{{pluginName}}\" gelost" "unloaded": "Plugin \"{{pluginName}}\" gelost"
} }
} }
@ -154,7 +154,7 @@
"label": "Aangepaste venstertitel", "label": "Aangepaste venstertitel",
"prompt": { "prompt": {
"label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)", "label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)",
"placeholder": "Voorbeeld: Youtube Music" "placeholder": "Voorbeeld: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Herstarten App", "restart": "Herstarten App",
"show": "Weergeven Venster", "show": "Weergeven Venster",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Schakel thema's voor de schuifbalk in"
}, },
"name": "Albumkleurthema" "name": "Albumkleurthema"
}, },
@ -287,7 +288,7 @@
"name": "Omgevingsmodus" "name": "Omgevingsmodus"
}, },
"amuse": { "amuse": {
"description": "Voegt YouTube Music ondersteuning toe voor de Amuse now playing widget van 6K Labs", "description": "Voegt {{applicationName}} ondersteuning toe voor de Amuse now playing widget van 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API server loopt. Gebruik /query voor nummer informatie." "query": "Amuse API server loopt. Gebruik /query voor nummer informatie."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Hostnaam" "label": "Hostnaam"
}, },
"https": {
"label": "HTTPS & Certificaten",
"submenu": {
"cert": {
"dialogTitle": "Selecteer HTTPS certificaat",
"label": "Certificaatbestand (.crt/.pem)"
},
"enable-https": {
"label": "HTTPS aanzetten"
},
"key": {
"dialogTitle": "Selecteer HTTPS privésleutel",
"label": "Privésleutelbestand (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Poort" "label": "Poort"
} }
@ -369,11 +386,11 @@
"name": "Vervagen Navigatiebalk" "name": "Vervagen Navigatiebalk"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Omzeil de leeftijdsverificatie van YouTube", "description": "Omzeil de leeftijdsverificatie van Music Player",
"name": "Leeftijdsbeperkingen Omzeilen" "name": "Leeftijdsbeperkingen Omzeilen"
}, },
"captions-selector": { "captions-selector": {
"description": "Ondertitelkeuze voor YouTube Music-audiotracks", "description": "Ondertitelkeuze voor {{applicationName}}-audiotracks",
"menu": { "menu": {
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren", "autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
"disable-captions": "Standaard geen ondertitels" "disable-captions": "Standaard geen ondertitels"
@ -456,14 +473,14 @@
"disconnected": "Verbinding verbroken", "disconnected": "Verbinding verbroken",
"hide-duration-left": "Verberg resterende tijd", "hide-duration-left": "Verberg resterende tijd",
"hide-github-button": "GitHub-knop verbergen", "hide-github-button": "GitHub-knop verbergen",
"play-on-youtube-music": "Afspelen op YouTube Music", "play-on-application": "Afspelen op {{applicationName}}",
"set-inactivity-timeout": "Inactiviteitstime-out instellen", "set-inactivity-timeout": "Inactiviteitstime-out instellen",
"set-status-display-type": { "set-status-display-type": {
"label": "Status tekst", "label": "Status tekst",
"submenu": { "submenu": {
"application": "Naar {{applicationName}} aan het luisteren",
"artist": "Naar {artist} aan het luisteren", "artist": "Naar {artist} aan het luisteren",
"title": "Naar {song title} aan het luisteren", "title": "Naar {song title} aan het luisteren"
"youtube-music": "Naar Youtube Music aan het luisteren"
} }
} }
}, },

View File

@ -153,8 +153,8 @@
"custom-window-title": { "custom-window-title": {
"label": "Niestandardowy tytuł okna", "label": "Niestandardowy tytuł okna",
"prompt": { "prompt": {
"label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):", "label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć)",
"placeholder": "Przykład: YouTube Music" "placeholder": "Przykład: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Uruchom ponownie aplikację", "restart": "Uruchom ponownie aplikację",
"show": "Pokaż okno", "show": "Pokaż okno",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "{{title}} (autorstwa {{artist}}) - YT Music" "with-song-info": "{{artist}} - (autorstwa {{artist}}) - {{applicationName}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Zezwól stylowanie paska wyszukiwań"
}, },
"name": "Motyw kolorów albumu" "name": "Motyw kolorów albumu"
}, },
@ -287,14 +288,14 @@
"name": "Tryb otoczenia" "name": "Tryb otoczenia"
}, },
"amuse": { "amuse": {
"description": "Wspiera integrację YouTube Music z widgetami Amuse (od 6K Labs)", "description": "Wspiera integrację {{applicationName}} z widgetami Amuse (od 6K Labs)",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze." "query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze."
} }
}, },
"api-server": { "api-server": {
"description": "Pozwala na kontrolowanie YouTube Music poprzez podłączenie specjalnego serwera API", "description": "Pozwala na kontrolowanie {{applicationName}} poprzez podłączenie specjalnego serwera API",
"dialog": { "dialog": {
"request": { "request": {
"buttons": { "buttons": {
@ -320,11 +321,27 @@
"hostname": { "hostname": {
"label": "Nazwa hosta (IP)" "label": "Nazwa hosta (IP)"
}, },
"https": {
"label": "HTTPS i Certyfikaty",
"submenu": {
"cert": {
"dialogTitle": "Wybierz plik certyfikatu HTTPS",
"label": "Certyfikat (.crt/.pem)"
},
"enable-https": {
"label": "Zezwól HTTPS"
},
"key": {
"dialogTitle": "Wybierz plik prywatnego klucza HTTPS",
"label": "Klucz prywatny (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
}, },
"name": "YouTube Music API", "name": "{{applicationName}} API",
"prompt": { "prompt": {
"hostname": { "hostname": {
"label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:", "label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:",
@ -373,7 +390,7 @@
"name": "Omiń ograniczenia wiekowe" "name": "Omiń ograniczenia wiekowe"
}, },
"captions-selector": { "captions-selector": {
"description": "Selektor napisów dla ścieżek audio YouTube Music", "description": "Selektor napisów dla ścieżek audio {{applicationName}}",
"menu": { "menu": {
"autoload": "Automatycznie wybierz ostatnio używanych napisów", "autoload": "Automatycznie wybierz ostatnio używanych napisów",
"disable-captions": "Domyślnie, brak napisów" "disable-captions": "Domyślnie, brak napisów"
@ -429,7 +446,7 @@
"name": "Niestandardowe urządzenie wyjścia", "name": "Niestandardowe urządzenie wyjścia",
"prompt": { "prompt": {
"device-selector": { "device-selector": {
"label": "Wybierz wyjście audio które ma być użyte", "label": "Wybierz urządzenie wyjściowe",
"title": "Wybierz wyjście audio" "title": "Wybierz wyjście audio"
} }
} }
@ -447,7 +464,7 @@
"connected": "Połączono z Discordem", "connected": "Połączono z Discordem",
"disconnected": "Odłączono od Discorda" "disconnected": "Odłączono od Discorda"
}, },
"description": "Pokaż znajomym z Discorda czego słuchasz dzięki Rich Presence", "description": "Pokaż znajomym z Discorda czego słuchasz, dzięki technologii Rich Presence",
"menu": { "menu": {
"auto-reconnect": "Automatyczne wznawianie połączenia", "auto-reconnect": "Automatyczne wznawianie połączenia",
"clear-activity": "Wyczyść aktywność", "clear-activity": "Wyczyść aktywność",
@ -456,18 +473,18 @@
"disconnected": "Odłączono", "disconnected": "Odłączono",
"hide-duration-left": "Ukryj pozostały czas trwania", "hide-duration-left": "Ukryj pozostały czas trwania",
"hide-github-button": "Ukryj przycisk do GitHub", "hide-github-button": "Ukryj przycisk do GitHub",
"play-on-youtube-music": "Odtwórz w YouTube Music", "play-on-application": "Odtwórz w {{applicationName}}",
"set-inactivity-timeout": "Ustaw limit czasu bezczynności", "set-inactivity-timeout": "Ustaw limit czasu bezczynności",
"set-status-display-type": { "set-status-display-type": {
"label": "Opis statusu", "label": "Opis statusu",
"submenu": { "submenu": {
"application": "Słucha {{applicationName}}",
"artist": "Słucha {artist}", "artist": "Słucha {artist}",
"title": "Słucha {song title}", "title": "Słucha {song title}"
"youtube-music": "Słucha YouTube Music"
} }
} }
}, },
"name": "Discord Rich Presence", "name": "Aktywność w Discord",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "Podaj limit czasu bezczynności w sekundach:", "label": "Podaj limit czasu bezczynności w sekundach:",

View File

@ -33,25 +33,25 @@
"css-file-not-found": "Arquivo CSS \"{{cssFile}}\" não existe, ignorando" "css-file-not-found": "Arquivo CSS \"{{cssFile}}\" não existe, ignorando"
}, },
"unresponsive": { "unresponsive": {
"details": "Erro de falta de resposta!\n{{error}}" "details": "Erro por falta de resposta!\n{{error}}"
}, },
"when-ready": { "when-ready": {
"clearing-cache-after-20s": "Limpando cache do aplicativo" "clearing-cache-after-20s": "Limpando cache do aplicativo"
}, },
"window": { "window": {
"tried-to-render-offscreen": "A janela tentou renderizar fora da tela, tamanho da janela={{windowSize}}, tamanho da tela={{displaySize}}, posição={{position}}" "tried-to-render-offscreen": "A janela tentou renderizar fora dos parâmetros da tela, tamanho da janela={{windowSize}}, tamanho da tela={{displaySize}}, posição={{position}}"
} }
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "O menu está oculto, use 'Alt' para mostrá-lo (ou 'Esc' ao usar o menu dentro do aplicativo)", "detail": "O menu está oculto, use 'Alt' para mostrá-lo (ou 'Esc' ao usar o menu dentro do aplicativo)",
"message": "Ocultar menu está ativado", "message": "Ocultar Menu está ativado",
"title": "Ocultar menu ativado" "title": "Ocultar Menu ativado"
}, },
"need-to-restart": { "need-to-restart": {
"buttons": { "buttons": {
"later": "Depois", "later": "Depois",
"restart-now": "Reiniciar agora" "restart-now": "Reiniciar Agora"
}, },
"detail": "O plugin \"{{pluginName}}\" requer uma reinicialização para entrar em vigor", "detail": "O plugin \"{{pluginName}}\" requer uma reinicialização para entrar em vigor",
"message": "\"{{pluginName}}\" precisa reiniciar", "message": "\"{{pluginName}}\" precisa reiniciar",
@ -84,7 +84,7 @@
"label": "Navegação", "label": "Navegação",
"submenu": { "submenu": {
"copy-current-url": "Copiar URL atual", "copy-current-url": "Copiar URL atual",
"go-back": "Voltar", "go-back": "Retornar",
"go-forward": "Avançar", "go-forward": "Avançar",
"quit": "Sair", "quit": "Sair",
"restart": "Reiniciar aplicativo" "restart": "Reiniciar aplicativo"
@ -154,7 +154,7 @@
"label": "Título da janela customizado", "label": "Título da janela customizado",
"prompt": { "prompt": {
"label": "Insira título customizado para a janela: (deixe em branco para desabilitar)", "label": "Insira título customizado para a janela: (deixe em branco para desabilitar)",
"placeholder": "Exemplo: Youtube Music" "placeholder": "Exemplo: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicativo", "restart": "Reiniciar aplicativo",
"show": "Mostrar janela", "show": "Mostrar janela",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Ativar personalização da barra de progresso"
}, },
"name": "Tema da cor do álbum" "name": "Tema da cor do álbum"
}, },
@ -287,7 +288,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Adiciona suporte ao YouTube Music ao widget 'Reproduzindo agora' do Amuse da 6K Labs", "description": "Adiciona suporte ao {{applicationName}} ao widget 'Reproduzindo agora' do Amuse da 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Servidor API do Amuse em execução. GET /query para obter informações da música." "query": "Servidor API do Amuse em execução. GET /query para obter informações da música."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Nome do anfitrião" "label": "Nome do anfitrião"
}, },
"https": {
"label": "HTTPS & Certificados",
"submenu": {
"cert": {
"dialogTitle": "Selecione o certificado do HTTPS",
"label": "Arquivo de certificado (.crt/.pem)"
},
"enable-https": {
"label": "Habilitar HTTPS"
},
"key": {
"dialogTitle": "Selecione a chave privada do HTTPS",
"label": "Arquivo de chave privada (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Porta" "label": "Porta"
} }
@ -369,11 +386,11 @@
"name": "Desfocar barra de navegação" "name": "Desfocar barra de navegação"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Pular a verificação de idade do YouTube", "description": "Pular a verificação de idade do Music Player",
"name": "Ignorar restrições de idade" "name": "Ignorar restrições de idade"
}, },
"captions-selector": { "captions-selector": {
"description": "Seletor de legendas para faixas de áudio do YouTube Music", "description": "Seletor de legendas para faixas de áudio do {{applicationName}}",
"menu": { "menu": {
"autoload": "Selecionar automaticamente a última legenda usada", "autoload": "Selecionar automaticamente a última legenda usada",
"disable-captions": "Sem legendas por padrão" "disable-captions": "Sem legendas por padrão"
@ -456,14 +473,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar duração restante", "hide-duration-left": "Ocultar duração restante",
"hide-github-button": "Ocultar botão do GitHub", "hide-github-button": "Ocultar botão do GitHub",
"play-on-youtube-music": "Reproduzir no YouTube Music", "play-on-application": "Reproduzir no {{applicationName}}",
"set-inactivity-timeout": "Definir tempo limite de inatividade", "set-inactivity-timeout": "Definir tempo limite de inatividade",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de status", "label": "Texto de status",
"submenu": { "submenu": {
"application": "Ouvindo {{applicationName}}",
"artist": "Ouvindo {artist}", "artist": "Ouvindo {artist}",
"title": "Ouvindo {song title}", "title": "Ouvindo {song title}"
"youtube-music": "Ouvindo YouTube Music"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Título de janela personalizado", "label": "Título de janela personalizado",
"prompt": { "prompt": {
"label": "Introduza um título: (deixe em branco para desativar)", "label": "Introduza um título: (deixe em branco para desativar)",
"placeholder": "Exemplo: YouTube Music" "placeholder": "Exemplo: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicação", "restart": "Reiniciar aplicação",
"show": "Mostrar janela", "show": "Mostrar janela",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Ativar temas na barra de reprodução"
}, },
"name": "Tema de cores do álbum" "name": "Tema de cores do álbum"
}, },
@ -287,7 +288,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Adiciona suporte ao YouTube Music para o widget Amuse now playing de 6K Labs", "description": "Adiciona suporte ao {{applicationName}} para o widget Amuse now playing de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa." "query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Nome do anfitrião" "label": "Nome do anfitrião"
}, },
"https": {
"label": "HTTPS e Certificados",
"submenu": {
"cert": {
"dialogTitle": "Selecionar arquivo do certificado HTTPS",
"label": "Arquivo do certificado (.crt/.pem)"
},
"enable-https": {
"label": "Ativar HTTPS"
},
"key": {
"dialogTitle": "Selecionar arquivo da chave privada HTTPS",
"label": "Arquivo da chave privada (.key/.pen)"
}
}
},
"port": { "port": {
"label": "Porta" "label": "Porta"
} }
@ -369,11 +386,11 @@
"name": "Barra de navegação desfocada" "name": "Barra de navegação desfocada"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Ignorar verificação de idade do YouTube", "description": "Ignorar verificação de idade do Music Player",
"name": "Ignorar restrições de idade" "name": "Ignorar restrições de idade"
}, },
"captions-selector": { "captions-selector": {
"description": "Seletor de legendas para as faixas de áudio do YouTube Music", "description": "Seletor de legendas para as faixas de áudio do {{applicationName}}",
"menu": { "menu": {
"autoload": "Selecionar automaticamente a última legenda utilizada", "autoload": "Selecionar automaticamente a última legenda utilizada",
"disable-captions": "Sem legendas por omissão" "disable-captions": "Sem legendas por omissão"
@ -456,14 +473,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar tempo restante", "hide-duration-left": "Ocultar tempo restante",
"hide-github-button": "Ocultar botão GitHub", "hide-github-button": "Ocultar botão GitHub",
"play-on-youtube-music": "Reproduzir em YouTube Music", "play-on-application": "Reproduzir em {{applicationName}}",
"set-inactivity-timeout": "Definir tempo de inatividade", "set-inactivity-timeout": "Definir tempo de inatividade",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de estado", "label": "Texto de estado",
"submenu": { "submenu": {
"application": "A reproduzir {{applicationName}}",
"artist": "A ouvir {artist}", "artist": "A ouvir {artist}",
"title": "A ouvir {song title}", "title": "A ouvir {song title}"
"youtube-music": "A reproduzir YouTube Music"
} }
} }
}, },

View File

@ -0,0 +1,15 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Pluginta mana ruwayta atirqanchu {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin nisqa {{pluginName}}::{{contextName}} ejecutado en {{ms}}ms",
"initialize-failed": "Plugin qallariyta mana atirqanchu \"{{pluginName}}\"",
"load-all": "Llapanta cargaspa",
"load-failed": "Pluginta mana kargayta atirqanchu \"{{pluginName}}\"",
"loaded": "Plugin nisqa \"{{pluginName}}\" cargado",
"unload-failed": "Pluginta mana uraykachiyta atirqanchu \"{{pluginName}}\""
}
}
}
}

View File

@ -154,7 +154,7 @@
"label": "Titlul ferestrei personalizate", "label": "Titlul ferestrei personalizate",
"prompt": { "prompt": {
"label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)", "label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)",
"placeholder": "Exemplu: Youtube Music" "placeholder": "Exemplu: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reporneste aplicatia", "restart": "Reporneste aplicatia",
"show": "Arata fereastra", "show": "Arata fereastra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mod ambiental" "name": "Mod ambiental"
}, },
"amuse": { "amuse": {
"description": "Adauga suport Youtube Music pentru Amuse se redă acum widget de 6K Labs", "description": "Adauga suport {{applicationName}} pentru Amuse se redă acum widget de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie." "query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie."
@ -369,11 +369,11 @@
"name": "Estompează Bara de Navigație" "name": "Estompează Bara de Navigație"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Treci peste verificarea de vârstă a YouTube-ului", "description": "Treci peste verificarea de vârstă a Music Player",
"name": "Ignoră restricțiile de vârstă" "name": "Ignoră restricțiile de vârstă"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtitrări pentru piesele audio de pe YouTube Music", "description": "Selector de subtitrări pentru piesele audio de pe {{applicationName}}",
"menu": { "menu": {
"autoload": "Selectează automat ultima subtitrare folosită", "autoload": "Selectează automat ultima subtitrare folosită",
"disable-captions": "Fără subtitrări în mod implicit" "disable-captions": "Fără subtitrări în mod implicit"
@ -456,14 +456,14 @@
"disconnected": "Deconectat", "disconnected": "Deconectat",
"hide-duration-left": "Ascunde timpul rămas", "hide-duration-left": "Ascunde timpul rămas",
"hide-github-button": "Ascunde butonul cu link-ul GitHub", "hide-github-button": "Ascunde butonul cu link-ul GitHub",
"play-on-youtube-music": "Redă pe YouTube Music", "play-on-application": "Redă pe {{applicationName}}",
"set-inactivity-timeout": "Setează intervalul de inactivitate", "set-inactivity-timeout": "Setează intervalul de inactivitate",
"set-status-display-type": { "set-status-display-type": {
"label": "Text stare", "label": "Text stare",
"submenu": { "submenu": {
"artist": "Ascultând {artist}", "artist": "Ascultând {artist}",
"title": "Ascultând {song title}", "title": "Ascultând {song title}",
"youtube-music": "Ascultând YouTube Music" "application": "Ascultând {{applicationName}}"
} }
} }
}, },

View File

@ -2,13 +2,13 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "Ошибка загрузки плагина {{pluginName}}::{{contextName}}", "execute-failed": "Ошибка при выполнении плагина {{pluginName}}::{{contextName}}",
"executed-at-ms": "Плагин {{pluginName}}::{{contextName}} загружен за {{ms}}мс", "executed-at-ms": "Плагин {{pluginName}}::{{contextName}} загружен за {{ms}}мс",
"initialize-failed": "Ошибка инициализации плагина \"{{pluginName}}\"", "initialize-failed": "Ошибка инициализации плагина \"{{pluginName}}\"",
"load-all": "Загружаем все плагины", "load-all": "Загружаем все плагины",
"load-failed": "Ошибка загрузки плагина \"{{pluginName}}\"", "load-failed": "Ошибка загрузки плагина \"{{pluginName}}\"",
"loaded": "Плагин \"{{pluginName}}\" загружен", "loaded": "Плагин \"{{pluginName}}\" загружен",
"unload-failed": "Ошибка выгрузки плагина \"{{pluginName}}\"", "unload-failed": "Ошибка при выгрузке плагина \"{{pluginName}}\"",
"unloaded": "Плагин \"{{pluginName}}\" выгружен" "unloaded": "Плагин \"{{pluginName}}\" выгружен"
} }
} }
@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Меню скрыто, 'Alt' чтобы показать его ('Escape' если используете внутреннее меню приложения)", "detail": "Меню скрыто, используйте 'Alt' чтобы показать его ('Escape' если используете внутреннее меню приложения)",
"message": "Скрытие меню включено", "message": "Скрытие меню включено",
"title": "Включено скрытие меню" "title": "Включено скрытие меню"
}, },
@ -53,8 +53,8 @@
"later": "Позже", "later": "Позже",
"restart-now": "Перезапустить сейчас" "restart-now": "Перезапустить сейчас"
}, },
"detail": "Перезапустите приложение для включения плагина {{pluginName}}", "detail": "Для вступления изменений в силу плагину \"{{pluginName}}\" требуется перезапуск",
"message": "Перезапуск для применения плагина {{pluginName}}", "message": "Требуется перезапуск плагина \"{{pluginName}}\"",
"title": "Нужен перезапуск" "title": "Нужен перезапуск"
}, },
"unresponsive": { "unresponsive": {
@ -100,7 +100,7 @@
"disable-hardware-acceleration": "Отключить аппаратное ускорение", "disable-hardware-acceleration": "Отключить аппаратное ускорение",
"edit-config-json": "Редактировать config.json", "edit-config-json": "Редактировать config.json",
"override-user-agent": "Переопределить User-Agent", "override-user-agent": "Переопределить User-Agent",
"restart-on-config-changes": "Перезапускать при изменениях конфига", "restart-on-config-changes": "Перезапускать при изменениях конфигурации",
"set-proxy": { "set-proxy": {
"label": "Задать прокси", "label": "Задать прокси",
"prompt": { "prompt": {
@ -154,7 +154,7 @@
"label": "Собственное название окна", "label": "Собственное название окна",
"prompt": { "prompt": {
"label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)", "label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)",
"placeholder": "Например: YouTube Music" "placeholder": "Например: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -163,7 +163,7 @@
"hide": "Скрывать", "hide": "Скрывать",
"label": "Кнопка лайка" "label": "Кнопка лайка"
}, },
"remove-upgrade-button": "Убрать кнопку Youtube Premium", "remove-upgrade-button": "Убрать кнопку Premium",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -208,8 +208,8 @@
"restart": "Перезапустить приложение", "restart": "Перезапустить приложение",
"show": "Показать окно", "show": "Показать окно",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Включить тематическое оформление полосы прокрутки"
}, },
"name": "Цветовая тема альбома" "name": "Цветовая тема альбома"
}, },
@ -287,7 +288,7 @@
"name": "Режим Ambient" "name": "Режим Ambient"
}, },
"amuse": { "amuse": {
"description": "Добавляет поддержку виджета Amuse „сейчас играет“ от 6K Labs", "description": "Добавляет {{applicationName}} поддержку виджета Amuse „сейчас играет“ от 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Сервер Amuse API запущен. GET /query чтобы получить информацию о треке." "query": "Сервер Amuse API запущен. GET /query чтобы получить информацию о треке."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Имя хоста" "label": "Имя хоста"
}, },
"https": {
"label": "HTTPS и сертификаты",
"submenu": {
"cert": {
"dialogTitle": "Выберите файл сертификата HTTPS",
"label": "Файл сертификата (.crt/.pem)"
},
"enable-https": {
"label": "Включить HTTPS"
},
"key": {
"dialogTitle": "Выберите файл приватного ключа HTTPS",
"label": "Файл приватного ключа (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Порт" "label": "Порт"
} }
@ -369,11 +386,11 @@
"name": "Размытие панели навигации" "name": "Размытие панели навигации"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Обход проверки возраста на YouTube", "description": "Обход проверки возраста на Music Player",
"name": "Обход возрастных ограничений" "name": "Обход возрастных ограничений"
}, },
"captions-selector": { "captions-selector": {
"description": "Выбор субтитров для аудиотреков в YouTube Music", "description": "Выбор субтитров для аудиотреков в {{applicationName}}",
"menu": { "menu": {
"autoload": "Автоматически выбирать последние использованные субтитры", "autoload": "Автоматически выбирать последние использованные субтитры",
"disable-captions": "Без субтитров по умолчанию" "disable-captions": "Без субтитров по умолчанию"
@ -456,14 +473,14 @@
"disconnected": "Отключено", "disconnected": "Отключено",
"hide-duration-left": "Скрыть сколько осталось времени", "hide-duration-left": "Скрыть сколько осталось времени",
"hide-github-button": "Скрыть ссылку на GitHub", "hide-github-button": "Скрыть ссылку на GitHub",
"play-on-youtube-music": "Воспроизвести на YouTube Music", "play-on-application": "Воспроизвести на {{applicationName}}",
"set-inactivity-timeout": "Поставить таймер неактивности", "set-inactivity-timeout": "Поставить таймер неактивности",
"set-status-display-type": { "set-status-display-type": {
"label": "Текст статуса", "label": "Текст статуса",
"submenu": { "submenu": {
"application": "Слушает {{applicationName}}",
"artist": "Слушает {исполнитель}", "artist": "Слушает {исполнитель}",
"title": "Слушает {название трека}", "title": "Слушает {название трека}"
"youtube-music": "Слушает YouTube Music"
} }
} }
}, },

View File

@ -201,8 +201,8 @@
"restart": "නැවත ආරම්භ කරන්න", "restart": "නැවත ආරම්භ කරන්න",
"show": "තිරය පෙන්වන්න", "show": "තිරය පෙන්වන්න",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },

View File

@ -59,7 +59,7 @@
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
"quit": "Skončiť", "quit": "Ukončiť",
"relaunch": "Spustiť znova", "relaunch": "Spustiť znova",
"wait": "Počkajte" "wait": "Počkajte"
}, },
@ -70,7 +70,7 @@
"update-available": { "update-available": {
"buttons": { "buttons": {
"disable": "Vypnúť aktualizácie", "disable": "Vypnúť aktualizácie",
"download": "Sťiahnuť", "download": "Stiahnuť",
"ok": "OK" "ok": "OK"
}, },
"detail": "Nová verzia je k dispozícii a je možné ju stiahnuť na {{downloadLink}}", "detail": "Nová verzia je k dispozícii a je možné ju stiahnuť na {{downloadLink}}",
@ -141,9 +141,9 @@
"tray": { "tray": {
"label": "Panel oznámení", "label": "Panel oznámení",
"submenu": { "submenu": {
"disabled": "Vypnuý", "disabled": "Vypnutý",
"enabled-and-hide-app": "Zapnutý , a skryť okno aplikácie", "enabled-and-hide-app": "Povolené a skry aplikáciu",
"enabled-and-show-app": "Spustené a ukáž aplikáciu", "enabled-and-show-app": "Povolené a ukáž aplikáciu",
"play-pause-on-click": "Prehrať/Pozastaviť na stlačenie" "play-pause-on-click": "Prehrať/Pozastaviť na stlačenie"
} }
}, },
@ -154,7 +154,7 @@
"label": "Vlastný názov okna", "label": "Vlastný názov okna",
"prompt": { "prompt": {
"label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)", "label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)",
"placeholder": "Napríklad: YouTube Music" "placeholder": "Napríklad: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -185,11 +185,13 @@
}, },
"plugins": { "plugins": {
"enabled": "Zapnuté", "enabled": "Zapnuté",
"label": "Rozšírenia",
"new": "NOVÝ" "new": "NOVÝ"
}, },
"view": { "view": {
"label": "Náhľad",
"submenu": { "submenu": {
"force-reload": "Natvrdo obnoviť", "force-reload": "Nasilu obnoviť",
"reload": "Obnoviť", "reload": "Obnoviť",
"reset-zoom": "Ozajstná veľkosť", "reset-zoom": "Ozajstná veľkosť",
"toggle-fullscreen": "Prepnúť režim Celej Obrazovky", "toggle-fullscreen": "Prepnúť režim Celej Obrazovky",
@ -206,9 +208,665 @@
"restart": "Reštartovať aplikáciu", "restart": "Reštartovať aplikáciu",
"show": "Zobraziť okno", "show": "Zobraziť okno",
"tooltip": { "tooltip": {
"default": "YouTube Hudba", "default": "{{applicationName}}",
"with-song-info": "Youtube Hudba: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
},
"plugins": {
"ad-speedup": {
"description": "Ak sa spustí reklama, stlmí sa zvuk a nastaví sa rýchlosť prehrávania na 16x",
"name": "Zrýchľovač reklám"
},
"adblocker": {
"description": "Blokovať všetky reklamy a sledovania hneď od začiatku",
"menu": {
"blocker": "Blokovač"
},
"name": "Blokovač reklám"
},
"album-actions": {
"description": "Pridáva Undislike, Dislike, Like, a Unlike tlačítka k aplikovaniu tohto ku všetkým pesničkám v zozname pesničiek alebo albume",
"name": "Možnosti albumu"
},
"album-color-theme": {
"description": "Aplikuje dynamický motív a vizuálne efekty na základe palety farieb albumu",
"menu": {
"color-mix-ratio": {
"label": "Pomer miešania farieb",
"submenu": {
"percent": "{{ratio}}%"
}
},
"enable-seekbar": "Povoliť farebnú tému aj v seekbare"
},
"name": "Farebná téma albumu"
},
"ambient-mode": {
"description": "Aplikuje svetelné efekty pomocou vrhania jemných farieb z videa, do vášho pozadia obrazovky",
"menu": {
"blur-amount": {
"label": "Hodnota rozmazania",
"submenu": {
"pixels": "{{blurAmount}} pixelov"
}
},
"buffer": {
"label": "Vyrovnávacia pamäť",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Nepriehľadnosť",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kvalita",
"submenu": {
"pixels": "{{quality}} pixelov"
}
},
"size": {
"label": "Veľkosť",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Plynulý prechod",
"submenu": {
"during": "Počas {{interpolationTime}} s"
}
},
"use-fullscreen": {
"label": "Používanie režimu celej obrazovky"
}
},
"name": "Ambientný mód"
},
"amuse": {
"description": "Pridáva {{applicationName}} podporu pre Amuse práve prehráva widget od 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API server beží. GET /query to get song info."
}
},
"api-server": {
"description": "Pridáva API server na ovládanie prehrávača",
"dialog": {
"request": {
"buttons": {
"allow": "Povoliť",
"deny": "Zakázať"
},
"message": "Povoliť {{ID}} ({{origin}}) prístup cez API?",
"title": "Žiadosť o autorizáciu API"
}
},
"menu": {
"auth-strategy": {
"label": "Stratégia autorizácie",
"submenu": {
"auth-at-first": {
"label": "Overiť pri prvom dotaze"
},
"none": {
"label": "Žiadna autorizácia"
}
}
},
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"name": "API Server [Beta]",
"prompt": {
"hostname": {
"label": "Zadajte názov hostname(napr. 0.0.0.0) pre server API:",
"title": "Hostname"
},
"port": {
"label": "Zadajte port pre server API:",
"title": "Port"
}
}
},
"audio-compressor": {
"description": "Aplikovať kompresiu k audiu (znižuje hlasitosť najhlasnejších častí signálu a zvyšuje hlasitosť najjemnejších častí)",
"name": "Audio kompresor"
},
"auth-proxy-adapter": {
"description": "Podpora používania autentifikačných proxy služieb",
"menu": {
"disable": "Vypnúť Proxy Adaptér",
"enable": "Zapnúť Proxy Adaptér",
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"name": "Adaptér autentifikačného proxy servera",
"prompt": {
"hostname": {
"label": "Zadajte hostname pre lokálny proxy server (vyžaduje reštart):",
"title": "Proxy Hostname"
},
"port": {
"label": "Zadajte port pre lokálny proxy server (vyžaduje reštart):",
"title": "Proxy Port"
}
}
},
"blur-nav-bar": {
"description": "Navigačnú lištu nastaví ako priehľadnú a rozmazanú",
"name": "Rozmazať navigačnú lištu"
},
"bypass-age-restrictions": {
"description": "Obísť overenie veku v hudobnom prehrávači",
"name": "Obísť vekové obmedzenia"
},
"captions-selector": {
"description": "Selektor titulkov pre zvukové stopy {{applicationName}}",
"menu": {
"autoload": "Automatický výber naposledy použitých titulkov",
"disable-captions": "Žiadne titulky"
},
"name": "Selektor titulkov",
"prompt": {
"selector": {
"label": "Aktuálny jazyk titulkov: {{language}}",
"none": "Žiadne",
"title": "Výber jazyka titulkov"
}
},
"templates": {
"title": "Otvoriť selektor titulkov"
},
"toast": {
"caption-changed": "Titulky zmenené na {{language}}",
"caption-disabled": "Deaktivované titulky",
"no-captions": "Pre túto skladbu nie sú dostupné žiadne titulky"
}
},
"compact-sidebar": {
"description": "Vždy nastaviť bočný panel do kompaktného režimu",
"name": "Kompaktný bočný panel"
},
"crossfade": {
"description": "Prelínanie medzi skladbami",
"menu": {
"advanced": "Pokročilé"
},
"name": "Prelínanie [Beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Trvanie nábehu (ms)",
"fade-out-duration": "Trvanie doznievania (ms)",
"fade-scaling": {
"label": "Škálovanie prelínania",
"linear": "Lineárny",
"logarithmic": "Logaritmický"
},
"seconds-before-end": "Prechod N sekúnd pred koncom"
},
"title": "Možnosti prelínania"
}
}
},
"custom-output-device": {
"description": "Nastavte vlastné výstupné médium pre skladby",
"menu": {
"device-selector": "Výber Zariadenia"
},
"name": "Vlastné výstupné zariadenie",
"prompt": {
"device-selector": {
"label": "Vyberte výstupné médium, ktoré chcete použiť",
"title": "Výber výstupného zariadenia"
}
}
},
"disable-autoplay": {
"description": "Spustí skladbu v režime „pozastavené“",
"menu": {
"apply-once": "Platí len pri spustení"
},
"name": "Zakázať automatické prehrávanie"
},
"discord": {
"backend": {
"already-connected": "Pokus o pripojenie s aktívnym pripojením",
"connected": "Pripojené k Discordu",
"disconnected": "Odpojené od Discordu"
},
"description": "Ukážte svojim priateľom, čo počúvate, s funkciou Rich Presence",
"menu": {
"auto-reconnect": "Automatické opätovné pripojenie",
"clear-activity": "Zmazať aktivitu",
"clear-activity-after-timeout": "Zmazať aktivitu po uplynutí časového limitu",
"connected": "Pripojené",
"disconnected": "Odpojené",
"hide-duration-left": "Skryť zostávajúcu dobu trvania",
"hide-github-button": "Skryť tlačidlo s odkazom na GitHub",
"play-on-application": "Spustiť na {{applicationName}}",
"set-inactivity-timeout": "Nastaviť časový limit nečinnosti",
"set-status-display-type": {
"label": "Text stavu",
"submenu": {
"artist": "Aktuálne si prehráva {artist}",
"application": "Počúvať {{applicationName}}",
"title": "Aktuálne si prehráva {song title}"
}
}
},
"name": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Zadajte časový limit nečinnosti v sekundách:",
"title": "Nastaviť časový limit nečinnosti"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Ach! Ospravedlňujeme sa, sťahovanie sa nepodarilo…",
"title": "Chyba pri sťahovaní!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{playlistSize}} skladieb)",
"message": "Sťahovanie zoznamu {{playlistTitle}}",
"title": "Sťahovanie začalo"
}
},
"feedback": {
"conversion-progress": "Konverzia: {{percent}}%",
"converting": "Konvertujem…",
"done": "Hotovo: {{filePath}}",
"download-info": "Sťahujem {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Sťahovanie: {{percent}}%",
"downloading": "Sťahujem…",
"downloading-counter": "Sťahujem {{current}}/{{total}}…",
"downloading-playlist": "Sťahujem zoznam „{{playlistTitle}}“ - {{playlistSize}} skladieb ({{playlistId}})",
"error-while-downloading": "Chyba pri sťahovaní „{{author}} - {{title}}“: {{error}}",
"folder-already-exists": "Priečinok {{playlistFolder}} už existuje",
"getting-playlist-info": "Získavanie informácií o zozname…",
"loading": "Načítavam…",
"playlist-has-only-one-song": "Zoznam obsahuje len jednu položku, ktorá sa stiahne priamo",
"playlist-id-not-found": "Nebolo nájdené žiadne ID zoznamu",
"playlist-is-empty": "Zoznam je prázdny",
"playlist-is-mix-or-private": "Chyba pri získavaní informácií o zozname: uistite sa, že nejde o súkromný zoznam alebo zoznam „Pre Vás“\n\n{{error}}",
"preparing-file": "Pripravujem súbor…",
"saving": "Ukladám…",
"trying-to-get-playlist-id": "Snažím sa získať ID zoznam: {{playlistId}}",
"video-id-not-found": "Video nebolo nájdené",
"writing-id3": "Zapisujem ID3 značky…"
}
},
"description": "Sťahuje MP3 / zdrojový zvuk priamo z rozhrania",
"menu": {
"choose-download-folder": "Vyberte priečinok na sťahovanie",
"download-finish-settings": {
"label": "Stiahnuť po skončení",
"prompt": {
"last-percent": "Po x percentách",
"last-seconds": "Posledných x sekúnd",
"title": "Nastavte, kedy sa má stiahnuť"
},
"submenu": {
"advanced": "Rozšírené",
"enabled": "Povolené",
"mode": "Časový režim",
"percent": "Percento",
"seconds": "Sekundy"
}
},
"download-playlist": "Stiahnuť zoznam",
"presets": "Predvoľby",
"skip-existing": "Preskočiť už existujúce súbory"
},
"name": "Sťahovač",
"renderer": {
"can-not-update-progress": "Nie je možné aktualizovať priebeh"
},
"templates": {
"button": "Stiahnuť"
}
},
"equalizer": {
"description": "Pridáva ekvalizér do prehrávača",
"menu": {
"presets": {
"label": "Predvoľby",
"list": {
"bass-booster": "Zosilňovač basov"
}
}
},
"name": "Ekvalizér"
},
"exponential-volume": {
"description": "Zmení slider hlasitosti na exponenciálny, aby bolo ľahšie vybrať nižšiu hlasitosť.",
"name": "Exponenciálna hlasitosť"
},
"in-app-menu": {
"description": "Dodáva lištám ponúk elegantný, tmavý alebo farebný vzhľad albumu",
"menu": {
"hide-dom-window-controls": "Skryť ovládacie prvky DOM"
},
"name": "Aplikačné menu"
},
"lumiastream": {
"description": "Pridáva Lumia Stream podporu",
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Pridáva podporu textov pre väčšinu piesní",
"menu": {
"romanized-lyrics": "Romanizované texty piesní"
},
"name": "Texty Genius",
"renderer": {
"fetched-lyrics": "Načítané texty piesní pre Genius"
}
},
"music-together": {
"description": "Zdieľajte zoznam s ostatnými. Keď hostiteľ prehrá skladbu, všetci ostatní budú počuť tú istú skladbu",
"dialog": {
"enter-host": "Zadajte Host ID"
},
"internal": {
"save": "Uložiť",
"track-source": "Sledovať zdroj",
"unknown-user": "Neznámy užívateľ"
},
"menu": {
"click-to-copy-id": "Kopírovať Host ID",
"close": "Zatvoriť Music Together",
"connected-users": "Pripojení užívatelia",
"disconnect": "Odpojiť Music Together",
"empty-user": "Žiadni pripojení užívatelia",
"host": "Music Together Host",
"join": "Pripojiť sa k Music Together",
"permission": {
"all": "Umožniť hosťom ovládať zoznam a prehrávač",
"host-only": "Len hostiteľ môže ovládať zoznam skladieb a prehrávač",
"playlist": "Umožniť hosťom ovládať zoznam"
},
"set-permission": "Povolenie na kontrolu zmien",
"status": {
"disconnected": "Odpojené",
"guest": "Pripojený ako hosť",
"host": "Pripojený ako hostiteľ"
}
},
"name": "Music Together [Beta]",
"toast": {
"add-song-failed": "Nepodarilo sa pridať skladbu",
"closed": "Music Together ukončené",
"disconnected": "Music Together odpojené",
"host-failed": "Nepodarilo sa hosťovať Music Together",
"id-copied": "Host ID bolo skopírované do schránky",
"id-copy-failed": "Nepodarilo sa skopírovať Host ID do schránky",
"join-failed": "Nepodarilo sa pripojiť k Music Together",
"joined": "Pripojený k Music Together",
"permission-changed": "Povolenie Music Together zmenené na „{{permission}}“",
"remove-song-failed": "Nepodarilo sa odstrániť skladbu",
"user-connected": "{{name}} sa pripojil k Music Together",
"user-disconnected": "{{name}} opustil Music Together"
}
},
"navigation": {
"description": "Šípky pre navigáciu vpred/vzad sú priamo integrované do rozhrania, rovnako ako vo vašom obľúbenom prehliadači",
"name": "Navigácia",
"templates": {
"back": {
"title": "Prejsť na predchádzajúcu stránku"
},
"forward": {
"title": "Prejsť na nasledujúcu stránku"
}
}
},
"no-google-login": {
"description": "Odstrániť tlačidlá a odkazy na prihlásenie do služby Google z rozhrania",
"name": "Žiadne prihlásenie do Google"
},
"notifications": {
"description": "Zobraziť upozornenie pri spustení prehrávania skladby (interaktívne upozornenia sú k dispozícii v systéme Windows)",
"menu": {
"interactive": "Interaktívne oznámenia",
"interactive-settings": {
"label": "Interaktívne nastavenia",
"submenu": {
"hide-button-text": "Skryť text tlačidla",
"refresh-on-play-pause": "Obnoviť pri prehrávaní/pozastavení",
"tray-controls": "Otvoriť/Zatvoriť kliknutím na lištu"
}
},
"priority": "Priorita oznámenia",
"toast-style": "Štýl toastu",
"unpause-notification": "Zobraziť upozornenie pri obnovení"
},
"name": "Upozornenia"
},
"performance-improvement": {
"description": "Zlepšite výkon povolením experimentálnych skriptov",
"name": "Zlepšenie výkonu [Beta]"
},
"picture-in-picture": {
"description": "Umožňuje prepnúť aplikáciu do režimu obraz v obraze",
"menu": {
"always-on-top": "Vždy na vrchu",
"hotkey": {
"label": "Klávesová skratka",
"prompt": {
"keybind-options": {
"hotkey": "Klávesová skratka"
},
"label": "Vyberte klávesovú skratku pre prepínanie obraz v obraze",
"title": "Obraz v obraze klávesová skratka"
}
},
"save-window-position": "Uložiť pozíciu okna",
"save-window-size": "Uložiť veľkosť okna",
"use-native-pip": "Použiť natívne PiP prehliadača"
},
"name": "Obraz v obraze",
"templates": {
"button": "Obraz v obraze"
}
},
"playback-speed": {
"description": "Počúvajte rýchlo, počúvajte pomaly! Pridáva slider, ktorý ovláda rýchlosť skladby",
"name": "Rýchlosť prehrávania",
"templates": {
"button": "Rýchlosť"
}
},
"precise-volume": {
"description": "Presne ovládajte hlasitosť pomocou kolieska myši/klávesových skratiek, s vlastným HUD a prispôsobiteľnými krokmi hlasitosti",
"menu": {
"arrows-shortcuts": "Ovládanie pomocou šípok",
"custom-volume-steps": "Nastavenie vlastných krokov hlasitosti",
"global-shortcuts": "Globálne klávesové skratky"
},
"name": "Presná hlasitosť",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Znížiť hlasitosť",
"increase": "Zvýšiť hlasitosť"
},
"label": "Vybrať globálne klávesové skratky:",
"title": "Globálne klávesové skratky pre hlasitosť"
},
"volume-steps": {
"label": "Vybrať kroky zvýšenia/zníženia hlasitosti",
"title": "Kroky hlasitosti"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Aktuálna kvalita: {{quality}}",
"message": "Výber kvality videa:",
"title": "Výber kvality videa"
}
}
},
"description": "Umožňuje zmeniť kvalitu videa pomocou tlačidla v prekrytí videa",
"name": "Zmena kvality videa",
"renderer": {
"quality-settings-button": {
"label": "Otvoriť nastavenia kvality prehrávača"
}
}
},
"scrobbler": {
"description": "Pridať podporu scrobbling (napr. last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Nepodarilo sa autentifikovať s Last.fm\nSkryť vyskakovacie okno do ďalšieho reštartu.",
"title": "Autentifikácia zlyhala"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Last.fm API Nastavenia"
},
"listenbrainz": {
"token": "Vložiť ListenBrainz používateľský token"
},
"scrobble-alternative-artist": "Použiť alternatívnych umelcov",
"scrobble-alternative-title": "Použiť alternatívne názvy",
"scrobble-other-media": "Scrobble iných médií"
},
"name": "Scrobbler",
"prompt": {
"lastfm": {
"api-key": "Last.fm API kľúč",
"api-secret": "Last.fm API tajomstvo"
},
"listenbrainz": {
"token": {
"label": "Vlož svoj ListenBrainz používateľský token:",
"title": "ListenBrainz token"
}
}
}
},
"shortcuts": {
"description": "Povoľuje nastaviť globálne klávesové skratky pre prehrávanie (Prehrať/Pozastaviť/Ďalšie/Predošlé) a vypínať media OSD prepisovaním media kľúčov, zapne Ctrl/CMD + F pre vyhľadávanie, zapne Linux MPRIS podporu pre media kľúče a vlastné klávesové skratky pre pokročilých používateľov.",
"menu": {
"override-media-keys": "Prepísať Media Kľúče",
"set-keybinds": "Globálne ovládanie skladieb"
},
"name": "Skratky (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Ďalšia",
"play-pause": "Prehrať / Pauza",
"previous": "Predošlá"
},
"label": "Zvoliť globálne klávesové skratky na ovládanie skladieb:",
"title": "Globálne klávesové skratky"
}
}
},
"skip-disliked-songs": {
"description": "Preskakuje skladby označené Nepáči sa",
"name": "Preskakovať skladby označené Nepáči sa"
},
"skip-silences": {
"description": "Automaticky preskakovať tiché časti v hudbe",
"name": "Preskakuj tiché časti"
},
"sponsorblock": {
"description": "Automaticky preskakuje nehudbné časti ako intro/outro, alebo tie časti videoklipov v ktorých nehrá hudba",
"name": "Sponzorský blok"
},
"synced-lyrics": {
"description": "Poskytuje synchronizované texty k skladbám, pričom používa poskytovateľov ako LRClib.",
"errors": {
"fetch": "⚠️\t\tPri získavaní textu sa vyskytla chyba. \n\tSkúste znova neskôr.",
"not-found": "⚠Pre túto skladbu nebol nájdený žiadny text."
},
"menu": {
"line-effect": {
"submenu": {
"offset": {
"label": "Offset"
}
}
},
"precise-timing": {
"label": "Dokonale synchronizovať text piesne"
},
"preferred-provider": {
"label": "Preferovaný Poskytovateľ",
"none": {
"label": "Žiadne",
"tooltip": "Žiadny preferovaný poskytovateľ"
}
}
}
},
"touchbar": {
"name": "Dotykový Panel"
},
"transparent-player": {
"description": "Nastaví okno aplikácie ako priehľadné"
},
"video-toggle": {
"menu": {
"align": {
"submenu": {
"left": "Vľavo",
"middle": "Stred",
"right": "Vpravo"
}
},
"mode": {
"submenu": {
"disabled": "Vypnuté",
"native": "Natívny prepínač"
}
}
},
"name": "Prepínač Videa",
"templates": {
"button-song": "Skladba",
"button-video": "Video"
}
},
"visualizer": {
"description": "Pridá do prehrávača vizualizér",
"menu": {
"visualizer-type": "Typ Vizualizéra"
},
"name": "Vizualizér"
}
} }
} }

View File

@ -201,8 +201,8 @@
"restart": "Ponovni zagon", "restart": "Ponovni zagon",
"show": "Pokaži okno", "show": "Pokaži okno",
"tooltip": { "tooltip": {
"default": "YouTube Glasba", "default": "{{applicationName}}",
"with-song-info": "YouTube Glasba: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -335,7 +335,7 @@
"name": "Preskoči starostno omejitev" "name": "Preskoči starostno omejitev"
}, },
"captions-selector": { "captions-selector": {
"description": "Izberi podnapise za YouTube Music zvočne posnetke", "description": "Izberi podnapise za {{applicationName}} zvočne posnetke",
"menu": { "menu": {
"autoload": "Avtomatsko uporabi zadnje izbrane podnapise", "autoload": "Avtomatsko uporabi zadnje izbrane podnapise",
"disable-captions": "Avtomatsko brez podnapisov" "disable-captions": "Avtomatsko brez podnapisov"
@ -400,7 +400,7 @@
"disconnected": "Prekinjena povezava", "disconnected": "Prekinjena povezava",
"hide-duration-left": "Skrij preostali čas", "hide-duration-left": "Skrij preostali čas",
"hide-github-button": "Skrij povezavo do GitHub-a", "hide-github-button": "Skrij povezavo do GitHub-a",
"play-on-youtube-music": "Predvajaj v YouTube Music", "play-on-application": "Predvajaj v {{applicationName}}",
"set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti" "set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti"
}, },
"name": "Discord bogata prisotnost (Rich Presence)", "name": "Discord bogata prisotnost (Rich Presence)",

View File

@ -3,7 +3,56 @@
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "Dështoi në ekzekutimin e plugin-it {{pluginName}}::{{contextName}}", "execute-failed": "Dështoi në ekzekutimin e plugin-it {{pluginName}}::{{contextName}}",
"executed-at-ms": "Shtojca {{pluginName}}::{{contextName}} u ekzekutua në {{ms}}ms" "executed-at-ms": "Shtojca {{pluginName}}::{{contextName}} u ekzekutua në {{ms}}ms",
"initialize-failed": "Dështoi ekzekutimi i plugin-it \"{{pluginName}}\"",
"load-all": "Duke ngarkuar të gjithe plugins",
"load-failed": "Dështoi në ngarkimin e plugin-it \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" u ngarkua",
"unload-failed": "Shkarkimi i plugin-it \"{{pluginName}}\" dështoi",
"unloaded": "Plugin \"{{pluginName}}\" u shkarkua"
}
}
},
"language": {
"name": "Emri i gjuhës në anglisht. p.sh. japonisht, koreanisht, anglisht, rusisht"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Ngarkimi përfundoi. DevTools u hap."
},
"i18n": {
"loaded": "i18n i ngarkuar"
},
"second-instance": {
"receive-command": "U mor komanda mbi protokollin: \"{{command}}\""
},
"theme": {
"css-file-not-found": "Skedari CSS \"{{cssFile}}\" nuk ekziston, duke u injoruar"
},
"unresponsive": {
"details": "Gabim i Papërgjigjes!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Duke pastruar memorien e përkohshme të aplikacionit"
},
"window": {
"tried-to-render-offscreen": "Dritarja u përpoq të renderohej jashtë ekranit, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menuja është e fshehur, përdorni 'Alt' për ta shfaqur (ose 'Escape' nëse përdorni Menunë brenda aplikacionit)",
"message": "Fshehja e menusë është aktivizuar",
"title": "Fshih Menunë Aktivizuar"
},
"need-to-restart": {
"buttons": {
"later": "Më vonë",
"restart-now": "Rinisni Tani"
},
"detail": "\"{{pluginName}}\" kërkon një restart që të hyjë në fuqi",
"message": "\"{{pluginName}}\" kerkon restart"
} }
} }
} }

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naziv prozora", "label": "Prilagođeni naziv prozora",
"prompt": { "prompt": {
"label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)", "label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)",
"placeholder": "Primer: YouTube Muzika" "placeholder": "Primer: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Ponovo pokreni aplikaciju", "restart": "Ponovo pokreni aplikaciju",
"show": "Prikaži prozor", "show": "Prikaži prozor",
"tooltip": { "tooltip": {
"default": "YouTube Muzika", "default": "{{applicationName}}",
"with-song-info": "YouTube Muzika: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Omogući postavljanje teme \"seekbar\"-a"
}, },
"name": "Paleta boja albuma" "name": "Paleta boja albuma"
}, },
@ -287,7 +288,7 @@
"name": "Ambijentalni režim" "name": "Ambijentalni režim"
}, },
"amuse": { "amuse": {
"description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u YouTube Muziku", "description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u {{applicationName}}",
"name": "Zabavi", "name": "Zabavi",
"response": { "response": {
"query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri." "query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Ime host-a" "label": "Ime host-a"
}, },
"https": {
"label": "HTTPS i Sertifikati",
"submenu": {
"cert": {
"dialogTitle": "Izaberi HTTPS datoteku sertifikata",
"label": "Datoteka sertifikata (.crt/.pem)"
},
"enable-https": {
"label": "Omogući HTTPS"
},
"key": {
"dialogTitle": "Izaberi HTTPS datoteku privatnog ključa",
"label": "Datoteka privatnog ključa (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
@ -369,11 +386,11 @@
"name": "Zamuti navigacioni meni" "name": "Zamuti navigacioni meni"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Preskoči starosnu verifikaciju za YouTube", "description": "Preskoči starosnu verifikaciju za Music Player",
"name": "Preskoči starosna ograničenja" "name": "Preskoči starosna ograničenja"
}, },
"captions-selector": { "captions-selector": {
"description": "Odabir prevoda za numere/audio trake na YouTube Muzici", "description": "Odabir prevoda za numere/audio trake na {{applicationName}}",
"menu": { "menu": {
"autoload": "Automatski odaberi prethodno odabrani prevod", "autoload": "Automatski odaberi prethodno odabrani prevod",
"disable-captions": "Podrazumevano bez prevoda" "disable-captions": "Podrazumevano bez prevoda"
@ -456,14 +473,14 @@
"disconnected": "Nije povezano", "disconnected": "Nije povezano",
"hide-duration-left": "Sakrij preostalo vreme", "hide-duration-left": "Sakrij preostalo vreme",
"hide-github-button": "Sakrij dugme sa GitHub linkom", "hide-github-button": "Sakrij dugme sa GitHub linkom",
"play-on-youtube-music": "Reprodukuj na YouTube Muzici", "play-on-application": "Reprodukuj na {{applicationName}}",
"set-inactivity-timeout": "Podesi tajmer za neaktivnost", "set-inactivity-timeout": "Podesi tajmer za neaktivnost",
"set-status-display-type": { "set-status-display-type": {
"label": "Tekst statusa", "label": "Tekst statusa",
"submenu": { "submenu": {
"application": "Slušanje {{applicationName}}",
"artist": "Slušanje {artist}", "artist": "Slušanje {artist}",
"title": "Slušanje {song title}", "title": "Slušanje {song title}"
"youtube-music": "Slušanje YouTube muzike"
} }
} }
}, },

View File

@ -86,7 +86,7 @@
"copy-current-url": "Kopiera nuvarande länk", "copy-current-url": "Kopiera nuvarande länk",
"go-back": "Gå tillbaka", "go-back": "Gå tillbaka",
"go-forward": "Gå framåt", "go-forward": "Gå framåt",
"quit": "Avsluta", "quit": "Stäng",
"restart": "Starta om appen" "restart": "Starta om appen"
} }
}, },
@ -154,7 +154,7 @@
"label": "Anpassad titel på fönstret", "label": "Anpassad titel på fönstret",
"prompt": { "prompt": {
"label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)", "label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)",
"placeholder": "Exempelvis: YouTube Music" "placeholder": "Exempelvis: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Starta om appen", "restart": "Starta om appen",
"show": "Visa fönster", "show": "Visa fönster",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Aktivera temaanpassning av uppspelningsreglaget"
}, },
"name": "Albumfärgtema" "name": "Albumfärgtema"
}, },
@ -287,7 +288,7 @@
"name": "Ambiensläge" "name": "Ambiensläge"
}, },
"amuse": { "amuse": {
"description": "Lägger till stöd för YouTube Music i Amuse Now Playing-widgeten av 6K Labs", "description": "Lägger till stöd för {{applicationName}} i Amuse Now Playing-widgeten av 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt." "query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Värdnamn" "label": "Värdnamn"
}, },
"https": {
"label": "HTTPS och certifikat",
"submenu": {
"cert": {
"dialogTitle": "Välj HTTPS-certifikatfil",
"label": "Certifikatfil (.crt/.pem)"
},
"enable-https": {
"label": "Aktivera HTTPS"
},
"key": {
"dialogTitle": "Välj privat nyckelfil (.key/.pem)",
"label": "Privat nyckelfil (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
@ -369,11 +386,11 @@
"name": "Suddigt Navigeringsfält" "name": "Suddigt Navigeringsfält"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Hoppa över YouTubes åldersverifiering", "description": "Hoppa över Music Player åldersverifiering",
"name": "Hoppa Över Åldersbegränsningar" "name": "Hoppa Över Åldersbegränsningar"
}, },
"captions-selector": { "captions-selector": {
"description": "Välj textning för YouTube Music-ljudspår", "description": "Välj textning för {{applicationName}}-ljudspår",
"menu": { "menu": {
"autoload": "Välj automatiskt senast använda textning", "autoload": "Välj automatiskt senast använda textning",
"disable-captions": "Ingen textning som standard" "disable-captions": "Ingen textning som standard"
@ -456,14 +473,14 @@
"disconnected": "Frånkopplad", "disconnected": "Frånkopplad",
"hide-duration-left": "Dölj återstående tid", "hide-duration-left": "Dölj återstående tid",
"hide-github-button": "Dölj knapp för GitHub-länk", "hide-github-button": "Dölj knapp för GitHub-länk",
"play-on-youtube-music": "Spela på YouTube Music", "play-on-application": "Spela på {{applicationName}}",
"set-inactivity-timeout": "Ställ in inaktivitetstid", "set-inactivity-timeout": "Ställ in inaktivitetstid",
"set-status-display-type": { "set-status-display-type": {
"label": "Statusmeddelande", "label": "Statusmeddelande",
"submenu": { "submenu": {
"application": "Lyssnar på {{applicationName}}",
"artist": "Lyssnar på {artist}", "artist": "Lyssnar på {artist}",
"title": "Lyssnar på {song title}", "title": "Lyssnar på {song title}"
"youtube-music": "Lyssnar på YouTube Music"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "தனிப்பயன் சாளர தலைப்பு", "label": "தனிப்பயன் சாளர தலைப்பு",
"prompt": { "prompt": {
"label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)", "label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)",
"placeholder": "எடுத்துக்காட்டு: YouTube இசை" "placeholder": "எடுத்துக்காட்டு: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்", "restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்",
"show": "சாளரத்தைக் காட்டு", "show": "சாளரத்தைக் காட்டு",
"tooltip": { "tooltip": {
"default": "யூடியூப் இசை", "default": "{{applicationName}}",
"with-song-info": "YouTube இசை: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "சுற்றுப்புற முறை" "name": "சுற்றுப்புற முறை"
}, },
"amuse": { "amuse": {
"description": "6K ஆய்வகங்களால் இப்போது விட்செட்டில் விளையாடும் Amuse க்கு YouTube இசை ஆதரவை சேர்க்கிறது", "description": "6K ஆய்வகங்களால் இப்போது விட்செட்டில் விளையாடும் Amuse க்கு Music Player இசை ஆதரவை சேர்க்கிறது",
"name": "பொழுதுபோக்கு", "name": "பொழுதுபோக்கு",
"response": { "response": {
"query": "பநிஇ சேவையகம் இயங்குகிறது. பாடல் தகவலைப் பெற /வினவல்." "query": "பநிஇ சேவையகம் இயங்குகிறது. பாடல் தகவலைப் பெற /வினவல்."
@ -369,11 +369,11 @@
"name": "மங்கலான வழிசெலுத்தல் பட்டி" "name": "மங்கலான வழிசெலுத்தல் பட்டி"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube அகவை சரிபார்ப்பு பைபாச்", "description": "Music Player அகவை சரிபார்ப்பு பைபாச்",
"name": "அகவை கட்டுப்பாடுகள் பைபாச்" "name": "அகவை கட்டுப்பாடுகள் பைபாச்"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்", "description": "{{applicationName}} இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்",
"menu": { "menu": {
"autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்", "autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்",
"disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை" "disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை"
@ -456,14 +456,14 @@
"disconnected": "துண்டிக்கப்பட்டது", "disconnected": "துண்டிக்கப்பட்டது",
"hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்", "hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்",
"hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்", "hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்",
"play-on-youtube-music": "யூடியூப் இசையில் விளையாடுங்கள்", "play-on-application": "யூடியூப் இசையில் விளையாடுங்கள்",
"set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது", "set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது",
"set-status-display-type": { "set-status-display-type": {
"label": "நிலை உரை", "label": "நிலை உரை",
"submenu": { "submenu": {
"application": "வலையொளி இசையில் கேட்கிறது",
"artist": "{கலைஞர்} பாடலைக் கேட்கிறேன்", "artist": "{கலைஞர்} பாடலைக் கேட்கிறேன்",
"title": "பாடலைக் கேட்கிறேன்{பாடல் தலைப்பு}", "title": "பாடலைக் கேட்கிறேன்{பாடல் தலைப்பு}"
"youtube-music": "வலையொளி இசையில் கேட்கிறது"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "ชื่อหน้าต่างกำหนดเอง", "label": "ชื่อหน้าต่างกำหนดเอง",
"prompt": { "prompt": {
"label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)", "label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)",
"placeholder": "ตัวอย่าง: Youtube Music" "placeholder": "ตัวอย่าง: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "รีสตาร์ตแอป", "restart": "รีสตาร์ตแอป",
"show": "แสดงหน้าต่าง", "show": "แสดงหน้าต่าง",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "โหมดสภาพแวดล้อม" "name": "โหมดสภาพแวดล้อม"
}, },
"amuse": { "amuse": {
"description": "เพิ่มการรองรับ Youtube Music สำหรับ Widget Amuse Now Playing ของ 6K Labs", "description": "เพิ่มการรองรับ {{applicationName}} สำหรับ Widget Amuse Now Playing ของ 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง" "query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง"
@ -369,11 +369,11 @@
"name": "เบลอแถบนำทาง" "name": "เบลอแถบนำทาง"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "ข้ามการตรวจสอบอายุของ YouTube", "description": "ข้ามการตรวจสอบอายุของ Music Player",
"name": "ข้ามข้อจำกัดอายุ" "name": "ข้ามข้อจำกัดอายุ"
}, },
"captions-selector": { "captions-selector": {
"description": "ตัวเลือกคำบรรยายสำหรับเพลงใน YouTube Music", "description": "ตัวเลือกคำบรรยายสำหรับเพลงใน {{applicationName}}",
"menu": { "menu": {
"autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ", "autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ",
"disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น" "disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น"
@ -456,14 +456,14 @@
"disconnected": "ตัดการเชื่อมต่อ", "disconnected": "ตัดการเชื่อมต่อ",
"hide-duration-left": "ซ่อนระยะเวลาที่เหลือ", "hide-duration-left": "ซ่อนระยะเวลาที่เหลือ",
"hide-github-button": "ซ่อนปุ่มลิงก์ GitHub", "hide-github-button": "ซ่อนปุ่มลิงก์ GitHub",
"play-on-youtube-music": "เล่นบน YouTube Music", "play-on-application": "เล่นบน {{applicationName}}",
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม", "set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม",
"set-status-display-type": { "set-status-display-type": {
"label": "ข้อความสถานะ", "label": "ข้อความสถานะ",
"submenu": { "submenu": {
"artist": "กำลังฟัง {ชื่อนักร้อง}", "artist": "กำลังฟัง {ชื่อนักร้อง}",
"title": "กำลังฟัง {ชื่อเพลง}", "title": "กำลังฟัง {ชื่อเพลง}",
"youtube-music": "กำลังฟัง YouTube Music" "application": "กำลังฟัง {{applicationName}}"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Özel pencere başlığı", "label": "Özel pencere başlığı",
"prompt": { "prompt": {
"label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)", "label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)",
"placeholder": "Örnek: Youtube Music" "placeholder": "Örnek: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Yeniden başlat", "restart": "Yeniden başlat",
"show": "Pencereyi görüntüle", "show": "Pencereyi görüntüle",
"tooltip": { "tooltip": {
"default": "YouTube Müzik", "default": "{{applicationName}}",
"with-song-info": "YouTube Müzik: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Arama çubuğu temalarını etkinleştir"
}, },
"name": "Albüm Renk Teması" "name": "Albüm Renk Teması"
}, },
@ -287,7 +288,7 @@
"name": "Ambiyans Modu" "name": "Ambiyans Modu"
}, },
"amuse": { "amuse": {
"description": "6K Labs'ın Amuse oynatma widget'ı için YouTube Music desteği ekler", "description": "6K Labs'ın Amuse oynatma widget'ı için {{applicationName}} desteği ekler",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz." "query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz."
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "Ana bilgisayar adı" "label": "Ana bilgisayar adı"
}, },
"https": {
"label": "HTTPS & Sertifikalar",
"submenu": {
"cert": {
"dialogTitle": "HTTPS sertifika dosyası seç",
"label": "Sertifika dosyası (.crt/.pem)"
},
"enable-https": {
"label": "HTTPS'i aktifleştir"
},
"key": {
"dialogTitle": "HTTPS özel anahtar dosyası seç",
"label": "Özel anahtar dosyası (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Port" "label": "Port"
} }
@ -369,11 +386,11 @@
"name": "Navigasyon barını bulanıklaştır" "name": "Navigasyon barını bulanıklaştır"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube yaş doğrulamasını atla", "description": "Music Player yaş doğrulamasını atla",
"name": "Yaş doğrulamasını atla" "name": "Yaş doğrulamasını atla"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music için altyazı seçici", "description": "{{applicationName}} için altyazı seçici",
"menu": { "menu": {
"autoload": "Son kullanılan altyazıyı otomatik olarak seç", "autoload": "Son kullanılan altyazıyı otomatik olarak seç",
"disable-captions": "Varsayılan olarak altyazı yok" "disable-captions": "Varsayılan olarak altyazı yok"
@ -456,14 +473,14 @@
"disconnected": "Bağlantı kesildi", "disconnected": "Bağlantı kesildi",
"hide-duration-left": "Kalan süreyi gizle", "hide-duration-left": "Kalan süreyi gizle",
"hide-github-button": "GitHub bağlantısını gizle", "hide-github-button": "GitHub bağlantısını gizle",
"play-on-youtube-music": "YouTube Music de oynat", "play-on-application": "{{applicationName}} de oynat",
"set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla", "set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla",
"set-status-display-type": { "set-status-display-type": {
"label": "Durum metni", "label": "Durum metni",
"submenu": { "submenu": {
"application": "{{applicationName}} Dinleniyor",
"artist": "{artist} Dinleniyor", "artist": "{artist} Dinleniyor",
"title": "{song title} Dinleniyor", "title": "{song title} Dinleniyor"
"youtube-music": "YouTube Müzik Dinleniyor"
} }
} }
}, },

View File

@ -150,6 +150,13 @@
"visual-tweaks": { "visual-tweaks": {
"label": "Візуальні налаштування", "label": "Візуальні налаштування",
"submenu": { "submenu": {
"custom-window-title": {
"label": "Налаштування заголовка вікна",
"prompt": {
"label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)",
"placeholder": "Приклад: {{applicationName}}"
}
},
"like-buttons": { "like-buttons": {
"default": "За замовчуванням", "default": "За замовчуванням",
"force-show": "Завжди показувати", "force-show": "Завжди показувати",
@ -201,8 +208,8 @@
"restart": "Перезапустити програму", "restart": "Перезапустити програму",
"show": "Показати вікно", "show": "Показати вікно",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +287,7 @@
"name": "Режим навколишнього середовища" "name": "Режим навколишнього середовища"
}, },
"amuse": { "amuse": {
"description": "Додає підтримку YouTube Music для віджета Amuse now playing від 6K Labs", "description": "Додає підтримку {{applicationName}} для віджета Amuse now playing від 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню." "query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню."
@ -362,11 +369,11 @@
"name": "Розмиття панелі навігації" "name": "Розмиття панелі навігації"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Обхід перевірки віку на YouTube", "description": "Обхід перевірки віку на Music Player",
"name": "Обхід вікових обмежень" "name": "Обхід вікових обмежень"
}, },
"captions-selector": { "captions-selector": {
"description": "Вибір субтитрів для аудіодоріжок YouTube Music", "description": "Вибір субтитрів для аудіодоріжок {{applicationName}}",
"menu": { "menu": {
"autoload": "Автоматичний вибір останніх використаних субтитрів", "autoload": "Автоматичний вибір останніх використаних субтитрів",
"disable-captions": "За замовчуванням субтитри відсутні" "disable-captions": "За замовчуванням субтитри відсутні"
@ -381,6 +388,11 @@
}, },
"templates": { "templates": {
"title": "Відкрити селектор субтитрів" "title": "Відкрити селектор субтитрів"
},
"toast": {
"caption-changed": "Субтитри змінені на {{language}}",
"caption-disabled": "Субтитри відключені",
"no-captions": "Субтитри не доступні для цієї пісні"
} }
}, },
"compact-sidebar": { "compact-sidebar": {
@ -409,6 +421,19 @@
} }
} }
}, },
"custom-output-device": {
"description": "Налаштування власного пристрою для відтворення пісень",
"menu": {
"device-selector": "Обрати пристрій"
},
"name": "Спеціальний пристрій виводу",
"prompt": {
"device-selector": {
"label": "Оберіть пристрій для виводу медіа",
"title": "Оберіть пристрій виводу"
}
}
},
"disable-autoplay": { "disable-autoplay": {
"description": "Запуск пісні в режимі \"пауза\"", "description": "Запуск пісні в режимі \"пауза\"",
"menu": { "menu": {
@ -431,8 +456,16 @@
"disconnected": "Від'єднано", "disconnected": "Від'єднано",
"hide-duration-left": "Приховати тривалість, яка залишилася", "hide-duration-left": "Приховати тривалість, яка залишилася",
"hide-github-button": "Приховати посилання на GitHub", "hide-github-button": "Приховати посилання на GitHub",
"play-on-youtube-music": "Слухати на YouTube Music", "play-on-application": "Слухати на {{applicationName}}",
"set-inactivity-timeout": "Встановити тайм-аут бездіяльності" "set-inactivity-timeout": "Встановити тайм-аут бездіяльності",
"set-status-display-type": {
"label": "Статус",
"submenu": {
"artist": "Ви слухаєте {artist}",
"application": "Відтворення з {{applicationName}}",
"title": "Ви слухаєте {song title}"
}
}
}, },
"name": "Активність Discord", "name": "Активність Discord",
"prompt": { "prompt": {
@ -600,7 +633,15 @@
}, },
"navigation": { "navigation": {
"description": "Стрілки навігації Вперед/Назад безпосередньо інтегровані в інтерфейс, як у вашому браузері, який ви використовуєте", "description": "Стрілки навігації Вперед/Назад безпосередньо інтегровані в інтерфейс, як у вашому браузері, який ви використовуєте",
"name": "Навігація" "name": "Навігація",
"templates": {
"back": {
"title": "Перейти на минулу сторінку"
},
"forward": {
"title": "Перейти на наступну сторінку"
}
}
}, },
"no-google-login": { "no-google-login": {
"description": "Видалити кнопки та посилання для входу через Google з інтерфейсу", "description": "Видалити кнопки та посилання для входу через Google з інтерфейсу",
@ -692,7 +733,12 @@
} }
}, },
"description": "Дозволяє змінювати якість відео за допомогою кнопки на відео оверлеї", "description": "Дозволяє змінювати якість відео за допомогою кнопки на відео оверлеї",
"name": "Зміна якості відео" "name": "Зміна якості відео",
"renderer": {
"quality-settings-button": {
"label": "Відкрити налаштування якості плеєру"
}
}
}, },
"scrobbler": { "scrobbler": {
"description": "Додає підтримку скроблінгу (last.fm, Listenbrainz тощо)", "description": "Додає підтримку скроблінгу (last.fm, Listenbrainz тощо)",
@ -711,6 +757,7 @@
"listenbrainz": { "listenbrainz": {
"token": "Ввести токен користувача ListenBrainz" "token": "Ввести токен користувача ListenBrainz"
}, },
"scrobble-alternative-artist": "Використати іншого виконавця",
"scrobble-alternative-title": "Використовувати альтернативні назви", "scrobble-alternative-title": "Використовувати альтернативні назви",
"scrobble-other-media": "Скробилити інші медіа" "scrobble-other-media": "Скробилити інші медіа"
}, },
@ -762,7 +809,7 @@
"synced-lyrics": { "synced-lyrics": {
"description": "Додає синхронізовані тексти до пісень використовуючи провайдери, такі як LRClib.", "description": "Додає синхронізовані тексти до пісень використовуючи провайдери, такі як LRClib.",
"errors": { "errors": {
"fetch": "⚠️ - При завантаженні слів пісні сталась помилка. Спробуйте пізніше.", "fetch": "⚠️ - При завантаженні слів пісні сталась помилка.\nСпробуйте будь ласка пізніше.",
"not-found": "⚠️ До цієї пісні текст не знайдено." "not-found": "⚠️ До цієї пісні текст не знайдено."
}, },
"menu": { "menu": {
@ -796,6 +843,14 @@
"label": "Зробити текст пісні ідеально синхронізованим", "label": "Зробити текст пісні ідеально синхронізованим",
"tooltip": "Обчисли до мілісекунд відображення наступного рядка (може мати невеликий вплив на продуктивність)" "tooltip": "Обчисли до мілісекунд відображення наступного рядка (може мати невеликий вплив на продуктивність)"
}, },
"preferred-provider": {
"label": "Пріорітетний Провайдер",
"none": {
"label": "Жоден",
"tooltip": "Нема провайдера за замовчуванням"
},
"tooltip": "Оберіть якого провайдера використовувати за замовчуванням"
},
"romanization": { "romanization": {
"label": "Транслітерувати текст пісень", "label": "Транслітерувати текст пісень",
"tooltip": "Якщо текст пісні іншою мовою, спробувати його відобразити латинською версією." "tooltip": "Якщо текст пісні іншою мовою, спробувати його відобразити латинською версією."
@ -828,6 +883,27 @@
"description": "Додає віджет TouchBar для користувачів macOS", "description": "Додає віджет TouchBar для користувачів macOS",
"name": "TouchBar" "name": "TouchBar"
}, },
"transparent-player": {
"description": "Зробити вікно програми прозорим",
"menu": {
"opacity": {
"label": "Прозорість",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Тип",
"submenu": {
"acrylic": "Акриловий",
"mica": "Міка",
"none": "Жоден",
"tabbed": "З роздільниками"
}
}
},
"name": "Прозорий Плеєр"
},
"tuna-obs": { "tuna-obs": {
"description": "Інтеграція з плагіном Tuna для OBS", "description": "Інтеграція з плагіном Tuna для OBS",
"name": "Tuna OBS" "name": "Tuna OBS"
@ -859,7 +935,8 @@
}, },
"name": "Перемикач відео", "name": "Перемикач відео",
"templates": { "templates": {
"button-song": "Пісня" "button-song": "Пісня",
"button-video": "Відео"
} }
}, },
"visualizer": { "visualizer": {

View File

@ -150,6 +150,13 @@
"visual-tweaks": { "visual-tweaks": {
"label": "بصری تبدیلیاں", "label": "بصری تبدیلیاں",
"submenu": { "submenu": {
"custom-window-title": {
"label": "اپنی مرضی کا ونڈو عنوان",
"prompt": {
"label": "اپنی مرضی کا ونڈو عنوان درج کریں: (بند کرنے کے لیے خالی چھوڑ دیں)",
"placeholder": "مثال: پیئر ڈیسک ٹاپ"
}
},
"like-buttons": { "like-buttons": {
"default": "پہلے سے طے شدہ", "default": "پہلے سے طے شدہ",
"force-show": "زبردستی دکھائیں", "force-show": "زبردستی دکھائیں",
@ -198,7 +205,24 @@
"play-pause": "چلائیں/روکیں", "play-pause": "چلائیں/روکیں",
"previous": "پچھلا", "previous": "پچھلا",
"quit": "باہر نکلیں", "quit": "باہر نکلیں",
"restart": "ایپ دوبارہ شروع کریں" "restart": "ایپ دوبارہ شروع کریں",
"show": "ونڈو دکھائیں",
"tooltip": {
"default": "پیئر ڈیسک ٹاپ"
}
}
},
"plugins": {
"ad-speedup": {
"description": "اگر کوئی اشتہار چلے تو آواز بند کرکے پلے بیک کی رفتار 16 گناہ کردیں",
"name": "اشتہار کی رفتار"
},
"adblocker": {
"description": "شروغ سے تمام اشتہارات اور ٹریکنگ بلاک کردیں",
"menu": {
"blocker": "بلاکر"
},
"name": "ایڈ بلاکر"
} }
} }
} }

View File

@ -154,7 +154,7 @@
"label": "Tiêu đề cửa sổ tùy chỉnh", "label": "Tiêu đề cửa sổ tùy chỉnh",
"prompt": { "prompt": {
"label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)", "label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)",
"placeholder": "Ví dụ: Youtube Music" "placeholder": "Ví dụ: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Khởi động lại ứng dụng", "restart": "Khởi động lại ứng dụng",
"show": "Hiện cửa sổ", "show": "Hiện cửa sổ",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{title}} - {{artist}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Chế độ Môi trường xung quanh" "name": "Chế độ Môi trường xung quanh"
}, },
"amuse": { "amuse": {
"description": "Thêm hỗ trợ YouTube Music cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs", "description": "Thêm hỗ trợ {{applicationName}} cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát." "query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát."
@ -320,6 +320,13 @@
"hostname": { "hostname": {
"label": "Tên máy chủ" "label": "Tên máy chủ"
}, },
"https": {
"submenu": {
"enable-https": {
"label": "Bật HTTPS"
}
}
},
"port": { "port": {
"label": "Cổng" "label": "Cổng"
} }
@ -369,11 +376,11 @@
"name": "Làm mờ thanh điều hướng" "name": "Làm mờ thanh điều hướng"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bỏ qua xác minh độ tuổi của YouTube", "description": "Bỏ qua xác minh độ tuổi của Music Player",
"name": "Bỏ qua hạn chế độ tuổi" "name": "Bỏ qua hạn chế độ tuổi"
}, },
"captions-selector": { "captions-selector": {
"description": "Bộ lựa chọn phụ đề cho các bài hát trên Youtube Music", "description": "Bộ lựa chọn phụ đề cho các bài hát trên {{applicationName}}",
"menu": { "menu": {
"autoload": "Tự động chọn phụ đề vừa sử dụng", "autoload": "Tự động chọn phụ đề vừa sử dụng",
"disable-captions": "Không có phụ đề làm mặc định" "disable-captions": "Không có phụ đề làm mặc định"
@ -456,14 +463,14 @@
"disconnected": "Đã ngắt kết nối", "disconnected": "Đã ngắt kết nối",
"hide-duration-left": "Ẩn thời lượng còn lại", "hide-duration-left": "Ẩn thời lượng còn lại",
"hide-github-button": "Ẩn nút liên kết GitHub", "hide-github-button": "Ẩn nút liên kết GitHub",
"play-on-youtube-music": "Phát trong Youtube Music", "play-on-application": "Phát trong {{applicationName}}",
"set-inactivity-timeout": "Đặt thời gian chờ không hoạt động", "set-inactivity-timeout": "Đặt thời gian chờ không hoạt động",
"set-status-display-type": { "set-status-display-type": {
"label": "Văn bản trạng thái", "label": "Văn bản trạng thái",
"submenu": { "submenu": {
"application": "Đang nghe {{applicationName}}",
"artist": "Đang nghe nhạc của {artist}", "artist": "Đang nghe nhạc của {artist}",
"title": "Đang nghe nhạc {song title}", "title": "Đang nghe nhạc {song title}"
"youtube-music": "Đang nghe Youtube Music"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "自定义窗口标题", "label": "自定义窗口标题",
"prompt": { "prompt": {
"label": "输入自定义窗口标题:(留空表示停用)", "label": "输入自定义窗口标题:(留空表示停用)",
"placeholder": "示例:YouTube Music" "placeholder": "示例:{{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "重启应用", "restart": "重启应用",
"show": "显示窗口", "show": "显示窗口",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "{{applicationName}}",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "启用进度条主题"
}, },
"name": "专辑配色主题" "name": "专辑配色主题"
}, },
@ -287,7 +288,7 @@
"name": "沉浸模式" "name": "沉浸模式"
}, },
"amuse": { "amuse": {
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持", "description": "为 6K Labs 的 Amuse 正在播放小部件添加 {{applicationName}} 支持",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。" "query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
@ -320,6 +321,22 @@
"hostname": { "hostname": {
"label": "主机名" "label": "主机名"
}, },
"https": {
"label": "HTTPS & 数字证书",
"submenu": {
"cert": {
"dialogTitle": "选择 HTTPS 证书文件",
"label": "证书文件(.crt/.pem"
},
"enable-https": {
"label": "启用 HTTPS"
},
"key": {
"dialogTitle": "选择 HTTPS 私钥文件",
"label": "私钥文件(.key/.pem"
}
}
},
"port": { "port": {
"label": "端口号" "label": "端口号"
} }
@ -369,11 +386,11 @@
"name": "模糊导航栏" "name": "模糊导航栏"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "绕过 YouTube 年龄验证", "description": "绕过 Music Player 年龄验证",
"name": "绕过年龄验证" "name": "绕过年龄验证"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music 音轨字幕选择器", "description": "{{applicationName}} 音轨字幕选择器",
"menu": { "menu": {
"autoload": "自动选择上次使用的字幕", "autoload": "自动选择上次使用的字幕",
"disable-captions": "默认无字幕" "disable-captions": "默认无字幕"
@ -456,14 +473,14 @@
"disconnected": "已断开连接", "disconnected": "已断开连接",
"hide-duration-left": "隐藏剩余时长", "hide-duration-left": "隐藏剩余时长",
"hide-github-button": "隐藏 GitHub 链接按钮", "hide-github-button": "隐藏 GitHub 链接按钮",
"play-on-youtube-music": "转至 YouTube Music 播放", "play-on-application": "转至 {{applicationName}} 播放",
"set-inactivity-timeout": "设置非活跃时长", "set-inactivity-timeout": "设置非活跃时长",
"set-status-display-type": { "set-status-display-type": {
"label": "状态文本", "label": "状态文本",
"submenu": { "submenu": {
"application": "在听 {{applicationName}}",
"artist": "在听 {artist}", "artist": "在听 {artist}",
"title": "在听 {song title}", "title": "在听 {song title}"
"youtube-music": "在听 YouTube Music"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "自訂窗口標題", "label": "自訂窗口標題",
"prompt": { "prompt": {
"label": "輸入自訂視窗標題: (留空將其停用)", "label": "輸入自訂視窗標題: (留空將其停用)",
"placeholder": "例如: YouTube 音樂" "placeholder": "例如: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "重新啟動應用程式", "restart": "重新啟動應用程式",
"show": "顯示視窗", "show": "顯示視窗",
"tooltip": { "tooltip": {
"default": "YouTube 音樂", "default": "{{applicationName}}",
"with-song-info": "YouTube 音樂: {{artist}} - {{title}}" "with-song-info": "{{applicationName}}: {{artist}} - {{title}}"
} }
} }
}, },
@ -237,7 +237,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "啟用進度條主題樣式"
}, },
"name": "隨歌曲色調變更主題" "name": "隨歌曲色調變更主題"
}, },
@ -287,7 +288,7 @@
"name": "微光效果" "name": "微光效果"
}, },
"amuse": { "amuse": {
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 YouTube Music 現正播放資訊", "description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 {{applicationName}} 現正播放資訊",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。" "query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。"
@ -369,11 +370,11 @@
"name": "模糊導覽列" "name": "模糊導覽列"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "繞過 YouTube 年齡驗證", "description": "繞過年齡驗證",
"name": "繞過年齡驗證" "name": "繞過年齡驗證"
}, },
"captions-selector": { "captions-selector": {
"description": "Youtube Music 音軌字幕選項", "description": "{{applicationName}} 音軌字幕選項",
"menu": { "menu": {
"autoload": "自動選擇上次使用的字幕", "autoload": "自動選擇上次使用的字幕",
"disable-captions": "預設無字幕" "disable-captions": "預設無字幕"
@ -456,14 +457,14 @@
"disconnected": "已斷開連線", "disconnected": "已斷開連線",
"hide-duration-left": "隱藏音樂剩餘時間狀態", "hide-duration-left": "隱藏音樂剩餘時間狀態",
"hide-github-button": "隱藏 GitHub 頁面按鈕", "hide-github-button": "隱藏 GitHub 頁面按鈕",
"play-on-youtube-music": "顯示 Play on YouTube Music 按鈕", "play-on-application": "顯示 Play on {{applicationName}} 按鈕",
"set-inactivity-timeout": "設定閒置狀態時長", "set-inactivity-timeout": "設定閒置狀態時長",
"set-status-display-type": { "set-status-display-type": {
"label": "狀態樣式", "label": "狀態樣式",
"submenu": { "submenu": {
"artist": "正在聆聽 {artist} 的歌曲", "artist": "正在聆聽 {artist} 的歌曲",
"title": "正在聆聽 {song title}", "application": "正在聆聽 {{applicationName}}",
"youtube-music": "正在聆聽 YouTube Music" "title": "正在聆聽 {song title}"
} }
} }
}, },

View File

@ -7,7 +7,7 @@
within the `createMainWindow` function. within the `createMainWindow` function.
Archived link for reference: Archived link for reference:
https://github.com/th-ch/youtube-music/blob/a3104fda4b0d58b076d0c737111636a66e468acc/src/index.ts#L407-L443 https://github.com/pear-devs/pear-desktop/blob/a3104fda4b0d58b076d0c737111636a66e468acc/src/index.ts#L407-L443
--> -->

View File

@ -14,7 +14,8 @@ import {
protocol, protocol,
type BrowserWindowConstructorOptions, type BrowserWindowConstructorOptions,
} from 'electron'; } from 'electron';
import enhanceWebRequest, { import {
enhanceWebRequest,
type BetterSession, type BetterSession,
} from '@jellybrick/electron-better-web-request'; } from '@jellybrick/electron-better-web-request';
import is from 'electron-is'; import is from 'electron-is';
@ -43,7 +44,7 @@ import {
setupProtocolHandler, setupProtocolHandler,
} from '@/providers/protocol-handler'; } from '@/providers/protocol-handler';
import youtubeMusicCSS from '@/youtube-music.css?inline'; import musicPlayerCss from '@/music-player.css?inline';
import { import {
forceLoadMainPlugin, forceLoadMainPlugin,
@ -53,7 +54,7 @@ import {
} from '@/loader/main'; } from '@/loader/main';
import { LoggerPrefix } from '@/utils'; import { LoggerPrefix } from '@/utils';
import { loadI18n, setLanguage, t } from '@/i18n'; import { APPLICATION_NAME, loadI18n, setLanguage, t } from '@/i18n';
import ErrorHtmlAsset from '@assets/error.html?asset'; import ErrorHtmlAsset from '@assets/error.html?asset';
@ -104,11 +105,6 @@ protocol.registerSchemesAsPrivileged([
{ scheme: 'mailto', privileges: { standard: true } }, { scheme: 'mailto', privileges: { standard: true } },
]); ]);
// https://github.com/electron/electron/issues/46538#issuecomment-2808806722
if (is.linux()) {
app.commandLine.appendSwitch('gtk-version', '3');
}
// Ozone platform hint: Required for Wayland support // Ozone platform hint: Required for Wayland support
app.commandLine.appendSwitch('ozone-platform-hint', 'auto'); app.commandLine.appendSwitch('ozone-platform-hint', 'auto');
// SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt) // SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt)
@ -131,7 +127,9 @@ if (config.get('options.disableHardwareAcceleration')) {
if (is.linux()) { if (is.linux()) {
// Overrides WM_CLASS for X11 to correspond to icon filename // Overrides WM_CLASS for X11 to correspond to icon filename
app.setName('com.github.th_ch.youtube_music'); app.setName(
'com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063',
);
// Stops chromium from launching its own MPRIS service // Stops chromium from launching its own MPRIS service
if (await config.plugins.isEnabled('shortcuts')) { if (await config.plugins.isEnabled('shortcuts')) {
@ -165,11 +163,11 @@ electronDebug({
showDevTools: false, // Disable automatic devTools on new window showDevTools: false, // Disable automatic devTools on new window
}); });
let icon = 'assets/youtube-music.png'; let icon = 'assets/icon.png';
if (process.platform === 'win32') { if (process.platform === 'win32') {
icon = 'assets/generated/icon.ico'; icon = 'assets/generated/icons/win/icon.ico';
} else if (process.platform === 'darwin') { } else if (process.platform === 'darwin') {
icon = 'assets/generated/icon.icns'; icon = 'assets/generated/icons/mac/icon.icns';
} }
function onClosed() { function onClosed() {
@ -178,7 +176,7 @@ function onClosed() {
mainWindow = null; mainWindow = null;
} }
ipcMain.handle('ytmd:get-main-plugin-names', async () => ipcMain.handle('peard:get-main-plugin-names', async () =>
Object.keys(await mainPlugins()), Object.keys(await mainPlugins()),
); );
@ -186,14 +184,14 @@ const initHook = async (win: BrowserWindow) => {
const allPluginStubs = await allPlugins(); const allPluginStubs = await allPlugins();
ipcMain.handle( ipcMain.handle(
'ytmd:get-config', 'peard:get-config',
(_, id: string) => (_, id: string) =>
deepmerge( deepmerge(
allPluginStubs[id].config ?? { enabled: false }, allPluginStubs[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {}, config.get(`plugins.${id}`) ?? {},
) as PluginConfig, ) as PluginConfig,
); );
ipcMain.handle('ytmd:set-config', (_, name: string, obj: object) => ipcMain.handle('peard:set-config', (_, name: string, obj: object) =>
config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config), config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config),
); );
@ -292,7 +290,7 @@ const showNeedToRestartDialog = async (id: string) => {
}; };
function initTheme(win: BrowserWindow) { function initTheme(win: BrowserWindow) {
injectCSS(win.webContents, youtubeMusicCSS); injectCSS(win.webContents, musicPlayerCss);
// Load user CSS // Load user CSS
const themes: string[] = config.get('options.themes'); const themes: string[] = config.get('options.themes');
if (Array.isArray(themes)) { if (Array.isArray(themes)) {
@ -503,11 +501,14 @@ async function createMainWindow() {
const url = new URL(event.url); const url = new URL(event.url);
// Workarounds for regions where YTM is restricted // Workarounds for regions where YTM is restricted
if (url.hostname.endsWith('youtube.com') && url.pathname === '/premium') { if (
url.hostname.endsWith('\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com') &&
url.pathname === '/premium'
) {
event.preventDefault(); event.preventDefault();
win.webContents.loadURL( win.webContents.loadURL(
'https://accounts.google.com/ServiceLogin?ltmpl=music&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.youtube.com%252F', 'https://accounts.google.com/ServiceLogin?ltmpl=music&service=\u0079\u006f\u0075\u0074\u0075\u0062\u0065&continue=https%3A%2F%2Fwww.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com%252F',
); );
} }
}); });
@ -660,7 +661,8 @@ app.whenReady().then(async () => {
// Register appID on windows // Register appID on windows
if (is.windows()) { if (is.windows()) {
const appID = 'com.github.th-ch.youtube-music'; const appID =
'com.github.th-ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063';
app.setAppUserModelId(appID); app.setAppUserModelId(appID);
const appLocation = process.execPath; const appLocation = process.execPath;
const appData = app.getPath('appData'); const appData = app.getPath('appData');
@ -675,7 +677,7 @@ app.whenReady().then(async () => {
'Windows', 'Windows',
'Start Menu', 'Start Menu',
'Programs', 'Programs',
'YouTube Music.lnk', `${APPLICATION_NAME}.lnk`,
); );
try { try {
// Check if shortcut is registered and valid // Check if shortcut is registered and valid
@ -695,7 +697,7 @@ app.whenReady().then(async () => {
{ {
target: appLocation, target: appLocation,
cwd: path.dirname(appLocation), cwd: path.dirname(appLocation),
description: 'YouTube Music Desktop App - including custom plugins', description: `${APPLICATION_NAME} Desktop App - including custom plugins`,
appUserModelId: appID, appUserModelId: appID,
}, },
); );
@ -804,7 +806,7 @@ app.whenReady().then(async () => {
}, 2000); }, 2000);
autoUpdater.on('update-available', () => { autoUpdater.on('update-available', () => {
const downloadLink = const downloadLink =
'https://github.com/th-ch/youtube-music/releases/latest'; 'https://github.com/pear-devs/pear-desktop/releases/latest';
const dialogOptions: Electron.MessageBoxOptions = { const dialogOptions: Electron.MessageBoxOptions = {
type: 'info', type: 'info',
buttons: [ buttons: [
@ -943,7 +945,7 @@ function removeContentSecurityPolicy(
!details.responseHeaders['access-control-allow-origin'] && !details.responseHeaders['access-control-allow-origin'] &&
!details.responseHeaders['Access-Control-Allow-Origin'] !details.responseHeaders['Access-Control-Allow-Origin']
) { ) {
details.responseHeaders['access-control-allow-origin'] = ['https://music.youtube.com']; details.responseHeaders['access-control-allow-origin'] = ['https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com'];
} }
} }

View File

@ -19,9 +19,9 @@ export const createContext = <Config extends PluginConfig>(
id: string, id: string,
): RendererContext<Config> => ({ ): RendererContext<Config> => ({
getConfig: () => getConfig: () =>
window.ipcRenderer.invoke('ytmd:get-config', id) as Promise<Config>, window.ipcRenderer.invoke('peard:get-config', id) as Promise<Config>,
setConfig: async (newConfig) => { setConfig: async (newConfig) => {
await window.ipcRenderer.invoke('ytmd:set-config', id, newConfig); await window.ipcRenderer.invoke('peard:set-config', id, newConfig);
}, },
ipc: { ipc: {
send: (event: string, ...args: unknown[]) => { send: (event: string, ...args: unknown[]) => {

View File

@ -22,7 +22,7 @@ import { startingPages } from './providers/extracted-data';
import promptOptions from './providers/prompt-options'; import promptOptions from './providers/prompt-options';
import { getAllMenuTemplate, loadAllMenuPlugins } from './loader/menu'; import { getAllMenuTemplate, loadAllMenuPlugins } from './loader/menu';
import { setLanguage, t } from '@/i18n'; import { APPLICATION_NAME, setLanguage, t } from '@/i18n';
import packageJson from '../package.json'; import packageJson from '../package.json';
@ -235,6 +235,9 @@ export const mainMenuTemplate = async (
type: 'text', type: 'text',
placeholder: t( placeholder: t(
'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.prompt.placeholder', 'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.prompt.placeholder',
{
applicationName: APPLICATION_NAME,
},
), ),
}, },
width: 500, width: 500,
@ -473,7 +476,7 @@ export const mainMenuTemplate = async (
), ),
type: 'normal', type: 'normal',
click() { click() {
const url = 'https://hosted.weblate.org/engage/youtube-music/'; const url = 'https://bit.ly/48n5YF7';
shell.openExternal(url); shell.openExternal(url);
}, },
} as Electron.MenuItemConstructorOptions, } as Electron.MenuItemConstructorOptions,

View File

@ -1,5 +1,5 @@
/** /**
* Overriding YouTube Music style * Overriding default style
*/ */
/* Allow window dragging */ /* Allow window dragging */
@ -49,7 +49,7 @@ ytmusic-cast-button {
display: none !important; display: none !important;
} }
/* Make youtube-music logo un-draggable */ /* Make the logo un-draggable */
ytmusic-nav-bar > div.left-content > a, ytmusic-nav-bar > div.left-content > a,
ytmusic-nav-bar > div.left-content > a > picture > img { ytmusic-nav-bar > div.left-content > a > picture > img {
-webkit-user-drag: none; -webkit-user-drag: none;

View File

@ -10,41 +10,32 @@ const COLOR_KEY = '--ytmusic-album-color';
const DARK_COLOR_KEY = '--ytmusic-album-color-dark'; const DARK_COLOR_KEY = '--ytmusic-album-color-dark';
const RATIO_KEY = '--ytmusic-album-color-ratio'; const RATIO_KEY = '--ytmusic-album-color-ratio';
export default createPlugin< type Config = {
unknown, enabled: boolean;
unknown, ratio: number;
{ enableSeekbar: boolean;
color?: ColorInstance; };
darkColor?: ColorInstance;
playerPage: HTMLElement | null; type Renderer = {
navBarBackground: HTMLElement | null; getMixedColor(
ytmusicPlayerBar: HTMLElement | null; color: string,
playerBarBackground: HTMLElement | null; key: string,
sidebarBig: HTMLElement | null; alpha?: number,
sidebarSmall: HTMLElement | null; ratioMultiply?: number,
ytmusicAppLayout: HTMLElement | null; ): string;
updateColor(alpha: number): void;
onConfigChange(newConfig: Config): void;
};
getMixedColor( export default createPlugin({
color: string,
key: string,
alpha?: number,
ratioMultiply?: number,
): string;
updateColor(alpha: number): void;
},
{
enabled: boolean;
ratio: number;
}
>({
name: () => t('plugins.album-color-theme.name'), name: () => t('plugins.album-color-theme.name'),
description: () => t('plugins.album-color-theme.description'), description: () => t('plugins.album-color-theme.description'),
restartNeeded: false, restartNeeded: false,
config: { config: {
enabled: false, enabled: false,
ratio: 0.5, ratio: 0.5,
}, enableSeekbar: true,
} satisfies Config as Config,
stylesheets: [style], stylesheets: [style],
menu: async ({ getConfig, setConfig }) => { menu: async ({ getConfig, setConfig }) => {
const ratioList = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]; const ratioList = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1];
@ -68,18 +59,28 @@ export default createPlugin<
}, },
})), })),
}, },
{
label: t('plugins.album-color-theme.menu.enable-seekbar'),
type: 'checkbox',
checked: config.enableSeekbar,
click(item) {
setConfig({ enableSeekbar: item.checked });
},
},
]; ];
}, },
renderer: { renderer: {
playerPage: null, playerPage: null as HTMLElement | null,
navBarBackground: null, navBarBackground: null as HTMLElement | null,
ytmusicPlayerBar: null, ytmusicPlayerBar: null as HTMLElement | null,
playerBarBackground: null, playerBarBackground: null as HTMLElement | null,
sidebarBig: null, sidebarBig: null as HTMLElement | null,
sidebarSmall: null, sidebarSmall: null as HTMLElement | null,
ytmusicAppLayout: null, ytmusicAppLayout: null as HTMLElement | null,
color: null as ColorInstance | null,
darkColor: null as ColorInstance | null,
async start({ getConfig }) { start() {
this.playerPage = document.querySelector<HTMLElement>('#player-page'); this.playerPage = document.querySelector<HTMLElement>('#player-page');
this.navBarBackground = document.querySelector<HTMLElement>( this.navBarBackground = document.querySelector<HTMLElement>(
'#nav-bar-background', '#nav-bar-background',
@ -94,14 +95,11 @@ export default createPlugin<
'#mini-guide-background', '#mini-guide-background',
); );
this.ytmusicAppLayout = document.querySelector<HTMLElement>('#layout'); this.ytmusicAppLayout = document.querySelector<HTMLElement>('#layout');
const config = await getConfig();
document.documentElement.style.setProperty(
RATIO_KEY,
`${~~(config.ratio * 100)}%`,
);
}, },
onPlayerApiReady(playerApi) { async onPlayerApiReady(playerApi, { getConfig }) {
const config = await getConfig();
(this as Renderer).onConfigChange(config);
const fastAverageColor = new FastAverageColor(); const fastAverageColor = new FastAverageColor();
document.addEventListener('videodatachange', async (event) => { document.addEventListener('videodatachange', async (event) => {
@ -152,7 +150,7 @@ export default createPlugin<
alpha = value; alpha = value;
} }
} }
this.updateColor(alpha ?? 1); (this as Renderer).updateColor(alpha ?? 1);
}); });
}, },
onConfigChange(config) { onConfigChange(config) {
@ -160,8 +158,15 @@ export default createPlugin<
RATIO_KEY, RATIO_KEY,
`${~~(config.ratio * 100)}%`, `${~~(config.ratio * 100)}%`,
); );
if (config.enableSeekbar) document.body.classList.add('seekbar-theme');
else document.body.classList.remove('seekbar-theme');
}, },
getMixedColor(color: string, key: string, alpha = 1, ratioMultiply) { getMixedColor(
color: string,
key: string,
alpha = 1,
ratioMultiply?: number,
) {
const keyColor = `rgba(var(${key}), ${alpha})`; const keyColor = `rgba(var(${key}), ${alpha})`;
let colorRatio = `var(${RATIO_KEY}, 50%)`; let colorRatio = `var(${RATIO_KEY}, 50%)`;
@ -207,26 +212,39 @@ export default createPlugin<
'--yt-spec-black-pure-alpha-80': 'rgba(0,0,0,0.8)', '--yt-spec-black-pure-alpha-80': 'rgba(0,0,0,0.8)',
'--yt-spec-black-1-alpha-98': 'rgba(40,40,40,0.98)', '--yt-spec-black-1-alpha-98': 'rgba(40,40,40,0.98)',
'--yt-spec-black-1-alpha-95': 'rgba(40,40,40,0.95)', '--yt-spec-black-1-alpha-95': 'rgba(40,40,40,0.95)',
'--paper-toast-background-color': '#323232',
'--ytmusic-search-background': '#030303',
'--paper-slider-knob-color': '#f03',
'--paper-dialog-background-color': '#212121',
'--paper-progress-active-color-1': '#f03',
'--paper-progress-active-color-2': '#ff2791',
'--yt-spec-inverted-background': '#f3f3f3',
'background': 'rgba(3, 3, 3)',
'--ytmusic-background': 'rgba(3, 3, 3)',
}; };
const colorKeyMap: Record<string, string> = {
'background': DARK_COLOR_KEY,
'--ytmusic-background': DARK_COLOR_KEY,
};
const ratioMap: Record<string, number> = {
'--paper-progress-active-color-1': 1.75,
'--paper-progress-active-color-2': 1.75,
'--yt-spec-inverted-background': 1.75,
};
const getMixedColor = (this as Renderer).getMixedColor.bind(this);
Object.entries(variableMap).map(([variable, color]) => { Object.entries(variableMap).map(([variable, color]) => {
const key = colorKeyMap[variable] ?? COLOR_KEY;
const ratio = ratioMap[variable] ?? undefined;
document.documentElement.style.setProperty( document.documentElement.style.setProperty(
variable, variable,
this.getMixedColor(color, COLOR_KEY, alpha), getMixedColor(color, key, alpha, ratio),
'important', 'important',
); );
}); });
document.body.style.setProperty(
'background',
this.getMixedColor('rgba(3, 3, 3)', DARK_COLOR_KEY, alpha),
'important',
);
document.documentElement.style.setProperty(
'--ytmusic-background',
// #030303
this.getMixedColor('rgba(3, 3, 3)', DARK_COLOR_KEY, alpha),
'important',
);
}, },
}, },
}); });

View File

@ -81,3 +81,14 @@ ytmusic-browse-response[has-background]:not([disable-gradient]) .background-grad
#background.immersive-background.style-scope.ytmusic-browse-response { #background.immersive-background.style-scope.ytmusic-browse-response {
opacity: 0.6; opacity: 0.6;
} }
ytmusic-search-box[is-bauhaus-sidenav-enabled] {
--ytmusic-search-background: var(--ytmusic-color-black3) !important;
}
.seekbar-theme #progress-bar.ytmusic-player-bar {
--paper-slider-active-color: linear-gradient(to right, var(--paper-progress-active-color-1) 80%, var(--paper-progress-active-color-2) 100%) !important;
--paper-slider-knob-color: var(--paper-progress-active-color-1) !important;
--paper-slider-knob-start-color: var(--paper-progress-active-color-2) !important;
}

View File

@ -1,6 +1,6 @@
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
import backend from './backend'; import backend from './backend';
import { t } from '@/i18n'; import { APPLICATION_NAME, t } from '@/i18n';
export interface MusicWidgetConfig { export interface MusicWidgetConfig {
enabled: boolean; enabled: boolean;
@ -12,7 +12,10 @@ export const defaultConfig: MusicWidgetConfig = {
export default createPlugin({ export default createPlugin({
name: () => t('plugins.amuse.name'), name: () => t('plugins.amuse.name'),
description: () => t('plugins.amuse.description'), description: () =>
t('plugins.amuse.description', {
applicationName: APPLICATION_NAME,
}),
addedVersion: '3.7.X', addedVersion: '3.7.X',
restartNeeded: true, restartNeeded: true,
config: defaultConfig, config: defaultConfig,

View File

@ -1,3 +1,7 @@
import { createServer as createHttpServer } from 'node:http';
import { createServer as createHttpsServer } from 'node:https';
import { readFileSync } from 'node:fs';
import { jwt } from 'hono/jwt'; import { jwt } from 'hono/jwt';
import { OpenAPIHono as Hono } from '@hono/zod-openapi'; import { OpenAPIHono as Hono } from '@hono/zod-openapi';
import { cors } from 'hono/cors'; import { cors } from 'hono/cors';
@ -11,6 +15,8 @@ import { createBackend } from '@/utils';
import { JWTPayloadSchema } from './scheme'; import { JWTPayloadSchema } from './scheme';
import { registerAuth, registerControl, registerWebsocket } from './routes'; import { registerAuth, registerControl, registerWebsocket } from './routes';
import { APPLICATION_NAME } from '@/i18n';
import { type APIServerConfig, AuthStrategy } from '../config'; import { type APIServerConfig, AuthStrategy } from '../config';
import type { BackendType } from './types'; import type { BackendType } from './types';
@ -29,41 +35,45 @@ export const backend = createBackend<BackendType, APIServerConfig>({
this.songInfo = songInfo; this.songInfo = songInfo;
}); });
ctx.ipc.on('ytmd:player-api-loaded', () => { ctx.ipc.on('peard:player-api-loaded', () => {
ctx.ipc.send('ytmd:setup-seeked-listener'); ctx.ipc.send('peard:setup-seeked-listener');
ctx.ipc.send('ytmd:setup-time-changed-listener'); ctx.ipc.send('peard:setup-time-changed-listener');
ctx.ipc.send('ytmd:setup-repeat-changed-listener'); ctx.ipc.send('peard:setup-repeat-changed-listener');
ctx.ipc.send('ytmd:setup-like-changed-listener'); ctx.ipc.send('peard:setup-like-changed-listener');
ctx.ipc.send('ytmd:setup-volume-changed-listener'); ctx.ipc.send('peard:setup-volume-changed-listener');
ctx.ipc.send('ytmd:setup-shuffle-changed-listener'); ctx.ipc.send('peard:setup-shuffle-changed-listener');
}); });
ctx.ipc.on( ctx.ipc.on(
'ytmd:repeat-changed', 'peard:repeat-changed',
(mode: RepeatMode) => (this.currentRepeatMode = mode), (mode: RepeatMode) => (this.currentRepeatMode = mode),
); );
ctx.ipc.on( ctx.ipc.on(
'ytmd:volume-changed', 'peard:volume-changed',
(newVolumeState: VolumeState) => (this.volumeState = newVolumeState), (newVolumeState: VolumeState) => (this.volumeState = newVolumeState),
); );
this.run(config.hostname, config.port); this.run(config);
}, },
stop() { stop() {
this.end(); this.end();
}, },
onConfigChange(config) { onConfigChange(config) {
const old = this.oldConfig;
if ( if (
this.oldConfig?.hostname === config.hostname && old?.hostname === config.hostname &&
this.oldConfig?.port === config.port old?.port === config.port &&
old?.useHttps === config.useHttps &&
old?.certPath === config.certPath &&
old?.keyPath === config.keyPath
) { ) {
this.oldConfig = config; this.oldConfig = config;
return; return;
} }
this.end(); this.end();
this.run(config.hostname, config.port); this.run(config);
this.oldConfig = config; this.oldConfig = config;
}, },
@ -138,7 +148,7 @@ export const backend = createBackend<BackendType, APIServerConfig>({
openapi: '3.1.0', openapi: '3.1.0',
info: { info: {
version: '1.0.0', version: '1.0.0',
title: 'Youtube Music API Server', title: `${APPLICATION_NAME} API Server`,
description: description:
'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.', 'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.',
}, },
@ -153,15 +163,30 @@ export const backend = createBackend<BackendType, APIServerConfig>({
this.injectWebSocket = ws.injectWebSocket.bind(this); this.injectWebSocket = ws.injectWebSocket.bind(this);
}, },
run(hostname, port) { run(config) {
if (!this.app) return; if (!this.app) return;
try { try {
this.server = serve({ const serveOptions =
fetch: this.app.fetch.bind(this.app), config.useHttps && config.certPath && config.keyPath
port, ? {
hostname, fetch: this.app.fetch.bind(this.app),
}); port: config.port,
hostname: config.hostname,
createServer: createHttpsServer,
serverOptions: {
key: readFileSync(config.keyPath),
cert: readFileSync(config.certPath),
},
}
: {
fetch: this.app.fetch.bind(this.app),
port: config.port,
hostname: config.hostname,
createServer: createHttpServer,
};
this.server = serve(serveOptions);
if (this.injectWebSocket && this.server) { if (this.injectWebSocket && this.server) {
this.injectWebSocket(this.server); this.injectWebSocket(this.server);

View File

@ -29,7 +29,7 @@ import type { SongInfo } from '@/providers/song-info';
import type { BackendContext } from '@/types/contexts'; import type { BackendContext } from '@/types/contexts';
import type { APIServerConfig } from '../../config'; import type { APIServerConfig } from '../../config';
import type { HonoApp } from '../types'; import type { HonoApp } from '../types';
import type { QueueResponse } from '@/types/youtube-music-desktop-internal'; import type { QueueResponse } from '@/types/music-player-desktop-internal';
import type { Context } from 'hono'; import type { Context } from 'hono';
const routes = { const routes = {
@ -411,6 +411,26 @@ const routes = {
}, },
}, },
}), }),
nextSongInfo: createRoute({
method: 'get',
path: `/api/${API_VERSION}/queue/next`,
summary: 'get next song info',
description:
'Get information about the next song in the queue (relative index +1)',
responses: {
200: {
description: 'Success',
content: {
'application/json': {
schema: SongInfoSchema,
},
},
},
204: {
description: 'No next song in queue',
},
},
}),
queueInfo: createRoute({ queueInfo: createRoute({
method: 'get', method: 'get',
path: `/api/${API_VERSION}/queue`, path: `/api/${API_VERSION}/queue`,
@ -630,7 +650,7 @@ export const register = (
app.openapi(routes.getShuffleState, async (ctx) => { app.openapi(routes.getShuffleState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => { const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once( ipcMain.once(
'ytmd:get-shuffle-response', 'peard:get-shuffle-response',
(_, isShuffled: boolean | undefined) => { (_, isShuffled: boolean | undefined) => {
return resolve(!!isShuffled); return resolve(!!isShuffled);
}, },
@ -693,7 +713,7 @@ export const register = (
app.openapi(routes.getFullscreenState, async (ctx) => { app.openapi(routes.getFullscreenState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => { const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once( ipcMain.once(
'ytmd:set-fullscreen', 'peard:set-fullscreen',
(_, isFullscreen: boolean | undefined) => { (_, isFullscreen: boolean | undefined) => {
return resolve(!!isFullscreen); return resolve(!!isFullscreen);
}, },
@ -728,7 +748,7 @@ export const register = (
// Queue // Queue
const queueInfo = async (ctx: Context) => { const queueInfo = async (ctx: Context) => {
const queueResponsePromise = new Promise<QueueResponse>((resolve) => { const queueResponsePromise = new Promise<QueueResponse>((resolve) => {
ipcMain.once('ytmd:get-queue-response', (_, queue: QueueResponse) => { ipcMain.once('peard:get-queue-response', (_, queue: QueueResponse) => {
return resolve(queue); return resolve(queue);
}); });
@ -748,6 +768,63 @@ export const register = (
app.openapi(routes.oldQueueInfo, queueInfo); app.openapi(routes.oldQueueInfo, queueInfo);
app.openapi(routes.queueInfo, queueInfo); app.openapi(routes.queueInfo, queueInfo);
app.openapi(routes.nextSongInfo, async (ctx) => {
const queueResponsePromise = new Promise<QueueResponse>((resolve) => {
ipcMain.once('peard:get-queue-response', (_, queue: QueueResponse) => {
return resolve(queue);
});
controller.requestQueueInformation();
});
const queue = await queueResponsePromise;
if (!queue?.items || queue.items.length === 0) {
ctx.status(204);
return ctx.body(null);
}
// Find the currently selected song
const currentIndex = queue.items.findIndex((item) => {
const renderer =
item.playlistPanelVideoRenderer ||
item.playlistPanelVideoWrapperRenderer?.primaryRenderer
?.playlistPanelVideoRenderer;
return renderer?.selected === true;
});
// Get the next song (currentIndex + 1)
const nextIndex = currentIndex + 1;
if (nextIndex >= queue.items.length) {
// No next song available
ctx.status(204);
return ctx.body(null);
}
const nextItem = queue.items[nextIndex];
const nextRenderer =
nextItem.playlistPanelVideoRenderer ||
nextItem.playlistPanelVideoWrapperRenderer?.primaryRenderer
?.playlistPanelVideoRenderer;
if (!nextRenderer) {
ctx.status(204);
return ctx.body(null);
}
// Extract relevant information similar to SongInfo format
const nextSongInfo = {
title: nextRenderer.title?.runs?.[0]?.text,
videoId: nextRenderer.videoId,
thumbnail: nextRenderer.thumbnail,
lengthText: nextRenderer.lengthText,
shortBylineText: nextRenderer.shortBylineText,
};
ctx.status(200);
return ctx.json(nextSongInfo);
});
app.openapi(routes.addSongToQueue, (ctx) => { app.openapi(routes.addSongToQueue, (ctx) => {
const { videoId, insertPosition } = ctx.req.valid('json'); const { videoId, insertPosition } = ctx.req.valid('json');
controller.addSongToQueue(videoId, insertPosition); controller.addSongToQueue(videoId, insertPosition);

View File

@ -94,7 +94,7 @@ export const register = (
lastSongInfo = { ...songInfo }; lastSongInfo = { ...songInfo };
}); });
ipc.on('ytmd:volume-changed', (newVolumeState: VolumeState) => { ipc.on('peard:volume-changed', (newVolumeState: VolumeState) => {
volumeState = newVolumeState; volumeState = newVolumeState;
send(DataTypes.VolumeChanged, { send(DataTypes.VolumeChanged, {
volume: volumeState.state, volume: volumeState.state,
@ -102,16 +102,16 @@ export const register = (
}); });
}); });
ipc.on('ytmd:repeat-changed', (mode: RepeatMode) => { ipc.on('peard:repeat-changed', (mode: RepeatMode) => {
repeat = mode; repeat = mode;
send(DataTypes.RepeatChanged, { repeat }); send(DataTypes.RepeatChanged, { repeat });
}); });
ipc.on('ytmd:seeked', (t: number) => { ipc.on('peard:seeked', (t: number) => {
send(DataTypes.PositionChanged, { position: t }); send(DataTypes.PositionChanged, { position: t });
}); });
ipc.on('ytmd:shuffle-changed', (newShuffle: boolean) => { ipc.on('peard:shuffle-changed', (newShuffle: boolean) => {
shuffle = newShuffle; shuffle = newShuffle;
send(DataTypes.ShuffleChanged, { shuffle }); send(DataTypes.ShuffleChanged, { shuffle });
}); });

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