Compare commits

...

963 Commits

Author SHA1 Message Date
fdd55e10bc fix: package.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-HONO-12668833
2025-09-15 14:02:26 +00:00
c9ae7cb277 chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-09-15 14:01:59 +00:00
e455932754 chore(i18n): Translated using Weblate (Catalan)
Currently translated at 98.2% (448 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-09-14 12:02:01 +02:00
a1e3bf23be chore(i18n): Translated using Weblate (Catalan)
Currently translated at 98.2% (448 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-09-14 12:02:00 +02:00
8ccd510700 chore(i18n): Translated using Weblate (Italian)
Currently translated at 98.9% (451 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-09-14 12:01:59 +02:00
Bai
c0a495640f chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-09-13 07:52:22 +02:00
6060e138ee chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-09-13 07:52:22 +02:00
98b2e182fb chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-09-13 07:52:22 +02:00
715ddb8923 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-09-12 12:01:59 +02:00
3104111f6b chore(i18n): Translated using Weblate (Thai)
Currently translated at 99.7% (455 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-09-11 09:02:10 +00:00
e064c37859 chore(i18n): Translated using Weblate (Russian)
Currently translated at 99.7% (455 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-09-11 09:02:08 +00:00
1de223b4ca chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-09-11 09:02:06 +00:00
50a1365a6f chore(i18n): Translated using Weblate (Czech)
Currently translated at 91.4% (417 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-09-11 09:02:04 +00:00
cc83804491 chore(i18n): Translated using Weblate (Filipino)
Currently translated at 83.9% (383 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fil/
2025-09-09 19:02:05 +00:00
92cf306439 chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-09-09 19:02:04 +00:00
a8be510a07 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-09-09 19:02:03 +00:00
58524fb3c1 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 96.7% (441 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-09-09 19:02:02 +00:00
aeb6997117 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-09-09 19:02:01 +00:00
0116188623 fix: maybe fix #3613 2025-09-09 23:43:42 +09:00
af63edb058 fix: update pnpm-lock.yml 2025-09-09 22:42:42 +09:00
bd0ac52832 Revert "fix(deps): update dependency color to v5.0.1 (#3846)" (#3855) 2025-09-09 22:35:32 +09:00
5b537d2a9e fix(deps): update dependency virtua to v0.42.3 (#3847)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 22:08:10 +09:00
d9a7c352d3 chore(deps): update dependency typescript-eslint to v8.43.0 (#3848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 22:07:58 +09:00
84add37441 fix(deps): update dependency color to v5.0.1 (#3846)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 08:34:11 +09:00
9a88f11f16 chore(deps): update dependency vite to v7.1.8 (#3844)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 08:33:47 +09:00
51b4441e5c chore(deps): update dependency ts-morph to v27 (#3841)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-09 08:31:35 +09:00
29784e6a39 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-09-08 18:19:17 +02:00
e2981c22fa chore(i18n): Translated using Weblate (Malayalam)
Currently translated at 11.6% (53 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ml/
2025-09-08 14:02:08 +00:00
d7513dcc20 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-09-08 14:02:07 +00:00
5c0face2c9 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-09-08 14:02:04 +00:00
a1805f7662 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-09-08 14:02:03 +00:00
46889098e8 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 95.1% (434 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-09-08 14:02:02 +00:00
607938c170 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 96.2% (439 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-09-08 14:02:00 +00:00
58a03db898 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-09-08 14:01:59 +00:00
67ef3408dc chore(i18n): Translated using Weblate (Italian)
Currently translated at 98.0% (447 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-09-08 14:01:57 +00:00
27f16e26b3 chore(i18n): Translated using Weblate (French)
Currently translated at 99.7% (455 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-09-08 14:01:56 +00:00
e38200bc1f chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-09-08 14:01:54 +00:00
736e63d259 Update changelog for v3.11.0 2025-09-07 09:01:30 +00:00
721271d902 fix: Update changelog script in package.json 2025-09-07 15:38:35 +09:00
a2151930ec Bump version to 3.11.0 2025-09-07 15:18:33 +09:00
bdc9f42681 fix: change deprecated option rollupOptions to rolldownOptions 2025-09-07 15:18:02 +09:00
0b3c6f9e1f chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (456 of 456 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-09-07 08:16:14 +02:00
ebe373bdc6 chore(package.json): add NODE_ENV 2025-09-07 13:45:40 +09:00
ab91e6d735 Fixed missing videochange dataupdated event when using shuffle (#3659)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: rewhex <gitea@cluser.local>
2025-09-07 13:43:48 +09:00
be3ae4d789 feat(synced-lyrics): preferred provider (global/per-song) (#3741)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-07 13:35:29 +09:00
336b7fe5e9 fix(api-server): use ipc instead of ipcMain 2025-09-07 12:47:08 +09:00
5ecd39f324 feat(api-server): send shuffle state over websocket (#3837) 2025-09-07 04:29:38 +09:00
eb50596961 feat(synced-lyrics): add new "spacer" (#3742)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-07 04:26:03 +09:00
aede0cd643 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (452 of 452 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-09-06 17:20:17 +02:00
25f51784c3 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (452 of 452 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-09-06 17:20:17 +02:00
7acac6d11c chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (452 of 452 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-09-06 17:20:16 +02:00
1972ef70b5 chore(i18n): Translated using Weblate (Russian)
Currently translated at 99.7% (451 of 452 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-09-06 17:20:16 +02:00
c4455ed3d2 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (452 of 452 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-09-06 17:20:16 +02:00
c1a06ab955 feat: remove unnecessary export default for better tree-shaking 2025-09-06 22:31:02 +09:00
26fa1f85b2 fix(discord-rpc, scrobbler): Align artist and title with the last.fm's de facto standard
- Display only the main artist.
- Display the title in its original language without romanization.

- fix #3358
- fix #3641
2025-09-06 10:25:54 +09:00
555817e2f5 feat(downloader): Add context menu button for playlists and albums (#3768)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-06 09:12:24 +09:00
f8654dfdb9 fix(i18n): fix missing i18n 2025-09-06 09:08:17 +09:00
96c0fc412c chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (442 of 442 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-09-06 00:00:58 +00:00
a70a4106df chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (442 of 442 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-09-06 00:00:57 +00:00
895210cbb6 feat(transparent-player): new plugin for Acrylic, Mica or Tabbed effects (#3529)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-06 09:00:39 +09:00
789a30312b fix(reviewdog): checkout PR HEAD 2025-09-06 06:38:36 +09:00
623d97b1e2 fix(reviewdog): run eslint for changed files 2025-09-06 06:28:52 +09:00
4ed97f0145 fix: action should catch errors 2025-09-06 06:22:19 +09:00
77a2bbf02a fix(action): fix permission 2025-09-06 06:09:03 +09:00
7a9a1531d4 fix(action): fix auth 2025-09-06 05:35:59 +09:00
16b59698d6 fix(action): fix node version 2025-09-06 05:30:58 +09:00
a85a2e0c58 fix(action): fix install deps 2025-09-06 05:27:38 +09:00
97f1a20a4f fix(actions): fix mistake 2025-09-06 05:19:21 +09:00
8dbe151ddd fix(audio-compressor): real-time behavior and duplicated audio bug (#3786)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-06 05:15:47 +09:00
87144e03c2 fix(actions): fix node / pnpm version 2025-09-06 05:13:51 +09:00
2046b253e3 fix: Added Min height and width to the window which doesnt breaks the UI responsiveness (#3602) 2025-09-06 05:04:16 +09:00
c068e11fc5 feat(actions): add reviewdog 2025-09-06 04:54:53 +09:00
10384b6c4c chore(eslint): added new eslint rule (for jsx) 2025-09-06 04:51:31 +09:00
4d83bd587d chore(deps): update dependency discord-api-types to v0.38.23 (#3833)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-06 02:55:56 +09:00
aae523989b feat(plugin): Custom output device plugin (#3789)
Co-authored-by: Angelos Bouklis <me@arjix.dev>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-06 02:54:07 +09:00
afacec973b chore(deps): update dependency @babel/runtime to v7.28.4 (#3831)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-06 01:20:54 +09:00
75fb51e290 chore(deps): update eslint monorepo to v9.35.0 (#3829)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-06 01:18:02 +09:00
cb85048af4 feat(api-server): Add websocket as /api/v1/ws route (#3707)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-06 01:17:32 +09:00
8b10872e83 feat(api-server): Improved api-server volume and like/dislike state (#3592)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: rewhex <gitea@cluser.local>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-05 23:59:39 +09:00
96ea114335 fix: pnpm-lock.yaml 2025-09-05 23:02:15 +09:00
7c1c3ef28d Merge remote-tracking branch 'origin/master' 2025-09-05 22:45:43 +09:00
7a7ad4261c fix(deps): update dependency i18next to v25.5.2 (#3826)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 22:45:33 +09:00
c0dbc204a0 fix(deps): update dependency virtua to v0.42.2 (#3827)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 22:45:19 +09:00
68e63f809c fix: apply fix from eslint 2025-09-05 22:43:34 +09:00
4b188ec205 chore(i18n): Translated using Weblate (Thai)
Currently translated at 100.0% (437 of 437 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-09-05 15:07:03 +02:00
23013cddb9 fix(exponential-volume): volume desync bug (#3787)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-05 20:53:07 +09:00
588b84ecd0 feat(synced-lyrics): thai romanization (#3618)
Co-authored-by: Angelos Bouklis <me@arjix.dev>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-05 16:30:39 +09:00
fd68c204f6 chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-09-05 06:58:38 +00:00
313bb6e43f chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-09-05 06:58:37 +00:00
0a6f244035 chore(i18n): Translated using Weblate (Swedish)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-09-05 06:58:36 +00:00
8e4e2c42f6 feat(discord): add option to display artist/title in status (#3692)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-05 15:58:26 +09:00
f31053cf3c chore(deps): update playwright monorepo to v1.55.0 (#3819)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:43:02 +09:00
d5758790c0 fix(deps): update dependency i18next to v25.5.1 (#3820)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:42:52 +09:00
bbd243a534 fix(deps): update dependency virtua to v0.42.0 (#3821)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:42:41 +09:00
2fc0d6f3b0 fix(deps): update dependency zod to v4.1.5 (#3822)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:42:31 +09:00
6b15018a9b chore(deps): update eslint monorepo to v9.34.0 (#3818)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:42:24 +09:00
acc977db7c chore(deps): update actions/setup-node action to v5 (#3823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:42:03 +09:00
270100a14c chore(deps): update dependency electron to v38 (#3824)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:41:43 +09:00
094e6fa2d6 chore(deps): update dependency @stylistic/eslint-plugin to v5.3.1 (#3817)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:40:46 +09:00
9f81f7001c fix(deps): update dependency serve to v14.2.5 (#3816)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:40:21 +09:00
lew
e6c78dd5e0 feat(discord): add song & artist URLs to rich presence (#3737)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-09-05 15:32:31 +09:00
b64e1394ae fix: fix #3621 (#3774) 2025-09-05 15:32:15 +09:00
dcc611c7d0 feat(refactor): PluginDefinition::platform (#3665) 2025-09-05 15:28:17 +09:00
d329076b52 chore(docs): update copyright footer year (#3792) 2025-09-05 15:10:28 +09:00
1435559a56 chore(deps): update dependency vite-plugin-inspect to v11.3.3 (#3814)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:08:36 +09:00
1feeeedf10 fix(deps): update dependency @floating-ui/dom to v1.7.4 (#3815)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:07:50 +09:00
443d716e45 fix(deps): update dependency @ghostery/adblocker-electron to v2.11.6 (#3770)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:01:46 +09:00
3d65a96e38 chore(deps): update dependency discord-api-types to v0.38.22 (#3813)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:01:37 +09:00
e20f3fe24c chore(deps): update dependency @types/semver to v7.7.1 (#3812)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 15:01:30 +09:00
5d3afb52d8 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.11.6 (#3771)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:59:44 +09:00
5e0341c8d5 fix(deps): update dependency @hono/node-server to v1.19.1 (#3759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:58:08 +09:00
b84a8c512a chore(deps): update dependency typescript-eslint to v8.42.0 (#3761)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:57:52 +09:00
cd0f4bbc1d chore(deps): update dependency node-gyp to v11.4.2 (#3772)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:57:38 +09:00
e37367c5e5 chore(deps): update actions/checkout action to v5 (#3757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:55:52 +09:00
8a765be912 chore(deps): update dependency vite to v7.1.5 (#3760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:54:47 +09:00
a213dae14d fix(deps): update dependency hono to v4.9.6 [security] (#3807)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:50:33 +09:00
40c429f3c1 chore(deps): update dependency electron to v37.3.1 [security] (#3806)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-09-05 14:50:13 +09:00
3125520e68 chore(deps): bump hono from 4.9.2 to 4.9.6 (#3805)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 14:49:48 +09:00
1c57fec016 chore(i18n): Translated using Weblate (Swedish)
Currently translated at 37.6% (163 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-09-04 20:01:57 +02:00
2708b4fffc chore(i18n): Translated using Weblate (Greek)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-09-02 19:22:57 +02:00
f1d264a6c7 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-09-01 21:13:45 +02:00
c478e74771 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-09-01 21:13:45 +02:00
6cf9f813a0 chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 22.1% (96 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-08-30 23:01:51 +02:00
dddfa581ed chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-08-29 17:41:00 +02:00
94b789aa78 chore(i18n): Translated using Weblate (Albanian)
Currently translated at 0.4% (2 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sq/
2025-08-25 16:02:12 +00:00
d6d731260b chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-08-25 16:02:11 +00:00
440864e605 chore(i18n): Added translation using Weblate (Albanian) 2025-08-24 17:34:48 +02:00
4506ae4079 chore(i18n): Translated using Weblate (Galician)
Currently translated at 5.5% (24 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/gl/
2025-08-24 17:34:47 +02:00
c2538e280a chore(i18n): Translated using Weblate (Finnish)
Currently translated at 84.5% (366 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fi/
2025-08-24 17:34:47 +02:00
ef7da94201 chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-08-21 17:02:09 +00:00
68a754f438 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-08-19 22:02:19 +02:00
2a81a4e887 chore: remove unused deps 2025-08-17 23:46:06 +09:00
40d64fb04f fix: fix bundling error 2025-08-17 23:16:37 +09:00
c6bc65b3d3 chore(deps): update playwright monorepo to v1.54.2 (#3713)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:52:01 +09:00
db02e009cd chore(deps): update dependency vite to v7.1.2 (#3710)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:50:12 +09:00
b0b6ebe036 chore(deps): update dependency @stylistic/eslint-plugin to v5.2.3 (#3754)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:48:25 +09:00
be698cc0fb chore(deps): update dependency @babel/runtime to v7.28.3 (#3753)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:48:13 +09:00
06b35acf65 chore(deps): update dependency discord-api-types to v0.38.20 (#3706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:48:02 +09:00
557932f7bb fix(deps): update dependency @floating-ui/dom to v1.7.3 (#3714)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:46:55 +09:00
d48f328881 chore(deps): update dependency vite-plugin-solid to v2.11.8 (#3711)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:46:10 +09:00
4e7f40c86a chore(deps): update dependency rollup to v4.46.2 (#3709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:45:52 +09:00
614c774e71 chore(deps): update dependency @electron/universal to v3.0.1 (#3705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:45:31 +09:00
3fa4ab54b6 chore(deps): update dependency electron to v37.3.0 (#3708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-17 22:44:23 +09:00
de8136dbe4 chore(docs): Grammar mistakes (#3722) 2025-08-17 22:39:45 +09:00
4051aec6e3 chore(i18n): Translated using Weblate (Romanian)
Currently translated at 99.7% (432 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ro/
2025-08-17 13:02:10 +00:00
aa0496c548 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 88.9% (385 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-08-15 14:02:11 +00:00
a953b5995c chore(i18n): Translated using Weblate (Czech)
Currently translated at 96.0% (416 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-08-14 15:02:03 +02:00
ff2d889329 chore(i18n): Translated using Weblate (Czech)
Currently translated at 96.0% (416 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-08-14 15:02:01 +02:00
f3b1adbd32 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 88.4% (383 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-08-13 05:02:13 +02:00
247443630a chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-08-13 05:02:11 +02:00
6eb54afda4 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-08-09 03:01:54 +00:00
83ecc499e3 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-08-09 03:01:53 +00:00
418a6ce8e4 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-08-09 03:01:52 +00:00
4f19f73d4d chore(i18n): Translated using Weblate (Bengali)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-08-07 15:02:01 +00:00
31d109e00f chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-08-07 15:01:58 +00:00
fd3f79e976 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-08-06 13:01:57 +00:00
c748e606b1 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-08-04 19:02:01 +00:00
40299b38c5 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-08-03 09:02:30 +00:00
62b40d4df5 fix: typed networkManager.fetch 2025-08-02 16:49:15 +09:00
5e4a1253d4 chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-08-01 00:02:22 +02:00
702792b659 chore(i18n): Translated using Weblate (Azerbaijani)
Currently translated at 13.6% (59 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/az/
2025-07-30 20:06:32 +02:00
e83f83fa9b chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-30 20:06:32 +02:00
3de54340f3 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-07-30 20:06:32 +02:00
ffbc3bd1c2 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-07-30 20:06:31 +02:00
c513959461 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-29 17:15:56 +02:00
66e414dd64 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 86.6% (375 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-07-29 17:15:55 +02:00
454d2a1d4e chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 76.4% (331 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2025-07-29 17:15:54 +02:00
ca3372d7f5 chore(i18n): Translated using Weblate (Thai)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-07-29 17:15:53 +02:00
5bcbab1fac chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-07-29 17:15:52 +02:00
47656c08fd chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (433 of 433 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-07-29 17:15:51 +02:00
6374ff4a41 fix: fix #3661 2025-07-28 23:55:55 +09:00
86e7c84e43 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-28 16:32:22 +02:00
d554fa34b2 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-07-28 16:32:21 +02:00
1bec276c8b fix: fix #3613, fix #3651 2025-07-28 23:29:46 +09:00
17153eacf0 Fixes the error 500 for /auth/ endpoint (#3627)
Co-authored-by: rewhex <gitea@cluser.local>
2025-07-28 23:19:22 +09:00
20d25ca953 feat: add custom window title option (#3656) 2025-07-28 23:16:47 +09:00
b3b3d45b96 fix(downloader): fix for getBasicInfo 2025-07-28 23:09:25 +09:00
5ba65ea122 fix: bump dependencies 2025-07-28 23:02:17 +09:00
0108e3f603 fix: rollback electron version to v37 2025-07-28 22:53:15 +09:00
8d23b13f70 fix(deps): update dependency zod to v4.0.10 (#3686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 22:40:12 +09:00
a8f9505255 chore(deps): update dependency @babel/runtime to v7.28.2 (#3687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 22:39:56 +09:00
cd0509eb06 chore(deps): update dependency rollup to v4.46.1 (#3632)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 22:39:42 +09:00
23504408ec chore(deps): update dependency electron to v38.0.0-alpha.10 (#3681)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-28 22:37:39 +09:00
AZE
ba8282881d chore(i18n): Translated using Weblate (Azerbaijani)
Currently translated at 10.0% (43 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/az/
2025-07-28 07:03:06 +02:00
ad1ac79fdb chore(i18n): Translated using Weblate (Bengali)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-28 07:03:04 +02:00
54736256a4 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-28 07:02:56 +02:00
0d77ac096d chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2025-07-28 07:02:44 +02:00
6a2b27bfcb chore(i18n): Translated using Weblate (Greek)
Currently translated at 98.3% (423 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-07-26 21:08:10 +00:00
2a0aeac89b chore(deps): update dependency eslint-config-prettier to v10.1.8 (#3676)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:35:26 +09:00
5dc11e2bdc chore(deps): update dependency eslint-plugin-prettier to v5.5.3 (#3678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:15:44 +09:00
fba48dcd55 fix(deps): update dependency @ghostery/adblocker-electron to v2.11.3 (#3679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:12:57 +09:00
832c3103c7 chore(deps): update dependency discord-api-types to v0.38.17 (#3620)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:04:24 +09:00
49d9bf9859 chore(deps): update dependency esbuild to v0.25.8 (#3675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:04:13 +09:00
ef5d0c1222 chore(deps): update dependency @stylistic/eslint-plugin to v5.2.2 (#3636)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:03:41 +09:00
1cb666d7dd fix(deps): update dependency @hono/node-server to v1.17.1 (#3625)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 23:02:29 +09:00
45ca896bef chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-07-25 14:48:21 +02:00
624d5102a5 fix(deps): update dependency hono to v4.8.7 (#3567)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 18:03:03 +09:00
2e9e5cc51f chore(deps): update dependency typescript-eslint to v8.38.0 (#3628)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 18:00:31 +09:00
c5f755bfcf chore(deps): update dependency electron to v38.0.0-alpha.9 (#3626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 18:00:24 +09:00
0d1cadd650 fix(Skip Disliked Song): updated querySelector (#3667)
Co-authored-by: Joel Carlos <joel.carlos@merkle.com>
2025-07-25 18:00:13 +09:00
4cc7ffe74d chore(deps): update dependency vite to v7.0.11 (#3624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-25 17:59:39 +09:00
7f59ca18b0 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-25 08:03:56 +02:00
f87030ff55 chore(i18n): Translated using Weblate (Latvian)
Currently translated at 54.8% (236 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-07-23 14:02:56 +02:00
2406baa5a5 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-23 14:02:55 +02:00
d7bf973547 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-07-21 23:03:00 +02:00
0d199b82ec chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-07-21 23:02:59 +02:00
7d7562d147 chore(i18n): Translated using Weblate (Czech)
Currently translated at 87.9% (378 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-07-21 23:02:58 +02:00
9d43fb2bb3 chore(i18n): Translated using Weblate (Nepali)
Currently translated at 99.7% (429 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ne/
2025-07-20 09:02:39 +02:00
010da7536d chore(i18n): Translated using Weblate (Romanian)
Currently translated at 99.7% (429 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ro/
2025-07-20 09:02:38 +02:00
3473f05823 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 86.9% (374 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-07-18 13:03:13 +02:00
f72664957d chore(i18n): Translated using Weblate (Hindi)
Currently translated at 86.9% (374 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-07-18 13:03:12 +02:00
a127c2e5e2 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-18 13:03:10 +02:00
952da4ddf6 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-07-18 13:03:09 +02:00
bf84477609 chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-07-18 13:03:07 +02:00
e274a1b4c4 chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-07-18 13:03:06 +02:00
e6150a5b53 chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-07-18 13:03:04 +02:00
dfd881186a chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:30 +00:00
762b66dbcd chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:29 +00:00
f1acfbf48f chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:29 +00:00
046faecf11 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:28 +00:00
c3612d2ca7 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:27 +00:00
3da344fcad chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:26 +00:00
2b5380e67e chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-07-17 10:02:26 +00:00
e3c7e4f524 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 75.8% (326 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2025-07-17 10:02:25 +00:00
3604e46661 chore(i18n): Translated using Weblate (Thai)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-07-15 19:01:50 +02:00
8cea079f26 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 99.5% (428 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-07-15 19:01:49 +02:00
83b68001cb chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 20.2% (87 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-07-14 13:47:47 +02:00
7a11a47f91 chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 20.2% (87 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-07-14 13:47:47 +02:00
2a9a00bd86 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-14 13:47:47 +02:00
cfcbf37f98 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
7f5c854c00 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
7ec89580e7 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
56a5102377 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
b6e9b5ac2b chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
eecdbbd2c4 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
efeb871490 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-07-14 13:47:46 +02:00
f326a55247 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-07-14 13:47:46 +02:00
e788585bd4 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-07-14 13:47:46 +02:00
1396761b18 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-07-14 13:47:45 +02:00
5872e0f736 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-07-14 13:47:45 +02:00
1872c8193d chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-07-14 13:47:45 +02:00
187a0c54cb chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-07-14 13:47:45 +02:00
9533497388 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-07-14 13:47:45 +02:00
f323b7bb1f chore(i18n): Translated using Weblate (Japanese)
Currently translated at 98.8% (425 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-07-14 13:47:45 +02:00
68810b4762 chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-07-14 13:47:45 +02:00
d3e01d0732 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-07-14 13:47:44 +02:00
970cf7ee91 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-07-14 13:47:44 +02:00
4bf038e24d chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-07-14 13:47:44 +02:00
5925b765b8 fix(deps): update dependency @hono/zod-validator to v0.7.1 (#3616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 22:43:21 +09:00
78cd3a786c Update changelog for v3.10.0 2025-07-13 08:26:54 +00:00
adb88991d9 Bump version to 3.10.0 2025-07-13 17:10:18 +09:00
4dad68d255 fix(downloader): code splitting (happy-dom) 2025-07-13 17:04:38 +09:00
33a09cc8e1 fix(api-server): fix #3572 2025-07-13 16:43:29 +09:00
e2c849f6c4 fix(store): fix synced lyrics config 2025-07-13 16:38:38 +09:00
7b41775b26 fix(store): fix migrator 2025-07-13 16:36:51 +09:00
6284b87fc7 fix(deps): update dependency butterchurn to v3.0.0-beta.5 (#3610)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 16:32:03 +09:00
f3f63d4fcd fix: bump @hono/zod-openapi version 2025-07-13 16:24:38 +09:00
cf80dd396c fix: remove the weird scrollbar
- Bump electron version to v38
- Remove `FluentScrollbar`
2025-07-13 16:06:46 +09:00
c79fc799b2 chore(i18n): Translated using Weblate (Basque)
Currently translated at 0.6% (3 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/eu/
2025-07-13 08:16:01 +02:00
7789d5d444 chore(i18n): Added translation using Weblate (Basque) 2025-07-13 08:14:58 +02:00
e0dbd4b88f chore(i18n): Translated using Weblate (Azerbaijani)
Currently translated at 0.6% (3 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/az/
2025-07-13 08:14:08 +02:00
1c74bbd954 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-07-13 08:10:35 +02:00
d949e3550f chore(deps): update eslint monorepo to v9.31.0 (#3600)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 14:19:01 +09:00
d76115ab5d chore(i18n): Translated using Weblate (Arabic)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-07-13 07:01:56 +02:00
5be467a869 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-07-13 07:01:54 +02:00
b2dfbe1ed3 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-07-13 07:01:52 +02:00
a9e9e0bdc2 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-07-13 07:01:50 +02:00
93ce9cc359 chore(i18n): Translated using Weblate (Russian)
Currently translated at 99.7% (429 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-07-13 07:01:47 +02:00
2a626a5ff1 chore(deps): update dependency rollup to v4.45.0 (#3568)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-13 13:53:37 +09:00
1ccabb8e25 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:42 +02:00
2dae8688c2 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:42 +02:00
65459726a4 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:42 +02:00
0c21accb10 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
125d2d5163 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
6c1855b5a5 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
82c5222610 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
0d0e2a11e1 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
daf724f9dc chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
be2cdb4cb5 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-12 00:03:41 +02:00
ff2fdab77d chore(i18n): Translated using Weblate (Tamil)
Currently translated at 98.6% (424 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-07-12 00:03:41 +02:00
9047169a39 chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 23.2% (100 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-07-12 00:03:41 +02:00
9525df343f chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 23.2% (100 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-07-12 00:03:40 +02:00
be2abee85d chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-07-12 00:03:40 +02:00
7d5f7a9527 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-07-12 00:03:40 +02:00
b53ece5836 feat: code splitting (#3593)
Co-authored-by: Angelos Bouklis <me@arjix.dev>
2025-07-12 00:00:03 +09:00
c04dc92d39 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.11.1 (#3571)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 23:59:03 +09:00
78acd2ddbb fix(deps): update dependency @ghostery/adblocker-electron to v2.11.1 (#3570)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 23:57:09 +09:00
7126c290e2 chore(deps): update playwright monorepo to v1.54.1 (#3599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 23:56:56 +09:00
58651857e2 fix: remove debug log 2025-07-11 23:44:02 +09:00
8e7c95e68f chore(deps): update playwright monorepo to v1.54.0 (#3591)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 23:42:39 +09:00
1c68c5637d chore(deps): update dependency electron to v37.2.1 (#3559)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 23:42:13 +09:00
c44d5ea111 fix: improve menu detector 2025-07-11 23:04:00 +09:00
b48e05ab28 fix(deps): update dependency socks to v2.8.6 (#3598)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 17:32:01 +09:00
7e5a5a77fe fix(deps): update dependency zod to v4.0.5 (#3594)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 17:31:36 +09:00
77c4566ad3 chore(deps): update dependency vite to v7.0.8 (#3597)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-11 17:10:11 +09:00
6305f52947 chore(i18n): Translated using Weblate (Malayalam)
Currently translated at 11.3% (49 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ml/
2025-07-10 21:01:54 +02:00
b8baf0fad4 chore(i18n): Translated using Weblate (Malayalam)
Currently translated at 11.3% (49 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ml/
2025-07-10 21:01:53 +02:00
038244bf43 chore(i18n): Translated using Weblate (Persian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-07-10 21:01:51 +02:00
ef22b48aae chore(i18n): Translated using Weblate (Persian)
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-07-10 21:01:50 +02:00
62b3abd502 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (430 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-07-10 21:01:49 +02:00
e1f8ece433 chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (429 of 430 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-07-10 21:01:48 +02:00
dd9ed5e5e6 chore(deps): update dependency vite to v7.0.7 (#3590)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 20:09:02 +09:00
3f442a97c5 feat: remove lyrics-genius 2025-07-10 16:40:33 +09:00
61e19cfa9f fix: remove unused value 2025-07-10 16:05:12 +09:00
f73188ab83 fix: apply fix to types from eslint 2025-07-10 14:17:39 +09:00
4c4a39b9a7 fix: use @stylistic/eslint-plugin instead of @stylistic/eslint-plugin-js 2025-07-10 14:15:58 +09:00
1da83ff27c fix: apply fix from eslint 2025-07-10 14:14:43 +09:00
2cfc38757a feat: isolate electron-builder configuration 2025-07-10 13:57:27 +09:00
b5f82f5ed8 chore(deps): update dependency @electron/universal to v3 (#3565)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 13:50:55 +09:00
d13484a47b fix(deps): update dependency electron-unhandled to v5 (#2088)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 13:47:44 +09:00
4d33921881 feat: bump require node version to 22 2025-07-10 13:45:58 +09:00
6fdac6facf feat: enable the ESM for main (#3588) 2025-07-10 13:43:13 +09:00
51a87566e5 fix(deps): update dependency zod to v4 (#3587)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-10 12:57:13 +09:00
f715dcd9b4 chore(deps): Bump electron-vite, esbuild, typescript-eslint, i18next, @electron/remote version 2025-07-09 23:27:50 +09:00
275f78a180 chore(deps): Bump dependencies version 2025-07-09 23:24:54 +09:00
bc8d199c77 chore(i18n): Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/
2025-07-09 16:14:25 +02:00
e114e0ef44 feat: migrate from raw HTML to JSX (TSX / SolidJS) (#3583)
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2025-07-09 23:14:11 +09:00
9ccd126eee chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 48.6% (206 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-09 11:01:55 +00:00
e3c79c789c chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 48.6% (206 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-09 11:01:54 +00:00
c9ab69eb9e chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 48.6% (206 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-09 11:01:53 +00:00
d444f52c27 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 48.6% (206 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-09 11:01:52 +00:00
cd51d2c8df chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-07-09 11:01:51 +00:00
84c592f45f chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-07-09 11:01:50 +00:00
Jeo
83f7ebc087 docs: add Unobtrusive Player in available plugins (#3582) 2025-07-09 15:50:00 +09:00
35a7ab288d chore(i18n): Added translation using Weblate (Azerbaijani) 2025-07-08 01:31:38 +02:00
c1c4c22ec2 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-08 01:31:37 +02:00
5eb0c9f98c chore(i18n): Translated using Weblate (Bengali)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-08 01:31:36 +02:00
733b0166c8 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 32.8% (139 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 20:23:58 +02:00
c5f7c80542 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 32.8% (139 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 20:23:58 +02:00
c840e31a80 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 32.8% (139 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 20:23:58 +02:00
22181afe73 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 32.8% (139 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 20:23:58 +02:00
f698614b21 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 32.8% (139 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 20:23:57 +02:00
adeffdabad chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 18.9% (80 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-07-07 20:23:57 +02:00
acdffea563 chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 18.9% (80 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-07-07 20:23:57 +02:00
cf1806dc10 chore(i18n): Translated using Weblate (Malay)
Currently translated at 40.1% (170 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-07-07 20:23:57 +02:00
ff69803fdc chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 98.5% (417 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-07-07 20:23:57 +02:00
f7140d78bd chore(i18n): Translated using Weblate (Japanese)
Currently translated at 99.5% (421 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-07-07 20:23:57 +02:00
e4d8365170 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 99.5% (421 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-07-07 20:23:57 +02:00
c64d69f33b chore(i18n): Translated using Weblate (Bengali)
Currently translated at 11.8% (50 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 06:55:07 +02:00
16a3fa7469 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 11.8% (50 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 06:55:07 +02:00
1e867d10f2 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 11.8% (50 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 06:55:06 +02:00
3466b1a863 chore(i18n): Translated using Weblate (Bengali)
Currently translated at 11.8% (50 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bn/
2025-07-07 06:55:06 +02:00
a5cc2f555a chore(i18n): Added translation using Weblate (Bengali) 2025-07-07 06:28:35 +02:00
9445379280 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
68c79ded99 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
9e59a8c1d5 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
cc20cb5620 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
be69d85d27 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
f851c2de20 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
2319821851 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
5ba0fee18a chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
8ac7c4ea9d chore(i18n): Translated using Weblate (Serbian)
Currently translated at 59.8% (253 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-07-07 06:28:34 +02:00
3649ad092a chore(i18n): Translated using Weblate (Arabic)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-07-07 06:28:34 +02:00
4adaa27beb chore(i18n): Translated using Weblate (Arabic)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-07-07 06:28:33 +02:00
e6ab13a42b chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 45.1% (191 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-07 06:28:33 +02:00
fb16badcb3 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 45.1% (191 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-07 06:28:33 +02:00
fc0da887e1 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 45.1% (191 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-07 06:28:33 +02:00
f65add2e28 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 45.1% (191 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-07-07 06:28:33 +02:00
c3b7ee54de chore(i18n): Translated using Weblate (Japanese)
Currently translated at 99.2% (420 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-07-07 06:28:33 +02:00
245974da42 chore(i18n): Translated using Weblate (Latvian)
Currently translated at 54.6% (231 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-07-06 16:28:48 +02:00
4e756f7117 chore(i18n): Translated using Weblate (Latvian)
Currently translated at 54.6% (231 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-07-06 16:28:47 +02:00
bed4f1bfe9 chore(i18n): Translated using Weblate (Latvian)
Currently translated at 54.6% (231 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-07-06 16:28:47 +02:00
0e79d9d5cc chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-07-06 16:28:47 +02:00
136f9f429f fix(deps): update dependency @hono/node-server to v1.15.0 (#3557)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-06 12:29:51 +09:00
97d8cb5ad1 chore(deps): update dependency vitefu to v1.1.1 (#3564)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-06 12:29:40 +09:00
b21862f2be chore(deps): update dependency discord-api-types to v0.38.15 (#3562)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-04 00:00:49 +09:00
bedfd20f7e fix(deps): update dependency es-hangul to v2.3.5 (#3563)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-04 00:00:35 +09:00
46a95a4f97 fix(deps): update dependency zod to v3.25.71 (#3558)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-04 00:00:24 +09:00
80f1d10309 fix(deps): update dependency @ghostery/adblocker-electron to v2.9.2 (#3560)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-04 00:00:03 +09:00
9f38f1fb26 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.9.2 (#3561)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-03 23:57:00 +09:00
0061318f4c fix(deps): update dependency @ghostery/adblocker-electron to v2.9.0 (#3555)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-03 00:00:30 +09:00
6ba36fcba5 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.9.0 (#3556)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 23:58:41 +09:00
63c8f4d0e1 chore(deps): update eslint monorepo to v9.30.1 (#3552)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-02 17:29:51 +09:00
bef304865c Fixed play/pause discord rich presence by fixing lastsonginfo tracking (#3551) 2025-07-02 17:19:28 +09:00
fec4702ee0 fix(patch): remove .idea directory in patch 2025-07-02 17:09:50 +09:00
ab07b71888 fix: fix bundle size + remove eval warning 2025-07-02 17:03:01 +09:00
0253bfe193 feat: enable rolldown native plugin (#3502) 2025-07-02 16:20:46 +09:00
3e9429879d chore(deps): bump rolldown-vite version to 7.0.4 2025-07-02 13:57:41 +09:00
c1ac07d287 chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-07-01 17:10:47 +02:00
fa0f68e308 chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-07-01 17:10:47 +02:00
38b2bb64fc fix(synced-lyrics): fix nullable 2025-07-01 23:32:07 +09:00
be92e6c6f7 fix(deps): update dependency virtua to v0.41.5 (#3549)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 23:11:02 +09:00
eabbfe94bc chore(deps): update dependency typescript-eslint to v8.35.1 (#3545)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 16:21:53 +09:00
bcbc691435 chore(deps): update dependency discord-api-types to v0.38.14 (#3546)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 16:21:44 +09:00
90c832733d chore(deps): update playwright monorepo to v1.53.2 (#3547)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 16:21:34 +09:00
e3b76115aa fix(deps): update dependency i18next to v25.3.0 (#3548)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-01 16:21:27 +09:00
8fc9692ae4 perf(synced-lyrics): virtual scrolling (#3162)
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-07-01 16:21:09 +09:00
40ab32cbe7 fix: add fflate 2025-06-30 23:47:57 +09:00
f047dd2d2d fix: kuromoji zlib and apply rolldown-vite 2025-06-30 23:44:16 +09:00
1877460094 chore(deps): update dependency vite to v7 (#3524)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-06-30 22:45:14 +09:00
eae4e952f5 feat(synced-lyrics): Musixmatch (#3261) 2025-06-30 22:37:01 +09:00
89479a5045 feat(api-server): add optional params for search (#3440) 2025-06-30 12:46:43 +09:00
a702a3284c chore(deps): update dependency vite-plugin-inspect to v11.3.0 (#3543)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:44:45 +09:00
47674e9a5a chore(deps): update eslint monorepo to v9.30.0 (#3544)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:43:34 +09:00
93deee665b chore(deps): update dependency rollup to v4.44.1 (#3537)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:42:15 +09:00
95385cb9de chore(deps): update dependency ws to v8.18.3 (#3538)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:42:06 +09:00
35f9ac0f9a fix(deps): update dependency @hono/zod-openapi to v0.19.9 (#3540)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:41:56 +09:00
42b8f57216 fix(deps): update dependency @floating-ui/dom to v1.7.2 (#3539)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:40:50 +09:00
56cb3b6cc8 fix(deps): update dependency es-hangul to v2.3.4 (#3541)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:39:34 +09:00
01e137f5d4 fix(deps): update dependency hono to v4.8.3 (#3542)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-30 12:39:24 +09:00
0bbc1b4546 fix(style): fix duplicated scrollbar (#3483) 2025-06-30 12:38:59 +09:00
40429034b6 chore(deps): update dependency typescript-eslint to v8.35.0 (#3518)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:26:32 +09:00
49cb29c2fe chore(deps): update dependency vite-plugin-solid to v2.11.7 (#3520)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:14:26 +09:00
432427ec5a chore(deps): update dependency discord-api-types to v0.38.13 (#3517)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:14:10 +09:00
ce0568cc52 chore(deps): update dependency eslint-import-resolver-typescript to v4.4.4 (#3534)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:13:58 +09:00
d6ed6bdc2b fix(deps): update dependency @ghostery/adblocker-electron to v2.8.0 (#3521)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:13:28 +09:00
65b6417777 chore(deps): update dependency eslint-plugin-prettier to v5.5.1 (#3535)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:13:16 +09:00
7b2c537290 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.8.0 (#3522)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:11:00 +09:00
cbb7709159 chore(deps): update dependency electron to v37 (#3527)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-29 22:04:27 +09:00
232ca99243 feat: Add instructional note to Swagger documentation (#3532)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-06-29 22:01:41 +09:00
47990c7b95 chore(i18n): Translated using Weblate (Latvian)
Currently translated at 46.8% (198 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-06-28 15:06:08 +02:00
21a95709a2 chore(i18n): Translated using Weblate (Estonian)
Currently translated at 24.1% (102 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2025-06-28 15:06:07 +02:00
d43803c14c chore(i18n): Translated using Weblate (Croatian)
Currently translated at 74.2% (314 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-06-28 15:06:06 +02:00
5fe10a9660 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 74.2% (314 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-06-28 15:06:05 +02:00
fa9e031bbb chore(i18n): Translated using Weblate (Latvian)
Currently translated at 46.5% (197 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lv/
2025-06-26 19:01:52 +02:00
a592520e2a chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 34.5% (146 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-06-26 19:01:49 +02:00
f7f82f20f1 chore(i18n): Added translation using Weblate (Latvian) 2025-06-25 18:10:13 +02:00
e8214fa6ee chore(i18n): Translated using Weblate (Catalan)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-06-25 00:05:52 +02:00
1f0978d5ad chore(deps): update playwright monorepo to v1.53.1 (#3504)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-22 22:34:17 +09:00
2b0295d95c chore(deps): update dependency rollup to v4.44.0 (#3508)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-22 17:02:01 +09:00
355d9870a1 chore(deps): update dependency eslint-plugin-import to v2.32.0 (#3513)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-22 17:01:49 +09:00
4eb2d63a82 fix(deps): update dependency hono to v4.8.2 (#3509)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-22 17:01:42 +09:00
315fa15eec chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 98.3% (416 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-06-20 16:01:50 +02:00
6037491f98 fix: revert rolldown-vite 2025-06-19 22:49:32 +09:00
9e3d84e78e chore(deps): update dependency electron to v36.5.0 (#3503)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 23:06:44 +09:00
de7f7abc91 chore(deps): update stefanzweifel/git-auto-commit-action action to v6 (#3500)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 23:01:19 +09:00
ad0d1ec37d chore(deps): update dependency vite to v6.3.21 (#3492)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:58:31 +09:00
2acd51cec3 fix(deps): update dependency hono to v4.8.0 (#3499)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:58:20 +09:00
96a1df3d0a chore(deps): update playwright monorepo to v1.53.0 (#3497)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:51:08 +09:00
576cd14ca0 chore(deps): update eslint monorepo to v9.29.0 (#3496)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:50:06 +09:00
baeef8e2c3 chore(deps): update dependency vite-plugin-inspect to v11.2.0 (#3495)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:49:56 +09:00
1823740dd8 fix(deps): update dependency happy-dom to v18 (#3501)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:48:22 +09:00
ce73d6c075 fix(deps): update dependency electron-store to v10.1.0 (#3498)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:47:39 +09:00
1e1b469dba chore(deps): update dependency eslint-plugin-prettier to v5.5.0 (#3493)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:45:36 +09:00
da6c3b907c chore(deps): update dependency rollup to v4.43.0 (#3494)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:44:33 +09:00
be90fecbad fix(deps): update dependency @ghostery/adblocker-electron to v2.7.0 (#3466)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:40:35 +09:00
cce5419985 fix(deps): update dependency @hono/swagger-ui to v0.5.2 (#3465)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:38:18 +09:00
fb2bbdc381 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.7.0 (#3467)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:38:02 +09:00
dbd4113314 fix(deps): update dependency youtubei.js to v14 (#3468)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:37:16 +09:00
49e915d2e1 chore(deps): update dependency discord-api-types to v0.38.12 (#3490)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:36:15 +09:00
96cd219a0f chore(deps): update dependency glob to v11.0.3 (#3491)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:36:07 +09:00
7390119143 chore(deps): update dependency typescript-eslint to v8.34.1 (#3469)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:24:23 +09:00
d8a84a3500 fix(deps): update dependency socks to v2.8.5 (#3470)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:24:14 +09:00
34601dd6af fix(deps): update dependency zod to v3.25.67 (#3471)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-18 22:24:05 +09:00
ee28471146 chore(i18n): Translated using Weblate (Malay)
Currently translated at 37.1% (157 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-06-17 10:02:02 +02:00
e80bc304c5 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-06-17 10:02:00 +02:00
2593092f04 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-06-15 14:01:53 +02:00
fc52af96b2 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-06-11 20:29:41 +02:00
c31eaefdee chore(i18n): Translated using Weblate (Hindi)
Currently translated at 85.3% (361 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-06-11 06:02:48 +02:00
83212294c9 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 72.3% (306 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-06-11 06:02:48 +02:00
fbe1729ac3 chore(i18n): Translated using Weblate (Czech)
Currently translated at 89.1% (377 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-06-11 06:02:47 +02:00
419e51a814 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 85.1% (360 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-06-09 16:02:12 +00:00
170b3132ad chore(deps): update dependency @babel/runtime to v7.27.6 (#3451)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:25:12 +09:00
5ef2dc5a9a chore(deps): update dependency eslint-import-resolver-typescript to v4.4.3 (#3453)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:24:57 +09:00
43d6950ee3 fix(deps): update dependency zod to v3.25.56 (#3454)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:24:38 +09:00
6070300c22 fix(deps): update dependency @hono/node-server to v1.14.4 (#3456)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:24:09 +09:00
ef1504ab30 chore(deps): update dependency rollup to v4.42.0 (#3457)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:23:30 +09:00
c52d8d93b3 fix(deps): update dependency conf to v14 (#3458)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:22:49 +09:00
f6ddfc3807 fix(deps): update dependency peerjs to v1.5.5 (#3460)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-08 16:22:17 +09:00
5035c6a8d8 feat: use tiny-pinyin instead of pinyin 2025-06-08 16:14:16 +09:00
58ca9523c5 chore(i18n): Translated using Weblate (Galician)
Currently translated at 0.7% (3 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/gl/
2025-06-08 05:36:54 +02:00
5b2e9c0de9 feat: use rolldown-vite 2025-06-08 12:18:16 +09:00
4a3ca1af75 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 99.7% (422 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-06-07 13:01:51 +00:00
7beac0b6ad chore(i18n): Translated using Weblate (Hindi)
Currently translated at 82.7% (350 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-06-07 13:01:50 +00:00
af05ff6582 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-06-07 13:01:49 +00:00
77703e0268 chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-06-07 13:01:48 +00:00
dadca8b1c4 chore(deps): update dependency @stylistic/eslint-plugin-js to v4.4.1 (#3444)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-05 12:25:37 +09:00
87db1dd461 chore(deps): update dependency discord-api-types to v0.38.11 (#3445)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-05 12:25:30 +09:00
2799f81906 chore(deps): update dependency electron to v36.4.0 (#3447)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-05 12:22:59 +09:00
bfe96b004f fix(deps): update dependency zod to v3.25.51 (#3446)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-05 12:22:51 +09:00
51f7d10113 chore(i18n): Translated using Weblate (Greek)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-06-04 19:01:49 +00:00
60ca5ec17e fix(deps): update dependency hono to v4.7.11 (#3435)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 12:51:13 +09:00
8d1082da4e fix(deps): update dependency @floating-ui/dom to v1.7.1 (#3434)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 12:38:28 +09:00
1858b0712b chore(deps): update dependency eslint-import-resolver-typescript to v4.4.2 (#3432)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 12:38:19 +09:00
d5b3fbbdb2 chore(deps): update dependency eslint-plugin-prettier to v5.4.1 (#3433)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 12:38:12 +09:00
346ce00144 fix(deps): update dependency zod to v3.25.50 (#3443)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 12:37:57 +09:00
f9d5e67f3f fix(deps): update dependency happy-dom to v17.6.3 (#3438)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-04 12:37:51 +09:00
73dd56416e fix(deps): update dependency zod to v3.25.49 (#3436)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 16:14:45 +09:00
ca97e624cd chore(deps): update eslint monorepo to v9.28.0 (#3437)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 16:14:38 +09:00
b639fb1073 fix(deps): update dependency @hono/zod-openapi to v0.19.8 (#3411)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:54:00 +09:00
8488dfd8f4 fix: use gtk 3 switch as workaround (#3366)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-06-03 02:52:30 +09:00
7eed86608c chore(deps): update dependency electron to v36.3.2 (#3431)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:50:13 +09:00
67dfc618d1 fix(deps): update dependency @xhayper/discord-rpc to v1.2.2 (#3413)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:48:33 +09:00
38394193f5 fix(deps): update dependency happy-dom to v17.5.6 (#3417)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:48:17 +09:00
c9ca1b8be6 fix(deps): update dependency @hono/zod-validator to v0.7.0 (#3414)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:48:01 +09:00
8ce25613ae chore(deps): update dependency discord-api-types to v0.38.10 (#3430)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:47:53 +09:00
145cf8563b chore(deps): update dependency typescript-eslint to v8.33.1 (#3416)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:47:42 +09:00
c9b0577ed4 chore(docs): Improve README-es.md by adjusting the bad Spanish translation (#3424) 2025-06-03 02:47:12 +09:00
8a5c3a670a chore(docs): Improve README.md by removing the extra flag for Spanish translation (#3422) 2025-06-03 02:46:19 +09:00
17259d68d0 chore(deps): update dependency @babel/runtime to v7.27.4 (#3410)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-03 02:44:49 +09:00
aa77ab0779 chore(i18n): Translated using Weblate (Romanian)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ro/
2025-06-01 23:07:04 +02:00
481fff56f5 chore(i18n): Translated using Weblate (Catalan)
Currently translated at 96.4% (408 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ca/
2025-05-31 20:02:56 +02:00
LAO
0da013a962 chore(i18n): Translated using Weblate (Thai)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-05-30 12:03:08 +02:00
eeb051dd29 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 69.7% (295 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-05-29 06:05:38 +02:00
708c96a8e9 chore(i18n): Translated using Weblate (Malay)
Currently translated at 31.4% (133 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-05-29 06:05:38 +02:00
4f7e2f29c1 chore(i18n): Translated using Weblate (Malay)
Currently translated at 31.4% (133 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-05-29 06:05:38 +02:00
b754e16fb6 chore(i18n): Translated using Weblate (Malay)
Currently translated at 31.4% (133 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-05-29 06:05:38 +02:00
f53d3abef8 fix(deps): update dependency ts-morph to v26 (#3409)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 15:01:17 +09:00
c9e48782aa fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.6.1 (#3407)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 15:00:02 +09:00
a49d711c67 fix(deps): update dependency zod to v3.25.30 (#3408)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:59:50 +09:00
878ab6307e fix(precise-volume): replace constructor check for volume slider (#3362) 2025-05-27 14:58:19 +09:00
ad17e9a557 chore(deps): update dependency vite-plugin-inspect to v11.1.0 (#3393)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:57:11 +09:00
bc9ca62cbe chore(deps): update dependency eslint-import-resolver-typescript to v4.4.1 (#3406)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:57:02 +09:00
4329ac6bf3 chore(deps): update dependency @stylistic/eslint-plugin-js to v4.4.0 (#3391)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:56:52 +09:00
a49733877f fix(deps): update dependency i18next to v25.2.1 (#3405)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:56:38 +09:00
a3ca565faf chore(deps): update dependency esbuild to v0.25.5 (#3403)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:56:23 +09:00
a51670c1c8 fix(deps): update dependency @hono/node-server to v1.14.3 (#3404)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:53:05 +09:00
a9b4b42a74 chore(deps): update dependency rollup to v4.41.1 (#3392)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:52:30 +09:00
f6b51d92a4 chore(deps): update eslint monorepo to v9.27.0 (#3394)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:52:14 +09:00
c4efbcbbeb fix(deps): update dependency @ghostery/adblocker-electron to v2.6.1 (#3395)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:50:43 +09:00
3de06655df fix(deps): update dependency hono to v4.7.10 (#3390)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-27 14:50:35 +09:00
2c649c50f6 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 67.6% (286 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-05-26 16:03:03 +02:00
bccefb9380 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 48.9% (207 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-05-25 07:28:21 +02:00
6c5009d520 chore(deps): update dependency eslint-import-resolver-typescript to v4.3.5 (#3388)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:22:12 +09:00
a45b8f88cb fix(deps): update dependency @hono/node-server to v1.14.2 (#3389)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:21:57 +09:00
3a82129d37 chore(deps): update dependency electron to v36.3.1 (#3372)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:20:22 +09:00
16fe257073 chore(deps): update dependency typescript-eslint to v8.32.1 (#3364)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:20:10 +09:00
39d6b6d30b fix(deps): update dependency semver to v7.7.2 (#3365)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:19:04 +09:00
2dbaecff6e fix(album-actions): update playlist and button selectors (#3367)
* fix(album-actions): update playlist and button selectors

* refactor(album-actions): directly access the last element of NodeList

Co-authored-by: Angelos Bouklis <me@arjix.dev>

* refactor(album-actions): directly access the last element of NodeList

Co-authored-by: Angelos Bouklis <me@arjix.dev>

---------

Co-authored-by: Angelos Bouklis <me@arjix.dev>
2025-05-25 00:18:49 +09:00
77c9d44823 fix(deps): update dependency i18next to v25.2.0 (#3370)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:17:31 +09:00
aaea3ba768 chore(deps): update dependency discord-api-types to v0.38.8 (#3361)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:17:19 +09:00
2cb44054df fix(deps): update dependency solid-js to v1.9.7 (#3375)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-25 00:16:47 +09:00
3effb58282 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 40.6% (172 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-05-24 04:01:46 +02:00
1d9573e15d chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-05-24 04:01:45 +02:00
f8df3e6548 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-05-24 04:01:44 +02:00
d76ebde673 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-05-21 14:03:29 +02:00
2e4a15442a chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 99.5% (421 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-05-20 10:02:00 +02:00
716566593e chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-05-20 10:02:00 +02:00
9c0d1788b0 Merge remote-tracking branch 'origin/master' 2025-05-20 14:27:37 +09:00
51b3f53569 feat: refactor 2025-05-20 14:27:30 +09:00
88111185a3 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-05-18 14:02:05 +02:00
ac0a46cff6 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 97.6% (413 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-05-17 13:01:49 +02:00
529c798e49 chore(i18n): Added translation using Weblate (Galician) 2025-05-16 11:16:00 +02:00
611afd7403 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-05-16 11:15:59 +02:00
6ac1fec5ab chore(i18n): Translated using Weblate (Nepali)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ne/
2025-05-15 17:02:58 +00:00
22cfefb5f9 chore(i18n): Translated using Weblate (Malay)
Currently translated at 19.6% (83 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-05-15 17:02:57 +00:00
e1962810e9 chore(i18n): Translated using Weblate (Malay)
Currently translated at 19.6% (83 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ms/
2025-05-15 17:02:56 +00:00
cd740880c8 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-05-15 17:02:55 +00:00
382caaabb0 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 98.1% (415 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-05-13 16:01:54 +02:00
9f5236439c chore(i18n): Translated using Weblate (German)
Currently translated at 99.5% (421 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-05-13 16:01:53 +02:00
bb69f31f3a Merge branch 'master' into master 2025-05-12 22:34:51 +09:00
afe5fed760 fix(music-together): fix remove unused SYNC_QUEUE from host 2025-05-12 20:39:23 +09:00
981a7f319e feat(discord): centralize activityInfo creation and simplify elapsedSeconds handling
- Extracted activityInfo object construction into the buildActivityInfo helper to remove code duplication in presence updates.

- Removed unnecessary nullish coalescing (?? 0)
2025-05-12 13:17:13 +02:00
42cb9b0ea8 refactor(discord): centralize Discord logic and improve activity update handling 2025-05-12 03:02:55 +02:00
d9ead78083 fix(music-together): fix data integrity 2025-05-12 08:25:32 +09:00
329ea64989 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-05-12 01:07:56 +02:00
8c1673c6a8 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-05-12 01:07:56 +02:00
dedca8fdd1 chore(i18n): Translated using Weblate (Greek)
Currently translated at 100.0% (423 of 423 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-05-12 01:07:56 +02:00
02bf057fbc fix(music-together): fix infinite loop 2025-05-12 07:36:21 +09:00
98be48bb13 fix(music-together): fix connection disconnect message 2025-05-12 06:31:37 +09:00
3200d088cf fix(music-together): remove debug log 2025-05-12 06:21:28 +09:00
edea7b59e1 fix(music-together): fix user profile in queue 2025-05-12 06:19:36 +09:00
d10c6ec8fc fix(music-together): fix queue index 2025-05-12 03:30:02 +09:00
91a2eb9063 fix(music-together): fix unknown user 2025-05-12 02:34:10 +09:00
dfa427f2ed fix(music-together): Removing a connection on error 2025-05-12 01:46:14 +09:00
6d3ac985b2 fix(music-together): add TURN server
limit: 50kbps
2025-05-12 00:46:55 +09:00
d874fcd117 fix(music-together): fix duplicate queue listener 2025-05-12 00:16:53 +09:00
5158b9cd04 fix(music-together): fix duplicate client issue 2025-05-11 23:19:16 +09:00
efc8038210 fix(music-together): fix profile issue 2025-05-11 22:59:53 +09:00
8f18fb80ea fix(renderer): fix traffic light 2025-05-11 22:56:08 +09:00
a257d4dfbc chore(deps): update dependency electron to v36 (#3307)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 22:11:23 +09:00
e2f1d1d611 fix(deps): update dependency @floating-ui/dom to v1.7.0 (#3357)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:22:11 +09:00
d4c00b6d74 chore(deps): update eslint monorepo to v9.26.0 (#3356)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:21:27 +09:00
823fbf4a78 chore(deps): update dependency eslint-plugin-prettier to v5.4.0 (#3355)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:18:01 +09:00
806dc11d4a fix(deps): update dependency zod to v3.24.4 (#3354)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:17:51 +09:00
d8dcbddbf1 fix(deps): update dependency solid-js to v1.9.6 (#3353)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:17:39 +09:00
1219de1ae9 fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.2 (#3350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:17:21 +09:00
1e764f7707 fix(deps): update dependency happy-dom to v17.4.7 (#3352)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:17:11 +09:00
809947716d fix(deps): update dependency @ghostery/adblocker-electron to v2.5.2 (#3349)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 16:14:22 +09:00
d88406447e fix(discord): improve activity management and state verification in Discord integration 2025-05-10 22:47:28 +02:00
dbfe9d517a chore(deps): update dependency vite to v6.3.5 (#3346)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 02:07:15 +09:00
703ad71ff3 chore(deps): update dependency ws to v8.18.2 (#3347)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 02:07:06 +09:00
3b4f319871 fix: fix pnpm-lock.yaml 2025-05-11 02:05:58 +09:00
852933d4d7 feat(plugin): support authenticated proxy (#3175)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: JellyBrick <shlee1503@naver.com>
Co-authored-by: qiye45 <qiye45@users.noreply.github.com>
2025-05-11 02:04:00 +09:00
b9269bf085 chore(deps): update dependency esbuild to v0.25.4 (#3344)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 02:01:41 +09:00
3b8edf115e chore(deps): update dependency eslint-config-prettier to v10.1.5 (#3345)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-11 02:01:33 +09:00
97a277a192 fix(youtube-music): fix #3296, and macOS traffic lights 2025-05-11 01:56:01 +09:00
41ce2320fa fix(deps): update dependency hono to v4.7.9 (#3302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:19:05 +09:00
1350ca0816 chore(deps): update dependency electron to v34.5.5 (#3343)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:18:33 +09:00
5e29628351 docs: Add Ukrainian translation (#3338) 2025-05-10 22:15:52 +09:00
006aacfb35 chore(deps): update dependency discord-api-types to v0.38.4 (#3342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:14:47 +09:00
e5cef89a27 chore(deps): update dependency rollup to v4.40.2 (#3301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:14:37 +09:00
e91d44d018 chore(deps): update dependency @electron/universal to v2.0.3 (#3341)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:14:03 +09:00
f35328fab4 fix(deps): update dependency @hono/zod-validator to v0.5.0 (#3295)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:12:26 +09:00
d84c308572 chore(deps): update dependency @babel/runtime to v7.27.1 (#3340)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 22:12:18 +09:00
733866efea fix(deps): update dependency i18next to v25.1.2 (#3305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 20:57:33 +09:00
079e625c69 fix(album-actions): use playlist shelf for playlist detection (#3306) 2025-05-10 20:52:56 +09:00
64f87d4fec chore(deps): update dependency typescript-eslint to v8.32.0 (#3304)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 20:52:35 +09:00
da5c18dcf1 chore(deps): update dependency vite to v6.3.4 [security] (#3313)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 20:51:15 +09:00
f67ff2ee11 fix(deps): update dependency @hono/zod-openapi to v0.19.6 (#3294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-10 20:44:26 +09:00
0c1d300103 fix(discord): restore Hangul Filler patch for short fields in Rich Presence
Re-added the original workaround that pads title, artist, and album fields with the Hangul Filler character (\u3164) if their length is less than 2. This prevents Discord Rich Presence from displaying empty or missing fields when song info is very short.
2025-05-09 00:39:22 +02:00
e0abc4a43b fix(discord): Improve state verification before sending activity updates
- Enhanced the throttling mechanism to ensure that activity updates are only sent if the song state has not changed.
- Added checks for video ID and pause state to prevent unnecessary updates.
- Improved handling of elapsed time during updates.
2025-05-08 21:34:05 +02:00
de273da85f feat(discord): Enhance activity updates with throttling and state management
- Implemented throttling for Discord activity updates to respect rate limits.
- Added state management for song changes, pause state, and elapsed time.
- Introduced buttons for YouTube Music and GitHub links in activity updates.
- Improved handling of paused state and activity timeout configuration.
2025-05-08 21:01:29 +02:00
b52caa5f17 chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-05-08 13:03:00 +02:00
fec7d3b1c4 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-05-07 00:01:47 +02:00
63f7254b60 chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-05-07 00:01:46 +02:00
03501790fb chore(i18n): Translated using Weblate (Greek)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-05-07 00:01:45 +02:00
7570dad1b5 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-05-03 14:01:45 +00:00
2f8b889849 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 71.6% (296 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-05-02 00:01:52 +00:00
5eb2457c36 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-05-02 00:01:50 +00:00
52c6e09917 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 38.4% (159 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-04-30 06:04:55 +02:00
8bfc93b948 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-04-30 06:04:54 +02:00
5b09123feb chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-04-30 06:04:54 +02:00
2334e4d800 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-04-30 06:04:53 +02:00
6bf812f9bf chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-04-30 06:04:52 +02:00
b0cd8332fc chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-04-29 05:44:54 +02:00
73f7164584 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 34.8% (144 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-04-29 04:22:55 +02:00
2117bc830c chore(i18n): Translated using Weblate (Filipino)
Currently translated at 87.8% (363 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fil/
2025-04-29 04:22:55 +02:00
cd5e7ef646 chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-04-29 04:22:55 +02:00
0eecd4b6a5 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-04-29 04:22:55 +02:00
407f01aa19 chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2025-04-29 04:22:54 +02:00
0d3fb0400f chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-04-28 03:02:57 +02:00
6d46024f42 chore(i18n): Translated using Weblate (Croatian)
Currently translated at 37.0% (153 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-04-28 03:02:57 +02:00
c8812d8ab6 chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-04-28 03:02:56 +02:00
2819740429 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-04-28 03:02:56 +02:00
e1b20baf4d chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-04-28 03:02:55 +02:00
25d02154ed chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-04-28 03:02:55 +02:00
8f59b78059 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-04-28 03:02:55 +02:00
46c32b18a0 chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (412 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-04-28 03:02:55 +02:00
3eb6ba2499 chore(i18n): Translated using Weblate (Greek)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-04-28 03:02:55 +02:00
9208547881 fix(deps): update dependency es-hangul to v2.3.3 (#3293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-27 15:49:56 +09:00
8bfcd4a139 fix(music-together): fix event order 2025-04-27 06:57:35 +09:00
00041fd146 fix(music-together): fix reconnect logic 2025-04-27 06:05:59 +09:00
98feeed7eb Update changelog for v3.9.0 2025-04-26 19:43:29 +00:00
2e33bc8f96 Bump version to 3.9.0 2025-04-27 04:26:17 +09:00
0d6da0681a chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (413 of 413 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-04-26 21:25:35 +02:00
1c76415846 feat(performance-improvement): added "performance improvement" plugin 2025-04-27 04:23:48 +09:00
a3d620ba52 chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 15.3% (63 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-04-26 20:39:24 +02:00
82bf407323 fix: rollback electron version to v34 (for fix #3216) 2025-04-27 03:17:53 +09:00
d83556e9fa feat(tuna-obs): added alternativeTitle and tags to tuna (#3288)
thanks to 3206
2025-04-27 02:37:16 +09:00
f70ae4f7c4 fix(synced-lyrics): fix #3157 2025-04-27 02:35:34 +09:00
268e7be15d fix(api-server): disable api-server as default 2025-04-27 02:30:21 +09:00
accd2bf350 fix(music-together): set connection as reliable, add retry logic 2025-04-27 02:19:01 +09:00
58cf1a543d Update changelog for v3.8.1 2025-04-25 14:30:19 +00:00
183461a968 Bump version to 3.8.1 2025-04-25 23:13:32 +09:00
4fe0fb9845 chore(i18n): Translated using Weblate (Malayalam)
Currently translated at 5.1% (21 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ml/
2025-04-25 16:11:41 +02:00
0e5e1b8700 chore(i18n): Translated using Weblate (Serbian)
Currently translated at 0.7% (3 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sr/
2025-04-25 16:11:41 +02:00
1ab1c86909 chore(i18n): Translated using Weblate (Kannada)
Currently translated at 0.7% (3 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/kn/
2025-04-25 16:11:41 +02:00
5e0f03dcd3 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 98.7% (406 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-04-25 16:11:40 +02:00
d4b5778fdd chore(deps): update dependency glob to v11.0.2 (#3283)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 23:04:39 +09:00
943b806bbb fix(deps): update dependency i18next to v25.0.1 (#3284)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 23:04:29 +09:00
a5d6c32f77 chore(deps): update dependency typescript-eslint to v8.31.0 (#3286)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 23:04:21 +09:00
4efa243ed0 chore(deps): update dependency discord-api-types to v0.38.1 (#3285)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 23:04:13 +09:00
8d09f27c59 fix(deps): update dependency youtubei.js to v13.4.0 (#3287)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 23:03:48 +09:00
47a2cde673 fix(deps): update dependency zod to v3.24.3 (#3250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:38:56 +09:00
67051bb5ce chore(deps): update dependency vite to v6.3.3 (#3251)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:38:31 +09:00
233f6dbdea fix(deps): update dependency @hono/zod-openapi to v0.19.5 (#3258)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:36:47 +09:00
2c7a46240d chore(deps): update dependency vite-plugin-inspect to v11.0.1 (#3259)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:36:33 +09:00
e0edc0c1dd chore(deps): update dependency esbuild to v0.25.3 (#3282)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:35:30 +09:00
2001fb9254 chore(deps): update eslint monorepo to v9.25.1 (#3260)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:33:32 +09:00
206efaa7f7 chore(deps): update dependency electron to v35.2.1 (#3281)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:31:39 +09:00
8bb1d63cb0 chore(deps): update playwright monorepo to v1.52.0 (#3256)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:29:41 +09:00
841de026ce chore(deps): update dependency eslint-import-resolver-typescript to v4.3.4 (#3273)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-25 22:27:39 +09:00
6fac8b409e fix: fix cuted "j" and glow in lyrics (#3277)
* fix cuted "j" and glow in lyrics

* added comment in glow lyrics fix
2025-04-25 22:27:29 +09:00
b5ce1f566d chore(i18n): Translated using Weblate (Croatian)
Currently translated at 4.3% (18 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-04-24 16:02:22 +00:00
8bb4f4426f chore(i18n): Translated using Weblate (Greek)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-04-24 16:02:21 +00:00
c962d60c6d chore(i18n): Translated using Weblate (Greek)
Currently translated at 62.2% (256 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-04-23 17:01:43 +02:00
1d29e6be1a chore(i18n): Translated using Weblate (Georgian)
Currently translated at 21.8% (90 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2025-04-22 11:01:45 +02:00
970205954b chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 35.2% (145 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-04-22 11:01:44 +02:00
89fe072c0e chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-04-22 11:01:43 +02:00
93d68a94a3 chore(deps): update dependency electron to v35.2.0 (#3263)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-21 15:39:02 +09:00
f7afe1b994 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 98.7% (406 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-04-21 01:01:45 +02:00
5507f1acee chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 34.7% (143 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-04-21 01:01:44 +02:00
d513302a9a fix(unobtrusive-player): handle shuffle play (#3247) 2025-04-16 23:18:14 +09:00
f31351be9c fix(deps): update dependency @ghostery/adblocker-electron to v2.5.1 (#3238)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:16:25 +09:00
99fdd027c3 chore(deps): update dependency vite to v6.3.0 (#3248)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:16:15 +09:00
0b143ec3a2 chore(deps): update dependency typescript-eslint to v8.30.1 (#3234)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:13:28 +09:00
588992f84b fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.1 (#3239)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:13:03 +09:00
7306b0bc4e fix(deps): update dependency i18next to v25 (#3243)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:12:45 +09:00
9365f6edbc fix(deps): update dependency hono to v4.7.7 (#3245)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:12:31 +09:00
2c94cc760a chore(deps): update dependency vite to v6.2.6 (#3189)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-16 23:12:21 +09:00
53193cda98 feat(Synced-Lyrics): Also search for lyrics with the original title language (#3206)
* Add tags array for song info

* Implement original title and original artist search for LRCBLib

* comment cleanup

* Check if microformat.tags is an array
2025-04-16 23:12:04 +09:00
5853523074 chore(deps): update dependency eslint-config-prettier to v10.1.2 (#3219)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-13 14:57:31 +09:00
3a18eb8097 chore(deps): update dependency discord-api-types to v0.37.120 (#3221)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-13 14:57:23 +09:00
042a7df771 fix(deps): update dependency @hono/node-server to v1.14.1 (#3223)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-13 14:57:15 +09:00
5c2a6598b9 chore(deps): update dependency vite to v6.2.6 [security] (#3224)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-13 14:57:00 +09:00
2e4e9faf53 chore(deps): update dependency rollup to v4.40.0 (#3227)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-13 14:56:50 +09:00
a581ddf80d fix(mpris): keep MPRIS volume in sync with the actual volume (#3226) 2025-04-13 14:56:36 +09:00
500f770da8 chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 5.5% (23 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-04-12 21:06:01 +02:00
7cfe93312f chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-04-12 21:06:00 +02:00
f4bc90bf2d fix(deps): update dependency @hono/zod-openapi to v0.19.4 (#3215)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-10 07:24:49 +09:00
587fcdf23a chore(deps): update dependency electron to v35.1.5 (#3218)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-10 07:24:35 +09:00
c375e73781 chore(i18n): Translated using Weblate (Malayalam)
Currently translated at 5.1% (21 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ml/
2025-04-09 04:40:53 +02:00
8cf045b450 fix(deps): update dependency hono to v4.7.6 (#3217)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 23:46:52 +09:00
e91f2d386d docs: add Portuguese README translation and update language shortcuts (#3192)
- Added README-pt.md with the Portuguese translation
- Updated README-(fr,hu,is,ko,ru,es).md and README.md to include the shortcut for the new language
2025-04-08 23:41:43 +09:00
505465e745 chore(i18n): Added translation using Weblate (Malayalam) 2025-04-08 10:19:45 +02:00
662d3af81b chore(i18n): Translated using Weblate (Hindi)
Currently translated at 34.7% (143 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-04-08 10:19:43 +02:00
fef3b63581 fix: custom Video/Audio switcher in Plugins menu (#3174)
Related to #3167

Update `setVideoState` function and `switchButtonDiv` event listener to handle transition back to audio mode.

* **Update `setVideoState` function**
  - Correctly handle the transition back to audio mode.
  - Update the `hideVideo` property in the plugin configuration.
  - Use `this.config` instead of `config` to set options and update checkbox state.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/th-ch/youtube-music/issues/3167?shareId=XXXX-XXXX-XXXX-XXXX).
2025-04-08 07:46:51 +09:00
0d3311ff5d chore(deps): update dependency typescript-eslint to v8.29.1 (#3214)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:38:13 +09:00
7370b56767 chore(deps): update eslint monorepo to v9.24.0 (#3195)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:34:10 +09:00
c0f3f136bb chore(deps): update dependency typescript to v5.8.3 (#3196)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:30:51 +09:00
62c2dcba95 chore(deps): update dependency vite to v6.2.5 [security] (#3194)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:30:39 +09:00
3e1abd984f fix(deps): update dependency node-id3 to v0.2.9 (#3191)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:29:04 +09:00
b689ba272b chore(deps): update dependency electron to v35.1.4 (#3184)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:28:39 +09:00
2775063cc8 chore(deps): update dependency eslint-plugin-prettier to v5.2.6 (#3182)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:27:52 +09:00
d557d1cbf0 chore(deps): update dependency eslint-import-resolver-typescript to v4.3.2 (#3208)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-08 07:25:09 +09:00
e965ac2004 chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 79.5% (327 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-04-07 13:01:45 +02:00
a1a0705c07 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 98.0% (403 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-04-07 13:01:44 +02:00
29dfef1518 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-04-07 13:01:43 +02:00
2c5b09e488 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-04-07 13:01:42 +02:00
5a2b5ae522 chore(i18n): Translated using Weblate (Hungarian)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hu/
2025-04-05 15:01:42 +02:00
5dc3b09b7b chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-04-05 15:01:41 +02:00
1a1a764d64 docs: add Japanese README (#3180)
I created Japanese translated README.
2025-04-04 22:21:37 +09:00
fc47c9f590 chore(i18n): Translated using Weblate (Swedish)
Currently translated at 21.4% (88 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-04-02 23:58:32 +02:00
470bc761ef chore(i18n): Translated using Weblate (Dutch)
Currently translated at 99.5% (409 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-04-02 23:58:32 +02:00
a60dde2bdb chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-04-02 23:58:31 +02:00
8b1332ee38 chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 3.4% (14 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-04-02 21:09:11 +02:00
12eb7c7d9b chore(i18n): Translated using Weblate (Hindi)
Currently translated at 34.3% (141 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-04-02 21:09:11 +02:00
aecac6be6c chore(i18n): Translated using Weblate (Swedish)
Currently translated at 20.6% (85 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-04-02 21:09:11 +02:00
44913173eb chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 62.5% (257 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-04-02 21:09:11 +02:00
2829108e32 chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 62.5% (257 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-04-02 21:09:03 +02:00
0eb10017c9 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 97.8% (402 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-04-02 21:09:02 +02:00
c36745e79b chore(deps): update dependency node-gyp to v11.2.0 (#3177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 22:08:47 +09:00
e33269bce6 chore(deps): update dependency rollup to v4.39.0 (#3179)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 22:08:36 +09:00
7c4894a5f3 chore(i18n): Translated using Weblate (Persian)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-04-02 07:00:03 +02:00
84e3cf895f chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-04-02 03:41:57 +02:00
9d7281179b chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 97.5% (401 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-04-02 02:22:17 +02:00
85c0995323 chore(i18n): Translated using Weblate (Finnish)
Currently translated at 75.1% (309 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fi/
2025-04-01 21:35:06 +02:00
21990e71db chore(i18n): Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/
2025-04-01 18:57:47 +02:00
9d99ff4095 chore(i18n): Translated using Weblate (Estonian)
Currently translated at 22.3% (92 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/et/
2025-04-01 18:57:46 +02:00
075fcde92a chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 36.0% (148 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-04-01 18:57:46 +02:00
e654b7e695 chore(i18n): Translated using Weblate (Bosnian)
Currently translated at 2.9% (12 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bs/
2025-04-01 16:18:59 +02:00
df78d13076 chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 10.4% (43 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-04-01 16:18:58 +02:00
7bc24116da chore(i18n): Translated using Weblate (Croatian)
Currently translated at 2.1% (9 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hr/
2025-04-01 16:18:58 +02:00
3225cfe5dd chore(i18n): Added translation using Weblate (Bosnian) 2025-04-01 12:09:28 +02:00
9de8bfcdc4 chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 10.2% (42 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-04-01 12:09:27 +02:00
ab01c80a13 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-04-01 12:09:27 +02:00
b6fb3d6316 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2025-04-01 12:09:27 +02:00
6287d10a82 chore(i18n): Translated using Weblate (German)
Currently translated at 99.7% (410 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-04-01 12:09:26 +02:00
ed79631d66 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 24.8% (102 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-04-01 04:30:21 +02:00
b7f607bdbd chore(deps): update dependency typescript-eslint to v8.29.0 (#3169)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-01 09:02:07 +09:00
546c89e175 chore(i18n): Translated using Weblate (Finnish)
Currently translated at 73.9% (304 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fi/
2025-03-31 18:00:41 +02:00
486a43f4b7 chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2025-03-31 18:00:40 +02:00
8d51137a18 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 99.7% (410 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2025-03-31 18:00:40 +02:00
cf67540a1f chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (410 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-03-31 18:00:40 +02:00
edad53e989 fix(downloader): allow downloads for signed out users (#3145)
* fix(downloader): allow downloads for signed out users

* refactor(downloader): use yt.config_.LOGGED_IN for checking sign in status

* Apply suggestions from code review

---------

Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-03-31 22:48:14 +09:00
cc6c0bdff1 fix(README): Fixed typos in some hyperlinks (#3158)
* Update README-es.md

* Update README-fr.md

* Update README-hu.md

* Update README-is.md

* Update README-ko.md

* Update README-ru.md

* Update README.md
2025-03-31 22:28:15 +09:00
dbdc3c60a5 chore(i18n): Translated using Weblate (Dutch)
Currently translated at 99.5% (409 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nl/
2025-03-31 14:12:30 +02:00
db4134f40d chore(deps): update dependency vite to v6.2.4 (#3124) 2025-03-31 20:07:52 +09:00
21c3e6a5f2 chore(deps): update dependency eslint-import-resolver-typescript to v4.3.1 (#3151) 2025-03-31 20:01:59 +09:00
e5b4ba9f15 chore(deps): update dependency rollup to v4.38.0 (#3154) 2025-03-31 20:01:33 +09:00
8a51468671 chore(deps): update dependency esbuild to v0.25.2 (#3160) 2025-03-31 20:01:19 +09:00
083403bf80 chore(i18n): Added translation using Weblate (Serbian) 2025-03-31 11:17:33 +02:00
886f3203e0 chore(i18n): Translated using Weblate (Arabic)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-03-31 05:45:20 +02:00
253fe0055f chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-31 05:45:20 +02:00
6637f6a0da chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-03-31 05:45:19 +02:00
f7e359a740 chore(i18n): Added translation using Weblate (Kannada) 2025-03-30 20:33:50 +02:00
3c88d171ab chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 9.7% (40 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-03-30 20:33:49 +02:00
8e27be48c6 chore(i18n): Translated using Weblate (Thai)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-03-30 20:33:49 +02:00
700b2a3669 chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-03-28 06:22:46 +01:00
329327d491 chore(i18n): Translated using Weblate (French)
Currently translated at 99.7% (410 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-03-28 06:22:46 +01:00
829a06db5a chore(deps): update dependency electron to v35.1.2 (#3147)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-28 09:27:03 +09:00
98b4053a3a chore(i18n): Translated using Weblate (Urdu)
Currently translated at 25.3% (104 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ur/
2025-03-27 15:01:59 +00:00
d340828da7 chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2025-03-27 15:01:58 +00:00
fb18f26964 chore(i18n): Translated using Weblate (Filipino)
Currently translated at 87.8% (361 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fil/
2025-03-27 15:01:58 +00:00
b37fee1e1b chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-03-27 15:01:57 +00:00
fb2c4f0a09 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-03-27 15:01:56 +00:00
d58897ba4c chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-03-27 15:01:54 +00:00
c30fbe41a6 chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (410 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-03-27 15:01:53 +00:00
5a7daaf2f6 chore(i18n): Translated using Weblate (Greek)
Currently translated at 61.3% (252 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2025-03-27 15:01:52 +00:00
61c0217b8f chore(deps): update dependency electron to v35.1.1 (#3143)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 13:33:58 +09:00
d5ea182a50 chore(deps): update dependency eslint-import-resolver-typescript to v4.2.5 (#3144)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 13:33:51 +09:00
33133de7c7 chore(deps): update dependency @types/semver to v7.7.0 (#3141)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 05:35:56 +09:00
b544e18cea fix(deps): update dependency electron-updater to v6.6.2 (#3142)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-27 03:40:37 +09:00
808f802efd Update changelog for v3.8.0 2025-03-26 12:09:00 +00:00
8e21a10214 Bump version to 3.8.0 2025-03-26 20:51:20 +09:00
f787c2cc80 chore(deps): update dependency typescript-eslint to v8.28.0 (#3128)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:47:08 +09:00
ebf91f0977 chore(deps): update dependency eslint-plugin-prettier to v5.2.5 (#3123)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:45:53 +09:00
cae6d858fa fix(deps): update dependency @hono/node-server to v1.14.0 (#3131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:45:09 +09:00
37f3e9ce89 chore(deps): update dependency electron to v35.1.0 (#3136)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:44:36 +09:00
f350fd7aae fix(deps): update dependency es-hangul to v2.3.2 (#3138)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:44:23 +09:00
67b001c6a0 chore(deps): update dependency eslint-import-resolver-typescript to v4.2.4 (#3135)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:44:10 +09:00
ccbe5da684 chore(deps): update eslint monorepo to v9.23.0 (#3130)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:41:07 +09:00
e3e5ae3a7f chore(deps): update dependency electron-vite to v3.1.0 (#3137)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:40:43 +09:00
972c3dba2f chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (411 of 411 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2025-03-26 12:37:47 +01:00
b61151b2bd chore(deps): update dependency @babel/runtime to v7.27.0 (#3127)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 20:34:32 +09:00
4b35a96778 feat(synced-lyrics): romanization (#2790)
* feat(synced-lyrics): init romanization!

* remove debug logs and add TODO

* feat(synced-lyrics/romanization): Mandarin!

* feat(synced-lyrics/romanization): improve japanese detection

* feat(synced-lyrics/romanization): Korean!

* qol(synced-lyrics/romanization): canonicalize punctuation and symbols

* feat(synced-lyrics/romanization): handle japanese+korean and korean+chinese lyrics

* revert formatting on electron.vite.config.mts

* feat(synced-lyrics/romanization): romanize plain lyrics

* apply fix by @kimjammer

* fix lockfile due to rebase

* feat(synced-lyrics): improve lyric processing and formatting;

* feat(synced-lyrics/romanization): add option to enable/disable romanization

* chore: move default value for --lyrics-duration to the declaration

* update lockfile

* fix: improvement

1. improved language detection logic
2. changed code to work in the renderer process

* fix: fix regression (canonicalize)

---------

Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-03-26 20:29:43 +09:00
19fd0d61c6 feat(plugin): add unobtrusive player plugin (#3104)
* feat(plugin): add unobtrusive player plugin

* fix(plugin): add removeEventListener once unobtrusive-player is disabled

* feat(plugin): prevent player page button animation when changing song

* fix(plugin): add removeEventListener for videodatachange once unobtrusive-player is disabled
2025-03-26 19:36:42 +09:00
77779938b9 chore(deps): update dependency vite to v6.2.3 [security] (#3134)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 13:24:04 +09:00
bb06d71fbb fix(deps): update dependency youtubei.js to v13.3.0 (#3133)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-26 13:22:11 +09:00
3cf955179d chore(i18n): Translated using Weblate (Polish)
Currently translated at 100.0% (407 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2025-03-25 13:11:19 +01:00
606dd5a679 chore(deps): update dependency electron-builder-squirrel-windows to v26.0.12 (#3122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:26:42 +09:00
31fe07ebd4 chore(deps): update dependency eslint-import-resolver-typescript to v4.2.2 (#3106)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:23:50 +09:00
d456d0db89 chore(deps): update dependency electron-builder to v26.0.12 (#3121)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:23:30 +09:00
Tix
e00c357fae fix: Discord Rich Presence Fix (#3074)
* discord presence fix

* Update src/plugins/discord/main.ts

Co-authored-by: JellyBrick <shlee1503@naver.com>

* variable length support

---------

Co-authored-by: JellyBrick <shlee1503@naver.com>
2025-03-24 13:20:50 +09:00
21b54ef6ff fix(deps): update dependency @xhayper/discord-rpc to v1.2.1 (#3107)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:20:21 +09:00
f96b650787 chore(deps): update dependency typescript-eslint to v8.27.0 (#3111)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:19:01 +09:00
ebbbf2a6b9 chore(deps): update dependency electron to v35.0.3 (#3112)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:18:54 +09:00
610ad59fdc fix(deps): update dependency hono to v4.7.5 (#3113)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:18:46 +09:00
4fe302d753 fix(deps): update dependency fast-average-color to v9.5.0 (#3114)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:18:38 +09:00
5983ae47bb chore(deps): update dependency rollup to v4.37.0 (#3103)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-24 13:18:28 +09:00
4442fc12ec chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 22.3% (91 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-03-23 21:15:39 +01:00
b42de1c458 chore(i18n): Translated using Weblate (Swedish)
Currently translated at 19.9% (81 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-03-22 16:28:39 +01:00
eec5a2352e chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (407 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2025-03-22 16:28:38 +01:00
303de7c0aa chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.5% (405 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-03-22 04:41:58 +01:00
4bc57c2628 chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (407 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2025-03-19 17:35:05 +01:00
c74505ac90 chore(deps): update playwright monorepo to v1.51.1 (#3105)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 13:19:35 +09:00
7a3a803d72 chore(deps): update dependency eslint-import-resolver-typescript to v4 (#3102)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 13:19:18 +09:00
fec010c73f chore(i18n): Translated using Weblate (Georgian)
Currently translated at 20.1% (82 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ka/
2025-03-18 04:51:11 +01:00
b093cc2c08 chore(deps): update dependency electron to v35.0.2 (#3099)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:16:38 +09:00
cb3cd74e9e fix(deps): update dependency i18next to v24.2.3 (#3100)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:14:01 +09:00
ae5b8038b2 chore(deps): update dependency electron-builder to v26.0.11 (#3095)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:13:28 +09:00
5f93c96901 chore(deps): update dependency @babel/runtime to v7.26.10 [security] (#3094)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:04:02 +09:00
ec81ac5e40 chore(deps): update dependency eslint-config-prettier to v10.1.1 (#3069)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:03:52 +09:00
8901a7768d chore(deps): update playwright monorepo to v1.51.0 (#3065)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:03:43 +09:00
22f14cce3e chore(deps): update dependency electron-builder-squirrel-windows to v26.0.11 (#3096)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:03:32 +09:00
4afb2276c1 chore(deps): update dependency esbuild to v0.25.1 (#3097)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:03:23 +09:00
77658035f5 chore(deps): update dependency typescript-eslint to v8.26.1 (#3098)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-17 03:03:12 +09:00
07aa9d5811 chore(i18n): Translated using Weblate (Russian)
Currently translated at 100.0% (407 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2025-03-16 02:48:57 +01:00
7764bcabde chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 100.0% (407 of 407 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-03-15 23:23:53 +01:00
69058a52ed chore(deps): update eslint monorepo to v9.22.0 (#3070)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-16 02:49:55 +09:00
1f7acbd219 chore(deps): update dependency rollup to v4.35.0 (#3071)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-16 02:49:41 +09:00
88dfaa98f3 chore(deps): update dependency electron to v35.0.1 (#3075)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-16 02:49:05 +09:00
504829f065 fix(deps): update dependency happy-dom to v17.4.4 (#3068)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-16 02:48:49 +09:00
e4e6dcb0cd chore(deps): update dependency vite to v6.2.2 (#3067)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-16 02:48:34 +09:00
78010793fb fix: Update winget-releaser version to main (#3091) 2025-03-16 02:45:10 +09:00
bcdd24d74b feat: Allow scrobbling using alternative song titles (#3093) 2025-03-16 02:42:58 +09:00
2d86d26701 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-03-14 06:19:21 +01:00
77ca2b483f chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-14 06:19:21 +01:00
13c71e8904 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 98.0% (398 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-14 01:14:08 +01:00
3bfb853414 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 98.0% (398 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-13 23:53:15 +01:00
25454689c0 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 98.0% (398 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-13 20:14:57 +01:00
Tux
dd3e42c41e chore(i18n): Translated using Weblate (Swedish)
Currently translated at 14.2% (58 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/sv/
2025-03-13 12:27:52 +01:00
499ae2422c chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 98.0% (398 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-13 12:27:52 +01:00
a3601cece6 chore(i18n): Translated using Weblate (Tamil)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ta/
2025-03-13 05:49:12 +01:00
8168666720 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 98.0% (398 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-13 03:08:32 +01:00
9f580a1d7d chore(i18n): Translated using Weblate (Bulgarian)
Currently translated at 25.8% (105 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/bg/
2025-03-12 18:59:47 +01:00
f8765fbdbb chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 98.0% (398 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-12 18:59:47 +01:00
2922a457cd chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 95.3% (387 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-12 09:50:43 +01:00
c2e4c32745 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 95.3% (387 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2025-03-12 03:04:16 +01:00
5071183550 chore(i18n): Translated using Weblate (Nepali)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ne/
2025-03-11 09:51:11 +01:00
db736bcb23 chore(i18n): Translated using Weblate (Finnish)
Currently translated at 72.4% (294 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fi/
2025-03-10 15:36:08 +01:00
fb29d62cf1 chore(i18n): Added translation using Weblate (Tamil) 2025-03-09 15:41:59 +01:00
28f5185d38 chore(i18n): Translated using Weblate (French)
Currently translated at 99.7% (405 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-03-07 21:51:42 +01:00
c9178985f2 chore(i18n): Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/
2025-03-07 08:00:03 +01:00
297b94bdab chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.5% (400 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-03-07 08:00:02 +01:00
dbf8b1c5c5 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-03-06 23:04:01 +01:00
cec6339f9a chore(i18n): Translated using Weblate (Hindi)
Currently translated at 33.9% (138 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-03-06 14:02:43 +01:00
e7edf30717 chore(deps): update dependency electron-builder-squirrel-windows to v26.0.10 (#3054)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 11:37:54 +09:00
441be69ca5 chore(deps): update dependency typescript-eslint to v8.26.0 (#3056)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 07:12:00 +09:00
2199391ec1 fix(deps): update dependency hono to v4.7.4 (#3062)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 07:11:51 +09:00
f43daa3805 chore(deps): update dependency electron-builder to v26.0.10 (#3053)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-06 07:11:24 +09:00
b4dc2ca88f chore(deps): update dependency electron to v35 (#3058)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-05 08:55:02 +09:00
4aae0d89cd fix(deps): update dependency happy-dom to v17.2.2 (#3060)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-05 08:53:38 +09:00
7c1eec03a5 fix(deps): update dependency happy-dom to v17.1.13 (#3057)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-05 08:50:09 +09:00
06aaba0c7f chore(i18n): Translated using Weblate (Arabic)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-03-04 17:02:32 +01:00
766268d9e4 chore(deps): update dependency typescript to v5.8.2 (#3040)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 22:48:37 +09:00
a7f47001c6 chore(deps): update dependency rollup to v4.34.9 (#3043)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 22:42:29 +09:00
104850e9b0 fix(deps): update dependency @hono/swagger-ui to v0.5.1 (#3045)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 22:42:15 +09:00
3139beec91 fix: added French link in general README file (#3047)
* fix: updated readme with fr link in general readme

* fix: updated all the other README files
2025-03-03 22:42:00 +09:00
30bc676fd2 fix(deps): update dependency @hono/zod-openapi to v0.19.2 (#3046)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 22:34:33 +09:00
c2cf5992f8 chore(deps): update dependency @stylistic/eslint-plugin-js to v4.2.0 (#3050)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 22:34:06 +09:00
50b265c3ea fix(deps): update dependency bgutils-js to v3.2.0 (#3049)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-03 18:04:16 +09:00
b6cf7070bf chore(i18n): Translated using Weblate (Arabic)
Currently translated at 72.1% (293 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-03-03 08:06:51 +01:00
06f20cc84c chore(i18n): Translated using Weblate (French)
Currently translated at 99.5% (404 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-03-03 08:06:50 +01:00
7453a5a06c chore(i18n): Translated using Weblate (French)
Currently translated at 99.5% (404 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2025-03-03 08:06:50 +01:00
de1ccd80fc chore(i18n): Translated using Weblate (Arabic)
Currently translated at 57.3% (233 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-03-02 16:34:17 +01:00
d1ee480452 chore(i18n): Translated using Weblate (Sinhala)
Currently translated at 12.0% (49 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/si/
2025-03-02 03:05:01 +01:00
c8397e4fb4 Update changelog for v3.7.5 2025-02-28 15:29:05 +00:00
65bcf20f97 Bump version to 3.7.5 2025-03-01 00:13:14 +09:00
1a214140fb chore(deps): update dependency builtin-modules to v5 (#3038)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-01 00:12:42 +09:00
ffdf7ac5a8 fix: remove unused deps (@types/eslint__js) 2025-03-01 00:07:08 +09:00
c8bb1f386d chore(deps): update deps 2025-03-01 00:04:00 +09:00
457e1bb48e chore(deps): update dependency electron-builder to v26.0.9 2025-03-01 00:01:57 +09:00
c1177adc08 Update package.json 2025-02-28 23:55:40 +09:00
cd976ee500 Delete patches/app-builder-lib@26.0.6.patch 2025-02-28 23:55:11 +09:00
b856884bba chore(deps): update dependency typescript-eslint to v8.25.0 (#2953)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:45:25 +09:00
2df8e58773 fix(deps): update dependency happy-dom to v17.1.8 (#3001)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:44:58 +09:00
da8e0106f6 chore(deps): update dependency eslint-config-prettier to v10.0.2 (#3035)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:44:43 +09:00
b0b2005e1c chore(deps): update dependency @electron/universal to v2.0.2 (#3034)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:44:24 +09:00
5817d9c3ae chore(deps): update dependency @stylistic/eslint-plugin-js to v4 (#2950)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:43:13 +09:00
08f9187cdf chore(deps): update dependency electron-builder-squirrel-windows to v26.0.9 (#2930)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:42:38 +09:00
49ac17a40e fix(no-google-login): Remove Library icon removal code (#3010) 2025-02-28 23:42:05 +09:00
Dvd
b1c4b04ebf fix: Updated tray pause icon for consistency (#3025) 2025-02-28 23:41:43 +09:00
10b8066126 chore(deps): update dependency eslint-import-resolver-typescript to v3.8.3 (#2992)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:31:55 +09:00
d86e454d3f fix(deps): update dependency hono to v4.7.2 (#2999)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-28 23:31:40 +09:00
4ea8fa2561 fix: Filter for only MusicResponsiveListItem in playlist items (#3022) 2025-02-28 23:25:01 +09:00
dbea4c5884 fix(deps): update dependency youtubei.js to v13.1.0 (#3015) 2025-02-28 23:20:46 +09:00
7d4e949f0c chore(i18n): Translated using Weblate (Danish)
Currently translated at 32.5% (132 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/da/
2025-02-27 10:03:56 +00:00
82917e7748 chore(i18n): Added translation using Weblate (Danish) 2025-02-26 10:15:21 +01:00
7c9544a528 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 16.0% (65 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-02-26 09:04:34 +01:00
960a20e899 chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.2% (403 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2025-02-22 14:28:49 +01:00
c9b7901681 chore(i18n): Translated using Weblate (Thai)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-02-19 18:02:02 +01:00
95698aaf35 chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.5% (404 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2025-02-19 18:02:00 +01:00
4dc87417ff chore(i18n): Translated using Weblate (Thai)
Currently translated at 69.4% (282 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2025-02-18 17:47:14 +01:00
7510f8eb08 chore(i18n): Translated using Weblate (Arabic)
Currently translated at 39.1% (159 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-02-18 13:51:53 +01:00
59103df665 fix: Match engines.pnpm with the pnpm version used to create the lock files (#2995) 2025-02-18 12:14:53 +09:00
258d35e48d chore(i18n): Translated using Weblate (Czech)
Currently translated at 92.8% (377 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2025-02-17 20:29:57 +01:00
5e419489d5 Update changelog for v3.7.4 2025-02-17 15:54:12 +00:00
0d462ac3a2 HOTFIX: Bump version to 3.7.4 2025-02-18 00:37:57 +09:00
bcb94f6de8 chore(deps): update dependency rollup to v4.34.8 (#2982)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-18 00:36:54 +09:00
fe925ec8ee fix(plugin-loader): update context filtering logic for backend mode (#2990) 2025-02-18 00:35:55 +09:00
86c77d141f Update changelog for v3.7.3 2025-02-17 04:04:16 +00:00
754ca3caaa Bump version to 3.7.3 2025-02-17 12:47:57 +09:00
61ea104d7b fix(downloader): use the upgrade button to check for premium status (#2987) 2025-02-17 12:42:07 +09:00
573bdfae03 chore(deps): update dependency electron-vite to v3 (#2986)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-17 02:45:21 +09:00
cca493b7d5 fix: build performance 2025-02-17 02:44:47 +09:00
f47262d27b fix(album-color-theme): fix Color deps 2025-02-17 01:44:24 +09:00
65bf9129ea fix(action-release): bump pnpm version to v10 2025-02-16 15:22:07 +09:00
87e9b9f7a8 fix: revert some deps 2025-02-16 14:43:13 +09:00
07bc4f05fd chore(deps): update dependency @babel/runtime to v7.26.9 (#2980)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-16 14:37:52 +09:00
e3a6808087 fix: pnpm overrides 2025-02-16 14:37:22 +09:00
e9184e5d60 fix: bump deps 2025-02-16 14:30:02 +09:00
a5b32d96f8 fix(action): bump pnpm version to v10 2025-02-16 14:14:08 +09:00
040db7539c fix(deps): fix pnpm 2025-02-16 14:12:28 +09:00
da646c1d53 fix(vite): set server.cors.origin (#2981) 2025-02-16 13:23:35 +09:00
5f5917f972 chore(deps-dev): bump esbuild from 0.24.2 to 0.25.0 (#2973)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-16 00:08:47 +09:00
eccb0d2f08 fix(deps): update dependency solid-transition-group to v0.3.0 (#2949)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-15 03:50:09 +09:00
4cd9dd17df fix: remove disable-gpu-memory-buffer-video-frames flag (#2963) 2025-02-15 03:49:52 +09:00
5de07b9a96 fix(downloader): fix pmd undefined 2025-02-14 21:23:19 +09:00
151f067beb chore(i18n): Translated using Weblate (Hindi)
Currently translated at 33.2% (135 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-02-10 07:01:54 +01:00
c68a7bd19f chore(i18n): Translated using Weblate (Filipino)
Currently translated at 86.6% (352 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fil/
2025-02-10 07:01:53 +01:00
b87e5e31df chore(i18n): Translated using Weblate (Arabic)
Currently translated at 35.9% (146 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-02-08 21:49:42 +01:00
03229d61c8 chore(i18n): Translated using Weblate (Arabic)
Currently translated at 35.9% (146 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ar/
2025-02-08 01:01:53 +00:00
b6330eed18 fix(deps): update dependency semver to v7.7.0 (#2948)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:47:32 +09:00
b254812ac2 chore(deps): update playwright monorepo to v1.50.1 (#2943)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:45:11 +09:00
7e243e2fbf fix(deps): update dependency @hono/node-server to v1.13.8 (#2944)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:44:10 +09:00
307e52cc89 fix(deps): update dependency electron-store to v10.0.1 (#2945)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:43:45 +09:00
f7b7ea916f chore(deps): update dependency rollup to v4.34.1 (#2946)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:43:34 +09:00
3eccf8daca chore(deps): update dependency typescript-eslint to v8.22.0 (#2947)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-03 18:43:23 +09:00
aa48944212 fix(synced-lyrics): Fix reverse direction of synced lyrics for persian or other rtl languages (#2940)
Add direction auto to synced lyrics to fix reverse direction in rtl languages
2025-02-02 23:55:07 +09:00
4d51f1a412 chore(deps): update dependency electron to v34.0.2 (#2942)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:54:45 +09:00
d3c9f76582 chore(deps): update dependency discord-api-types to v0.37.119 (#2941)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:46:22 +09:00
d638a6cf28 fix(deps): update dependency hono to v4.6.20 (#2932)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:46:12 +09:00
f93651b219 chore(deps): update eslint monorepo to v9.19.0 (#2935)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:45:20 +09:00
cb8c6c69fe fix(deps): update dependency bgutils-js to v3.1.3 (#2934)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:45:10 +09:00
4e7266fb1b fix(deps): update dependency i18next to v24.2.2 (#2933)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:44:59 +09:00
8de75ff3a5 fix(deps): update dependency happy-dom to v16.8.1 (#2936)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-02 23:44:38 +09:00
3236c88eb2 chore(i18n): Translated using Weblate (Hebrew)
Currently translated at 11.8% (48 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/he/
2025-01-27 18:02:51 +00:00
c9f0ad14c2 chore(deps): update dependency @babel/runtime to v7.26.7 (#2924)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:36:15 +09:00
0a9199c92b chore(config): migrate renovate config (#2925)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:36:04 +09:00
3ffcff7d9c fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.0 (#2923)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:27:46 +09:00
ddf614d362 fix(deps): update dependency @ghostery/adblocker-electron to v2.5.0 (#2922)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:21:45 +09:00
6f1a77bbb9 chore(deps): update playwright monorepo to v1.50.0 (#2921)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:21:33 +09:00
8595f9761e fix: pnpm patch key 2025-01-25 00:21:18 +09:00
cc442182fd chore(deps): update dependency vite-plugin-inspect to v10.1.0 (#2920)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:20:11 +09:00
b827a05eea chore(deps): update dependency rollup to v4.32.0 (#2919)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:14:57 +09:00
250abab8bc fix(deps): update dependency hono to v4.6.18 (#2918)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:14:46 +09:00
8e45518ccf fix(deps): update dependency deepmerge-ts to v7.1.4 (#2917)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:14:36 +09:00
7485e065ed chore(deps): update dependency vite to v6.0.11 (#2894)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:14:21 +09:00
c1d88f91d4 chore(deps): update dependency electron to v34.0.1 (#2916)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:14:09 +09:00
124a2bd8d0 fix: pnpm patch 2025-01-25 00:13:55 +09:00
f8f94f9665 Rename app-builder-lib@26.0.0-alpha.9.patch to app-builder-lib@26.0.0-alpha.10.patch 2025-01-25 00:13:15 +09:00
5e98a82b23 chore(deps): update dependency electron-builder-squirrel-windows to v26.0.0-alpha.10 (#2899)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:12:48 +09:00
a5c20a66b3 chore(deps): update dependency electron-builder to v26.0.0-alpha.10 (#2898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:07:25 +09:00
cc84116ad1 chore(deps): update dependency typescript-eslint to v8.21.0 (#2901)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:06:16 +09:00
a2e2031708 chore(deps): update dependency discord-api-types to v0.37.117 (#2895)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:05:46 +09:00
5001eabf23 fix(deps): update dependency youtubei.js to v13 (#2904)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:05:14 +09:00
aac2974430 chore(deps): update dependency vite to v6.0.9 [security] (#2907)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:04:50 +09:00
f7f005bb3d fix(deps): update dependency happy-dom to v16.7.2 (#2902)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-25 00:02:58 +09:00
e1f6d5b7f2 fix(discord-plugin): handle album name padding if length < 2 (#2903) 2025-01-25 00:02:38 +09:00
b6b607897e feat(navigation): added nav icon padding (#2905) 2025-01-25 00:02:24 +09:00
651ebb2b1a chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 97.7% (397 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2025-01-23 22:01:53 +01:00
9fa24deed2 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2025-01-23 22:01:52 +01:00
c81022d373 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 99.5% (404 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2025-01-23 22:01:51 +01:00
b726dc7580 chore(i18n): Translated using Weblate (Hindi)
Currently translated at 30.7% (125 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/hi/
2025-01-22 06:47:10 +01:00
471aa7d0a6 chore(i18n): Translated using Weblate (Persian)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-01-22 06:47:09 +01:00
f34d645ac3 chore(deps): update dependency rollup to v4.31.0 (#2891)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-20 11:55:56 +09:00
d2a11a560e chore(deps): update dependency eslint-plugin-prettier to v5.2.3 (#2889)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-19 22:08:46 +09:00
9d185872db chore(i18n): Translated using Weblate (Persian)
Currently translated at 100.0% (406 of 406 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fa/
2025-01-18 15:56:20 +01:00
d0ff71aa66 chore(deps): update dependency vite-plugin-inspect to v10.0.7 (#2882)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 22:44:03 +09:00
bc8999585f fix(deps): update dependency hono to v4.6.17 (#2883)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-01-18 18:15:36 +09:00
1e1582e31f Update changelog for v3.7.2 2025-01-18 05:44:19 +00:00
287 changed files with 34974 additions and 7588 deletions

View File

@ -6,7 +6,7 @@ on:
pull_request:
env:
NODE_VERSION: "20.x"
NODE_VERSION: "22.x"
jobs:
build:
@ -18,24 +18,24 @@ jobs:
os: [ macos-latest, ubuntu-latest, windows-latest ]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
version: 10
run_install: false
- name: Setup NodeJS
if: startsWith(matrix.os, 'macOS') != true
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Setup NodeJS for macOS
if: startsWith(matrix.os, 'macOS')
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}
@ -91,26 +91,26 @@ jobs:
if: github.repository == 'th-ch/youtube-music' && github.ref == 'refs/heads/master'
needs: build
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
version: 10
run_install: false
- name: Setup NodeJS
if: startsWith(matrix.os, 'macOS') != true
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Setup NodeJS for macOS
if: startsWith(matrix.os, 'macOS')
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}
@ -162,7 +162,7 @@ jobs:
- name: Commit changelog
if: ${{ env.VERSION_HASH == '' }}
uses: stefanzweifel/git-auto-commit-action@v5
uses: stefanzweifel/git-auto-commit-action@v6
with:
commit_message: Update changelog for ${{ env.VERSION_TAG }}
file_pattern: "changelog.md"

View File

@ -15,6 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: "Checkout Repository"
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: "Dependency Review"
uses: actions/dependency-review-action@v4

41
.github/workflows/reviewdog.yml vendored Normal file
View File

@ -0,0 +1,41 @@
name: reviewdog
on: [pull_request_target]
env:
NODE_VERSION: "22.x"
jobs:
eslint:
name: runner / eslint
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
checks: write
steps:
- uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
- name: Setup NodeJS
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- uses: reviewdog/action-eslint@v1.34.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review # Change reporter.
eslint_flags: './src'
fail_level: error

View File

@ -20,7 +20,7 @@ jobs:
TAG_NAME: ${{ inputs.tag_name || github.event.release.tag_name }}
run: echo "WINGET_TAG_NAME=$(echo ${TAG_NAME#v})" >> $GITHUB_ENV
- name: Submit package to Windows Package Manager Community Repository
uses: vedantmgoyal2009/winget-releaser@v2
uses: vedantmgoyal2009/winget-releaser@main
with:
identifier: th-ch.YouTubeMusic
installers-regex: '^YouTube-Music-Web-Setup-[\d\.]+\.exe$'

3
.gitignore vendored
View File

@ -1,7 +1,6 @@
node_modules
/dist
/pack
electron-builder.yml
.vscode/settings.json
.idea
@ -13,3 +12,5 @@ electron-builder.yml
!.yarn/sdks
!.yarn/versions
.vite-inspect
.DS_Store

View File

@ -1,5 +1,7 @@
{
"tabWidth": 2,
"useTabs": false,
"singleQuote": true
"singleQuote": true,
"trailingComma": "all",
"quoteProps": "consistent"
}

View File

@ -3,7 +3,7 @@
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/eslint.config.mjs)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -21,7 +21,7 @@
</a>
</div>
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md), [🇷🇺](./docs/readme/README-ru.md), [🇭🇺](./docs/readme/README-hu.md)
Read this in other languages: [한국어](./docs/readme/README-ko.md), [Française](./docs/readme/README-fr.md), [Íslenska](./docs/readme/README-is.md), [Español](./docs/readme/README-es.md), [Pусский](./docs/readme/README-ru.md), [Українська](./docs/readme/README-uk.md), [Magyar](./docs/readme/README-hu.md), [Português](./docs/readme/README-pt.md), [日本語](./docs/readme/README-ja.md)
**Electron wrapper around YouTube Music featuring:**
@ -153,6 +153,8 @@ Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸]
- **Tuna OBS**: Integration with [OBS](https://obsproject.com/)'s
plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/)
- **Unobtrusive Player**: Prevents the player from popping up when playing a song
- **Video Quality Changer**: Allows changing the video quality with
a [button](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) on
the video overlay

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -2,8 +2,543 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [v3.11.0](https://github.com/th-ch/youtube-music/compare/v3.10.0...v3.11.0)
- Fixed missing videochange dataupdated event when using shuffle [`#3659`](https://github.com/th-ch/youtube-music/pull/3659)
- feat(synced-lyrics): preferred provider (global/per-song) [`#3741`](https://github.com/th-ch/youtube-music/pull/3741)
- feat(api-server): send shuffle state over websocket [`#3837`](https://github.com/th-ch/youtube-music/pull/3837)
- feat(synced-lyrics): add new "spacer" [`#3742`](https://github.com/th-ch/youtube-music/pull/3742)
- feat(downloader): Add context menu button for playlists and albums [`#3768`](https://github.com/th-ch/youtube-music/pull/3768)
- feat(transparent-player): new plugin for Acrylic, Mica or Tabbed effects [`#3529`](https://github.com/th-ch/youtube-music/pull/3529)
- fix(audio-compressor): real-time behavior and duplicated audio bug [`#3786`](https://github.com/th-ch/youtube-music/pull/3786)
- fix: Added Min height and width to the window which doesnt breaks the UI responsiveness [`#3602`](https://github.com/th-ch/youtube-music/pull/3602)
- chore(deps): update dependency discord-api-types to v0.38.23 [`#3833`](https://github.com/th-ch/youtube-music/pull/3833)
- feat(plugin): Custom output device plugin [`#3789`](https://github.com/th-ch/youtube-music/pull/3789)
- chore(deps): update dependency @babel/runtime to v7.28.4 [`#3831`](https://github.com/th-ch/youtube-music/pull/3831)
- chore(deps): update eslint monorepo to v9.35.0 [`#3829`](https://github.com/th-ch/youtube-music/pull/3829)
- feat(api-server): Add websocket as `/api/v1/ws` route [`#3707`](https://github.com/th-ch/youtube-music/pull/3707)
- feat(api-server): Improved api-server volume and like/dislike state [`#3592`](https://github.com/th-ch/youtube-music/pull/3592)
- fix(deps): update dependency i18next to v25.5.2 [`#3826`](https://github.com/th-ch/youtube-music/pull/3826)
- fix(deps): update dependency virtua to v0.42.2 [`#3827`](https://github.com/th-ch/youtube-music/pull/3827)
- fix(exponential-volume): volume desync bug [`#3787`](https://github.com/th-ch/youtube-music/pull/3787)
- feat(synced-lyrics): thai romanization [`#3618`](https://github.com/th-ch/youtube-music/pull/3618)
- feat(discord): add option to display artist/title in status [`#3692`](https://github.com/th-ch/youtube-music/pull/3692)
- chore(deps): update playwright monorepo to v1.55.0 [`#3819`](https://github.com/th-ch/youtube-music/pull/3819)
- fix(deps): update dependency i18next to v25.5.1 [`#3820`](https://github.com/th-ch/youtube-music/pull/3820)
- fix(deps): update dependency virtua to v0.42.0 [`#3821`](https://github.com/th-ch/youtube-music/pull/3821)
- fix(deps): update dependency zod to v4.1.5 [`#3822`](https://github.com/th-ch/youtube-music/pull/3822)
- chore(deps): update eslint monorepo to v9.34.0 [`#3818`](https://github.com/th-ch/youtube-music/pull/3818)
- chore(deps): update actions/setup-node action to v5 [`#3823`](https://github.com/th-ch/youtube-music/pull/3823)
- chore(deps): update dependency electron to v38 [`#3824`](https://github.com/th-ch/youtube-music/pull/3824)
- chore(deps): update dependency @stylistic/eslint-plugin to v5.3.1 [`#3817`](https://github.com/th-ch/youtube-music/pull/3817)
- fix(deps): update dependency serve to v14.2.5 [`#3816`](https://github.com/th-ch/youtube-music/pull/3816)
- feat(discord): add song & artist URLs to rich presence [`#3737`](https://github.com/th-ch/youtube-music/pull/3737)
- fix: fix #3621 [`#3774`](https://github.com/th-ch/youtube-music/pull/3774)
- feat(refactor): PluginDefinition::platform [`#3665`](https://github.com/th-ch/youtube-music/pull/3665)
- chore(docs): update copyright footer year [`#3792`](https://github.com/th-ch/youtube-music/pull/3792)
- chore(deps): update dependency vite-plugin-inspect to v11.3.3 [`#3814`](https://github.com/th-ch/youtube-music/pull/3814)
- fix(deps): update dependency @floating-ui/dom to v1.7.4 [`#3815`](https://github.com/th-ch/youtube-music/pull/3815)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.11.6 [`#3770`](https://github.com/th-ch/youtube-music/pull/3770)
- chore(deps): update dependency discord-api-types to v0.38.22 [`#3813`](https://github.com/th-ch/youtube-music/pull/3813)
- chore(deps): update dependency @types/semver to v7.7.1 [`#3812`](https://github.com/th-ch/youtube-music/pull/3812)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.11.6 [`#3771`](https://github.com/th-ch/youtube-music/pull/3771)
- fix(deps): update dependency @hono/node-server to v1.19.1 [`#3759`](https://github.com/th-ch/youtube-music/pull/3759)
- chore(deps): update dependency typescript-eslint to v8.42.0 [`#3761`](https://github.com/th-ch/youtube-music/pull/3761)
- chore(deps): update dependency node-gyp to v11.4.2 [`#3772`](https://github.com/th-ch/youtube-music/pull/3772)
- chore(deps): update actions/checkout action to v5 [`#3757`](https://github.com/th-ch/youtube-music/pull/3757)
- chore(deps): update dependency vite to v7.1.5 [`#3760`](https://github.com/th-ch/youtube-music/pull/3760)
- fix(deps): update dependency hono to v4.9.6 [security] [`#3807`](https://github.com/th-ch/youtube-music/pull/3807)
- chore(deps): update dependency electron to v37.3.1 [security] [`#3806`](https://github.com/th-ch/youtube-music/pull/3806)
- chore(deps): bump hono from 4.9.2 to 4.9.6 [`#3805`](https://github.com/th-ch/youtube-music/pull/3805)
- chore(deps): update playwright monorepo to v1.54.2 [`#3713`](https://github.com/th-ch/youtube-music/pull/3713)
- chore(deps): update dependency vite to v7.1.2 [`#3710`](https://github.com/th-ch/youtube-music/pull/3710)
- chore(deps): update dependency @stylistic/eslint-plugin to v5.2.3 [`#3754`](https://github.com/th-ch/youtube-music/pull/3754)
- chore(deps): update dependency @babel/runtime to v7.28.3 [`#3753`](https://github.com/th-ch/youtube-music/pull/3753)
- chore(deps): update dependency discord-api-types to v0.38.20 [`#3706`](https://github.com/th-ch/youtube-music/pull/3706)
- fix(deps): update dependency @floating-ui/dom to v1.7.3 [`#3714`](https://github.com/th-ch/youtube-music/pull/3714)
- chore(deps): update dependency vite-plugin-solid to v2.11.8 [`#3711`](https://github.com/th-ch/youtube-music/pull/3711)
- chore(deps): update dependency rollup to v4.46.2 [`#3709`](https://github.com/th-ch/youtube-music/pull/3709)
- chore(deps): update dependency @electron/universal to v3.0.1 [`#3705`](https://github.com/th-ch/youtube-music/pull/3705)
- chore(deps): update dependency electron to v37.3.0 [`#3708`](https://github.com/th-ch/youtube-music/pull/3708)
- chore(docs): Grammar mistakes [`#3722`](https://github.com/th-ch/youtube-music/pull/3722)
- Fixes the error 500 for /auth/ endpoint [`#3627`](https://github.com/th-ch/youtube-music/pull/3627)
- feat: add custom window title option [`#3656`](https://github.com/th-ch/youtube-music/pull/3656)
- fix(deps): update dependency zod to v4.0.10 [`#3686`](https://github.com/th-ch/youtube-music/pull/3686)
- chore(deps): update dependency @babel/runtime to v7.28.2 [`#3687`](https://github.com/th-ch/youtube-music/pull/3687)
- chore(deps): update dependency rollup to v4.46.1 [`#3632`](https://github.com/th-ch/youtube-music/pull/3632)
- chore(deps): update dependency electron to v38.0.0-alpha.10 [`#3681`](https://github.com/th-ch/youtube-music/pull/3681)
- chore(deps): update dependency eslint-config-prettier to v10.1.8 [`#3676`](https://github.com/th-ch/youtube-music/pull/3676)
- chore(deps): update dependency eslint-plugin-prettier to v5.5.3 [`#3678`](https://github.com/th-ch/youtube-music/pull/3678)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.11.3 [`#3679`](https://github.com/th-ch/youtube-music/pull/3679)
- chore(deps): update dependency discord-api-types to v0.38.17 [`#3620`](https://github.com/th-ch/youtube-music/pull/3620)
- chore(deps): update dependency esbuild to v0.25.8 [`#3675`](https://github.com/th-ch/youtube-music/pull/3675)
- chore(deps): update dependency @stylistic/eslint-plugin to v5.2.2 [`#3636`](https://github.com/th-ch/youtube-music/pull/3636)
- fix(deps): update dependency @hono/node-server to v1.17.1 [`#3625`](https://github.com/th-ch/youtube-music/pull/3625)
- fix(deps): update dependency hono to v4.8.7 [`#3567`](https://github.com/th-ch/youtube-music/pull/3567)
- chore(deps): update dependency typescript-eslint to v8.38.0 [`#3628`](https://github.com/th-ch/youtube-music/pull/3628)
- chore(deps): update dependency electron to v38.0.0-alpha.9 [`#3626`](https://github.com/th-ch/youtube-music/pull/3626)
- fix(Skip Disliked Song): updated querySelector [`#3667`](https://github.com/th-ch/youtube-music/pull/3667)
- chore(deps): update dependency vite to v7.0.11 [`#3624`](https://github.com/th-ch/youtube-music/pull/3624)
- fix(deps): update dependency @hono/zod-validator to v0.7.1 [`#3616`](https://github.com/th-ch/youtube-music/pull/3616)
- fix(discord-rpc, scrobbler): Align artist and title with the last.fm's de facto standard [`#3358`](https://github.com/th-ch/youtube-music/issues/3358) [`#3641`](https://github.com/th-ch/youtube-music/issues/3641)
- fix: fix #3621 (#3774) [`#3621`](https://github.com/th-ch/youtube-music/issues/3621)
- fix: fix #3661 [`#3661`](https://github.com/th-ch/youtube-music/issues/3661)
- fix: fix #3613, fix #3651 [`#3613`](https://github.com/th-ch/youtube-music/issues/3613) [`#3651`](https://github.com/th-ch/youtube-music/issues/3651)
- chore: remove unused deps [`2a81a4e`](https://github.com/th-ch/youtube-music/commit/2a81a4e887cb5cc3c91a672302db6da3c15544e8)
- chore(i18n): Translated using Weblate (Swedish) [`0a6f244`](https://github.com/th-ch/youtube-music/commit/0a6f244035f17724ab1934f3cb2e011adf838e09)
- fix: bump dependencies [`5ba65ea`](https://github.com/th-ch/youtube-music/commit/5ba65ea1221236478efa8cb61bca3ffb1bb2d061)
#### [v3.10.0](https://github.com/th-ch/youtube-music/compare/v3.9.0...v3.10.0)
> 13 July 2025
- fix(deps): update dependency butterchurn to v3.0.0-beta.5 [`#3610`](https://github.com/th-ch/youtube-music/pull/3610)
- chore(deps): update eslint monorepo to v9.31.0 [`#3600`](https://github.com/th-ch/youtube-music/pull/3600)
- chore(deps): update dependency rollup to v4.45.0 [`#3568`](https://github.com/th-ch/youtube-music/pull/3568)
- feat: code splitting [`#3593`](https://github.com/th-ch/youtube-music/pull/3593)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.11.1 [`#3571`](https://github.com/th-ch/youtube-music/pull/3571)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.11.1 [`#3570`](https://github.com/th-ch/youtube-music/pull/3570)
- chore(deps): update playwright monorepo to v1.54.1 [`#3599`](https://github.com/th-ch/youtube-music/pull/3599)
- chore(deps): update playwright monorepo to v1.54.0 [`#3591`](https://github.com/th-ch/youtube-music/pull/3591)
- chore(deps): update dependency electron to v37.2.1 [`#3559`](https://github.com/th-ch/youtube-music/pull/3559)
- fix(deps): update dependency socks to v2.8.6 [`#3598`](https://github.com/th-ch/youtube-music/pull/3598)
- fix(deps): update dependency zod to v4.0.5 [`#3594`](https://github.com/th-ch/youtube-music/pull/3594)
- chore(deps): update dependency vite to v7.0.8 [`#3597`](https://github.com/th-ch/youtube-music/pull/3597)
- chore(deps): update dependency vite to v7.0.7 [`#3590`](https://github.com/th-ch/youtube-music/pull/3590)
- chore(deps): update dependency @electron/universal to v3 [`#3565`](https://github.com/th-ch/youtube-music/pull/3565)
- fix(deps): update dependency electron-unhandled to v5 [`#2088`](https://github.com/th-ch/youtube-music/pull/2088)
- feat: enable the ESM for main [`#3588`](https://github.com/th-ch/youtube-music/pull/3588)
- fix(deps): update dependency zod to v4 [`#3587`](https://github.com/th-ch/youtube-music/pull/3587)
- feat: migrate from raw HTML to JSX (TSX / SolidJS) [`#3583`](https://github.com/th-ch/youtube-music/pull/3583)
- docs: add Unobtrusive Player in available plugins [`#3582`](https://github.com/th-ch/youtube-music/pull/3582)
- fix(deps): update dependency @hono/node-server to v1.15.0 [`#3557`](https://github.com/th-ch/youtube-music/pull/3557)
- chore(deps): update dependency vitefu to v1.1.1 [`#3564`](https://github.com/th-ch/youtube-music/pull/3564)
- chore(deps): update dependency discord-api-types to v0.38.15 [`#3562`](https://github.com/th-ch/youtube-music/pull/3562)
- fix(deps): update dependency es-hangul to v2.3.5 [`#3563`](https://github.com/th-ch/youtube-music/pull/3563)
- fix(deps): update dependency zod to v3.25.71 [`#3558`](https://github.com/th-ch/youtube-music/pull/3558)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.9.2 [`#3560`](https://github.com/th-ch/youtube-music/pull/3560)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.9.2 [`#3561`](https://github.com/th-ch/youtube-music/pull/3561)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.9.0 [`#3555`](https://github.com/th-ch/youtube-music/pull/3555)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.9.0 [`#3556`](https://github.com/th-ch/youtube-music/pull/3556)
- chore(deps): update eslint monorepo to v9.30.1 [`#3552`](https://github.com/th-ch/youtube-music/pull/3552)
- Fixed play/pause discord rich presence by fixing lastsonginfo tracking [`#3551`](https://github.com/th-ch/youtube-music/pull/3551)
- feat: enable rolldown native plugin [`#3502`](https://github.com/th-ch/youtube-music/pull/3502)
- fix(deps): update dependency virtua to v0.41.5 [`#3549`](https://github.com/th-ch/youtube-music/pull/3549)
- chore(deps): update dependency typescript-eslint to v8.35.1 [`#3545`](https://github.com/th-ch/youtube-music/pull/3545)
- chore(deps): update dependency discord-api-types to v0.38.14 [`#3546`](https://github.com/th-ch/youtube-music/pull/3546)
- chore(deps): update playwright monorepo to v1.53.2 [`#3547`](https://github.com/th-ch/youtube-music/pull/3547)
- fix(deps): update dependency i18next to v25.3.0 [`#3548`](https://github.com/th-ch/youtube-music/pull/3548)
- perf(synced-lyrics): virtual scrolling [`#3162`](https://github.com/th-ch/youtube-music/pull/3162)
- chore(deps): update dependency vite to v7 [`#3524`](https://github.com/th-ch/youtube-music/pull/3524)
- feat(synced-lyrics): Musixmatch [`#3261`](https://github.com/th-ch/youtube-music/pull/3261)
- feat(api-server): add optional params for search [`#3440`](https://github.com/th-ch/youtube-music/pull/3440)
- chore(deps): update dependency vite-plugin-inspect to v11.3.0 [`#3543`](https://github.com/th-ch/youtube-music/pull/3543)
- chore(deps): update eslint monorepo to v9.30.0 [`#3544`](https://github.com/th-ch/youtube-music/pull/3544)
- chore(deps): update dependency rollup to v4.44.1 [`#3537`](https://github.com/th-ch/youtube-music/pull/3537)
- chore(deps): update dependency ws to v8.18.3 [`#3538`](https://github.com/th-ch/youtube-music/pull/3538)
- fix(deps): update dependency @hono/zod-openapi to v0.19.9 [`#3540`](https://github.com/th-ch/youtube-music/pull/3540)
- fix(deps): update dependency @floating-ui/dom to v1.7.2 [`#3539`](https://github.com/th-ch/youtube-music/pull/3539)
- fix(deps): update dependency es-hangul to v2.3.4 [`#3541`](https://github.com/th-ch/youtube-music/pull/3541)
- fix(deps): update dependency hono to v4.8.3 [`#3542`](https://github.com/th-ch/youtube-music/pull/3542)
- fix(style): fix duplicated scrollbar [`#3483`](https://github.com/th-ch/youtube-music/pull/3483)
- chore(deps): update dependency typescript-eslint to v8.35.0 [`#3518`](https://github.com/th-ch/youtube-music/pull/3518)
- chore(deps): update dependency vite-plugin-solid to v2.11.7 [`#3520`](https://github.com/th-ch/youtube-music/pull/3520)
- chore(deps): update dependency discord-api-types to v0.38.13 [`#3517`](https://github.com/th-ch/youtube-music/pull/3517)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.4.4 [`#3534`](https://github.com/th-ch/youtube-music/pull/3534)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.8.0 [`#3521`](https://github.com/th-ch/youtube-music/pull/3521)
- chore(deps): update dependency eslint-plugin-prettier to v5.5.1 [`#3535`](https://github.com/th-ch/youtube-music/pull/3535)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.8.0 [`#3522`](https://github.com/th-ch/youtube-music/pull/3522)
- chore(deps): update dependency electron to v37 [`#3527`](https://github.com/th-ch/youtube-music/pull/3527)
- feat: Add instructional note to Swagger documentation [`#3532`](https://github.com/th-ch/youtube-music/pull/3532)
- chore(deps): update playwright monorepo to v1.53.1 [`#3504`](https://github.com/th-ch/youtube-music/pull/3504)
- chore(deps): update dependency rollup to v4.44.0 [`#3508`](https://github.com/th-ch/youtube-music/pull/3508)
- chore(deps): update dependency eslint-plugin-import to v2.32.0 [`#3513`](https://github.com/th-ch/youtube-music/pull/3513)
- fix(deps): update dependency hono to v4.8.2 [`#3509`](https://github.com/th-ch/youtube-music/pull/3509)
- chore(deps): update dependency electron to v36.5.0 [`#3503`](https://github.com/th-ch/youtube-music/pull/3503)
- chore(deps): update stefanzweifel/git-auto-commit-action action to v6 [`#3500`](https://github.com/th-ch/youtube-music/pull/3500)
- chore(deps): update dependency vite to v6.3.21 [`#3492`](https://github.com/th-ch/youtube-music/pull/3492)
- fix(deps): update dependency hono to v4.8.0 [`#3499`](https://github.com/th-ch/youtube-music/pull/3499)
- chore(deps): update playwright monorepo to v1.53.0 [`#3497`](https://github.com/th-ch/youtube-music/pull/3497)
- chore(deps): update eslint monorepo to v9.29.0 [`#3496`](https://github.com/th-ch/youtube-music/pull/3496)
- chore(deps): update dependency vite-plugin-inspect to v11.2.0 [`#3495`](https://github.com/th-ch/youtube-music/pull/3495)
- fix(deps): update dependency happy-dom to v18 [`#3501`](https://github.com/th-ch/youtube-music/pull/3501)
- fix(deps): update dependency electron-store to v10.1.0 [`#3498`](https://github.com/th-ch/youtube-music/pull/3498)
- chore(deps): update dependency eslint-plugin-prettier to v5.5.0 [`#3493`](https://github.com/th-ch/youtube-music/pull/3493)
- chore(deps): update dependency rollup to v4.43.0 [`#3494`](https://github.com/th-ch/youtube-music/pull/3494)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.7.0 [`#3466`](https://github.com/th-ch/youtube-music/pull/3466)
- fix(deps): update dependency @hono/swagger-ui to v0.5.2 [`#3465`](https://github.com/th-ch/youtube-music/pull/3465)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.7.0 [`#3467`](https://github.com/th-ch/youtube-music/pull/3467)
- fix(deps): update dependency youtubei.js to v14 [`#3468`](https://github.com/th-ch/youtube-music/pull/3468)
- chore(deps): update dependency discord-api-types to v0.38.12 [`#3490`](https://github.com/th-ch/youtube-music/pull/3490)
- chore(deps): update dependency glob to v11.0.3 [`#3491`](https://github.com/th-ch/youtube-music/pull/3491)
- chore(deps): update dependency typescript-eslint to v8.34.1 [`#3469`](https://github.com/th-ch/youtube-music/pull/3469)
- fix(deps): update dependency socks to v2.8.5 [`#3470`](https://github.com/th-ch/youtube-music/pull/3470)
- fix(deps): update dependency zod to v3.25.67 [`#3471`](https://github.com/th-ch/youtube-music/pull/3471)
- chore(deps): update dependency @babel/runtime to v7.27.6 [`#3451`](https://github.com/th-ch/youtube-music/pull/3451)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.4.3 [`#3453`](https://github.com/th-ch/youtube-music/pull/3453)
- fix(deps): update dependency zod to v3.25.56 [`#3454`](https://github.com/th-ch/youtube-music/pull/3454)
- fix(deps): update dependency @hono/node-server to v1.14.4 [`#3456`](https://github.com/th-ch/youtube-music/pull/3456)
- chore(deps): update dependency rollup to v4.42.0 [`#3457`](https://github.com/th-ch/youtube-music/pull/3457)
- fix(deps): update dependency conf to v14 [`#3458`](https://github.com/th-ch/youtube-music/pull/3458)
- fix(deps): update dependency peerjs to v1.5.5 [`#3460`](https://github.com/th-ch/youtube-music/pull/3460)
- chore(deps): update dependency @stylistic/eslint-plugin-js to v4.4.1 [`#3444`](https://github.com/th-ch/youtube-music/pull/3444)
- chore(deps): update dependency discord-api-types to v0.38.11 [`#3445`](https://github.com/th-ch/youtube-music/pull/3445)
- chore(deps): update dependency electron to v36.4.0 [`#3447`](https://github.com/th-ch/youtube-music/pull/3447)
- fix(deps): update dependency zod to v3.25.51 [`#3446`](https://github.com/th-ch/youtube-music/pull/3446)
- fix(deps): update dependency hono to v4.7.11 [`#3435`](https://github.com/th-ch/youtube-music/pull/3435)
- fix(deps): update dependency @floating-ui/dom to v1.7.1 [`#3434`](https://github.com/th-ch/youtube-music/pull/3434)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.4.2 [`#3432`](https://github.com/th-ch/youtube-music/pull/3432)
- chore(deps): update dependency eslint-plugin-prettier to v5.4.1 [`#3433`](https://github.com/th-ch/youtube-music/pull/3433)
- fix(deps): update dependency zod to v3.25.50 [`#3443`](https://github.com/th-ch/youtube-music/pull/3443)
- fix(deps): update dependency happy-dom to v17.6.3 [`#3438`](https://github.com/th-ch/youtube-music/pull/3438)
- fix(deps): update dependency zod to v3.25.49 [`#3436`](https://github.com/th-ch/youtube-music/pull/3436)
- chore(deps): update eslint monorepo to v9.28.0 [`#3437`](https://github.com/th-ch/youtube-music/pull/3437)
- fix(deps): update dependency @hono/zod-openapi to v0.19.8 [`#3411`](https://github.com/th-ch/youtube-music/pull/3411)
- fix: use gtk 3 switch as workaround [`#3366`](https://github.com/th-ch/youtube-music/pull/3366)
- chore(deps): update dependency electron to v36.3.2 [`#3431`](https://github.com/th-ch/youtube-music/pull/3431)
- fix(deps): update dependency @xhayper/discord-rpc to v1.2.2 [`#3413`](https://github.com/th-ch/youtube-music/pull/3413)
- fix(deps): update dependency happy-dom to v17.5.6 [`#3417`](https://github.com/th-ch/youtube-music/pull/3417)
- fix(deps): update dependency @hono/zod-validator to v0.7.0 [`#3414`](https://github.com/th-ch/youtube-music/pull/3414)
- chore(deps): update dependency discord-api-types to v0.38.10 [`#3430`](https://github.com/th-ch/youtube-music/pull/3430)
- chore(deps): update dependency typescript-eslint to v8.33.1 [`#3416`](https://github.com/th-ch/youtube-music/pull/3416)
- chore(docs): Improve README-es.md by adjusting the bad Spanish translation [`#3424`](https://github.com/th-ch/youtube-music/pull/3424)
- chore(docs): Improve README.md by removing the extra flag for Spanish translation [`#3422`](https://github.com/th-ch/youtube-music/pull/3422)
- chore(deps): update dependency @babel/runtime to v7.27.4 [`#3410`](https://github.com/th-ch/youtube-music/pull/3410)
- fix(deps): update dependency ts-morph to v26 [`#3409`](https://github.com/th-ch/youtube-music/pull/3409)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.6.1 [`#3407`](https://github.com/th-ch/youtube-music/pull/3407)
- fix(deps): update dependency zod to v3.25.30 [`#3408`](https://github.com/th-ch/youtube-music/pull/3408)
- fix(precise-volume): replace constructor check for volume slider [`#3362`](https://github.com/th-ch/youtube-music/pull/3362)
- chore(deps): update dependency vite-plugin-inspect to v11.1.0 [`#3393`](https://github.com/th-ch/youtube-music/pull/3393)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.4.1 [`#3406`](https://github.com/th-ch/youtube-music/pull/3406)
- chore(deps): update dependency @stylistic/eslint-plugin-js to v4.4.0 [`#3391`](https://github.com/th-ch/youtube-music/pull/3391)
- fix(deps): update dependency i18next to v25.2.1 [`#3405`](https://github.com/th-ch/youtube-music/pull/3405)
- chore(deps): update dependency esbuild to v0.25.5 [`#3403`](https://github.com/th-ch/youtube-music/pull/3403)
- fix(deps): update dependency @hono/node-server to v1.14.3 [`#3404`](https://github.com/th-ch/youtube-music/pull/3404)
- chore(deps): update dependency rollup to v4.41.1 [`#3392`](https://github.com/th-ch/youtube-music/pull/3392)
- chore(deps): update eslint monorepo to v9.27.0 [`#3394`](https://github.com/th-ch/youtube-music/pull/3394)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.6.1 [`#3395`](https://github.com/th-ch/youtube-music/pull/3395)
- fix(deps): update dependency hono to v4.7.10 [`#3390`](https://github.com/th-ch/youtube-music/pull/3390)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.5 [`#3388`](https://github.com/th-ch/youtube-music/pull/3388)
- fix(deps): update dependency @hono/node-server to v1.14.2 [`#3389`](https://github.com/th-ch/youtube-music/pull/3389)
- chore(deps): update dependency electron to v36.3.1 [`#3372`](https://github.com/th-ch/youtube-music/pull/3372)
- chore(deps): update dependency typescript-eslint to v8.32.1 [`#3364`](https://github.com/th-ch/youtube-music/pull/3364)
- fix(deps): update dependency semver to v7.7.2 [`#3365`](https://github.com/th-ch/youtube-music/pull/3365)
- fix(album-actions): update playlist and button selectors [`#3367`](https://github.com/th-ch/youtube-music/pull/3367)
- fix(deps): update dependency i18next to v25.2.0 [`#3370`](https://github.com/th-ch/youtube-music/pull/3370)
- chore(deps): update dependency discord-api-types to v0.38.8 [`#3361`](https://github.com/th-ch/youtube-music/pull/3361)
- fix(deps): update dependency solid-js to v1.9.7 [`#3375`](https://github.com/th-ch/youtube-music/pull/3375)
- chore(deps): update dependency electron to v36 [`#3307`](https://github.com/th-ch/youtube-music/pull/3307)
- fix(deps): update dependency @floating-ui/dom to v1.7.0 [`#3357`](https://github.com/th-ch/youtube-music/pull/3357)
- chore(deps): update eslint monorepo to v9.26.0 [`#3356`](https://github.com/th-ch/youtube-music/pull/3356)
- chore(deps): update dependency eslint-plugin-prettier to v5.4.0 [`#3355`](https://github.com/th-ch/youtube-music/pull/3355)
- fix(deps): update dependency zod to v3.24.4 [`#3354`](https://github.com/th-ch/youtube-music/pull/3354)
- fix(deps): update dependency solid-js to v1.9.6 [`#3353`](https://github.com/th-ch/youtube-music/pull/3353)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.2 [`#3350`](https://github.com/th-ch/youtube-music/pull/3350)
- fix(deps): update dependency happy-dom to v17.4.7 [`#3352`](https://github.com/th-ch/youtube-music/pull/3352)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.5.2 [`#3349`](https://github.com/th-ch/youtube-music/pull/3349)
- chore(deps): update dependency vite to v6.3.5 [`#3346`](https://github.com/th-ch/youtube-music/pull/3346)
- chore(deps): update dependency ws to v8.18.2 [`#3347`](https://github.com/th-ch/youtube-music/pull/3347)
- feat(plugin): support authenticated proxy [`#3175`](https://github.com/th-ch/youtube-music/pull/3175)
- chore(deps): update dependency esbuild to v0.25.4 [`#3344`](https://github.com/th-ch/youtube-music/pull/3344)
- chore(deps): update dependency eslint-config-prettier to v10.1.5 [`#3345`](https://github.com/th-ch/youtube-music/pull/3345)
- fix(deps): update dependency hono to v4.7.9 [`#3302`](https://github.com/th-ch/youtube-music/pull/3302)
- chore(deps): update dependency electron to v34.5.5 [`#3343`](https://github.com/th-ch/youtube-music/pull/3343)
- docs: Add Ukrainian translation [`#3338`](https://github.com/th-ch/youtube-music/pull/3338)
- chore(deps): update dependency discord-api-types to v0.38.4 [`#3342`](https://github.com/th-ch/youtube-music/pull/3342)
- chore(deps): update dependency rollup to v4.40.2 [`#3301`](https://github.com/th-ch/youtube-music/pull/3301)
- chore(deps): update dependency @electron/universal to v2.0.3 [`#3341`](https://github.com/th-ch/youtube-music/pull/3341)
- fix(deps): update dependency @hono/zod-validator to v0.5.0 [`#3295`](https://github.com/th-ch/youtube-music/pull/3295)
- chore(deps): update dependency @babel/runtime to v7.27.1 [`#3340`](https://github.com/th-ch/youtube-music/pull/3340)
- fix(deps): update dependency i18next to v25.1.2 [`#3305`](https://github.com/th-ch/youtube-music/pull/3305)
- fix(album-actions): use playlist shelf for playlist detection [`#3306`](https://github.com/th-ch/youtube-music/pull/3306)
- chore(deps): update dependency typescript-eslint to v8.32.0 [`#3304`](https://github.com/th-ch/youtube-music/pull/3304)
- chore(deps): update dependency vite to v6.3.4 [security] [`#3313`](https://github.com/th-ch/youtube-music/pull/3313)
- fix(deps): update dependency @hono/zod-openapi to v0.19.6 [`#3294`](https://github.com/th-ch/youtube-music/pull/3294)
- fix(deps): update dependency es-hangul to v2.3.3 [`#3293`](https://github.com/th-ch/youtube-music/pull/3293)
- fix(api-server): fix #3572 [`#3572`](https://github.com/th-ch/youtube-music/issues/3572)
- fix(youtube-music): fix #3296, and macOS traffic lights [`#3296`](https://github.com/th-ch/youtube-music/issues/3296)
- fix: kuromoji zlib and apply rolldown-vite [`f047dd2`](https://github.com/th-ch/youtube-music/commit/f047dd2d2df189b55b60188392c451aad65b7a1b)
- fix: apply fix from eslint [`1da83ff`](https://github.com/th-ch/youtube-music/commit/1da83ff27c2ccfcdf48c0b0b125033b1a1c194d2)
- feat: refactor [`51b3f53`](https://github.com/th-ch/youtube-music/commit/51b3f535695c0f19cd252049985578d11a853ccb)
#### [v3.9.0](https://github.com/th-ch/youtube-music/compare/v3.8.1...v3.9.0)
> 27 April 2025
- feat(tuna-obs): added alternativeTitle and tags to tuna [`#3288`](https://github.com/th-ch/youtube-music/pull/3288)
- fix: rollback electron version to v34 (for fix #3216) [`#3216`](https://github.com/th-ch/youtube-music/issues/3216)
- fix(synced-lyrics): fix #3157 [`#3157`](https://github.com/th-ch/youtube-music/issues/3157)
- feat(performance-improvement): added "performance improvement" plugin [`1c76415`](https://github.com/th-ch/youtube-music/commit/1c764158461da414cea8bf34c3b514f1f98d7adf)
- chore(i18n): Translated using Weblate (Bosnian) [`a3d620b`](https://github.com/th-ch/youtube-music/commit/a3d620ba52b7fa8ae623b9d42b0652a22eaf65e7)
- Update changelog for v3.8.1 [`58cf1a5`](https://github.com/th-ch/youtube-music/commit/58cf1a543d98419c1a944e57407c0ea53b8168d8)
#### [v3.8.1](https://github.com/th-ch/youtube-music/compare/v3.8.0...v3.8.1)
> 25 April 2025
- chore(deps): update dependency glob to v11.0.2 [`#3283`](https://github.com/th-ch/youtube-music/pull/3283)
- fix(deps): update dependency i18next to v25.0.1 [`#3284`](https://github.com/th-ch/youtube-music/pull/3284)
- chore(deps): update dependency typescript-eslint to v8.31.0 [`#3286`](https://github.com/th-ch/youtube-music/pull/3286)
- chore(deps): update dependency discord-api-types to v0.38.1 [`#3285`](https://github.com/th-ch/youtube-music/pull/3285)
- fix(deps): update dependency youtubei.js to v13.4.0 [`#3287`](https://github.com/th-ch/youtube-music/pull/3287)
- fix(deps): update dependency zod to v3.24.3 [`#3250`](https://github.com/th-ch/youtube-music/pull/3250)
- chore(deps): update dependency vite to v6.3.3 [`#3251`](https://github.com/th-ch/youtube-music/pull/3251)
- fix(deps): update dependency @hono/zod-openapi to v0.19.5 [`#3258`](https://github.com/th-ch/youtube-music/pull/3258)
- chore(deps): update dependency vite-plugin-inspect to v11.0.1 [`#3259`](https://github.com/th-ch/youtube-music/pull/3259)
- chore(deps): update dependency esbuild to v0.25.3 [`#3282`](https://github.com/th-ch/youtube-music/pull/3282)
- chore(deps): update eslint monorepo to v9.25.1 [`#3260`](https://github.com/th-ch/youtube-music/pull/3260)
- chore(deps): update dependency electron to v35.2.1 [`#3281`](https://github.com/th-ch/youtube-music/pull/3281)
- chore(deps): update playwright monorepo to v1.52.0 [`#3256`](https://github.com/th-ch/youtube-music/pull/3256)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.4 [`#3273`](https://github.com/th-ch/youtube-music/pull/3273)
- fix: fix cuted "j" and glow in lyrics [`#3277`](https://github.com/th-ch/youtube-music/pull/3277)
- chore(deps): update dependency electron to v35.2.0 [`#3263`](https://github.com/th-ch/youtube-music/pull/3263)
- fix(unobtrusive-player): handle shuffle play [`#3247`](https://github.com/th-ch/youtube-music/pull/3247)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.5.1 [`#3238`](https://github.com/th-ch/youtube-music/pull/3238)
- chore(deps): update dependency vite to v6.3.0 [`#3248`](https://github.com/th-ch/youtube-music/pull/3248)
- chore(deps): update dependency typescript-eslint to v8.30.1 [`#3234`](https://github.com/th-ch/youtube-music/pull/3234)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.1 [`#3239`](https://github.com/th-ch/youtube-music/pull/3239)
- fix(deps): update dependency i18next to v25 [`#3243`](https://github.com/th-ch/youtube-music/pull/3243)
- fix(deps): update dependency hono to v4.7.7 [`#3245`](https://github.com/th-ch/youtube-music/pull/3245)
- chore(deps): update dependency vite to v6.2.6 [`#3189`](https://github.com/th-ch/youtube-music/pull/3189)
- feat(Synced-Lyrics): Also search for lyrics with the original title language [`#3206`](https://github.com/th-ch/youtube-music/pull/3206)
- chore(deps): update dependency eslint-config-prettier to v10.1.2 [`#3219`](https://github.com/th-ch/youtube-music/pull/3219)
- chore(deps): update dependency discord-api-types to v0.37.120 [`#3221`](https://github.com/th-ch/youtube-music/pull/3221)
- fix(deps): update dependency @hono/node-server to v1.14.1 [`#3223`](https://github.com/th-ch/youtube-music/pull/3223)
- chore(deps): update dependency vite to v6.2.6 [security] [`#3224`](https://github.com/th-ch/youtube-music/pull/3224)
- chore(deps): update dependency rollup to v4.40.0 [`#3227`](https://github.com/th-ch/youtube-music/pull/3227)
- fix(mpris): keep MPRIS volume in sync with the actual volume [`#3226`](https://github.com/th-ch/youtube-music/pull/3226)
- fix(deps): update dependency @hono/zod-openapi to v0.19.4 [`#3215`](https://github.com/th-ch/youtube-music/pull/3215)
- chore(deps): update dependency electron to v35.1.5 [`#3218`](https://github.com/th-ch/youtube-music/pull/3218)
- fix(deps): update dependency hono to v4.7.6 [`#3217`](https://github.com/th-ch/youtube-music/pull/3217)
- docs: add Portuguese README translation and update language shortcuts [`#3192`](https://github.com/th-ch/youtube-music/pull/3192)
- fix: custom Video/Audio switcher in Plugins menu [`#3174`](https://github.com/th-ch/youtube-music/pull/3174)
- chore(deps): update dependency typescript-eslint to v8.29.1 [`#3214`](https://github.com/th-ch/youtube-music/pull/3214)
- chore(deps): update eslint monorepo to v9.24.0 [`#3195`](https://github.com/th-ch/youtube-music/pull/3195)
- chore(deps): update dependency typescript to v5.8.3 [`#3196`](https://github.com/th-ch/youtube-music/pull/3196)
- chore(deps): update dependency vite to v6.2.5 [security] [`#3194`](https://github.com/th-ch/youtube-music/pull/3194)
- fix(deps): update dependency node-id3 to v0.2.9 [`#3191`](https://github.com/th-ch/youtube-music/pull/3191)
- chore(deps): update dependency electron to v35.1.4 [`#3184`](https://github.com/th-ch/youtube-music/pull/3184)
- chore(deps): update dependency eslint-plugin-prettier to v5.2.6 [`#3182`](https://github.com/th-ch/youtube-music/pull/3182)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.2 [`#3208`](https://github.com/th-ch/youtube-music/pull/3208)
- docs: add Japanese README [`#3180`](https://github.com/th-ch/youtube-music/pull/3180)
- chore(deps): update dependency node-gyp to v11.2.0 [`#3177`](https://github.com/th-ch/youtube-music/pull/3177)
- chore(deps): update dependency rollup to v4.39.0 [`#3179`](https://github.com/th-ch/youtube-music/pull/3179)
- chore(deps): update dependency typescript-eslint to v8.29.0 [`#3169`](https://github.com/th-ch/youtube-music/pull/3169)
- fix(downloader): allow downloads for signed out users [`#3145`](https://github.com/th-ch/youtube-music/pull/3145)
- fix(README): Fixed typos in some hyperlinks [`#3158`](https://github.com/th-ch/youtube-music/pull/3158)
- chore(deps): update dependency vite to v6.2.4 [`#3124`](https://github.com/th-ch/youtube-music/pull/3124)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.1 [`#3151`](https://github.com/th-ch/youtube-music/pull/3151)
- chore(deps): update dependency rollup to v4.38.0 [`#3154`](https://github.com/th-ch/youtube-music/pull/3154)
- chore(deps): update dependency esbuild to v0.25.2 [`#3160`](https://github.com/th-ch/youtube-music/pull/3160)
- chore(deps): update dependency electron to v35.1.2 [`#3147`](https://github.com/th-ch/youtube-music/pull/3147)
- chore(deps): update dependency electron to v35.1.1 [`#3143`](https://github.com/th-ch/youtube-music/pull/3143)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.2.5 [`#3144`](https://github.com/th-ch/youtube-music/pull/3144)
- chore(deps): update dependency @types/semver to v7.7.0 [`#3141`](https://github.com/th-ch/youtube-music/pull/3141)
- fix(deps): update dependency electron-updater to v6.6.2 [`#3142`](https://github.com/th-ch/youtube-music/pull/3142)
- chore(i18n): Translated using Weblate (Greek) [`8bb4f44`](https://github.com/th-ch/youtube-music/commit/8bb4f4426f6a82b1b5c13a385a6e2b94c25f88a2)
- chore(i18n): Translated using Weblate (Bulgarian) [`89fe072`](https://github.com/th-ch/youtube-music/commit/89fe072c0e719026212bb506bb66baf37b31ceb4)
- chore(i18n): Translated using Weblate (Greek) [`5a7daaf`](https://github.com/th-ch/youtube-music/commit/5a7daaf2f6d1211c4b9461facf4de1962714bacf)
#### [v3.8.0](https://github.com/th-ch/youtube-music/compare/v3.7.5...v3.8.0)
> 26 March 2025
- chore(deps): update dependency typescript-eslint to v8.28.0 [`#3128`](https://github.com/th-ch/youtube-music/pull/3128)
- chore(deps): update dependency eslint-plugin-prettier to v5.2.5 [`#3123`](https://github.com/th-ch/youtube-music/pull/3123)
- fix(deps): update dependency @hono/node-server to v1.14.0 [`#3131`](https://github.com/th-ch/youtube-music/pull/3131)
- chore(deps): update dependency electron to v35.1.0 [`#3136`](https://github.com/th-ch/youtube-music/pull/3136)
- fix(deps): update dependency es-hangul to v2.3.2 [`#3138`](https://github.com/th-ch/youtube-music/pull/3138)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.2.4 [`#3135`](https://github.com/th-ch/youtube-music/pull/3135)
- chore(deps): update eslint monorepo to v9.23.0 [`#3130`](https://github.com/th-ch/youtube-music/pull/3130)
- chore(deps): update dependency electron-vite to v3.1.0 [`#3137`](https://github.com/th-ch/youtube-music/pull/3137)
- chore(deps): update dependency @babel/runtime to v7.27.0 [`#3127`](https://github.com/th-ch/youtube-music/pull/3127)
- feat(synced-lyrics): romanization [`#2790`](https://github.com/th-ch/youtube-music/pull/2790)
- feat(plugin): add unobtrusive player plugin [`#3104`](https://github.com/th-ch/youtube-music/pull/3104)
- chore(deps): update dependency vite to v6.2.3 [security] [`#3134`](https://github.com/th-ch/youtube-music/pull/3134)
- fix(deps): update dependency youtubei.js to v13.3.0 [`#3133`](https://github.com/th-ch/youtube-music/pull/3133)
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.12 [`#3122`](https://github.com/th-ch/youtube-music/pull/3122)
- chore(deps): update dependency eslint-import-resolver-typescript to v4.2.2 [`#3106`](https://github.com/th-ch/youtube-music/pull/3106)
- chore(deps): update dependency electron-builder to v26.0.12 [`#3121`](https://github.com/th-ch/youtube-music/pull/3121)
- fix: Discord Rich Presence Fix [`#3074`](https://github.com/th-ch/youtube-music/pull/3074)
- fix(deps): update dependency @xhayper/discord-rpc to v1.2.1 [`#3107`](https://github.com/th-ch/youtube-music/pull/3107)
- chore(deps): update dependency typescript-eslint to v8.27.0 [`#3111`](https://github.com/th-ch/youtube-music/pull/3111)
- chore(deps): update dependency electron to v35.0.3 [`#3112`](https://github.com/th-ch/youtube-music/pull/3112)
- fix(deps): update dependency hono to v4.7.5 [`#3113`](https://github.com/th-ch/youtube-music/pull/3113)
- fix(deps): update dependency fast-average-color to v9.5.0 [`#3114`](https://github.com/th-ch/youtube-music/pull/3114)
- chore(deps): update dependency rollup to v4.37.0 [`#3103`](https://github.com/th-ch/youtube-music/pull/3103)
- chore(deps): update playwright monorepo to v1.51.1 [`#3105`](https://github.com/th-ch/youtube-music/pull/3105)
- chore(deps): update dependency eslint-import-resolver-typescript to v4 [`#3102`](https://github.com/th-ch/youtube-music/pull/3102)
- chore(deps): update dependency electron to v35.0.2 [`#3099`](https://github.com/th-ch/youtube-music/pull/3099)
- fix(deps): update dependency i18next to v24.2.3 [`#3100`](https://github.com/th-ch/youtube-music/pull/3100)
- chore(deps): update dependency electron-builder to v26.0.11 [`#3095`](https://github.com/th-ch/youtube-music/pull/3095)
- chore(deps): update dependency @babel/runtime to v7.26.10 [security] [`#3094`](https://github.com/th-ch/youtube-music/pull/3094)
- chore(deps): update dependency eslint-config-prettier to v10.1.1 [`#3069`](https://github.com/th-ch/youtube-music/pull/3069)
- chore(deps): update playwright monorepo to v1.51.0 [`#3065`](https://github.com/th-ch/youtube-music/pull/3065)
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.11 [`#3096`](https://github.com/th-ch/youtube-music/pull/3096)
- chore(deps): update dependency esbuild to v0.25.1 [`#3097`](https://github.com/th-ch/youtube-music/pull/3097)
- chore(deps): update dependency typescript-eslint to v8.26.1 [`#3098`](https://github.com/th-ch/youtube-music/pull/3098)
- chore(deps): update eslint monorepo to v9.22.0 [`#3070`](https://github.com/th-ch/youtube-music/pull/3070)
- chore(deps): update dependency rollup to v4.35.0 [`#3071`](https://github.com/th-ch/youtube-music/pull/3071)
- chore(deps): update dependency electron to v35.0.1 [`#3075`](https://github.com/th-ch/youtube-music/pull/3075)
- fix(deps): update dependency happy-dom to v17.4.4 [`#3068`](https://github.com/th-ch/youtube-music/pull/3068)
- chore(deps): update dependency vite to v6.2.2 [`#3067`](https://github.com/th-ch/youtube-music/pull/3067)
- fix: Update winget-releaser version to main [`#3091`](https://github.com/th-ch/youtube-music/pull/3091)
- feat: Allow scrobbling using alternative song titles [`#3093`](https://github.com/th-ch/youtube-music/pull/3093)
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.10 [`#3054`](https://github.com/th-ch/youtube-music/pull/3054)
- chore(deps): update dependency typescript-eslint to v8.26.0 [`#3056`](https://github.com/th-ch/youtube-music/pull/3056)
- fix(deps): update dependency hono to v4.7.4 [`#3062`](https://github.com/th-ch/youtube-music/pull/3062)
- chore(deps): update dependency electron-builder to v26.0.10 [`#3053`](https://github.com/th-ch/youtube-music/pull/3053)
- chore(deps): update dependency electron to v35 [`#3058`](https://github.com/th-ch/youtube-music/pull/3058)
- fix(deps): update dependency happy-dom to v17.2.2 [`#3060`](https://github.com/th-ch/youtube-music/pull/3060)
- fix(deps): update dependency happy-dom to v17.1.13 [`#3057`](https://github.com/th-ch/youtube-music/pull/3057)
- chore(deps): update dependency typescript to v5.8.2 [`#3040`](https://github.com/th-ch/youtube-music/pull/3040)
- chore(deps): update dependency rollup to v4.34.9 [`#3043`](https://github.com/th-ch/youtube-music/pull/3043)
- fix(deps): update dependency @hono/swagger-ui to v0.5.1 [`#3045`](https://github.com/th-ch/youtube-music/pull/3045)
- fix: added French link in general README file [`#3047`](https://github.com/th-ch/youtube-music/pull/3047)
- fix(deps): update dependency @hono/zod-openapi to v0.19.2 [`#3046`](https://github.com/th-ch/youtube-music/pull/3046)
- chore(deps): update dependency @stylistic/eslint-plugin-js to v4.2.0 [`#3050`](https://github.com/th-ch/youtube-music/pull/3050)
- fix(deps): update dependency bgutils-js to v3.2.0 [`#3049`](https://github.com/th-ch/youtube-music/pull/3049)
- chore(i18n): Translated using Weblate (Tamil) [`a3601ce`](https://github.com/th-ch/youtube-music/commit/a3601cece6a1d291f9887e1a5049fb3c6ad09eb1)
- chore(i18n): Translated using Weblate (Arabic) [`06aaba0`](https://github.com/th-ch/youtube-music/commit/06aaba0c7fe9173051701c626d44a347b1bd7574)
- chore(i18n): Translated using Weblate (Spanish) [`dbf8b1c`](https://github.com/th-ch/youtube-music/commit/dbf8b1c5c53d88f676c12b7ffca0e23b3efaa541)
#### [v3.7.5](https://github.com/th-ch/youtube-music/compare/v3.7.4...v3.7.5)
> 1 March 2025
- chore(deps): update dependency builtin-modules to v5 [`#3038`](https://github.com/th-ch/youtube-music/pull/3038)
- chore(deps): update dependency typescript-eslint to v8.25.0 [`#2953`](https://github.com/th-ch/youtube-music/pull/2953)
- fix(deps): update dependency happy-dom to v17.1.8 [`#3001`](https://github.com/th-ch/youtube-music/pull/3001)
- chore(deps): update dependency eslint-config-prettier to v10.0.2 [`#3035`](https://github.com/th-ch/youtube-music/pull/3035)
- chore(deps): update dependency @electron/universal to v2.0.2 [`#3034`](https://github.com/th-ch/youtube-music/pull/3034)
- chore(deps): update dependency @stylistic/eslint-plugin-js to v4 [`#2950`](https://github.com/th-ch/youtube-music/pull/2950)
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.9 [`#2930`](https://github.com/th-ch/youtube-music/pull/2930)
- fix(no-google-login): Remove Library icon removal code [`#3010`](https://github.com/th-ch/youtube-music/pull/3010)
- fix: Updated tray pause icon for consistency [`#3025`](https://github.com/th-ch/youtube-music/pull/3025)
- chore(deps): update dependency eslint-import-resolver-typescript to v3.8.3 [`#2992`](https://github.com/th-ch/youtube-music/pull/2992)
- fix(deps): update dependency hono to v4.7.2 [`#2999`](https://github.com/th-ch/youtube-music/pull/2999)
- fix: Filter for only `MusicResponsiveListItem` in playlist items [`#3022`](https://github.com/th-ch/youtube-music/pull/3022)
- fix(deps): update dependency youtubei.js to v13.1.0 [`#3015`](https://github.com/th-ch/youtube-music/pull/3015)
- fix: Match engines.pnpm with the pnpm version used to create the lock files [`#2995`](https://github.com/th-ch/youtube-music/pull/2995)
- chore(deps): update dependency electron-builder to v26.0.9 [`457e1bb`](https://github.com/th-ch/youtube-music/commit/457e1bb48e2bcc742680d22b7d34ffdbe7f33eae)
- chore(deps): update deps [`c8bb1f3`](https://github.com/th-ch/youtube-music/commit/c8bb1f386d7053d755c38ca2cac8708af7af1fb9)
- chore(i18n): Translated using Weblate (Thai) [`c9b7901`](https://github.com/th-ch/youtube-music/commit/c9b790168130d0cfc9b2ff23cdcb56ab082a4b66)
#### [v3.7.4](https://github.com/th-ch/youtube-music/compare/v3.7.3...v3.7.4)
> 18 February 2025
- chore(deps): update dependency rollup to v4.34.8 [`#2982`](https://github.com/th-ch/youtube-music/pull/2982)
- fix(plugin-loader): update context filtering logic for backend mode [`#2990`](https://github.com/th-ch/youtube-music/pull/2990)
- Update changelog for v3.7.3 [`86c77d1`](https://github.com/th-ch/youtube-music/commit/86c77d141f2bec62a4a578fff96d51ed388c05a5)
- HOTFIX: Bump version to 3.7.4 [`0d462ac`](https://github.com/th-ch/youtube-music/commit/0d462ac3a26caee23854014cbf5e4b91e2d385e2)
#### [v3.7.3](https://github.com/th-ch/youtube-music/compare/v3.7.2...v3.7.3)
> 17 February 2025
- fix(downloader): use the upgrade button to check for premium status [`#2987`](https://github.com/th-ch/youtube-music/pull/2987)
- chore(deps): update dependency electron-vite to v3 [`#2986`](https://github.com/th-ch/youtube-music/pull/2986)
- chore(deps): update dependency @babel/runtime to v7.26.9 [`#2980`](https://github.com/th-ch/youtube-music/pull/2980)
- fix(vite): set server.cors.origin [`#2981`](https://github.com/th-ch/youtube-music/pull/2981)
- chore(deps-dev): bump esbuild from 0.24.2 to 0.25.0 [`#2973`](https://github.com/th-ch/youtube-music/pull/2973)
- fix(deps): update dependency solid-transition-group to v0.3.0 [`#2949`](https://github.com/th-ch/youtube-music/pull/2949)
- fix: remove disable-gpu-memory-buffer-video-frames flag [`#2963`](https://github.com/th-ch/youtube-music/pull/2963)
- fix(deps): update dependency semver to v7.7.0 [`#2948`](https://github.com/th-ch/youtube-music/pull/2948)
- chore(deps): update playwright monorepo to v1.50.1 [`#2943`](https://github.com/th-ch/youtube-music/pull/2943)
- fix(deps): update dependency @hono/node-server to v1.13.8 [`#2944`](https://github.com/th-ch/youtube-music/pull/2944)
- fix(deps): update dependency electron-store to v10.0.1 [`#2945`](https://github.com/th-ch/youtube-music/pull/2945)
- chore(deps): update dependency rollup to v4.34.1 [`#2946`](https://github.com/th-ch/youtube-music/pull/2946)
- chore(deps): update dependency typescript-eslint to v8.22.0 [`#2947`](https://github.com/th-ch/youtube-music/pull/2947)
- fix(synced-lyrics): Fix reverse direction of synced lyrics for persian or other rtl languages [`#2940`](https://github.com/th-ch/youtube-music/pull/2940)
- chore(deps): update dependency electron to v34.0.2 [`#2942`](https://github.com/th-ch/youtube-music/pull/2942)
- chore(deps): update dependency discord-api-types to v0.37.119 [`#2941`](https://github.com/th-ch/youtube-music/pull/2941)
- fix(deps): update dependency hono to v4.6.20 [`#2932`](https://github.com/th-ch/youtube-music/pull/2932)
- chore(deps): update eslint monorepo to v9.19.0 [`#2935`](https://github.com/th-ch/youtube-music/pull/2935)
- fix(deps): update dependency bgutils-js to v3.1.3 [`#2934`](https://github.com/th-ch/youtube-music/pull/2934)
- fix(deps): update dependency i18next to v24.2.2 [`#2933`](https://github.com/th-ch/youtube-music/pull/2933)
- fix(deps): update dependency happy-dom to v16.8.1 [`#2936`](https://github.com/th-ch/youtube-music/pull/2936)
- chore(deps): update dependency @babel/runtime to v7.26.7 [`#2924`](https://github.com/th-ch/youtube-music/pull/2924)
- chore(config): migrate renovate config [`#2925`](https://github.com/th-ch/youtube-music/pull/2925)
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.0 [`#2923`](https://github.com/th-ch/youtube-music/pull/2923)
- fix(deps): update dependency @ghostery/adblocker-electron to v2.5.0 [`#2922`](https://github.com/th-ch/youtube-music/pull/2922)
- chore(deps): update playwright monorepo to v1.50.0 [`#2921`](https://github.com/th-ch/youtube-music/pull/2921)
- chore(deps): update dependency vite-plugin-inspect to v10.1.0 [`#2920`](https://github.com/th-ch/youtube-music/pull/2920)
- chore(deps): update dependency rollup to v4.32.0 [`#2919`](https://github.com/th-ch/youtube-music/pull/2919)
- fix(deps): update dependency hono to v4.6.18 [`#2918`](https://github.com/th-ch/youtube-music/pull/2918)
- fix(deps): update dependency deepmerge-ts to v7.1.4 [`#2917`](https://github.com/th-ch/youtube-music/pull/2917)
- chore(deps): update dependency vite to v6.0.11 [`#2894`](https://github.com/th-ch/youtube-music/pull/2894)
- chore(deps): update dependency electron to v34.0.1 [`#2916`](https://github.com/th-ch/youtube-music/pull/2916)
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.0-alpha.10 [`#2899`](https://github.com/th-ch/youtube-music/pull/2899)
- chore(deps): update dependency electron-builder to v26.0.0-alpha.10 [`#2898`](https://github.com/th-ch/youtube-music/pull/2898)
- chore(deps): update dependency typescript-eslint to v8.21.0 [`#2901`](https://github.com/th-ch/youtube-music/pull/2901)
- chore(deps): update dependency discord-api-types to v0.37.117 [`#2895`](https://github.com/th-ch/youtube-music/pull/2895)
- fix(deps): update dependency youtubei.js to v13 [`#2904`](https://github.com/th-ch/youtube-music/pull/2904)
- chore(deps): update dependency vite to v6.0.9 [security] [`#2907`](https://github.com/th-ch/youtube-music/pull/2907)
- fix(deps): update dependency happy-dom to v16.7.2 [`#2902`](https://github.com/th-ch/youtube-music/pull/2902)
- fix(discord-plugin): handle album name padding if length &lt; 2 [`#2903`](https://github.com/th-ch/youtube-music/pull/2903)
- feat(navigation): added nav icon padding [`#2905`](https://github.com/th-ch/youtube-music/pull/2905)
- chore(deps): update dependency rollup to v4.31.0 [`#2891`](https://github.com/th-ch/youtube-music/pull/2891)
- chore(deps): update dependency eslint-plugin-prettier to v5.2.3 [`#2889`](https://github.com/th-ch/youtube-music/pull/2889)
- chore(deps): update dependency vite-plugin-inspect to v10.0.7 [`#2882`](https://github.com/th-ch/youtube-music/pull/2882)
- fix(deps): update dependency hono to v4.6.17 [`#2883`](https://github.com/th-ch/youtube-music/pull/2883)
- fix: bump deps [`e9184e5`](https://github.com/th-ch/youtube-music/commit/e9184e5d60c2495473a7c3226ce9748ba89fceb3)
- fix(deps): fix pnpm [`040db75`](https://github.com/th-ch/youtube-music/commit/040db7539ccd1ae40f2632fdf38168cdaa26f112)
- chore(i18n): Translated using Weblate (Persian) [`9d18587`](https://github.com/th-ch/youtube-music/commit/9d185872dba5b56dabc691e56eafb13dc192b9cd)
#### [v3.7.2](https://github.com/th-ch/youtube-music/compare/v3.7.1...v3.7.2)
> 18 January 2025
- feat(api-server): add endpoint to get shuffle state [`#2792`](https://github.com/th-ch/youtube-music/pull/2792)
- chore(deps): update dependency discord-api-types to v0.37.116 [`#2877`](https://github.com/th-ch/youtube-music/pull/2877)
- chore(deps): update dependency eslint-plugin-prettier to v5.2.2 [`#2875`](https://github.com/th-ch/youtube-music/pull/2875)
- chore(deps): update eslint monorepo to v9.18.0 [`#2858`](https://github.com/th-ch/youtube-music/pull/2858)
- chore(deps): update dependency glob to v11.0.1 [`#2857`](https://github.com/th-ch/youtube-music/pull/2857)
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.0-alpha.9 [`#2874`](https://github.com/th-ch/youtube-music/pull/2874)
- chore(deps): update dependency electron to v34 [`#2867`](https://github.com/th-ch/youtube-music/pull/2867)
- chore(deps): update dependency eslint-config-prettier to v10 [`#2866`](https://github.com/th-ch/youtube-music/pull/2866)
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.13.0 [`#2864`](https://github.com/th-ch/youtube-music/pull/2864)
- chore(deps): update dependency typescript-eslint to v8.20.0 [`#2865`](https://github.com/th-ch/youtube-music/pull/2865)
- chore(deps): update dependency electron-builder to v26.0.0-alpha.9 [`#2869`](https://github.com/th-ch/youtube-music/pull/2869)
- fix: fix build.linux.desktop.entry [`#2859`](https://github.com/th-ch/youtube-music/pull/2859)
- feat(api-server): add endpoint to get volume state [`#2813`](https://github.com/th-ch/youtube-music/pull/2813)
- chore(deps): update dependency vite-plugin-inspect to v10 [`#2856`](https://github.com/th-ch/youtube-music/pull/2856)
- chore(deps): update dependency typescript to v5.7.3 [`#2855`](https://github.com/th-ch/youtube-music/pull/2855)
- fix(deps): update dependency @floating-ui/dom to v1.6.13 [`#2846`](https://github.com/th-ch/youtube-music/pull/2846)
- chore(deps): bump nanoid from 3.3.7 to 3.3.8 [`#2854`](https://github.com/th-ch/youtube-music/pull/2854)
- chore(deps): update dependency electron to v33.3.1 [`#2841`](https://github.com/th-ch/youtube-music/pull/2841)
- fix(deps): update dependency i18next to v24.2.1 [`#2840`](https://github.com/th-ch/youtube-music/pull/2840)
- chore(deps): update dependency typescript-eslint to v8.19.1 [`#2836`](https://github.com/th-ch/youtube-music/pull/2836)
- chore(deps): update dependency rollup to v4.30.1 [`#2833`](https://github.com/th-ch/youtube-music/pull/2833)
- fix(deps): update dependency solid-js to v1.9.4 [`#2849`](https://github.com/th-ch/youtube-music/pull/2849)
- fix(deps): update dependency fast-equals to v5.2.2 [`#2842`](https://github.com/th-ch/youtube-music/pull/2842)
- chore: Update README.md [`#2845`](https://github.com/th-ch/youtube-music/pull/2845)
- chore: Fixing the Content section in the README-ru.md file. [`#2847`](https://github.com/th-ch/youtube-music/pull/2847)
- chore: Create youtube-music-hu.svg [`#2844`](https://github.com/th-ch/youtube-music/pull/2844)
- chore: Create Transalated README-hu.md [`#2843`](https://github.com/th-ch/youtube-music/pull/2843)
- chore(deps): update dependency vite to v6.0.7 [`#2819`](https://github.com/th-ch/youtube-music/pull/2819)
- chore(deps): update dependency discord-api-types to v0.37.115 [`#2818`](https://github.com/th-ch/youtube-music/pull/2818)
- fix(deps): update dependency hono to v4.6.16 [`#2829`](https://github.com/th-ch/youtube-music/pull/2829)
- chore(deps): update dependency rollup to v4.29.2 [`#2832`](https://github.com/th-ch/youtube-music/pull/2832)
- fix(deps): update dependency fast-equals to v5.2.0 [`#2822`](https://github.com/th-ch/youtube-music/pull/2822)
- feat(api-server): add `insertPosition` for `addSongToQueue` [`#2808`](https://github.com/th-ch/youtube-music/pull/2808)
- chore(deps): update dependency typescript-eslint to v8.19.0 [`#2812`](https://github.com/th-ch/youtube-music/pull/2812)
- fix(deps): update dependency ts-morph to v25 [`#2810`](https://github.com/th-ch/youtube-music/pull/2810)
- fix(renderer): update event handler from onVolumeTap to onVolumeClick [`#2791`](https://github.com/th-ch/youtube-music/pull/2791)
- fix(deps): update dependency hono to v4.6.15 [`#2796`](https://github.com/th-ch/youtube-music/pull/2796)
- chore(deps): update dependency bufferutil to v4.0.9 [`#2787`](https://github.com/th-ch/youtube-music/pull/2787)
- feat: Refactor Menu Navigation and Update Media Control Icons [`#2783`](https://github.com/th-ch/youtube-music/pull/2783)
- fix(synced-lyrics): Revert font-size behavior for non-fancy modes [`#2788`](https://github.com/th-ch/youtube-music/pull/2788)
- fix(downloader): apply poToken [`#2863`](https://github.com/th-ch/youtube-music/issues/2863) [`#2780`](https://github.com/th-ch/youtube-music/issues/2780)
- chore(deps): update dependency electron-builder to v26 [`67fc0a4`](https://github.com/th-ch/youtube-music/commit/67fc0a415cae231a11f2846aadf01edb04f5c677)
- fix: fix lock file [`3339f99`](https://github.com/th-ch/youtube-music/commit/3339f997e3c2d4d2c32b3aee95c65d561f123fcb)
- chore(i18n): Translated using Weblate (Romanian) [`845dac3`](https://github.com/th-ch/youtube-music/commit/845dac3c0393dadea8efdd03ba1f41b1b36e6191)
#### [v3.7.1](https://github.com/th-ch/youtube-music/compare/v3.7.0...v3.7.1)
> 27 December 2024
- fix(deps): update dependency node-html-parser to v7 [`#2776`](https://github.com/th-ch/youtube-music/pull/2776)
- chore(deps): update dependency vite to v6.0.6 [`#2774`](https://github.com/th-ch/youtube-music/pull/2774)
- feat(api-server): Add queue api [`#2767`](https://github.com/th-ch/youtube-music/pull/2767)

View File

@ -478,7 +478,7 @@
</a>
</li>
</ul>
<div class="footer-copyright">© 2024 th-ch</div>
<div class="footer-copyright">© 2025 th-ch</div>
</div>
</div>
</div>

View File

@ -3,7 +3,7 @@
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -21,6 +21,8 @@
</a>
</div>
Lee esto en otros idiomas: [🏴 Inglés](../../README.md), [🇰🇷 Coreano](./README-ko.md), [🇫🇷 Francés](./README-fr.md), [🇮🇸 Islandés](./README-is.md), [🇪🇸 Español](./README-es.md), [🇷🇺 Ruso](./README-ru.md), [🇺🇦 Ucraniano](./README-uk.md), [🇧🇷 Portugués](./README-pt.md), [🇯🇵 Japonés](./README-ja.md)
**Electron wrapper de YouTube Music con las siguientes características:**
- Apariencia y sensación nativa, tiene como objetivo mantener la interfaz original
@ -130,7 +132,7 @@
teclas multimedia + [atajos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
para [usuarios avanzados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
- **Saltar Canción no Gustada**: Salta las canciones que no te gustan
- **Omitir Canciones No Deseadas**: Salta las canciones que no te gustan
- **Saltar Silencios**: Salta automáticamente las secciones de silencio

View File

@ -3,7 +3,7 @@
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![Licence GitHub](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![Licence GitHub](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![style de code eslint](https://img.shields.io/badge/style_de_code-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Statut de la construction](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![Toutes les versions GitHub](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -21,6 +21,7 @@
</a>
</div>
Lisez ceci dans d'autres langues: [🏴 Anglais](../../README.md), [🇰🇷 Coréen](./README-ko.md), [🇫🇷 Français](./README-fr.md), [🇮🇸 Islandais](./README-is.md), [🇪🇸 Espagnol](./README-es.md), [🇷🇺 Russe](./README-ru.md), [🇺🇦 Ukrainien](./README-uk.md), [🇧🇷 Portugais](./README-pt.md), [🇯🇵 Japonais](./README-ja.md)
**Enveloppe Electron autour de YouTube Music offrant :**

View File

@ -3,7 +3,7 @@
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/eslint.config.mjs)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -21,7 +21,7 @@
</a>
</div>
Olvasd el más nyelveken: [🏴 Angol](./blob/master/README.md), [🇰🇷 Korea](./docs/readme/README-ko.md), [🇮🇸 Izland](./docs/readme/README-is.md), [🇪🇸 Spanyol](./docs/readme/README-es.md), [🇷🇺 Orosz](./docs/readme/README-ru.md)
Olvasd el más nyelveken: [🏴 Angol](../../README.md), [🇰🇷 Korea](./README-ko.md), [🇫🇷 Francia](./README-fr.md), [🇮🇸 Izland](./README-is.md), [🇪🇸 Spanyol](./README-es.md), [🇷🇺 Orosz](./README-ru.md), [🇺🇦 Ukrán](./README-uk.md), [🇧🇷 Portugál](./README-pt.md), [🇯🇵 Japán](./README-ja.md)
**Electron keretrendszerre épülő alkalmazás a YouTube Music számára, amely a következőket kínálja:**

View File

@ -3,7 +3,7 @@
# YouTube Tónlist
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -21,6 +21,8 @@
</a>
</div>
Lestu þetta á öðrum tungumálum: [🏴 Enska](../../README.md), [🇰🇷 Kóreska](./README-ko.md), [🇫🇷 Franska](./README-fr.md), [🇮🇸 Íslenska](./README-is.md), [🇪🇸 Spænska](./README-es.md), [🇷🇺 Rússneska](./README-ru.md), [🇺🇦 Úkraínska](./README-uk.md), [🇧🇷 Portúgalska](./README-pt.md), [🇭🇺 Ungverska](./README-hu.md) [🇯🇵 Japanska](./README-ja.md)
**Electron umbúðir utan um YouTube Tónlist sem inniheldur:**
- Innfæddur útlit og tilfinning, miðar að því að halda upprunalegu viðmótinu

371
docs/readme/README-ja.md Normal file
View File

@ -0,0 +1,371 @@
<div align="center">
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/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)
[![Known Vulnerabilities](https://snyk.io/test/github/th-ch/youtube-music/badge.svg)](https://snyk.io/test/github/th-ch/youtube-music)
</div>
![Screenshot](/web/screenshot.png "Screenshot")
<div align="center">
<a href="https://github.com/th-ch/youtube-music/releases/latest">
<img src="../../web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
</a>
</div>
他の言語で読む: [🏴 英語](../../README.md), [🇰🇷 韓国語](./README-ko.md), [🇫🇷 フランス語](./README-fr.md), [🇮🇸 アイスランド語](./README-is.md), [🇪🇸 スペイン語](./README-es.md), [🇷🇺 ロシア語](./README-ru.md), [🇺🇦 ウクライナ語](./README-uk.md)
**YouTube MusicのElectronラッパーには以下の機能があります:**
- ネイティブの外観と操作感、元のインターフェースを維持することを目指しています
- カスタムプラグインのフレームワーク: スタイル、コンテンツ、機能など、YouTube Musicをニーズに合わせて変更し、ワンクリックでプラグインを有効/無効にできます
## デモ画像
| プレーヤースクリーン (アルバムカラーテーマ & アンビエントライト) |
|:---------------------------------------------------------------------------------------------------------:|
|![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)|
## コンテンツ
- [機能](#機能)
- [利用可能なプラグイン](#利用可能なプラグイン)
- [翻訳](#翻訳)
- [ダウンロード](#ダウンロード)
- [Arch Linux](#arch-linux)
- [MacOS](#macos)
- [Windows](#windows)
- [ネットワーク接続なしでインストールする方法 (Windows)](#ネットワーク接続なしでインストールする方法-windows)
- [テーマ](#テーマ)
- [開発](#開発)
- [独自のプラグインを作成する](#独自のプラグインを作成する)
- [プラグインの作成](#プラグインの作成)
- [一般的な使用例](#一般的な使用例)
- [ビルド](#ビルド)
- [プロダクションプレビュー](#プロダクションプレビュー)
- [テスト](#テスト)
- [ライセンス](#ライセンス)
- [FAQ](#faq)
## 機能:
- **一時停止時の自動確認** (常に有効): 一定時間後に音楽を一時停止する["視聴を続けますか?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)ポップアップを無効にします
- その他の機能...
## 利用可能なプラグイン:
- **広告ブロッカー**: すべての広告とトラッキングをブロックします
- **アルバムアクション**: プレイリストやアルバム内のすべての曲に「嫌いではない」「嫌い」「好き」「好きではない」ボタンを追加します
- **アルバムカラーテーマ**: アルバムのカラーパレットに基づいて動的なテーマと視覚効果を適用します
- **アンビエントモード**: 動画から柔らかい色を画面の背景に投影するライティング効果を適用します
- **<2A><><EFBFBD>ーディオコンプレッサー**: オーディオにコンプレッションを適用します(信号の最も大きな部分の音量を下げ、最も小さな部分の音量を上げます)
- **ナビゲーションバーのぼかし**: ナビゲーションバーを透明でぼやけたものにします
- **年齢制限の回避**: YouTubeの年齢確認を回避します
- **字幕選択**: 字幕を有効にします
- **コンパクトサイドバー**: サイドバーを常にコンパクトモードに設定します
- **クロスフェード**: 曲間にクロスフェードを適用します
- **自動再生の無効化**: すべての曲を「一時停止」モードで開始します
- **[Discord](https://discord.com/) リッチプレゼンス**: [リッチプレゼンス](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)を使用して、友達にあなたが聴いている曲を表示します
- **ダウンローダー**: UIから直接MP3/ソースオーディオをダウンロードします
- **イコライザー**: 特定の周波数範囲をブーストまたはカットするフィルターを追加します(例: ベースブースター)
- **指数音量**: 音量スライダーを[指数関数的](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/)にして、低い音量を選択しやすくします
- **アプリ内メニュー**: [メニューバーをおしゃれで暗い外観にします](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
> (このプラグインとメニュー非表示オプションを有効にした後、メニューにアクセスする際に問題がある場合は、[この投稿](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709)を参照してください)
- **スクロブラー**: [Last.fm](https://www.last.fm/)や[ListenBrainz](https://listenbrainz.org/)のスクロブリングサポートを追加します
- **Lumia Stream**: [Lumia Stream](https://lumiastream.com/)のサポートを追加します
- **Genius 歌詞**: ほとんどの曲に歌詞サポートを追加します
- **Music Together**: プレイリストを他の人と共有します。ホストが曲を再生すると、他の全員が同じ曲を聴くことができます
- **ナビゲーション**: お気に入りのブラウザのように、UIに直接統合された次/前のナビゲーション矢印を追加します
- **Googleログインなし**: インターフェースからGoogleログインボタンとリンクを削除します
- **通知**: 曲の再生が開始されると通知を表示しますWindowsでは[インタラクティブ通知](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)が利用可能です)
- **ピクチャーインピクチャー**: アプリをピクチャーインピクチャーモードに切り替えることができます
- **再生速度**: 速く聴いたり、遅く聴いたりできます!曲の速度を制御するスライダーを追加します
- **正確な音量**: カスタムHUDとカスタマイズ可能な音量ステップを使用して、マウスホイール/ホットキーで音量を正確に制御します
- **ショートカット (& MPRIS)**: 再生用のグローバルホットキー(再生/一時停止/次/前を設定し、メディアキーをオーバーライドしてメディアOSDを無効にし、Ctrl/CMD + Fで検索を有効にし、LinuxのMPRISサポートを有効にし、[上級ユーザー](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)向けの[カスタムホットキー](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)を追加します
- **嫌いな曲をスキップ**: 嫌いな曲をスキップします
- **無音部分をスキップ**: 無音部分を自動的にスキップします
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): イントロ/アウトロなどの音楽以外の部分や、曲が再生されていないミュージックビデオの部分を自動的にスキップします
- **同期歌詞**: [LRClib](https://lrclib.net)のようなプロバイダーを使用して、曲に同期した歌詞を提供します
- **タスクバーメディアコントロール**: [Windowsタスクバー](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)から再生を制御します
- **TouchBar**: macOS用のカスタムTouchBarレイアウト
- **Tuna OBS**: [OBS](https://obsproject.com/)のプラグイン[Tuna](https://obsproject.com/forum/resources/tuna.843/)との統合
- **ビデオ品質チェンジャー**: ビデオオーバーレイの[ボタン](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png)を使用してビデオ品質を変更できます
- **ビデオ切り替え**: ビデオ/ソングモードを切り替える[ボタン](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png)を追加します。オプションでビデオタブ全体を削除することもできます
- **ビジュアライザー**: プレイヤーにさまざまな音楽ビジュアライザーを追加します
## 翻訳
[Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/)で翻訳を手伝うことができます。
<a href="https://hosted.weblate.org/engage/youtube-music/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="翻訳状況" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="翻訳状況 2" />
</a>
## ダウンロード
[最新リリース](https://github.com/th-ch/youtube-music/releases/latest)を確認して、最新バージョンをすばやく見つけることができます。
### Arch Linux
AURから[`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin)パッケージをインストールします。AURのインストール手順については、この[wikiページ](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages)を参照してください。
### macOS
Homebrewを使用してアプリをインストールできます[cask定義](https://github.com/th-ch/homebrew-youtube-music)を参照)。
```bash
brew install th-ch/youtube-music/youtube-music
```
アプリを手動でインストールし、アプリの起動時に「破損しているため開けません」というエラーが表示される場合は、ターミナルで次のコマンドを実行します。
```bash
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
```
### Windows
[Scoopパッケージマネージャー](https://scoop.sh)を使用して、[`extras`バケット](https://github.com/ScoopInstaller/Extras)から`youtube-music`パッケージをインストールできます。
```bash
scoop bucket add extras
scoop install extras/youtube-music
```
または、Windows 11の公式CLIパッケージマネージャーである[Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)を使用して、`th-ch.YouTubeMusic`パッケージをインストールできます。
*注: 「不明な発行元」からのものであるため、Microsoft Defender SmartScreenがインストールをブロックする場合があります。これは、GitHubで手動でダウンロードした後に実行ファイル.exeを実行しようとする場合にも当てはまります。*
```bash
winget install th-ch.YouTubeMusic
```
#### ネットワーク接続なしでインストールする方法 (Windows)
- [リリースページ](https://github.com/th-ch/youtube-music/releases/latest)で_デバイスのアーキテクチャ_に対応する`*.nsis.7z`ファイルをダウンロードします。
- `x64`は64ビットWindows用
- `ia32`は32ビットWindows用
- `arm64`はARM64 Windows用
- リリースページでインストーラーをダウンロードします。(`*-Setup.exe`)
- それらを**同じディレクトリ**に配置します。
- インストーラーを実行します。
## テーマ
CSSファイルを読み込んでアプリケーションの外観を変更できますオプション > 視覚的調整 > テーマ)。
いくつかの事前定義されたテーマは、https://github.com/kerichdev/themes-for-ytmdesktop-player で利用できます。
## 開発
```bash
git clone https://github.com/th-ch/youtube-music
cd youtube-music
pnpm install --frozen-lockfile
pnpm dev
```
## 独自のプラグインを作成する
プラグインを使用すると、次のことができます。
- アプリを操作する - Electronの`BrowserWindow`がプラグインハンドラーに渡されます
- HTML/CSSを操作してフロントエンドを変更する
### プラグインの作成
`src/plugins/YOUR-PLUGIN-NAME`にフォルダーを作成します。
- `index.ts`: プラグインのメインファイル
```typescript
import style from './style.css?inline'; // スタイルをインラインとしてインポート
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'プラグインラベル',
restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
config: {
enabled: false,
}, // カスタム設定
stylesheets: [style], // カスタムスタイル
menu: async ({ getConfig, setConfig }) => {
// すべての*ConfigメソッドはPromise<T>でラップされています
const config = await getConfig();
return [
{
label: 'メニュー',
submenu: [1, 2, 3].map((value) => ({
label: `値 ${value}`,
type: 'radio',
checked: config.value === value,
click() {
setConfig({ value });
},
})),
},
];
},
backend: {
start({ window, ipc }) {
window.maximize();
// レンダラープラグインと通信できます
ipc.handle('some-event', () => {
return 'hello';
});
},
// 設定が変更されたときに発生します
onConfigChange(newConfig) { /* ... */ },
// プラグインが無効になったときに発生します
stop(context) { /* ... */ },
},
renderer: {
async start(context) {
console.log(await context.ipc.invoke('some-event'));
},
// レンダラーでのみ使用可能なフック
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
// プラグイン設定を簡単に設定
context.setConfig({ myConfig: api.getVolume() });
},
onConfigChange(newConfig) { /* ... */ },
stop(_context) { /* ... */ },
},
preload: {
async start({ getConfig }) {
const config = await getConfig();
},
onConfigChange(newConfig) {},
stop(_context) {},
},
});
```
### 一般的な使用例
- カスタムCSSの挿入: 同じフォルダーに`style.css`ファイルを作成し、次のようにします。
```typescript
// index.ts
import style from './style.css?inline'; // スタイルをインラインとしてインポート
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'プラグインラベル',
restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
config: {
enabled: false,
}, // カスタム設定
stylesheets: [style], // カスタムスタイル
renderer() {} // レンダラーフックを定義
});
```
- HTMLを変更したい場合:
```typescript
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'プラグインラベル',
restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
config: {
enabled: false,
}, // カスタム設定
renderer() {
// ログインボタンを削除
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
} // レンダラーフックを定義
});
```
- フロントエンドとバックエンドの通信: ElectronのipcMainモジュールを使用して行うことができます。`index.ts`ファイルと`sponsorblock`プラグインの例を参照してください。
## ビルド
1. リポジトリをクローン
2. [このガイド](https://pnpm.io/installation)に従って`pnpm`をインストール
3. `pnpm install --frozen-lockfile`を実行して依存関係をインストール
4. `pnpm build:OS`を実行
- `pnpm dist:win` - Windows
- `pnpm dist:linux` - Linux (amd64)
- `pnpm dist:linux:deb-arm64` - Linux (Debian用arm64)
- `pnpm dist:linux:rpm-arm64` - Linux (Fedora用arm64)
- `pnpm dist:mac` - macOS (amd64)
- `pnpm dist:mac:arm64` - macOS (arm64)
[electron-builder](https://github.com/electron-userland/electron-builder)を使用して、macOS、Linux、およびWindows用のアプリをビルドします。
## プロダクションプレビュー
```bash
pnpm start
```
## テスト
```bash
pnpm test
```
[Playwright](https://playwright.dev/)を使用してアプリをテストします。
## ライセンス
MIT © [th-ch](https://github.com/th-ch/youtube-music)
## FAQ
### アプリのメニューが表示されないのはなぜですか?
`メニューを非表示`オプションがオンの場合 - <kbd>alt</kbd>キー(またはアプリ内メニュープラグインを使用している場合は<kbd>\`</kbd> [バックティック]キー)でメニューを表示できます

View File

@ -3,7 +3,7 @@
# 유튜브 뮤직 (YouTube Music)
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -20,6 +20,8 @@
</a>
</div>
다른 언어로 읽어보세요: [🏴 영어](../../README.md), [🇰🇷 한국인](./README-ko.md), [🇫🇷 프랑스 국민](./README-fr.md), [🇮🇸 아이슬란드어](./README-is.md), [🇪🇸 스페인 사람](./README-es.md), [🇷🇺 러시아인](./README-ru.md), [🇺🇦 우크라이나어](./README-uk.md), [🇧🇷 포르투갈어](./README-pt.md), [🇯🇵 일본어](./README-ja.md)
**유튜브 뮤직의 Electron 래퍼; 기능:**
- 원래의 인터페이스를 유지하는 것을 목표로 하는 네이티브 디자인 및 느낌

375
docs/readme/README-pt.md Normal file
View File

@ -0,0 +1,375 @@
<div align="center">
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/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)
[![Known Vulnerabilities](https://snyk.io/test/github/th-ch/youtube-music/badge.svg)](https://snyk.io/test/github/th-ch/youtube-music)
</div>
![Screenshot](/web/screenshot.png "Screenshot")
<div align="center">
<a href="https://github.com/th-ch/youtube-music/releases/latest">
<img src="/web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
</a>
</div>
Leia em outros idiomas: [🏴 Inglês](../../README.md), [🇰🇷 Coreano](./README-ko.md), [🇫🇷 Francês](./README-fr.md), [🇮🇸 Islandês](./README-is.md), [🇪🇸 Espanhol](./README-es.md), [🇷🇺 Russo](./README-ru.md), [🇺🇦 Ucraniano](./README-uk.md), [🇧🇷 Português](./README-pt.md)
**Wrapper do Electron para o YouTube Music com os seguintes recursos:**
- Visual e comportamento nativos: Mantém a interface original do YouTube Music.
- Estrutura para plugins personalizados: Adapte o YouTube Music às suas necessidades (estilo, conteúdo, funcionalidades). Ative/desative plugins com um clique.
## Imagem de demonstração
| Tela do Player (tema de cores do álbum e luz ambiente) |
|:---------------------------------------------------------------------------------------------------------:|
|![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)|
## Conteúdo
- [Recursos](#recursos)
- [Plugins disponíveis](#plugins-disponíveis)
- [Tradução](#tradução)
- [Download](#download)
- [Arch Linux](#arch-linux)
- [MacOS](#macos)
- [Windows](#windows)
- [Como instalar sem conexão à internet? (no Windows)](#como-instalar-sem-conexão-à-internet-no-windows)
- [Temas](#temas)
- [Dev](#dev)
- [Crie seus próprios plugins](#crie-seus-próprios-plugins)
- [Criando um plugin](#criando-um-plugin)
- [Casos de uso comuns](#casos-de-uso-comuns)
- [Compilar](#compilar)
- [Prévia de produção](#prévia-de-produção)
- [Testes](#testes)
- [Licença](#licença)
- [Perguntas Frequentes](#perguntas-frequentes)
## Recursos:
- **Confirmação automática quando pausado** (Sempre ativado): desativa
o popup ["Continuar assistindo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
que pausa a música após um certo tempo
- E mais...
## Plugins disponíveis:
- **Bloqueador de anúncios**: Bloqueia todos os anúncios e rastreamentos automaticamente
- **Ações de Álbum**: Adiciona botões para Remover dislike, Dar dislike, Curtir e Remover curtida em todas as músicas de uma playlist ou álbum
- **Tema de cores do álbum**: Aplica um tema dinâmico e efeitos visuais baseados na paleta de cores do álbum
- **Modo ambiente**: Cria um efeito de iluminação projetando cores suaves do vídeo no fundo da tela
- **Compressor de áudio**: Aplica compressão ao áudio (reduz o volume das partes mais altas e aumenta o das mais baixas)
- **Barra de navegação desfocada**: Torna a barra de navegação transparente e desfocada
- **Contornar restrições de idade**: Ignora a verificação de idade do YouTube
- **Seletor de legendas**: Ativa legendas
- **Barra lateral compacta**: Mantém a barra lateral sempre no modo compacto
- **Crossfade**: Transição suave entre músicas
- **Desativar reprodução automática**: Faz com que todas as músicas iniciem no modo "pausado"
- **[Discord](https://discord.com/) Rich Presence**: Mostra para seus amigos o que você está ouvindo com [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
- **Downloader**: Baixa MP3 [diretamente da interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
- **Equalizador**: Adiciona filtros para aumentar ou reduzir faixas específicas de frequência (ex: reforço de graves)
- **Volume exponencial**: Torna o controle de volume [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar a seleção de volumes mais baixos
- **Menu integrado**: [Dá às barras um visual elegante e escuro](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
> (veja [este post](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) se tiver problemas para acessar o menu após ativar este plugin e a opção de ocultar menu)
- **Scrobbler**: Adiciona suporte para scrobbling no [Last.fm](https://www.last.fm/) e [ListenBrainz](https://listenbrainz.org/)
- **Lumia Stream**: Adiciona suporte para [Lumia Stream](https://lumiastream.com/)
- **Letras Genius**: Adiciona suporte a letras para a maioria das músicas
- **Música Juntos**: Compartilhe uma playlist com outros. Quando o host toca uma música, todos ouvem a mesma música
- **Navegação**: Botões de avançar/voltar integrados diretamente na interface, como no seu navegador favorito
- **Sem login do Google**: Remove botões e links de login do Google da interface
- **Notificações**: Exibe uma notificação quando uma música começa a tocar ([notificações interativas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) disponíveis no Windows)
- **Picture-in-picture**: Permite alternar o aplicativo para o modo picture-in-picture
- **Velocidade de reprodução**: Ouça rápido, ouça devagar! [Adiciona um controle deslizante para ajustar a velocidade](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
- **Volume preciso**: Controle o volume com precisão usando roda do mouse/atalhos, com HUD personalizado e níveis de volume customizáveis
- **Atalhos (& MPRIS)**: Permite configurar teclas de atalho globais para controle (play/pause/próxima/anterior) + desativa [OSD de mídia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) sobrescrevendo teclas de mídia + ativa Ctrl/CMD + F para busca + suporte a MPRIS no Linux para teclas de mídia + [atalhos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) para [usuários avançados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
- **Pular músicas marcadas com "não gostei"**: Ignora automaticamente músicas que você deu dislike
- **Pular silêncios**: Ignora automaticamente seções silenciosas
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Ignora automaticamente partes não musicais como introduções/outros ou partes de clipes onde a música não está tocando
- **Letras sincronizadas**: Fornece letras sincronizadas para músicas, usando serviços como [LRClib](https://lrclib.net)
- **Controle de mídia na barra de tarefas**: Controle a reprodução pela [barra de tarefas do Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
- **TouchBar**: Layout personalizado para a TouchBar do macOS
- **Tuna OBS**: Integração com o plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/) do [OBS](https://obsproject.com/)
- **Seletor de qualidade de vídeo**: Permite alterar a qualidade do vídeo com um [botão](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) na sobreposição do vídeo
- **Alternar vídeo**: Adiciona um [botão](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para alternar entre modos Vídeo/Música. Pode também remover completamente a aba de vídeo
- **Visualizador**: Diferentes visualizadores de música
## Tradução
Você pode ajudar com as traduções no [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
<a href="https://hosted.weblate.org/engage/youtube-music/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="status da tradução" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="status da tradução 2" />
</a>
## Download
Você pode verificar o [último lançamento](https://github.com/th-ch/youtube-music/releases/latest) para encontrar rapidamente a versão mais recente.
### Arch Linux
Instale o pacote [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) do AUR. Para instruções de instalação do AUR, consulte esta [página da wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
### macOS
Você pode instalar o aplicativo usando Homebrew (veja a [definição do cask](https://github.com/th-ch/homebrew-youtube-music)):
```bash
brew install th-ch/youtube-music/youtube-music
```
Se você instalar o aplicativo manualmente e receber o erro "is damaged and cant be opened." ao abrir o app, execute o seguinte no Terminal:
```bash
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
```
### Windows
Você pode usar o [gerenciador de pacotes Scoop](https://scoop.sh) para instalar o pacote `youtube-music` do [`extras bucket`](https://github.com/ScoopInstaller/Extras).
```bash
scoop bucket add extras
scoop install extras/youtube-music
```
Alternativamente, você pode usar o [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), o gerenciador de pacotes CLI oficial do Windows 11, para instalar o pacote `th-ch.YouTubeMusic`.
*Nota: O Microsoft Defender SmartScreen pode bloquear a instalação por ser de um "publicador desconhecido". Isso também acontece na instalação manual ao tentar executar o arquivo .exe após download manual aqui no GitHub (mesmo arquivo).*
```bash
winget install th-ch.YouTubeMusic
```
#### Como instalar sem conexão à internet? (no Windows)
- Baixe o arquivo `*.nsis.7z` para _sua arquitetura de dispositivo_ na [página de lançamentos](https://github.com/th-ch/youtube-music/releases/latest).
- `x64` para Windows 64-bit
- `ia32` para Windows 32-bit
- `arm64` para Windows ARM64
- Baixe o instalador na página de lançamentos (`*-Setup.exe`)
- Coloque os arquivos no **mesmo diretório**
- Execute o instalador
## Temas
Você pode carregar arquivos CSS para alterar a aparência do aplicativo (Opções > Ajustes Visuais > Temas).
Alguns temas pré-definidos estão disponíveis em https://github.com/kerichdev/themes-for-ytmdesktop-player.
## Dev
```bash
git clone https://github.com/th-ch/youtube-music
cd youtube-music
pnpm install --frozen-lockfile
pnpm dev
```
## Crie seus próprios plugins
Usando plugins, você pode:
- Manipular o aplicativo - o `BrowserWindow` do electron é passado para o manipulador de plugins
- Alterar a interface manipulando o HTML/CSS
### Criando um plugin
Crie uma pasta em `src/plugins/NOMBRE-DEL-PLUGIN`:
- `index.ts`: o arquivo principal do plugin
```typescript
import style from './style.css?inline'; // importar estilo como inline
import { createPlugin } from '@/utils';
export default createPlugin({
name: "Plugin Label",
restartNeeded: true, // se true, o ytmusic mostra diálogo de reinício
config: {
enabled: false,
}, // sua configuração personalizada
stylesheets: [style], // seu estilo personalizado
menu: async ({ getConfig, setConfig }) => {
// Todos os métodos *Config são wrappers Promise<T>
const config = await getConfig();
return [
{
label: "menu",
submenu: [1, 2, 3].map((value) => ({
label: `value ${value}`,
type: "radio",
checked: config.value === value,
click() {
setConfig({ value });
},
})),
},
];
},
backend: {
start({ window, ipc }) {
window.maximize();
// você pode se comunicar com o plugin renderer
ipc.handle("some-event", () => {
return "hello";
});
},
// disparado quando a configuração muda
onConfigChange(newConfig) { /* ... */ },
// disparado quando o plugin é desativado
stop(context) { /* ... */ },
},
renderer: {
async start(context) {
console.log(await context.ipc.invoke("some-event"));
},
// Hook disponível apenas no renderer
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
// establecer la configuración del plugin fácilmente
context.setConfig({ myConfig: api.getVolume() });
},
onConfigChange(newConfig) { /* ... */ },
stop(_context) { /* ... */ },
},
preload: {
async start({ getConfig }) {
const config = await getConfig();
},
onConfigChange(newConfig) {},
stop(_context) {},
},
});
```
### Casos de uso comuns
- **Injetar CSS personalizado**: crie um arquivo `style.css` na mesma pasta e então:
```typescript
// index.ts
import style from './style.css?inline'; // importa estilo como inline
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'Plugin Label',
restartNeeded: true, // se true, o ytmusic mostrará um diálogo de reinício
config: {
enabled: false,
}, // sua configuração personalizada
stylesheets: [style], // seu estilo personalizado
renderer() {} // define o hook renderer
});
```
- Se quiser alterar o HTML:
```typescript
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'Plugin Label',
restartNeeded: true, // se true, o ytmusic mostrará o diálogo de reinício
config: {
enabled: false,
}, // sua configuração personalizada
renderer() {
// Remove o botão de login
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
} // define o hook renderer
});
```
- Comunicação entre front-end e back-end: pode ser feita usando o módulo ipcMain do Electron. Consulte o arquivo `index.ts` e o exemplo no plugin `sponsorblock`.
## Compilar
1. Clone o repositório
2. Siga [este guia](https://pnpm.io/installation) para instalar o `pnpm`
3. Execute `pnpm install --frozen-lockfile` para instalar as dependências
4. Execute `pnpm build:OS`
- `pnpm dist:win` - Windows
- `pnpm dist:linux` - Linux (amd64)
- `pnpm dist:linux:deb-arm64` - Linux (arm64 para Debian)
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 para Fedora)
- `pnpm dist:mac` - macOS (amd64)
- `pnpm dist:mac:arm64` - macOS (arm64)
Compila o aplicativo para macOS, Linux e Windows,
usando [electron-builder](https://github.com/electron-userland/electron-builder).
## Prévia de Produção
```bash
pnpm start
```
## Testes
```bash
pnpm test
```
Utiliza [Playwright](https://playwright.dev/) para testar o aplicativo.
## Licença
MIT © [th-ch](https://github.com/th-ch/youtube-music)
## Perguntas Frequentes
### Por que o menu do aplicativo não aparece?
Se a opção `Ocultar menu` estiver ativada - você pode exibir o menu com a tecla <kbd>alt</kbd> (ou <kbd>\`</kbd> [acento grave] se estiver usando o plugin in-app-menu)

View File

@ -3,7 +3,7 @@
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
@ -21,7 +21,7 @@
</a>
</div>
Прочтите это на других языках: [🏴 Английский](../../README.md), [🇰🇷 корейский](./README-ko.md), [🇫🇷 Французский](./README-fr.md), [🇮🇸 исландский](./README-is.md), [🇪🇸 испанский](./README-es.md), [🇷🇺 Русский](./README-ru.md), [🇺🇦 Украинский](./README-uk.md), [🇧🇷 Португальский](./README-pt.md)
**Клиент для YouTube Music основанный на Electron с поддержкой:**

372
docs/readme/README-uk.md Normal file
View File

@ -0,0 +1,372 @@
<div align="center">
# YouTube Music
[![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/)
[![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license)
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/eslint.config.mjs)
[![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/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)
[![Known Vulnerabilities](https://snyk.io/test/github/th-ch/youtube-music/badge.svg)](https://snyk.io/test/github/th-ch/youtube-music)
</div>
![Знімок екрана](/web/screenshot.png "Знімок екрана")
<div align="center">
<a href="https://github.com/th-ch/youtube-music/releases/latest">
<img src="../../web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
</a>
</div>
Прочитайте це іншими мовами: [🏴 Англійська](../../README.md), [🇰🇷 Корейська](./README-ko.md), [🇫🇷 Французька](./README-fr.md), [🇮🇸 Ісландська](./README-is.md), [🇪🇸 Іспанська](./README-es.md), [🇷🇺 Російська](./README-ru.md), [🇺🇦 Українська](./README-uk.md), [🇭🇺 Угорська](./README-hu.md), [🇧🇷 Португальська](./README-pt.md), [🇯🇵 Японська](./README-ja.md)
**Клієнт YouTube Music на основі Electron, що має:**
- Нативний вигляд і функціонал, що має на меті зберегти оригінальний інтерфейс
- Фреймворк для користувацьких плагінів: змінюйте YouTube Music відповідно до ваших потреб (стиль, вміст, функції), вмикайте/вимикайте плагіни одним клацанням миші
## Демонстраційне зображення
| Екран плеєра (колірна тема альбому та режим Ambient) |
|:---------------------------------------------------------------------------------------------------------:|
|![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)|
## Зміст
- [Можливості](#Можливості)
- [Доступні плагіни](#Доступні-плагіни)
- [Переклад](#Переклад)
- [Завантажити](#Завантажити)
- [Arch Linux](#arch-linux)
- [MacOS](#macos)
- [Windows](#windows)
- [Як встановити без підключення до Інтернету? (у Windows)](#Встановлення-без-підключення-до-Інтернету-у-Windows)
- [Теми](#Теми)
- [Розробка](#Розробка)
- [Створіть власні плагіни](#Створіть-власні-плагіни)
- [Створення плагіна](#Створення-плагіна)
- [Поширені випадки використання](#Поширені-випадки-використання)
- [Збірка](#Збірка)
- [Попередній перегляд для producción](#Попередній-перегляд-для-production)
- [Тести](#Тести)
- [Ліцензія](#Ліцензія)
- [Поширені запитання](#Поширені-запитання)
## Можливості:
- **Автоматичне підтвердження під час паузи** (Завжди ввімкнено): вимикає спливаюче вікно ["Продовжити перегляд?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png),
яке призупиняє музику через певний час
- Та багато іншого...
## Доступні плагіни:
- **Блокувальник реклами**: Блокує всю рекламу та відстеження «з коробки»
- **Дії з альбомом**: Додає кнопки «Скасувати "Не подобається"», «Не подобається», «Подобається» та «Скасувати "Подобається"», щоб застосувати це до всіх пісень у списку відтворення або альбомі
- **Колірна тема альбому**: Застосовує динамічну тему та візуальні ефекти на основі колірної палітри альбому
- **Режим Ambient**: Застосовує ефект освітлення, проектуючи м'які кольори з відео на фон екрана
- **Аудіокомпресор**: Застосовує компресію до аудіо (знижує гучність найгучніших частин сигналу та підвищує гучність найтихіших частин)
- **Розмиття панелі навігації**: робить панель навігації прозорою та розмитою
- **Обхід вікових обмежень**: обходить перевірку віку YouTube
- **Вибір субтитрів**: Увімкнути субтитри
- **Компактна бічна панель**: Завжди встановлювати бічну панель у компактному режимі
- **Плавний перехід**: Плавний перехід між піснями
- **Вимкнути автопрогравання**: Кожна пісня починається в режимі "пауза"
- **[Discord](https://discord.com/) Rich Presence**: Покажіть друзям, що ви слухаєте, за допомогою [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
- **Завантажувач**: завантажує MP3 [безпосередньо з інтерфейсу](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
- **Експоненціальна гучність**: Робить повзунок гучності [експоненціальним](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/), щоб було легше вибирати нижчу гучність
- **Меню в програмі**: [надає панелям модного, темного вигляду](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
> (дивіться [цей пост](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709), якщо у вас виникли проблеми з доступом до меню після ввімкнення цього плагіна та опції приховування меню)
- **Скробблер**: Додає підтримку скробблінгу для [Last.fm](https://www.last.fm/) та [ListenBrainz](https://listenbrainz.org/)
- **Lumia Stream**: Додає підтримку [Lumia Stream](https://lumiastream.com/)
- **Тексти пісень Genius**: Додає підтримку текстів для більшості пісень
- **Музика разом**: Поділіться списком відтворення з іншими. Коли хост відтворює пісню, всі інші чутимуть ту саму пісню
- **Навігація**: Стрілки навігації «Вперед»/«Назад» безпосередньо інтегровані в інтерфейс, як у вашому улюбленому браузері
- **Без входу в Google**: Видаляє кнопки та посилання для входу в Google з інтерфейсу
- **Сповіщення**: Відображає сповіщення, коли починає грати пісня ([інтерактивні сповіщення](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) доступні у Windows)
- **Картинка в картинці**: дозволяє перемикати програму в режим «картинка в картинці»
- **Швидкість відтворення**: Слухайте швидко, слухайте повільно! [Додає повзунок, який контролює швидкість пісні](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
- **Точна гучність**: Точно керуйте гучністю за допомогою коліщатка миші/гарячих клавіш, з власним HUD та настроюваними кроками гучності
- **Гарячі клавіші (та MPRIS)**: Дозволяє встановлювати глобальні гарячі клавіші для відтворення (відтворення/пауза/наступна/попередня) + вимкнути [екранне меню медіа](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) шляхом перевизначення медіаклавіш + увімкнути Ctrl/CMD + F для пошуку + увімкнути підтримку mpris у Linux для медіаклавіш + [власні гарячі клавіші](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) для [досвідчених користувачів](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
- **Пропускати пісні, що не сподобалися**: Пропускає пісні, які вам не сподобалися
- **Пропускати тишу**: Автоматично пропускати тихі фрагменти
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Автоматично пропускає немузичні частини, такі як інтро/аутро, або частини музичних відео, де пісня не грає
- **Керування медіа на панелі завдань**: Керуйте відтворенням з [панелі завдань Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
- **TouchBar**: Власний макет TouchBar для macOS
- **Tuna OBS**: Інтеграція з плагіном [Tuna](https://obsproject.com/forum/resources/tuna.843/) для [OBS](https://obsproject.com/)
- **Зміна якості відео**: Дозволяє змінювати якість відео за допомогою [кнопки](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) на відеопрогравачі
- **Перемикач відео**: Додає [кнопку](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) для перемикання між режимом відео/пісні. Також може опціонально видалити всю вкладку відео
- **Візуалізатор**: Різні музичні візуалізатори
- **Синхронізовані тексти**: Надає синхронізовані тексти пісень, використовуючи такі джерела, як [LRClib](https://lrclib.net).
## Переклад
Ви можете допомогти з перекладом на [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
<a href="https://hosted.weblate.org/engage/youtube-music/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="статус перекладу" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="статус перекладу 2" />
</a>
## Завантажити
Ви можете переглянути [останній реліз](https://github.com/th-ch/youtube-music/releases/latest), щоб швидко знайти найновішу версію.
### Arch Linux
Встановіть пакет [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) з AUR. Інструкції щодо встановлення з AUR можна знайти на цій [сторінці вікі](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
### macOS
Ви можете встановити програму за допомогою Homebrew (дивіться [визначення cask](https://github.com/th-ch/homebrew-youtube-music)):
```bash
brew install th-ch/youtube-music/youtube-music
```
Якщо ви встановлюєте програму вручну та отримуєте помилку "is damaged and cant be opened.", запустіть у Терміналі таку команду:
```bash
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
```
### Windows
Ви можете використовувати [менеджер пакунків Scoop](https://scoop.sh) для встановлення пакунка `youtube-music` з [`extras` bucket](https://github.com/ScoopInstaller/Extras).
```bash
scoop bucket add extras
scoop install extras/youtube-music
```
Крім того, ви можете використовувати [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), офіційний менеджер пакунків командного рядка Windows 11, для встановлення пакунка `th-ch.YouTubeMusic`.
*Примітка: Microsoft Defender SmartScreen може блокувати встановлення, оскільки воно від "невідомого видавця". Це також стосується ручного встановлення під час спроби запустити виконуваний файл (.exe) після ручного завантаження тут, на GitHub (той самий файл).*
```bash
winget install th-ch.YouTubeMusic
```
#### Як встановити без підключення до Інтернету? (у Windows)
- Завантажте файл `*.nsis.7z` для _архітектури вашого пристрою_ зі [сторінки релізів](https://github.com/th-ch/youtube-music/releases/latest).
- `x64` для 64-розрядної Windows
- `ia32` для 32-розрядної Windows
- `arm64` для ARM64 Windows
- Завантажте інсталятор зі сторінки релізів. (`*-Setup.exe`)
- Розмістіть їх в **одному каталозі**.
- Запустіть інсталятор.
## Теми
Ви можете завантажити файли CSS, щоб змінити вигляд програми (Опції > Візуальні налаштування > Теми).
Деякі попередньо визначені теми доступні за адресою https://github.com/kerichdev/themes-for-ytmdesktop-player.
## Розробка
```bash
git clone https://github.com/th-ch/youtube-music
cd youtube-music
pnpm install --frozen-lockfile
pnpm dev
```
## Створіть власні плагіни
Використовуючи плагіни, ви можете:
- маніпулювати програмою - `BrowserWindow` з Electron передається обробнику плагінів
- змінювати фронтенд, маніпулюючи HTML/CSS
### Створення плагіна
Створіть теку в `src/plugins/НАЗВА_ВАШОГО_ПЛАГІНА`:
- `index.ts`: основний файл плагіна
```typescript
import style from './style.css?inline'; // імпортувати стиль як вбудований
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'Назва плагіна',
restartNeeded: true, // якщо значення true, ytmusic покаже діалогове вікно перезапуску
config: {
enabled: false,
}, // ваша власна конфігурація
stylesheets: [style], // ваш власний стиль,
menu: async ({ getConfig, setConfig }) => {
// Усі методи *Config є обгорнутими Promise<T>
const config = await getConfig();
return [
{
label: 'меню',
submenu: [1, 2, 3].map((value) => ({
label: `значення ${value}`,
type: 'radio',
checked: config.value === value,
click() {
setConfig({ value });
},
})),
},
];
},
backend: {
start({ window, ipc }) {
window.maximize();
// ви можете спілкуватися з плагіном рендерера
ipc.handle('some-event', () => {
return 'hello';
});
},
// викликається при зміні конфігурації
onConfigChange(newConfig) { /* ... */ },
// викликається при вимкненні плагіна
stop(context) { /* ... */ },
},
renderer: {
async start(context) {
console.log(await context.ipc.invoke('some-event'));
},
// Хук, доступний лише для рендерера
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
// легко встановити конфігурацію плагіна
context.setConfig({ myConfig: api.getVolume() });
},
onConfigChange(newConfig) { /* ... */ },
stop(_context) { /* ... */ },
},
preload: {
async start({ getConfig }) {
const config = await getConfig();
},
onConfigChange(newConfig) {},
stop(_context) {},
},
});
```
### Поширені випадки використання
- ін'єкція власного CSS: створіть файл `style.css` у тій самій теці, а потім:
```typescript
// index.ts
import style from './style.css?inline'; // імпортувати стиль як вбудований
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'Назва плагіна',
restartNeeded: true, // якщо значення true, ytmusic покаже діалогове вікно перезапуску
config: {
enabled: false,
}, // ваша власна конфігурація
stylesheets: [style], // ваш власний стиль
renderer() {} // визначити хук рендерера
});
```
- Якщо ви хочете змінити HTML:
```typescript
import { createPlugin } from '@/utils';
export default createPlugin({
name: 'Назва плагіна',
restartNeeded: true, // якщо значення true, ytmusic покаже діалогове вікно перезапуску
config: {
enabled: false,
}, // ваша власна конфігурація
renderer() {
// Видалити кнопку входу
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
} // визначити хук рендерера
});
```
- зв'язок між фронтендом та бекендом: можна здійснити за допомогою модуля ipcMain з Electron. Дивіться файл `index.ts` та
приклад у плагіні `sponsorblock`.
## Збірка
1. Клонуйте репозиторій
2. Дотримуйтесь [цієї інструкції](https://pnpm.io/installation), щоб встановити `pnpm`
3. Запустіть `pnpm install --frozen-lockfile` для встановлення залежностей
4. Запустіть `pnpm build:OS`
- `pnpm dist:win` - Windows
- `pnpm dist:linux` - Linux (amd64)
- `pnpm dist:linux:deb-arm64` - Linux (arm64 для Debian)
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 для Fedora)
- `pnpm dist:mac` - macOS (amd64)
- `pnpm dist:mac:arm64` - macOS (arm64)
Збирає програму для macOS, Linux та Windows,
використовуючи [electron-builder](https://github.com/electron-userland/electron-builder).
## Попередній перегляд для production
```bash
pnpm start
```
## Тести
```bash
pnpm test
```
Використовує [Playwright](https://playwright.dev/) для тестування програми.
## Ліцензія
MIT © [th-ch](https://github.com/th-ch/youtube-music)
## Поширені запитання
### Чому меню програми не відображається?
Якщо опція `Приховати меню` увімкнена - ви можете показати меню клавішею <kbd>Alt</kbd> (або <kbd>\`</kbd> [зворотний апостроф], якщо використовуєте плагін "Меню в програмі")

125
electron-builder.yml Normal file
View File

@ -0,0 +1,125 @@
appId: com.github.th-ch.youtube-music
productName: YouTube Music
files:
- '!*'
- dist
- assets
- license
- '!node_modules'
- 'node_modules/custom-electron-prompt/**'
- 'node_modules/@ghostery/adblocker-electron-preload/**'
- 'node_modules/@ffmpeg.wasm/core-mt/**'
- '!node_modules/**/*.map'
- '!node_modules/**/*.ts'
asarUnpack:
- assets
mac:
identity: null
target:
- target: dmg
arch:
- x64
- arm64
icon: assets/generated/icons/mac/icon.icns
compression: maximum
win:
icon: assets/generated/icons/win/icon.ico
target:
- target: nsis-web
arch:
- x64
- ia32
- arm64
- target: portable
arch:
- x64
- ia32
- arm64
compression: maximum
nsisWeb:
runAfterFinish: false
linux:
icon: assets/generated/icons/png
category: AudioVideo
desktop:
entry:
StartupWMClass: com.github.th_ch.youtube_music
target:
- target: AppImage
arch:
- x64
- arm64
- armv7l
- target: flatpak
arch:
- x64
- target: deb
arch:
- x64
- arm64
- armv7l
- target: rpm
arch:
- x64
- arm64
- target: snap
arch:
- x64
- target: freebsd
arch:
- x64
- arm64
- armv7l
- target: tar.gz
arch:
- x64
- arm64
- armv7l
appImage:
description: >-
YouTube Music Desktop App bundled with custom plugins (and built-in ad
blocker / downloader)
category: AudioVideo
flatpak:
description: >-
YouTube Music Desktop App bundled with custom plugins (and built-in ad
blocker / downloader)
category: AudioVideo
runtimeVersion: '24.08'
baseVersion: '24.08'
finishArgs:
- '--socket=wayland'
- '--socket=x11'
- '--share=ipc'
- '--device=dri'
- '--socket=pulseaudio'
- '--share=network'
- '--filesystem=xdg-music:rw'
- '--talk-name=org.freedesktop.Notifications'
- '--talk-name=org.gnome.SessionManager'
- '--talk-name=org.kde.StatusNotifierWatcher'
- '--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*'
deb:
depends:
- libgtk-3-0
- libnotify4
- libnss3
- libxss1
- libxtst6
- xdg-utils
- libatspi2.0-0
- libuuid1
- libasound2
- libgbm1
rpm:
depends:
- /usr/lib64/libuuid.so.1
fpm:
- '--rpm-rpmbuild-define'
- _build_id_links none
snap:
slots:
- mpris:
interface: mpris
directories:
output: ./pack/

View File

@ -1,16 +1,17 @@
import { resolve, dirname, join } from 'node:path';
import { dirname, join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import { UserConfig } from 'vite';
import { defineConfig, defineViteConfig } from 'electron-vite';
import builtinModules from 'builtin-modules';
import viteResolve from 'vite-plugin-resolve';
import Inspect from 'vite-plugin-inspect';
import solidPlugin from 'vite-plugin-solid';
import viteResolve from 'vite-plugin-resolve';
import { withFilter, type UserConfig } from 'vite';
import { pluginVirtualModuleGenerator } from './vite-plugins/plugin-importer.mjs';
import pluginLoader from './vite-plugins/plugin-loader.mjs';
import { i18nImporter } from './vite-plugins/i18n-importer.mjs';
const __dirname = dirname(fileURLToPath(import.meta.url));
@ -23,6 +24,9 @@ const resolveAlias = {
export default defineConfig({
main: defineViteConfig(({ mode }) => {
const commonConfig: UserConfig = {
experimental: {
enableNativePlugin: true,
},
plugins: [
pluginLoader('backend'),
viteResolve({
@ -31,16 +35,17 @@ export default defineConfig({
}),
],
publicDir: 'assets',
define: {
'__dirname': 'import.meta.dirname',
'__filename': 'import.meta.filename',
},
build: {
lib: {
entry: 'src/index.ts',
formats: ['cjs'],
formats: ['es'],
},
outDir: 'dist/main',
commonjsOptions: {
ignoreDynamicRequires: true,
},
rollupOptions: {
rolldownOptions: {
external: ['electron', 'custom-electron-prompt', ...builtinModules],
input: './src/index.ts',
},
@ -72,6 +77,9 @@ export default defineConfig({
}),
preload: defineViteConfig(({ mode }) => {
const commonConfig: UserConfig = {
experimental: {
enableNativePlugin: true,
},
plugins: [
pluginLoader('preload'),
viteResolve({
@ -88,7 +96,7 @@ export default defineConfig({
commonjsOptions: {
ignoreDynamicRequires: true,
},
rollupOptions: {
rolldownOptions: {
external: ['electron', 'custom-electron-prompt', ...builtinModules],
input: './src/preload.ts',
},
@ -120,13 +128,18 @@ export default defineConfig({
}),
renderer: defineViteConfig(({ mode }) => {
const commonConfig: UserConfig = {
experimental: {
enableNativePlugin: mode !== 'development', // Disable native plugin in development mode to avoid issues with HMR (bug in rolldown-vite)
},
plugins: [
pluginLoader('renderer'),
viteResolve({
'virtual:i18n': i18nImporter(),
'virtual:plugins': pluginVirtualModuleGenerator('renderer'),
}),
solidPlugin(),
withFilter(solidPlugin(), {
load: { id: [/\.(tsx|jsx)$/, '/@solid-refresh'] },
}),
],
root: './src/',
build: {
@ -136,10 +149,7 @@ export default defineConfig({
name: 'renderer',
},
outDir: 'dist/renderer',
commonjsOptions: {
ignoreDynamicRequires: true,
},
rollupOptions: {
rolldownOptions: {
external: ['electron', ...builtinModules],
input: './src/index.html',
},
@ -147,6 +157,11 @@ export default defineConfig({
resolve: {
alias: resolveAlias,
},
server: {
cors: {
origin: 'https://music.youtube.com',
},
},
};
if (mode === 'development') {

View File

@ -2,7 +2,8 @@
import eslint from '@eslint/js';
import prettier from 'eslint-plugin-prettier/recommended';
import stylistic from '@stylistic/eslint-plugin-js';
import solid from 'eslint-plugin-solid/configs/recommended';
import stylistic from '@stylistic/eslint-plugin';
import tsEslint from 'typescript-eslint';
import * as importPlugin from 'eslint-plugin-import';
@ -12,6 +13,7 @@ export default tsEslint.config(
tsEslint.configs.eslintRecommended,
...tsEslint.configs.recommendedTypeChecked,
prettier,
solid,
{ ignores: ['dist', 'node_modules', '*.config.*js', '*.test.*js'] },
{
plugins: {
@ -29,11 +31,19 @@ export default tsEslint.config(
rules: {
'stylistic/arrow-parens': ['error', 'always'],
'stylistic/object-curly-spacing': ['error', 'always'],
'stylistic/jsx-pascal-case': 'error',
'stylistic/jsx-curly-spacing': ['error', { when: 'never', children: true }],
'stylistic/jsx-sort-props': 'error',
'prettier/prettier': ['error', { singleQuote: true, semi: true, tabWidth: 2, trailingComma: 'all', quoteProps: 'preserve' }],
'@typescript-eslint/no-floating-promises': 'off',
'@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }],
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/consistent-type-imports': ['error', {
fixStyle: 'inline-type-imports',
prefer: 'type-imports',
disallowTypeAnnotations: false,
}],
'importPlugin/first': 'error',
'importPlugin/newline-after-import': 'off',
'importPlugin/no-default-export': 'off',

View File

@ -2,9 +2,10 @@
"name": "youtube-music",
"desktopName": "com.github.th_ch.youtube_music",
"productName": "YouTube Music",
"version": "3.7.2",
"version": "3.11.0",
"description": "YouTube Music Desktop App - including custom plugins",
"main": "./dist/main/index.js",
"type": "module",
"license": "MIT",
"repository": "th-ch/youtube-music",
"author": {
@ -12,195 +13,17 @@
"email": "th-ch@users.noreply.github.com",
"url": "https://github.com/th-ch/youtube-music"
},
"build": {
"appId": "com.github.th-ch.youtube-music",
"productName": "YouTube Music",
"files": [
"!*",
"dist",
"assets",
"license",
"!node_modules",
"node_modules/custom-electron-prompt/**",
"node_modules/@ghostery/adblocker-electron-preload/**",
"node_modules/@ffmpeg.wasm/core-mt/**",
"!node_modules/**/*.map",
"!node_modules/**/*.ts"
],
"asarUnpack": [
"assets"
],
"mac": {
"identity": null,
"target": [
{
"target": "dmg",
"arch": [
"x64",
"arm64"
]
}
],
"icon": "assets/generated/icons/mac/icon.icns",
"compression": "maximum"
},
"win": {
"icon": "assets/generated/icons/win/icon.ico",
"target": [
{
"target": "nsis-web",
"arch": [
"x64",
"ia32",
"arm64"
]
},
{
"target": "portable",
"arch": [
"x64",
"ia32",
"arm64"
]
}
],
"compression": "maximum"
},
"nsisWeb": {
"runAfterFinish": false
},
"linux": {
"icon": "assets/generated/icons/png",
"category": "AudioVideo",
"desktop": {
"entry": {
"StartupWMClass": "com.github.th_ch.youtube_music"
}
},
"target": [
{
"target": "AppImage",
"arch": [
"x64",
"arm64",
"armv7l"
]
},
{
"target": "flatpak",
"arch": [
"x64"
]
},
{
"target": "deb",
"arch": [
"x64",
"arm64",
"armv7l"
]
},
{
"target": "rpm",
"arch": [
"x64",
"arm64"
]
},
{
"target": "snap",
"arch": [
"x64"
]
},
{
"target": "freebsd",
"arch": [
"x64",
"arm64",
"armv7l"
]
},
{
"target": "tar.gz",
"arch": [
"x64",
"arm64",
"armv7l"
]
}
]
},
"appImage": {
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
"category": "AudioVideo"
},
"flatpak": {
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
"category": "AudioVideo",
"runtimeVersion": "24.08",
"baseVersion": "24.08",
"finishArgs": [
"--socket=wayland",
"--socket=x11",
"--share=ipc",
"--device=dri",
"--socket=pulseaudio",
"--share=network",
"--filesystem=xdg-music:rw",
"--talk-name=org.freedesktop.Notifications",
"--talk-name=org.gnome.SessionManager",
"--talk-name=org.kde.StatusNotifierWatcher",
"--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*"
]
},
"deb": {
"depends": [
"libgtk-3-0",
"libnotify4",
"libnss3",
"libxss1",
"libxtst6",
"xdg-utils",
"libatspi2.0-0",
"libuuid1",
"libasound2",
"libgbm1"
]
},
"rpm": {
"depends": [
"/usr/lib64/libuuid.so.1"
],
"fpm": [
"--rpm-rpmbuild-define",
"_build_id_links none"
]
},
"snap": {
"slots": [
{
"mpris": {
"interface": "mpris"
}
}
]
},
"directories": {
"output": "./pack/"
}
},
"scripts": {
"test": "playwright test",
"test:debug": "cross-env DEBUG=pw:*,-pw:test:protocol playwright test",
"build": "electron-vite build",
"test": "pnpm playwright test",
"test:debug": "pnpm cross-env DEBUG=pw:*,-pw:test:protocol playwright test",
"build": "pnpm electron-vite build",
"vite:inspect": "pnpm clean && electron-vite build --mode development && pnpm exec serve .vite-inspect",
"start": "electron-vite preview",
"start:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm start",
"dev": "cross-env NODE_OPTIONS=--enable-source-maps electron-vite dev --watch",
"dev:renderer": "cross-env NODE_OPTIONS=--enable-source-maps electron-vite dev",
"dev:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm dev",
"clean": "del-cli dist && del-cli pack && del-cli .vite-inspect",
"start": "pnpm electron-vite preview",
"start:debug": "pnpm cross-env ELECTRON_ENABLE_LOGGING=1 pnpm start",
"dev": "pnpm cross-env NODE_ENV=development NODE_OPTIONS=--enable-source-maps electron-vite dev --watch",
"dev:renderer": "pnpm cross-env NODE_ENV=development NODE_OPTIONS=--enable-source-maps electron-vite dev",
"dev:debug": "pnpm cross-env ELECTRON_ENABLE_LOGGING=1 pnpm dev",
"clean": "pnpm del-cli dist && pnpm del-cli pack && pnpm del-cli .vite-inspect",
"dist": "pnpm clean && pnpm build && pnpm electron-builder --win --mac --linux -p never",
"dist:linux": "pnpm clean && pnpm build && pnpm electron-builder --linux -p never",
"dist:linux:deb-arm64": "pnpm clean && pnpm build && pnpm electron-builder --linux deb:arm64 -p never",
@ -209,133 +32,150 @@
"dist:mac:arm64": "pnpm clean && pnpm build && pnpm electron-builder --mac dmg:arm64 -p never",
"dist:win": "pnpm clean && pnpm build && pnpm electron-builder --win -p never",
"dist:win:x64": "pnpm clean && pnpm build && pnpm electron-builder --win nsis-web:x64 -p never",
"lint": "eslint .",
"changelog": "npx --yes auto-changelog",
"lint": "pnpm eslint ./src",
"changelog": "pnpm dlx auto-changelog",
"release:linux": "pnpm clean && pnpm build && pnpm electron-builder --linux -p always -c.snap.publish=github",
"release:mac": "pnpm clean && pnpm build && pnpm electron-builder --mac -p always",
"release:win": "pnpm clean && pnpm build && pnpm electron-builder --win -p always",
"typecheck": "tsc -p tsconfig.json --noEmit"
"typecheck": "pnpm tsc -p tsconfig.json --noEmit"
},
"engines": {
"node": ">=18",
"pnpm": ">=8"
"node": ">=22",
"pnpm": ">=10"
},
"pnpm": {
"overrides": {
"vite": "6.0.7",
"node-gyp": "11.0.0",
"vite": "npm:rolldown-vite@7.1.8",
"node-gyp": "11.4.2",
"xml2js": "0.6.2",
"node-fetch": "3.3.2",
"@electron/universal": "2.0.1",
"@babel/runtime": "7.26.0"
"@electron/universal": "3.0.1",
"@babel/runtime": "7.28.4"
},
"patchedDependencies": {
"vudio@2.1.1": "patches/vudio@2.1.1.patch",
"app-builder-lib@26.0.0-alpha.9": "patches/app-builder-lib@26.0.0-alpha.9.patch",
"@malept/flatpak-bundler": "patches/@malept__flatpak-bundler.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",
"file-type@16.5.4": "patches/file-type@16.5.4.patch",
"electron-is@3.0.0": "patches/electron-is@3.0.0.patch"
},
"neverBuiltDependencies": []
},
"dependencies": {
"@dehoist/romanize-thai": "1.0.0",
"@electron-toolkit/tsconfig": "1.0.1",
"@electron/remote": "2.1.2",
"@electron/remote": "2.1.3",
"@ffmpeg.wasm/core-mt": "0.12.0",
"@ffmpeg.wasm/main": "0.12.0",
"@floating-ui/dom": "1.6.13",
"@floating-ui/dom": "1.7.4",
"@foobar404/wave": "2.0.5",
"@ghostery/adblocker-electron": "2.3.1",
"@ghostery/adblocker-electron-preload": "2.3.1",
"@hono/node-server": "1.13.7",
"@hono/swagger-ui": "0.5.0",
"@hono/zod-openapi": "0.18.3",
"@hono/zod-validator": "0.4.2",
"@ghostery/adblocker-electron": "2.11.6",
"@ghostery/adblocker-electron-preload": "2.11.6",
"@hono/node-server": "1.19.1",
"@hono/node-ws": "1.2.0",
"@hono/swagger-ui": "0.5.2",
"@hono/zod-openapi": "1.1.0",
"@hono/zod-validator": "0.7.2",
"@jellybrick/dbus-next": "0.10.3",
"@jellybrick/electron-better-web-request": "1.0.4",
"@jellybrick/mpris-service": "2.1.5",
"@jimp/plugin-color": "1.6.0",
"@skyra/jaro-winkler": "1.1.1",
"@xhayper/discord-rpc": "1.2.0",
"@xhayper/discord-rpc": "1.3.0",
"async-mutex": "0.5.0",
"bgutils-js": "3.1.2",
"butterchurn": "3.0.0-beta.4",
"bgutils-js": "3.2.0",
"butterchurn": "3.0.0-beta.5",
"butterchurn-presets": "3.0.0-beta.4",
"color": "4.2.3",
"conf": "13.1.0",
"color": "5.0.0",
"conf": "14.0.0",
"custom-electron-prompt": "1.5.8",
"deepmerge-ts": "7.1.3",
"deepmerge-ts": "7.1.5",
"delay": "6.0.0",
"electron-debug": "4.1.0",
"electron-is": "3.0.0",
"electron-localshortcut": "3.2.1",
"electron-store": "10.0.0",
"electron-unhandled": "4.0.1",
"electron-updater": "6.3.9",
"fast-average-color": "9.4.0",
"electron-store": "10.1.0",
"electron-unhandled": "5.0.0",
"electron-updater": "6.6.2",
"es-hangul": "2.3.5",
"fast-average-color": "9.5.0",
"fast-equals": "5.2.2",
"fflate": "0.8.2",
"filenamify": "6.0.0",
"happy-dom": "16.6.0",
"hono": "4.6.16",
"hanja": "1.1.5",
"happy-dom": "18.0.1",
"hono": "4.9.7",
"howler": "2.2.4",
"html-to-text": "9.0.5",
"i18next": "24.2.1",
"i18next": "25.5.2",
"jimp": "1.6.0",
"keyboardevent-from-electron-accelerator": "2.0.0",
"keyboardevents-areequal": "0.2.2",
"kuromoji": "0.1.2",
"kuroshiro": "1.2.0",
"kuroshiro-analyzer-kuromoji": "1.1.0",
"lazy-var": "2.2.2",
"node-html-parser": "7.0.1",
"node-id3": "0.2.6",
"peerjs": "1.5.4",
"semver": "7.6.3",
"serve": "14.2.4",
"node-id3": "0.2.9",
"peerjs": "1.5.5",
"semver": "7.7.2",
"serve": "14.2.5",
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
"socks": "2.8.7",
"solid-element": "1.9.1",
"solid-floating-ui": "0.3.1",
"solid-js": "1.9.4",
"solid-js": "1.9.9",
"solid-styled-components": "0.28.5",
"solid-transition-group": "0.2.3",
"ts-morph": "25.0.0",
"solid-transition-group": "0.3.0",
"tiny-pinyin": "1.3.2",
"tinyld": "1.3.4",
"virtua": "0.42.3",
"vudio": "2.1.1",
"x11": "2.3.0",
"youtubei.js": "12.2.0",
"zod": "3.24.1"
"youtubei.js": "15.0.1",
"zod": "4.1.5"
},
"devDependencies": {
"@eslint/js": "9.18.0",
"@playwright/test": "1.49.1",
"@stylistic/eslint-plugin-js": "2.13.0",
"@electron-toolkit/tsconfig": "1.0.1",
"@eslint/js": "9.35.0",
"@malept/flatpak-bundler": "0.4.0",
"@playwright/test": "1.55.0",
"@stylistic/eslint-plugin": "5.3.1",
"@total-typescript/ts-reset": "0.6.1",
"@types/color": "4.2.0",
"@types/electron-localshortcut": "3.1.3",
"@types/eslint__js": "8.42.3",
"@types/howler": "2.2.12",
"@types/html-to-text": "9.0.4",
"@types/semver": "7.5.8",
"@types/semver": "7.7.1",
"@types/trusted-types": "2.0.7",
"bufferutil": "4.0.9",
"builtin-modules": "4.0.0",
"cross-env": "7.0.3",
"builtin-modules": "5.0.0",
"cross-env": "10.0.0",
"del-cli": "6.0.0",
"discord-api-types": "0.37.116",
"electron": "34.0.0",
"electron-builder": "26.0.0-alpha.9",
"electron-builder-squirrel-windows": "26.0.0-alpha.9",
"discord-api-types": "0.38.23",
"electron": "38.0.0",
"electron-builder": "26.0.12",
"electron-builder-squirrel-windows": "26.0.12",
"electron-devtools-installer": "4.0.0",
"electron-vite": "2.3.0",
"esbuild": "0.24.2",
"eslint": "9.18.0",
"eslint-config-prettier": "10.0.1",
"electron-vite": "4.0.0",
"eslint": "9.35.0",
"eslint-config-prettier": "10.1.8",
"eslint-import-resolver-exports": "1.0.0-beta.5",
"eslint-import-resolver-typescript": "3.7.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-prettier": "5.2.2",
"glob": "11.0.1",
"node-gyp": "11.0.0",
"playwright": "1.49.1",
"rollup": "4.30.1",
"typescript": "5.7.3",
"typescript-eslint": "8.20.0",
"eslint-import-resolver-typescript": "4.4.4",
"eslint-plugin-import": "2.32.0",
"eslint-plugin-prettier": "5.5.4",
"eslint-plugin-solid": "0.14.5",
"glob": "11.0.3",
"node-gyp": "11.4.2",
"playwright": "1.55.0",
"ts-morph": "27.0.0",
"typescript": "5.9.2",
"typescript-eslint": "8.43.0",
"utf-8-validate": "6.0.5",
"vite": "6.0.7",
"vite-plugin-inspect": "10.0.6",
"vite": "npm:rolldown-vite@7.1.8",
"vite-plugin-inspect": "11.3.3",
"vite-plugin-resolve": "2.5.2",
"vite-plugin-solid": "2.11.0",
"ws": "8.18.0"
"vite-plugin-solid": "2.11.8",
"ws": "8.18.3"
},
"auto-changelog": {
"hideCredit": true,

View File

@ -1,21 +0,0 @@
diff --git a/out/targets/snap.js b/out/targets/snap.js
index f72c36355d27cd2d69fc5fdf2d8bb2451db0287f..baae112fe25ebb49ab8e25aaa48efd6bc43b598f 100644
--- a/out/targets/snap.js
+++ b/out/targets/snap.js
@@ -212,14 +212,14 @@ class SnapTarget extends core_1.Target {
args.push("--template-url", `electron4:${snapArch}`);
}
await (0, builder_util_1.executeAppBuilder)(args);
- const publishConfig = findSnapPublishConfig(this.packager.config);
+
await packager.info.callArtifactBuildCompleted({
file: artifactPath,
safeArtifactName: packager.computeSafeArtifactName(artifactName, "snap", arch, false),
target: this,
arch,
packager,
- publishConfig: publishConfig == null ? { provider: "snapStore" } : publishConfig,
+ publishConfig: options.publish == null ? { provider: "snapStore" } : null,
});
}
isElectronVersionGreaterOrEqualThan(version) {

View File

@ -0,0 +1,27 @@
diff --git a/is.d.ts b/is.d.ts
index fb861f7b401914f0f89cb4edf25c51df5cb05812..82144733cd34d88e2deb2e4713b104418e673f2e 100644
--- a/is.d.ts
+++ b/is.d.ts
@@ -5,6 +5,7 @@ declare namespace is {
export function macOS(): boolean;
export function windows(): boolean;
export function linux(): boolean;
+ export function freebsd(): boolean;
export function x86(): boolean;
export function x64(): boolean;
export function production(): boolean;
diff --git a/is.js b/is.js
index a76bb1755a2728bde185b35d847031d3b8ea4ab0..f6b03406c17342f5af078de069e5bbbd2246e152 100644
--- a/is.js
+++ b/is.js
@@ -39,6 +39,10 @@ module.exports = {
linux: function () {
return process.platform === 'linux'
},
+ // Checks if we are under FreeBSD OS
+ freebsd: function () {
+ return process.platform === "freebsd"
+ },
// Checks if we are the processor's arch is x86
x86: function () {
return process.arch === 'ia32'

View File

@ -1,161 +0,0 @@
diff --git a/lib/importDeclaration.js b/lib/importDeclaration.js
index afb4de779034cfea080825a5f4320661c48bee32..f10b0a11a39577fbd42569e6b0e768255c1ef276 100644
--- a/lib/importDeclaration.js
+++ b/lib/importDeclaration.js
@@ -1,5 +1,5 @@
-"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports["default"] = importDeclaration;function importDeclaration(context) {
- var ancestors = context.getAncestors();
+"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports["default"] = importDeclaration;function importDeclaration(context, node) {
+ var ancestors = context.getSourceCode().getAncestors(node);
return ancestors[ancestors.length - 1];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnREZWNsYXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJpbXBvcnREZWNsYXJhdGlvbiIsImNvbnRleHQiLCJhbmNlc3RvcnMiLCJnZXRBbmNlc3RvcnMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJnR0FBd0JBLGlCLENBQVQsU0FBU0EsaUJBQVQsQ0FBMkJDLE9BQTNCLEVBQW9DO0FBQ2pELE1BQU1DLFlBQVlELFFBQVFFLFlBQVIsRUFBbEI7QUFDQSxTQUFPRCxVQUFVQSxVQUFVRSxNQUFWLEdBQW1CLENBQTdCLENBQVA7QUFDRCIsImZpbGUiOiJpbXBvcnREZWNsYXJhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpIHtcbiAgY29uc3QgYW5jZXN0b3JzID0gY29udGV4dC5nZXRBbmNlc3RvcnMoKTtcbiAgcmV0dXJuIGFuY2VzdG9yc1thbmNlc3RvcnMubGVuZ3RoIC0gMV07XG59XG4iXX0=
\ No newline at end of file
diff --git a/lib/rules/first.js b/lib/rules/first.js
index a77168660cf32c8c3e96f3ff4b8240a36d7de3a6..c0e00d75f9989916057fef3999eeee8d21820292 100644
--- a/lib/rules/first.js
+++ b/lib/rules/first.js
@@ -66,7 +66,7 @@ module.exports = {
}
}
if (nonImportCount > 0) {var _iteratorNormalCompletion = true;var _didIteratorError = false;var _iteratorError = undefined;try {
- for (var _iterator = context.getDeclaredVariables(node)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {var variable = _step.value;
+ for (var _iterator = sourceCode.getDeclaredVariables(node)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {var variable = _step.value;
if (!shouldSort) {break;}
var references = variable.references;
if (references.length) {var _iteratorNormalCompletion2 = true;var _didIteratorError2 = false;var _iteratorError2 = undefined;try {
diff --git a/lib/rules/namespace.js b/lib/rules/namespace.js
index 574d89a60d15c7e0e712956ea6a3ad2d0eac7f08..82e7cb3cff4246592d762cce86323f2b72de92e4 100644
--- a/lib/rules/namespace.js
+++ b/lib/rules/namespace.js
@@ -86,7 +86,7 @@ module.exports = {
// same as above, but does not add names to local map
ExportNamespaceSpecifier: function () {function ExportNamespaceSpecifier(namespace) {
- var declaration = (0, _importDeclaration2['default'])(context);
+ var declaration = (0, _importDeclaration2['default'])(context, namespace);
var imports = _ExportMap2['default'].get(declaration.source.value, context);
if (imports == null) {return null;}
diff --git a/lib/rules/newline-after-import.js b/lib/rules/newline-after-import.js
index 6cc15686464a17803a0b976c35b99627cdbfabee..520eec6d9a375527ab72c459960fe4416c046c17 100644
--- a/lib/rules/newline-after-import.js
+++ b/lib/rules/newline-after-import.js
@@ -194,7 +194,7 @@ module.exports = {
}return CallExpression;}(),
'Program:exit': function () {function ProgramExit() {
log('exit processing for', context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename());
- var scopeBody = getScopeBody(context.getScope());
+ var scopeBody = getScopeBody(context.getSourceCode().getScope(node));
log('got scope:', scopeBody);
requireCalls.forEach(function (node, index) {
diff --git a/lib/rules/no-amd.js b/lib/rules/no-amd.js
index 7ac108bf812ca4f78bfa6fe5ae8b9cf38e2ff497..346c3105dc70f72c4d76fcc6b96b946d1d4ec6d5 100644
--- a/lib/rules/no-amd.js
+++ b/lib/rules/no-amd.js
@@ -23,7 +23,7 @@ module.exports = {
create: function () {function create(context) {
return {
CallExpression: function () {function CallExpression(node) {
- if (context.getScope().type !== 'module') {return;}
+ if (context.getSourceCode().getScope(node).type !== 'module') {return;}
if (node.callee.type !== 'Identifier') {return;}
if (node.callee.name !== 'require' && node.callee.name !== 'define') {return;}
diff --git a/lib/rules/no-commonjs.js b/lib/rules/no-commonjs.js
index befeff0026d61d3ac1e6bbcea29f5c471dc1d353..e91c5ed34e968d5867e884ea800e166cda345aef 100644
--- a/lib/rules/no-commonjs.js
+++ b/lib/rules/no-commonjs.js
@@ -107,7 +107,7 @@ module.exports = {
// exports.
if (node.object.name === 'exports') {
- var isInScope = context.getScope().
+ var isInScope = context.getSourceCode().getScope(node).
variables.
some(function (variable) {return variable.name === 'exports';});
if (!isInScope) {
@@ -117,7 +117,7 @@ module.exports = {
}return MemberExpression;}(),
CallExpression: function () {function CallExpression(call) {
- if (!validateScope(context.getScope())) {return;}
+ if (!validateScope(context.getSourceCode().getScope(call))) {return;}
if (call.callee.type !== 'Identifier') {return;}
if (call.callee.name !== 'require') {return;}
diff --git a/lib/rules/no-mutable-exports.js b/lib/rules/no-mutable-exports.js
index 40bd1b4cfa95d41732bb13bba0ed1969a91cc7ff..8a25abfbfadb299204b36a6cbf283259bcc2e790 100644
--- a/lib/rules/no-mutable-exports.js
+++ b/lib/rules/no-mutable-exports.js
@@ -32,7 +32,7 @@ module.exports = {
}
function handleExportDefault(node) {
- var scope = context.getScope();
+ var scope = context.getSourceCode().getScope(node);
if (node.declaration.name) {
checkDeclarationsInScope(scope, node.declaration.name);
@@ -40,7 +40,7 @@ module.exports = {
}
function handleExportNamed(node) {
- var scope = context.getScope();
+ var scope = context.getSourceCode().getScope(node);
if (node.declaration) {
checkDeclaration(node.declaration);
diff --git a/lib/rules/no-named-as-default-member.js b/lib/rules/no-named-as-default-member.js
index 0c15051e027ad7d1d45f1b51c20be1c000b0af01..5b3d6ba415511b7f9f83a52e1acfebe5a1045a7b 100644
--- a/lib/rules/no-named-as-default-member.js
+++ b/lib/rules/no-named-as-default-member.js
@@ -35,7 +35,7 @@ module.exports = {
return {
ImportDefaultSpecifier: function () {function ImportDefaultSpecifier(node) {
- var declaration = (0, _importDeclaration2['default'])(context);
+ var declaration = (0, _importDeclaration2['default'])(context, node);
var exportMap = _ExportMap2['default'].get(declaration.source.value, context);
if (exportMap == null) {return;}
diff --git a/lib/rules/no-named-as-default.js b/lib/rules/no-named-as-default.js
index 63378a33a1c7da004c57a524cec1a1cddf23e210..c81b1f93b11628676158b79f1c4015911943cc7d 100644
--- a/lib/rules/no-named-as-default.js
+++ b/lib/rules/no-named-as-default.js
@@ -18,7 +18,7 @@ module.exports = {
// #566: default is a valid specifier
if (defaultSpecifier[nameKey].name === 'default') {return;}
- var declaration = (0, _importDeclaration2['default'])(context);
+ var declaration = (0, _importDeclaration2['default'])(context, defaultSpecifier);
var imports = _ExportMap2['default'].get(declaration.source.value, context);
if (imports == null) {return;}
diff --git a/lib/rules/no-namespace.js b/lib/rules/no-namespace.js
index 2b0c783adea788101b779b17f977bbcb582cfd3f..a7f7b202ac7c4a342febef2a993586c4cc84fc7a 100644
--- a/lib/rules/no-namespace.js
+++ b/lib/rules/no-namespace.js
@@ -43,7 +43,7 @@ var _docsUrl = require('../docsUrl');var _docsUrl2 = _interopRequireDefault(_doc
return;
}
- var scopeVariables = context.getScope().variables;
+ var scopeVariables = context.getSourceCode().getScope(node).variables;
var namespaceVariable = scopeVariables.find(function (variable) {return variable.defs[0].node === node;});
var namespaceReferences = namespaceVariable.references;
var namespaceIdentifiers = namespaceReferences.map(function (reference) {return reference.identifier;});
diff --git a/package.json b/package.json
index 5c0af48543483a21791fa23a4a583071d3551772..5deeac3d0accc3878ef0fc93dfb52a8ca7c46e84 100644
--- a/package.json
+++ b/package.json
@@ -72,7 +72,7 @@
"chai": "^4.3.10",
"cross-env": "^4.0.0",
"escope": "^3.6.0",
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8",
+ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9",
"eslint-doc-generator": "^1.6.1",
"eslint-import-resolver-node": "file:./resolvers/node",
"eslint-import-resolver-typescript": "^1.0.2 || ^1.1.1",

View File

@ -0,0 +1,14 @@
diff --git a/core.js b/core.js
index d653e66a4056c27cca777d4e25222acae3b2ec85..a91741d67df85fd9627889a6c7197ac4e6a3a813 100644
--- a/core.js
+++ b/core.js
@@ -1415,8 +1415,7 @@ async function _fromTokenizer(tokenizer) {
}
const stream = readableStream => new Promise((resolve, reject) => {
- // Using `eval` to work around issues when bundling with Webpack
- const stream = eval('require')('stream'); // eslint-disable-line no-eval
+ const stream = require('node:stream');
readableStream.on('error', reject);
readableStream.once('readable', async () => {

6738
patches/kuromoji@0.1.2.patch Normal file

File diff suppressed because it is too large Load Diff

5969
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
],
"extends": ["config:recommended"],
"labels": ["dependencies"],
"postUpdateOptions": ["pnpmDedupe"]
}

View File

@ -12,8 +12,8 @@ export interface DefaultConfig {
'window-size': WindowSizeConfig;
'window-maximized': boolean;
'window-position': WindowPositionConfig;
url: string;
options: {
'url': string;
'options': {
language?: string;
tray: boolean;
appVisible: boolean;
@ -31,14 +31,16 @@ export interface DefaultConfig {
likeButtons: string;
proxy: string;
startingPage: string;
backgroundMaterial?: 'none' | 'mica' | 'acrylic' | 'tabbed';
overrideUserAgent: boolean;
usePodcastParticipantAsArtist: boolean;
themes: string[];
customWindowTitle?: string;
};
plugins: Record<string, unknown>;
'plugins': Record<string, unknown>;
}
const defaultConfig: DefaultConfig = {
export const defaultConfig: DefaultConfig = {
'window-size': {
width: 1100,
height: 550,
@ -72,5 +74,3 @@ const defaultConfig: DefaultConfig = {
},
'plugins': {},
};
export default defaultConfig;

View File

@ -1,30 +1,36 @@
import { deepmergeCustom } from 'deepmerge-ts';
import defaultConfig from './defaults';
import store, { IStore } from './store';
import plugins from './plugins';
import { store, type IStore } from './store';
import { restart } from '@/providers/app-controls';
import type { defaultConfig } from './defaults';
const deepmerge = deepmergeCustom({
mergeArrays: false,
});
const set = (key: string, value: unknown) => {
export { defaultConfig } from './defaults';
export * as plugins from './plugins';
export const set = (key: string, value: unknown) => {
store.set(key, value);
};
const setPartial = (key: string, value: object, defaultValue?: object) => {
export const setPartial = (
key: string,
value: object,
defaultValue?: object,
) => {
const newValue = deepmerge(defaultValue ?? {}, store.get(key) ?? {}, value);
store.set(key, newValue);
};
function setMenuOption(key: string, value: unknown) {
export const setMenuOption = (key: string, value: unknown) => {
set(key, value);
if (store.get('options.restartOnConfigChanges')) {
restart();
}
}
};
// MAGIC OF TYPESCRIPT
@ -74,18 +80,11 @@ type PathValue<T, K extends string> =
? PathValue<T[A], B>
: T;
const get = <Key extends Paths<typeof defaultConfig>>(key: Key) =>
export const get = <Key extends Paths<typeof defaultConfig>>(key: Key) =>
store.get(key) as PathValue<typeof defaultConfig, typeof key>;
export default {
defaultConfig,
get,
set,
setPartial,
setMenuOption,
edit: () => store.openInEditor(),
watch(cb: Parameters<IStore['onDidAnyChange']>[0]) {
store.onDidAnyChange(cb);
},
plugins,
export const edit = () => store.openInEditor();
export const watch = (cb: Parameters<IStore['onDidAnyChange']>[0]) => {
store.onDidAnyChange(cb);
};

View File

@ -1,7 +1,7 @@
import { deepmerge } from 'deepmerge-ts';
import { allPlugins } from 'virtual:plugins';
import store from './store';
import { store } from './store';
import { restart } from '@/providers/app-controls';
@ -11,9 +11,9 @@ export function getPlugins() {
return store.get('plugins') as Record<string, PluginConfig>;
}
export function isEnabled(plugin: string) {
export async function isEnabled(plugin: string) {
const pluginConfig = deepmerge(
allPlugins[plugin].config ?? { enabled: false },
(await allPlugins())[plugin].config ?? { enabled: false },
(store.get('plugins') as Record<string, PluginConfig>)[plugin] ?? {},
);
return pluginConfig !== undefined && pluginConfig.enabled;
@ -68,13 +68,3 @@ export function enable(plugin: string) {
export function disable(plugin: string) {
setMenuOptions(plugin, { enabled: false }, []);
}
export default {
isEnabled,
getPlugins,
enable,
disable,
setOptions,
setMenuOptions,
getOptions,
};

View File

@ -1,13 +1,42 @@
import Store from 'electron-store';
import defaults from './defaults';
import { defaultConfig as defaults } from './defaults';
import { DefaultPresetList, type Preset } from '@/plugins/downloader/types';
// prettier-ignore
export type IStore = InstanceType<typeof import('conf/dist/source/index').default<Record<string, unknown>>>;
import type { SyncedLyricsPluginConfig } from '@/plugins/synced-lyrics/types';
export type IStore = InstanceType<
typeof import('conf').default<Record<string, unknown>>
>;
const migrations = {
'>=3.10.0'(store: IStore) {
const lyricGeniusConfig = store.get('plugins.lyrics-genius') as
| {
enabled?: boolean;
romanizedLyrics?: boolean;
}
| undefined;
if (lyricGeniusConfig) {
const syncedLyricsConfig = store.get('plugins.synced-lyrics') as
| SyncedLyricsPluginConfig
| undefined;
if (
!syncedLyricsConfig ||
syncedLyricsConfig?.enabled !== lyricGeniusConfig?.enabled
) {
store.set('plugins.synced-lyrics', {
...syncedLyricsConfig,
enabled: lyricGeniusConfig.enabled,
});
}
store.delete('plugins.lyrics-genius');
}
},
'>=3.3.0'(store: IStore) {
const lastfmConfig = store.get('plugins.lastfm') as {
enabled?: boolean;
@ -228,7 +257,7 @@ const migrations = {
},
};
export default new Store({
export const store = new Store({
defaults: {
...defaults,
// README: 'plugin' uses deepmerge to populate the default values, so it is not necessary to include it here

View File

@ -1,5 +1,5 @@
declare module 'custom-electron-prompt' {
import { BrowserWindow } from 'electron';
import { type BrowserWindow } from 'electron';
export type SelectOptions = Record<string, string>;

View File

@ -4,7 +4,7 @@ import { languageResources } from 'virtual:i18n';
export const loadI18n = async () =>
await init({
resources: languageResources,
resources: await languageResources(),
lng: 'en',
fallbackLng: 'en',
interpolation: {

View File

@ -2,9 +2,9 @@ export interface LanguageResources {
[lang: string]: {
translation: Record<string, unknown> & {
language?: {
name: string;
'name': string;
'local-name': string;
code: string;
'code': string;
};
};
};

View File

@ -202,7 +202,7 @@
"show": "عرض النافدة",
"tooltip": {
"default": "يوتيوب اغاني",
"with-song-info": "يوتيوب أغاني: {{الفنان}}-{{العنوان}}"
"with-song-info": "أغاني يوتيوب: {{artist}} - {{title}}"
}
}
},
@ -219,7 +219,7 @@
"name": "حاجب الإعلانات"
},
"album-actions": {
"description": "يضيف أزرار \"إلغاء عدم الإعجاب\"، \"عدم الإعجاب\"، \"الإعجاب\"، و\"إلغاء الإعجاب\" لتطبيقها على جميع الأغاني في قائمة التشغيل أو الألبوم",
"description": "يضيف أزرار \"إلغاء عدم الاعجاب\" و\"عدم الاعجاب\" و\"الإعجاب\" و\"إلغاء الإعجاب\" لتطبيق ذلك على جميع الأغاني في قائمة تشغيل أو ألبوم",
"name": "إجراءات الألبوم"
},
"album-color-theme": {
@ -279,6 +279,13 @@
},
"name": "الوضع المحيطي"
},
"amuse": {
"description": "تكامل دعم YouTube Music مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs",
"name": "تلسيه",
"response": {
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
}
},
"api-server": {
"description": "يضيف خادم للتحكم في المشغل",
"dialog": {
@ -286,41 +293,600 @@
"buttons": {
"allow": "سماح",
"deny": "رفض"
}
},
"message": "السماح لـ {{ID}} ({{origin}}) بالوصول إلى واجهة برمجة التطبيقات (API)؟",
"title": "طلب السماح بالوصول إلى واجهة برمجة التطبيقات(API)"
}
},
"menu": {
"auth-strategy": {
"label": "نهج التفويض",
"submenu": {
"auth-at-first": {
"label": "التفويض المبدئي عند الطلب الأول"
},
"none": {
"label": "بدون تفويض"
}
}
},
"hostname": {
"label": "اسم المضيف"
},
"port": {
"label": "المنفذ"
}
},
"name": "خادم API [تجريبي]",
"prompt": {
"hostname": {
"label": "أدخل اسم المضيف (مثل 0.0.0.0) لخادم API:",
"title": "اسم الخادم"
},
"port": {
"label": "أدخل المنفذ لخادم API:",
"title": "منفذ"
}
}
},
"audio-compressor": {
"description": "تطبيق الضغط على الصوت (يخفض مستوى صوت الأجزاء الأعلى من الإشارة ويرفع مستوى صوت الأجزاء الأكثر نعومة)",
"name": "ضاغط الصوت"
},
"auth-proxy-adapter": {
"description": "دعم استخدام خدمات وكيل المصادقة",
"menu": {
"disable": "تعطيل مكيف الوكيل",
"enable": "تفعيل مكيف الوكيل",
"hostname": {
"label": "إسم المستضيف"
},
"port": {
"label": "المدخل"
}
},
"name": "مكيّف وسيط المصادقة",
"prompt": {
"hostname": {
"label": "أدخل اسم المستضيف لخادم الوسيط المحلي (يتطلب إعادة التشغيل):",
"title": "إسم مستضيف الوسيط"
},
"port": {
"label": "أدخل مدخلًا لخادم الوسيط المحلي (يتطلب إعادة التشغيل):",
"title": "مدخل الوسيط"
}
}
},
"blur-nav-bar": {
"description": "يجعل شريط التنقل شفاف و ضبابي"
"description": "يجعل شريط التنقل شفاف و ضبابي",
"name": "تغبيش شريط التنقل"
},
"bypass-age-restrictions": {
"description": "تجاوز تَحَقّق اليوتيوب من السن",
"name": "تجاوز التحقق من السن"
},
"captions-selector": {
"description": "محدد ترجمات المقاطع الصوتية لYoutube Music",
"menu": {
"autoload": "اختار اخر ترجمة مستخدمة تلقائيا",
"disable-captions": "لا توجد ترجمات بشكل افتراضي"
},
"name": "محدد الترجمة",
"prompt": {
"selector": {
"label": "لغة الترجمة الحالية: {{language}}",
"none": "لا شيء",
"title": "اختار لغة الترجمة"
}
},
"templates": {
"title": "فتح محدد الترجمة"
},
"toast": {
"caption-changed": "تم تغيير الترجمة الى {{language}}",
"caption-disabled": "الترجمة معطلة",
"no-captions": "الترجمة لهاته الأغنية غير متاحة"
}
},
"compact-sidebar": {
"description": "قم دائمًا بتعيين الشريط الجانبي في الوضع الملموم",
"name": "شريط جانبي ملموم"
},
"crossfade": {
"description": "التداخل بين الأغاني",
"menu": {
"advanced": "متقدم"
},
"name": "التداخل بين الأغاني [تجريبي]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "مدة التداخل (بأجزاء الثانية)",
"fade-out-duration": "مدة التلاشي (جزء ثانية)",
"fade-scaling": {
"label": "توسيع التداخل",
"linear": "خطي",
"logarithmic": "لوغاريتمي"
},
"seconds-before-end": "التلاشي قبل النهاية بـ N ثوانٍ"
},
"title": "خيارات التداخل"
}
}
},
"disable-autoplay": {
"description": "يجعل الأغنية تبدأ في وضع \"الإيقاف المؤقت\"",
"menu": {
"apply-once": "ينطبق فقط عند بدء التشغيل"
},
"name": "تعطيل التشغيل التلقائي"
},
"discord": {
"backend": {
"already-connected": "تمت محاولة الاتصال بالاتصال النشط",
"connected": "متصل بDiscord",
"disconnected": "انقطع الاتصال بDiscord"
},
"description": "أظهر لأصدقائك ما تستمع إليه من خلال Rich Presence",
"menu": {
"auto-reconnect": "إعادة اتصال تلقائي",
"clear-activity": "مسح النشاط",
"clear-activity-after-timeout": "مسح النشاط بعد انتهاء المهلة",
"connected": "متصل",
"disconnected": "قطع الاتصال",
"hide-duration-left": "إخفاء المدة المتبقية",
"hide-github-button": "إخفاء زر رابط GitHub",
"play-on-youtube-music": "شغل في YouTube Music",
"set-inactivity-timeout": "ضبط مهلة عدم النشاط"
},
"name": "حالة ديسكورد",
"prompt": {
"set-inactivity-timeout": {
"label": "أدخل مهلة عدم النشاط بالثواني:",
"title": "ضبط مهلة عدم النشاط"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "حسنا"
},
"message": "نعتذر، فشل التحميل…",
"title": "خطأ في التحميل!"
},
"start-download-playlist": {
"buttons": {
"ok": "حسنا"
},
"detail": "({{playlistSize}} أغنية)",
"message": "تحميل القائمة {{playlistTitle}}",
"title": "بدأ التحميل"
}
},
"feedback": {
"conversion-progress": "التحويل: {{percent}}%",
"converting": "جارٍ التحويل…",
"done": "تم: {{filePath}}",
"download-info": "تحميل {{artist}} - {{title}} {{videoId}}",
"download-progress": "تحميل: {{percent}}%",
"downloading": "تحميل…",
"downloading-counter": "تنزيل {{current}}/{{total}}…",
"downloading-playlist": "يتم تحميل القائمة \"{{playlistTitle}}\" - {{playlistSize}} أغاني ({{playlistId}})",
"error-while-downloading": "خطأ في تحميل \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "الملف {{playlistFolder}} موجود بالفعل",
"getting-playlist-info": "الحصول على معلومات القائمة…",
"loading": "جار التحميل…",
"playlist-has-only-one-song": "تحتوي قائمة التشغيل على عنصر واحد فقط، يتم تحميله الأن",
"playlist-id-not-found": "لم يتم العثور على معرف قائمة التشغيل",
"playlist-is-empty": "قائمة التشغيل فارغة",
"playlist-is-mix-or-private": "حدث خطأ أثناء الحصول على معلومات قائمة التشغيل: تأكد من أنها ليست قائمة تشغيل خاصة أو قائمة تشغيل \"مختلطة لك\"\n\n{{error}}",
"preparing-file": "يتم تجهيز الملف…",
"saving": "يتم الحفظ…",
"video-id-not-found": "لم يتم ايجاد الفيديو"
"trying-to-get-playlist-id": "محاولة الحصول على معرف قائمة التشغيل: {{playlistId}}",
"video-id-not-found": "لم يتم ايجاد الفيديو",
"writing-id3": "كتابة علامات ID3…"
}
},
"description": "يقوم بتنزيل ملفات MP3/مصدر الصوت مباشرة من الواجهة",
"menu": {
"choose-download-folder": "اختر مكان التحميل",
"download-finish-settings": {
"label": "تحميل عند الانتهاء",
"prompt": {
"last-percent": "بعد ( عدد مجهول ) بالمئة",
"last-seconds": "آخر (x) ثانية",
"title": "تكوين وقت التحميل"
},
"submenu": {
"advanced": "متقدم",
"enabled": "مفعل",
"mode": "وضع الوقت",
"percent": "النسبة",
"seconds": "ثواني"
}
},
"download-playlist": "تحميل قائمة التشغيل",
"presets": "الإعدادات المسبقة",
"skip-existing": "تخطي الملفات الموجودة"
},
"name": "أداة التنزيل",
"renderer": {
"can-not-update-progress": "لا يمكن تحديث التقدم"
},
"templates": {
"button": "تحميل"
}
},
"equalizer": {
"description": "يضيف معادل صوتي للمشغل",
"menu": {
"presets": {
"label": "إعدادات مسبقة",
"list": {
"bass-booster": "مزود البيس"
}
}
},
"name": "معادل صوتي"
},
"exponential-volume": {
"description": "يجعل شريط تمرير مستوى الصوت أسيًا بحيث يسهل تحديد مستويات الصوت الأقل.",
"name": "الصوت الأسي"
},
"in-app-menu": {
"description": "يعطي أشرطة القوائم مظهرًا أنيقًا و داكنًا أو بلون الألبوم",
"menu": {
"hide-dom-window-controls": "إخفاء عناصر التحكم في نافذة DOM"
},
"name": "قائمة داخل التطبيق"
},
"lumiastream": {
"description": "يضيف دعم Lumia Stream",
"name": "Lumia Stream [بيتا]"
},
"lyrics-genius": {
"description": "يضيف دعم الكلمات لمعظم الأغاني",
"menu": {
"romanized-lyrics": "كلمات مكتوبة بحروف رومانية"
},
"name": "كلمات الأغاني من Genius",
"renderer": {
"fetched-lyrics": "تم جلب الكلمات من Genius"
}
},
"music-together": {
"description": "مشاركة قائمة تشغيل مع الآخرين. عندما يقوم المضيف بتشغيل أغنية، سيسمع الجميع نفس الأغنية",
"dialog": {
"enter-host": "أدخل معرف المضيف"
},
"internal": {
"save": "حفظ",
"track-source": "مصدر الاغنية",
"unknown-user": "مستخدم مجهول"
},
"menu": {
"click-to-copy-id": "نسخ معرف المستضيف",
"close": "إغلاق \"الموسيقى معًا\"",
"connected-users": "المستخدمون المتصلون",
"disconnect": "قطع اتصال من \"الموسيقى معًا\"",
"empty-user": "لا يوجد مستعملون متصلون",
"host": "مضيف \"الموسيقى معًا\"",
"join": "الانضمام إلى \"الموسيقى معا\"",
"permission": {
"all": "السماح للضيوف بالتحكم في قائمة التشغيل والمشغل",
"host-only": "فقط المضيف يستطيع التحكم بالقائمة و المشغل",
"playlist": "السماح للضيوف بالتحكم بقائمة التشغيل"
},
"set-permission": "تغيير إذن التحكم",
"status": {
"disconnected": "قطع الاتصال",
"guest": "متصل كضيف",
"host": "متصل كمضيف"
}
},
"name": "الموسيقى معا [بيتا]",
"toast": {
"add-song-failed": "فشل في إضافة أغنية",
"closed": "تم إغلاق \"الموسيقى معا\"",
"disconnected": "تم قطع اتصال \"الموسيقى معًا\"",
"host-failed": "فشل في استضافة \"الموسيقى معا\"",
"id-copied": "تم نسخ معرف المضيف",
"id-copy-failed": "لم يتم نسخ معرف المضيف",
"join-failed": "فشل الانضمام إلى \"الموسيقى معا\"",
"joined": "تم الانضمام إلى \"الموسيقى معا\"",
"permission-changed": "تم تغيير إذن \"الموسيقى معًا\" إلى \"{{permission}}\"",
"remove-song-failed": "فشل في إزالة الأغنية",
"user-connected": "{{name}} انضم إلى \"الموسيقى معًا\"",
"user-disconnected": "{{name}} غادر \"الموسيقى معًا\""
}
},
"navigation": {
"description": "أسهم التنقل \"التالي/السابق\" مدمجة مباشرة في الواجهة، كما في متصفحك",
"name": "التنقل",
"templates": {
"back": {
"title": "العودة إلى الصفحة السابقة"
},
"forward": {
"title": "إذهب إلى الصفحة المقبلة"
}
}
},
"no-google-login": {
"description": "إزالة أزرار وروابط تسجيل الدخول بجوجل من الواجهة",
"name": "لا يوجد تسجيل دخول بجوجل"
},
"notifications": {
"description": "عرض إشعار عندما تبدأ الأغنية بالتشغيل (الإشعارات التفاعلية متوفرة على ويندوز)",
"menu": {
"interactive": "إشعارات تفاعلية",
"interactive-settings": {
"label": "إعدادات تفاعلية",
"submenu": {
"hide-button-text": "إخفاء زر النص",
"refresh-on-play-pause": "تحديث عند التشغيل/الإيقاف المؤقت",
"tray-controls": "فتح/إغلاق عند النقر على علامة الشريط"
}
},
"priority": "أولوية الإشعار",
"toast-style": "تنسيق التوست",
"unpause-notification": "إظهار إشعار عند استئناف التشغيل"
},
"name": "الإشعارات"
},
"performance-improvement": {
"description": "تحسين الأداء عبر تفعيل السكربتات التجريبية",
"name": "تحسين الأداء [بيتا]"
},
"picture-in-picture": {
"description": "يسمح بتحويل التطبيق إلى وضع الصورة داخل الصورة",
"menu": {
"always-on-top": "دائمًا في الأعلى",
"hotkey": {
"label": "مفتاح اختصار",
"prompt": {
"keybind-options": {
"hotkey": "مفتاح اختصار"
},
"label": "اختر مفتاح اختصار لتبديل وضع الصورة داخل الصورة",
"title": "مفتاح اختصار الصورة داخل الصورة"
}
},
"save-window-position": "حفظ موقع النافذة",
"save-window-size": "حفظ حجم النافذة",
"use-native-pip": "استخدام وضع الصورة داخل الصورة الأصلي للمتصفح"
},
"name": "الصورة داخل الصورة",
"templates": {
"button": "وضع الصورة داخل الصورة"
}
},
"playback-speed": {
"description": "استمع بسرعة، استمع ببطء! يضيف شريط تمرير يتحكم في سرعة الأغنية",
"name": "سرعة التشغيل",
"templates": {
"button": "السرعة"
}
},
"precise-volume": {
"description": "التحكم في مستوى الصوت بدقة باستخدام عجلة الفأرة/مفاتيح الاختصار، مع واجهة مستخدم مخصصة وقابلة للتخصيص وخطوات صوتية قابلة للتعديل",
"menu": {
"arrows-shortcuts": "عناصر التحكم بأسهم المفاتيح",
"custom-volume-steps": "تعيين خطوات صوتية خاصة",
"global-shortcuts": "مفاتيح اختصار عام"
},
"name": "مستوى صوت دقيق",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "تقليل مستوى الصوت",
"increase": "زيادة مستوى الصوت"
},
"label": "اختر اختصارات لوحة المفاتيح للتحكم بمستوى الصوت:",
"title": "اختصارات لوحة المفاتيح للتحكم بمستوى الصوت"
},
"volume-steps": {
"label": "اختر خطوات زيادة/تقليل مستوى الصوت",
"title": "خطوات زيادة الصوت"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "الجودة الحالية: {{quality}}",
"message": "اختر جودة الفيديو:",
"title": "اختر جودة الفيديو"
}
}
},
"description": "يسمح بتغيير جودة الفيديو باستخدام زر على صورة الفيديو",
"name": "مغير جودة الفيديو",
"renderer": {
"quality-settings-button": {
"label": "إفتح مغير الجودة"
}
}
},
"scrobbler": {
"description": "إضافة دعم Scrobbling (مثل Last.fm، ListenBrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "فشل المصادقة مع Last.fm\nإخفاء النافذة المنبثقة حتى إعادة التشغيل التالية.",
"title": "فشلت المصادقة"
}
}
},
"menu": {
"choose-download-folder": "اختر مكان التحميل"
"lastfm": {
"api-settings": "إعدادات Last.fm API"
},
"listenbrainz": {
"token": "أدخل رمز مستخدم ListenBrainz"
},
"scrobble-alternative-title": "استخدم عناوين بديلة",
"scrobble-other-media": "Scrobble الوسائط الأخرى"
},
"name": "أداة تتبع الاستماع",
"prompt": {
"lastfm": {
"api-key": "مفتاح Last.fm API",
"api-secret": "الرمز السري لـ Last.fm API"
},
"listenbrainz": {
"token": {
"label": "أدخل رمز مستخدم ListenBrainz الخاص بك:",
"title": "رمز ListenBrainz"
}
}
}
},
"shortcuts": {
"description": "يسمح بضبط اختصارات لوحة المفاتيح العالمية للتحكم في التشغيل (تشغيل/إيقاف مؤقت/التالي/السابق) وإيقاف تشغيل OSD الوسائط عن طريق تجاوز مفاتيح الوسائط، وتشغيل Ctrl/CMD + F للبحث، وتفعيل دعم Linux MPRIS لمفاتيح الوسائط، واختصارات مخصصة للمستخدمين المتقدمين",
"menu": {
"override-media-keys": "تجاوز مفاتيح الوسائط",
"set-keybinds": "تعيين عناصر التحكم بالأغاني"
},
"name": "الاختصارات (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "التالي",
"play-pause": "تشغيل/ إيقاف",
"previous": "السابق"
},
"label": "اختر اختصارات لوحة المفاتيح للتحكم في الأغاني:",
"title": "اختصارات لوحة المفاتيح العالمية"
}
}
},
"skip-disliked-songs": {
"description": "تخطي الأغاني غير المرغوب فيها",
"name": "تخطي الأغاني الغير مرغوب فيها"
},
"skip-silences": {
"description": "تخطي أقسام الصمت تلقائيًا في الأغاني",
"name": "تخطي فترات الصمت"
},
"sponsorblock": {
"description": "تخطي تلقائيًا الأجزاء غير الموسيقية مثل المقدمة/الختام أو أجزاء مقاطع الفيديو الموسيقية حيث لا يتم تشغيل الأغنية",
"name": "SponsorBlock"
},
"synced-lyrics": {
"description": "يوفر كلمات الأغاني المتزامنة باستخدام مزودين مثل LRClib.",
"errors": {
"fetch": "⚠️ حدث خطأ أثناء جلب كلمات الأغنية.\nيرجى المحاولة مرة أخرى لاحقًا.",
"not-found": "⚠️ لم يتم العثور على كلمات لهذه الأغنية."
},
"menu": {
"default-text-string": {
"label": "المسافة الافتراضي بين كلمات الأغاني",
"tooltip": "اختر الحرف الافتراضي لاستخدامه في الفجوة بين كلمات الأغنية"
},
"line-effect": {
"label": "تأثير الخط",
"submenu": {
"fancy": {
"label": "فاخر",
"tooltip": "استخدم تأثيرات كبيرة تشبه التطبيقات على السطر الحالي"
},
"focus": {
"label": "تركيز",
"tooltip": "اجعل السطر الحالي فقط باللون الأبيض"
},
"offset": {
"label": "مزاح",
"tooltip": "مزاح الى يمين السطر الحالي"
},
"scale": {
"label": "تحجيم",
"tooltip": "تكبير السطر الحالي"
}
},
"tooltip": "اختر التأثير لتطبيقه على السطر الحالي"
},
"precise-timing": {
"label": "اجعل كلمات الأغنية متزامنة بشكل مثالي",
"tooltip": "احسب بدقة الملي ثانية عرض السطر التالي (قد يكون له تأثير طفيف على الأداء)"
},
"romanization": {
"label": "اجعل الكلمات رومانية",
"tooltip": "إذا كانت كلمات الأغنية بلغة مختلفة، حاول عرض نسخة بالحروف اللاتينية."
},
"show-lyrics-even-if-inexact": {
"label": "أظهر كلمات الأغنية حتى لو كانت غير دقيقة",
"tooltip": "إذا لم يتم العثور على الأغنية، سوف يتم البحث مرة أخرى باستخدام استعلام بحث مختلف.\nقد لا تكون النتيجة من المحاولة الثانية دقيقة."
},
"show-time-codes": {
"label": "أظهر الرموز الزمنية",
"tooltip": "أظهر الرموز الزمنية بجانب كلمات الأغنية"
}
},
"name": "كلمات متزامنة",
"refetch-btn": {
"fetching": "جارٍ الجلب...",
"normal": "إعادة جلب كلمات الأغنية"
},
"warnings": {
"duration-mismatch": "⚠️ - قد تكون الكلمات غير متزامنة بسبب عدم تطابق المدة.",
"inexact": "⚠️ - قد لا تكون كلمات هذه الأغنية دقيقة",
"instrumental": "⚠️ - هذه أغنية آلية (بدون كلمات)"
}
},
"taskbar-mediacontrol": {
"description": "التحكم في المشغل من شريط المهام ويندوز",
"name": "التحكم بالوسائط من شريط المهام"
},
"touchbar": {
"description": "يضيف أداة TouchBar لمستخدمي macOS",
"name": "شريط اللمس (TouchBar)"
},
"tuna-obs": {
"description": "التكامل مع الإضافة\" Tuna\" الخاصة بـ OBS",
"name": "إضافة Tuna OBS"
},
"unobtrusive-player": {
"description": "يمنع المشغل من الظهور عند تشغيل أغنية",
"name": "مشغل غير مزعج"
},
"video-toggle": {
"description": "يضيف زرًا للتبديل بين وضع الفيديو/الأغنية. يمكن أيضًا اختياريًا إزالة علامة الفيديو بالكامل",
"menu": {
"align": {
"label": "المحاذاة",
"submenu": {
"left": "يسار",
"middle": "المنتصف",
"right": "يمين"
}
},
"force-hide": "إزالة علامة تبويب الفيديو",
"mode": {
"label": "وضع",
"submenu": {
"custom": "تبديل مخصص",
"disabled": "غير مفعل",
"native": "تبديل طبيعي"
}
}
},
"name": "تفعيل الفيديو",
"templates": {
"button-song": "أغنية",
"button-video": "فيديو"
}
},
"visualizer": {
"description": "يضيف معاينًا بصريًا للمشغل",
"menu": {
"visualizer-type": "نوع المعاينة المصرية"
},
"name": "معاين بصري"
}
}
}

126
src/i18n/resources/az.json Normal file
View File

@ -0,0 +1,126 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Plagini icra etmək mümkün olmadı {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plagin {{pluginName}}::{{contextName}} {{ms}} millisaniyədə icra edildi",
"initialize-failed": "\"{{pluginName}}\" plaginini başlatmaq mümkün olmadı",
"load-all": "Bütün plaginlər yüklənir",
"load-failed": "\"{{pluginName}}\" plaginini yükləmək mümkün olmadı",
"loaded": "\"{{pluginName}}\" plagini yükləndi",
"unload-failed": "\"{{pluginName}}\" plaqinini yükləmək mümkün olmadı",
"unloaded": "\"{{pluginName}}\" plaqini yükləmədən çıxarıldı"
}
}
},
"language": {
"code": "az",
"local-name": "Azərbaycan dili",
"name": "Azerbaijani"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Yükləmə tamamlandı. DevTools açıldı"
},
"i18n": {
"loaded": "i18n yükləndi"
},
"second-instance": {
"receive-command": "Protokol üzərindən əmr alındı: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS faylı \"{{cssFile}}\" mövcud deyil, nəzərə alınmır"
},
"unresponsive": {
"details": "Cavabsız Səhv!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Proqram keşi təmizlənir"
},
"window": {
"tried-to-render-offscreen": "Pəncərə ekran kənarında göstərilməyə çalışıldı, PəncərəÖlçüsü={{windowSize}}, EkranÖlçüsü={{displaySize}}, Vəziyyət={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menu gizlədildi, yenidən göstərmək üçün 'Alt' istifadə edin (Proqramiçi menu üçün 'Esc')",
"message": "Gizlət menusu aktivləşdirildi",
"title": "Gizlət menusu aktivləşdirildi"
},
"need-to-restart": {
"buttons": {
"later": "Sonra",
"restart-now": "Yenidən başlat"
},
"detail": "\"{{pluginName}}\" plaginin işləməsi üçün proqramı yenidən başladın",
"message": "\"{{pluginName}}\" üçün proqram yenidən başlamalıdır",
"title": "Yenidən başlatmaq tələb edilir"
},
"unresponsive": {
"buttons": {
"quit": "Tərk et",
"relaunch": "Yenidən işə sal",
"wait": "Gözləyin"
},
"detail": "Narahatçılıq üçün üzr istəyirik! Nə etməli olduğumuzu seçin:",
"message": "Proqram cavab vermir",
"title": "Pəncərə Cavab vermir"
},
"update-available": {
"buttons": {
"disable": "Yeniləmələri deaktiv et",
"download": "Yüklə",
"ok": "Oldu"
},
"detail": "Yeni versiya mövcuddur və bu linkdən yüklənə bilər {{downloadLink}}",
"message": "Yeni versiya mövcuddur",
"title": "Yeniləmə mövcuddur"
}
},
"menu": {
"about": "Haqqında",
"navigation": {
"label": "İstiqamət",
"submenu": {
"copy-current-url": "Hazırkı linki kopyala",
"go-back": "Geri qayıt",
"go-forward": "İrəli get",
"quit": ıx",
"restart": "Proqramı Yenidən Başlat"
}
},
"options": {
"label": "Seçimlər",
"submenu": {
"advanced-options": {
"label": "Əlavə seçimlər",
"submenu": {
"auto-reset-app-cache": "Proqram başlayanda keşi təmizlə",
"disable-hardware-acceleration": "Aparat təminatı sürətlənməsini deaktiv et",
"edit-config-json": "Config.json dəyiş",
"override-user-agent": "User-Agent dəyişdirildi",
"restart-on-config-changes": "Konfiqurasiya dəyişikliklərində yenidən başladılır",
"set-proxy": {
"label": "Proxy təyin et",
"prompt": {
"label": "Proxy Ünvanını daxil edin: (deaktiv etmək üçün boş buraxın)",
"placeholder": "Nümunə: SOCKS5://127.0.0.1:9999",
"title": "Proxy təyin et"
}
},
"toggle-dev-tools": "DevTools-u açıb bağla"
}
},
"always-on-top": "Həmişə üst tərəfdə",
"auto-update": "Avtomatik Yeniləmə",
"hide-menu": {
"dialog": {
"message": "Menu will be hidden on next launch, use [Alt] to show it (or backtick [`] if using in-app-menu)"
}
}
}
}
}
}
}

View File

@ -158,6 +158,14 @@
},
"remove-upgrade-button": "Премахване на \"Ъпгрейд\" бутона",
"theme": {
"dialog": {
"button": {
"cancel": "Отказ",
"remove": "Премахни"
},
"remove-theme": "Сигурни ли сте, че искате да премахнете персонализираната тема?",
"remove-theme-message": "Това ще премахне персонализираната тема"
},
"label": "Тема",
"submenu": {
"import-css-file": "Импортиране на потребителски CSS файл",
@ -172,7 +180,713 @@
"enabled": "Активирани",
"label": "Плъгини",
"new": "НОВО"
},
"view": {
"label": "Преглед",
"submenu": {
"force-reload": "Принудително презареждане",
"reload": "Презареди",
"reset-zoom": "Действителен размер",
"toggle-fullscreen": "Превключване на цял екран",
"zoom-in": "Увеличаване",
"zoom-out": "Намаляване"
}
}
},
"tray": {
"next": "Следващ",
"play-pause": "Възпроизвеждане/Пауза",
"previous": "Предишен",
"quit": "Изход",
"restart": "Рестартирай приложението",
"show": "Покажи прозорец",
"tooltip": {
"default": "YouTube Музика",
"with-song-info": "YouTube Музика: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Ако се пусне реклама, заглушава аудиото и задава скорост на възпроизвеждане 16x",
"name": "Ускоряване на рекламите"
},
"adblocker": {
"description": "Блокиране на всички реклами и проследяване по подразбиране",
"menu": {
"blocker": "Блокировач"
},
"name": "Блокировач на реклами"
},
"album-actions": {
"description": "Добавя бутони „Не харесвам“, „Харесвам“, „Харесано“ и „Премахване на харесване“, за да приложите това към всички песни в плейлист или албум",
"name": "Действия за албум"
},
"album-color-theme": {
"description": "Прилага динамична тема и визуални ефекти въз основа на цветовата палитра на албума",
"menu": {
"color-mix-ratio": {
"label": "Съотношение на смесване на цветовете",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Цветова тема на албума"
},
"ambient-mode": {
"description": "Прилага светлинен ефект, като проектира нежни цветове от видеото върху фона на екрана",
"menu": {
"blur-amount": {
"label": "Степен на замъгляване",
"submenu": {
"pixels": "{{blurAmount}} пиксела"
}
},
"buffer": {
"label": "Буферизация",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Непрозрачност",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Качество",
"submenu": {
"pixels": "{{quality}} пиксела"
}
},
"size": {
"label": "Размер",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Плавен преход",
"submenu": {
"during": "{{interpolationTime}} секунди"
}
},
"use-fullscreen": {
"label": "Използване на цял екран"
}
},
"name": "Атмосферен режим"
},
"amuse": {
"description": "Добавя поддръжка на YouTube Music за джаджата Amuse Now Play от 6K Labs",
"name": "Забавление",
"response": {
"query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента."
}
},
"api-server": {
"description": "Добавя API сървър за контрол на плейъра",
"dialog": {
"request": {
"buttons": {
"allow": "Разрешавам",
"deny": "Отказвам"
},
"message": "Позволяваш ли {{ID}} {{origin}} да достъпва API-то?",
"title": "Заявка за авторизация на API"
}
},
"menu": {
"auth-strategy": {
"label": "Стратегия за авторизация",
"submenu": {
"auth-at-first": {
"label": "Авторизиране при първата заявка"
},
"none": {
"label": "Без авторизация"
}
}
},
"hostname": {
"label": "Име на хост"
},
"port": {
"label": "Порт"
}
},
"name": "API сървър [Бета]",
"prompt": {
"hostname": {
"label": "Въведете името на хоста (като 0.0.0.0) за API сървъра:",
"title": "Име на хост"
},
"port": {
"label": "Въведете порта за API сървъра:",
"title": "Порт"
}
}
},
"audio-compressor": {
"description": "Прилага компресия на аудиото (намалява обема на най-силните части от сигнала и увеличава обема на най-тихите части)",
"name": "Аудио компресор"
},
"auth-proxy-adapter": {
"description": "Поддръжка за използване на услуги за удостоверяване чрез прокси",
"menu": {
"disable": "Деактивирай адаптера за удостоверяване чрез прокси",
"enable": "Активирай адаптера за удостоверяване чрез прокси",
"hostname": {
"label": "Име на хост"
},
"port": {
"label": "Порт"
}
},
"name": "Адаптер за удостоверяване чрез прокси",
"prompt": {
"hostname": {
"label": "Въведи име за локалния прокси сървър (необходимо е рестартиране):",
"title": "Име на прокси хост"
},
"port": {
"label": "Въведи порт за локалния прокси сървър (необходимо е рестартиране):",
"title": "Прокси порт"
}
}
},
"blur-nav-bar": {
"description": "Прави навигационната лента прозрачна и размазана",
"name": "Размазанa навигационна лента"
},
"bypass-age-restrictions": {
"description": "Избягване на възрастова верификация на YouTube",
"name": "Избягване на възрастови ограничения"
},
"captions-selector": {
"description": "Избор на надписи за аудио тракове в YouTube Music",
"menu": {
"autoload": "Автоматично избиране на последно използвания надпис",
"disable-captions": "Без надписи по подразбиране"
},
"name": "Избор на надписи",
"prompt": {
"selector": {
"label": "Език на надписи: {{language}}",
"none": "Нищо",
"title": "Избери език на надписите"
}
},
"templates": {
"title": "Отвори избора на надписи"
},
"toast": {
"caption-changed": "Надписите са сменени на {{language}}",
"caption-disabled": "Надписите са деактивирани",
"no-captions": "Няма налични надписи за тази песен"
}
},
"compact-sidebar": {
"description": "Винаги настройвай страничната лента в компактен режим",
"name": "Компактна странична лента"
},
"crossfade": {
"description": "Плавно преминаване през песните",
"menu": {
"advanced": "Разширено"
},
"name": "Плавно преминаване [Beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Продължителност на преливането (милисекунди)",
"fade-out-duration": "Продължителност на затихването (милисекунди)",
"fade-scaling": {
"label": "Скалиране на избледняването",
"linear": "Линейно",
"logarithmic": "Логаритмично"
},
"seconds-before-end": "Преливане N секунди преди края"
},
"title": "Опции за преливане"
}
}
},
"disable-autoplay": {
"description": "Започва песента в паузиран режим",
"menu": {
"apply-once": "Важи само на стартиране"
},
"name": "Изключи автоматичното пускане"
},
"discord": {
"backend": {
"already-connected": "Опит за свързване с активна връзка",
"connected": "Свързано с Discord",
"disconnected": "Прекъсната връзка с Discord"
},
"description": "Покажи на приятелите си какво слушате с Rich Presence",
"menu": {
"auto-reconnect": "Автоматично повторно свързване",
"clear-activity": "Изчистване на активността",
"clear-activity-after-timeout": "Изчистване на активността след изтичане на времето",
"connected": "Свързано",
"disconnected": "Прекъснато",
"hide-duration-left": "Скрий оставащото време",
"hide-github-button": "Скрий бутона за линк към GitHub",
"play-on-youtube-music": "Възпроизведи в YouTube Music",
"set-inactivity-timeout": "Задай таймаут за неактивност"
},
"name": "Дискорд Разширен статус",
"prompt": {
"set-inactivity-timeout": {
"label": "Въведете таймаута за неактивност в секунди:",
"title": "Задайте таймаут за неактивност"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "ОК"
},
"message": "Ох! Извинявайте, изтеглянето не успя…",
"title": "Грешка при изтегляне!"
},
"start-download-playlist": {
"buttons": {
"ok": "ОК"
},
"detail": "({{playlistSize}} песни)",
"message": "Изтегляне на плейлист {{playlistTitle}}",
"title": "Изтеглянето започна"
}
},
"feedback": {
"conversion-progress": "Конвертиране: {{percent}}%",
"converting": "Превръщане…",
"done": "Готово: {{filePath}}",
"download-info": "Изтегляне на {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Изтегляне: {{percent}}%",
"downloading": "Изтегляне…",
"downloading-counter": "Изтегляне {{current}}/{{total}}…",
"downloading-playlist": "Изтегляне на плейлист \"{{playlistTitle}}\" - {{playlistSize}} песни ({{playlistId}})",
"error-while-downloading": "Грешка при изтегляне на \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Папката {{playlistFolder}} вече съществува",
"getting-playlist-info": "Получаване на информация за плейлист…",
"loading": "Зареждане…",
"playlist-has-only-one-song": "Плейлистът съдържа само един елемент, изтегля се директно",
"playlist-id-not-found": "Не е намерен ID на плейлист",
"playlist-is-empty": "Плейлистът е празен",
"playlist-is-mix-or-private": "Грешка при получаване на информация за плейлист: уверете се, че не е частен или \"Смесено за вас\" плейлист\n\n{{error}}",
"preparing-file": "Подготвяне на файла…",
"saving": "Записване…",
"trying-to-get-playlist-id": "Опитвам се да получа ID на плейлист: {{playlistId}}",
"video-id-not-found": "Видео не е намерено",
"writing-id3": "Записване на ID3 тагове…"
}
},
"description": "Изтегля MP3 / източниково аудио директно от интерфейса",
"menu": {
"choose-download-folder": "Изберете папка за изтегляне",
"download-finish-settings": {
"label": "Изтегляне при завършване",
"prompt": {
"last-percent": "След x процента",
"last-seconds": "Последни x секунди",
"title": "Конфигурирайте кога да изтеглите"
},
"submenu": {
"advanced": "Разширени настройки",
"enabled": "Активирано",
"mode": "Режим на време",
"percent": "Процент",
"seconds": "Секунди"
}
},
"download-playlist": "Изтегляне на плейлист",
"presets": "Предварително зададени настройки",
"skip-existing": "Пропусни съществуващите файлове"
},
"name": "Изтегляч",
"renderer": {
"can-not-update-progress": "Не може да се актуализира напредъкът"
},
"templates": {
"button": "Изтегляне"
}
},
"equalizer": {
"description": "Добавя еквалайзер към плеъра",
"menu": {
"presets": {
"label": "Предварителни настройки",
"list": {
"bass-booster": "Усилвател на басове"
}
}
},
"name": "Еквалайзер"
},
"exponential-volume": {
"description": "Прави плъзгача за сила на звука експоненциален, така че да е по-лесно да се избират по-ниски нива на звук.",
"name": "Експоненциален звук"
},
"in-app-menu": {
"description": "Придава на меню баровете стилен, тъмен или с цвят на албума вид",
"menu": {
"hide-dom-window-controls": "Скрий контролните елементи на DOM прозореца"
},
"name": "Меню в приложението"
},
"lumiastream": {
"description": "Добавя поддръжка за Lumia Stream",
"name": "Lumia Stream [Бета]"
},
"lyrics-genius": {
"description": "Добавя поддръжка за текстове за повечето песни",
"menu": {
"romanized-lyrics": "Романизирани текстове"
},
"name": "Текстове от Genius",
"renderer": {
"fetched-lyrics": "Изтеглени текстове от Genius"
}
},
"music-together": {
"description": "Сподели плейлист с други. Когато хостът пусне песен, всички останали ще чуят същата песен",
"dialog": {
"enter-host": "Въведи ID на хоста"
},
"internal": {
"save": "Запазване",
"track-source": "Източник на трак",
"unknown-user": "Неизвестен потребител"
},
"menu": {
"click-to-copy-id": "Копирай ID на хост",
"close": "Затвори Music Together",
"connected-users": "Свързани потребители",
"disconnect": "Прекъсни Music Together",
"empty-user": "Няма свързани потребители",
"host": "Хост на Music Together",
"join": "Присъедини се към Music Together",
"permission": {
"all": "Позволи на гостите да управляват плейлист и плеър",
"host-only": "Само хостът може да управлява плейлист и плеър",
"playlist": "Позволи на гостите да управляват плейлист"
},
"set-permission": "Промени разрешението за управление",
"status": {
"disconnected": "Прекъснато",
"guest": "Свързан като гост",
"host": "Свързан като хост"
}
},
"name": "Music Together [Бета]",
"toast": {
"add-song-failed": "Неуспешно добавяне на песен",
"closed": "Music Together е затворена",
"disconnected": "Music Together е прекъсната",
"host-failed": "Неуспешно хостване на Music Together",
"id-copied": "ID на хоста е копиран в клипборда",
"id-copy-failed": "Неуспешно копиране на ID на хоста в клипборда",
"join-failed": "Неуспешно присъединяване към Music Together",
"joined": "Присъединен към Music Together",
"permission-changed": "Разрешението за Music Together е променено на \"{{permission}}\"",
"remove-song-failed": "Неуспешно премахване на песен",
"user-connected": "{{name}} се присъедини към Music Together",
"user-disconnected": "{{name}} напусна Music Together"
}
},
"navigation": {
"description": "Навигационни стрелки Напред/Назад, директно интегрирани в интерфейса, както в любимия ви браузър",
"name": "Навигация",
"templates": {
"back": {
"title": "Предишна страница"
},
"forward": {
"title": "Следваща страница"
}
}
},
"no-google-login": {
"description": "Премахни бутоните за вход с Google и връзките от интерфейса",
"name": "Няма вход с Google"
},
"notifications": {
"description": "Показване на известие при стартиране на песен (интерактивни известия са налични за Windows)",
"menu": {
"interactive": "Интерактивни известия",
"interactive-settings": {
"label": "Интерактивни настройки",
"submenu": {
"hide-button-text": "Скрий текста на бутоните",
"refresh-on-play-pause": "Обновяване при Възпроизвеждане/Пауза",
"tray-controls": "Отваряне/Затваряне при клик в тавата"
}
},
"priority": "Приоритет на известията",
"toast-style": "Стил на toast (кратки изскачащи известия)",
"unpause-notification": "Показване на известие при възобновяване"
},
"name": "Известия"
},
"performance-improvement": {
"description": "Подобри производителността като пуснеш експериментални скриптове",
"name": "Производителни подобрения"
},
"picture-in-picture": {
"description": "Позволява превключване на приложението в режим картинка във картинка",
"menu": {
"always-on-top": "Винаги на преден план",
"hotkey": {
"label": "Клавишна комбинация",
"prompt": {
"keybind-options": {
"hotkey": "Клавишна комбинация"
},
"label": "Изберете клавишна комбинация за превключване на картинка във картинка",
"title": "Клавишна комбинация за картинка във картинка"
}
},
"save-window-position": "Запомняне на позицията на прозореца",
"save-window-size": "Запомняне на размера на прозореца",
"use-native-pip": "Използвайте вградения картинка във картинка на браузера"
},
"name": "Картинка във картинка",
"templates": {
"button": "Картинка във картинка"
}
},
"playback-speed": {
"description": "Слушай бързо, слушай бавно! Добавя плъзгач, който управлява скоростта на песните",
"name": "Скорост на възпроизвеждане",
"templates": {
"button": "Скорост"
}
},
"precise-volume": {
"description": "Управлявайте прецизно силата на звука чрез колелото на мишката или бързи клавиши, с персонализиран HUD и настройвани нива на звука",
"menu": {
"arrows-shortcuts": "Локални контроли със стрелки",
"custom-volume-steps": "Задайте персонализирани нива на звука",
"global-shortcuts": "Глобални бързи клавиши"
},
"name": "Точна сила на звука",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Намаляване на звука",
"increase": "Усилване на звука"
},
"label": "Изберете глобални клавишни комбинации за сила на звука:",
"title": "Глобални клавишни комбинации за звук"
},
"volume-steps": {
"label": "Изберете стъпки за увеличаване/намаляване на звука",
"title": "Стъпки на звука"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Текущо качество: {{quality}}",
"message": "Изберете качество на видеото:",
"title": "Изберете качество на видеото"
}
}
},
"description": "Позволява промяна на качеството на видеото с бутон върху видеото",
"name": "Промяна на качеството на видеото",
"renderer": {
"quality-settings-button": {
"label": "Отвори настройките за качество на плейъра"
}
}
},
"scrobbler": {
"description": "Добавяне на скробблинг поддръжка (last.fm, Listenbrainz и т.н.)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Грешка при удостоверяване с Last.fm\nСкрий изкачащия прозорец до следващо пускане.",
"title": "Грешка при удостоверяване"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Настройки за Last.fm API"
},
"listenbrainz": {
"token": "Въведете ListenBrainz потребителски токен"
},
"scrobble-alternative-title": "Използвай алтернативни заглавия",
"scrobble-other-media": "Скробъл на други медии"
},
"name": "Скробълър",
"prompt": {
"lastfm": {
"api-key": "Last.fm API ключ",
"api-secret": "Last.fm API тайна"
},
"listenbrainz": {
"token": {
"label": "Въведете вашия ListenBrainz потребителски токен:",
"title": "ListenBrainz токен"
}
}
}
},
"shortcuts": {
"description": "Позволява задаване на глобални бързи клавиши за възпроизвеждане (пускане/пауза/следваща/предишна), изключване на медиен OSD чрез презаписване на медийни клавиши, включване на Ctrl/CMD + F за търсене, включване на Linux MPRIS поддръжка за медийни клавиши и персонализирани бързи клавиши за напреднали потребители",
"menu": {
"override-media-keys": "Презаписване на медийни клавиши",
"set-keybinds": "Задайте глобални контроли за песни"
},
"name": "Клавишни комбинации (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Следваща",
"play-pause": "Пусни / Пауза",
"previous": "Предишна"
},
"label": "Изберете глобални клавишни комбинации за контрол на песните:",
"title": "Глобални клавишни комбинации"
}
}
},
"skip-disliked-songs": {
"description": "Прескача нехаресаните песни",
"name": "Прескачане на нехаресани песни"
},
"skip-silences": {
"description": "Автоматично прескачане на тихи участъци в песните",
"name": "Прескачане на тишини"
},
"sponsorblock": {
"description": "Автоматично прескача не-музикални части като встъпление/изход или части от музикални клипове, където песента не се пуска",
"name": "SponsorBlock"
},
"synced-lyrics": {
"description": "Предоставя синхронизирани текстове на песни, използвайки доставчици като LRClib.",
"errors": {
"fetch": "⚠️\tВъзникна грешка при извличане на текста.\n\tМоля, опитайте по-късно.",
"not-found": "⚠️ За тази песен не са намерени текстове."
},
"menu": {
"default-text-string": {
"label": "Подразбиращ се знак между текстовете",
"tooltip": "Изберете знака, който да се използва за интервала между текстовете"
},
"line-effect": {
"label": "Линеен ефект",
"submenu": {
"fancy": {
"label": "Украсено",
"tooltip": "Използвайте големи, приложно-подобни ефекти на текущия ред"
},
"focus": {
"label": "Фокус",
"tooltip": "Направете само текущия ред бял"
},
"offset": {
"label": "Отместване",
"tooltip": "Отместване на текущия ред вдясно"
},
"scale": {
"label": "Мащаб",
"tooltip": "Мащабирайте текущия ред"
}
},
"tooltip": "Изберете ефекта, който да се приложи към текущия ред"
},
"precise-timing": {
"label": "Направете текстовете перфектно синхронизирани",
"tooltip": "Изчислете до милисекунда показването на следващия ред (може да има малък ефект върху производителността)"
},
"romanization": {
"label": "Романизиране на текстовете",
"tooltip": "Ако текстовете са на друг език, опитайте да покажете латинска версия."
},
"show-lyrics-even-if-inexact": {
"label": "Показване на текстовете, дори ако са неточни",
"tooltip": "Ако песента не бъде намерена, добавката се опитва отново с различен поисков запрос.\nРезултатът от втория опит може да не е точен."
},
"show-time-codes": {
"label": "Показване на временни кодове",
"tooltip": "Показване на временни кодове до текстовете"
}
},
"name": "Синхронизирани текстове",
"refetch-btn": {
"fetching": "Извличане...",
"normal": "Повторно извличане на текстовете"
},
"warnings": {
"duration-mismatch": "⚠️ - Текстовете може да не са синхронизирани поради несъответствие в продължителността.",
"inexact": "⚠️ - Текстовете за тази песен може да не са точни",
"instrumental": "⚠️ - Това е инструментална песен"
}
},
"taskbar-mediacontrol": {
"description": "Управление на възпроизвеждането от лентата с задачи на Windows",
"name": "Управление на медията от лентата със задачи"
},
"touchbar": {
"description": "Добавя уиджет за TouchBar за потребители на macOS",
"name": "TouchBar"
},
"tuna-obs": {
"description": "Интеграция с плъгина Tuna за OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Предотвратява изскачането на плеъра при възпроизвеждане на песен",
"name": "Неназойлив плеър"
},
"video-toggle": {
"description": "Добавя бутон за превключване между видео/песен режим. Също така може по избор да премахва целия раздел за видео",
"menu": {
"align": {
"label": "Подравняване",
"submenu": {
"left": "Ляво",
"middle": "В средата",
"right": "Дясно"
}
},
"force-hide": "Принудително премахване на раздела за видео",
"mode": {
"label": "Режим",
"submenu": {
"custom": "Персонализиран превключвател",
"disabled": "Изключено",
"native": "Вграден превключвател"
}
}
},
"name": "Превключване на видео",
"templates": {
"button-song": "Песен",
"button-video": "Видео"
}
},
"visualizer": {
"description": "Добавя визуализатор към плеъра",
"menu": {
"visualizer-type": "Тип визуализатор"
},
"name": "Визуализатор"
}
}
}

899
src/i18n/resources/bn.json Normal file
View File

@ -0,0 +1,899 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "প্লাগইন {{pluginName}}::{{contextName}} কার্যকর করতে ব্যর্থ হয়েছে",
"executed-at-ms": "প্লাগইন {{pluginName}}::{{contextName}} {{ms}}মিলিসেকেন্ডে কার্যকর হয়েছে",
"initialize-failed": "প্লাগইন \"{{pluginName}}\" চালু করতে ব্যর্থ হয়েছে",
"load-all": "সকল প্লাগইন লোড করা হচ্ছে",
"load-failed": "প্লাগইন \"{{pluginName}}\" লোড হতে ব্যর্থ হয়েছে",
"loaded": "প্লাগইন \"{{pluginName}}\" লোড হয়েছে",
"unload-failed": "প্লাগইন \"{{pluginName}}\" আনলোড করতে ব্যর্থ হয়েছে",
"unloaded": "প্লাগইন \"{{pluginName}}\" আনলোড হয়েছে"
}
}
},
"language": {
"code": "bn",
"local-name": "বাংলা",
"name": "Bengali"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "লোড সম্পন্ন হয়েছে। ডেভটুলস খোলা হয়েছে"
},
"i18n": {
"loaded": "i18n লোড হয়েছে"
},
"second-instance": {
"receive-command": "প্রোটোকলের মাধ্যমে কমান্ড গ্রহণ করা হয়েছে: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS ফাইল \"{{cssFile}}\" পাওয়া যায়নি, ইগনোর করা হয়েছে"
},
"unresponsive": {
"details": "অকার্যকর ত্রুটি!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "অ্যাপ ক্যাশ মুছে ফেলা হচ্ছে"
},
"window": {
"tried-to-render-offscreen": "উইন্ডোটি স্ক্রিনের বাইরে রেন্ডার করার চেষ্টা করেছে, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "মেনু লুকানো রয়েছে, দেখতে 'Alt' চাপুন ( অথবা ইন-অ্যাপ মেনু ব্যবহার করে থাকলে 'Escape' চাপুন )",
"message": "মেনু লুকান সক্রিয় করা হয়েছে",
"title": "মেনু লুকান সক্রিয় হয়েছে"
},
"need-to-restart": {
"buttons": {
"later": "পরে",
"restart-now": "রিস্টার্ট করুন"
},
"detail": "\"{{pluginName}}\" প্লাগইন কার্যকর করতে পুনরারম্ভ করতে হবে",
"message": "\"{{pluginName}}\" পুনরায় চালু করা প্রয়োজন",
"title": "পুনরায় চালু করা প্রয়োজন"
},
"unresponsive": {
"buttons": {
"quit": "বন্ধ করুন",
"relaunch": "পুনরায় চালু করুন",
"wait": "অপেক্ষা করুন"
},
"detail": "অসুবিধার জন্য আমরা দুঃখিত! অনুগ্রহ করে কী করতে চান তা নির্বাচন করুন:",
"message": "অ্যাপ্লিকেশনটি কাজ করছে না",
"title": "উইন্ডোটি কাজ করছে না"
},
"update-available": {
"buttons": {
"disable": "আপডেট বন্ধ করুন",
"download": "ডাউনলোড",
"ok": "ওকে"
},
"detail": "একটি নতুন ভার্সন এসেছে এবং এটি {{downloadLink}} থেকে ডাউনলোড করতে পারেন",
"message": "একটি নতুন ভার্সন এসেছে",
"title": "আপডেট করতে পারেন"
}
},
"menu": {
"about": "সম্পর্কে",
"navigation": {
"label": "নেভিগেশন",
"submenu": {
"copy-current-url": "বর্তমান URL কপি করুন",
"go-back": "পেছনে যান",
"go-forward": "সামনে যান",
"quit": "বন্ধ",
"restart": "অ্যাপ পুনরায় চালু করুন"
}
},
"options": {
"label": "অপশন",
"submenu": {
"advanced-options": {
"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": "ডেভ টুল চালু/বন্ধ"
}
},
"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": {
"label": "শুরুর পেজ",
"unset": "নির্ধারণ করা হয়নি"
},
"tray": {
"label": "ট্রে",
"submenu": {
"disabled": "ট্রে বন্ধ",
"enabled-and-hide-app": "ট্রে চালু ও অ্যাপ লুকান",
"enabled-and-show-app": "ট্রে চালু ও অ্যাপ দেখান",
"play-pause-on-click": "ট্রে ক্লিক করলে প্লে/পজ"
}
},
"visual-tweaks": {
"label": "দৃষ্টিনন্দন পরিবর্তন",
"submenu": {
"custom-window-title": {
"label": "কাস্টম উইন্ডো টাইটেল",
"prompt": {
"label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)",
"placeholder": "উদাহরণস্বরূপ: YouTube Music"
}
},
"like-buttons": {
"default": "ডিফল্ট লাইক বাটন",
"force-show": "সবসময় লাইক বাটন দেখান",
"hide": "লাইক বাটন লুকান",
"label": "লাইক বাটনের নিয়ন্ত্রণ"
},
"remove-upgrade-button": "আপগ্রেড বাটন সরান",
"theme": {
"dialog": {
"button": {
"cancel": "বাতিল",
"remove": "থিম সরান"
},
"remove-theme": "থিম সরাতে চান?",
"remove-theme-message": "এটি কাস্টম থিমটি বাদ দিয়ে দিবে"
},
"label": "থিম",
"submenu": {
"import-css-file": "CSS ফাইল ইমপোর্ট করুন",
"no-theme": "কোন থিম নেই"
}
}
}
}
}
},
"plugins": {
"enabled": "প্লাগইন চালু",
"label": "প্লাগইন",
"new": "নতুন প্লাগইন"
},
"view": {
"label": "দেখুন",
"submenu": {
"force-reload": "জোর করে রিফ্রেশ করুন",
"reload": "রিফ্রেশ করুন",
"reset-zoom": "জুম রিসেট করুন",
"toggle-fullscreen": "ফুলস্ক্রিন চালু/বন্ধ",
"zoom-in": "বড় করুন",
"zoom-out": "ছোট করুন"
}
}
},
"tray": {
"next": "নেক্সট",
"play-pause": "চালু/বন্ধ",
"previous": "পূর্ববর্তী",
"quit": "বন্ধ",
"restart": "অ্যাপ পুনরায় চালু করুন",
"show": "উইন্ডো দেখান",
"tooltip": {
"default": "ইউটিউব মিউজিক",
"with-song-info": "ইউটিউব মিউজিক: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "বিজ্ঞাপন চললে, এটি অডিও বন্ধ করে দেয় এবং প্লেব্যাক গতি ১৬ গুণ করে দেয়",
"name": "বিজ্ঞাপন দ্রুত করুন"
},
"adblocker": {
"description": "সব বিজ্ঞাপন ও ট্র্যাকিং শুরু থেকেই ব্লক করুন",
"menu": {
"blocker": "ব্লকার"
},
"name": "এড ব্লকার"
},
"album-actions": {
"description": "প্লেলিস্ট বা অ্যালবামের সব গানেই প্রয়োগ করতে আনডিসলাইক, ডিসলাইক, লাইক ও আনলাইক বাটন যোগ করে",
"name": "অ্যালবাম অ্যাকশনসমূহ"
},
"album-color-theme": {
"description": "অ্যালবামের রঙের উপর ভিত্তি করে ডাইনামিক থিম ও ভিজ্যুয়াল ইফেক্ট প্রয়োগ করুন",
"menu": {
"color-mix-ratio": {
"label": "কালার মিক্স রেশিও",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "এলবাম এর কালার থিম"
},
"ambient-mode": {
"description": "ভিডিও থেকে নরম আলো ছড়িয়ে আপনার স্ক্রিনের ব্যাকগ্রাউন্ডে লাইটিং ইফেক্ট প্রয়োগ করে",
"menu": {
"blur-amount": {
"label": "ব্লার এর পরিমাণ",
"submenu": {
"pixels": "{{blurAmount}} পিক্সেল"
}
},
"buffer": {
"label": "বাফার",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "স্বচ্ছতা",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "কোয়ালিটি",
"submenu": {
"pixels": "{{quality}}পিক্সেল"
}
},
"size": {
"label": "আকার",
"submenu": {
"percent": "{{size}}শতাংশ"
}
},
"smoothness-transition": {
"label": "মসৃণ রূপান্তর",
"submenu": {
"during": "{{interpolationTime}} সেকেন্ড সময়কালে"
}
},
"use-fullscreen": {
"label": "পূর্ণপর্দা ব্যবহার করা"
}
},
"name": "পরিবেষ্টিত মোড"
},
"amuse": {
"description": "ইউটিউব মিউজিকে অ্যামিউজ সমর্থন যোগ করা হয়েছে যা এখন ৬কে ল্যাবস উইজেটে চলছে",
"name": "মনোরঞ্জন",
"response": {
"query": "অ্যামিউজ API সার্ভার চলছে। /query ব্যবহার করে গান সম্পর্কিত তথ্য পান।"
}
},
"api-server": {
"description": "প্লেয়ার নিয়ন্ত্রণের জন্য একটি API সার্ভার যোগ করা হয়েছে",
"dialog": {
"request": {
"buttons": {
"allow": "অনুমতি দিন",
"deny": "অস্বীকার করা"
},
"message": "{{ID}} ({{origin}}) কে API ব্যবহারের অনুমতি দিবেন?",
"title": "API অথোরাইজ এর অনুরোধ"
}
},
"menu": {
"auth-strategy": {
"label": "অথোরাইজেশন স্ট্র্যাটেজি",
"submenu": {
"auth-at-first": {
"label": "প্রথম অনুরোধে অথোরাইজ করুন"
},
"none": {
"label": "কোন অথোরাইজেশন নেই"
}
}
},
"hostname": {
"label": "হোস্টনেম"
},
"port": {
"label": "পোর্ট"
}
},
"name": "API সার্ভার [বেটা]",
"prompt": {
"hostname": {
"label": "API সার্ভারের জন্য হোস্টনেম (যেমন 0.0.0.0) লিখুন:",
"title": "হোস্টনেম"
},
"port": {
"label": "API সার্ভারের জন্য পোর্ট লিখুন:",
"title": "পোর্ট"
}
}
},
"audio-compressor": {
"description": "অডিওতে কম্প্রেশন প্রয়োগ করুন (উচ্চতর শব্দের অংশগুলোর ভলিউম কমিয়ে দেয় এবং নীরবতম অংশগুলোর ভলিউম বাড়িয়ে দেয়)",
"name": "অডিও কম্প্রেসর"
},
"auth-proxy-adapter": {
"description": "অথেনটিকেশন প্রক্সি সার্ভিস ব্যবহারের সাপোর্ট",
"menu": {
"disable": "প্রক্সি অ্যাডাপ্টার বন্ধ করুন",
"enable": "প্রক্সি অ্যাডাপ্টার চালু করুন",
"hostname": {
"label": "হোস্টনেম"
},
"port": {
"label": "পোর্ট"
}
},
"name": "অথেনটিকেশন প্রক্সি অ্যাডাপ্টার",
"prompt": {
"hostname": {
"label": "লোকাল প্রক্সি সার্ভারের জন্য হোস্টনেম লিখুন (পুনরায় চালু করতে হবে):",
"title": "প্রক্সি হোস্টনেম"
},
"port": {
"label": "লোকাল প্রক্সি সার্ভারের জন্য পোর্ট লিখুন (পুনরায় চালু করতে হবে):",
"title": "প্রক্সি পোর্ট"
}
}
},
"blur-nav-bar": {
"description": "নেভিগেশন বারকে স্বচ্ছ এবং ঝাপসা করে",
"name": "নেভিগেশন বার ঝাপসা করুন"
},
"bypass-age-restrictions": {
"description": "ইউটিউবের বয়স যাচাইকরণ এড়িয়ে যান",
"name": "বয়স সীমাবদ্ধতা এড়ান"
},
"captions-selector": {
"description": "ইউটিউব মিউজিক অডিও ট্র্যাকের জন্য ক্যাপশন নির্বাচক",
"menu": {
"autoload": "সর্বশেষ ব্যবহৃত ক্যাপশন স্বয়ংক্রিয়ভাবে নির্বাচন করুন",
"disable-captions": "ডিফল্টভাবে কোন ক্যাপশন নেই"
},
"name": "ক্যাপশন নির্বাচক",
"prompt": {
"selector": {
"label": "বর্তমান ক্যাপশন ভাষা: {{language}}",
"none": "কোনোটি নয়",
"title": "ক্যাপশন ভাষা নির্বাচন করুন"
}
},
"templates": {
"title": "ক্যাপশন নির্বাচক খুলুন"
},
"toast": {
"caption-changed": "ক্যাপশন {{language}} ভাষায় পরিবর্তিত হয়েছে",
"caption-disabled": "ক্যাপশন বন্ধ করা হয়েছে",
"no-captions": "এই গানটির জন্য কোনো ক্যাপশন উপলব্ধ নেই"
}
},
"compact-sidebar": {
"description": "সাইডবারকে সবসময় কম্প্যাক্ট মোডে সেট করুন",
"name": "কম্প্যাক্ট সাইডবার"
},
"crossfade": {
"description": "গানগুলির মধ্যে ক্রসফেড করুন",
"menu": {
"advanced": "এডভান্স"
},
"name": "ক্রসফেড [বেটা]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "ফেড-ইন সময়কাল (ms)",
"fade-out-duration": "ফেড-আউট সময়কাল (ms)",
"fade-scaling": {
"label": "ফেড স্কেলিং",
"linear": "রৈখিক",
"logarithmic": "লগারিদমিক"
},
"seconds-before-end": "শেষ হওয়ার N সেকেন্ড আগে ক্রসফেড করুন"
},
"title": "ক্রসফেড অপশনসমূহ"
}
}
},
"disable-autoplay": {
"description": "গান \"পজ\" মোডে শুরু করে",
"menu": {
"apply-once": "শুধুমাত্র স্টার্টআপে প্রয়োগ হয়"
},
"name": "অটোপ্লে বন্ধ করুন"
},
"discord": {
"backend": {
"already-connected": "একটিভ সংযোগের সাথে সংযোগ করার চেষ্টা করা হয়েছে",
"connected": "ডিসকর্ডের সাথে সংযুক্ত",
"disconnected": "ডিসকর্ড থেকে সংযোগ বিচ্ছিন্ন"
},
"description": "রিচ প্রেজেন্স ব্যবহার করে আপনি কি শুনছেন তা আপনার বন্ধুদের দেখান",
"menu": {
"auto-reconnect": "স্বয়ংক্রিয় রিকানেক্ট",
"clear-activity": "কার্যকলাপ মুছুন",
"clear-activity-after-timeout": "সময়সীমা শেষ হওয়ার পরে কার্যকলাপ মুছুন",
"connected": "সংযুক্ত",
"disconnected": "সংযোগ বিচ্ছিন্ন",
"hide-duration-left": "অবশিষ্ট সময় লুকান",
"hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান",
"play-on-youtube-music": "ইউটিউব মিউজিকে চালান",
"set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন"
},
"name": "ডিসকর্ড রিচ প্রেজেন্স",
"prompt": {
"set-inactivity-timeout": {
"label": "নিষ্ক্রিয়তার সময়সীমা সেকেন্ডে লিখুন:",
"title": "নিষ্ক্রিয়তার সময়সীমা সেট করুন"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "ঠিক আছে"
},
"message": "আহ! দুঃখিত, ডাউনলোড ব্যর্থ হয়েছে…",
"title": "ডাউনলোডে সমস্যা!"
},
"start-download-playlist": {
"buttons": {
"ok": "ঠিক আছে"
},
"detail": "({{playlistSize}} টি গান)",
"message": "প্লেলিস্ট {{playlistTitle}} ডাউনলোড করা হচ্ছে",
"title": "ডাউনলোড শুরু হয়েছে"
}
},
"feedback": {
"conversion-progress": "রূপান্তর: {{percent}}%",
"converting": "রূপান্তর করা হচ্ছে…",
"done": "সম্পন্ন: {{filePath}}",
"download-info": "ডাউনলোড হচ্ছে {{artist}} - {{title}} [{{videoId}}",
"download-progress": "ডাউনলোড: {{percent}}%",
"downloading": "ডাউনলোড হচ্ছে…",
"downloading-counter": "ডাউনলোড হচ্ছে {{current}}/{{total}}…",
"downloading-playlist": "প্লেলিস্ট \"{{playlistTitle}}\" - {{playlistSize}}টি গান ({{playlistId}}) ডাউনলোড হচ্ছে",
"error-while-downloading": "\"{{author}} - {{title}}\" ডাউনলোড করতে সমস্যা: {{error}}",
"folder-already-exists": "{{playlistFolder}} ফোল্ডারটি ইতিমধ্যে বিদ্যমান",
"getting-playlist-info": "প্লেলিস্ট তথ্য নেওয়া হচ্ছে…",
"loading": "লোড হচ্ছে…",
"playlist-has-only-one-song": "প্লেলিস্টে শুধুমাত্র একটি আইটেম আছে, সরাসরি ডাউনলোড করা হচ্ছে",
"playlist-id-not-found": "কোনো প্লেলিস্ট আইডি পাওয়া যায়নি",
"playlist-is-empty": "প্লেলিস্ট খালি",
"playlist-is-mix-or-private": "প্লেলিস্ট তথ্য পেতে সমস্যা: নিশ্চিত করুন এটি প্রাইভেট বা \"আপনার জন্য মিক্সড\" প্লেলিস্ট নয়\n\n{{error}}",
"preparing-file": "ফাইল প্রস্তুত করা হচ্ছে…",
"saving": "সংরক্ষণ করা হচ্ছে…",
"trying-to-get-playlist-id": "প্লেলিস্ট আইডি পাওয়ার চেষ্টা করা হচ্ছে: {{playlistId}}",
"video-id-not-found": "ভিডিও পাওয়া যায়নি",
"writing-id3": "ID3 ট্যাগ লেখা হচ্ছে…"
}
},
"description": "ইন্টারফেস থেকে সরাসরি MP3 / উৎস অডিও ডাউনলোড করে",
"menu": {
"choose-download-folder": "ডাউনলোড ফোল্ডার বেছে নিন",
"download-finish-settings": {
"label": "শেষ হলে ডাউনলোড করুন",
"prompt": {
"last-percent": "x শতাংশ পরে",
"last-seconds": "শেষ x সেকেন্ড",
"title": "কখন ডাউনলোড করবেন তা কনফিগার করুন"
},
"submenu": {
"advanced": "উন্নত",
"enabled": "সক্রিয়",
"mode": "টাইম মোড",
"percent": "শতাংশ",
"seconds": "সেকেন্ড"
}
},
"download-playlist": "প্লেলিস্ট ডাউনলোড করুন",
"presets": "প্রিসেট",
"skip-existing": "বিদ্যমান ফাইলগুলি এড়িয়ে যান"
},
"name": "ডাউনলোডার",
"renderer": {
"can-not-update-progress": "প্রগ্রেস আপডেট করা যাচ্ছে না"
},
"templates": {
"button": "ডাউনলোড"
}
},
"equalizer": {
"description": "প্লেয়ারে একটি ইকুয়ালাইজার যোগ করে",
"menu": {
"presets": {
"label": "প্রিসেট",
"list": {
"bass-booster": "বেস বুস্টার"
}
}
},
"name": "ইকুয়ালাইজার"
},
"exponential-volume": {
"description": "ভলিউম স্লাইডারকে এক্সপোটেনশিয়াল করে তোলে যাতে কম ভলিউম নির্বাচন করা সহজ হয়।",
"name": "এক্সপোটেনশিয়াল ভলিউম"
},
"in-app-menu": {
"description": "মেনু-বারগুলোকে আকর্ষণীয়, গাঢ় বা অ্যালবাম-রঙের চেহারা দেয়",
"menu": {
"hide-dom-window-controls": "DOM উইন্ডো কন্ট্রোলগুলো লুকান"
},
"name": "অ্যাপ-ভিতরের মেনু"
},
"lumiastream": {
"description": "লুমিয়া স্ট্রিম সমর্থন যোগ করে",
"name": "লুমিয়া স্ট্রিম [বেটা]"
},
"lyrics-genius": {
"description": "বেশিরভাগ গানের জন্য লিরিক্স সমর্থন যোগ করে",
"menu": {
"romanized-lyrics": "রোমানাইজড লিরিক্স"
},
"name": "লিরিক্স জিনিয়াস",
"renderer": {
"fetched-lyrics": "জিনিয়াসের জন্য লিরিক্স সংগ্রহ করা হয়েছে"
}
},
"music-together": {
"description": "অন্যদের সাথে প্লেলিস্ট শেয়ার করুন। যখন হোস্ট একটি গান বাজায়, অন্য সবাই একই গানটি শুনবে",
"dialog": {
"enter-host": "হোস্ট আইডি লিখুন"
},
"internal": {
"save": "সংরক্ষণ করুন",
"track-source": "ট্র্যাক উৎস",
"unknown-user": "অজানা ব্যবহারকারী"
},
"menu": {
"click-to-copy-id": "হোস্ট আইডি কপি করুন",
"close": "মিউজিক টুগেদার বন্ধ করুন",
"connected-users": "সংযুক্ত ব্যবহারকারীরা",
"disconnect": "মিউজিক টুগেদার সংযোগ বিচ্ছিন্ন করুন",
"empty-user": "কোন সংযুক্ত ব্যবহারকারী নেই",
"host": "মিউজিক টুগেদার হোস্ট",
"join": "মিউজিক টুগেদারে যোগ দিন",
"permission": {
"all": "অতিথিদের প্লেলিস্ট এবং প্লেয়ার নিয়ন্ত্রণ করতে দিন",
"host-only": "শুধুমাত্র হোস্ট প্লেলিস্ট এবং প্লেয়ার নিয়ন্ত্রণ করতে পারবেন",
"playlist": "অতিথিদের প্লেলিস্ট নিয়ন্ত্রণ করতে দিন"
},
"set-permission": "নিয়ন্ত্রণ অনুমতি পরিবর্তন করুন",
"status": {
"disconnected": "সংযোগ বিচ্ছিন্ন",
"guest": "অতিথি হিসাবে সংযুক্ত",
"host": "হোস্ট হিসাবে সংযুক্ত"
}
},
"name": "মিউজিক টুগেদার [বেটা]",
"toast": {
"add-song-failed": "গান যোগ করা ব্যর্থ হয়েছে",
"closed": "মিউজিক টুগেদার বন্ধ হয়েছে",
"disconnected": "মিউজিক টুগেদার সংযোগ বিচ্ছিন্ন হয়েছে",
"host-failed": "মিউজিক টুগেদার হোস্ট করা ব্যর্থ হয়েছে",
"id-copied": "হোস্ট আইডি ক্লিপবোর্ডে কপি করা হয়েছে",
"id-copy-failed": "হোস্ট আইডি ক্লিপবোর্ডে কপি করা ব্যর্থ হয়েছে",
"join-failed": "মিউজিক টুগেদারে যোগদান ব্যর্থ হয়েছে",
"joined": "মিউজিক টুগেদারে যোগ দেওয়া হয়েছে",
"permission-changed": "মিউজিক টুগেদার অনুমতি \"{{permission}}\" এ পরিবর্তন করা হয়েছে",
"remove-song-failed": "গান সরানো ব্যর্থ হয়েছে",
"user-connected": "{{name}} মিউজিক টুগেদারে যোগ দিয়েছেন",
"user-disconnected": "{{name}} মিউজিক টুগেদার ছেড়ে চলে গেছেন"
}
},
"navigation": {
"description": "পরবর্তী/পূর্ববর্তী নেভিগেশন তীরগুলি আপনার প্রিয় ব্রাউজারের মতো সরাসরি ইন্টারফেসে অন্তর্ভুক্ত করা হয়েছে",
"name": "নেভিগেশন",
"templates": {
"back": {
"title": "আগের পাতায় যান"
},
"forward": {
"title": "পরের পাতায় যান"
}
}
},
"no-google-login": {
"description": "ইন্টারফেস থেকে Google লগইন বাটন এবং লিঙ্কগুলি সরান",
"name": "গুগল লগইন নয়"
},
"notifications": {
"description": "একটি গান বাজতে শুরু হলে একটি বিজ্ঞপ্তি প্রদর্শন করে (উইন্ডোজে ইন্টারঅ্যাকটিভ বিজ্ঞপ্তিগুলি উপলব্ধ)",
"menu": {
"interactive": "ইন্টারঅ্যাকটিভ বিজ্ঞপ্তিসমূহ",
"interactive-settings": {
"label": "ইন্টারঅ্যাকটিভ সেটিংস",
"submenu": {
"hide-button-text": "বাটন টেক্সট লুকান",
"refresh-on-play-pause": "প্লে/পজে রিফ্রেশ করুন",
"tray-controls": "ট্রে ক্লিকে খুলুন/বন্ধ করুন"
}
},
"priority": "বিজ্ঞপ্তি অগ্রাধিকার",
"toast-style": "টোস্ট স্টাইল",
"unpause-notification": "বিরতি থেকে ফিরলে বিজ্ঞপ্তি দেখান"
},
"name": "বিজ্ঞপ্তিসমূহ"
},
"performance-improvement": {
"description": "পরীক্ষামূলক স্ক্রিপ্টগুলি সক্ষম করে পারফরম্যান্স উন্নত করুন",
"name": "পারফরম্যান্স উন্নতিকরণ [বেটা]"
},
"picture-in-picture": {
"description": "অ্যাপকে পিকচার-ইন-পিকচার মোডে স্যুইচ করতে অনুমতি দেয়",
"menu": {
"always-on-top": "সবসময় উপরে",
"hotkey": {
"label": "হটকি",
"prompt": {
"keybind-options": {
"hotkey": "হটকি"
},
"label": "পিকচার-ইন-পিকচার টগল করার জন্য একটি হটকি নির্বাচন করুন",
"title": "পিকচার-ইন-পিকচার হটকি"
}
},
"save-window-position": "উইন্ডো অবস্থান সংরক্ষণ করুন",
"save-window-size": "উইন্ডো আকার সংরক্ষণ করুন",
"use-native-pip": "ব্রাউজারের নেটিভ PiP ব্যবহার করুন"
},
"name": "পিকচার-ইন-পিকচার",
"templates": {
"button": "পিকচার-ইন-পিকচার"
}
},
"playback-speed": {
"description": "দ্রুত শুনুন, ধীরে শুনুন! গানের গতি নিয়ন্ত্রণ করার জন্য একটি স্লাইডার যোগ করে",
"name": "প্লেব্যাক স্পিড",
"templates": {
"button": "গতি"
}
},
"precise-volume": {
"description": "মাউসহুইল/হটকি ব্যবহার করে সঠিকভাবে ভলিউম নিয়ন্ত্রণ করুন, কাস্টম HUD এবং কাস্টমাইজযোগ্য ভলিউম স্টেপ সহ",
"menu": {
"arrows-shortcuts": "লোকাল অ্যারো-কি কন্ট্রোল",
"custom-volume-steps": "কাস্টম ভলিউম স্টেপ সেট করুন",
"global-shortcuts": "গ্লোবাল হটকি"
},
"name": "নির্ভুল ভলিউম",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "ভলিউম কমান",
"increase": "ভলিউম বাড়ান"
},
"label": "গ্লোবাল ভলিউম কিবাইন্ড নির্বাচন করুন:",
"title": "গ্লোবাল ভলিউম কিবাইন্ড"
},
"volume-steps": {
"label": "ভলিউম বৃদ্ধি/হ্রাস স্টেপ নির্বাচন করুন",
"title": "ভলিউম স্টেপস"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "বর্তমান কোয়ালিটি: {{quality}}",
"message": "ভিডিও কোয়ালিটি নির্বাচন করুন:",
"title": "ভিডিও কোয়ালিটি নির্বাচন করুন"
}
}
},
"description": "ভিডিও ওভারলেতে একটি বাটনের মাধ্যমে ভিডিও কোয়ালিটি পরিবর্তন করতে দেয়",
"name": "ভিডিও কোয়ালিটি পরিবর্তক",
"renderer": {
"quality-settings-button": {
"label": "প্লেয়ারের মান পরিবর্তনের অপশন খুলুন"
}
}
},
"scrobbler": {
"description": "স্ক্রবলিং সমর্থন যোগ করুন (যেমন last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Last.fm এর সাথে প্রমাণীকরণ ব্যর্থ হয়েছে\nপরবর্তী পুনরায় চালু না হওয়া পর্যন্ত পপআপ লুকান।",
"title": "প্রমাণীকরণ ব্যর্থ হয়েছে"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Last.fm API সেটিংস"
},
"listenbrainz": {
"token": "ListenBrainz ব্যবহারকারী টোকেন লিখুন"
},
"scrobble-alternative-title": "বিকল্প শিরোনাম ব্যবহার করুন",
"scrobble-other-media": "অন্যান্য মিডিয়া স্ক্রবল করুন"
},
"name": "স্ক্রবলার",
"prompt": {
"lastfm": {
"api-key": "Last.fm API কি",
"api-secret": "Last.fm API সিক্রেট"
},
"listenbrainz": {
"token": {
"label": "আপনার ListenBrainz ব্যবহারকারী টোকেন লিখুন:",
"title": "ListenBrainz টোকেন"
}
}
}
},
"shortcuts": {
"description": "প্লেব্যাকের জন্য গ্লোবাল হটকি (প্লে/পজ/পরবর্তী/পূর্ববর্তী) সেট করতে এবং মিডিয়া কী ওভাররাইড করে মিডিয়া OSD বন্ধ করতে, Ctrl/CMD + F চালু করে অনুসন্ধান করতে, মিডিয়া কীগুলির জন্য Linux MPRIS সমর্থন চালু করতে এবং অ্যাডভান্সড ব্যবহারকারীদের জন্য কাস্টম হটকি সেট করতে অনুমতি দেয়",
"menu": {
"override-media-keys": "মিডিয়া কী ওভাররাইড করুন",
"set-keybinds": "গ্লোবাল গান কন্ট্রোল সেট করুন"
},
"name": "শর্টকাট (এবং MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "পরবর্তী",
"play-pause": "চালান / বিরতি",
"previous": "পূর্ববর্তী"
},
"label": "গান নিয়ন্ত্রণের জন্য গ্লোবাল কিবাইন্ড নির্বাচন করুন:",
"title": "গ্লোবাল কিবাইন্ড"
}
}
},
"skip-disliked-songs": {
"description": "পছন্দ হয়নি এমন গানগুলো এড়িয়ে যায়",
"name": "অপছন্দ গান এড়ান"
},
"skip-silences": {
"description": "স্বয়ংক্রিয়ভাবে গানের নীরব অংশগুলো এড়িয়ে যান",
"name": "নীরবতা এড়িয়ে যান"
},
"sponsorblock": {
"description": "স্বয়ংক্রিয়ভাবে ইন্ট্রো/আউটট্রো বা মিউজিক ভিডিওর যেসব অংশে গান বাজছে না সেগুলি এড়িয়ে যায়",
"name": "স্পনসরব্লক"
},
"synced-lyrics": {
"description": "LRClib এর মত প্রোভাইডার ব্যবহার করে গানের সাথে সিঙ্ক করা লিরিক্স প্রদান করে।",
"errors": {
"fetch": "⚠️\tলিরিক্স আনার সময় একটি ত্রুটি ঘটেছে।\n\tঅনুগ্রহ করে পরে আবার চেষ্টা করুন।",
"not-found": "⚠️ এই গানের জন্য কোন লিরিক্স পাওয়া যায়নি।"
},
"menu": {
"default-text-string": {
"label": "লিরিক্সের মাঝে ডিফল্ট অক্ষর",
"tooltip": "লিরিক্সের মধ্যে ফাঁকের জন্য ব্যবহৃত ডিফল্ট অক্ষর নির্বাচন করুন"
},
"line-effect": {
"label": "লাইন ইফেক্ট",
"submenu": {
"fancy": {
"label": "ফ্যান্সি",
"tooltip": "বর্তমান লাইনে বড়, অ্যাপের মত ইফেক্ট ব্যবহার করুন"
},
"focus": {
"label": "ফোকাস",
"tooltip": "শুধুমাত্র বর্তমান লাইনটি সাদা করুন"
},
"offset": {
"label": "অফসেট",
"tooltip": "বর্তমান লাইনকে ডানদিকে অফসেট করুন"
},
"scale": {
"label": "স্কেল",
"tooltip": "বর্তমান লাইন স্কেল করুন"
}
},
"tooltip": "বর্তমান লাইনে প্রয়োগ করার জন্য ইফেক্ট নির্বাচন করুন"
},
"precise-timing": {
"label": "লিরিক্স পুরোপুরি সিঙ্ক করুন",
"tooltip": "পরবর্তী লাইন প্রদর্শনের মিলিসেকেন্ড পর্যন্ত গণনা করুন (পারফরম্যান্সে সামান্য প্রভাব পড়তে পারে)"
},
"romanization": {
"label": "লিরিক্স রোমানাইজ করুন",
"tooltip": "যদি লিরিক্স ভিন্ন ভাষায় হয়, তাহলে একটি ল্যাটিন সংস্করণ প্রদর্শন করার চেষ্টা করুন।"
},
"show-lyrics-even-if-inexact": {
"label": "অনির্ভুল হলেও লিরিক্স দেখান",
"tooltip": "যদি গানটি না পাওয়া যায়, প্লাগইনটি একটি ভিন্ন অনুসন্ধান কোয়েরি দিয়ে আবার চেষ্টা করে।\nদ্বিতীয় প্রচেষ্টার ফলাফল সঠিক নাও হতে পারে।"
},
"show-time-codes": {
"label": "টাইম কোড দেখান",
"tooltip": "লিরিক্সের পাশে টাইম কোড দেখান"
}
},
"name": "সিঙ্ক করা লিরিক্স",
"refetch-btn": {
"fetching": "আনছে..।",
"normal": "লিরিক্স পুনরায় আনুন"
},
"warnings": {
"duration-mismatch": "⚠️ - সময়কাল মিলে না যাওয়ার কারণে লিরিক্স সিঙ্ক হতে নাও পারে।",
"inexact": "⚠️ - এই গানের লিরিক্স সঠিক নাও হতে পারে",
"instrumental": "⚠️ - এটি একটি ইনস্ট্রুমেন্টাল গান"
}
},
"taskbar-mediacontrol": {
"description": "উইন্ডোজ টাস্কবার থেকে প্লেব্যাক নিয়ন্ত্রণ করুন",
"name": "টাস্কবার মিডিয়া কন্ট্রোল"
},
"touchbar": {
"description": "macOS ব্যবহারকারীদের জন্য একটি টাচবার উইজেট যোগ করে",
"name": "টাচবার"
},
"tuna-obs": {
"description": "OBS এর প্লাগইন টুনার সাথে সংযোগ",
"name": "টুনা OBS"
},
"unobtrusive-player": {
"description": "গান চালানোর সময় প্লেয়ারকে পপ আপ হওয়া থেকে বিরত রাখে",
"name": "অনাড়ম্বর প্লেয়ার"
},
"video-toggle": {
"description": "ভিডিও/গান মোডের মধ্যে স্যুইচ করার জন্য একটি বাটন যোগ করে। ঐচ্ছিকভাবে সম্পূর্ণ ভিডিও ট্যাবও সরাতে পারে",
"menu": {
"align": {
"label": "সারিবদ্ধকরণ",
"submenu": {
"left": "বাম",
"middle": "মাঝখানে",
"right": "ডান"
}
},
"force-hide": "জোর করে ভিডিও ট্যাব সরান",
"mode": {
"label": "মোড",
"submenu": {
"custom": "কাস্টম টগল",
"disabled": "নিষ্ক্রিয়",
"native": "নেটিভ টগল"
}
}
},
"name": "ভিডিও টগল",
"templates": {
"button-song": "গান",
"button-video": "ভিডিও"
}
},
"visualizer": {
"description": "প্লেয়ারে একটি ভিজ্যুয়ালাইজার যোগ করে",
"menu": {
"visualizer-type": "ভিজ্যুয়ালাইজার প্রকার"
},
"name": "ভিজ্যুয়ালাইজার"
}
}
}

202
src/i18n/resources/bs.json Normal file
View File

@ -0,0 +1,202 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Greška u izvršavanju dodatka {{pluginName}}::{{contextName}}",
"executed-at-ms": "Dodatak {{pluginName}}::{{contextName}} se izvršio za {{ms}}ms",
"initialize-failed": "Greška prilikom inicijalizacije dodatka \"{{pluginName}}\"",
"load-all": "Učitavanje svih dodataka",
"load-failed": "Greška u učitavanju dodatka \"{{pluginName}}\"",
"loaded": "Dodatak \"{{pluginName}}\" učitan",
"unload-failed": "Greška prilikom onesposobljavanja dodatka \"{{pluginName}}\"",
"unloaded": "Dodatak \"{{pluginName}}\" ugašen"
}
}
},
"language": {
"code": "ba",
"local-name": "Bosanski",
"name": "Bosnian"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Završeno učitavanje. DevTools otvoren"
},
"i18n": {
"loaded": "i18n učitan"
},
"second-instance": {
"receive-command": "Comanda primljena preko protokola \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS datoteka \"{{cssFile}}\" ne postoji, ignorišem"
},
"unresponsive": {
"details": "Greška u aplikaciji!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Čistim predmemoriju aplikacije"
},
"window": {
"tried-to-render-offscreen": "Prozor se pokušao prikazati van okvira ekrana, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Meni je sakriven, koristite 'Alt' da ga prikazete (ili 'ESC' ako koristite meni u aplikaciji)",
"message": "Sakrivanje menija je uključeno",
"title": "Meni sakriven"
},
"need-to-restart": {
"buttons": {
"later": "Kasnije",
"restart-now": "Pokreni ponovo odmah"
},
"detail": "\"{{pluginName}}\" dodatak zahtjeva ponovno pokretanje kako bi se uključio",
"message": "\"{{pluginName}}\" potrebno je resetovat",
"title": "Restart je potreban"
},
"unresponsive": {
"buttons": {
"quit": "Napusti",
"relaunch": "Ponovo otvori",
"wait": "Pricekajte"
},
"detail": "Izvinjavamo se zbog zabune! molimo vas da odaberete sta zelite uciniti",
"message": "Aplikacija ne reagira",
"title": "Prozor ne reagira"
},
"update-available": {
"buttons": {
"disable": "Ugasite Nadogradnje",
"download": "Skinuti",
"ok": "OK"
},
"detail": "Nova verzija je dostupna i može biti skinuta na {{downloadLink}}",
"message": "Nova verzija je dostupna",
"title": "Azuriranje dostupno"
}
},
"menu": {
"about": "O nama",
"navigation": {
"label": "Plejer",
"submenu": {
"copy-current-url": "Kopirajte trenutni link",
"go-back": "Idi Nazad",
"go-forward": "Idi Naprijed",
"quit": "Izadji",
"restart": "Restartujte Aplikaciju"
}
},
"options": {
"label": "Opcije",
"submenu": {
"advanced-options": {
"label": "Napredne opcije",
"submenu": {
"auto-reset-app-cache": "Resetuje kes memoriju kad se aplikacija pokrene",
"disable-hardware-acceleration": "Ugasite hardversko ubrzanje",
"edit-config-json": "Uredite config.json",
"override-user-agent": "Nadjacaj User-Agent",
"restart-on-config-changes": "Ponovno pokretanje nakon promjena konfiguracije",
"set-proxy": {
"label": "Postavi proxy",
"prompt": {
"label": "Unesite adresu proxyja: (ostavite prazno za onemogućavanje)",
"placeholder": "Primjer: SOCKS5://127.0.0.1:9999",
"title": "Postavi proxy"
}
},
"toggle-dev-tools": "Uključi/isključi DevTools"
}
},
"always-on-top": "Uvijek na vrhu",
"auto-update": "Automatski Update",
"hide-menu": {
"dialog": {
"message": "Meni će biti skriven pri sljedećem pokretanju, koristite [Alt] da ga prikažete (ili upotrijebite [`] ako koristite meni u aplikaciji)",
"title": "Sakrij meni omogućen"
},
"label": "Sakrij meni"
},
"language": {
"dialog": {
"message": "Jezik će se promijeniti nakon ponovnog pokretanja",
"title": "Jezik je uspješno promjenjen"
},
"label": "Jezik",
"submenu": {
"to-help-translate": "Želite da pomognete s prijevodom? Kliknite ovdje"
}
},
"resume-on-start": "Nastavi posljednju pjesmu pri sljedećem pokretaju",
"single-instance-lock": "Sprječavanje višestrukog pokretanja",
"start-at-login": "Pokreni čim se prijavite",
"starting-page": {
"label": "Početna stranica",
"unset": "Ukinite postavu"
},
"tray": {
"label": "Tacna",
"submenu": {
"disabled": "Onemogućeno",
"enabled-and-hide-app": "Tacna je uključena, i prozor aplikacije skrijte",
"enabled-and-show-app": "Tacna je uključena, i prozor aplikacije prikažite",
"play-pause-on-click": "Pokreni/Zaustavi na klik"
}
},
"visual-tweaks": {
"label": "Vizualne postavke",
"submenu": {
"custom-window-title": {
"label": "Prilagođeni naslov prozora",
"prompt": {
"label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)",
"placeholder": "Primjer: YouTube Music"
}
},
"like-buttons": {
"default": "Zadano",
"force-show": "Prinudno prikaži",
"hide": "Sakrij",
"label": "'Sviđa mi se' dugmadi"
},
"remove-upgrade-button": "Ukloni dugme za nadogradnju",
"theme": {
"dialog": {
"button": {
"cancel": "Otkaži",
"remove": "Ukloni"
},
"remove-theme": "Jeste li sigurni da želite ukloniti prilagođenu temu?",
"remove-theme-message": "Ovo će ukloniti prilagođenu temu"
},
"label": "Tema",
"submenu": {
"import-css-file": "Uvoz prilagođene CSS datoteke",
"no-theme": "Bez teme"
}
}
}
}
}
},
"plugins": {
"enabled": "Omogući",
"label": "Dodaci",
"new": "Novo"
}
}
},
"plugins": {
"ambient-mode": {
"menu": {
"quality": {
"label": "Kvalitet"
}
}
}
}
}

View File

@ -4,11 +4,11 @@
"plugins": {
"execute-failed": "Ha fallat l'execució de l'extensió {{pluginName}}::{{contextName}}",
"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-failed": "Error al carregar l'extensió «{{pluginName}}»",
"load-failed": "Error en carregar l'extensió «{{pluginName}}»",
"loaded": "L'extensió «{{pluginName}}» s'ha carregat",
"unload-failed": "Error al deshabilitar l'extensió «{{pluginName}}»",
"unload-failed": "Error en deshabilitar l'extensió «{{pluginName}}»",
"unloaded": "Extensió «{{pluginName}}» deshabilitada"
}
}
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Opcions visuals",
"submenu": {
"custom-window-title": {
"label": "Títol personalitzat de la finestra",
"prompt": {
"label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)",
"placeholder": "Exemple: YouTube Music"
}
},
"like-buttons": {
"default": "Per defecte",
"force-show": "Força que es mostri",
@ -279,6 +286,13 @@
},
"name": "Mode ambient"
},
"amuse": {
"description": "Afegeix suport a Youtube Music per el widget \"now playing\" d'Amuse per 6K Labs",
"name": "Amuse",
"response": {
"query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó."
}
},
"api-server": {
"description": "Afegeix un servidor API per controlar el reproductor",
"dialog": {
@ -326,6 +340,30 @@
"description": "Aplica compressió a l'àudio (baixa el volum de les parts més sorolloses de la senyal d'àudio i puja el volum de les parts més fluixes)",
"name": "Compressió d'àudio"
},
"auth-proxy-adapter": {
"description": "Suport per l'ús de servidors d'autenticació proxy",
"menu": {
"disable": "Desactivar adaptador Proxy",
"enable": "Activar adaptador Proxy",
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"name": "Adaptador de proxy d'autenticació",
"prompt": {
"hostname": {
"label": "Posa hostname pel servidor del proxy local (requereix reiniciar):",
"title": "Hostname del proxy"
},
"port": {
"label": "Entra un port pel servidor local del proxy (requereix reiniciar):",
"title": "Port proxy"
}
}
},
"blur-nav-bar": {
"description": "Desenfoca i aplica transparència a la barra de navegació",
"name": "Desenfoca la barra de navegació"
@ -350,6 +388,11 @@
},
"templates": {
"title": "Obra el selector de subtítols"
},
"toast": {
"caption-changed": "Subtítols canviats a {{language}}",
"caption-disabled": "Subtítols desactivats",
"no-captions": "Subtítols no disponibles per aquesta cançó"
}
},
"compact-sidebar": {
@ -378,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Configura un dispositiu multimèdia de sortida personalitzat per a cançons",
"menu": {
"device-selector": "Selecciona un dispositiu"
},
"name": "Dispositiu de sortida personalitzat",
"prompt": {
"device-selector": {
"label": "Trieu el dispositiu de sortida que s'utilitzarà",
"title": "Escull el dispositiu de sortida"
}
}
},
"disable-autoplay": {
"description": "Fa que la cançó comenci en mode «pausat»",
"menu": {
@ -401,7 +457,15 @@
"hide-duration-left": "Amaga la durada restant",
"hide-github-button": "Amaga el botó de l'enllaç a GitHub",
"play-on-youtube-music": "Reprodueix a YouTube Music",
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat"
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat",
"set-status-display-type": {
"label": "Text d'estat",
"submenu": {
"artist": "Escoltant {artist}",
"title": "Escoltant {song title}",
"youtube-music": "Escoltant YouTube Music"
}
}
},
"name": "Estat d'activitat de Discord",
"prompt": {
@ -484,6 +548,18 @@
"button": "Descarrega"
}
},
"equalizer": {
"description": "Afegeix un equalitzador al reproductor",
"menu": {
"presets": {
"label": "Predefinits",
"list": {
"bass-booster": "Augmentar baixos"
}
}
},
"name": "Equalitzador"
},
"exponential-volume": {
"description": "Fa que el control lliscant del volum sigui exponencial per que sigui més fàcil seleccionar volums més baixos.",
"name": "Volum exponencial"
@ -557,7 +633,15 @@
},
"navigation": {
"description": "Fletxes de navegació Següent / Enrere integrades directament a la interfície, com al teu navegador preferit",
"name": "Navegació"
"name": "Navegació",
"templates": {
"back": {
"title": "Pàgina anterior"
},
"forward": {
"title": "Pàgina següent"
}
}
},
"no-google-login": {
"description": "Elimina els botons d'inici de sessió de Google de la interfície",
@ -581,6 +665,10 @@
},
"name": "Notificacions"
},
"performance-improvement": {
"description": "Millora el rendiment habilitant scripts experimentals",
"name": "Millora del rendiment [Beta]"
},
"picture-in-picture": {
"description": "Permet commutar el mode d'imatge en imatge (PiP)",
"menu": {
@ -645,7 +733,12 @@
}
},
"description": "Permet canviar la qualitat del vídeo amb un botó que s'hi mostra a sobre",
"name": "Botó de qualitat del vídeo"
"name": "Botó de qualitat del vídeo",
"renderer": {
"quality-settings-button": {
"label": "Obre les opcions de qualitat del reproductor"
}
}
},
"scrobbler": {
"description": "Afegeix suport per scrobbling (Last.fm, ListenBrainz, etc.)",
@ -664,6 +757,8 @@
"listenbrainz": {
"token": "Introduir token d'usuari de ListenBrainz"
},
"scrobble-alternative-artist": "Utilitza artistes alternatius",
"scrobble-alternative-title": "Useu títols alternatius",
"scrobble-other-media": "Scrobble amb altres mitjans"
},
"name": "Scrobbler",
@ -714,8 +809,8 @@
"synced-lyrics": {
"description": "Proporciona lletres sincronitzades amb les cançons, a través de proveïdors com LRClib.",
"errors": {
"fetch": "⚠️ - Se ha produït un error en descarregar la lletra. Si us plau, intenta-ho més tard.",
"not-found": "⚠️ - No s'ha trobat la lletra per aquesta cançó."
"fetch": "⚠️\tS'ha produït un error en descarregar la lletra.\n\tSi us plau, intenta-ho més tard.",
"not-found": "⚠️ No s'ha trobat la lletra per aquesta cançó."
},
"menu": {
"default-text-string": {
@ -725,6 +820,10 @@
"line-effect": {
"label": "Efecte de la línia",
"submenu": {
"fancy": {
"label": "Caprici",
"tooltip": "Utilitza efectes grans \"app-like\" en la línia actual"
},
"focus": {
"label": "Focus",
"tooltip": "Mostra tan sols la línia actual en blanc"
@ -744,6 +843,18 @@
"label": "Fes que les lletres es sincronitzin a la perfecció",
"tooltip": "Calcula al mil·lisegon l'aparició de la següent línia (pot tenir un petit impacte en el rendiment)"
},
"preferred-provider": {
"label": "Proveïdor preferit",
"none": {
"label": "Cap",
"tooltip": "Cap proveïdor preferit"
},
"tooltip": "Trieu el proveïdor predeterminat que voleu utilitzar"
},
"romanization": {
"label": "Romanitza les lletres",
"tooltip": "Si les lletres són en un idioma diferent, intenta mostrar la versió amb alfabet llatí."
},
"show-lyrics-even-if-inexact": {
"label": "Mostra la lletra tot i que sigui inexacta",
"tooltip": "Si no es troba la cançó, el plugin torna a intentar obtenir la lletra amb una cerca diferent.\nEl resultat d'aquesta segona cerca podria no ser exacte."
@ -772,10 +883,17 @@
"description": "Afegeix un giny a la Touch Bar per usuaris de macOS",
"name": "TouchBar"
},
"transparent-player": {
"description": "Fa la finestra de l'aplicació transparent"
},
"tuna-obs": {
"description": "Integració amb l'extensió «Tuna» del OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Impedeix que salti el reproductor mentre se sent una cançó",
"name": "Reproductor Discret"
},
"video-toggle": {
"description": "Afegeix un botó per commutar entre el mode de vídeo o de cançó. Opcionalment, es pot eliminar la pestanya de vídeo per complet",
"menu": {
@ -799,7 +917,8 @@
},
"name": "Botó de vídeo",
"templates": {
"button": "Cançó"
"button-song": "Cançó",
"button-video": "Vídeo"
}
},
"visualizer": {

View File

@ -8,7 +8,7 @@
"load-all": "Načítání všech pluginů",
"load-failed": "Selhalo načtení \"{{pluginName}}\" pluginu",
"loaded": "Plugin \"{{pluginName}}\" načten",
"unload-failed": "Selhalo unload \"{{pluginName}}\" pluginu",
"unload-failed": "Selhalo vypnutí \"{{pluginName}}\" pluginu",
"unloaded": "Plugin {{pluginName}} byl odnačten"
}
}
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Vzhledové vylepšení",
"submenu": {
"custom-window-title": {
"label": "Vlastní název okna",
"prompt": {
"label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)",
"placeholder": "Příklad: Hudba YouTube"
}
},
"like-buttons": {
"default": "Výchozí",
"force-show": "Vynutit zobrazení",
@ -202,7 +209,7 @@
"show": "Zobrazit okno",
"tooltip": {
"default": "Youtube Music",
"with-song-info": "Youtube Music {{Umělec}} - {{Titul}}"
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
}
}
},
@ -220,7 +227,7 @@
},
"album-actions": {
"description": "Přidává Undislike, Dislike, Like, a Unlike tlačítka k aplikování tohoto ke všem písničkám v seznamu písniček nebo albumu",
"name": "Možnosti Albumu"
"name": "Možnosti Alba"
},
"album-color-theme": {
"description": "Používá dynamický motiv a vizuální efekty na základě palety barev alba",
@ -228,7 +235,7 @@
"color-mix-ratio": {
"label": "Poměr míchání barev",
"submenu": {
"percent": "{{poměr}}%"
"percent": "{{ratio}}%"
}
}
},
@ -279,6 +286,12 @@
},
"name": "Ambientní režim"
},
"amuse": {
"description": "Přídá YouTube Music podporu pro Amuse právě hraje widget od 6K Labs",
"response": {
"query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce."
}
},
"api-server": {
"description": "Vlož API server abys mohl ovládat přehrávač",
"dialog": {
@ -299,7 +312,7 @@
"label": "Ověřit při prvním dotazu"
},
"none": {
"label": "Žádná autorizace"
"label": "Bez ověření"
}
}
},
@ -326,6 +339,29 @@
"description": "Apply compression k audiu (snižuje hlasitost nejhlasitěších částí signálu and zvyšuje hlasitost nejjemnějších částí)",
"name": "Audio kompresor"
},
"auth-proxy-adapter": {
"description": "Podpora pro použití ověřovacích proxy služeb",
"menu": {
"disable": "Vypnout Proxy Adaptér",
"enable": "Zapnout Proxy Adaptér",
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"prompt": {
"hostname": {
"label": "Zadejte hostname lokálního proxy serveru (vyžaduje restart):",
"title": "Proxy Hostname"
},
"port": {
"label": "Zadejte port lokálního proxy serveru (vyžaduje restart):",
"title": "Proxy Port"
}
}
},
"blur-nav-bar": {
"description": "Udělá navigační panel průhledný a rozmazaný",
"name": "Rozmazaný navigační panel"
@ -350,6 +386,11 @@
},
"templates": {
"title": "Otevřít titulový selector"
},
"toast": {
"caption-changed": "Titulky změněny na {{language}}",
"caption-disabled": "Titulky vypnuty",
"no-captions": "K této skladbě nejsou titulky dostupné"
}
},
"compact-sidebar": {
@ -391,7 +432,7 @@
"connected": "Připojeno k Discordu",
"disconnected": "Odpojeno od Discordu"
},
"description": "Ukažte svým přátelům, co posloucháte s Bohatou přítomností",
"description": "Ukažte svým přátelům, co posloucháte pomocí Rich Persence",
"menu": {
"auto-reconnect": "Automaticky znovu připojit",
"clear-activity": "Vymazat aktivitu",
@ -403,7 +444,7 @@
"play-on-youtube-music": "Hrát na YouTube Music",
"set-inactivity-timeout": "Nastavit timeout pro neaktivitu"
},
"name": "Discord Bohatá přítomnost",
"name": "Discord Rich Persence",
"prompt": {
"set-inactivity-timeout": {
"label": "Zadejte timeout neaktivity v sekundách:",
@ -466,7 +507,7 @@
},
"submenu": {
"advanced": "Pokoročile",
"enabled": "Zapnuto",
"enabled": "Povoleno",
"mode": "Časový režim",
"percent": "Procent",
"seconds": "Sekundy"
@ -484,6 +525,18 @@
"button": "Stáhnout"
}
},
"equalizer": {
"description": "Přidá do přehrávače ekvalizér",
"menu": {
"presets": {
"label": "Předvolby",
"list": {
"bass-booster": "Zesílení basů"
}
}
},
"name": "Ekvalizér"
},
"exponential-volume": {
"description": "Dělá posuvník hlasitosti exponenciální, takže je snazší vybrat nižší hlasitost.",
"name": "Exponenciální hlasitost"
@ -510,7 +563,7 @@
}
},
"music-together": {
"description": "Sdílejte playlist s ostatními. Když hostitel přehrává písničku, uslyší jí i všichni ostatní.",
"description": "Sdílejte playlist s ostatními. Když hostitel přehrává skladbu, uslyší jí i všichni ostatní",
"dialog": {
"enter-host": "Zadejte Host ID"
},
@ -557,7 +610,15 @@
},
"navigation": {
"description": "Další/Zpátky navigační šipky přímo integrovány do rozhraní, jako ve vašem oblíbeném prohlížeči",
"name": "Navigace"
"name": "Navigace",
"templates": {
"back": {
"title": "Přejít na předchozí stránku"
},
"forward": {
"title": "Přejít na další stránku"
}
}
},
"no-google-login": {
"description": "Odstranit tlačítka Google přihlášení a odkazy z rozhraní",
@ -581,6 +642,9 @@
},
"name": "Oznámení"
},
"performance-improvement": {
"description": "Zlepšit výkon povolením experimentálních skriptů"
},
"picture-in-picture": {
"description": "Povoluje switch aplikaci do režimu obrázek v obrázku",
"menu": {
@ -645,7 +709,12 @@
}
},
"description": "Umožňuje měnit kvalitu videa pomocí tlačítka na video overlay",
"name": "Měnič kvality videa"
"name": "Měnič kvality videa",
"renderer": {
"quality-settings-button": {
"label": "Otevřít volbu kvality přehrávače"
}
}
},
"scrobbler": {
"description": "Přidat scrobbing podporu (např .last.fm , Listenbrainz)",
@ -664,6 +733,7 @@
"listenbrainz": {
"token": "Vložte Listenbrainz user token"
},
"scrobble-alternative-title": "Používat alternativní názvy",
"scrobble-other-media": "Scrobble jiné média"
},
"name": "Scrobbler",
@ -714,8 +784,8 @@
"synced-lyrics": {
"description": "Poskytuje synchronizaci textů do písní, pomocí poskytovatelů, jako je LRClib.",
"errors": {
"fetch": "Při hledání textu došlo k chybě. Prosím skuste to znovu později.",
"not-found": "Žáden text nebyl pro túto skladbu nalezen."
"fetch": "⚠️ Při hledání textu došlo k chybě.\n \tProsím zkuste to znovu později.",
"not-found": "⚠️ Pro tuto skladbu nebyl nalezen žádný text."
},
"menu": {
"default-text-string": {
@ -723,8 +793,36 @@
"tooltip": "Vyberte výchozí znak pro mezeru mezi texty"
},
"line-effect": {
"label": "Efekt řádku"
"label": "Efekt řádku",
"submenu": {
"offset": {
"label": "Posun"
}
}
},
"precise-timing": {
"tooltip": "Vypočítat zobrazení dalšího řádku na milisekundu (může mít menší dopad na výkon)"
},
"romanization": {
"label": "Romanizovat texty",
"tooltip": "Pokud je text v jiném jazyce, zkusit zobrazit verzi v latince."
},
"show-lyrics-even-if-inexact": {
"label": "Zobrazit i nepřesné texty"
},
"show-time-codes": {
"label": "Zobrazit časové kódy",
"tooltip": "Zobrazit časové kódy vedle textu"
}
},
"name": "Synchronizované texty",
"refetch-btn": {
"fetching": "Získávání..."
},
"warnings": {
"duration-mismatch": "⚠️ - Text nemusí být synchronizován kvůli neshodě v délce trvání.",
"inexact": "⚠️ - Text pro tuto skladbu nemusí být přesný",
"instrumental": "⚠️ - Tato skladba je instrumentální"
}
},
"taskbar-mediacontrol": {
@ -762,7 +860,8 @@
},
"name": "Přepínač videa",
"templates": {
"button": "Písnička"
"button-song": "Skladba",
"button-video": "Video"
}
},
"visualizer": {

315
src/i18n/resources/da.json Normal file
View File

@ -0,0 +1,315 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Fejl ved udføring af plugin {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} udført på {{ms}}ms",
"initialize-failed": "Fejl ved igangsætning af plugin \"{{pluginName}}\"",
"load-all": "Indlæser alle plugins",
"load-failed": "Fejl ved indlæsning af plugin \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" indlæst",
"unload-failed": "Fejl ved unload af plugin \"{{pluginName}}\""
}
}
},
"language": {
"code": "dk",
"local-name": "Dansk",
"name": "Danish"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Indlæsning færdig. DevTools åbnet"
},
"i18n": {
"loaded": "i18n indlæst"
},
"second-instance": {
"receive-command": "Modtog kommando over protokol: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS fil \"{{cssFile}}\" eksisterer ikke, ignorere"
},
"unresponsive": {
"details": "Uresponsiv fejl!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Rydder op i appens cache"
},
"window": {
"tried-to-render-offscreen": "Windows forsøgte at indlæse uden for skærmen, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menuen er gemt, brug 'Alt' knappen for at vise den igen (eller 'Escape' hvis In-App menuen bruges)",
"message": "Skjul menuen er aktiveret",
"title": "Skjult menu aktiveret"
},
"need-to-restart": {
"buttons": {
"later": "Senere",
"restart-now": "Genstart nu"
},
"detail": "\"{{pluginName}}\" plugin kræver en genstart for at have en effekt",
"message": "\"{{pluginName}}\" skal genstarte",
"title": "Genstart krævet"
},
"unresponsive": {
"buttons": {
"quit": "Afslut",
"relaunch": "Genåben",
"wait": "Vent"
},
"detail": "Vi undskylder for ubelejligheden! Vælg næste handling:",
"message": "Appen svarer ikke",
"title": "Vindue svarer ikke"
},
"update-available": {
"buttons": {
"disable": "Slå opdateringer fra",
"download": "Hent",
"ok": "OK"
},
"detail": "En ny version er tilgængelig og kan downloades her: {{downloadLink}}",
"message": "En ny version er tilgængelig",
"title": "Opdatering tilgængelig"
}
},
"menu": {
"about": "Om",
"navigation": {
"label": "Navigering",
"submenu": {
"copy-current-url": "Kopier nuværende URL",
"go-back": "Tilbage",
"go-forward": "Frem",
"quit": "Afslut",
"restart": "Genstart Appen"
}
},
"options": {
"label": "Indstillinger",
"submenu": {
"advanced-options": {
"label": "Avancerede indstillinger",
"submenu": {
"auto-reset-app-cache": "Nulstil app cache når appen starter",
"disable-hardware-acceleration": "Deaktiver hardware acceleration",
"edit-config-json": "Rediger config.json",
"restart-on-config-changes": "Genstart ved config ændringer",
"set-proxy": {
"label": "Indstil proxy",
"prompt": {
"label": "Skriv proxy adresse: (Efterlad tom for at deaktivere)",
"placeholder": "Eksempel: SOCKS5://127.0.0.1:9999",
"title": "Sæt proxy"
}
},
"toggle-dev-tools": "Skift DevTools"
}
},
"always-on-top": "Altid øverst",
"auto-update": "Automatisk opdatering",
"hide-menu": {
"dialog": {
"message": "Menuen vil være lukket næste gang appen starter. Brug [Alt] for at vise den (Eller backtick [`] hvis in-app-menu bruges)",
"title": "Gemt menu aktiveret"
},
"label": "Skjul menu"
},
"language": {
"dialog": {
"message": "Sproget vil blive ændret efter genstart",
"title": "Sprog ændret"
},
"label": "Sprog",
"submenu": {
"to-help-translate": "Vil du hjælpe med at oversætte? Klik her"
}
},
"resume-on-start": "Genoptag sidste sang når appen starter",
"start-at-login": "Start ved login",
"starting-page": {
"label": "Startside",
"unset": "Ikke valgt"
},
"tray": {
"submenu": {
"disabled": "Deaktiveret",
"enabled-and-show-app": "Aktiver og vis app",
"play-pause-on-click": "Start/Stop ved klik"
}
},
"visual-tweaks": {
"submenu": {
"like-buttons": {
"default": "Standard",
"hide": "Skjul",
"label": "Like knapper"
},
"remove-upgrade-button": "Fjern opgrader knappen",
"theme": {
"dialog": {
"button": {
"remove": "Fjern"
}
},
"label": "Tema",
"submenu": {
"no-theme": "Intet tema"
}
}
}
}
}
},
"plugins": {
"enabled": "Aktiveret",
"label": "Plugins",
"new": "NY"
},
"view": {
"label": "Vis",
"submenu": {
"reload": "Genindlæs",
"zoom-in": "Zoom ind",
"zoom-out": "Zoom ud"
}
}
},
"tray": {
"next": "Næste",
"play-pause": "Afspil",
"previous": "Sidste",
"quit": "Luk",
"restart": "Genstart app",
"show": "Vis vindue",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Hvis en reklame afspilles, slår den lyden fra og sætter hastigheden til 16x",
"name": "Spol igennem reklamen"
},
"adblocker": {
"description": "Bloker alle reklamer og sporing fra starten af",
"menu": {
"blocker": "Bloker"
},
"name": "Bloker reklamer"
},
"album-color-theme": {
"menu": {
"color-mix-ratio": {
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Albummets farve tema"
},
"ambient-mode": {
"menu": {
"blur-amount": {
"label": "Sløringsmængde",
"submenu": {
"pixels": "{{blurAmount}} pixel"
}
},
"buffer": {
"label": "Buffer",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Gennemsigtighed",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kvalitet",
"submenu": {
"pixels": "{{quality}} pixel"
}
},
"size": {
"label": "Størrelse",
"submenu": {
"percent": "{{size}}%"
}
},
"use-fullscreen": {
"label": "Bruger fuldskærm"
}
}
},
"api-server": {
"dialog": {
"request": {
"buttons": {
"allow": "Tillad",
"deny": "Afvis"
},
"message": "Tillad at {{ID}} ({{origin}}) får adgang til API'en?"
}
},
"menu": {
"auth-strategy": {
"label": "Godkendelsesstrategi"
},
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"name": "API Server [Beta]",
"prompt": {
"hostname": {
"label": "Skriv API serverens hostname (f. eks. 0.0.0.0):",
"title": "Hostname"
},
"port": {
"label": "Skriv API serverens port:",
"title": "Port"
}
}
},
"audio-compressor": {
"name": "Lyd kompressor"
},
"blur-nav-bar": {
"description": "Gør navigationsbaren gennemsigtig og sløret",
"name": "Slør navigationsbar"
},
"captions-selector": {
"menu": {
"disable-captions": "Ingen undertekster som standard"
},
"name": "Vælg undertekster",
"prompt": {
"selector": {
"label": "Nuværende sprog på undertekster: {{language}}",
"none": "Ingen",
"title": "Vælg underteksternes sprog"
}
}
},
"crossfade": {
"description": "Fade imellem sange",
"menu": {
"advanced": "Avanceret"
},
"name": "Fade [Beta]"
}
}
}

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Visuelle Optimierungen",
"submenu": {
"custom-window-title": {
"label": "Benutzerdefinierter Fenstertitel",
"prompt": {
"label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)",
"placeholder": "Beispiel: YouTube Music"
}
},
"like-buttons": {
"default": "Standard",
"force-show": "Zeigen erzwungen",
@ -333,6 +340,30 @@
"description": "Kompressor auf Audio anwenden (senkt die Lautstärke der lautesten Teile des Signals und hebt die Lautstärke der leisesten Teile an)",
"name": "Audio-Komprimierer"
},
"auth-proxy-adapter": {
"description": "Unterstützung für Proxy-Authentifizierungsdienste",
"menu": {
"disable": "Proxy-Adapter deaktivieren",
"enable": "Proxy-Adapter aktivieren",
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"name": "Authentifizierungs-Proxyadapter",
"prompt": {
"hostname": {
"label": "Hostnamen eingeben für lokalen Proxy-Server (Neustart erforderlich):",
"title": "Proxy Hostname"
},
"port": {
"label": "Geben Sie den Port für den lokalen Proxyserver ein (Neustart erforderlich):",
"title": "Proxy Port"
}
}
},
"blur-nav-bar": {
"description": "Macht Navigationsleiste durchsichtig und unscharf",
"name": "Verschwommene Navigationsleiste"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Untertitelwähler öffnen"
},
"toast": {
"caption-changed": "Untertitel gewechselt zu {{language}}",
"caption-disabled": "Untertitel deaktiviert",
"no-captions": "Keine Untertitel für dieses Lied verfügbar"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Einen maßgeschneiderten Ausgabemedienträger für Lieder einrichten",
"menu": {
"device-selector": "Gerät auswählen"
},
"name": "Benutzerdefiniertes Ausgabegerät",
"prompt": {
"device-selector": {
"label": "Wähle das Ausgabegerät, welches benutzt werden soll",
"title": "Wähle ein Ausgabegerät"
}
}
},
"disable-autoplay": {
"description": "Startet Lied im pausierten Modus",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "Verbleibende Zeit verstecken",
"hide-github-button": "Knopf mit Link zu GitHub ausblenden",
"play-on-youtube-music": "Auf YouTube Music abspielen",
"set-inactivity-timeout": "Inaktivitätstimeout setzen"
"set-inactivity-timeout": "Inaktivitätstimeout setzen",
"set-status-display-type": {
"label": "Status Text",
"submenu": {
"artist": "Hört {artist} zu",
"title": "Du hörst {song title}",
"youtube-music": "Hört YouTube Music"
}
}
},
"name": "Discords Aktivitätsstatus",
"prompt": {
@ -523,7 +580,7 @@
"menu": {
"romanized-lyrics": "Romanisierte Songtexte"
},
"name": "Liedtexte von Genius",
"name": "Songtexte von Genius",
"renderer": {
"fetched-lyrics": "Liedtexte für Genius abgerufen"
}
@ -576,7 +633,15 @@
},
"navigation": {
"description": "Vorwärts/Zurück Navigationspfeile direkt in die Oberfläche integriert - wie in deinem geliebten Browser",
"name": "Navigation"
"name": "Navigation",
"templates": {
"back": {
"title": "Zur vorherigen Seite gehen"
},
"forward": {
"title": "Zur nächsten Seite gehen"
}
}
},
"no-google-login": {
"description": "Googles Anmelden-Knöpfe und -Links von der Oberfläche entfernen",
@ -600,6 +665,10 @@
},
"name": "Benachrichtigungen"
},
"performance-improvement": {
"description": "Leistung durch Aktivieren experimenteller Skripte verbessern",
"name": "Leistungs Verbesserung [Beta]"
},
"picture-in-picture": {
"description": "Erlaubt die App in den Bild-im-Bild-Modus zu wechseln",
"menu": {
@ -664,7 +733,12 @@
}
},
"description": "Erlaubt die Videoqualität über einen Knopf auf dem Video",
"name": "Videoqualitätsänderer"
"name": "Videoqualitätsänderer",
"renderer": {
"quality-settings-button": {
"label": "Videoqualität ändern"
}
}
},
"scrobbler": {
"description": "Scrobbling-Unterstützung aktivieren (z.B. für last.fm, Listenbrainz)",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "ListenBrainz-Benutzer-Token eintragen"
},
"scrobble-alternative-artist": "Benutze Alternative Künstler",
"scrobble-alternative-title": "Nutze alternative Titel",
"scrobble-other-media": "Andere Medien scrobbeln"
},
"name": "Scrobbler",
@ -767,8 +843,20 @@
"label": "Den Songtext perfekt synchronisieren",
"tooltip": "Auf die Millisekunde genau berechnen, wann die nächste Zeile angezeigt werden soll (Kann Einfluss auf die Leistung haben)"
},
"preferred-provider": {
"label": "bevorzugter Anbieter",
"none": {
"label": "Nichts",
"tooltip": "Kein bevorzugter Anbieter"
},
"tooltip": "Standardanbieter auswählen"
},
"romanization": {
"label": "Lateinische Umschrift anzeigen",
"tooltip": "Wenn der Liedtext in einer anderen Schrift ist, zeige nach Möglichkeit eine Version in lateinischer Schrift an."
},
"show-lyrics-even-if-inexact": {
"label": "Zeige die Liedtexte, auch wenn sie ungenau sind.",
"label": "Songtext anzeigen, auch wenn er ungenau ist",
"tooltip": "Die Erweiterung sucht mit anderen Suchparameter nochmals, wenn der Song nicht gefunden wurde.\nEs kann sein, dass das Ergebnis von der zweiten Anfrage nicht genau ist."
},
"show-time-codes": {
@ -783,7 +871,7 @@
},
"warnings": {
"duration-mismatch": "⚠️ - Es kann sein, dass die Synchronization nicht stimmt, da die Songdauer nicht übereinstimmt.",
"inexact": "⚠️ - Es ist Möglich, dass der Songtext für diesen Song nicht übereinstimmt.",
"inexact": "⚠️ - Der Songtext stimmt möglicherweise nicht überein",
"instrumental": "⚠️ - Das ist ein instrumentales Lied"
}
},
@ -795,10 +883,35 @@
"description": "Fügt ein TouchBar-Widget für macOS-Benutzer hinzu",
"name": "TouchBar"
},
"transparent-player": {
"description": "Macht das Player-Fenster transparent",
"menu": {
"opacity": {
"label": "Hintergrund-Sichtbarkeit",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Typ",
"submenu": {
"acrylic": "Acrylic",
"mica": "Mica",
"none": "Nichts",
"tabbed": "Tabbed"
}
}
},
"name": "Transparent Player"
},
"tuna-obs": {
"description": "Integration mit dem OBS-Plugin Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Verhindert das Aufpoppen des Spielers während ein Song gespielt wird",
"name": "Unauffälliger Player"
},
"video-toggle": {
"description": "Fügt einen Knopf hinzu, um zwischen Video-/Liedmodus zu wechseln. kann auch genutzt werden, um den ganzen Videoabschnitt zu entfernen",
"menu": {
@ -822,7 +935,8 @@
},
"name": "Videoumschalter",
"templates": {
"button": "Lied"
"button-song": "Lied",
"button-video": "Video"
}
},
"visualizer": {

View File

@ -8,8 +8,8 @@
"load-all": "Φόρτωση όλων των πρόσθετων",
"load-failed": "Απέτυχε η φόρτωση του πρόσθετου \"{{pluginName}}\"",
"loaded": "Το πρόσθετο \"{{pluginName}}\" φορτώθηκε",
"unload-failed": "Απέτυχε η απεγκατάσταση του πρόσθετου \"{{pluginName}}\"",
"unloaded": "Το πρόσθετο \"{{pluginName}}\" απεγκαταστάθηκε"
"unload-failed": "Απέτυχε η κατάργηση φόρτωσης του πρόσθετου \"{{pluginName}}\"",
"unloaded": "Η φόρτωση του πρόσθετου \"{{pluginName}}\" καταργήθηκε"
}
}
},
@ -21,7 +21,7 @@
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Η φόρτωση ολοκληρώθηκε. Τα DevTools άνοιξαν"
"dev-tools": "Ολοκληρώθηκε η φόρτωση. Τα DevTools άνοιξαν"
},
"i18n": {
"loaded": "Το i18n φορτώθηκε"
@ -30,10 +30,10 @@
"receive-command": "Λήφθηκε εντολή μέσω πρωτοκόλλου: \"{{command}}\""
},
"theme": {
"css-file-not-found": "Το αρχείο CSS \"{{cssFile}}\" δεν υπάρχει, αγνοείται"
"css-file-not-found": "Το αρχείο CSS \"{{cssFile}}\" δεν υπάρχει, αγνόηση"
},
"unresponsive": {
"details": "Σφάλμα ανταπόκρισης!\n{{error}}"
"details": "Σφάλμα απόκρισης!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Εκκαθάριση μνήμης cache εφαρμογής"
@ -59,13 +59,13 @@
},
"unresponsive": {
"buttons": {
"quit": "Έξοδος",
"quit": "Τερματισμός",
"relaunch": "Επανεκκίνηση",
"wait": "Περιμένετε"
"wait": "Αναμονή"
},
"detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλούμε επιλέξτε τι να κάνετε:",
"message": "Η εφαρμογή δεν ανταποκρίνεται",
"title": "Το παράθυρο δεν ανταποκρίνεται"
"detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλώ επιλέξτε τι να κάνετε:",
"message": "Η εφαρμογή δεν αποκρίνεται",
"title": "Το παράθυρο δεν αποκρίνεται"
},
"update-available": {
"buttons": {
@ -73,19 +73,19 @@
"download": "Λήψη",
"ok": "OK"
},
"detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από τον σύνδεσμο {{downloadLink}}",
"detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από το {{downloadLink}}",
"message": "Μια νέα έκδοση είναι διαθέσιμη",
"title": "Υπάρχει διαθέσιμη ενημέρωση"
"title": "Διατίθεται ενημέρωση"
}
},
"menu": {
"about": "Σχετικά",
"about": "Πληροφορίες",
"navigation": {
"label": "Πλοήγηση",
"submenu": {
"copy-current-url": "Αντιγραφή τρέχουσας διεύθυνσης URL",
"go-back": ήγαινε πίσω",
"go-forward": "Πήγαινε μπροστά",
"go-back": "Πίσω",
"go-forward": "Εμπρός",
"quit": "Έξοδος",
"restart": "Επανεκκίνηση εφαρμογής"
}
@ -94,17 +94,17 @@
"label": "Επιλογές",
"submenu": {
"advanced-options": {
"label": "Προηγμένες επιλογές",
"label": "Επιλογές για προχωρημένους",
"submenu": {
"auto-reset-app-cache": "Επαναφορά της cache της εφαρμογής κατά την εκκίνηση της εφαρμογής",
"auto-reset-app-cache": "Επαναφορά μνήμης cache εφαρμογής όταν η εφαρμογή ξεκινά",
"disable-hardware-acceleration": "Απενεργοποίηση επιτάχυνσης υλικού",
"edit-config-json": "Επεξεργασία του config.json",
"override-user-agent": "Αντικατάσταση του User-Agent",
"restart-on-config-changes": "Επανεκκίνηση κατά τις αλλαγές στο config",
"restart-on-config-changes": "Επανεκκίνηση σε αλλαγές του config",
"set-proxy": {
"label": "Ορισμός διακομιστή μεσολάβησης (proxy)",
"label": "Ορισμός μεσολάβησης",
"prompt": {
"label": "Εισαγωγή διεύθυνσης διακομιστή μεσολάβησης (proxy): (αφήστε κενό για απενεργοποίηση)",
"label": "Εισαγωγή διεύθυνσης μεσολάβησης: (αφήστε κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: SOCKS5://127.0.0.1:9999",
"title": "Ορισμός μεσολάβησης"
}
@ -112,14 +112,14 @@
"toggle-dev-tools": "Εναλλαγή DevTools"
}
},
"always-on-top": "Πάντα επάνω",
"auto-update": "Αυτόματη Ενημέρωση",
"always-on-top": "Πάντα σε πρώτο πλάνο",
"auto-update": "Αυτόματη ενημέρωση",
"hide-menu": {
"dialog": {
"message": "Το μενού θα κρυφτεί στην επόμενη εκκίνηση, χρησιμοποιήστε [Alt] για να το εμφανίσετε (ή το πλήκτρο backtick [`] αν χρησιμοποιείτε το μενού εφαρμογής)",
"title": "Η Δυνατότητα Απόκρυψης του Μενού ενεργοποιήθηκε"
"title": "Η απόκρυψη μενού ενεργοποιήθηκε"
},
"label": "Απόκρυψη Μενού"
"label": "Απόκρυψη μενού"
},
"language": {
"dialog": {
@ -131,15 +131,15 @@
"to-help-translate": "Θέλετε να βοηθήσετε στη μετάφραση; Κάντε κλικ εδώ"
}
},
"resume-on-start": "Συνέχιση του τελευταίου τραγουδιού όταν η εφαρμογή ξεκινά",
"single-instance-lock": "Κλείδωμα Μοναδικής Εκδοχής",
"start-at-login": "Έναρξη κατά την σύνδεση",
"resume-on-start": "Συνέχιση τελευταίου τραγουδιού όταν η εφαρμογή ξεκινά",
"single-instance-lock": "Κλείδωμα μοναδικής εκδοχής",
"start-at-login": "Έναρξη κατά τη σύνδεση",
"starting-page": {
"label": "Σελίδα έναρξης",
"label": "Αρχική σελίδα",
"unset": "Κατάργηση ορισμού"
},
"tray": {
"label": "Δίσκος",
"label": "Περιοχή συστήματος",
"submenu": {
"disabled": "Απενεργοποιημένο",
"enabled-and-hide-app": "Ενεργοποιημένο και απόκρυψη της εφαρμογής",
@ -148,13 +148,20 @@
}
},
"visual-tweaks": {
"label": "Τροποποιήσεις Εμφάνισης",
"label": "Οπτικές προσαρμογές",
"submenu": {
"custom-window-title": {
"label": "Προσαρμοσμένος τίτλος παραθύρου",
"prompt": {
"label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: YouTube Music"
}
},
"like-buttons": {
"default": "Default",
"force-show": "Αναγκαστική Εμφάνιση",
"default": "Προεπιλογή",
"force-show": "Επιβολή εμφάνισης",
"hide": "Απόκρυψη",
"label": "Μου αρέσει"
"label": "Κουμπιά Μου αρέσει"
},
"remove-upgrade-button": "Αφαίρεση κουμπιού αναβάθμισης",
"theme": {
@ -169,7 +176,7 @@
"label": "Θέμα",
"submenu": {
"import-css-file": "Εισαγωγή προσαρμοσμένου αρχείου CSS",
"no-theme": "No theme"
"no-theme": "Χωρίς θέμα"
}
}
}
@ -184,10 +191,10 @@
"view": {
"label": "Προβολή",
"submenu": {
"force-reload": "Αναγκαστική Eπαναφόρτωση",
"force-reload": "Επιβολή επαναφόρτωσης",
"reload": "Επαναφόρτωση",
"reset-zoom": "Πραγματικό μέγεθος",
"toggle-fullscreen": "Εναλλαγή Πλήρους Οθόνης",
"toggle-fullscreen": "Εναλλαγή πλήρους οθόνης",
"zoom-in": "Μεγέθυνση",
"zoom-out": "Σμίκρυνση"
}
@ -208,43 +215,43 @@
},
"plugins": {
"ad-speedup": {
"description": "Εαν παίξει διαφήμιση κάνει σίγαση του ήχου και θέτει την ταχύτητα αναπαραγωγής στο 16x",
"name": "Γρήγορη Προώθηση Διαφημίσεων"
"description": "Εάν ξεκινήσει διαφήμιση, ο ήχος απενεργοποιείται και η ταχύτητα αναπαραγωγής ορίζεται σε 16x",
"name": "Επιτάχυνση διαφημίσεων"
},
"adblocker": {
"description": "Αποκλεισμός όλων των διαφημίσεων και tracker",
"description": "Αποκλεισμός όλων των διαφημίσεων και της παρακολούθησης από προεπιλογή",
"menu": {
"blocker": "Μέθοδος αποκλεισμού"
"blocker": "Πρόγραμμα αποκλεισμού"
},
"name": "Μπλοκάρισμα Διαφημίσεων"
"name": "Πρόγραμμα αποκλεισμού διαφημίσεων"
},
"album-actions": {
"description": "Προσθέτει κουμπιά Like/Unlike και Dislike/Undislike που δρουν συνολικά σε όλα τα κομμάτια μιας playlist ή ενός άλμπουμ",
"name": "Ενέργειες σε Άλμπουμ"
},
"album-color-theme": {
"description": "Εφαρμόζει ένα δυναμικό θέμα και εφέ με βάση τη χρωματική παλέτα του άλμπουμ",
"description": "Εφαρμόζει ένα δυναμικό θέμα και οπτικά εφέ βάσει της παλέτας χρωμάτων του άλμπουμ",
"menu": {
"color-mix-ratio": {
"label": "Αναλογία μίξης χρώματος",
"label": "Αναλογία ανάμειξης χρωμάτων",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Album Color Theme"
"name": "Θέμα χρωμάτων άλμπουμ"
},
"ambient-mode": {
"description": "Εφαρμόζει ένα εφέ φωτισμού ρίχνοντας απαλά χρώματα από το βίντεο, στο φόντο της οθόνης σας.",
"description": "Εφαρμόζει ένα εφέ φωτισμού ρίχνοντας απαλά χρώματα από το βίντεο στο φόντο της οθόνης σας",
"menu": {
"blur-amount": {
"label": "Ένταση θαμπώματος",
"label": "Ποσότητα θολώματος",
"submenu": {
"pixels": "{{blurAmount}} pixels"
}
},
"buffer": {
"label": "Buffer",
"label": "Ενδιάμεση μνήμη",
"submenu": {
"buffer": "{{buffer}}"
}
@ -268,46 +275,149 @@
}
},
"smoothness-transition": {
"label": "Ομαλή μετάβαση",
"submenu": {
"during": "Σε {{interpolationTime}} δευτερόλεπτα"
"during": "Για {{interpolationTime}} δευτερόλεπτα"
}
},
"use-fullscreen": {
"label": "Χρήση πλήρους οθόνης"
"label": "Σε πλήρη οθόνη"
}
},
"name": "Λειτουργία περιβάλλοντος"
},
"amuse": {
"description": "Προσθέτει υποστήριξη YouTube Music στο widget Amuse now playing από την 6K Labs",
"name": "Amuse",
"response": {
"query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι."
}
},
"api-server": {
"description": "Προσθέτει έναν διακομιστή API για τον έλεγχο του παίκτη",
"dialog": {
"request": {
"buttons": {
"allow": "Αποδοχή",
"deny": "Άρνηση"
},
"message": "Επιτρέψτε {{ID}} ({{origin}}) να έχει πρόσβαση στο API;",
"title": "Αίτημα εξουσιοδότησης API"
}
},
"menu": {
"auth-strategy": {
"label": "Στρατηγική εξουσιοδότησης",
"submenu": {
"auth-at-first": {
"label": "Εξουσιοδότηση στο πρώτο αίτημα"
},
"none": {
"label": "Χωρίς εξουσιοδότηση"
}
}
},
"hostname": {
"label": "Όνομα κεντρικού υπολογιστή"
},
"port": {
"label": "Θύρα"
}
},
"name": "Διακομιστής API [Beta]",
"prompt": {
"hostname": {
"label": "Εισάγετε το όνομα κεντρικού υπολογιστή (όπως 0.0.0.0.0) για τον διακομιστή API:",
"title": "Όνομα κεντρικού υπολογιστή"
},
"port": {
"label": "Εισάγετε τη θύρα για το διακομιστή API:",
"title": "Θύρα"
}
}
},
"audio-compressor": {
"description": "Συμπίεση ήχου (μειώνει την ένταση των πιο δυνατών τμημάτων του κύματος και αυξάνει την ένταση των πιο μαλακών τμημάτων)"
"description": "Συμπίεση ήχου (μειώνει την ένταση των πιο δυνατών τμημάτων του κύματος και αυξάνει την ένταση των πιο μαλακών τμημάτων)",
"name": "Συμπιεστής ήχου"
},
"blur-nav-bar": {
"description": "Κάνει τη γραμμή πλοήγησης διαφανή και θολή"
},
"bypass-age-restrictions": {
"description": "Παράκαμψη της επαλήθευσης ηλικίας του YouTube"
},
"captions-selector": {
"auth-proxy-adapter": {
"description": "Υποστήριξη για τη χρήση υπηρεσιών μεσολάβησης αυθεντικοποίησης",
"menu": {
"disable": "Απενεργοποίηση προσαρμογέα μεσολάβησης",
"enable": "Ενεργοποίηση προσαρμογέα μεσολάβησης",
"hostname": {
"label": "Όνομα οικοδεσπότη"
},
"port": {
"label": "Θύρα"
}
},
"name": "Προσαρμογέας μεσολάβησης Auth",
"prompt": {
"selector": {
"none": "None"
"hostname": {
"label": "Εισάγετε το όνομα κεντρικού υπολογιστή για τον τοπικό διακομιστή μεσολάβησης (απαιτείται επανεκκίνηση):",
"title": "Όνομα κεντρικού υπολογιστή μεσολάβησης"
},
"port": {
"label": "Εισάγετε τη θύρα για τον τοπικό διακομιστή μεσολάβησης (απαιτεί επανεκκίνηση):",
"title": "Θύρα διακομιστή μεσολάβησης"
}
}
},
"blur-nav-bar": {
"description": "θέτει τη γραμμή πλοήγησης διαφανή και θολή",
"name": "Θόλωμα γραμμής πλοήγησης"
},
"bypass-age-restrictions": {
"description": "Παράκαμψη επαλήθευσης ηλικίας στο YouTube",
"name": "Παράκαμψη ηλικιακών περιορισμών"
},
"captions-selector": {
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του YouTube",
"menu": {
"autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας",
"disable-captions": "Χωρίς λεζάντες από προεπιλογή"
},
"name": "Επιλογέας λεζάντες",
"prompt": {
"selector": {
"label": "Τρέχουσα γλώσσα λεζάντας: {{language}}",
"none": "None",
"title": "Επιλογή γλώσσας λεζάντας"
}
},
"templates": {
"title": "Ανοίξτε τον επιλογέα λεζάντας"
},
"toast": {
"caption-changed": "Λεζάντα άλλαξε σε {{language}}",
"caption-disabled": "Λεζάντες απενεργοποιήθηκαν",
"no-captions": "Λεζάντες μη διαθέσιμες για αυτό το τραγούδι"
}
},
"compact-sidebar": {
"description": "Να είναι πάντα συμπαγές το sidebar"
"description": "Να είναι πάντα συμπαγές το sidebar",
"name": "Συμπαγής πλευρική μπάρα"
},
"crossfade": {
"description": "Crossfade μεταξύ τραγουδιών",
"menu": {
"advanced": "Για προχωρημένους"
},
"name": "Crossfade [Beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Διάρκεια εξασθένισης (ms)",
"fade-out-duration": "Διάρκεια σβήσιμου (ms)",
"fade-scaling": {
"label": "Κλιμάκωση εξασθένισης",
"linear": "Γραμμική",
"logarithmic": "Λογαριθμική"
}
}
},
"seconds-before-end": "Crossfade N δευτερόλεπτα πριν το τέλος"
},
"title": "Επιλογές Crossfade"
}
}
},
@ -319,13 +429,29 @@
"name": "Απενεργοποίηση αυτόματης αναπαραγωγής"
},
"discord": {
"backend": {
"already-connected": "Προσπάθεια σύνδεσης με ενεργή σύνδεση",
"connected": "Συνδεδεμένος με το Discord",
"disconnected": "Αποσυνδεδεμένος από το Discord"
},
"description": "Δείξτε στους φίλους σας τι ακούτε με το Rich Presence",
"menu": {
"auto-reconnect": "Αυτόματη επανασύνδεση",
"clear-activity": "Εκκαθάριση δραστηριότητας",
"clear-activity-after-timeout": "Εκκαθάριση δραστηριότητας μετά από χρονικό όριο",
"connected": "Συνδεδεμένο",
"disconnected": "Αποσυνδεδεμένο",
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
"hide-github-button": "Απόκρυψη του συνδέσμου προς GitHub",
"hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub",
"play-on-youtube-music": "Αναπαραγωγή στο YouTube Music",
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
},
"name": "Discord Πλούσια παρουσία",
"prompt": {
"set-inactivity-timeout": {
"label": "Εισαγωγή χρονικού ορίου αδράνειας σε δευτερόλεπτα:",
"title": "Ορισμός χρονικού ορίου αδράνειας"
}
}
},
"downloader": {
@ -335,7 +461,8 @@
"buttons": {
"ok": "OK"
},
"title": "Error in download!"
"message": "Ωχ! Λυπούμαστε, η λήψη απέτυχε…",
"title": "Σφάλμα στη λήψη!"
},
"start-download-playlist": {
"buttons": {
@ -349,59 +476,180 @@
"feedback": {
"conversion-progress": "Μετατροπή: {{percent}}%",
"converting": "Μετατροπή…",
"done": "Τέλος: {{filePath}}",
"download-info": "Λήψη του {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Λήψη: {{percent}}%",
"downloading": "Λήψη…",
"downloading-counter": "Λήψη {{current}}/{{total}}…",
"downloading-playlist": "Λήψη της λίστας αναπαραγωγής \"{{playlistTitle}}\" - {{playlistSize}} τραγούδια ({{playlistId}})",
"error-while-downloading": "Σφάλμα λήψης \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Ο φάκελος {{playlistFolder}} υπάρχει ήδη",
"getting-playlist-info": "Λήψη πληροφοριών λίστας αναπαραγωγής…",
"loading": "Φόρτωση…",
"playlist-has-only-one-song": "Η λίστα αναπαραγωγής έχει μόνο ένα στοιχείο, κατεβάζοντάς το απευθείας",
"playlist-id-not-found": "Δεν βρέθηκε ID λίστας αναπαραγωγής",
"playlist-is-empty": "Η λίστα αναπραγωγής είναι άδεια",
"playlist-is-mix-or-private": "Σφάλμα λήψης πληροφοριών λίστας αναπαραγωγής: βεβαιωθείτε ότι δεν είναι ιδιωτική ή «Μικτή για εσάς» λίστα αναπαραγωγής\n\n{{error}}",
"preparing-file": "Προετοιμασία αρχείου…",
"saving": "Αποθήκευση…",
"video-id-not-found": "Το βίντεο δεν βρέθηκε"
"trying-to-get-playlist-id": "Προσπαθώ να πάρω το αναγνωριστικό της λίστας αναπαραγωγής: {{playlistId}}",
"video-id-not-found": "Το βίντεο δεν βρέθηκε",
"writing-id3": "Εγγραφή ετικετών ID3…"
}
},
"description": "Λήψεις MP3 / ήχου πηγής απευθείας από τη διεπαφή",
"menu": {
"choose-download-folder": "Επιλογή φακέλου λήψης",
"download-finish-settings": {
"label": "Λήψη στο τέλος",
"prompt": {
"last-seconds": "Τελευταία x δευτερόλεπτα"
"last-percent": "Μετά από x ποσοστό",
"last-seconds": "Τελευταία x δευτερόλεπτα",
"title": "Ρύθμιση του πότε θα γίνεται λήψη"
},
"submenu": {
"advanced": "Για προχωρημένους",
"enabled": "Ενεργοποιημένο",
"mode": "Λειτουργία χρόνου",
"percent": "Ποσοστό",
"seconds": "Δευτερόλεπτα"
}
},
"download-playlist": "Λήψη λίστας αναπαραγωγής",
"presets": "Προεπιλογές",
"skip-existing": "Παράλειψη υπάρχοντων αρχείων"
},
"name": "Κατεβαστής",
"renderer": {
"can-not-update-progress": "Δεν μπορεί να ενημερωθεί η πρόοδος"
},
"templates": {
"button": "Λήψη"
}
},
"equalizer": {
"description": "Προσθέτει έναν ισοσταθμιστή στο πρόγραμμα αναπαραγωγής",
"menu": {
"presets": {
"label": "Προεπιλογές",
"list": {
"bass-booster": "Ενίσχυση μπάσου"
}
}
},
"name": "Ισοσταθμιστής"
},
"exponential-volume": {
"description": "Κάνει το ρυθμιστικό έντασης εκθετικό, ώστε να είναι ευκολότερη η επιλογή χαμηλότερων εντάσεων.",
"name": "Εκθετικός όγκος"
},
"in-app-menu": {
"description": "Δίνει στις γραμμές μενού μια φανταχτερή, σκοτεινή ή άλμπουμ-χρωματική εμφάνιση",
"menu": {
"hide-dom-window-controls": "Απόκρυψη στοιχείων ελέγχου παραθύρου DOM"
},
"name": "Μενού εντός της εφαρμογής"
},
"lumiastream": {
"description": "Προσθέτει υποστήριξη Lumia Stream",
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Προσθέτει υποστήριξη στίχων για τα περισσότερα τραγούδια",
"menu": {
"romanized-lyrics": "Ρομαντικοποιημένοι στίχοι"
},
"name": "Στίχοι Genius",
"renderer": {
"fetched-lyrics": "Στίχοι για το Genius"
}
},
"music-together": {
"description": "Μοιραστείτε μια λίστα αναπαραγωγής με άλλους. Όταν ο οικοδεσπότης παίζει ένα τραγούδι, όλοι οι άλλοι θα ακούσουν το ίδιο τραγούδι",
"dialog": {
"enter-host": "Εισαγωγή ID κεντρικού υπολογιστή"
},
"internal": {
"save": "Αποθήκευση",
"track-source": "Πηγή διαδρομής",
"unknown-user": "Άγνωστος χρήστης"
},
"menu": {
"connected-users": "Συνδεδεμένοι χρήστες"
"click-to-copy-id": "Αντιγραφή ID κεντρικού υπολογιστή",
"close": "Κλείσιμο Music Together",
"connected-users": "Συνδεδεμένοι χρήστες",
"disconnect": "Αποσύνδεση Music Together",
"empty-user": "Κανένας συνδεδεμένος χρήστης",
"host": "Κεντρικός υπολογιστής Music Together",
"join": "Γίνετε μέλος της Μουσικής Μαζί",
"permission": {
"all": "Επιτρέψτε στους επισκέπτες να ελέγχουν τη λίστα αναπαραγωγής και τον παίκτη",
"host-only": "Μόνο ο οικοδεσπότης μπορεί να ελέγχει τη λίστα αναπαραγωγής και τον παίκτη",
"playlist": "Επιτρέψτε στους επισκέπτες να ελέγχουν τη λίστα αναπαραγωγής"
},
"set-permission": "Άδεια ελέγχου αλλαγής",
"status": {
"disconnected": "Αποσυνδεδεμένο",
"guest": "Συνδεδεμένος ως επισκέπτης",
"host": "Συνδεδεμένος ως οικοδεσπότης"
}
},
"name": "Music Together [Beta]",
"toast": {
"add-song-failed": "Απέτυχε η προσθήκη τραγουδιού",
"remove-song-failed": "Απέτυχε η αφαίρεση τραγουδιού"
"closed": "Το Music Together έκλεισε",
"disconnected": "Το Music Together αποσυνδέθηκε",
"host-failed": "Απέτυχε να φιλοξενήσει το Μουσική Μαζί",
"id-copied": "Το ID κεντρικού υπολογιστή αντιγράφηκε στο πρόχειρο",
"id-copy-failed": "Απέτυχε η αντιγραφή ID κεντρικού υπολογιστή στο πρόχειρο",
"join-failed": "Απέτυχε να ενταχθεί στη Μουσική Μαζί",
"joined": "Ενωμένη μουσική μαζί",
"permission-changed": "Η άδεια «Μουσική Μαζί» άλλαξε σε «{{permission}}»",
"remove-song-failed": "Απέτυχε η αφαίρεση τραγουδιού",
"user-connected": "{{name}} εντάχθηκε στη Μουσική Μαζί",
"user-disconnected": "{{name}} αριστερά Μουσική Μαζί"
}
},
"navigation": {
"name": "Πλοήγηση"
"description": "Βέλη πλοήγησης Επόμενο/Πίσω ενσωματωμένα απευθείας στο περιβάλλον εργασίας, όπως στο αγαπημένο σας πρόγραμμα περιήγησης",
"name": "Πλοήγηση",
"templates": {
"back": {
"title": "Μετάβαση στην προηγούμενη σελίδα"
},
"forward": {
"title": "Μετάβαση στην επόμενη σελίδα"
}
}
},
"no-google-login": {
"description": "Αφαίρεση των κουμπιών και των συνδέσμων σύνδεσης Google από το περιβάλλον εργασίας",
"name": "No Google Login"
},
"notifications": {
"description": "Εμφάνιση ειδοποίησης όταν ξεκινάει η αναπαραγωγή ενός τραγουδιού (οι διαδραστικές ειδοποιήσεις είναι διαθέσιμες στα Windows)",
"menu": {
"interactive": "Διαδραστικές ειδοποιήσεις",
"interactive-settings": {
"label": "Διαδραστικές ρυθμίσεις",
"submenu": {
"hide-button-text": "Απόκρυψη κειμένου κουμπιού",
"refresh-on-play-pause": "Ανανέωση σε Αναπαραγωγή/Παύση",
"tray-controls": "Άνοιγμα/κλείσιμο με κλικ στο δίσκο"
}
},
"priority": "Προτεραιότητα κοινοποίησης",
"toast-style": "Στυλ τοστ",
"unpause-notification": "Εμφάνιση ειδοποίησης κατά την κατάργηση της παύσης"
},
"name": "Ειδοποιήσεις"
},
"performance-improvement": {
"description": "Βελτιώστε την απόδοση ενεργοποιώντας πειραματικές δέσμες ενεργειών",
"name": "Βελτίωση της απόδοσης με την ενεργοποίηση επικίνδυνων σεναρίωνΒελτίωση της απόδοσης [Beta]"
},
"picture-in-picture": {
"description": "Επιτρέπει την εναλλαγή της εφαρμογής σε λειτουργία εικόνας σε εικόνα",
"menu": {
"always-on-top": "Πάντα σε πρώτο πλάνο",
"hotkey": {
@ -409,26 +657,47 @@
"prompt": {
"keybind-options": {
"hotkey": "Πλήκτρο πρόσβασης"
}
},
"label": "Επιλέξτε ένα πλήκτρο συντόμευσης για να ενεργοποιήσετε την εικόνα στην εικόνα",
"title": "Πλήκτρο Hotkey Εικόνα-σε-Εικόνα"
}
},
"save-window-position": "Αποθήκευση θέσης παραθύρου",
"save-window-size": "Αποθήκευση μεγέθους παραθύρου"
"save-window-size": "Αποθήκευση μεγέθους παραθύρου",
"use-native-pip": "Χρήση εγγενούς PiP του προγράμματος περιήγησης"
},
"name": "Εικόνα-στην-εικόνα",
"templates": {
"button": "Εικόνα-στην-εικόνα"
}
},
"playback-speed": {
"description": "Ακούστε γρήγορα, ακούστε αργά! Προσθέτει ένα ρυθμιστικό που ελέγχει την ταχύτητα του τραγουδιού",
"name": "Ταχύτητα αναπαραγωγής",
"templates": {
"button": "Ταχύτητα"
}
},
"precise-volume": {
"description": "Ελέγξτε την ένταση του ήχου με ακρίβεια χρησιμοποιώντας τον τροχό του ποντικιού/τα πλήκτρα, με ένα προσαρμοσμένο HUD και προσαρμόσιμα βήματα έντασης",
"menu": {
"arrows-shortcuts": "Τοπικά πλήκτρα βέλους Έλεγχοι",
"custom-volume-steps": "Ορισμός προσαρμοσμένων βημάτων έντασης ήχου",
"global-shortcuts": "Παγκόσμια πλήκτρα συντόμευσης"
},
"name": "Ακριβής Ήχος",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Μείωση έντασης",
"increase": "Αύξηση έντασης"
}
},
"label": "Επιλέξτε Παγκόσμια δέσμευση πλήκτρων έντασης ήχου:",
"title": "Επιλέξτε Παγκόσμια δέσμευση πλήκτρων έντασης ήχου"
},
"volume-steps": {
"label": "Επιλέξτε Βήματα αύξησης/μείωσης έντασης ήχου",
"title": "Βήματα έντασης"
}
}
},
@ -436,46 +705,195 @@
"backend": {
"dialog": {
"quality-changer": {
"detail": "Τρέχουσα ποιότητα: {{quality}}"
"detail": "Τρέχουσα ποιότητα: {{quality}}",
"message": "Επιλογή ποιότητας βίντεο:",
"title": "Επιλογή ποιότητας βίντεο"
}
}
},
"description": "Επιτρέπει την αλλαγή της ποιότητας βίντεο με ένα κουμπί στην επικάλυψη βίντεο",
"name": "Αλλαγή ποιότητας βίντεο",
"renderer": {
"quality-settings-button": {
"label": "Άνοιγμα ρυθμίσεων ποιότητας αναπαραγωγέα"
}
}
},
"scrobbler": {
"description": "Προσθήκη υποστήριξης scrobbling (κ.λπ. last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Απέτυχε η πιστοποίηση ταυτότητας στο Last.fm\nΚρύψτε το αναδυόμενο παράθυρο μέχρι την επόμενη επανεκκίνηση.",
"title": "Αποτυχία ελέγχου ταυτότητας"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Ρυθμίσεις API Last.fm"
},
"listenbrainz": {
"token": "Εισάγετε το διακριτικό χρήστη ListenBrainz"
},
"scrobble-alternative-title": "Χρήση εναλλακτικών τίτλων",
"scrobble-other-media": "Scrobble άλλα μέσα ενημέρωσης"
},
"name": "Σκρόμπλερ",
"prompt": {
"lastfm": {
"api-key": "Κλειδί API Last.fm",
"api-secret": "Μυστικό API του Last.fm"
},
"listenbrainz": {
"token": {
"label": "Εισάγετε το διακριτικό χρήστη ListenBrainz:",
"title": "Κουπόνι ListenBrainz"
}
}
}
},
"shortcuts": {
"description": "Επιτρέπετε τον καθορισμό παγκόσμιων πλήκτρων άμεσης πρόσβασης για την παρακολούθηση (αναπαραγωγή/παύση/επόμενη/προηγούμενη) και την απενεργοποίηση του OSD πολυμέσων με παράκαμψη των πλήκτρων πολυμέσων, την ενεργοποίηση του Ctrl/CMD + F για αναζήτηση, την ενεργοποίηση της υποστήριξης Linux MPRIS για τα πλήκτρα πολυμέσων και προσαρμοσμένα πλήκτρα άμεσης πρόσβασης για προχωρημένους χρήστες",
"menu": {
"override-media-keys": "Παράκαμψη κλειδιών πολυμέσων",
"set-keybinds": "Ορισμός παγκόσμιων ελέγχων τραγουδιού"
},
"name": "Συντομεύσεις (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Επόμενο",
"play-pause": "Αναπαραγωγή / Παύση",
"previous": "Προηγούμενο"
}
},
"label": "Επιλέξτε Global Keybinds για το τραγούδι Έλεγχος:",
"title": "Παγκόσμια δέσμευση πλήκτρων"
}
}
},
"skip-disliked-songs": {
"description": "Παραλείπει τα αρεστά τραγούδια",
"name": "Παραλείψτε τα τραγούδια που δεν άρεσαν"
},
"skip-silences": {
"description": "Αυτόματη παράλειψη τμημάτων σιωπής σε τραγούδια",
"name": "Παραλείψτε τις σιωπές"
},
"sponsorblock": {
"description": "Παραλείπει αυτόματα μέρη που δεν είναι μουσικά, όπως intro/outro ή μέρη μουσικών βίντεο όπου δεν παίζεται το τραγούδι",
"name": "SponsorBlock"
},
"synced-lyrics": {
"description": "Παρέχει συγχρονισμένους στίχους σε τραγούδια, χρησιμοποιώντας παρόχους όπως η LRClib.",
"errors": {
"fetch": "⚠️ Προέκυψε σφάλμα κατά την ανάκτηση των στίχων.\n\tΠροσπαθήστε ξανά αργότερα.",
"not-found": "⚠️ Δεν βρέθηκαν στίχοι για αυτό το τραγούδι."
},
"menu": {
"default-text-string": {
"label": "Προεπιλεγμένος χαρακτήρας μεταξύ στίχων",
"tooltip": "Επιλέξτε τον προεπιλεγμένο χαρακτήρα που θα χρησιμοποιηθεί για το κενό μεταξύ των στίχων"
},
"line-effect": {
"label": "Επίδραση γραμμής",
"submenu": {
"fancy": {
"label": "Φανταχτερό",
"tooltip": "Χρήση μεγάλων εφέ που μοιάζουν με εφαρμογές στην τρέχουσα γραμμή"
},
"focus": {
"label": "Εστίαση",
"tooltip": "Κάντε μόνο την τρέχουσα γραμμή λευκή"
},
"offset": {
"label": "Μετατόπιση",
"tooltip": "Μετατόπιση προς τα δεξιά της τρέχουσας γραμμής"
},
"scale": {
"label": "Κλίμακα",
"tooltip": "Κλιμάκωση της τρέχουσας γραμμής"
}
},
"tooltip": "Επιλέξτε το εφέ που θα εφαρμοστεί στην τρέχουσα γραμμή"
},
"precise-timing": {
"label": "Κάντε τους στίχους τέλεια συγχρονισμένους",
"tooltip": "Υπολογίζει με ακρίβεια χιλιοστού του δευτερολέπτου την εμφάνιση της επόμενης γραμμής (μπορεί να έχει μικρή επίπτωση στην απόδοση)"
},
"romanization": {
"label": "Στίχοι Ρομαντικοποίηση",
"tooltip": "Αν οι στίχοι είναι σε διαφορετική γλώσσα, προσπαθήστε να εμφανίσετε μια λατινική έκδοση."
},
"show-lyrics-even-if-inexact": {
"label": "Εμφάνιση στίχων ακόμα και αν είναι ανακριβείς",
"tooltip": "Εάν το τραγούδι δεν βρεθεί, το πρόσθετο προσπαθεί ξανά με διαφορετικό ερώτημα αναζήτησης.\nΤο αποτέλεσμα της δεύτερης προσπάθειας μπορεί να μην είναι ακριβές."
},
"show-time-codes": {
"label": "Εμφάνιση κωδικών ώρας",
"tooltip": "Εμφάνιση των κωδικών ώρας δίπλα στους στίχους"
}
},
"name": "Συγχρονισμένοι στίχοι",
"refetch-btn": {
"fetching": "Φέρνοντας...",
"normal": "Στίχοι Refetch"
},
"warnings": {
"duration-mismatch": "⚠️ - Οι στίχοι ενδέχεται να μην είναι συγχρονισμένοι λόγω αναντιστοιχίας διάρκειας.",
"inexact": "⚠️ - Οι στίχοι για αυτό το τραγούδι μπορεί να μην είναι ακριβείς",
"instrumental": "⚠️ - Αυτό είναι ένα ορχηστρικό τραγούδι"
}
},
"taskbar-mediacontrol": {
"description": "Έλεγχος αναπαραγωγής από τη γραμμή εργασιών των Windows",
"name": "Έλεγχος μέσων γραμμής εργασιών"
},
"touchbar": {
"description": "Προσθέτει ένα γραφικό στοιχείο TouchBar για χρήστες macOS",
"name": "TouchBar"
},
"tuna-obs": {
"description": "Ενσωμάτωση με το plugin Tuna του OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Αποτρέπει την εμφάνιση του προγράμματος αναπαραγωγής κατά την αναπαραγωγή ενός τραγουδιού",
"name": "Ανεπαίσθητος παίκτης"
},
"video-toggle": {
"description": "Προσθέτει ένα κουμπί για εναλλαγή μεταξύ της λειτουργίας βίντεο/τραγουδιού. μπορεί επίσης προαιρετικά να αφαιρέσει ολόκληρη την καρτέλα βίντεο",
"menu": {
"align": {
"label": "Στοίχιση",
"submenu": {
"left": "Αριστερά",
"middle": "Middle",
"right": "Right"
"right": "Δεξιά"
}
},
"force-hide": "Αναγκαστική αφαίρεση καρτέλας βίντεο",
"mode": {
"label": "Mode"
"label": "Mode",
"submenu": {
"custom": "Προσαρμοσμένη εναλλαγή",
"disabled": "Απενεργοποιημένο",
"native": "Γηγενής εναλλαγή"
}
}
},
"name": "Εναλλαγή βίντεο",
"templates": {
"button": "Song"
"button-song": "Τραγούδι",
"button-video": "Βίντεο"
}
},
"visualizer": {
"description": "Προσθέτει έναν απεικονιστή στο πρόγραμμα αναπαραγωγής",
"menu": {
"visualizer-type": "Τύπος απεικονιστή"
},
"name": "Απεικονιστής"
}
}
}

View File

@ -156,6 +156,13 @@
"hide": "Hide",
"label": "Like buttons"
},
"custom-window-title": {
"label": "Custom window title",
"prompt": {
"label": "Enter custom window title: (leave empty to disable)",
"placeholder": "Example: YouTube Music"
}
},
"remove-upgrade-button": "Remove upgrade button",
"theme": {
"dialog": {
@ -333,6 +340,30 @@
"description": "Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts)",
"name": "Audio Compressor"
},
"auth-proxy-adapter": {
"description": "Support for the use of authentication proxy services",
"menu": {
"disable": "Disable Proxy Adapter",
"enable": "Enable Proxy Adapter",
"hostname": {
"label": "Hostname"
},
"port": {
"label": "Port"
}
},
"name": "Auth Proxy Adapter",
"prompt": {
"hostname": {
"title": "Proxy Hostname",
"label": "Enter hostname for local proxy server (requires restart):"
},
"port": {
"title": "Proxy Port",
"label": "Enter port for local proxy server (requires restart):"
}
}
},
"blur-nav-bar": {
"description": "Makes navigation bar transparent and blurry",
"name": "Blur Navigation Bar"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Open captions selector"
},
"toast": {
"caption-changed": "Caption changed to {{language}}",
"caption-disabled": "Captions disabled",
"no-captions": "No captions available for this song"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Configure a custom output media device for songs",
"menu": {
"device-selector": "Select Device"
},
"name": "Custom Output Device",
"prompt": {
"device-selector": {
"label": "Choose the output media device to be used",
"title": "Select Output Device"
}
}
},
"disable-autoplay": {
"description": "Makes song start in \"paused\" mode",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "Hide duration left",
"hide-github-button": "Hide GitHub link Button",
"play-on-youtube-music": "Play on YouTube Music",
"set-inactivity-timeout": "Set inactivity timeout"
"set-inactivity-timeout": "Set inactivity timeout",
"set-status-display-type": {
"label": "Status text",
"submenu": {
"youtube-music": "Listening to YouTube Music",
"artist": "Listening to {artist}",
"title": "Listening to {song title}"
}
}
},
"name": "Discord Rich Presence",
"prompt": {
@ -491,6 +548,18 @@
"button": "Download"
}
},
"equalizer": {
"description": "Adds an equalizer to the player",
"menu": {
"presets": {
"label": "Presets",
"list": {
"bass-booster": "Bass booster"
}
}
},
"name": "Equalizer"
},
"exponential-volume": {
"description": "Makes the volume slider exponential so it's easier to select lower volumes.",
"name": "Exponential Volume"
@ -564,7 +633,15 @@
},
"navigation": {
"description": "Next/Back navigation arrows directly integrated in the interface, like in your favorite browser",
"name": "Navigation"
"name": "Navigation",
"templates": {
"back": {
"title": "Go to previous page"
},
"forward": {
"title": "Go to next page"
}
}
},
"no-google-login": {
"description": "Remove Google login buttons and links from the interface",
@ -588,6 +665,10 @@
},
"name": "Notifications"
},
"performance-improvement": {
"description": "Improve performance by enabling experimental scripts",
"name": "Performance improvement [Beta]"
},
"picture-in-picture": {
"description": "Allows to switch the app to picture-in-picture mode",
"menu": {
@ -652,7 +733,12 @@
}
},
"description": "Allows changing the video quality with a button on the video overlay",
"name": "Video Quality Changer"
"name": "Video Quality Changer",
"renderer": {
"quality-settings-button": {
"label": "Open player quality changer"
}
}
},
"scrobbler": {
"description": "Add scrobbling support (etc. last.fm, Listenbrainz)",
@ -671,6 +757,8 @@
"listenbrainz": {
"token": "Enter ListenBrainz user token"
},
"scrobble-alternative-title": "Use alternative titles",
"scrobble-alternative-artist": "Use alternative artists",
"scrobble-other-media": "Scrobble other media"
},
"name": "Scrobbler",
@ -725,6 +813,14 @@
"not-found": "⚠️ No lyrics found for this song."
},
"menu": {
"preferred-provider": {
"label": "Preferred Provider",
"tooltip": "Choose the default provider to use",
"none": {
"label": "None",
"tooltip": "No preferred provider"
}
},
"default-text-string": {
"label": "Default character between lyrics",
"tooltip": "Choose the default character to use for the gap between lyrics"
@ -755,6 +851,10 @@
"label": "Make the lyrics perfectly synced",
"tooltip": "Calculate to the milisecond the display of the next line (can have a small impact on performance)"
},
"romanization": {
"label": "Romanize lyrics",
"tooltip": "If the lyrics are in a different language, try to display a latin version."
},
"show-lyrics-even-if-inexact": {
"label": "Show lyrics even if inexact",
"tooltip": "If the song is not found, the plugin tries again with a different search query.\nThe result from the second attempt may not be exact."
@ -783,10 +883,35 @@
"description": "Adds a TouchBar widget for macOS users",
"name": "TouchBar"
},
"transparent-player": {
"description": "Makes the app window transparent",
"name": "Transparent Player",
"menu": {
"opacity": {
"label": "Opacity",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Type",
"submenu": {
"acrylic": "Acrylic",
"mica": "Mica",
"tabbed": "Tabbed",
"none": "None"
}
}
}
},
"tuna-obs": {
"description": "Integration with OBS's plugin Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Prevents the player from popping up when playing a song",
"name": "Unobtrusive Player"
},
"video-toggle": {
"description": "Adds a button to switch between Video/Song mode. can also optionally remove the whole video tab",
"menu": {
@ -810,7 +935,8 @@
},
"name": "Video Toggle",
"templates": {
"button": "Song"
"button-song": "Song",
"button-video": "Video"
}
},
"visualizer": {
@ -819,18 +945,6 @@
"visualizer-type": "Visualizer Type"
},
"name": "Visualizer"
},
"equalizer": {
"description": "Adds an equalizer to the player",
"name": "Equalizer",
"menu": {
"presets": {
"label": "Presets",
"list": {
"bass-booster": "Bass booster"
}
}
}
}
}
}

View File

@ -2,14 +2,14 @@
"common": {
"console": {
"plugins": {
"execute-failed": "Error al ejecutar el plugin {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin {{pluginName}}: {{contextName}} ejecutado en {{ms}}ms",
"initialize-failed": "Error al inicializar plugin \"{{pluginName}}\"",
"load-all": "Cargando todos los plugins",
"load-failed": "Error al cargar el plugin \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" cargado",
"unload-failed": "No se ha podido descargar el plugin \"{{pluginName}}\"",
"unloaded": "Plugin \"{{pluginName}}\" descargado"
"execute-failed": "Error al ejecutar el complemento {{pluginName}}::{{contextName}}",
"executed-at-ms": "Complemento {{pluginName}}::{{contextName}} Ejecutó en {{ms}}ms",
"initialize-failed": "Error al inicializar el complemento \"{{pluginName}}\"",
"load-all": "Cargando todos los complementos",
"load-failed": "Error al cargar el complemento \"{{pluginName}}\"",
"loaded": "Complementos \"{{pluginName}}\" cargado",
"unload-failed": "No se ha podido descargar el complemento \"{{pluginName}}\"",
"unloaded": "Complemento \"{{pluginName}}\" descargado"
}
}
},
@ -21,7 +21,7 @@
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Carga finalizada. DevTools abiertos"
"dev-tools": "Carga finalizada. DevTools abierto"
},
"i18n": {
"loaded": "i18n cargado"
@ -36,7 +36,7 @@
"details": "¡Error sin repuesta!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Borrar caché de la aplicación"
"clearing-cache-after-20s": "Borrando caché de la aplicación"
},
"window": {
"tried-to-render-offscreen": "La ventana intentó mostrarse fuera de la pantalla, windowSize={{windowSize}}, displaySize={{displaySize}}, posicion={{position}}"
@ -45,21 +45,21 @@
"dialog": {
"hide-menu-enabled": {
"detail": "El menú está oculto, utiliza \"Alt\" para mostrarlo (o \"Escape\" si utilizas el menú integrado en la aplicación)",
"message": "Menu oculto esta deshabilitado",
"title": "Menú oculto activado"
"message": "El \"Menú Oculto\" está habilitado",
"title": "\"Menú oculto\" habilitado"
},
"need-to-restart": {
"buttons": {
"later": "Más tarde",
"restart-now": "Reiniciar ahora"
},
"detail": "\"{{pluginName}}\" se requiere reiniciar para que el plugin tome efecto",
"detail": "El complemento \"{{pluginName}}\" requiere reiniciar para tomar efecto",
"message": "\"{{pluginName}}\" necesita reiniciar",
"title": "Se requiere reinicio"
},
"unresponsive": {
"buttons": {
"quit": "Dejar",
"quit": "Salir",
"relaunch": "Volver a abrir",
"wait": "Espera"
},
@ -74,7 +74,7 @@
"ok": "OK"
},
"detail": "Una nueva versión está disponible y puede descargarse en {{downloadLink}}",
"message": "Ya está disponible una nueva versión",
"message": "Hay una nueva versión disponible",
"title": "Actualización disponible"
}
},
@ -84,7 +84,7 @@
"label": "Navegación",
"submenu": {
"copy-current-url": "Copiar la URL actual",
"go-back": "Regresar",
"go-back": "Atrás",
"go-forward": "Adelante",
"quit": "Salir",
"restart": "Reiniciar la aplicación"
@ -99,10 +99,10 @@
"auto-reset-app-cache": "Restablecer la caché de la aplicación al iniciarla",
"disable-hardware-acceleration": "Desactivar la aceleración por hardware",
"edit-config-json": "Editar config.json",
"override-user-agent": "sobrescribir User-Agent",
"restart-on-config-changes": "Reinicie al cambiar la configuración",
"override-user-agent": "Sobrescribir User-Agent",
"restart-on-config-changes": "Reiniciar al modificar la configuración",
"set-proxy": {
"label": "Definir proxy",
"label": "Establecer proxy",
"prompt": {
"label": "Introduzca la dirección del proxy: (déjela vacía para desactivarla)",
"placeholder": "Ejemplo: SOCKS5://127.0.0.1:9999",
@ -112,28 +112,28 @@
"toggle-dev-tools": "Activar DevTools"
}
},
"always-on-top": "Siempre arriba",
"always-on-top": "Siempre al frente",
"auto-update": "Actualización automática",
"hide-menu": {
"dialog": {
"message": "El menú se ocultará la próxima vez que lo inicies, usa [Alt] para mostrarlo (o pulsa [`] si usas el menú dentro de la aplicación)",
"title": "Ocultar menú habilitado"
"message": "El menú se ocultará la próxima vez que inicies la aplicación, usa [Alt] para mostrarlo (o pulsa [`] si usas el menú dentro de la aplicación)",
"title": "Menú oculto habilitado"
},
"label": "Ocultar menú"
},
"language": {
"dialog": {
"message": "El idioma se cambiará después de reiniciar",
"title": "Se cambio el idioma"
"title": "Se cambió el idioma"
},
"label": "Idioma",
"submenu": {
"to-help-translate": "¿Quieres ayudar a traducir? Haz clic aquí"
}
},
"resume-on-start": "Reanudar la última canción al iniciar la aplicación",
"single-instance-lock": "Bloquear en una instancia unica",
"start-at-login": "Comenzar al iniciar sesión",
"resume-on-start": "Reanudar la última canción reproducida al iniciar la aplicación",
"single-instance-lock": "Limitar a una única instancia",
"start-at-login": "Iniciar al iniciar sesión",
"starting-page": {
"label": "Página de inicio",
"unset": "Sin configurar"
@ -142,21 +142,28 @@
"label": "Bandeja",
"submenu": {
"disabled": "Desactivado",
"enabled-and-hide-app": "Activar y ocultar la aplicación",
"enabled-and-show-app": "Activado y mostrar aplicación",
"enabled-and-hide-app": "Habilitado y ocultar la aplicación",
"enabled-and-show-app": "Habilitado y mostrar aplicación",
"play-pause-on-click": "Reproducir/Pausar al hacer clic"
}
},
"visual-tweaks": {
"label": "Ajustes visuales",
"submenu": {
"custom-window-title": {
"label": "Título de ventana personalizado",
"prompt": {
"label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)",
"placeholder": "Ejemplo: YouTube Music"
}
},
"like-buttons": {
"default": "Predeterminado",
"force-show": "Forzar la visualización",
"hide": "Ocultar",
"label": "Botones de \"Me Gusta\""
},
"remove-upgrade-button": "Remover el botón de Actualización",
"remove-upgrade-button": "Eliminar el botón de Actualización",
"theme": {
"dialog": {
"button": {
@ -178,7 +185,7 @@
},
"plugins": {
"enabled": "Habilitado",
"label": "Plugins",
"label": "Complementos",
"new": "NUEVO"
},
"view": {
@ -212,14 +219,14 @@
"name": "Aumento de la velocidad de anuncios"
},
"adblocker": {
"description": "Bloquear todos los anuncios y el rastreo",
"description": "Bloquear todos los anuncios y el rastreo por defecto",
"menu": {
"blocker": "Bloqueador"
},
"name": "Bloqueador de anuncios"
},
"album-actions": {
"description": "Añade los botones \"No me gusta\", \"No me gusta\", \"Me gusta\" y \"No me gusta\" para aplicarlos a todas las canciones de una lista de reproducción o un álbum",
"description": "Añade los botones \"Quitar no me gusta\", \"No me gusta\", \"Me gusta\" y \"Quitar me gusta\" para aplicarlos a todas las canciones de una lista de reproducción o un álbum",
"name": "Acciones en el álbum"
},
"album-color-theme": {
@ -232,15 +239,15 @@
}
}
},
"name": "Color del álbum"
"name": "Tema de color del álbum"
},
"ambient-mode": {
"description": "Aplica un efecto de iluminación mediante la proyección de colores suaves del vídeo en el fondo de la pantalla",
"description": "Aplica un efecto de iluminación mediante la proyección de colores suaves extraídos del vídeo sobre el fondo de pantalla",
"menu": {
"blur-amount": {
"label": "Cantidad de desenfoque",
"submenu": {
"pixels": "{{blurAmount}} pixeles"
"pixels": "{{blurAmount}} píxeles"
}
},
"buffer": {
@ -250,7 +257,7 @@
}
},
"opacity": {
"label": "Transparencia",
"label": "Opacidad",
"submenu": {
"percent": "{{opacity}}%"
}
@ -280,7 +287,7 @@
"name": "Modo ambiente"
},
"amuse": {
"description": "Agrega soporte de YouTube Music para el widget Amuse de reproduciendo ahora de 6K Labs",
"description": "Agrega soporte a YouTube Music para el widget \"reproduciendo\" de Amuse por 6K Labs",
"name": "Amuse",
"response": {
"query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción."
@ -294,7 +301,7 @@
"allow": "Permitir",
"deny": "Denegar"
},
"message": "¿Permitir {{ID}} ({{origin}}) acceder a la API?",
"message": "¿Permitir que {{ID}} ({{origin}}) acceda a la API?",
"title": "Petición de autorización API"
}
},
@ -303,7 +310,7 @@
"label": "Estrategia de autorización",
"submenu": {
"auth-at-first": {
"label": "Autorizar la primera solicitud"
"label": "Autorizar a la primera solicitud"
},
"none": {
"label": "Sin autorización"
@ -333,13 +340,37 @@
"description": "Aplicar compresión al audio (reduce la diferencia entre las partes más fuertes y más suaves de una pista para que tenga un nivel más consistente)",
"name": "Compresor de audio"
},
"auth-proxy-adapter": {
"description": "Soporte para el uso de servicios de proxy de autenticación",
"menu": {
"disable": "Deshabilitar el adaptador proxy",
"enable": "Habilitar el adaptador proxy",
"hostname": {
"label": "Nombre de host"
},
"port": {
"label": "Puerto"
}
},
"name": "Adaptador de proxy de autenticación",
"prompt": {
"hostname": {
"label": "Ingrese el nombre de host del servidor proxy local (requiere reinicio):",
"title": "Nombre de host del proxy"
},
"port": {
"label": "Ingrese el puerto para el servidor de proxy local (requiere reinicio):",
"title": "Puerto de proxy"
}
}
},
"blur-nav-bar": {
"description": "Hace que la barra de navegación sea transparente y borrosa",
"description": "Hace que la barra de navegación se vea transparente y borrosa",
"name": "Desenfocar barra de navegación"
},
"bypass-age-restrictions": {
"description": "Saltar la verificación de edad de YouTube",
"name": "Saltar las restricciones de edad"
"description": "Saltarse la verificación de edad de YouTube",
"name": "Saltarse las restricciones de edad"
},
"captions-selector": {
"description": "Selector de subtítulos para pistas de audio de YouTube Music",
@ -350,17 +381,22 @@
"name": "Selector de subtítulos",
"prompt": {
"selector": {
"label": "Idioma actual: {{language}}",
"label": "Idioma actual de los subtítulos: {{language}}",
"none": "Ninguno",
"title": "Seleccionar idioma de los subtítulos"
}
},
"templates": {
"title": "Abra el selector de subtítulos"
"title": "Abrir el selector de subtítulos"
},
"toast": {
"caption-changed": "Subtítulos cambiados a {{language}}",
"caption-disabled": "Subtítulos desactivados",
"no-captions": "Sin subtítulos para ésta canción"
}
},
"compact-sidebar": {
"description": "Poner siempre la barra lateral en modo compacto",
"description": "Establecer siempre la barra lateral en modo compacto",
"name": "Barra lateral compacta"
},
"crossfade": {
@ -372,16 +408,29 @@
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Duración del fundido (ms)",
"fade-in-duration": "Duración del fundido de entrada (ms)",
"fade-out-duration": "Duración del fundido de salida (ms)",
"fade-scaling": {
"label": "Escala de fundido",
"label": "Escala del fundido",
"linear": "Lineal",
"logarithmic": "Logarítmico"
},
"seconds-before-end": "Crossfade N segundos antes del final"
"seconds-before-end": "Activar Crossfade N segundos antes del final"
},
"title": "Opciones de crossfade"
"title": "Opciones de Crossfade"
}
}
},
"custom-output-device": {
"description": "Configura un dispositivo de salida de audio personalizado para las canciones",
"menu": {
"device-selector": "Seleccionar un dispositivo"
},
"name": "Dispositivo de audio personalizado",
"prompt": {
"device-selector": {
"label": "Escoge el dispositivo de salida de audio que se va a usar",
"title": "Seleccionar un dispositivo de audio"
}
}
},
@ -408,9 +457,17 @@
"hide-duration-left": "Ocultar la duración restante",
"hide-github-button": "Ocultar el botón de enlace a GitHub",
"play-on-youtube-music": "Reproducir en YouTube Music",
"set-inactivity-timeout": "Establecer tiempo de inactividad"
"set-inactivity-timeout": "Establecer tiempo de inactividad",
"set-status-display-type": {
"label": "Texto de estado",
"submenu": {
"artist": "Escuchando a {artist}",
"title": "Escuchando {song title}",
"youtube-music": "Escuchando YouTube Music"
}
}
},
"name": "Estado de actividad de Discord",
"name": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Introduzca el tiempo de inactividad en segundos:",
@ -433,7 +490,7 @@
"ok": "OK"
},
"detail": "({{playlistSize}} canciones)",
"message": "Descargar Playlist {{playlistTitle}}",
"message": "Descargando lista de reproducción {{playlistTitle}}",
"title": "Descarga iniciada"
}
},
@ -445,45 +502,45 @@
"download-progress": "Descarga: {{percent}}%",
"downloading": "Descargando…",
"downloading-counter": "Descargando {{current}}/{{total}}…",
"downloading-playlist": "Descargar lista de reproducción \"{{playlistTitle}}\" - {{playlistSize}} canciones ({{playlistId}})",
"downloading-playlist": "Descargando lista de reproducción \"{{playlistTitle}}\" - {{playlistSize}} canciones ({{playlistId}})",
"error-while-downloading": "Error al descargar \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "La carpeta {{playlistFolder}} ya existe",
"getting-playlist-info": "Obteniendo información de la lista de reproducción…",
"loading": "Cargando…",
"playlist-has-only-one-song": "La lista de reproducción sólo tiene un elemento, descárgala directamente",
"playlist-id-not-found": "No se ha encontrado el ID de la lista de reproducción",
"playlist-has-only-one-song": "La lista de reproducción sólo tiene un elemento, descargándolo directamente",
"playlist-id-not-found": "No se ha encontrado la ID de la lista de reproducción",
"playlist-is-empty": "La lista de reproducción está vacía",
"playlist-is-mix-or-private": "Error obteniendo información de la lista de reproducción: asegúrese de que no es una lista privada o \"Mixed for you\"\n\n{{error}}",
"playlist-is-mix-or-private": "Error obteniendo la información de la lista de reproducción: asegúrese de que no es una lista privada o \"Mixed for you\"\n\n{{error}}",
"preparing-file": "Preparando archivo…",
"saving": "Guardando…",
"trying-to-get-playlist-id": "Intentando obtener el ID de la lista de reproducción: {{playlistId}}",
"trying-to-get-playlist-id": "Intentando obtener la ID de la lista de reproducción: {{playlistId}}",
"video-id-not-found": "Video no encontrado",
"writing-id3": "Escribiendo las etiquetas ID3…"
}
},
"description": "Descarga MP3 / audio fuente directamente desde la interfaz",
"description": "Descarga audio MP3 / fuente directamente desde la interfaz",
"menu": {
"choose-download-folder": "Elija la carpeta de descarga",
"download-finish-settings": {
"label": "Descargar al finalizar",
"prompt": {
"last-percent": "Después del x por ciento",
"last-percent": "Después de x porcentaje",
"last-seconds": "Últimos x segundos",
"title": "Configurar cuándo descargar"
},
"submenu": {
"advanced": "Avanzado",
"enabled": "Activado",
"enabled": "Habilitado",
"mode": "Modo de tiempo",
"percent": "Porcentaje",
"seconds": "Segundos"
}
},
"download-playlist": "Descargar lista de reproducción",
"presets": "Preajustes",
"presets": "Ajustes preestablecidos",
"skip-existing": "Saltar archivos existentes"
},
"name": "Descargador",
"name": "Gestor de descargas",
"renderer": {
"can-not-update-progress": "No se puede actualizar el progreso"
},
@ -504,7 +561,7 @@
"name": "Ecualizador"
},
"exponential-volume": {
"description": "Hace que el control deslizante de volumen sea exponencial para que sea más fácil seleccionar volúmenes más bajos.",
"description": "Hace que la barra de volumen sea exponencial para que sea más fácil seleccionar volúmenes más bajos.",
"name": "Volumen exponencial"
},
"in-app-menu": {
@ -519,19 +576,19 @@
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Añade el soporte para las letras para la mayoría de las canciones",
"description": "Añade soporte para letras para la mayoría de las canciones",
"menu": {
"romanized-lyrics": "Letras Romanizadas"
},
"name": "Letras Genius",
"renderer": {
"fetched-lyrics": "Letras recuperadas de Genius"
"fetched-lyrics": "Letras obtenidas de Genius"
}
},
"music-together": {
"description": "Comparte una lista de reproducción con los demás. Cuando el anfitrión reproduzca una canción, todos los demás escucharán la misma",
"dialog": {
"enter-host": "Introduzca el ID del host"
"enter-host": "Introduzca la ID del host"
},
"internal": {
"save": "Guardar",
@ -539,7 +596,7 @@
"unknown-user": "Usuario desconocido"
},
"menu": {
"click-to-copy-id": "Copiar el ID del host",
"click-to-copy-id": "Copiar la ID del host",
"close": "Cerrar Music Together",
"connected-users": "Usuarios conectados",
"disconnect": "Desactivar Music Together",
@ -549,7 +606,7 @@
"permission": {
"all": "Permite a los invitados controlar la lista de reproducción y el reproductor",
"host-only": "Sólo el anfitrión puede controlar la lista de reproducción y el reproductor",
"playlist": "Permita que los invitados controlen la lista de reproducción"
"playlist": "Permitir que los invitados controlen la lista de reproducción"
},
"set-permission": "Permiso de control de cambios",
"status": {
@ -562,11 +619,11 @@
"toast": {
"add-song-failed": "No se puede añadir la canción",
"closed": "Music Together cerrado",
"disconnected": "Music Together desconectados",
"host-failed": "Fallo el host de Music Together",
"id-copied": "ID del host copiado en el portapapeles",
"id-copy-failed": "No se ha podido copiar el ID del host en el portapapeles",
"join-failed": "Fallo en la unión a Music Together",
"disconnected": "Music Together desconectado",
"host-failed": "Fallo al hostear Music Together",
"id-copied": "ID del host copiada al portapapeles",
"id-copy-failed": "No se ha podido copiar la ID del host al portapapeles",
"join-failed": "Fallo al unirse a Music Together",
"joined": "Unido a Music Together",
"permission-changed": "Permiso de Music Together cambiado a \"{{permission}}\"",
"remove-song-failed": "Error al eliminar la canción",
@ -576,7 +633,15 @@
},
"navigation": {
"description": "Flechas de navegación Siguiente/Atrás directamente integradas en la interfaz, como en tu navegador favorito",
"name": "Navegación"
"name": "Navegación",
"templates": {
"back": {
"title": "Volver a la página anterior"
},
"forward": {
"title": "Ir a la siguiente página"
}
}
},
"no-google-login": {
"description": "Eliminar los botones y enlaces de inicio de sesión de Google de la interfaz",
@ -600,8 +665,12 @@
},
"name": "Notificaciones"
},
"performance-improvement": {
"description": "Mejore el rendimiento habilitando scripts experimentales",
"name": "Mejora del rendimiento [Beta]"
},
"picture-in-picture": {
"description": "Permite cambiar la aplicación al modo de imagen en imagen",
"description": "Permite cambiar la aplicación al modo picture-in-picture",
"menu": {
"always-on-top": "Siempre encima",
"hotkey": {
@ -610,17 +679,17 @@
"keybind-options": {
"hotkey": "Tecla de acceso rápido"
},
"label": "Elige una tecla de acceso rápido para activar la función de imagen en imagen",
"title": "Tecla de acceso directo a imagen en imagen"
"label": "Elige una tecla de acceso rápido para activar la función picture-in-picture",
"title": "Tecla de acceso directo a picture-in-picture"
}
},
"save-window-position": "Guardar la posición de la ventana",
"save-window-size": "Guardar tamaño de la ventana",
"use-native-pip": "Utilizar \"Dos imágenes a la vez\" PiP nativo del navegador"
"use-native-pip": "Utilizar PiP nativo del navegador"
},
"name": "Imagen en imagen",
"name": "Picture-in-picture",
"templates": {
"button": "Imagen en imagen"
"button": "Picture-in-picture"
}
},
"playback-speed": {
@ -631,7 +700,7 @@
}
},
"precise-volume": {
"description": "Controla el volumen de manera precisa utilizando la rueda del ratón/teclas de acceso rápido, con una interfaz personalizada y pasos de volumen personalizables",
"description": "Controla el volumen de manera precisa utilizando la rueda del ratón/teclas de acceso rápido, con una interfaz personalizada y niveles de volumen personalizables",
"menu": {
"arrows-shortcuts": "Controles de teclas de flechas locales",
"custom-volume-steps": "Establecer niveles de volumen personalizados",
@ -648,7 +717,7 @@
"title": "Combinaciones de teclas para el volumen"
},
"volume-steps": {
"label": "Escoge los pasos de aumento o disminución del volumen",
"label": "Escoge los niveles de aumento o disminución del volumen",
"title": "Niveles de volumen"
}
}
@ -664,7 +733,12 @@
}
},
"description": "Permite cambiar la calidad del vídeo con un botón sobre puesto en el vídeo",
"name": "Ajustador de calidad de vídeo"
"name": "Ajustador de calidad de vídeo",
"renderer": {
"quality-settings-button": {
"label": "Abrir selector de calidad del reproductor"
}
}
},
"scrobbler": {
"description": "Añadir soporte para scrobbling (last.fm, Listenbrainz, etc.)",
@ -683,7 +757,9 @@
"listenbrainz": {
"token": "Introduzca el token de usuario de ListenBrainz"
},
"scrobble-other-media": "Scrobble en otros medios"
"scrobble-alternative-artist": "Usar artistas alternativos",
"scrobble-alternative-title": "Usar títulos alternativos",
"scrobble-other-media": "Hacer Scrobble sobre otros medios"
},
"name": "Scrobbler",
"prompt": {
@ -700,7 +776,7 @@
}
},
"shortcuts": {
"description": "Permite configurar teclas de acceso rápido globales para la reproducción (reproducir/pausa/siguiente/anterior) y desactivar la OSD multimedia anulando las teclas multimedia, activar Ctrl/CMD + F para buscar, activar la compatibilidad con MPRIS de Linux para las teclas multimedia y teclas de acceso rápido personalizadas para usuarios avanzados",
"description": "Permite configurar teclas de acceso rápido globales para la reproducción (reproducir/pausa/siguiente/anterior) y desactivar el OSD multimedia anulando las teclas multimedia, activar Ctrl/CMD + F para buscar, activar la compatibilidad con MPRIS de Linux para las teclas multimedia y teclas de acceso rápido personalizadas para usuarios avanzados",
"menu": {
"override-media-keys": "Anular teclas de medios",
"set-keybinds": "Configurar controles globales de canciones"
@ -733,8 +809,8 @@
"synced-lyrics": {
"description": "Proporciona letras de canciones sincronizadas, utilizando proveedores como LRClib.",
"errors": {
"fetch": "⚠️ - Se ha producido un error al descargar la letra. Por favor, vuelve a intentarlo más tarde.",
"not-found": "⚠️ - No se ha encontrado ninguna letra para esta canción."
"fetch": "⚠️\tSe produjo un error al obtener la letra.\n\tPor favor, inténtelo de nuevo más tarde.",
"not-found": "⚠️ No se han encontrado letras para esta canción."
},
"menu": {
"default-text-string": {
@ -745,7 +821,8 @@
"label": "Efecto de la línea",
"submenu": {
"fancy": {
"label": "Elegante"
"label": "Elegante",
"tooltip": "Usar efectos grandes, similares a los de una aplicación, en la línea actual"
},
"focus": {
"label": "Enfoque",
@ -757,18 +834,30 @@
},
"scale": {
"label": "Escala",
"tooltip": "Escala de la línea actual"
"tooltip": "Escalar la línea actual"
}
},
"tooltip": "Elige el efecto que deseas aplicar a la línea actual"
},
"precise-timing": {
"label": "Haz que la letra esté perfectamente sincronizada",
"tooltip": "Calcular al milisegundo la visualización de la línea siguiente (puede tener un pequeño impacto en el rendimiento)"
"tooltip": "Calcular al milisegundo la visualización de la siguiente línea (puede tener un pequeño impacto en el rendimiento)"
},
"preferred-provider": {
"label": "Proveedor preferido",
"none": {
"label": "Ninguno",
"tooltip": "Ningún proveedor preferido"
},
"tooltip": "Elige el proveedor predeterminado que deseas usar"
},
"romanization": {
"label": "Romanizar letras",
"tooltip": "Si la letra está en un idioma diferente, intenta mostrar una versión en latín."
},
"show-lyrics-even-if-inexact": {
"label": "Mostrar la letra aunque sea inexacta",
"tooltip": "Si no se encuentra la canción, el complemento vuelve a intentarlo con una búsqueda diferente.\nEl resultado del segundo intento puede no ser exacto."
"tooltip": "Si no se encuentra la canción, el plugin vuelve a intentarlo con una búsqueda diferente.\nEl resultado del segundo intento puede no ser exacto."
},
"show-time-codes": {
"label": "Visualización del código de tiempo",
@ -777,35 +866,60 @@
},
"name": "Letras sincronizadas",
"refetch-btn": {
"fetching": "Recuperando...",
"fetching": "Obteniendo...",
"normal": "Volver a buscar letras"
},
"warnings": {
"duration-mismatch": "⚠️ - La letra puede estar desincronizada debido a un desajuste en la duración.",
"inexact": "⚠️ - La letra de esta canción puede no ser exacta",
"instrumental": "⚠️ - Se trata de una canción instrumental"
"instrumental": "⚠️ - Esta es una canción instrumental"
}
},
"taskbar-mediacontrol": {
"description": "Controla la reproducción desde la barra de tareas de Windows",
"name": "Control de medios de la barra de tareas"
"name": "Control de medios desde la barra de tareas"
},
"touchbar": {
"description": "Añade un widget TouchBar para los usuarios de macOS",
"name": "TouchBar"
},
"transparent-player": {
"description": "Hace que la ventana de la aplicación sea transparente",
"menu": {
"opacity": {
"label": "Opacidad",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Tipo",
"submenu": {
"acrylic": "Acrílico",
"mica": "Mica",
"none": "Ninguno",
"tabbed": "Con pestañas"
}
}
},
"name": "Reproductor transparente"
},
"tuna-obs": {
"description": "Integración con el complemento Tuna de OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Evita que el reproductor aparezca al reproducir una canción",
"name": "Reproductor discreto"
},
"video-toggle": {
"description": "Añade un botón para cambiar entre el modo Vídeo/Canción. también puede eliminar opcionalmente toda la pestaña de vídeo",
"description": "Añade un botón para cambiar entre el modo Vídeo/Canción. También puede eliminar opcionalmente toda la pestaña de vídeo",
"menu": {
"align": {
"label": "Alineación",
"submenu": {
"left": "Izquierda",
"middle": "Medio",
"middle": "Centro",
"right": "Derecha"
}
},
@ -821,7 +935,8 @@
},
"name": "Alternador de vídeo",
"templates": {
"button": "Canción"
"button-song": "Canción",
"button-video": "Vídeo"
}
},
"visualizer": {

View File

@ -53,10 +53,24 @@
"quit": "Välju",
"relaunch": "Käivita uuesti",
"wait": "Oota"
}
},
"detail": "Vabandame ebamugavuste pärast! Palun vali kuidas jätkata:",
"message": "Rakendus ei vasta ega reageeri",
"title": "Aken ei vasta ega reageeri"
},
"update-available": {
"buttons": {
"disable": "Lülita uuendused välja",
"download": "Laadi alla",
"ok": "Sobib"
},
"detail": "Saadaval on uus versioon, ning seda saad alla laadida siit {{downloadLink}}",
"message": "Uus versioon on saadaval",
"title": "Rakenduse uuendus on saadaval"
}
},
"menu": {
"about": "Rakenduse teave",
"navigation": {
"label": "Liikumine",
"submenu": {
@ -77,7 +91,18 @@
"disable-hardware-acceleration": "Lülita raudvaraline kiirendamine välja",
"edit-config-json": "Muuda config.json faili"
}
}
},
"language": {
"dialog": {
"message": "Keele muutmine jõustub peale uuesti käivitamist",
"title": "Keel on muutunud"
},
"label": "Keel",
"submenu": {
"to-help-translate": "Soovid aidata tõlkimisel? Klõpsi siin"
}
},
"resume-on-start": "Rakenduse käivitamisel jätka viimatiesitatud loo esitamist"
}
},
"plugins": {
@ -86,6 +111,7 @@
},
"view": {
"submenu": {
"toggle-fullscreen": "Lülita täisekraanivaade sisse/välja",
"zoom-in": "Suumi sisse",
"zoom-out": "Suumi välja"
}
@ -128,6 +154,12 @@
"submenu": {
"pixels": "{{quality}} pikslit"
}
},
"size": {
"label": "Suurus",
"submenu": {
"percent": "{{size}}%"
}
}
}
},
@ -148,6 +180,23 @@
"navigation": {
"name": "Liikumine"
},
"no-google-login": {
"description": "Eemalda kasutajaliidesest Google'i sisselogimisnupud",
"name": "Elu ilma Google'i sisselogimiseta"
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Praegune kvaliteet: {{quality}}",
"message": "Vali video kvaliteet:",
"title": "Videokvaliteedi valik"
}
}
},
"description": "Võimaldab muuta video kvaliteeti nupust, mis asub video ülekattes",
"name": "Videokvaliteedi muutja"
},
"scrobbler": {
"description": "Lisa kraasimise tugi (last.fm, Listenbrainz, jne)",
"dialog": {

View File

@ -0,0 +1,7 @@
{
"language": {
"code": "eu",
"local-name": "Euskara",
"name": "Basque"
}
}

View File

@ -81,12 +81,12 @@
"menu": {
"about": "درباره",
"navigation": {
"label": "ناوبری",
"label": "کنترل‌های رابط",
"submenu": {
"copy-current-url": "کپی کردن URL فعلی",
"go-back": "بازگشت",
"go-forward": "حرکت به جلو",
"quit": "خروجی",
"copy-current-url": "کپی کردن لینک صفحه فعلی",
"go-back": "صفحه قبل",
"go-forward": "صفحه بعدی",
"quit": "خروج از برنامه",
"restart": "راه‌اندازی مجدد برنامه"
}
},
@ -98,8 +98,8 @@
"submenu": {
"auto-reset-app-cache": "ریست کردن حافظه کش برنامه هنگام شروع",
"disable-hardware-acceleration": "غیرفعال کردن شتاب سخت‌افزاری",
"edit-config-json": "ویرایش config.json",
"override-user-agent": "تغییر User-Agent",
"edit-config-json": "config.json ویرایش",
"override-user-agent": "User-Agent تغییر",
"restart-on-config-changes": "راه‌اندازی مجدد در صورت تغییرات در پیکربندی",
"set-proxy": {
"label": "تنظیم پراکسی",
@ -109,7 +109,7 @@
"title": "تنظیم پراکسی"
}
},
"toggle-dev-tools": "باز کردن DevTools"
"toggle-dev-tools": "DevTools باز کردن"
}
},
"always-on-top": "همیشه در بالا",
@ -168,7 +168,7 @@
},
"label": "تم",
"submenu": {
"import-css-file": "وارد کردن فایل CSS سفارشی",
"import-css-file": "سفارشی CSS وارد کردن فایل",
"no-theme": "بدون تم"
}
}
@ -177,7 +177,7 @@
}
},
"plugins": {
"enabled": "فعال",
"enabled": "فعال/غیرفعال کردن",
"label": "افزونه‌ها",
"new": "جدید"
},
@ -187,7 +187,7 @@
"force-reload": "اجبار به بارگذاری مجدد",
"reload": "بارگذاری مجدد",
"reset-zoom": "اندازه واقعی",
"toggle-fullscreen": "تغییر به تمام‌صفحه",
"toggle-fullscreen": "تغییر به تمام‌ صفحه",
"zoom-in": "بزرگنمایی",
"zoom-out": "کوچکنمایی"
}
@ -219,7 +219,7 @@
"name": "مسدودکننده تبلیغات"
},
"album-actions": {
"description": "افزودن دکمه‌های \"برگرفتن ناپسند\"، \"ناپسند\"، \"پسند\"، و \"حذف پسند\" برای اعمال آنها روی همه آهنگ‌ها در یک فهرست پخش یا آلبوم",
"description": "اضافه کردن دکمه‌های عدم پسندیدن، پسندیدن و لغو پسندیدن برای اعمال این تغییرات به تمامی آهنگ‌های یک فهرست پخش یا آلبوم",
"name": "عملیات آلبوم"
},
"album-color-theme": {
@ -250,7 +250,10 @@
}
},
"opacity": {
"label": "شفافیت"
"label": "شفافیت",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "کیفیت",
@ -259,7 +262,10 @@
}
},
"size": {
"label": "اندازه"
"label": "اندازه",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "انتقال نرمی",
@ -273,8 +279,15 @@
},
"name": "حالت محیطی"
},
"amuse": {
"description": "حالا ویجت Amuse از YouTube Music هم پشتیبانی می‌کنه! (توسط 6K Labs)",
"name": "Amuse",
"response": {
"query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید."
}
},
"api-server": {
"description": "افزودن یک سرور API برای کنترل پخش‌کننده",
"description": "برای کنترل پخش‌کننده API افزودن یک سرور",
"dialog": {
"request": {
"buttons": {
@ -304,14 +317,14 @@
"label": "پورت"
}
},
"name": "سرور API [بتا]",
"name": "[بتا]API سرور",
"prompt": {
"hostname": {
"label": "نام میزبان را برای سرور API وارد کنید (مثل 0.0.0.0):",
"label": "وارد کنید (مثل 0.0.0.0): API نام میزبان را برای سرور",
"title": "نام میزبان"
},
"port": {
"label": "پورت را برای سرور API وارد کنید:",
"label": "وارد کنید: API پورت را برای سرور",
"title": "پورت"
}
}
@ -320,9 +333,33 @@
"description": "اعمال فشرده‌سازی به صدا (کاهش حجم بلندترین بخش‌های سیگنال و افزایش حجم بخش‌های نرم‌تر)",
"name": "فشرده‌ساز صدا"
},
"auth-proxy-adapter": {
"description": "پشتیبانی برای استفاده از سرویس‌های پروکسی احراز هویت",
"menu": {
"disable": "غیرفعال کردن آداپتور پروکسی",
"enable": "فعال کردن آداپتور پروکسی",
"hostname": {
"label": "نام میزبان"
},
"port": {
"label": "پورت"
}
},
"name": "آداپتور پروکسی احراز هویت",
"prompt": {
"hostname": {
"label": "نام میزبان را برای سرور پروکسی محلی وارد کنید (نیاز به راه اندازی مجدد دارد):",
"title": "پروکسی نام میزبان"
},
"port": {
"label": "پورت مربوط به پروکسی سرور محلی را وارد کنید(نیاز به راه اندازی مجدد دارد):",
"title": "پورت پروکسی"
}
}
},
"blur-nav-bar": {
"description": "شفاف و محو کردن نوار ناوبری",
"name": "محو کردن نوار ناوبری"
"description": "شفاف و محو کردن نوار کنترل",
"name": "محو کردن نوار کنترل"
},
"bypass-age-restrictions": {
"description": "دور زدن تأیید سن یوتیوب",
@ -344,6 +381,11 @@
},
"templates": {
"title": "باز کردن انتخاب‌کننده زیرنویس"
},
"toast": {
"caption-changed": "زیرنویس تغییر کرد به {{language}}",
"caption-disabled": "زیرنویس غیرفعال شده",
"no-captions": "برای این آهنگ زیرنویسی موجود نیست"
}
},
"compact-sidebar": {
@ -381,27 +423,27 @@
},
"discord": {
"backend": {
"already-connected": "تلاش برای اتصال با اتصال فعال",
"connected": "متصل به Discord",
"disconnected": "قطع اتصال از Discord"
"already-connected": "تلاش برای برقراری ارتباط با اتصال فعال",
"connected": "متصل به دیسکورد",
"disconnected": "ارتباط با دیسکورد قطع شد"
},
"description": "نمایش آنچه گوش می‌دهید به دوستان با Rich Presence",
"description": "Rich Presence نمایش آنچه گوش می‌دهید به دوستان با",
"menu": {
"auto-reconnect": "اتصال خودکار مجدد",
"auto-reconnect": "اتصال خودکار",
"clear-activity": "پاک کردن فعالیت",
"clear-activity-after-timeout": "پاک کردن فعالیت پس از تایم‌اوت",
"connected": "متصل",
"disconnected": "قطع شده",
"clear-activity-after-timeout": "حذف فعالیت پس از اتمام زمان تعیین‌شده",
"connected": "اتصال برقرار شد",
"disconnected": "اتصال قطع شد",
"hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده",
"hide-github-button": "مخفی کردن دکمه لینک GitHub",
"play-on-youtube-music": "پخش در یوتیوب موسیقی",
"set-inactivity-timeout": "تنظیم تایم‌اوت عدم فعالیت"
"hide-github-button": "مخفی کردن دکمه لینک گیت هاب",
"play-on-youtube-music": "پخش در یوتیوب موزیک",
"set-inactivity-timeout": "تنظیم زمان عدم فعالیت"
},
"name": "Rich Presence در Discord",
"name": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "ورود تایم‌اوت عدم فعالیت به ثانیه:",
"title": "تنظیم تایم‌اوت عدم فعالیت"
"label": "محدودیت زمان عدم فعالیت را به ثانیه وارد کنید:",
"title": "تنظیم زمان عدم فعالیت"
}
}
},
@ -478,6 +520,18 @@
"button": "دانلود"
}
},
"equalizer": {
"description": "اضافه کردن یک اکولایزر به پخش‌کننده",
"menu": {
"presets": {
"label": "تنظیمات از پیش تعیین شده",
"list": {
"bass-booster": "تقویت‌کننده باس صدا"
}
}
},
"name": "اکولایزر"
},
"exponential-volume": {
"description": "نوار لغزنده حجم را به صورت نمایی می‌سازد تا انتخاب حجم‌های پایین‌تر آسان‌تر شود.",
"name": "حجم نمایی"
@ -490,17 +544,17 @@
"name": "منوی داخل برنامه"
},
"lumiastream": {
"description": "افزودن پشتیبانی از Lumia Stream",
"description": "Lumia Stream افزودن پشتیبانی از",
"name": "Lumia Stream [بتا]"
},
"lyrics-genius": {
"description": "افزودن پشتیبانی از متن آهنگ برای بیشتر آهنگ‌ها",
"description": "افزودن متن ترانه پشتیبان برای اکثر ترانه ها",
"menu": {
"romanized-lyrics": "متن رومی‌شده"
"romanized-lyrics": "الفبای لاتین برای آهنگ‌هایی با الفبای شرقی (فینگلیش)"
},
"name": "متن آهنگ Genius",
"name": "Genius متن آهنگ",
"renderer": {
"fetched-lyrics": "متن آهنگ از Genius بازیابی شد"
"fetched-lyrics": "بازیابی شد Genius متن ترانه توسط"
}
},
"music-together": {
@ -536,13 +590,13 @@
"name": "Music Together [بتا]",
"toast": {
"add-song-failed": "افزودن آهنگ با شکست مواجه شد",
"closed": "Music Together بسته شد",
"disconnected": "قطع اتصال Music Together",
"host-failed": "میزبانی Music Together با شکست مواجه شد",
"closed": "بسته شد Music Together",
"disconnected": "Music Together قطع اتصال",
"host-failed": "با شکست مواجه شد Music Together میزبانی",
"id-copied": "شناسه میزبان به کلیپ‌بورد کپی شد",
"id-copy-failed": "کپی شناسه میزبان به کلیپ‌بورد با شکست مواجه شد",
"join-failed": "پیوستن به Music Together با شکست مواجه شد",
"joined": "به Music Together پیوست",
"join-failed": "با شکست مواجه شد Music Together پیوستن به",
"joined": "پیوست Music Together به",
"permission-changed": "مجوز Music Together به \"{{permission}}\" تغییر یافت",
"remove-song-failed": "حذف آهنگ با شکست مواجه شد",
"user-connected": "{{name}} به Music Together پیوست",
@ -551,11 +605,19 @@
},
"navigation": {
"description": "بعدی/قبلی به طور مستقیم در رابط یکپارچه شده‌اند، مانند مرورگر مورد علاقه شما",
"name": "ناوبری"
"name": "کنترل های رابط",
"templates": {
"back": {
"title": "برو به صفحه قبل"
},
"forward": {
"title": "برو به صفحه بعد"
}
}
},
"no-google-login": {
"description": "حذف دکمه‌های ورود به سیستم Google و لینک‌ها از رابط",
"name": "بدون ورود به Google"
"description": "حذف دکمه‌ها و لینک‌های ورود به گوگل از رابط کاربری",
"name": "بدون ورود به گوگل"
},
"notifications": {
"description": "نمایش اعلان هنگامی که آهنگی شروع به پخش می‌کند (اعلان‌های تعاملی در ویندوز در دسترس هستند)",
@ -566,20 +628,265 @@
"submenu": {
"hide-button-text": "مخفی کردن متن دکمه",
"refresh-on-play-pause": "تازه‌سازی در پخش/توقف",
"tray-controls": "باز/بسته شدن با کلیک روی سینی"
"tray-controls": "باز/بسته شدن با کلیک روی آیکون در نوار وظیفه"
}
},
"priority": "اولویت اعلان",
"toast-style": "سبک Toast",
"toast-style": "Toast سبک",
"unpause-notification": "نمایش اعلان هنگام از سرگیری پخش"
},
"name": "اعلان‌ها"
},
"performance-improvement": {
"description": "بهبود عملکرد با فعال کردن اسکریپت‌های آزمایشی",
"name": "بهبود عملکرد [بتا]"
},
"picture-in-picture": {
"description": "اجازه می‌دهد تا برنامه به حالت تصویر در تصویر تغییر کند",
"menu": {
"always-on-top": "همیشه در بالا"
"always-on-top": "همیشه در بالا",
"hotkey": {
"label": "کلید میانبر",
"prompt": {
"keybind-options": {
"hotkey": "کلید میانبر"
},
"label": "یک کلید میانبر انتخاب کنید برای فعال/غیرفعال کردن حالت تصویر در تصویر",
"title": "کلید میانبر برای حالت تصویر در تصویر"
}
},
"save-window-position": "ذخیره موقعیت پنجره",
"save-window-size": "ذخیره اندازه پنجره",
"use-native-pip": "استفاده از حالت تصویر در تصویر اصلی مرورگر"
},
"name": "تصویر در تصویر",
"templates": {
"button": "تصویر در تصویر"
}
},
"playback-speed": {
"description": "به سرعت گوش بده، به آرامی گوش بده! یک دکمه کشویی برای تنظیم سرعت آهنگ اضافه شد",
"name": "سرعت پخش",
"templates": {
"button": "سرعت"
}
},
"precise-volume": {
"description": "کنترل دقیق صدا با استفاده از چرخ موس/میانبرها، همراه با HUD سفارشی و مراحل تنظیم حجم قابل تنظیم",
"menu": {
"arrows-shortcuts": "میانبرهای کلیدهای فلشی",
"custom-volume-steps": "مراحل تنظیم صدای دلخواه",
"global-shortcuts": "کلید های میانبر جهانی"
},
"name": "صدای دقیق",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "کاهش صدا",
"increase": "افزایش صدا"
},
"label": "انتخاب کلیدهای میانبر سراسری صدا:",
"title": "میانبرهای کلید سراسری صدا"
},
"volume-steps": {
"label": "مراحل انتخاب افزایش/کاهش صدا",
"title": "سطح صدا"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "کیفیت کنونی: {{quality}}",
"message": "انتخاب کیفیت ویدیو:",
"title": "انتخاب کیفیت ویدیو"
}
}
},
"description": "امکان تغییر کیفیت ویدیو با استفاده از دکمه در رابط پخش ویدیو",
"name": "تغییر دهنده کیفیت ویدیو",
"renderer": {
"quality-settings-button": {
"label": "باز کردن تغییر دهنده کیفیت پخش کننده"
}
}
},
"scrobbler": {
"description": "اضافه کردن پشتیبانی از اسکرابلینگ (etc. last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "احراز هویت با Last.fm ناموفق بود\nپنجره شناور را تا راه‌اندازی مجدد بعدی مخفی کن.",
"title": "احراز هویت ناموفق بود"
}
}
},
"menu": {
"lastfm": {
"api-settings": "تنظیمات \"Last.fm \"API"
},
"listenbrainz": {
"token": "توکن کاربری ListenBrainz را وارد کنید"
},
"scrobble-alternative-title": "از عناوین جایگزین استفاده کنید",
"scrobble-other-media": "ردیابی رسانه‌های دیگر"
},
"name": "ابزار ثبت‌کننده‌ی آهنگ",
"prompt": {
"lastfm": {
"api-key": "کلید Last.fm API",
"api-secret": "API مخفی Last.fm"
},
"listenbrainz": {
"token": {
"label": "توکن کاربری ListenBrainz خود را وارد کنید:",
"title": "توکن ListenBrainz"
}
}
}
},
"shortcuts": {
"description": "امکان تنظیم میانبرهای سراسری برای کنترل (پخش/توقف/بعدی/قبلی) و خاموش کردن OSD رسانه با بازنویسی کلیدهای رسانه‌ای، فعال‌سازی Ctrl/CMD + F برای جستجو، فعال‌سازی پشتیبانی MPRIS در لینوکس برای کلیدهای رسانه‌ای، و میانبرهای سفارشی برای کاربران پیشرفته",
"menu": {
"override-media-keys": "تغییر عملکرد کلیدهای رسانه‌",
"set-keybinds": "تنظیم کنترل‌های سراسری آهنگ"
},
"name": "میانبرها (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "بعدی",
"play-pause": "پخش / توقف",
"previous": "قبلی"
},
"label": "انتخاب میانبرهای سراسری برای کنترل آهنگ‌ها:",
"title": "میانبرهای کلیدی سراسری"
}
}
},
"skip-disliked-songs": {
"description": "خودکار آهنگ های غیر موردعلاقه رد میشن",
"name": "رد آهنگ‌های غیر مورد علاقه"
},
"skip-silences": {
"description": "رد خودکار بخش‌های بی صدا آهنگ ها",
"name": "رد بخش‌های بی‌صدا"
},
"sponsorblock": {
"description": "به‌طور خودکار بخش‌های غیرموسیقی مانند مقدمه/پایان یا قسمت‌هایی از ویدیوهای موسیقی که آهنگ در آن پخش نمی‌شود را رد می‌کند",
"name": "مسدودکننده اسپانسر"
},
"synced-lyrics": {
"description": "ارائه متن ترانه‌ها به صورت هماهنگ با آهنگ‌ها، با استفاده از ارائه‌دهندگانی مانند LRClib.",
"errors": {
"fetch": "⚠️هنگام بارگیری متن ترانه خطایی رخ داده است.\n\tلطفاً بعداً دوباره تلاش کنید.",
"not-found": "⚠️ متنی برای این ترانه پیدا نشد."
},
"menu": {
"default-text-string": {
"label": "حرف/کاراکتر پیش‌فرض بین متن‌های ترانه",
"tooltip": "حرف/کاراکتر پیش‌فرض را برای فاصله بین متن‌های ترانه انتخاب کنید"
},
"line-effect": {
"label": "افکت خط متن",
"submenu": {
"fancy": {
"label": "شیک",
"tooltip": "استفاده از افکت‌های بزرگ و شبیه به اپلیکیشن‌ها برای خط فعلی"
},
"focus": {
"label": "تمرکز",
"tooltip": "فقط خط فعلی رو سفید کن"
},
"offset": {
"label": "جابجایی",
"tooltip": "جابجایی خط فعلی به سمت راست"
},
"scale": {
"label": "مقیاس",
"tooltip": "تغییر اندازه خط فعلی"
}
},
"tooltip": "افکت مورد نظر را برای خط فعلی انتخاب کنید"
},
"precise-timing": {
"label": "هماهنگ‌سازی کامل متن ترانه‌",
"tooltip": "محاسبه دقیق نمایش خط بعدی تا میلی‌ثانیه (ممکن است تاثیر کمی بر عملکرد داشته باشد)"
},
"romanization": {
"label": "اشعار رومی شده",
"tooltip": "اگر اشعار به زبانی متفاوت هستند، سعی کنید نسخه لاتین را نمایش دهید."
},
"show-lyrics-even-if-inexact": {
"label": "نمایش متن ترانه ها حتی اگر دقیق نباشد",
"tooltip": "اگر آهنگ پیدا نشد، افزونه دوباره با یک جستجوی متفاوت امتحان می‌کند.\nنتیجهی این تلاش ممکن است دقیق نباشد."
},
"show-time-codes": {
"label": "نمایش زمان‌بندی‌ها",
"tooltip": "نمایش زمان‌بندی‌ها کنار متن ترانه‌"
}
},
"name": "متن ترانه هماهنگ شد",
"refetch-btn": {
"fetching": "در حال بارگذاری...",
"normal": "دریافت مجدد متن ترانه"
},
"warnings": {
"duration-mismatch": "⚠️ - ممکن است متن ترانه به دلیل عدم تطابق زمان با مشکل هماهنگی مواجه شود.",
"inexact": "⚠️ - ممکن است متن ترانه برای این آهنگ دقیق نباشد",
"instrumental": "⚠️ - این آهنگ بی کلام است"
}
},
"taskbar-mediacontrol": {
"description": "کنترل پخش از نوار وظیفه ویندوز(taskbar)",
"name": "کنترل رسانه از نوار وظیفه (taskbar)"
},
"touchbar": {
"description": "افزودن ویجت TouchBar برای کاربران macOS",
"name": "نوار لمسی"
},
"tuna-obs": {
"description": "ادغام با پلاگین Tuna در OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "هنگام پخش یک آهنگ از پخش کننده جلوگیری می کند",
"name": "پخش‌کننده بی نظیر"
},
"video-toggle": {
"description": "دکمه‌ای اضافه می‌کند برای جابجایی بین حالت ویدیو/آهنگ. همچنین به صورت اختیاری می‌تواند تب ویدیو را حذف کند",
"menu": {
"align": {
"label": "چینش",
"submenu": {
"left": "چپ",
"middle": "میانه",
"right": "راست"
}
},
"force-hide": "حذف اجباری تب ویدیو",
"mode": {
"label": "حالت",
"submenu": {
"custom": "حالت شخصی‌سازی شده",
"disabled": "غیرفعال",
"native": "حالت پیشفرض"
}
}
},
"name": "ویدیو به آهنگ",
"templates": {
"button-song": "ترانه",
"button-video": "ویدیو"
}
},
"visualizer": {
"description": "اضافه کردن نمایش‌دهنده تصویری به پخش‌کننده",
"menu": {
"visualizer-type": "نوع نمایش‌دهنده تصویری"
},
"name": "نمایش‌دهنده تصویری"
}
}
}

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Visuaalisia tehosteita",
"submenu": {
"custom-window-title": {
"label": "Mukautettu ikkunan otsikko",
"prompt": {
"label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)",
"placeholder": "Esimerkki: YouTube Music"
}
},
"like-buttons": {
"default": "Vakio",
"force-show": "Pakota näyttämään",
@ -207,6 +214,10 @@
}
},
"plugins": {
"ad-speedup": {
"description": "Jos mainos toistuu, mykistä ääni ja aseta toistonopeus 16x:een",
"name": "Mainoksen nopeutus"
},
"adblocker": {
"description": "Estä kaikki mainokset ja seuranta",
"menu": {
@ -272,12 +283,87 @@
"use-fullscreen": {
"label": "Käytetään koko näytön tilaa"
}
},
"name": "Tunnelmallinen Tila"
},
"amuse": {
"description": "Lisää YouTube Music tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot."
}
},
"api-server": {
"description": "Lisää API-palvelimen hallitsemaan soitinta",
"dialog": {
"request": {
"buttons": {
"allow": "Hyväksy",
"deny": "Kiellä"
},
"message": "Sallitaanko {{ID}} ({{origin}}) pääsy API:in?",
"title": "API vahvistuspyyntö"
}
},
"menu": {
"auth-strategy": {
"label": "Valtuutus-strategia",
"submenu": {
"auth-at-first": {
"label": "Valtuuta ensimmäisellä kyselyllä"
},
"none": {
"label": "Ei valtuuksia"
}
}
},
"hostname": {
"label": "Isäntänimi"
},
"port": {
"label": "Portti"
}
},
"name": "API Serveri [Beta]",
"prompt": {
"hostname": {
"label": "Syötä isäntänimi (esimerkiksi 0.0.0.0) API-palvelimelle:",
"title": "Isäntänimi"
},
"port": {
"label": "Syötä API-palvelimen portti:",
"title": "Portti"
}
}
},
"audio-compressor": {
"description": "Lisää äänen kompressointia (hiljentää voimakkaimpien äänien voimakkuutta ja tehostaa pehmeämpien äänien voimakkuutta)",
"name": "Äänen Kompressoija"
},
"auth-proxy-adapter": {
"description": "Tukee todennusvälipalvelinten käyttöä",
"menu": {
"disable": "Poista välipalvelimen adapteri pois käytöstä",
"enable": "Aseta välipalvelimen adapteri käyttöön",
"hostname": {
"label": "Isäntänimi"
},
"port": {
"label": "Portti"
}
},
"name": "Todennusvälipalvelinadapteri",
"prompt": {
"hostname": {
"label": "Syötä paikallisen välipalvelimen isäntänimi (vaatii uudelleenkäynnistyksen):",
"title": "Välipalvelimen isäntänimi"
},
"port": {
"label": "Syötä paikallisen välipalvelimen portti (vaatii uudelleenkäynnistyksen):",
"title": "Välipalvelimen portti"
}
}
},
"blur-nav-bar": {
"description": "Tekee siirtymäpalkista läpikuultavan ja sumean",
"name": "Sumenna Siirtymäpalkki"
@ -302,6 +388,11 @@
},
"templates": {
"title": "Avaa tekstitysten valitsin"
},
"toast": {
"caption-changed": "Tekstitys vaihdettu kieleksi {{language}}",
"caption-disabled": "Tekstitykset pois päältä",
"no-captions": "Tekstityksiä ei ole saatavilla tälle kappaleelle"
}
},
"compact-sidebar": {
@ -332,6 +423,9 @@
},
"disable-autoplay": {
"description": "Kappaleet alkavat \"pysäytetty\" tilassa",
"menu": {
"apply-once": "Käytetään vain käynnistäessä"
},
"name": "Poista automaattinen toisto käytöstä"
},
"discord": {
@ -406,6 +500,21 @@
"description": "Lataa MP3- tai lähdetiedoston suoraan käyttöliittymästä",
"menu": {
"choose-download-folder": "Valitse latauskansio",
"download-finish-settings": {
"label": "Lataa toiston päätyttyä",
"prompt": {
"last-percent": "x prosentin jälkeen",
"last-seconds": "Viimeiset x sekuntia",
"title": "Määritä milloin ladata"
},
"submenu": {
"advanced": "Edistynyt",
"enabled": "Päällä",
"mode": "Aikatila",
"percent": "Prosentti",
"seconds": "Sekuntia"
}
},
"download-playlist": "Lataa soittolista",
"presets": "Esiasetukset",
"skip-existing": "Ohita olemassa olevat tiedostot"
@ -418,6 +527,18 @@
"button": "Lataa"
}
},
"equalizer": {
"description": "Lisää taajuuskorjaimen toistimeen",
"menu": {
"presets": {
"label": "Pohjat",
"list": {
"bass-booster": "Bassonlisääjä"
}
}
},
"name": "Taajuuskorjain"
},
"exponential-volume": {
"description": "Tekee äänenvoimakkuuden säätimestä eksponentiaalisen, jotta matalampien äänenvoimakkuuksien valinta on helpompaa.",
"name": "Eksponentiaalinen Äänenvoimakkuus"
@ -491,7 +612,15 @@
},
"navigation": {
"description": "Eteen- ja taaksepäin vievät nuolet suoraan integroituna käyttöliittymään. Juuri niin kuin lempiselaimessasi",
"name": "Siirtyminen"
"name": "Siirtyminen",
"templates": {
"back": {
"title": "Palaa edelliselle sivulle"
},
"forward": {
"title": "Siirry seuraavalle sivulle"
}
}
},
"no-google-login": {
"description": "Poista Googlen kirjautumispainikkeet ja linkit käyttöliittymästä",
@ -510,10 +639,15 @@
}
},
"priority": "Ilmoitusten tärkeys",
"toast-style": "Ponnahdusilmoitusten tyyli",
"unpause-notification": "Näytä ilmoitus toistamisen yhteydessä"
},
"name": "Ilmoitukset"
},
"performance-improvement": {
"description": "Paranna suorituskykyä käyttämällä kokeellisia skriptejä",
"name": "Suorituskykyparannus [Beta]"
},
"picture-in-picture": {
"description": "Sallii sovelluksen vaihtamisen \"kuva kuvassa\" tilaan",
"menu": {
@ -547,6 +681,7 @@
"precise-volume": {
"description": "Säädä äänenvoimakkuutta tarkasti hiiren rullaa tai pikanäppäimiä käyttäen. Kustomoidulla käyttöliittymällä ja säädettävällä äänenvoimakkuuden porrastuksella",
"menu": {
"arrows-shortcuts": "Paikallinen nuolinäppäinohjaus",
"custom-volume-steps": "Aseta mukautettu äänenvoimakkuuden porrastus",
"global-shortcuts": "Yleiset pikanäppäimet"
},
@ -557,7 +692,86 @@
"decrease": "Vähennä äänenvoimakkuutta",
"increase": "Lisää äänenvoimakkuutta"
},
"label": "Valitse yleiset äänenvoimakkuuden pikanäppäimet:"
"label": "Valitse yleiset äänenvoimakkuuden pikanäppäimet:",
"title": "Globaalit äänenvoimakkuusnäppäimet"
},
"volume-steps": {
"label": "Valitse äänenvoimakkuuden suurennus-/pienennysaskeleet",
"title": "Äänenvoimakkuusaskeleet"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Nykyinen laatu: {{quality}}",
"message": "Valitse videon laatu:",
"title": "Valitse videon laatu"
}
}
},
"description": "Salli videon laadun muuttaminen videon päällä näkyvällä painikkeella",
"name": "Videonlaadunmuuttaja",
"renderer": {
"quality-settings-button": {
"label": "Avaa toistimen laadun muuttaja"
}
}
},
"scrobbler": {
"description": "Lisää jakamistuki (esim. last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Last.fm-varmennus epäonnistui\nPiilota ponnahdusikkuna kunnes käynnistät ohjelman uudelleen.",
"title": "Todennus epäonnistui"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Last.fm API:n asetukset"
},
"listenbrainz": {
"token": "Syötä ListenBrainz-käyttötunnus (token)"
},
"scrobble-alternative-title": "Käytä vaihtoehtoisia otsikoita",
"scrobble-other-media": "Jaa muuta mediaa"
},
"name": "Jakaja",
"prompt": {
"lastfm": {
"api-key": "Last.fm:n API-avain",
"api-secret": "Last.fm:n API-salaisuus"
},
"listenbrainz": {
"token": {
"label": "Syötä ListenBrainz käyttötunnuksesi (token):",
"title": "ListenBrainz-käyttötunnus"
}
}
}
},
"shortcuts": {
"prompt": {
"keybind": {
"keybind-options": {
"previous": "Edellinen"
}
}
}
},
"tuna-obs": {
"name": "Tuna OBS"
},
"video-toggle": {
"menu": {
"align": {
"submenu": {
"left": "Vasen",
"right": "Oikea"
}
}
}
}

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Mga Biswal na Tweak",
"submenu": {
"custom-window-title": {
"label": "Custom na window title",
"prompt": {
"label": "I-enter ang custom na window tile: (iwanang blanko para ma-disable)",
"placeholder": "Halimbawa: YouTube Music"
}
},
"like-buttons": {
"default": "Default",
"force-show": "Pilitang ipakita",
@ -279,6 +286,12 @@
},
"name": "Ambient Mode"
},
"amuse": {
"description": "Nagdaragdag ng suporta sa YouTube Music para sa Amuse now playing widget ng 6K Labs",
"response": {
"query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta."
}
},
"api-server": {
"description": "Nagdadagdag ng API Server upang kontrolin ang player",
"dialog": {
@ -372,6 +385,19 @@
}
}
},
"custom-output-device": {
"description": "I-configure ang custom na output media device para sa mga kanta",
"menu": {
"device-selector": "Pumili ng Device"
},
"name": "Custom na Output Device",
"prompt": {
"device-selector": {
"label": "Pumili ng output media device na gagamitin",
"title": "Pumili ng Output Device"
}
}
},
"disable-autoplay": {
"description": "Gawing simulan ang kanta sa \"naka-pause\" na mode",
"menu": {
@ -395,7 +421,14 @@
"hide-duration-left": "Itago ang natitirang oras",
"hide-github-button": "Itago ang button na GitHub link",
"play-on-youtube-music": "Patugtugin sa YouTube Music",
"set-inactivity-timeout": "I-set ang inactivity timeout"
"set-inactivity-timeout": "I-set ang inactivity timeout",
"set-status-display-type": {
"submenu": {
"artist": "Nakikinig sa {artist}",
"title": "Nakikinig sa {song title}",
"youtube-music": "Kumikinig sa YouTube Music"
}
}
},
"prompt": {
"set-inactivity-timeout": {
@ -468,6 +501,14 @@
"button": "Mag-download"
}
},
"equalizer": {
"description": "Nagdaragdag ng equalizer sa player",
"menu": {
"presets": {
"label": "Mga Preset"
}
}
},
"exponential-volume": {
"description": "Ginagawang exponential ang volume slider para mas madaling pumili ng mas mababang volume."
},
@ -557,6 +598,10 @@
},
"name": "Mga Abiso"
},
"performance-improvement": {
"description": "Pagbutihin ang performance sa pamamagitan ng pagpapagana ng mga mapanganib na script",
"name": "Pagpapabuti ng performance [Beta]"
},
"picture-in-picture": {
"description": "Payagan ang pag-palit ng app sa picture-in-picture mode",
"menu": {
@ -570,6 +615,10 @@
"save-window-position": "I-save ang posisyon ng window",
"save-window-size": "I-save ang laki ng window",
"use-native-pip": "Gamitin ang browser native na PiP"
},
"name": "Picture-na-picture",
"templates": {
"button": "Picture-na-picture"
}
},
"playback-speed": {
@ -627,6 +676,8 @@
"listenbrainz": {
"token": "Ilagay ang user token ng ListenBrainz"
},
"scrobble-alternative-artist": "Gumamit ng mga alternatibong artist",
"scrobble-alternative-title": "Gumamit ng alternatibong mga title",
"scrobble-other-media": "Mag-Scrobble ng ibang media"
},
"prompt": {
@ -674,8 +725,8 @@
"synced-lyrics": {
"description": "Nagbibigay ng naka-sync na lyrics sa mga kanta, gamit ang mga provider tulad ng LRClib.",
"errors": {
"fetch": "⚠️ - Nagkaroon ng error habang kinukuha ang lyrics. Subukang muli mamaya.",
"not-found": "⚠️ - Walang nakitang lyrics para sa kantang ito."
"fetch": "⚠️\t Nagkaroon ng error habang kinukuha ang lyrics.\n\t Subukang muli mamaya.",
"not-found": "⚠️ Walang nakitang lyrics para sa kantang ito."
},
"menu": {
"default-text-string": {
@ -685,6 +736,10 @@
"line-effect": {
"label": "Effect ng Linya",
"submenu": {
"fancy": {
"label": "Magarbo",
"tooltip": "Gumamit ng malaki, mala-app na effect sa kasalukuyang linya"
},
"focus": {
"tooltip": "Gawing puti lamang ang kasalukuyang linya"
},
@ -701,6 +756,18 @@
"label": "Gawing perpektong naka-sync ang lyrics",
"tooltip": "Kalkulahin sa millisecond ang pagpapakita ng susunod na linya (maaaring magkaroon ng maliit na epekto sa performance)"
},
"preferred-provider": {
"label": "Napiling Provider",
"none": {
"label": "Wala",
"tooltip": "Walang napiling provider"
},
"tooltip": "Pumili ng default na provider para gagamitin"
},
"romanization": {
"label": "I-romanize ang lyrics",
"tooltip": "Kung ang lyrics ay nasa ibang wika, subukang magpakita ng latin na bersyon."
},
"show-lyrics-even-if-inexact": {
"label": "Ipakita ang lyrics kahit di-eksakto",
"tooltip": "Kung hindi matagpuan ang kanta, susubukan muli ng plugin gamit ang ibang query sa paghahanap.\nAng resulta mula sa pangalawang pagsubok ay maaaring hindi eksakto."
@ -710,6 +777,7 @@
"tooltip": "Ipakita ang mga time code kasunod sa lyrics"
}
},
"name": "Pag-sync ng Lyrics",
"refetch-btn": {
"fetching": "Nag-fe-fetch...",
"normal": "I-fetch muli ang lyrics"
@ -726,13 +794,31 @@
"touchbar": {
"description": "Idaragdag ang TouchBar na widget para sa mga user ng macOS"
},
"transparent-player": {
"description": "Gawing transparent ang app window",
"menu": {
"type": {
"label": "Uri",
"submenu": {
"none": "Wala",
"tabbed": "Naka-tab"
}
}
},
"name": "Transparent na Player"
},
"tuna-obs": {
"description": "Integrasyon kasama ang Tuna na OBS plugin"
},
"unobtrusive-player": {
"description": "Pinipigilan ang player na mag-pop up kapag nagpe-play ng kanta",
"name": "Hindi mapanghimasok na Player"
},
"video-toggle": {
"description": "Idaragdag ng button na magpalit sa Video/Kanta na mode. maaari ding opsyonal na alisin ang tab ng video",
"menu": {
"align": {
"label": "Pag-align",
"submenu": {
"left": "Kaliwa",
"middle": "Gitna",
@ -747,7 +833,7 @@
}
},
"templates": {
"button": "Kanta"
"button-song": "Kanta"
}
},
"visualizer": {

View File

@ -5,7 +5,7 @@
"execute-failed": "Échec de l'exécution du plugin {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} exécuté en {{ms}}ms",
"initialize-failed": "Échec de l'initialisation du plugin \"{{pluginName}}\"",
"load-all": "Chargement des plugins",
"load-all": "Chargement de tous les plugins",
"load-failed": "Échec du chargement du plugin \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" chargé",
"unload-failed": "Échec du déchargement du plugin \"{{pluginName}}\"",
@ -27,13 +27,13 @@
"loaded": "i18n chargé"
},
"second-instance": {
"receive-command": "Received command over protocol: \"{{command}}\""
"receive-command": "Received command over protocol : \"{{command}}\""
},
"theme": {
"css-file-not-found": "Le fichier de CSS \"{{cssFile}}\" n'existe pas, ignorer"
},
"unresponsive": {
"details": "Erreur: ne répond pas!\n{{error}}"
"details": "Erreur : Aucune réponse!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Effacement du cache de l'application"
@ -44,7 +44,7 @@
},
"dialog": {
"hide-menu-enabled": {
"detail": "Le menu est masqué, utilisez « Alt » pour l'afficher (ou « Échap » si vous utilisez le menu de l'application)",
"detail": "Le menu est masqué, utilisez 'Alt' pour l'afficher (ou 'Échap' si vous utilisez le menu de l'application)",
"message": "Le masquage du menu est activé",
"title": "Masquer le menu activé"
},
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Ajustements visuels",
"submenu": {
"custom-window-title": {
"label": "Titre de fenêtre personnalisé",
"prompt": {
"label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)",
"placeholder": "Exemple : YouTube Musique"
}
},
"like-buttons": {
"default": "Par défaut",
"force-show": "Forcer à apparaître",
@ -279,6 +286,13 @@
},
"name": "Mode ambiant"
},
"amuse": {
"description": "Ajout de la prise en charge de YouTube Music pour le widget Amuse now playing de 6K Labs",
"name": "Amuse",
"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."
}
},
"api-server": {
"description": "Ajouter un serveur API pour contrôler le lecteur",
"dialog": {
@ -313,11 +327,11 @@
"name": "Serveur API [Beta]",
"prompt": {
"hostname": {
"label": "Entrer le nom de l'hôte (par exemple 0.0.0.0) pour le serveur API:",
"label": "Entrer le nom de l'hôte (par exemple : 0.0.0.0) pour le serveur API :",
"title": "Nom d'hôte"
},
"port": {
"label": "Entrez le port du serveur de l'API:",
"label": "Entrez le port du serveur de l'API :",
"title": "Port"
}
}
@ -326,6 +340,30 @@
"description": "Appliquer une compression à l'audio (diminue le volume des parties les plus fortes du signal et augmente le volume des parties les plus faibles)",
"name": "Compresseur audio"
},
"auth-proxy-adapter": {
"description": "Prise en charge de l'utilisation des services de proxy d'authentification",
"menu": {
"disable": "Désactiver l'Adaptateur Proxy",
"enable": "Activer l'Adaptateur Proxy",
"hostname": {
"label": "Nom d'hôte"
},
"port": {
"label": "Port"
}
},
"name": "Adaptateur de Proxy d'Authentification",
"prompt": {
"hostname": {
"label": "Saisir le nom d'hôte pour le serveur proxy local (nécessite un redémarrage) :",
"title": "Nom d'hôte du proxy"
},
"port": {
"label": "Saisir le port pour le serveur proxy local (nécessite un redémarrage) :",
"title": "Port du proxy"
}
}
},
"blur-nav-bar": {
"description": "Rend la barre de navigation transparente et floue",
"name": "Barre de navigation floue"
@ -350,6 +388,11 @@
},
"templates": {
"title": "Ouvrir le sélecteur de sous-titres"
},
"toast": {
"caption-changed": "Sous-titres changés en {{language}}",
"caption-disabled": "Sous-titres désactivés",
"no-captions": "Aucun sous-titre disponible pour cette chanson"
}
},
"compact-sidebar": {
@ -378,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Configurer un périphérique de sortie personnalisé pour les morceaux",
"menu": {
"device-selector": "Sélectionner un appareil"
},
"name": "Périphérique de sortie personnalisé",
"prompt": {
"device-selector": {
"label": "Choisissez le périphérique de sortie à utiliser",
"title": "Sélectionner le périphérique de sortie"
}
}
},
"disable-autoplay": {
"description": "Fait démarrer la chanson en mode \"pause\"",
"menu": {
@ -401,7 +457,15 @@
"hide-duration-left": "Masquer la durée restante",
"hide-github-button": "Masquer le bouton du lien GitHub",
"play-on-youtube-music": "Jouer sur YouTube Music",
"set-inactivity-timeout": "Définir le délai d'inactivité"
"set-inactivity-timeout": "Définir le délai d'inactivité",
"set-status-display-type": {
"label": "Texte d'état",
"submenu": {
"artist": "Écoute {artiste}",
"title": "Écoute {titre de la chanson}",
"youtube-music": "Écoute YouTube Music"
}
}
},
"name": "Discord Rich Presence",
"prompt": {
@ -569,7 +633,15 @@
},
"navigation": {
"description": "Flèches de navigation Suivant/Retour directement intégrées dans l'interface, comme dans votre navigateur préféré",
"name": "Navigation"
"name": "Navigation",
"templates": {
"back": {
"title": "Revenir à la page précédente"
},
"forward": {
"title": "Aller à la page suivante"
}
}
},
"no-google-login": {
"description": "Supprimer les boutons et liens de connexion Google de l'interface",
@ -593,6 +665,10 @@
},
"name": "Notifications"
},
"performance-improvement": {
"description": "Améliorer les performances en activant les scripts expérimentaux",
"name": "Amélioration des performances [Beta]"
},
"picture-in-picture": {
"description": "Permet de basculer lapplication en mode image dans image",
"menu": {
@ -657,7 +733,12 @@
}
},
"description": "Permet de changer la qualité vidéo avec un bouton sur la vidéo",
"name": "Changeur de qualité vidéo"
"name": "Changeur de qualité vidéo",
"renderer": {
"quality-settings-button": {
"label": "Ouvrir le sélecteur de qualité du lecteur"
}
}
},
"scrobbler": {
"description": "Ajouter le support de scrobbling (ex. last.fm, Listenbrainz)",
@ -676,6 +757,8 @@
"listenbrainz": {
"token": "Entrer le token utilisateur de ListenBrainz"
},
"scrobble-alternative-artist": "Utilisez d'autres artistes",
"scrobble-alternative-title": "Utiliser des titres alternatifs",
"scrobble-other-media": "Scrobbler d'autres médias"
},
"name": "Scrobble",
@ -727,7 +810,7 @@
"description": "Ajoute des paroles synchronisées aux chansons, grâce à LRClib par exemple.",
"errors": {
"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 cette musique."
},
"menu": {
"default-text-string": {
@ -737,6 +820,10 @@
"line-effect": {
"label": "Effet de ligne",
"submenu": {
"fancy": {
"label": "Raffiné",
"tooltip": "Utilise de grands effets de type application sur la ligne actuelle"
},
"focus": {
"label": "Focus",
"tooltip": "Rend seulement la ligne actuelle blanche"
@ -756,6 +843,18 @@
"label": "Rend les paroles parfaitement synchronisées",
"tooltip": "Calcul à la milliseconde près l'affichage de la ligne suivante (peut avoir un faible impact sur les performances)"
},
"preferred-provider": {
"label": "Fournisseur privilégié",
"none": {
"label": "Aucun",
"tooltip": "Aucun fournisseur privilégié"
},
"tooltip": "Choisissez le fournisseur par défaut à utiliser"
},
"romanization": {
"label": "Romaniser les paroles",
"tooltip": "Si les paroles sont dans une autre langue, essayez de les afficher dans une version latine."
},
"show-lyrics-even-if-inexact": {
"label": "Afficher les paroles même si inexactes",
"tooltip": "Si la musique n'est pas trouvé, le plugin essaye à nouveau avec une différence requête.\nLe résultat du deuxième essais peut ne pas être exacte."
@ -784,10 +883,35 @@
"description": "Ajoute un widget TouchBar pour les utilisateurs de macOS",
"name": "TouchBar"
},
"transparent-player": {
"description": "Rend la fenêtre de l'application transparente",
"menu": {
"opacity": {
"label": "Opacité",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Type",
"submenu": {
"acrylic": "Acrylique",
"mica": "Mica",
"none": "Aucun",
"tabbed": "À onglets"
}
}
},
"name": "Lecteur transparent"
},
"tuna-obs": {
"description": "Intégration avec le plugin OBS Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Empêche le lecteur de s'afficher quand un chanson est en lecture",
"name": "Lecteur Non-Intrusif"
},
"video-toggle": {
"description": "Ajoute un bouton pour basculer entre le mode Vidéo/Chanson. peut également supprimer tout l'onglet vidéo",
"menu": {
@ -811,7 +935,8 @@
},
"name": "Basculer la vidéo",
"templates": {
"button": "Musique"
"button-song": "Musique",
"button-video": "Vidéo"
}
},
"visualizer": {

View File

@ -0,0 +1,60 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Error ao executar o plugin {{pluginName}}::{{contextName}}",
"executed-at-ms": "O plugin {{pluginName}}::{{contextName}} foi executado a {{ms}}milisegundos",
"initialize-failed": "Erro ao iniciar o plugin \"{{pluginName}}\"",
"load-all": "Cargando todos os plugins",
"load-failed": "Erro ao cargar o plugin \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" cargado",
"unload-failed": "Erro descargando o plugin {{pluginName}}",
"unloaded": "Plugin {{pluginName}} decargado"
}
}
},
"language": {
"code": "gl",
"local-name": "Galego",
"name": "Galego"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Carga completada. DevTools aberto"
},
"i18n": {
"loaded": "i18n cargado"
},
"second-instance": {
"receive-command": "Recibido comando sobre protocolo \"{{command}}\""
},
"theme": {
"css-file-not-found": "O arquivo CSS \"{{cssFile}}\" non existe, ignorando"
},
"unresponsive": {
"details": "Error irresponsivo!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Limpando a caché da app"
},
"window": {
"tried-to-render-offscreen": "A ventana tentou de renderizarse fora da pantalla, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "O menú está agochado, use 'Alt' para mostralo (ou 'Escape' se usa o menú dentro da app)",
"message": "Esconder Menú está deshabilitado",
"title": "Esconder Menú Habilitado"
},
"need-to-restart": {
"buttons": {
"later": "Despois",
"restart-now": "Reiniciar Agora"
},
"detail": "O plugin \"{{pluginName}}\" precisa dun reinicio para tomar efecto"
}
}
}
}

View File

@ -53,7 +53,8 @@
"later": "אחר כך",
"restart-now": "מתחיל את התוכנה מחדש עכשיו"
},
"message": "נדרש אתחול",
"detail": "\"{{pluginName}}\" מצריך אתחול",
"message": "\"{{pluginName}}\" דורש אתחול",
"title": "נדרשת הפעלה מחדש"
},
"unresponsive": {
@ -70,9 +71,10 @@
"buttons": {
"disable": "בטל עדכונים",
"download": "הורדה",
"ok": "אוקי"
"ok": "אוקיי"
},
"message": ירסא חדשה זמינה כעת",
"detail": "גרסה חדשה זמינה, ניתן להוריד אותה ב-{{downloadLink}}",
"message": "גירסה חדשה זמינה כעת",
"title": "קיים עדכון חדש"
}
},
@ -84,7 +86,8 @@
"copy-current-url": "העתק את כתובת ה-URL",
"go-back": "חזור אחורה",
"go-forward": "לך קדימה",
"quit": "יציאה"
"quit": "יציאה",
"restart": "הפעל מחדש את היישום"
}
},
"options": {
@ -94,11 +97,381 @@
"label": "אפשרויות מתקדמות",
"submenu": {
"auto-reset-app-cache": "אפס את מטמון האפליקציה כאשר האפליקציה מתחילה",
"disable-hardware-acceleration": "השבת האצת החומרה"
"disable-hardware-acceleration": "השבת האצת החומרה",
"edit-config-json": "ערוך את config.json",
"override-user-agent": "עוקף את סוכן המשתמש",
"restart-on-config-changes": "הפעל מחדש בשינויי תצורה",
"set-proxy": {
"label": "הגדר שרת proxy",
"prompt": {
"label": "הזן כתובת פרוקסי: (להשאיר ריק כדי להשבית)",
"placeholder": "דוגמה: SOCKS5://127.0.0.1:9999",
"title": "הגדר שרת proxy"
}
},
"toggle-dev-tools": "שנה את מצב כלי המפתחים"
}
},
"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": {
"label": "דף פתיחה",
"unset": "בטל"
},
"tray": {
"label": "מגש",
"submenu": {
"disabled": "מושבת",
"enabled-and-hide-app": "מופעל והסתר אפליקציה",
"enabled-and-show-app": "מופעל והמציג את האפליקציה",
"play-pause-on-click": "הפעל/השהה בלחיצה"
}
},
"visual-tweaks": {
"label": "תיקונים חזותיים",
"submenu": {
"like-buttons": {
"default": "ברירת מחדל",
"force-show": "הפעל בכוח",
"hide": "הסתר",
"label": "כפתורי לייק"
},
"remove-upgrade-button": "הסר לחצן שדרוג",
"theme": {
"dialog": {
"button": {
"cancel": "ביטול",
"remove": "הסר"
},
"remove-theme": "האם אתה בטוח שברצונך להסיר את העיצוב המותאם אישית?",
"remove-theme-message": "פעולה זו תסיר את ערכת הנושא המותאמת אישית"
},
"label": "ערכת נושא",
"submenu": {
"import-css-file": "ייבא קובץ CSS מותאם אישית",
"no-theme": "ללא ערכת נושא"
}
}
}
}
}
},
"plugins": {
"enabled": "מופעל",
"label": "פלאגינים",
"new": "חדש"
},
"view": {
"label": "צפה",
"submenu": {
"force-reload": "התחל מחדש בכוח",
"reload": "רענון",
"reset-zoom": "גודל אמיתי",
"toggle-fullscreen": "מסך מלא",
"zoom-in": "התקרב",
"zoom-out": "התרחק"
}
}
},
"tray": {
"next": "הבא",
"play-pause": "נגן/הפסק",
"previous": "הקודם",
"quit": "יציאה",
"restart": "הפעל מחדש",
"show": "הראה חלון",
"tooltip": {
"default": "יוטיוב מיוזיק",
"with-song-info": "יוטיוב מיוזיק: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "במקרה של פרסומת, הסאונד מושתק ומהירות הוידאו מוכפלת ב-16",
"name": "הגבר מהירות פרסומת"
},
"adblocker": {
"description": "חסום את כל המודעות והמעקב מחוץ לקופסה",
"menu": {
"blocker": "חוסם"
},
"name": "חוסם פרסומות"
},
"album-actions": {
"description": "מוסיף לחצני ביטול אהבתי, דיסלייק, 'אהבתי' ו'לא אהבתי' כדי להחיל זאת על כל השירים ברשימת השמעה או אלבום",
"name": "פעולות אלבום"
},
"album-color-theme": {
"description": "מחיל נושא דינמי ואפקטים חזותיים המבוססים על לוח הצבעים של האלבום",
"menu": {
"color-mix-ratio": {
"label": "יחס ערבוב צבעים",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "ערכת נושא צבע אלבום"
},
"ambient-mode": {
"description": "מחיל אפקט תאורה על ידי הטלת צבעים עדינים מהסרטון, אל הרקע של המסך",
"menu": {
"blur-amount": {
"label": "כמות טשטוש",
"submenu": {
"pixels": "{{blurAmount}} פיקסלים"
}
},
"buffer": {
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "אֲטִימוּת",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "אֵיכוּת",
"submenu": {
"pixels": "{{quality}} פיקסלים"
}
},
"size": {
"label": "גוֹדֶל",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "מעבר חלק",
"submenu": {
"during": "במהלך {{interpolationTime}} שניות"
}
},
"use-fullscreen": {
"label": "שימוש במסך מלא"
}
},
"name": "מצב אווירה"
},
"amuse": {
"description": "מוסיף תמיכה ב-YouTube Music עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs",
"name": "משעשע",
"response": {
"query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query."
}
},
"api-server": {
"description": "הוסף כתובת שירות כדי לשלוט בנגן",
"dialog": {
"request": {
"buttons": {
"allow": "מותר",
"deny": "לדחות"
},
"message": "אפשר ל {{ID}}{{origin}} לגשת לשירות?",
"title": "בקשת לאימות השירות"
}
},
"menu": {
"auth-strategy": {
"label": "שיטת אימות",
"submenu": {
"auth-at-first": {
"label": "לאמת בבקשה הראשונה"
},
"none": {
"label": "ללא אימות"
}
}
},
"hostname": {
"label": "שם שרת אחסון"
},
"port": {
"label": "פורט"
}
},
"name": "כתובת שירות (בטא)",
"prompt": {
"hostname": {
"label": "הכנסת את כתובת IP של השרת (לדוגמה 0.0.0.0) לשירות:",
"title": "שם שרת אחסון"
},
"port": {
"label": "הכנסת מספר פורט של השירות:",
"title": "פורט"
}
}
},
"audio-compressor": {
"description": "החל דחיסה על אודיו (מורידה את עוצמת הקול של החלקים הרועשים ביותר של האות ומעלה את עוצמת הקול של החלקים החלשים ביותר)",
"name": "דוחס ומצפין קול"
},
"auth-proxy-adapter": {
"description": "תמיכה בשימוש בשירותי פרוקסי אימות",
"menu": {
"disable": "השבת מתאם פרוקסי",
"enable": "הפעל מתאם פרוקסי",
"hostname": {
"label": "שם שרת מאחסן"
},
"port": {
"label": "פורט"
}
},
"name": "מתאם זיהוי פרוקסי",
"prompt": {
"hostname": {
"label": "הזן שם מארח עבור שרת הפרוקסי המקומי (דורש הפעלה מחדש):",
"title": "שם פרוקסי של שרת מאחסן"
},
"port": {
"label": "הזן פורט עבור שרת הפרוקסי המקומי (דורש הפעלה מחדש):",
"title": "יציאת פרוקסי"
}
}
},
"blur-nav-bar": {
"description": "הפוך את סרגל הניווט לשקוף ומטושטש",
"name": "טשטש את סרגל הניווט"
},
"bypass-age-restrictions": {
"description": "עקוף את אימות גיל המשתמש של יוטיוב",
"name": "עקוף את ההחמרות של הגיל"
},
"captions-selector": {
"description": "בורר כתוביות עבור רצועות אודיו של YouTube Music",
"menu": {
"autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה",
"disable-captions": "ברירת מחד ללא כתוביות"
},
"name": "בוחר כתוביות",
"prompt": {
"selector": {
"label": "שפת כתוביות נוכחית: {{language}}",
"none": "ללא",
"title": "בחר שפת כתוביות"
}
},
"templates": {
"title": "פתח בחירת כתוביות"
}
},
"compact-sidebar": {
"description": "הגדר תמיד את סרגל הצד למצב קומפקטי",
"name": "סרגל צד קומפקטי"
},
"crossfade": {
"description": "עמעם בין השירים",
"menu": {
"advanced": "מתקדם"
},
"prompt": {
"options": {
"multi-input": {
"fade-scaling": {
"linear": "לינארי",
"logarithmic": "לוגריתמי"
}
}
}
}
},
"disable-autoplay": {
"menu": {
"apply-once": "חל רק בהפעלה"
},
"name": "השבתת הפעלה אוטומטית"
},
"discord": {
"backend": {
"connected": "התחבר לדיסקורד",
"disconnected": "התנתק לדיסקורד"
},
"menu": {
"auto-reconnect": "חיבור מחדש אוטומטי",
"clear-activity": "נקה פעילות",
"connected": "מחובר",
"disconnected": "מנותק",
"hide-github-button": "הסתר את לחצן הקישור של GitHub",
"play-on-youtube-music": "הפעל ביוטיוב מיוזיק",
"set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות"
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "אוקיי"
},
"message": "אה ! מתנצלים, הורדה נכשלה",
"title": "שגיאה בהורדה!"
},
"start-download-playlist": {
"buttons": {
"ok": "אוקיי"
},
"message": "מוריד פלייליסט {{playlistTitle}}",
"title": "הורדה התחילה"
}
},
"feedback": {
"downloading": "מוריד…",
"loading": "בטְעִינָה…",
"playlist-has-only-one-song": "לפלייליסט יש רק פריט אחד, מוריד אותו ישירות",
"playlist-id-not-found": "לא נמצא מזהה ID פלייליסט",
"preparing-file": "מכין קובץ…",
"saving": "שומר…",
"trying-to-get-playlist-id": "מנסה להשיג מזהה פלייליסט: {{playlistId}}",
"video-id-not-found": "הסרטון לא נמצא"
}
},
"description": "מוריד MP3 / אודיו מקור ישירות מהממשק",
"menu": {
"choose-download-folder": "בחר תיקיית הורדה",
"download-finish-settings": {
"label": "הורדה בסיום",
"prompt": {
"last-percent": "אחרי x אחוזים",
"last-seconds": "נשארו x שניות",
"title": "הגדר מתי להוריד"
},
"submenu": {
"advanced": "מִתקַדֵם",
"enabled": "מופעל",
"percent": "אָחוּז",
"seconds": "שניות"
}
},
"presets": "הגדרות קבועות מראש",
"skip-existing": "דלג על קבצים קיימים"
}
}
}
}

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "दृश्य परिवर्तन",
"submenu": {
"custom-window-title": {
"label": "कस्टम विंडो टाइटल",
"prompt": {
"label": "कस्टम विंडो टाइटल डालें: (डिसएबल करने के लिए खाली छोड़ें)",
"placeholder": "उदाहरण: यूट्यूब संगीत"
}
},
"like-buttons": {
"default": "डिफॉल्ट",
"force-show": "बल पूर्वक दिखाएं",
@ -226,12 +233,557 @@
"description": "एल्बम रंग पैलेट के आधार पर एक गतिशील थीम और दृश्य प्रभाव लागू करता है",
"menu": {
"color-mix-ratio": {
"label": "रंग मिश्रण अनुपात",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "एल्बम रंग थीम"
},
"ambient-mode": {
"description": "वीडियो से हल्के रंगों को आपकी स्क्रीन की पृष्ठभूमि में डालकर एक प्रकाश प्रभाव लागू करता है",
"menu": {
"blur-amount": {
"label": "धुंधलापन मात्रा",
"submenu": {
"pixels": "{{blurAmount}} पिक्सल"
}
},
"buffer": {
"label": "बफर",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "अस्पष्टता",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "स्पष्टता",
"submenu": {
"pixels": "{{quality}} पिक्सल"
}
},
"size": {
"label": "माप",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "चिकनाई संक्रमण",
"submenu": {
"during": "दौरान {{interpolationTime}}"
}
},
"use-fullscreen": {
"label": "पूर्णस्क्रीन का उपयोग"
}
},
"name": "अम्बिएन्ट मोड्"
},
"amuse": {
"description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए YouTube म्यूजिक समर्थन जोड़ा गया",
"name": "मन बहलाना",
"response": {
"query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।"
}
},
"api-server": {
"description": "प्लेयर को नियंत्रित करने के लिए एक API सर्वर जोड़ता है",
"dialog": {
"request": {
"buttons": {
"allow": "अनुमति दें",
"deny": "मना करना"
},
"message": "{{ID}} ({{origin}}) को ए.पि.ऐ. ऐकसेस करने की अनुमति दे?",
"title": "एपीआई अनुमोदन अनुरोध"
}
},
"menu": {
"auth-strategy": {
"label": "अनुमोदन रणनीति",
"submenu": {
"auth-at-first": {
"label": "अधिकार प्रदान प्रारंभिक अनुरोध पर"
},
"none": {
"label": "कोई प्राधिकरण नहीं"
}
}
},
"hostname": {
"label": "होस्टनेम"
},
"port": {
"label": "पोर्ट"
}
},
"name": "एपीआई सर्वर [बीटा]",
"prompt": {
"hostname": {
"label": "एपीआई सर्वर के लिए होस्ट नाम (जैसे 0.0.0.0) दर्ज करें:",
"title": "होस्टनेम"
},
"port": {
"label": "एपीआई सर्वर के लिए पोर्ट दर्ज करें:",
"title": "पोर्ट"
}
}
},
"audio-compressor": {
"description": "ऑडियो पर कम्प्रेशन लागू करें (सिग्नल के सबसे ऊँचे हिस्सों की आवाज़ को कम करता है और सबसे नर्म हिस्सों की आवाज़ को बढ़ाता है)",
"name": "ऑडियो कंप्रेसर"
},
"auth-proxy-adapter": {
"description": "ऑथेंटिकेशन प्रॉक्सी सेवाओं के उपयोग के लिए सपोर्ट",
"menu": {
"disable": "प्रॉक्सी एडाप्टर बंद करें",
"enable": "प्रॉक्सी एडाप्टर शुरू करें",
"hostname": {
"label": "होस्ट का नाम"
},
"port": {
"label": "पोर्ट"
}
},
"name": "ऑथ प्रॉक्सी एडाप्टर",
"prompt": {
"hostname": {
"label": "स्थानीय प्रॉक्सी सर्वर के लिए होस्ट का नाम लिखें (पुनः आरंभ ज़रूरी है):",
"title": "प्रॉक्सी होस्ट का नाम"
},
"port": {
"label": "स्थानीय प्रॉक्सी सर्वर के लिए पोर्ट लिखें (पुनः प्रारंभ जरूरी है):",
"title": "प्रॉक्सी का पोर्ट"
}
}
},
"blur-nav-bar": {
"description": "नेविगेशन बार को पारदर्शी और धुंधला बनाता है",
"name": "नेविगेशन बार को ब्लर करें"
},
"bypass-age-restrictions": {
"description": "YouTube आयु की जांच को बायपास करें",
"name": "आयु प्रतिबंध को बायपास करें"
},
"captions-selector": {
"description": "YouTube म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता",
"menu": {
"autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें",
"disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं"
},
"name": "कैप्शन चयनकर्ता",
"prompt": {
"selector": {
"label": "वर्तमान कैप्शन भाषा: {{language}}",
"none": "कुछ नहीं",
"title": "कैप्शन भाषा चुनें"
}
},
"templates": {
"title": "कैप्शन चयनकर्ता खोलें"
},
"toast": {
"caption-changed": "कैप्शन {{language}} में बदल दिया गया है",
"caption-disabled": "कैप्शन बंद कर दिए गए हैं",
"no-captions": "इस गाने के लिए कोई कैप्शन उपलब्ध नहीं हैं"
}
},
"compact-sidebar": {
"description": "साइडबार को हमेशा कॉम्पैक्ट मोड में सेट करें",
"name": "कॉम्पैक्ट साइडबार"
},
"crossfade": {
"description": "गानों के बीच क्रॉसफ़ेड करें",
"menu": {
"advanced": "आधुनिक"
},
"name": "क्रॉसफ़ेड [बीटा]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "फ़ेड इन अवधि (मिलीसेकंड)",
"fade-out-duration": "फ़ेड आउट अवधि (मिलीसेकंड)",
"fade-scaling": {
"label": "फेड स्केलिंग",
"linear": "रेखिक",
"logarithmic": "लघुगणक"
},
"seconds-before-end": "अंत से पहले N सेकंड तक क्रॉसफ़ेड करें"
},
"title": "क्रॉसफ़ेड विकल्प"
}
}
},
"disable-autoplay": {
"description": "गीत को \"रुके हुए \" मोड में शुरू करता है",
"menu": {
"apply-once": "केवल प्रारम्भ पर लागू होता है"
},
"name": "ऑटोप्ले अयोग्य करें"
},
"discord": {
"backend": {
"already-connected": "सक्रिय कनेक्शन से जुड़ने का प्रयास किया गया",
"connected": "डिस्कॉर्ड से कनेक्टेड है",
"disconnected": "डिस्कॉर्ड से कनेक्टेड नहीं है"
},
"description": "Rich Presence के साथ अपने दोस्तों के साथ बाटें कि आप क्या सुनते हैं",
"menu": {
"auto-reconnect": "स्वतः पुनः कनेक्ट करें",
"clear-activity": "Activity साफ़ करें",
"clear-activity-after-timeout": "समय समाप्त होने के बाद एक्टिविटी साफ़ करें",
"connected": "स्थापित",
"disconnected": "डिस्कनेक्ट किया गया",
"hide-duration-left": "शेष अवधि छिपाएँ",
"hide-github-button": "GitHub लिंक के बटन को छिपाएँ",
"play-on-youtube-music": "YouTube म्यूज़िक पर चलाएँ",
"set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें"
},
"name": "डिस्कॉर्ड रिच प्रेजेंस",
"prompt": {
"set-inactivity-timeout": {
"label": "निष्क्रियता समय समाप्ति सेकंड में दर्ज करें:",
"title": "निष्क्रियता समय समाप्ति सेट करें"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "ठीक है"
},
"message": "आह! क्षमा करें, डाउनलोड विफल हो गया…",
"title": "डाउनलोड में दिक्कत है !"
},
"start-download-playlist": {
"buttons": {
"ok": "ठीक है"
},
"detail": "({{playlistSize}} गाने)",
"message": "प्लेलिस्ट {{playlistTitle}} डाउनलोड हो रही है",
"title": "डाउनलोड शुरू"
}
},
"feedback": {
"conversion-progress": "कन्वर्ज़न: {{percent}}%",
"converting": "परिवर्तित हो रहा है…",
"done": "हो गया: {{filePath}}",
"download-info": "{{artist}} - {{title}} डाउनलोड हो रहा है [{{videoId}}",
"download-progress": "डाउनलोड करें: {{percent}}%",
"downloading": "डाउनलोड हो रहा है…",
"downloading-counter": "{{current}}/{{total}} डाउनलोड हो रहा है…",
"downloading-playlist": "प्लेलिस्ट \"{{playlistTitle}}\" - {{playlistSize}} गाने ({{playlistId}}) डाउनलोड हो रहे हैं",
"error-while-downloading": "\"{{author}} - {{title}}\" डाउनलोड करते समय दिक्कत: {{error}}",
"folder-already-exists": "फ़ोल्डर {{playlistFolder}} पहले से मौजूद है",
"getting-playlist-info": "प्लेलिस्ट की जानकारी प्राप्त हो रही है…",
"loading": "लोड हो रहा है…",
"playlist-has-only-one-song": "प्लेलिस्ट में केवल एक आइटम है, इसे सीधे डाउनलोड करें",
"playlist-id-not-found": "कोई प्लेलिस्ट आईडी नहीं मिली",
"playlist-is-empty": "प्लेलिस्ट ख़ाली है",
"playlist-is-mix-or-private": "प्लेलिस्ट जानकारी प्राप्त करने में दिक्कत: सुनिश्चित करें कि यह निजी या \"आपके लिए मिश्रित\" प्लेलिस्ट नहीं है\n\n{{error}}",
"preparing-file": "फ़ाइल तैयार की जा रही है…",
"saving": "सेव जा रहा है…",
"trying-to-get-playlist-id": "प्लेलिस्ट आईडी प्राप्त करने का प्रयास किया जा रहा है: {{playlistId}}",
"video-id-not-found": "वीडियो नहीं मिला",
"writing-id3": "ID3 टैग लिख रहे हैं…"
}
},
"description": "इंटरफ़ेस से सीधे MP3 / स्रोत ऑडियो डाउनलोड करता है",
"menu": {
"choose-download-folder": "डाउनलोड फ़ोल्डर चुनें",
"download-finish-settings": {
"label": "समाप्त होने पर डाउनलोड करें",
"prompt": {
"last-percent": "x प्रतिशत के बाद",
"last-seconds": "अंतिम x सेकंड",
"title": "डाउनलोड करने का समय कॉन्फ़िगर करें"
},
"submenu": {
"advanced": "विकसित",
"enabled": "सक्रिय",
"mode": "टाइम मोड",
"percent": "प्रतिशत",
"seconds": "सेकंड"
}
},
"download-playlist": "प्लेलिस्ट डाउनलोड करें",
"presets": "प्रीसेट",
"skip-existing": "मौजूदा फ़ाइलें छोड़ें"
},
"name": "डाउनलोडर",
"renderer": {
"can-not-update-progress": "प्रगति अपडेट नहीं की जा सकती"
},
"templates": {
"button": "डाउनलोड"
}
},
"equalizer": {
"description": "प्लेयर में एक एक्विलाइज़र जोड़ता है",
"menu": {
"presets": {
"label": "प्रीसेट",
"list": {
"bass-booster": "bass वर्धक"
}
}
},
"name": "एक्विलाइज़र"
},
"exponential-volume": {
"description": "वॉल्यूम स्लाइडर को घातांकीय बनाता है ताकि कम वॉल्यूम का चयन करना आसान हो।",
"name": "तीव्र वॉल्यूम"
},
"in-app-menu": {
"description": "मेनू-बार को फैंसी, गहरा या एल्बम-रंग का रूप दें",
"menu": {
"hide-dom-window-controls": "DOM विंडो कंट्रोल को छिपाएँ"
},
"name": "इन-ऐप मेनू"
},
"lumiastream": {
"description": "लूमिया स्ट्रीम सपोर्ट जोड़ा गया",
"name": "लूमिया स्ट्रीम [बीटा]"
},
"lyrics-genius": {
"description": "अधिकांश गानों के लिए गीत के लिरिक्स को जोड़ता है",
"menu": {
"romanized-lyrics": "रोमनकृत लिरिक्स"
},
"name": "लिरिक्स जीनियस",
"renderer": {
"fetched-lyrics": "जीनियस के लिए प्राप्त किये गए लिरिक्स"
}
},
"music-together": {
"description": "दूसरों के साथ प्लेलिस्ट साझा करें। जब होस्ट कोई गाना बजाता है, तो बाकी सभी लोग वही गाना सुनेंगे",
"dialog": {
"enter-host": "होस्ट आईडी दर्ज करें"
},
"internal": {
"save": "सेव",
"track-source": "ट्रैक स्रोत",
"unknown-user": "अज्ञात उपयोगकर्ता"
},
"menu": {
"click-to-copy-id": "होस्ट आईडी कॉपी करें",
"close": "संगीत को एक साथ बंद करें",
"connected-users": "जुड़े हुए उपयोगकर्ता",
"disconnect": "संगीत को एक साथ डिस्कनेक्ट करें",
"empty-user": "कोई जुड़े हुए उपयोगकर्ता नहीं",
"host": "म्यूजिक टुगेदर होस्ट",
"join": "संगीत से साथ में जुड़ें",
"permission": {
"all": "मेहमानों को प्लेलिस्ट और प्लेयर को नियंत्रित करने की अनुमति दें",
"host-only": "केवल होस्ट ही प्लेलिस्ट और प्लेयर को नियंत्रित कर सकता है",
"playlist": "मेहमानों को प्लेलिस्ट नियंत्रित करने की अनुमति दें"
},
"set-permission": "नियंत्रण अनुमति बदलें",
"status": {
"disconnected": "डिस्कनेक्ट किया गया",
"guest": "अतिथि के रूप में जुड़े हुए",
"host": "मेज़बान के रूप में जुड़े हुए"
}
},
"name": "संगीत टुगेदर [बीटा]",
"toast": {
"add-song-failed": "गाना जोड़ने में असफलता",
"closed": "म्यूजिक टुगेदर बंद हुआ",
"disconnected": "म्यूजिक टुगेदर डिस्कनेक्ट हुआ",
"host-failed": "म्यूज़िक टुगेदर होस्ट करने में असफल",
"id-copied": "होस्ट आईडी क्लिपबोर्ड पर कॉपी की गई",
"id-copy-failed": "होस्ट आईडी को क्लिपबोर्ड पर कॉपी करने में असफल",
"join-failed": "म्यूजिक टुगेदर में शामिल होने में विफल",
"joined": "म्यूजिक टुगेदर में शामिल होने में सफल",
"permission-changed": "म्यूजिक टुगेदर की अनुमति बदलकर \"{{permission}}\" कर दी गई है",
"remove-song-failed": "गाना हटाने में विफल",
"user-connected": "{{name}} म्यूजिक टुगेदर में शामिल हुए",
"user-disconnected": "{{name}} ने म्यूजिक टुगेदर छोड़ा"
}
},
"navigation": {
"description": "आगे /पीछे नेविगेशन अर्रोस सीधे इंटरफ़ेस में एकीकृत, जैसे आपके पसंदीदा ब्राउज़र में",
"name": "नेविगेशन",
"templates": {
"back": {
"title": "पिछले पेज पर जाएं"
},
"forward": {
"title": "अगले पेज पर जाएं"
}
}
},
"no-google-login": {
"description": "इंटरफ़ेस से गूगल लॉगिन बटन और लिंक हटाएँ",
"name": "कोई गूगल लॉगिन नहीं"
},
"notifications": {
"description": "जब कोई गाना बजना शुरू हो जाए तो नोटिफ़िकेशन दें (विंडोज़ पर इंटरैक्टिव नोटिफ़िकेशन्स उपलब्ध हैं)",
"menu": {
"interactive": "इंटरैक्टिव नोटिफ़िकेशन्स",
"interactive-settings": {
"label": "इंटरैक्टिव सेटिंग्स",
"submenu": {
"hide-button-text": "बटन टेक्स्ट को छिपाएँ",
"refresh-on-play-pause": "प्ले/पॉज़ पर रिफ्रेश करें",
"tray-controls": "ट्रे क्लिक पर खोलें/बंद करें"
}
},
"priority": "नोटिफ़िकेशन प्राथमिकता",
"toast-style": "टोस्ट स्टाइल",
"unpause-notification": "पॉज हटने पर नोटिफ़िकेशन दिखाएं"
},
"name": "नोटिफ़िकेशन्स"
},
"performance-improvement": {
"description": "प्रयोगात्मक स्क्रिप्ट सक्षम करके प्रदर्शन में सुधार करें",
"name": "प्रदर्शन सुधार [Beta]"
},
"picture-in-picture": {
"description": "ऐप को पिक्चर-इन-पिक्चर मोड में बदलने की अनुमति दें",
"menu": {
"always-on-top": "हमेशा ऊपर",
"hotkey": {
"label": "हॉट की",
"prompt": {
"keybind-options": {
"hotkey": "हॉट की"
},
"label": "पिक्चर-इन-पिक्चर टॉगल करने के लिए हॉट की चुनें",
"title": "पिक्चर-इन-पिक्चर हॉट की"
}
},
"save-window-position": "विंडो पोज़ीशन सेव करें",
"save-window-size": "विंडो के आकार को सेव करें",
"use-native-pip": "ब्राउज़र के नेटिव PiP का उपयोग करें"
},
"name": "पिक्चर-इन-पिक्चर",
"templates": {
"button": "पिक्चर-इन-पिक्चर"
}
},
"playback-speed": {
"description": "तेज़ सुनो, धीरे सुनो! गाने की गति को नियंत्रित करने वाला स्लाइडर जोडें",
"name": "प्लेबैक गति",
"templates": {
"button": "गति"
}
},
"precise-volume": {
"description": "कस्टम HUD और कस्टोमिज़ाबले वॉल्यूम चरणों के साथ, माउसव्हील/हॉट कीज़ का उपयोग करके वॉल्यूम को सटीक रूप से नियंत्रित करें",
"menu": {
"arrows-shortcuts": "लोकल एरो-की नियंत्रण",
"custom-volume-steps": "कस्टम वॉल्यूम चरण सेट करें",
"global-shortcuts": "वैश्विक हॉट कीज़"
},
"name": "सटीक वॉल्यूम",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "वॉल्यूम घटाएँ",
"increase": "वॉल्यूम बढ़ाएँ"
},
"label": "ग्लोबल वॉल्यूम कीबाइंड्स चुनें:",
"title": "ग्लोबल वॉल्यूम कीबाइंड्स"
},
"volume-steps": {
"label": "वॉल्यूम बढ़ाने/घटाने के चरण चुनें",
"title": "वॉल्यूम चरण"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "वर्तमान गुणवत्ता: {{quality}}",
"message": "वीडियो गुणवत्ता चुनें:",
"title": "वीडियो गुणवत्ता चुनें"
}
}
},
"description": "वीडियो ओवरले पर एक बटन के साथ वीडियो की गुणवत्ता बदलने की अनुमति देता है",
"name": "वीडियो गुणवत्ता परिवर्तक",
"renderer": {
"quality-settings-button": {
"label": "प्लेयर क्वालिटी सेटिंग खोलें"
}
}
},
"scrobbler": {
"description": "स्क्रोब्लिंग सपोर्ट जोड़ें (etc. last.fm, listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Last.fm के साथ प्रमाणीकरण विफल\nअगले पुनरारंभ तक पॉपअप छिपाएँ।",
"title": "प्रमाणीकरण विफल"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Last.fm API सेटिंग्स"
},
"listenbrainz": {
"token": "listenbrainz उपयोगकर्ता टोकन दर्ज करें"
},
"scrobble-alternative-title": "वैकल्पिक शीर्षक का उपयोग करें",
"scrobble-other-media": "अन्य मीडिया स्क्रोबल करें"
},
"name": "स्क्रोब्लर",
"prompt": {
"lastfm": {
"api-key": "Last.fm API की",
"api-secret": "Last.fm गुप्त API"
},
"listenbrainz": {
"token": {
"label": "अपना ListenBrainz उपयोगकर्ता टोकन दर्ज करें:",
"title": "ListenBrainz टोकन"
}
}
}
},
"shortcuts": {
"description": "प्लेबैक (प्ले/पॉज़/नेक्स्ट/प्रीवियस) के लिए ग्लोबल हॉटकी सेट करने की सुविधा देता है, मीडिया कुंजियों को ओवरराइड करके मीडिया OSD बंद करता है, Ctrl/CMD + F से खोज चालू करता है, Linux में मीडिया कुंजियों के लिए MPRIS सपोर्ट चालू करता है, और उन्नत उपयोगकर्ताओं के लिए कस्टम हॉटकी की अनुमति देता है",
"menu": {
"override-media-keys": "मीडिया कुंजियों पर नियंत्रण प्राप्त करें",
"set-keybinds": "वैश्विक गीत नियंत्रण सेट करें"
},
"name": "शॉर्टकट कुंजियाँ (और MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "अगला",
"play-pause": "चलाएं / विराम दें",
"previous": "पिछला"
},
"label": "गाने कंट्रोल करने के लिए ग्लोबल कीबाइंड का चयन करें:",
"title": "ग्लोबल कीबाइंडस"
}
}
},
"skip-disliked-songs": {
"description": "डिसलाइकड गानो को स्किप करता है",
"name": "डिसलाइकड गानो को स्किप करें"
},
"skip-silences": {
"description": "साइलेंट सेक्शन को ऑटोमेटिकली स्किप करें",
"name": "साइलेंस स्किप करें"
},
"sponsorblock": {
"description": "Intro/Outro जैसे गैर-संगीत भागों को स्किप करता है",
"name": "SponsorBlock"
},
"video-toggle": {
"menu": {
"align": {

View File

@ -2,8 +2,14 @@
"common": {
"console": {
"plugins": {
"execute-failed": "Neuspjelo izvršenje plugina {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin{{pluginName}}::{{contextName}}{{je izvršen za {{ms}}ms"
"execute-failed": "Neuspješno izvršavanje plugina {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} je izvršen za {{ms}}ms",
"initialize-failed": "Neuspješno inicijaliziranje plugina \"{{pluginName}}\"",
"load-all": "Učitavanje svih plugina",
"load-failed": "Neuspješno učitavanje plugina \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" je učitan",
"unload-failed": "Neuspješna deaktivacija plugina \"{{pluginName}}\"",
"unloaded": "Plugin \"{{pluginName}}\" deaktiviran"
}
}
},
@ -11,5 +17,876 @@
"code": "hr",
"local-name": "Hrvatski",
"name": "Croatian"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Završeno učitavanje. DevTools je otvoren"
},
"i18n": {
"loaded": "i18n je učitan"
},
"second-instance": {
"receive-command": "Zaprimljena naredba preko protokola: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS datoteka \"{{cssFile}}\" ne postoji, zanemarujem"
},
"unresponsive": {
"details": "Neresponzivna Pogreška!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Brisanje predmemorije aplikacije"
},
"window": {
"tried-to-render-offscreen": "Prozor se pokušao prikazat van ekrana, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Izbornik je sakriven, pritisnite 'Alt' da bi se prikazao (ili 'Escape' ako koristite unutar aplikacijski izbornik)",
"message": "Sakrij Izbornik je uključen",
"title": "Sakrij Izbornik Ukljućen"
},
"need-to-restart": {
"buttons": {
"later": "Kasnije",
"restart-now": "Ponovo Pokreni Sada"
},
"detail": "\"{{pluginName}}\" plugin zahtjeva ponovno pokretanje da bi postao aktivan",
"message": "\"{{pluginName}}\" se treba ponovo pokreniti",
"title": "Ponovno Pokrećanje je Potrebno"
},
"unresponsive": {
"buttons": {
"quit": "Izađi",
"relaunch": "Ponovno Pokretanje",
"wait": "Čekaj"
},
"detail": "Ispričavamo se zbog neugodnosti! izaberite sljedeću radnju:",
"message": "Aplikacija je Neresponzivna",
"title": "Prozor je Neresponzivan"
},
"update-available": {
"buttons": {
"disable": "Isključi Ažuriranja",
"download": "Preuzmi",
"ok": "OK"
},
"detail": "Nova verzija je dostupna i može se preuzeti preko {{downloadLink}}",
"message": "Nova verzija je dostupna",
"title": "Dostupno Ažuriranje"
}
},
"menu": {
"about": "O programu",
"navigation": {
"label": "Navigacija",
"submenu": {
"copy-current-url": "Kopiraj trenutni URL",
"go-back": "Idi natrag",
"go-forward": "Idi naprijed",
"quit": "Izađi",
"restart": "Ponovno Pokreni Aplikaciju"
}
},
"options": {
"label": "Opcije",
"submenu": {
"advanced-options": {
"label": "Napredne opcije",
"submenu": {
"auto-reset-app-cache": "Resetiraj predmemoriju aplikacije pri pokretanju",
"disable-hardware-acceleration": "Isključi hardversku akceleraciju",
"edit-config-json": "Uredi config.json",
"override-user-agent": "Promijeni User-Agent",
"restart-on-config-changes": "Ponovno pokreni na promjene konfiguracije",
"set-proxy": {
"label": "Postavi proxy",
"prompt": {
"label": "Unesi Adresu za Proxy: (ostavite prazno ako želite onemogućiti)",
"placeholder": "Primjer: SOCKS5://127.0.0.1:9999",
"title": "Postavi proxy"
}
},
"toggle-dev-tools": "Uključi/isključi DevTools"
}
},
"always-on-top": "Uvijek na vrhu",
"auto-update": "Automatsko Ažuriranje",
"hide-menu": {
"dialog": {
"message": "Izbornik će se sakriti pri sljedećem pokretanju, stisnite [Alt] da se prikaže (ili backtick [`] ako koristite meni unutar aplikacije)",
"title": "Sakrij Izbornik Uključen"
},
"label": "Sakrij Izbornik"
},
"language": {
"dialog": {
"message": "Jezik će se promijeniti nakon ponovnog pokretanja",
"title": "Jezik promijenjen"
},
"label": "Jezik",
"submenu": {
"to-help-translate": "Želite pomoć za prijevodom? Kliknite ovdje"
}
},
"resume-on-start": "Nastavi zadnju pjesmu kad se aplikacija pokrene",
"single-instance-lock": "Sprječavanje višestrukog pokretanja",
"start-at-login": "Počni od prijave",
"starting-page": {
"label": "Početna stranica",
"unset": "Nepostavljeno"
},
"tray": {
"label": "Traka",
"submenu": {
"disabled": "Isključeno",
"enabled-and-hide-app": "Uključena i skrivena aplikacija",
"enabled-and-show-app": "Uključena i prikaži aplikaciju",
"play-pause-on-click": "Reproduciraj/Pauziraj na klik"
}
},
"visual-tweaks": {
"label": "Vizualna podešavanja",
"submenu": {
"like-buttons": {
"default": "Zadano",
"force-show": "Prisilno prikaži",
"hide": "Sakrij",
"label": "\"Sviđa mi se\" gumbi"
},
"remove-upgrade-button": "Ukloni gumb za nadogradnju",
"theme": {
"dialog": {
"button": {
"cancel": "Odustani",
"remove": "Ukloni"
},
"remove-theme": "Jeste li sigurni da želite ukloniti prilagođenu temu?",
"remove-theme-message": "Ovo će ukloniti prilagođenu temu"
},
"label": "Tema",
"submenu": {
"import-css-file": "Uvezi prilagođenu CSS datoteku",
"no-theme": "Bez teme"
}
}
}
}
}
},
"plugins": {
"enabled": "Uključeno",
"label": "Plugini",
"new": "NOVO"
},
"view": {
"label": "Pogled",
"submenu": {
"force-reload": "Prisilno Ponovo Učitaj",
"reload": "Ponovno učitaj",
"reset-zoom": "Prava Veličina",
"toggle-fullscreen": "Uključi/Isključi Prikaz Preko Cijelog Ekrana",
"zoom-in": "Povećaj",
"zoom-out": "Smanji"
}
}
},
"tray": {
"next": "Sljedeće",
"play-pause": "Reproduciraj/Pauziraj",
"previous": "Prethodni",
"quit": "Izađi",
"restart": "Ponovo Pokreni Aplikaciju",
"show": "Prikaži prozor",
"tooltip": {
"default": "YouTube Glazba",
"with-song-info": "YouTube Glazba: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Ako se pokrene oglas, zvuk se isključi i brzina reprodukcije se postavi na 16x",
"name": "Ubrzanje Oglasa"
},
"adblocker": {
"description": "Blokiraj sve oglase i praćenje odmah po pokretanju",
"menu": {
"blocker": "Blokator"
},
"name": "Blokator Oglasa"
},
"album-actions": {
"description": "Dodaje tipke za 'Ne sviđa mi se', 'Sviđa mi se' i 'Dislike'/'Like' za primjenu na sve pjesme u playlisti ili albumu",
"name": "Radnje Albuma"
},
"album-color-theme": {
"description": "Primjenjuje dinamičnu temu i vizualne efekte prema paleti boje albuma",
"menu": {
"color-mix-ratio": {
"label": "Omjer miješanja boja",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Boja teme albuma"
},
"ambient-mode": {
"description": "Primjenjuje efekt osvjetljenja prikazivajući nježne boje iz videa na pozadinu vašeg ekrana",
"menu": {
"blur-amount": {
"label": "Količina zamućenja",
"submenu": {
"pixels": "{{blurAmount}} pikseli"
}
},
"buffer": {
"label": "Predmemorija (Bufer)",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Prozirnost",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kvaliteta",
"submenu": {
"pixels": "{{quality}} pikseli"
}
},
"size": {
"label": "Veličina",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Glatakoća prijelaza",
"submenu": {
"during": "Tijekom {{interpolationTime}} s"
}
},
"use-fullscreen": {
"label": "Koristi se prikaz preko cijelog ekrana"
}
},
"name": "Ambijentalni Način"
},
"amuse": {
"description": "Dodaje podršku za YouTube Glazbu za widget \"sada reproducira\" od Amuse od strane 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi."
}
},
"api-server": {
"description": "Dodaje API poslužitelj za kontrolu medija",
"dialog": {
"request": {
"buttons": {
"allow": "Dozvoli",
"deny": "Odbij"
},
"message": "Dozvoli {{ID}} ({{origin}}) pristup API-ju?",
"title": "Zahtjev za autorizaciju API-ja"
}
},
"menu": {
"auth-strategy": {
"label": "Strategija autorizacije",
"submenu": {
"auth-at-first": {
"label": "Autorizacija pri prvom zahjtevu"
},
"none": {
"label": "Bez autorizacije"
}
}
},
"hostname": {
"label": "Naziv hosta"
},
"port": {
"label": "Port"
}
},
"name": "API Poslužitelj [Beta]",
"prompt": {
"hostname": {
"label": "Unesite ime hosta (npr. 0.0.0.0) od API poslužitelja:",
"title": "Naziv hosta"
},
"port": {
"label": "Unesite port od API poslužitelja:",
"title": "Port"
}
}
},
"audio-compressor": {
"description": "Primijeni kompresiju na zvuk (smanjuje glasnoću najglasnijih dijelova signala i povećava glasnoću najslabijih dijelova)",
"name": "Kompresor Zvuka"
},
"auth-proxy-adapter": {
"description": "Podrška za korištenje usluga autentifikacijskog proxyja",
"menu": {
"disable": "Onemogući proxy adapter",
"enable": "Omogući proxy adapter",
"hostname": {
"label": "Naziv hosta"
},
"port": {
"label": "Port"
}
},
"name": "Proxy adapter za autentifikaciju",
"prompt": {
"hostname": {
"label": "Unesite naziv hosta za lokalnog proxy poslužitelja (zahtijeva ponovno pokretanje):",
"title": "Naziv hosta proxyja"
},
"port": {
"label": "Unesite port za lokalni proxy poslužitelj (zahtijeva ponovno pokretanje):",
"title": "Port proxyja"
}
}
},
"blur-nav-bar": {
"description": "Čini navigacijsku traku prozirnom i zamagljenom",
"name": "Zamagli Navigacijsku Traku"
},
"bypass-age-restrictions": {
"description": "Zaobiđi YouTubeovu provjeru dobi",
"name": "Zaobiđi dobna ograničenja"
},
"captions-selector": {
"description": "Izbornik titlova za audiozapise od YouTube Musica",
"menu": {
"autoload": "Automatski izaberi posljednje korištene titlove",
"disable-captions": "Bez titlova"
},
"name": "Izbornik za titlove",
"prompt": {
"selector": {
"label": "Trenutni jezik za titlove: {{language}}",
"none": "Ništa",
"title": "Izaberi jezik za titlove"
}
},
"templates": {
"title": "Otvori izbornik za titlove"
},
"toast": {
"caption-changed": "Titlovi su promenjeni u {{language}}",
"caption-disabled": "Titlovi su isključeni",
"no-captions": "Za ovu pjesmu nisu dostupni titlovi"
}
},
"compact-sidebar": {
"description": "Uvijek postavi bočnu traku na kompaktni način rada",
"name": "Kompaktna bočna traka"
},
"crossfade": {
"description": "Pretapanje (cross-fade) između pjesama",
"menu": {
"advanced": "Napredno"
},
"name": "Pretapanje (cross-fade) [Beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Trajanje postepenog pojačavanja zvuka (Fade in) (ms)",
"fade-out-duration": "Trajanje postepenog smanjenje zvuka (Fade out) (ms)",
"fade-scaling": {
"label": "Skaliranje postepenog prijelaza (Fade scaling)",
"linear": "Linearno",
"logarithmic": "Logaritamsko"
},
"seconds-before-end": "Pretapanje (cross-fade) N sekundi prije kraja"
},
"title": "Opcije za pretapanje (cross-fade)"
}
}
},
"disable-autoplay": {
"description": "Postavlja da pjesma počne pauzirana",
"menu": {
"apply-once": "Primjenjuje se samo pri pokretanju aplikacije"
},
"name": "Isključi automatsko reprodukciju"
},
"discord": {
"backend": {
"already-connected": "Pokušano je povezivanje s aktivnom vezom",
"connected": "Spojen na Discord",
"disconnected": "Odspojen od Discorda"
},
"description": "Pokaži svojim prijateljima što slušate sa Rich Presence",
"menu": {
"auto-reconnect": "Automatski se ponovo spoji",
"clear-activity": "Očisti aktivnosti",
"clear-activity-after-timeout": "Očisti aktivnosti nakon isteka vremena",
"connected": "Spojen",
"disconnected": "Odspojen",
"hide-duration-left": "Sakrij preostalo vrijeme",
"hide-github-button": "Sakrij gumb sa GitHub poveznicom",
"play-on-youtube-music": "Reproduciraj na YouTube Musicu",
"set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)"
},
"name": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Postavi vremensko ograničenje neaktivnosti u sekundama:",
"title": "Postavi vremensko ograničenje neaktivnosti"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Jao! Oprostite, preuzimanje je bilo neuspješno…",
"title": "Pogreška pri preuzimanju!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{playlistSize}} pjesma)",
"message": "Preuzimanje Playliste {{playlistTitle}}",
"title": "Preuzimanje započeto"
}
},
"feedback": {
"conversion-progress": "Konverzija: {{percent}}%",
"converting": "Konvertiranje…",
"done": "Gotov: {{filePath}}",
"download-info": "Preuzimanje {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Preuzimanje: {{percent}}%",
"downloading": "Preuzimanje…",
"downloading-counter": "Preuzimanje {{current}}/{{total}}…",
"downloading-playlist": "Preuzimanje playliste \"{{playlistTitle}}\" - {{playlistSize}} pjesama ({{playlistId}})",
"error-while-downloading": "Pogreška pri preuzimanju \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Mapa {{playlistFolder}} već postoji",
"getting-playlist-info": "Dobavljaju se informacije o playlisti…",
"loading": "Učitavanje…",
"playlist-has-only-one-song": "Playlista ima samo jedan stavku, preuzeti će se direktno",
"playlist-id-not-found": "Nije pronađen ID playliste",
"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}}",
"preparing-file": "Priprema se datoteka…",
"saving": "Spremanje…",
"trying-to-get-playlist-id": "Pokušavam dobaviti playlist ID: {{playlistId}}",
"video-id-not-found": "Videozapis nije pronađen",
"writing-id3": "Zapisujem ID3 tagove…"
}
},
"description": "Preuzima MP3 / izvorni audiozapis izravno iz sučelja",
"menu": {
"choose-download-folder": "Odaberite mapu za preuzimanje",
"download-finish-settings": {
"label": "Preuzmi pri završetku",
"prompt": {
"last-percent": "Nakon x posto",
"last-seconds": "Zadnjih x sekundi",
"title": "Podesi kada preuzeti"
},
"submenu": {
"advanced": "Napredno",
"enabled": "Uključeno",
"mode": "Tip vremena",
"percent": "Postotak",
"seconds": "Sekunde"
}
},
"download-playlist": "Preuzmi playlistu",
"presets": "Unaprijed postavljeno",
"skip-existing": "Preskoči datoteke koje već postoje"
},
"name": "Preuzimatelj",
"renderer": {
"can-not-update-progress": "Nemoguće ažuriranje napredka"
},
"templates": {
"button": "Preuzmi"
}
},
"equalizer": {
"description": "Dodaje equalizer reprodukciji",
"menu": {
"presets": {
"label": "Zadane postavke",
"list": {
"bass-booster": "Pojačivač basa"
}
}
},
"name": "Ekvalizator"
},
"exponential-volume": {
"description": "Čini klizač glasnoće (volume slider) eksponencijalnim za lakše odabranje niže glasnoće.",
"name": "Eksponencijalna Glasnoća"
},
"in-app-menu": {
"description": "Daje izbornicima fensi, tamni ili prema boji albuma izgled",
"menu": {
"hide-dom-window-controls": "Sakrij kontrole prozora DOM-a"
},
"name": "Izbornik unutar aplikacije"
},
"lumiastream": {
"description": "Dodaje podršku za Lumia Stream",
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Dodaje podršku za tekstove pjesama za većinu pjesama",
"menu": {
"romanized-lyrics": "Romanizirani tekstovi pjesme"
},
"name": "Genius teksovi pjesme",
"renderer": {
"fetched-lyrics": "Dobavljen tekst pjesme s Genius-a"
}
},
"music-together": {
"description": "Podijeli playlistu s drugima. Kada domaćin (host) pusti pjesmu, svi ostali će čuti istu pjesmu",
"dialog": {
"enter-host": "Unesi ID hosta"
},
"internal": {
"save": "Spremi",
"track-source": "Izvor Pjesme",
"unknown-user": "Nepoznati Korisnik"
},
"menu": {
"click-to-copy-id": "Kopiraj ID Hosta",
"close": "Zatvori Glazbu Zajedno",
"connected-users": "Spojeni Korisnici",
"disconnect": "Odspoji Glazbu Zajedno",
"empty-user": "Nema spojenih korisnika",
"host": "Host Glazbe Zajedno",
"join": "Pridruži se Glazbi Zajedno",
"permission": {
"all": "Dopusti gostima da kontroliraju playlistu i reprodukciju",
"host-only": "Samo host može kontrolirati playlistu i reprodukciju",
"playlist": "Dozvoli gostima da kontroliraju playlistu"
},
"set-permission": "Promijeni dozvolu za upravljanje",
"status": {
"disconnected": "Odspojen",
"guest": "Spojen kao Gost",
"host": "Spojen kao Host"
}
},
"name": "Glazba Zajedno [Beta]",
"toast": {
"add-song-failed": "Neuspješno dodavanje pjesme",
"closed": "Glazba Zajedno je zatvorena",
"disconnected": "Glazba Zajedno je odspojena",
"host-failed": "Neuspješno hostanje Glazbe Zajedno",
"id-copied": "ID hosta kopiran u međuspremnik",
"id-copy-failed": "Neuspješno kopiranje ID-a hosta u međuspremnik",
"join-failed": "Neuspješno pridruživanje Glazbi Zajedno",
"joined": "Pridružen Glazbi Zajedno",
"permission-changed": "Dozvola Glazbe Zajedno promijenjena na '{{permission}}'",
"remove-song-failed": "Neuspješno uklanjanje pjesme",
"user-connected": "{{name}} se pridružio Glazbi Zajedno",
"user-disconnected": "{{name}} je napustio Glazbu Zajedno"
}
},
"navigation": {
"description": "Naprijed/Nazad navigacijske strelice su izravno integrirane u sučelje, kao i u vašem omiljenom pregledniku",
"name": "Navigacija",
"templates": {
"back": {
"title": "Vrati se na prijethodnu stranicu"
},
"forward": {
"title": "Idi na sljedeću stranicu"
}
}
},
"no-google-login": {
"description": "Ukloni Google prijavne gumbe i linkove iz sučelja",
"name": "Nema Google Prijave"
},
"notifications": {
"description": "Prikažite obavijest kada pjesma počne svirati (interaktivne obavijesti dostupne su na Windowsu)",
"menu": {
"interactive": "Interaktivne Obavijesti",
"interactive-settings": {
"label": "Interaktivne Postavke",
"submenu": {
"hide-button-text": "Sakrij tekst gumba",
"refresh-on-play-pause": "Osvježi pri Reprodukciji/Pauzi",
"tray-controls": "Otvori/Zatvori klikom na traku"
}
},
"priority": "Prioritet Obavijesti",
"toast-style": "Tipa Toast (kao Android obavjest)",
"unpause-notification": "Prikaži notifikaciju pri nastavku"
},
"name": "Obavijesti"
},
"performance-improvement": {
"description": "Poboljšati performanse uključivanjem eksperimentalnih skripti",
"name": "Poboljšanje performansa (Beta)"
},
"picture-in-picture": {
"description": "Dozvoljava aplikaciji da se prebaci u režim slike-u-slici",
"menu": {
"always-on-top": "Uvijek na vrhu",
"hotkey": {
"label": "Prečac",
"prompt": {
"keybind-options": {
"hotkey": "Prečac"
},
"label": "Odaberi prečac za prebacivanje u režim slike-u-slici",
"title": "Prečac za režim slike-u-slici"
}
},
"save-window-position": "Sačuvaj mjesto prozora",
"save-window-size": "Sačuvaj veličinu prozora",
"use-native-pip": "Koristi izvorni režim slike-u-slici za pretraživače"
},
"name": "Slika-u-slici",
"templates": {
"button": "Slika-u-slici"
}
},
"playback-speed": {
"description": "Slušajte brzo, slušajte sporo! Ovo će dodat klizač koji kontrolira brzinu pjesme",
"name": "Brzina pokretanja",
"templates": {
"button": "Brzina"
}
},
"precise-volume": {
"description": "Precizno kontrolirajte jačinu zvuka korištenjem točkih na mišu/prečaca, sa prilagođenim sučeljem i prilagodivim stupnjevima jačine",
"menu": {
"arrows-shortcuts": "Lokalne kontrole tipkih sa strelicama",
"custom-volume-steps": "Postavi prilagođene stope za promjenu jačine",
"global-shortcuts": "Globalni prečaci"
},
"name": "Precizna jačina zvuka",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Snizi jačinu zvuka",
"increase": "Pojačaj jačinu zvuka"
},
"label": "Odaberi globalne prečace na tipkovnici za jačinu zvuka:",
"title": "Globalni prečaci na tipkovnici za jačinu zvuka"
},
"volume-steps": {
"label": "Odaberi stope za povišenje/sniženje jačine zvuka",
"title": "Stope za promjenu jačine zvuka"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Trenutni kvalitet: {{quality}}",
"message": "Odaberi kvalitet videa:",
"title": "Odaberi kvalitet videa"
}
}
},
"description": "Dozvoljava promjenu kvaliteta videa pomoću gumba na video preklopu",
"name": "Promjena kvalitete videa",
"renderer": {
"quality-settings-button": {
"label": "Otvori izbornik za promjenu kvalitete pokretača"
}
}
},
"scrobbler": {
"description": "Dodaj podršku za 'četkanje' (poput last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Autentifikacija sa Last.fm nije uspjela.\nZatvori skočni prozor do sljedećeg ponovnog pokretanja.",
"title": "Autentifikacija je neuspješna"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Postavke za Last.fm API"
},
"listenbrainz": {
"token": "Unesi korisnički žeton za ListenBrainz"
},
"scrobble-alternative-title": "Koristi alternativne naslove",
"scrobble-other-media": "Učetkaj druge medije"
},
"name": "Četkarnik",
"prompt": {
"lastfm": {
"api-key": "Last.fm API ključ",
"api-secret": "Last.fm API tajna"
},
"listenbrainz": {
"token": {
"label": "Unesi svoj ListenBrainz korisnički žeton:",
"title": "ListenBrainz žeton"
}
}
}
},
"shortcuts": {
"description": "Dozvoljava postavljanje globalnih prečaca na tipkovnici za reproduciranje (pokreni/zaustavi/sljedeće/prijethodno) i isključivanje OSD-a za medije tako što će prebrisati tipke za medije, uključiti Ctrl/CMD + F za pretragu, isključiti MPRIS podršku za medijske tipke na Linux-u, i prilagođene prečace za napredne korisnike",
"menu": {
"override-media-keys": "Prebriši medijske tipke",
"set-keybinds": "Postavi globalne kontrole za pjesme"
},
"name": "Prečaci (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Sljedeće",
"play-pause": "Pokreni / Zaustavi",
"previous": "Prijethodno"
},
"label": "Odaberi globalne prečace za upravljanje pjesmama:",
"title": "Globalni prečaci na tipkovnici"
}
}
},
"skip-disliked-songs": {
"description": "Preskače pjesme koje vam se ne sviđaju",
"name": "Preskočite pjesme koje vam se ne sviđaju"
},
"skip-silences": {
"description": "Automatski preskočite dijelove pjesama gdje nema zvuka",
"name": "Preskoči tišine"
},
"sponsorblock": {
"description": "Automatski preskače dijelove pjesama koji nisu glazba poput uvoda/odjave ili dijelove spotova u kojima nema muzike",
"name": "Bloker sponzora"
},
"synced-lyrics": {
"description": "Obezbjeđava sinkronizirane lirike pjesama, korištenjem dobavljača poput LRClib.",
"errors": {
"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."
},
"menu": {
"default-text-string": {
"label": "Zadani karakteri između stihova pjesama",
"tooltip": "Odaberi zadane karaktere koji će biti korišteni za razmake između stihova pjesama"
},
"line-effect": {
"label": "Efekat crte",
"submenu": {
"fancy": {
"label": "Kitnjast",
"tooltip": "Koristi velike (kao iz aplikacije) efekte na trenutnu crtu"
},
"focus": {
"label": "Fokus",
"tooltip": "Pretvorite samo trenutnu crtu bijelu"
},
"offset": {
"label": "Izmak",
"tooltip": "Izmak na trenutnoj crti"
},
"scale": {
"label": "Razmjera",
"tooltip": "Promjeni razmjeru trenutne crte"
}
},
"tooltip": "Odaberi efekat koji će biti primjenjen na trenutnoj crti"
},
"precise-timing": {
"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)"
},
"romanization": {
"label": "Romanizuj stihove pjesama",
"tooltip": "Ako je tekst pjesme na drugom jeziku, probajte da ga prikažete na latinici."
},
"show-lyrics-even-if-inexact": {
"label": "Prikaži tekst pjesme čak i ako je netačan",
"tooltip": "Ako pjesma nije pronađena, produžetak će probati ponovno sa novim upitom za pretragu.\nRezultat iz drugog pokušaja možda neće biti tačan."
},
"show-time-codes": {
"label": "Prikaži vremenske oznake",
"tooltip": "Prikaži vremenske oznake pored teksta pjesme"
}
},
"name": "Sinkronizovani stihovi pjesama",
"refetch-btn": {
"fetching": "Dobavljanje...",
"normal": "Ponovo dobavite tekst pjesme"
},
"warnings": {
"duration-mismatch": "⚠️ - Tekst pjesme možda nije usklađen zbog neuklapanja u daljini trajanja.",
"inexact": "⚠️ - Tekst za ovu pjesmu možda nije tačan",
"instrumental": "⚠️ - Ovo je instrumentalna glazba"
}
},
"taskbar-mediacontrol": {
"description": "Upravljajte reprodukcijom iz Windows radne trake",
"name": "Upravljanje medijima iz radne trake"
},
"touchbar": {
"description": "Dodaje dodatak dodirne trake za macOS korisnike",
"name": "Dodirna Traka"
},
"tuna-obs": {
"description": "Integracija sa OBS-ovim Tuna dodatkom",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Onemogućava pokretaču da iskoči u toku pokretanja pjesme",
"name": "Nenametljivi pokretač"
},
"video-toggle": {
"description": "Dodaje gumb za šaltanje između režima za video/numeru. Dodatno, može da ukloni cijelu karticu sa videom",
"menu": {
"align": {
"label": "Izravnanje",
"submenu": {
"left": "Lijevo",
"middle": "Sredina",
"right": "Desno"
}
},
"force-hide": "Nasilno uklonite karticu sa videom",
"mode": {
"label": "Režim",
"submenu": {
"custom": "Prilagođeno šaltanje",
"disabled": "Isključeno",
"native": "Izvorno šaltanje"
}
}
},
"name": "Video šaltanje",
"templates": {
"button-song": "Pjesma",
"button-video": "Video"
}
},
"visualizer": {
"description": "Dodaje vizualizator u plejer",
"menu": {
"visualizer-type": "Tip vizualizacije"
},
"name": "Vizualizacija"
}
}
}

View File

@ -683,6 +683,7 @@
"listenbrainz": {
"token": "Add meg a ListenBrainz felhasználói tokenedet"
},
"scrobble-alternative-title": "Alternatív címek használata",
"scrobble-other-media": "Más média scrobbelése"
},
"name": "Scrobbler",
@ -767,6 +768,10 @@
"label": "Dalszöveg tökéletes szinkronizálása",
"tooltip": "Számítsa ki az aktuális sor megjelenítésének idejét ezredmásodperc pontossággal (ez kis mértékben befolyásolhatja a teljesítményt)"
},
"romanization": {
"label": "Latin betűs szöveg",
"tooltip": "Idegennyelvű szöveg esetén próbálkozás a szöveglatin betűs megjelenítésével."
},
"show-lyrics-even-if-inexact": {
"label": "Pontatlan időzítésű dalszövegek megjelenítése",
"tooltip": "Ha a dalt nem találja, a bővítmény újra próbálkozik egy másik keresési lekérdezéssel.\nAz eredmény a második próbálkozás után nem biztos, hogy pontos lesz."
@ -799,6 +804,10 @@
"description": "Integráció az OBS Tuna pluginjával",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Megakadályozza a lejátszó felugrását zenehallgatás közben",
"name": "Rejtett lejátszó"
},
"video-toggle": {
"description": "Hozzáad egy gombot a Videó/Dal mód közötti váltáshoz. Opcionálisan teljesen eltávolíthatja a videó fület is",
"menu": {
@ -822,7 +831,7 @@
},
"name": "Videó váltó",
"templates": {
"button": "Zeneszám"
"button-song": "Zeneszám"
}
},
"visualizer": {

View File

@ -2,7 +2,7 @@
"common": {
"console": {
"plugins": {
"execute-failed": "Gagal saat mengeksekusi plugin {{pluginName}}::{{contextName}}",
"execute-failed": "Gagal menjalankan plugin {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} dieksekusi pada {{ms}}ms",
"initialize-failed": "Gagal dalam menginisialisasi plugin \"{{pluginName}}\"",
"load-all": "Memuat semua plugin",
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Penyesuaian Visual",
"submenu": {
"custom-window-title": {
"label": "Judul jendela kustom",
"prompt": {
"label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)",
"placeholder": "Contoh: YouTube Music"
}
},
"like-buttons": {
"default": "Standar",
"force-show": "Pertunjukan paksa",
@ -279,6 +286,13 @@
},
"name": "Mode ambient"
},
"amuse": {
"description": "Menambahkan dukungan YouTube Music untuk widget Amuse yang sedang diputar oleh 6K Labs",
"name": "Amuse",
"response": {
"query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu."
}
},
"api-server": {
"description": "Menambahkan server API untuk mengontrol pemutar",
"dialog": {
@ -326,35 +340,64 @@
"description": "Menerapkan kompresi pada audio (mengurangi volume pada bagian paling keras dari sinyal dan meningkatkan volume pada bagian paling lembut)",
"name": "Kompresi suara"
},
"auth-proxy-adapter": {
"description": "Dukungan untuk penggunaan layanan proxy autentikasi",
"menu": {
"disable": "Nonaktifkan Adapter Proxy",
"enable": "Aktifkan Adapter Proxy",
"hostname": {
"label": "Nama host"
},
"port": {
"label": "Port"
}
},
"name": "Adapter Proxy Autentikasi",
"prompt": {
"hostname": {
"label": "Masukkan nama host untuk server proxy lokal (memerlukan restart):",
"title": "Proxy Nama host"
},
"port": {
"label": "Masukkan port untuk server proxy lokal (memerlukan restart):",
"title": "Port Proxy"
}
}
},
"blur-nav-bar": {
"description": "Jadikan bar navigasi blur dan transparan",
"name": "buramkan bar navigasi"
"name": "Buramkan Bar Navigasi"
},
"bypass-age-restrictions": {
"description": "Lewati verifikasi umur dari YouTube",
"name": "Lewati batasan umur"
},
"captions-selector": {
"description": "pemilih caption untuk trek audio YouTube Music",
"description": "Pemilih caption untuk trek audio YouTube Music",
"menu": {
"autoload": "pilih caption terakhir secara otomatis",
"disable-captions": "bawaannya tanpa caption"
"autoload": "Pilih caption terakhir secara otomatis",
"disable-captions": "Tidak ada caption secara default"
},
"name": "pemilih caption",
"name": "Pemilih Caption",
"prompt": {
"selector": {
"label": "bahasa caption yang dipakai sekarang: {{language}}",
"none": "tidak ada",
"title": "pilih bahasa caption"
"label": "Bahasa caption saat ini: {{language}}",
"none": "Tidak ada",
"title": "Pilih bahasa caption"
}
},
"templates": {
"title": "buka pemilih caption"
"title": "Buka pemilih caption"
},
"toast": {
"caption-changed": "caption diganti ke bahasa {{language}}",
"caption-disabled": "Caption dinonaktifkan",
"no-captions": "tidak tersedia caption untuk lagu ini"
}
},
"compact-sidebar": {
"description": "Selalu atur sidebar dalam mode kompak",
"name": "sidebar ringkas"
"name": "Sidebar Ringkas"
},
"crossfade": {
"description": "Crossfade antar lagu",
@ -365,10 +408,10 @@
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "durasi fade in (ms)",
"fade-out-duration": "durasi fade out (ms)",
"fade-in-duration": "Durasi fade in (ms)",
"fade-out-duration": "Durasi fade out (ms)",
"fade-scaling": {
"label": "redup perlahan",
"label": "Skala fade",
"linear": "Linear",
"logarithmic": "Logaritmik"
},
@ -378,6 +421,18 @@
}
}
},
"custom-output-device": {
"menu": {
"device-selector": "Pilih Perangkat"
},
"name": "Perangkat Keluaran Kustom",
"prompt": {
"device-selector": {
"label": "Pilih perangkat media keluaran yang akan digunakan",
"title": "Pilih Perangkat Keluaran"
}
}
},
"disable-autoplay": {
"description": "Buat lagu mulai dalam mode \"jeda\"",
"menu": {
@ -391,17 +446,25 @@
"connected": "Terhubung dengan Discord",
"disconnected": "Terputus dari Discord"
},
"description": "tunjukan apa yang kamu dengarkan dengan Rich Presence",
"description": "Tunjukkan apa yang kamu dengarkan dengan Rich Presence",
"menu": {
"auto-reconnect": "Reconnect otomatis",
"clear-activity": "Hapus riwayat aktifitas",
"clear-activity-after-timeout": "hapus riwayat aktifitas setelah timeout",
"connected": "terhubung",
"disconnected": "tidak terhubung",
"hide-duration-left": "sembunyikan sisa durasi",
"hide-github-button": "sembunyikan tombol link GitHub",
"clear-activity-after-timeout": "Hapus aktivitas setelah timeout",
"connected": "Terhubung",
"disconnected": "Terputus",
"hide-duration-left": "Sembunyikan sisa durasi",
"hide-github-button": "Sembunyikan tombol link GitHub",
"play-on-youtube-music": "Mainkan di YouTube Music",
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif"
"set-inactivity-timeout": "Tetapkan batas waktu tidak aktif",
"set-status-display-type": {
"label": "Teks status",
"submenu": {
"artist": "Sedang mendengarkan {artist}",
"title": "Sedang mendengarkan {song title}",
"youtube-music": "Sedang mendengarkan YouTube Music"
}
}
},
"name": "Rich Presence Discord",
"prompt": {
@ -418,16 +481,16 @@
"buttons": {
"ok": "Oke"
},
"message": "Argh! Maaf, dowloadnya gagal…",
"title": "Downloadnya error!"
"message": "Argh! Maaf, dowload gagal…",
"title": "Terjadi kesalahan dalam unduhan!"
},
"start-download-playlist": {
"buttons": {
"ok": "Oke"
},
"detail": "({{playlistSize}} lagu-lagu)",
"message": "Mengunduh Playlist {{playlistTitle}}",
"title": "Download dimulai"
"message": "Mengunduh Daftar Putar {{playlistTitle}}",
"title": "Pengunduhan dimulai"
}
},
"feedback": {
@ -438,8 +501,8 @@
"download-progress": "Mengunduh: {{percent}}%",
"downloading": "Mengunduh…",
"downloading-counter": "Mengunduh {{current}}/{{total}}…",
"downloading-playlist": "Mengunduh playlist \"{{playlistTitle}}\" - {{playlistSize}} lagu ({{playlistId}})",
"error-while-downloading": "Gagal mengunduh \"{{author}} - {{title}}\": {{error}}",
"downloading-playlist": "Mengunduh Daftar Putar \"{{playlistTitle}}\" - {{playlistSize}} lagu-lagu ({{playlistId}})",
"error-while-downloading": "Gagal dalam mengunduh \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Folder {{playlistFolder}} sudah ada",
"getting-playlist-info": "Mendapatkan informasi playlist…",
"loading": "Memuat…",
@ -494,7 +557,7 @@
}
}
},
"name": "Equalizer"
"name": "Ekualiser"
},
"exponential-volume": {
"description": "Buat penggeser volume menjadi eksponen sehingga memudahkan memilih volume yang lebih rendah.",
@ -569,7 +632,15 @@
},
"navigation": {
"description": "panah navigasi Selanjutnya/Sebelumnya terintegrasi pada antarmuka, layaknya peramban kesukaan Anda",
"name": "Navigasi"
"name": "Navigasi",
"templates": {
"back": {
"title": "Kunjungi halaman sebelumnya"
},
"forward": {
"title": "pergi ke halaman berikutnya"
}
}
},
"no-google-login": {
"description": "Hapus tombol dan tautan masuk Google dari antarmuka",
@ -593,6 +664,10 @@
},
"name": "Pemberitahuan"
},
"performance-improvement": {
"description": "Tingkatkan kinerja dengan mengaktifkan skrip eksperimental",
"name": "Peningkatan kinerja [Beta]"
},
"picture-in-picture": {
"description": "Izinkan untuk memindahkan aplikasi ke mode gambar-dalam-gambar",
"menu": {
@ -657,7 +732,12 @@
}
},
"description": "Izinkan untuk mengubah kualitas video dengan tombol pada hamparan video",
"name": "Pengubah Kualitas Video"
"name": "Pengubah Kualitas Video",
"renderer": {
"quality-settings-button": {
"label": "pengubah kualitas pemain terbuka"
}
}
},
"scrobbler": {
"description": "Tambahkan dukungan scrobbling (mis. last.fm, Listenbrainz)",
@ -676,6 +756,7 @@
"listenbrainz": {
"token": "Masukkan token pengguna ListenBrainz"
},
"scrobble-alternative-title": "Gunakan judul alternatif",
"scrobble-other-media": "Scrobble media lain"
},
"name": "Scrobbler",
@ -726,8 +807,8 @@
"synced-lyrics": {
"description": "Menyediakan lirik lagu yang disinkronkan, menggunakan penyedia seperti LRClib.",
"errors": {
"fetch": "⚠️ - Terjadi kesalahan saat mengambil lirik. Coba lagi nanti.",
"not-found": "⚠️ - Tidak ada lirik yang ditemukan untuk lagu ini."
"fetch": "⚠️\tTerjadi kesalahan saat mengambil lirik.\n\tSilakan coba lagi nanti.",
"not-found": "⚠️ Tidak ada lirik yang ditemukan untuk lagu ini."
},
"menu": {
"default-text-string": {
@ -737,6 +818,10 @@
"line-effect": {
"label": "Efek garis",
"submenu": {
"fancy": {
"label": "Mewah",
"tooltip": "Gunakan efek besar seperti aplikasi pada baris saat ini"
},
"focus": {
"label": "Fokus",
"tooltip": "Jadikan hanya baris saat ini berwarna putih"
@ -756,6 +841,10 @@
"label": "Buat liriknya tersinkronisasi dengan sempurna",
"tooltip": "Hitung hingga milidetik tampilan baris berikutnya (dapat berdampak kecil pada kinerja)"
},
"romanization": {
"label": "Romanize Liriknya",
"tooltip": "Apabila lirik berada dalam bahasa berbeda, cobalah untuk menampilkan versi latinnya."
},
"show-lyrics-even-if-inexact": {
"label": "Tampilkan lirik meskipun tidak tepat",
"tooltip": "Jika lagu tidak ditemukan, plugin akan mencoba lagi dengan kueri pencarian yang berbeda.\nHasil dari percobaan kedua mungkin tidak tepat."
@ -788,6 +877,10 @@
"description": "Integrasi dengan plugin Tuna OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Cegah pemutar musik muncul ketika memutar musik",
"name": "Pemutar simpel (tidak menganggu)"
},
"video-toggle": {
"description": "Tambahkan tombol untuk beralih antara mode Lagu/Video. secara opsional juga dapat menghapus keseluruhan tab video",
"menu": {
@ -811,7 +904,8 @@
},
"name": "Peralih Video",
"templates": {
"button": "Lagu"
"button-song": "Lagu",
"button-video": "video"
}
},
"visualizer": {

View File

@ -799,7 +799,7 @@
},
"name": "Myndbandsrofi",
"templates": {
"button": "Lag"
"button-song": "Lag"
}
},
"visualizer": {

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Miglioramenti visivi",
"submenu": {
"custom-window-title": {
"label": "Personalizza titolo finestra",
"prompt": {
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
"placeholder": "Esempio: YouTube Music"
}
},
"like-buttons": {
"default": "Predefinito",
"force-show": "Forza la visualizzazione",
@ -160,10 +167,10 @@
"theme": {
"dialog": {
"button": {
"cancel": "Cancella",
"cancel": "Annulla",
"remove": "Rimuovi"
},
"remove-theme": "Sicuro di voler rimuovere il tema personalizzato?",
"remove-theme": "Sei sicuro di voler rimuovere il tema personalizzato?",
"remove-theme-message": "Questo rimuoverà il tema personalizzato"
},
"label": "Tema",
@ -333,6 +340,30 @@
"description": "Attiva la compressione audio (abbassa il volume delle parti più alte e alza quello delle parti più basse del segnale)",
"name": "Compressore audio"
},
"auth-proxy-adapter": {
"description": "Supporto per l'utilizzo di servizi proxy di autenticazione",
"menu": {
"disable": "Disattiva adattatore proxy",
"enable": "Attiva adattatore proxy",
"hostname": {
"label": "Nome host"
},
"port": {
"label": "Porta"
}
},
"name": "Adattatore proxy di autenticazione",
"prompt": {
"hostname": {
"label": "Inserire hostname del server proxy locale (richiede riavvio):",
"title": "Nome host del proxy"
},
"port": {
"label": "Inserire porta del server proxy locale (richiede riavvio):",
"title": "Porta Proxy"
}
}
},
"blur-nav-bar": {
"description": "Rende la barra di navigazione trasparente e sfuocata",
"name": "Barra di navigazione trasparente"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Apri il selettore dei sottotitoli"
},
"toast": {
"caption-changed": "Sottotitoli cambiati in {{language}}",
"caption-disabled": "Sottotitoli disattivati",
"no-captions": "Nessun sottotitolo disponibile per questa canzone"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Scegli da quale uscita audio vuoi riprodurre i brani",
"menu": {
"device-selector": "Seleziona un'uscita"
},
"name": "Dispositivo di Output Personalizzato",
"prompt": {
"device-selector": {
"label": "Scegli il dispositivo d'output da utilizzare",
"title": "Scegli il dispositivo d'output"
}
}
},
"disable-autoplay": {
"description": "Fa iniziare i brani in modalità \"pausa\"",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "Nascondi la durata rimasta",
"hide-github-button": "Nascondi il pulsante link a GitHub",
"play-on-youtube-music": "Riproduci su YouTube Music",
"set-inactivity-timeout": "Imposta il timeout di inattività"
"set-inactivity-timeout": "Imposta il timeout di inattività",
"set-status-display-type": {
"label": "Testo dello status",
"submenu": {
"artist": "Stai ascoltando {artist}",
"title": "Stai ascoltando {song title}",
"youtube-music": "Ascoltando YouTube Music"
}
}
},
"name": "Discord Rich Presence",
"prompt": {
@ -495,7 +552,7 @@
"description": "Aggiunge un equalizzatore al player",
"menu": {
"presets": {
"label": "Presets",
"label": "Preset",
"list": {
"bass-booster": "Booster dei bassi"
}
@ -544,7 +601,7 @@
"connected-users": "Utenti connessi",
"disconnect": "Disconetti Music Together",
"empty-user": "Utenti non connessi",
"host": "Music Together Host",
"host": "Host di Music Together",
"join": "Unisciti a Music Together",
"permission": {
"all": "Consenti ai Guest di controllare la playlist e il player",
@ -576,7 +633,15 @@
},
"navigation": {
"description": "Frecce di navigazione Avanti/Indietro integrate direttamente nell'interfaccia, come nel tuo browser preferito",
"name": "Navigazione"
"name": "Navigazione",
"templates": {
"back": {
"title": "Vai alla pagina precedente"
},
"forward": {
"title": "Vai alla pagina successiva"
}
}
},
"no-google-login": {
"description": "Rimuovi i pulsanti di accesso e i link di Google dall'interfaccia",
@ -600,18 +665,22 @@
},
"name": "Notifiche"
},
"performance-improvement": {
"description": "Migliora le prestazioni abilitando gli script sperimentali",
"name": "Miglioramento prestazioni [Beta]"
},
"picture-in-picture": {
"description": "Consente di far passare l'app alla modalità Picture-in-Picture",
"menu": {
"always-on-top": "Sempre in primo piano",
"hotkey": {
"label": "Hotkey",
"label": "Tasto di scelta rapida",
"prompt": {
"keybind-options": {
"hotkey": "Hotkey"
"hotkey": "Tasto di scelta rapida"
},
"label": "Scegliere un'hotkey per attivare Picture-in-picture",
"title": "Picture-in-picture Hotkey"
"title": "Tasto di scelta rapida per Picture-in-picture"
}
},
"save-window-position": "Salva la posizione della finestra",
@ -664,7 +733,12 @@
}
},
"description": "Permette di cambiare la qualità del video con un pulsante in sovrimpressione",
"name": "Cambia qualità video"
"name": "Cambia qualità video",
"renderer": {
"quality-settings-button": {
"label": "Apri il selettore di qualità del player"
}
}
},
"scrobbler": {
"description": "Aggiunge il supporto per lo scrobbling (Last.fm, Listenbrainz ecc.)",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "Inserire il token utente per ListenBrainz"
},
"scrobble-alternative-artist": "Usa artisti alternativi",
"scrobble-alternative-title": "Usa titoli alternativi",
"scrobble-other-media": "Scrobble altri media"
},
"name": "Scrobbler",
@ -719,7 +795,7 @@
}
},
"skip-disliked-songs": {
"description": "Salta i brani che non ti piacciono",
"description": "Salta le canzoni non gradite",
"name": "Salta i brani che non ti piacciono"
},
"skip-silences": {
@ -733,8 +809,8 @@
"synced-lyrics": {
"description": "Fornisce testi sincronizzati alle canzoni, utilizzando provider come LRClib.",
"errors": {
"fetch": "⚠️ - Si è verificato un errore nel recuperare il testo. Per favore riprova più tardi.",
"not-found": "⚠️ - Nessun testo trovato per questa canzone."
"fetch": "⚠️ \tSi è verificato un errore nel recuperare il testo.\n\tPer favore riprova più tardi.",
"not-found": "⚠️ Nessun testo trovato per questa canzone."
},
"menu": {
"default-text-string": {
@ -744,6 +820,10 @@
"line-effect": {
"label": "Effetto linea",
"submenu": {
"fancy": {
"label": "Fantasia",
"tooltip": "Usa effetti grandi, simili a quelli di un'app sulla riga attuale"
},
"focus": {
"label": "Focus",
"tooltip": "Rendi bianca solo la riga corrente"
@ -763,6 +843,18 @@
"label": "Rendi i testi perfettamente sincronizzati",
"tooltip": "Calcola al millisecondo la visualizzazione della riga successiva (può avere un piccolo impatto sulle prestazioni)"
},
"preferred-provider": {
"label": "Provider preferito",
"none": {
"label": "Nessuno",
"tooltip": "Nessun provider preferito"
},
"tooltip": "Scegli quale provider predefinito utilizzare"
},
"romanization": {
"label": "Testi in caratteri occidentali",
"tooltip": "Qualora il testo fosse scritto in una lingua non occidentale, prova a visualizzarlo in caratteri latini."
},
"show-lyrics-even-if-inexact": {
"label": "Mostra le lyric anche se incorrette",
"tooltip": "Se il brano non viene trovato, il plugin riprova con un'altra query di ricerca.\nIl risultato del secondo tentativo potrebbe non essere esatto."
@ -791,10 +883,35 @@
"description": "Aggiunge un widget TouchBar per gli utenti macOS",
"name": "Touch Bar (per MacOS)"
},
"transparent-player": {
"description": "Rende trasparente la finestra del programma",
"menu": {
"opacity": {
"label": "Opacità",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Tipo",
"submenu": {
"acrylic": "Acrilico",
"mica": "Mica",
"none": "Nessuno",
"tabbed": "In scheda"
}
}
},
"name": "Player Trasparente"
},
"tuna-obs": {
"description": "Integrazione con il plugin OBS Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Evita che il player si apra automaticamente durante la riproduzione di un brano",
"name": "Player Discreto"
},
"video-toggle": {
"description": "Aggiunge un pulsante per passare dalla modalità Video a quella Brano. Può anche rimuovere l'intera scheda Brano/Video",
"menu": {
@ -818,7 +935,8 @@
},
"name": "Selettore Brano/Video",
"templates": {
"button": "Brano"
"button-song": "Brano",
"button-video": "Video"
}
},
"visualizer": {

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "見た目の微調整",
"submenu": {
"custom-window-title": {
"label": "カスタムウィンドウタイトル",
"prompt": {
"label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)",
"placeholder": "例: YouTube Music"
}
},
"like-buttons": {
"default": "デフォルト",
"force-show": "強制的に表示",
@ -279,6 +286,13 @@
},
"name": "アンビエント モード"
},
"amuse": {
"description": "6K LabsのAmuse再生中ウィジェットがYouTube Musicに対応しました",
"name": "Amuse",
"response": {
"query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。"
}
},
"api-server": {
"description": "プレイヤーを制御するAPIサーバーを追加",
"dialog": {
@ -326,6 +340,30 @@
"description": "オーディオにコンプレッサーを適用します(信号での一番大きい部分の音量を下げ、小さい部分の音量を上げる)",
"name": "オーディオコンプレッサー"
},
"auth-proxy-adapter": {
"description": "認証プロキシサービスの利用サポート",
"menu": {
"disable": "プロキシアダプターを無効にする",
"enable": "プロキシアダプターを有効にする",
"hostname": {
"label": "ホスト名"
},
"port": {
"label": "ポート"
}
},
"name": "認証プロキシアダプタ",
"prompt": {
"hostname": {
"label": "ローカルプロキシサーバのホスト名を入力します(再起動が必要です):",
"title": "プロキシホスト名"
},
"port": {
"label": "ローカルプロキシサーバのポートを入力します(再起動が必要です):",
"title": "プロキシポート"
}
}
},
"blur-nav-bar": {
"description": "ナビゲーションバーを透明かつぼやけにします",
"name": "ナビゲーションバーの曇り効果"
@ -350,6 +388,11 @@
},
"templates": {
"title": "字幕選択機を開く"
},
"toast": {
"caption-changed": "字幕を{{language}}に変更しました",
"caption-disabled": "字幕を無効にしました",
"no-captions": "この曲には字幕がありません"
}
},
"compact-sidebar": {
@ -485,7 +528,7 @@
}
},
"equalizer": {
"description": "プレイヤーにイコライザーを追加",
"description": "イコライザーを追加",
"menu": {
"presets": {
"label": "プリセット",
@ -569,7 +612,15 @@
},
"navigation": {
"description": "ブラウザの戻る・進むボタンのようにUIからコントロールできるボタン",
"name": "ナビゲーション"
"name": "ナビゲーション",
"templates": {
"back": {
"title": "前のページに戻ります"
},
"forward": {
"title": "次のページに進みます"
}
}
},
"no-google-login": {
"description": "インターフェースからGoogleのログインボタンとリンクを削除",
@ -593,6 +644,10 @@
},
"name": "通知"
},
"performance-improvement": {
"description": "実験的スクリプトを有効にすることによってパフォーマンス改善します",
"name": "パフォーマンス改善 [ベータ]"
},
"picture-in-picture": {
"description": "アプリでピクチャ・イン・ピクチャを切り替えられるようになります",
"menu": {
@ -657,7 +712,12 @@
}
},
"description": "ビデオオーバーレイのボタンを使用してビデオ品質を変更できるようにします",
"name": "ビデオ品質チェンジャー"
"name": "ビデオ品質チェンジャー",
"renderer": {
"quality-settings-button": {
"label": "ビデオ品質チェンジャーを開きます"
}
}
},
"scrobbler": {
"description": "スクロブリング対応を追加しますlast.fm、Listenbrainzなど",
@ -676,6 +736,7 @@
"listenbrainz": {
"token": "ListenBrainzユーザートークンを入力してください"
},
"scrobble-alternative-title": "代替タイトルを使用する",
"scrobble-other-media": "他のメディアをScrobbleする"
},
"name": "スクロブラー",
@ -726,8 +787,8 @@
"synced-lyrics": {
"description": "LRClibのようなプロバイダを使って、楽曲に同期した歌詞を使用する。",
"errors": {
"fetch": "⚠️ - 歌詞の取得中にエラーが発生しました。 後でもう一度お試しください。",
"not-found": "⚠️ - この曲の歌詞は見つかりませんでした。"
"fetch": "⚠️ \t歌詞の取得中にエラーが発生しました。\n\t後でもう一度お試しください。",
"not-found": "⚠️ この曲の歌詞は見つかりませんでした。"
},
"menu": {
"default-text-string": {
@ -737,6 +798,10 @@
"line-effect": {
"label": "歌詞表示のエフェクト",
"submenu": {
"fancy": {
"label": "ファンシー",
"tooltip": "現在の行にアプリのような大きなエフェクトを使う"
},
"focus": {
"label": "フォーカス",
"tooltip": "現在の行だけを白くする"
@ -756,6 +821,10 @@
"label": "歌詞を完璧に同期させる",
"tooltip": "次の行の表示をミリ秒単位で計算する(パフォーマンスに若干の影響を与える可能性があります)"
},
"romanization": {
"label": "ローマ字歌詞",
"tooltip": "歌詞が異なる言語で書かれている場合は、ラテン語バージョンを表示するようにしてください。"
},
"show-lyrics-even-if-inexact": {
"label": "歌詞が不正確でも表示する",
"tooltip": "曲が見つからなかった場合、プラグインは別の検索クエリで再試行します。\nただし、再試行の結果は正確でない可能性があります。"
@ -788,6 +857,10 @@
"description": "OBSのプラグインTunaの統合",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "曲の再生時にプレーヤーがポップアップしないようにする",
"name": "控えめなプレーヤー"
},
"video-toggle": {
"description": "ビデオ/ソングモードを切り替えるボタンを追加します。オプションでビデオタブ全体を削除することもできます",
"menu": {
@ -811,7 +884,8 @@
},
"name": "動画の切り替え",
"templates": {
"button": "曲"
"button-song": "曲",
"button-video": "動画"
}
},
"visualizer": {

View File

@ -1,10 +1,44 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "პლაგინის დაყენების შეცდომა {{pluginName}}::{{contextName}}",
"executed-at-ms": "პლაგინი {{pluginName}}::{{contextName}} გაეშვა {{ms}} მილიწამში",
"initialize-failed": "პლაგინის ინიციალიზაცია ვერ მოხდა\"{{pluginName}}\"",
"load-all": "იტვირთება ყველა პლაგინი",
"load-failed": "პლაგინის ჩატვირთვა ვერ მოხდა \"{{pluginName}}\"",
"loaded": "პლაგინი \"{{pluginName}}\" ჩაიტვირთა",
"unload-failed": "პლაგინის {{pluginName}} გათიშვა ვერ მოხერხდა",
"unloaded": "პლაგინი {{pluginName}} გათიშულია"
}
}
},
"language": {
"code": "ka",
"local-name": "ქართული",
"name": "Georgian"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "ჩატვირთვა დასრულებულია. DevTools გახსნილია"
},
"i18n": {
"loaded": "i18n ჩართულია"
},
"second-instance": {
"receive-command": "მიღებულია ბრძანება პროტოკოლზე: {{command}}"
},
"theme": {
"css-file-not-found": "CSS ფაილი {{cssFile}} არ არსებობს, იგნორირება"
},
"unresponsive": {
"details": "უპასუხო შეცდომა!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "აპლიკაციის ქეშის გაწმენდვა"
}
},
"dialog": {
"need-to-restart": {
"buttons": {

View File

@ -0,0 +1,7 @@
{
"language": {
"code": "kn",
"local-name": "ಕನ್ನಡ",
"name": "Kannada"
}
}

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "시각적 변경",
"submenu": {
"custom-window-title": {
"label": "사용자 정의 앱 제목",
"prompt": {
"label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)",
"placeholder": "예: YouTube Music"
}
},
"like-buttons": {
"default": "기본",
"force-show": "강제로 표시",
@ -164,7 +171,7 @@
"remove": "제거"
},
"remove-theme": "사용자 정의 테마를 제거하시겠습니까?",
"remove-theme-message": "사용자 정의 테마 제거됩니다. 계속하시겠습니까?"
"remove-theme-message": "사용자 정의 테마 제거하시겠습니까?"
},
"label": "테마",
"submenu": {
@ -333,6 +340,30 @@
"description": "오디오에 컴프레서를 적용합니다 (신호에서 가장 시끄러운 부분의 음량을 낮추고 가장 조용한 부분의 음량을 높임)",
"name": "오디오 컴프레서"
},
"auth-proxy-adapter": {
"description": "아이디/패스워드가 필요한 프록시를 지원합니다",
"menu": {
"disable": "프록시 어댑터 차단",
"enable": "프록시 어댑터 허용",
"hostname": {
"label": "호스트 명"
},
"port": {
"label": "포트"
}
},
"name": "권한 프록시 어댑터",
"prompt": {
"hostname": {
"label": "로컬 프록시 서버의 호스트명 을 입력 해주세요 (재시동이 필요합니다):",
"title": "프록시 호스트명"
},
"port": {
"label": "로컬 프록시 서버의 포트를 입력 해주세요 (재시동이 필요합니다):",
"title": "프록시 포트"
}
}
},
"blur-nav-bar": {
"description": "탐색 바를 투명하고 흐릿하게 만듭니다",
"name": "탐색 바 흐림 효과"
@ -357,6 +388,11 @@
},
"templates": {
"title": "자막 선택기 열기"
},
"toast": {
"caption-changed": "자막 언어가 {{language}}(으)로 변경되었습니다",
"caption-disabled": "자막이 비활성화 되었습니다",
"no-captions": "이 곡에는 자막이 없습니다"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "미디어 출력 장치 구성",
"menu": {
"device-selector": "장치 선택"
},
"name": "출력 장치 커스텀",
"prompt": {
"device-selector": {
"label": "사용할 미디어 출력 장치를 선택하세요",
"title": "출력 장치 선택"
}
}
},
"disable-autoplay": {
"description": "노래를 '일시 정지' 모드로 시작하게 합니다",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "남은 재생 시간 숨기기",
"hide-github-button": "GitHub 링크 버튼 숨기기",
"play-on-youtube-music": "유튜브 뮤직에서 재생",
"set-inactivity-timeout": "비활성 시간 제한 설정"
"set-inactivity-timeout": "비활성 시간 제한 설정",
"set-status-display-type": {
"label": "상태 텍스트",
"submenu": {
"artist": "{아티스트} 듣는 중",
"title": "{곡 제목} 듣는 중",
"youtube-music": "YouTube Music 듣는 중"
}
}
},
"name": "디스코드 활동 상태",
"prompt": {
@ -576,7 +633,15 @@
},
"navigation": {
"description": "브라우저에서처럼, UI에 직접 통합된 앞으로/뒤로 탐색하는 화살표",
"name": "탐색"
"name": "탐색",
"templates": {
"back": {
"title": "이전 페이지로 이동"
},
"forward": {
"title": "다음 페이지로 이동"
}
}
},
"no-google-login": {
"description": "UI에서 Google 로그인 버튼 및 링크 제거하기",
@ -600,6 +665,10 @@
},
"name": "알림"
},
"performance-improvement": {
"description": "실험적인 스크립트를 활성화하여 성능을 개선합니다",
"name": "성능 개선 [베타]"
},
"picture-in-picture": {
"description": "앱을 PiP 모드로 전환할 수 있게 허용합니다",
"menu": {
@ -664,7 +733,12 @@
}
},
"description": "영상 오버레이의 버튼으로 영상 품질을 변경할 수 있습니다",
"name": "영상 품질 체인저"
"name": "영상 품질 체인저",
"renderer": {
"quality-settings-button": {
"label": "영상 품질 선택기 열기"
}
}
},
"scrobbler": {
"description": "스크로블링 지원을 추가합니다 (예: last.fm, Listenbrainz)",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "ListenBrainz 유저 토큰 입력"
},
"scrobble-alternative-artist": "대체 아티스트 명 사용",
"scrobble-alternative-title": "대체 제목 사용하기",
"scrobble-other-media": "다른 미디어 스크로블하기"
},
"name": "스크로블러",
@ -767,6 +843,18 @@
"label": "가사를 최대한 정교하게 동기화",
"tooltip": "다음 줄의 표시를 밀리초 단위로 계산합니다 (성능에 약간의 영향을 미칠 수 있음)"
},
"preferred-provider": {
"label": "선호하는 가사 제공자",
"none": {
"label": "없음",
"tooltip": "선호하는 가사 제공자 없음"
},
"tooltip": "사용할 기본 가사 제공자를 선택하세요"
},
"romanization": {
"label": "가사 로마자 변환",
"tooltip": "가사가 영어가 아닌 언어로 되어있는 경우, 로마자 표기를 표시합니다."
},
"show-lyrics-even-if-inexact": {
"label": "가사가 정확하지 않더라도 표시",
"tooltip": "노래를 찾을 수 없는 경우, 플러그인이 다른 검색어로 다시 검색합니다.\n두번째 검색 결과는 정확하지 않을 수 있습니다."
@ -795,10 +883,35 @@
"description": "macOS 사용자를 위한 TouchBar 위젯을 추가합니다",
"name": "TouchBar"
},
"transparent-player": {
"description": "애플리케이션 창을 투명하게 만듭니다",
"menu": {
"opacity": {
"label": "불투명도",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "종류",
"submenu": {
"acrylic": "아크릴",
"mica": "미카",
"none": "없음",
"tabbed": "탭"
}
}
},
"name": "투명 플레이어"
},
"tuna-obs": {
"description": "OBS의 확장인 Tuna와의 통합을 활성화합니다",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "노래 재생 중 플레이어가 팝업되는 것을 방지합니다",
"name": "플레이어 방해 금지"
},
"video-toggle": {
"description": "영상/노래 모드를 전환하는 버튼을 추가합니다. 선택적으로 전체 영상 탭을 제거할 수도 있습니다",
"menu": {
@ -822,7 +935,8 @@
},
"name": "영상 전환",
"templates": {
"button": "노래"
"button-song": "노래",
"button-video": "영상"
}
},
"visualizer": {

View File

@ -207,6 +207,10 @@
}
},
"plugins": {
"ad-speedup": {
"description": "Jeigu gros reklama, bus įrašo garsas išjungtas ir pagreitintas 16x",
"name": "Reklamos Pagreitinimas"
},
"adblocker": {
"description": "Blokuoti visas reklamas ir seklius",
"menu": {
@ -215,6 +219,7 @@
"name": "Reklamų blokuotojas"
},
"album-actions": {
"description": "Prideda Nepatinka, Patinka bei atžymėti Nepatika ir Patinka visoms dainoms grojaraštyje arba albume.",
"name": "Albumo Veiksmai"
},
"album-color-theme": {
@ -274,6 +279,56 @@
},
"name": "Aplinkos rėžimas"
},
"amuse": {
"description": "Prideda Youtube Muzika palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"name": "Amuse (Platforma Dainininkams)",
"response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija."
}
},
"api-server": {
"description": "Prideda API serveri, kad būtų galima kontroliuoti grotuvą",
"dialog": {
"request": {
"buttons": {
"allow": "Leisti",
"deny": "Neleisti"
},
"message": "Leisti {{ID}} ({{origin}}) prieiga prie API?",
"title": "API įgaliojimo užklausa"
}
},
"menu": {
"auth-strategy": {
"label": "Įgaliojimo strategija",
"submenu": {
"auth-at-first": {
"label": "Įgalioti per pirmą užklausą"
},
"none": {
"label": "Nėra įgaliojimo"
}
}
},
"hostname": {
"label": "Serverio Pavadinimas"
},
"port": {
"label": "Prievadas"
}
},
"name": "API Serverio {Beta}",
"prompt": {
"hostname": {
"label": "Įveskite serverio pavadinimą (pavyzdžiui kaip 0.0.0.0) skirtą API serveriui:",
"title": "Serverio Pavadinimas"
},
"port": {
"label": "Įveskite prievadą API serveriui:",
"title": "Prievadas"
}
}
},
"audio-compressor": {
"description": "Pritaikyti garso kompresiją (sumažina garsiausių signalo dalių garsumą ir padidina švelniausių dalių garsumą)",
"name": "Garso Kompresorius"
@ -583,6 +638,17 @@
"description": "Automatiškai praleidžia ne muzikines dalis, pvz., įžangą/užvedimą arba muzikinių vaizdo įrašų dalis, kuriose daina negrojama",
"name": "Rėmėjų blokuotojas"
},
"synced-lyrics": {
"refetch-btn": {
"fetching": "Gaunama...",
"normal": "Atgauti dainos žodžius"
},
"warnings": {
"duration-mismatch": "⚠️ - Dainos žodžiai gali būti nesinchronizuoti dėl trukmės nesutikimo.",
"inexact": "⚠️ - Dainos žodžiai gali šiek tiek skirtis",
"instrumental": "⚠️ Tai instrumentinė daina"
}
},
"taskbar-mediacontrol": {
"description": "Valdykite atkūrimą iš „Windows“ užduočių juostos",
"name": "Užduočių juostos medijos valdymas"
@ -618,7 +684,7 @@
},
"name": "Vaizdo įrašo perjungimas",
"templates": {
"button": "Daina"
"button-song": "Daina"
}
},
"visualizer": {

494
src/i18n/resources/lv.json Normal file
View File

@ -0,0 +1,494 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Problēma ielādēt plaginu {{pluginName}}::{{contextName}}",
"executed-at-ms": "Plagins {{pluginName}}::{{contextName}} ielādējās par{{ms}}ms",
"initialize-failed": "Kļūda inicializējot plaginu \"{{pluginName}}\"",
"load-all": "Ielādē visus plaginus",
"load-failed": "Kļūda ielādējot plaginu \"{{pluginName}}\"",
"loaded": "Plagins \"{{pluginName}}\" ielādēts",
"unload-failed": "Kļūda izlādējot plaginu \"{{pluginName}}\"",
"unloaded": "Plagins \"{{pluginName}}\" izlādēts"
}
}
},
"language": {
"code": "lv",
"local-name": "Latviešu",
"name": "Latvian"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Lejupielāde pabeigta. DevTools atvērts"
},
"i18n": {
"loaded": "i18n ielādēts"
},
"second-instance": {
"receive-command": "Saņemta komanda pāri protokolam: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS fails \"{{cssFile}}\" neeksistē, ignorējas"
},
"unresponsive": {
"details": "Lietotne neatbild\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Iztīra lietotnes kešu"
},
"window": {
"tried-to-render-offscreen": "Logs mēģināja atvērties ārpuss ekrāna barjeriem, loga izmērs={{windowSize}}, ekrāna izškirtspēja={{displaySize}}, pozīcija={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Izvēlne ir noslēpta, izmantojiet 'Alt' lai to parādītu (vai 'Escape' ja izmanto lietotnes iekšējo izvēlni)",
"message": "Izvēlnes noslēpšana ir ieslēgta",
"title": "Izvēlnes noslēpšana ieslēgta"
},
"need-to-restart": {
"buttons": {
"later": "Vēlāk",
"restart-now": "Restartēt Tagad"
},
"detail": "Restartējiet lietotni lai aktivizētu plaginu {{pluginName}}",
"message": "{{pluginName}} pieprasa restartēšanu",
"title": "Vajadzīga restartēšana"
},
"unresponsive": {
"buttons": {
"quit": "Iziet",
"relaunch": "Restartēt",
"wait": "Pagaidat"
},
"detail": "Atvainojamies par neērtībām! Lūdzu izvēlaties ko darīt:",
"message": "Lietotne neatbild",
"title": "Logs neatbild"
},
"update-available": {
"buttons": {
"disable": "Izslēgt atjauninājumus",
"download": "Lejupielādēt",
"ok": "OK"
},
"detail": "Jauna versija ir pieejama, un var tikt lejupielādēta šeit {{downloadLink}}",
"message": "Pieejama jauna versija",
"title": "Pieejams atjauninājums"
}
},
"menu": {
"about": "Par",
"navigation": {
"label": "Navigācija",
"submenu": {
"copy-current-url": "Kopēt pašreizējo URL",
"go-back": "Atgriezties",
"go-forward": "Uz priekšu",
"quit": "Iziet",
"restart": "Restartēt lietotni"
}
},
"options": {
"label": "Iestatījumi",
"submenu": {
"advanced-options": {
"label": "Paplašināti iestatījumi",
"submenu": {
"auto-reset-app-cache": "Iztīrīt kešu kad lietotne palaižas",
"disable-hardware-acceleration": "Atslēgt aparatūras paātrinājumu",
"edit-config-json": "Labot config.json",
"override-user-agent": "Pārrakstīt lietotāja aģenta informāciju",
"restart-on-config-changes": "Restartēt kad mainās konfigurācija",
"set-proxy": {
"label": "Iestatīt proxy",
"prompt": {
"label": "Ievadiet Proxy adresi: (atstajiet tukšu lai izslēgtu)",
"placeholder": "Piemērs: SOCKS5://127.0.0.1:9999",
"title": "Iestatīt proxy"
}
},
"toggle-dev-tools": "Ieslēgt DevTools"
}
},
"always-on-top": "Vienmēr priekšā",
"auto-update": "Automātiski atjauninājumi",
"hide-menu": {
"dialog": {
"message": "Izvēlne tiks paslēpta kad palaidīsiet letotni atkal, izmantojiet [Alt] lai parādīt to (vai [`] ja izmantojiet lietotnes iekšējo izvēlni)",
"title": "Izvēlnes paslepšana ieslēgta"
},
"label": "Paslēpt izvēlni"
},
"language": {
"dialog": {
"message": "Valoda tiks pamainīta pēc restartēšanas",
"title": "Valoda pamainīta"
},
"label": "Valoda",
"submenu": {
"to-help-translate": "Gribat palīdzēt ar tulkošanu? Spiežat šeit"
}
},
"resume-on-start": "Turpināt pēdējo dziesmu kad lietotne palaižas",
"single-instance-lock": "Liegums palaists vairākas lietotnes",
"start-at-login": "Palaist ieslēdzot datoru",
"starting-page": {
"label": "Sākuma lapa",
"unset": "Nav iestatīts"
},
"tray": {
"label": "Minimizēt uz teknīti",
"submenu": {
"disabled": "Izslēgts",
"enabled-and-hide-app": "Teknīte ieslēgta, paslēpt lietotnes logu",
"enabled-and-show-app": "Ielsēgts un rādīt lietotni",
"play-pause-on-click": "Atskaņot/Pauzēt piespiežot"
}
},
"visual-tweaks": {
"label": "Vizuāli Iestatījumi",
"submenu": {
"like-buttons": {
"default": "Noklusējums",
"force-show": "Vienmēr rādīt",
"hide": "Paslēpt",
"label": "Like pogas"
},
"remove-upgrade-button": "Noslēpt YouTube Premium pogu",
"theme": {
"dialog": {
"button": {
"cancel": "Atcelt",
"remove": "Noņemt"
},
"remove-theme": "Vai tiešām, gribat noņemt šo lietotāj tēmu?",
"remove-theme-message": "Šis noņems lietotāja tēmu"
},
"label": "Tēma",
"submenu": {
"import-css-file": "Importēt CSS failu",
"no-theme": "Bez tēmas"
}
}
}
}
}
},
"plugins": {
"enabled": "Ieslēgts",
"label": "Plagini",
"new": "JAUNS"
},
"view": {
"label": "Skats",
"submenu": {
"force-reload": "Piespiedu Restartēt",
"reload": "Atsvaidzināt",
"reset-zoom": "Noklusējuma izmērs",
"toggle-fullscreen": "Pārslēgt pilnekrāna režīmu",
"zoom-in": "Pietuvināt",
"zoom-out": "Attālināt"
}
}
},
"tray": {
"next": "Nākošais",
"play-pause": "Atskaņot/Pauzēt",
"previous": "Iepriekšējais",
"quit": "Iziet",
"restart": "Restartēt Lietotni",
"show": "Rādīt logu",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Ja reklāma atskaņojas, tad skaņa izlēdzas, un ātrums pārslēdzas uz 16x",
"name": "Reklāmu paātrinājums"
},
"adblocker": {
"description": "Bloķēt visas reklāmas un trekerus uzreiz pēc instalēšanas",
"menu": {
"blocker": "Bloķētājs"
},
"name": "Reklāmu bloķētājs"
},
"album-actions": {
"description": "Pievieno Undislike, Dislike, Like, un Unlike pogas lai izdarītu to visām dziesmām Mūzikas sarakstā vai albumā",
"name": "Darbības ar Albumu"
},
"album-color-theme": {
"description": "Iestata dinamisku motīvu un efektus, pamatojoties uz albuma krāsu paleti",
"menu": {
"color-mix-ratio": {
"label": "Krāsu attiecība",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Albuma krāsu tēma"
},
"ambient-mode": {
"description": "Pielieto apgaismojuma efektu, kas maigā krāsā atstaro video attēlu uz ekrāna fona",
"menu": {
"blur-amount": {
"label": "Izplūšanas itensitāte",
"submenu": {
"pixels": "{{blurAmount}} pikseļi"
}
},
"buffer": {
"label": "buferis",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Caurspīdīgums",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kvalitāte",
"submenu": {
"pixels": "{{quality}} pikseļi"
}
},
"size": {
"label": "Izmērs",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Vienmērīga pāreja",
"submenu": {
"during": "Pa {{interpolationTime}} s"
}
},
"use-fullscreen": {
"label": "Izmantot pilnekrāna režīmu"
}
},
"name": "Ambientais Režīms"
},
"amuse": {
"description": "Pievieno YouTube Music atblastu priekš Amuse \"tagad spēlē\" no 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info."
}
},
"api-server": {
"description": "Pievieno API serveri lai kontrolētu atskaņotāju",
"dialog": {
"request": {
"buttons": {
"allow": "Atļaut",
"deny": "Aizliegt"
},
"message": "Vai atļaut {{ID}} ({{origin}}) piekļūt pie API?",
"title": "API autorizācijas pieprasījums"
}
},
"menu": {
"auth-strategy": {
"label": "Autorizācijas veids",
"submenu": {
"auth-at-first": {
"label": "Autorizēt pie pirmā pieprasījuma"
},
"none": {
"label": "Bez autorizācijas"
}
}
},
"hostname": {
"label": "Hosta nosaukums"
},
"port": {
"label": "Ports"
}
},
"name": "API Serveris [BETA]",
"prompt": {
"hostname": {
"label": "Ievadiet hosta vārdu (piemēram 0.0.0.0) priekš API severa:",
"title": "Hosta vārds"
},
"port": {
"label": "Ievadiet portu priekš API servera:",
"title": "Ports"
}
}
},
"audio-compressor": {
"description": "Pievieno saspiešanu pie audio (samazina skaļāko audio daļu skaļumu un palielina mīkstāko daļu skaļumu)",
"name": "Audio saspiedējs"
},
"auth-proxy-adapter": {
"description": "Atbalsts priekš proxy servisu autentifikācijas",
"menu": {
"disable": "Izslēgt Proxy Adapteri",
"enable": "Ieslēgt Proxy Adapteri",
"hostname": {
"label": "Hosta vārds"
},
"port": {
"label": "Ports"
}
},
"name": "Autorizācijas Proxy Adapteris",
"prompt": {
"hostname": {
"label": "Ievadiet hosta vārdu priekš lokālā proxy servera (nepieciešama restartēšana):",
"title": "Proxy hosta vārds"
},
"port": {
"label": "Ievadiet portu priekš lokālā proxy servera (nepieciešams restartēt):",
"title": "Proxy Ports"
}
}
},
"blur-nav-bar": {
"description": "Taisa navigāzijas joslu caurspīdīgu un izplūdušu",
"name": "Izplūdusi Navigācijas Josla"
},
"bypass-age-restrictions": {
"description": "Apiet YouTube vecuma pārbaudi",
"name": "Apiet Vecuma Ierobežojumus"
},
"captions-selector": {
"description": "Subtitru izvēlne priekš YouTube Music audio ceļiem",
"menu": {
"autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus",
"disable-captions": "Bez subtitriem pēc noklusējuma"
},
"name": "Subtitru Izvēlne",
"prompt": {
"selector": {
"label": "Tekošā subtitru valoda: {{language}}",
"none": "Neviens",
"title": "Izvēlieties subtitru valodu"
}
},
"templates": {
"title": "Atvērt subtitru izvēlni"
},
"toast": {
"caption-changed": "Subtitri pamainīti uz {{language}}",
"caption-disabled": "Subtitri izslēgti",
"no-captions": "Subtitri nav pieejami priekš šīs dziesmas"
}
},
"compact-sidebar": {
"description": "Vienmēr iestatīt malējo paneli kompaktajā režīmā",
"name": "Kompakts malējais panelis"
},
"crossfade": {
"description": "Maiga pāreja starp dziesmām",
"menu": {
"advanced": "Paplašināts"
},
"name": "Maiga pāreja [BETA]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Ieplūšanas ilgums (ms)",
"fade-out-duration": "Izplūšanas ilgums (ms)",
"fade-scaling": {
"label": "Pārejas stiprums",
"linear": "Lineārs",
"logarithmic": "Logaritmisks"
},
"seconds-before-end": "Maigas pārejas N sekundes pirms beigām"
},
"title": "Maigas pārejas iestatījumi"
}
}
},
"disable-autoplay": {
"description": "Palaiž dziesmu nopauzētu",
"menu": {
"apply-once": "Iedarbojas tikai palaišanas brīdī"
},
"name": "Atspējot automātisku atskaņošanu"
},
"discord": {
"backend": {
"already-connected": "Mēģināja pieslēgties jau ar aktīvu savienojumu",
"connected": "Pieslēgts pie Discord",
"disconnected": "Atslēgts no Discord"
},
"description": "Parādiet saviem draugiem ko jūs klausaties ar Rich Presence",
"menu": {
"auto-reconnect": "Automātiska atkārtota pieslēgšanās",
"clear-activity": "Attīrīt aktivitāti",
"clear-activity-after-timeout": "Attīrīt aktivitāti pēc taimauta",
"connected": "Pievienojies",
"disconnected": "Atvienojies",
"hide-duration-left": "Paslēpt cik palika laika",
"hide-github-button": "Paslēpt GitHub saites pogu",
"play-on-youtube-music": "Atskaņot uz YouTube Music",
"set-inactivity-timeout": "Iestatīt neaktivitātes taimeru"
},
"name": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Ievadiet neaktivitātes taimeru sekundēs:",
"title": "Iestatīt neaktivitātes taimeru"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Atvainojamies, lejupielāde neizdevās…",
"title": "Lejupielādes kļūda!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{playlistSize}}Dziesmas)",
"message": "Lejupielādē atskaņošanas sarakstu {{playlistTitle}}",
"title": "Lejupielāde sākta"
}
},
"feedback": {
"conversion-progress": "Konvertēšana: {{percent}}%",
"converting": "Konvertēšana…",
"done": "Pabeigts: {{filePath}}",
"download-info": "Lejupielādē {{artist}} - {{title}}{{videoId}}",
"download-progress": "Lejupielāde: {{percent}}%",
"downloading": "Lejupielādē…",
"downloading-counter": "Notiek lejupielāde {{current}}/{{total}}…",
"downloading-playlist": "Atskaņošanas saraksta lejupielāde \"{{playlistTitle}}\" - {{playlistSize}} songs ({{playlistId}})",
"error-while-downloading": "Kļūda lejuplādējot \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Mape {{playlistFolder}} jau eksistē",
"getting-playlist-info": "Tiek iegūta atskaņošanas saraksta informācija…",
"loading": "Ielādē…",
"playlist-has-only-one-song": "Sarakstā ir tikai viena dziesma, tā tiek lejupielādēta uzreiz",
"playlist-id-not-found": "Neizdevās atrast atskaņošanas saraksta ID",
"playlist-is-empty": "Atskaņošanas saraksts ir tukšs",
"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…",
"saving": "Saglabāšana…",
"video-id-not-found": "Video nav atrasts",
"writing-id3": "Rakstam ID3 tegus…"
}
}
}
}
}

131
src/i18n/resources/ml.json Normal file
View File

@ -0,0 +1,131 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "{{pluginName}}::{{contextName}} പ്ലഗിൻ നടപ്പിലാക്കുന്നതിൽ പരാജയപ്പെട്ടു",
"executed-at-ms": "{{pluginName}}::{{contextName}} പ്ലഗിൻ {{ms}}ms-ൽ നടപ്പിലാക്കി",
"initialize-failed": "{{pluginName}}എന്ന പ്ലഗിൻ തുടങ്ങുന്നതിൽ പരാജയപെട്ടു",
"load-all": "എല്ലാ പ്ലേഗിനും ലോഡ് ചെയ്യുന്നു",
"load-failed": "\"{{pluginName}}\" പ്ലഗിൻ ലോഡ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
"loaded": "{{pluginName}} എന്ന പ്ലഗിൻ ലോഡ് ചെയ്തു",
"unload-failed": "\"{{pluginName}}\" പ്ലഗിൻ അൺലോഡ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു",
"unloaded": "{{pluginName}} എന്ന പ്ലഗിൻ അൺലോഡ് ചെയ്തു"
}
}
},
"language": {
"code": "ml",
"local-name": "മലയാളം",
"name": "Malayalam"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "ലോഡിങ് തീർത്തു. DevTools തുറന്നു"
},
"i18n": {
"loaded": "i18n ലോഡ് ചെയ്തു"
},
"second-instance": {
"receive-command": "പ്രോട്ടോക്കോളിലൂടെ കമാൻഡ് ലഭിച്ചു : \"{{command}}\""
},
"theme": {
"css-file-not-found": "\"{{cssFile}}\" എന്ന CSS file നിലവിൽ ഇല്ല. ഉപേക്ഷിക്കുന്നു"
},
"unresponsive": {
"details": "പ്രതികാരമില്ലാത്ത എറർ \n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "ആപ്പ് cache ക്ലിയർ ചെയ്യുന്നു"
},
"window": {
"tried-to-render-offscreen": "Window സ്ക്രീനിനു വെളിയിൽ render ചെയ്യാൻ ശ്രമിച്ചു, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menu മറച്ചിരിക്കുന്നു, അവതരിപ്പിക്കാൻ 'Alt' ഉപയോഗിക്കു (In-App Menu ഉപയോഗിക്കുന്നെങ്കിൽ 'Escape' )",
"message": "Hide Menu പ്രവർത്തിയിൽ",
"title": "Hide Menu പ്രവർത്തിയിൽ"
},
"need-to-restart": {
"buttons": {
"later": "പിന്നീട",
"restart-now": "ഇപ്പോൾ പുനരാരംഭിക്കുക"
},
"detail": "\"{{pluginName}}\" പ്രവർത്തിയിൽ ആകാൻ restart വേണ്ടിയിരിക്കുന്നു",
"message": "\"{{pluginName}}\" restart ആവശ്യപെടുന്നു",
"title": "പുനരാരംഭിക്കേണ്ടതുണ്ട്"
},
"unresponsive": {
"buttons": {
"quit": "ഉപേക്ഷിക്കുക",
"relaunch": "പുനരാരംഭിക്കുക",
"wait": "കാത്തിരിക്കൂ"
},
"detail": "അസൗകര്യത്തിൽ ഞങ്ങൾ ഖേദിക്കുന്നു! എന്തുചെയ്യണമെന്ന് ദയവായി തിരഞ്ഞെടുക്കുക:",
"message": "ആപ്ലിക്കേഷൻ പ്രതികരിക്കുന്നില്ല",
"title": "വിൻഡോ പ്രതികരിക്കുന്നില്ല"
},
"update-available": {
"buttons": {
"disable": "അപ്ഡേറ്റുകൾ പ്രവർത്തനരഹിതമാക്കുക",
"download": "ഡൗൺലോഡ് ചെയ്യുക",
"ok": "ശരി"
},
"detail": "ഒരു പുതിയ പതിപ്പ് ലഭ്യമാണ്, അത് {{downloadLink}} എന്ന വിലാസത്തിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്യാം",
"message": "ഒരു പുതിയ പതിപ്പ് ലഭ്യമാണ്",
"title": "അപ്ഡേറ്റ് ലഭ്യമാണ്"
}
},
"menu": {
"navigation": {
"label": "നാവിഗേഷൻ",
"submenu": {
"copy-current-url": "നിലവിലെ URL പകർത്തുക",
"go-back": "മടങ്ങിപ്പോവുക",
"go-forward": "മുന്നോട്ട് പോകുക",
"quit": "പുറത്തുകടക്കുക",
"restart": "ആപ്പ് പുനരാരംഭിക്കുക"
}
},
"options": {
"label": "ഓപ്ഷനുകൾ",
"submenu": {
"advanced-options": {
"label": "വിപുലമായ ഓപ്ഷനുകൾ",
"submenu": {
"restart-on-config-changes": "കോൺഫിഗറേഷൻ മാറ്റങ്ങൾ വരുത്തുമ്പോൾ പുനരാരംഭിക്കുക"
}
},
"hide-menu": {
"dialog": {
"message": "അടുത്ത ലോഞ്ചിൽ മെനു മറയ്ക്കപ്പെടും, അത് കാണിക്കാൻ [Alt] ഉപയോഗിക്കുക (അല്ലെങ്കിൽ ഇൻ-ആപ്പ്-മെനു ഉപയോഗിക്കുകയാണെങ്കിൽ ബാക്ക്ടിക്ക് [`])",
"title": "മെനു മറയ്ക്കൽ സജീവമാക്കി"
}
}
}
},
"plugins": {
"enabled": "പ്രവർത്തനക്ഷമമാക്കി"
}
}
},
"plugins": {
"video-toggle": {
"menu": {
"align": {
"label": "ക്രമപ്പെടുത്തൽ",
"submenu": {
"left": "ഇടത്",
"middle": "മധ്യഭാഗം",
"right": "വലത്"
}
}
},
"templates": {
"button-video": "വീഡിയോ"
}
}
}
}

View File

@ -6,6 +6,7 @@
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} dilaksanakan pada {{ms}}ms",
"initialize-failed": "Gagal untuk memulakan plugin \"{{pluginName}}\"",
"load-all": "Memuatkan semua plugin",
"load-failed": "Gagal untuk memuatkan \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" dimuatkan",
"unload-failed": "Gagal untuk memunggah plugin \"{{pluginName}}\"",
"unloaded": "Plugin \"{{pluginName}}\" dipunggahkan"
@ -31,19 +32,28 @@
"theme": {
"css-file-not-found": "Fail CSS \"{{cssFile}}\" tidak wujud, mengabaikan"
},
"unresponsive": {
"details": "Ralat Tidak Bertindak Balas!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Membersihkan cache aplikasi"
},
"window": {
"tried-to-render-offscreen": "Tetingkap cuba dirender di luar skrin, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menu telah disembunyikan, guna 'Alt' untuk menunjukkannya (atau 'Escape' jika menggunakan In-App Menu)"
"detail": "Menu telah disembunyikan, guna 'Alt' untuk menunjukkannya (atau 'Escape' jika menggunakan In-App Menu)",
"message": "Sembunyikan Menu telah diaktifkan",
"title": "Sembunyikan Menu diaktifkan"
},
"need-to-restart": {
"buttons": {
"later": "Nanti",
"restart-now": "Restart Sekarang"
},
"detail": "Plugin {{pluginName}} perlu dimulakan semula untuk berkuatkuasa",
"message": "\"{{pluginName}}\" perlu dimulakan semula",
"title": "Mulakan Semula Diperlukan"
},
@ -59,10 +69,13 @@
},
"update-available": {
"buttons": {
"disable": "Lumpuhkan Kemas Kini",
"download": "Muat Turun",
"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",
"title": "Kemas Kini Tersedia"
}
},
"menu": {
@ -73,7 +86,8 @@
"copy-current-url": "Salin URL semasa",
"go-back": "Belakang",
"go-forward": "Depan",
"quit": "Keluar"
"quit": "Keluar",
"restart": "Mula Semula Aplikasi"
}
},
"options": {
@ -82,20 +96,30 @@
"advanced-options": {
"label": "Tetapan Lanjutan",
"submenu": {
"auto-reset-app-cache": "Tetapkan semula cache aplikasi apabila aplikasi dimulakan",
"disable-hardware-acceleration": "Lumpuhkan pecutan perkakasan",
"edit-config-json": "Ubah suai config.json",
"override-user-agent": "Gantikan Ejen Pengguna",
"restart-on-config-changes": "Mulakan semula pada perubahan konfigurasi",
"set-proxy": {
"label": "Tetapkan proksi",
"prompt": {
"label": "Masukkan Alamat Proksi: (biarkan kosong untuk menyahdayakan)",
"placeholder": "Contoh: SOCKS5://127.0.0.1:9999",
"title": "Set proksi"
}
}
},
"toggle-dev-tools": "Togol DevTools"
}
},
"always-on-top": "Sentiasa di atas",
"auto-update": "Kemas Kini Automatik",
"hide-menu": {
"dialog": {
"message": "Menu akan disembunyikan pada pelancaran seterusnya, gunakan [Alt] untuk menunjukkannya (atau backtick [`] jika menggunakan dalam aplikasi-menu)"
}
"message": "Menu akan disembunyikan pada pelancaran seterusnya, gunakan [Alt] untuk menunjukkannya (atau backtick [`] jika menggunakan dalam aplikasi-menu)",
"title": "Sembunyikan Menu Diaktifkan"
},
"label": "Sembunyikan Menu"
},
"language": {
"dialog": {
@ -108,12 +132,18 @@
}
},
"resume-on-start": "Mulakan semula lagu terakhir apabila aplikasi dimulakan",
"single-instance-lock": "Kunci Kejadian Tunggal",
"start-at-login": "Mulakan semasa log masuk",
"starting-page": {
"label": "Halaman Permulaan"
"label": "Halaman Permulaan",
"unset": "Nyahset"
},
"tray": {
"label": "Dulang",
"submenu": {
"disabled": "Dilumpuhkan",
"enabled-and-hide-app": "Didayakan dan sembunyikan aplikasi",
"enabled-and-show-app": "Didayakan dan paparkan aplikasi",
"play-pause-on-click": "Main / Hentikan pada klik"
}
},
@ -122,20 +152,45 @@
"submenu": {
"like-buttons": {
"default": "Lalai",
"hide": "Sembunyi"
"force-show": "Paksa pamer",
"hide": "Sembunyi",
"label": "Suka butang"
},
"remove-upgrade-button": "Buang butang naik taraf",
"theme": {
"dialog": {
"button": {
"cancel": "Batalkan",
"remove": "Padam"
}
},
"remove-theme": "Adakah anda pasti mahu mengalih keluar tema tersuai?",
"remove-theme-message": "Ini akan membuang tema tersuai"
},
"label": "Tema"
"label": "Tema",
"submenu": {
"import-css-file": "Import fail CSS tersuai",
"no-theme": "Tiada tema"
}
}
}
}
}
},
"plugins": {
"enabled": "Didayakan",
"label": "Pemalam",
"new": "BARU"
},
"view": {
"label": "Pandangan",
"submenu": {
"force-reload": "Paksa Muat Semula",
"reload": "Muat semula",
"reset-zoom": "Saiz Sebenar",
"toggle-fullscreen": "Togol Skrin Penuh",
"zoom-in": "Zum Masuk",
"zoom-out": "Zum Keluar"
}
}
},
"tray": {
@ -143,23 +198,153 @@
"play-pause": "Main / Jeda",
"previous": "Sebelumnya",
"quit": "Keluar",
"restart": "Mulakan Semula Aplikasi"
"restart": "Mulakan Semula Aplikasi",
"show": "Papar tetingkap",
"tooltip": {
"default": "YouTube Muzik",
"with-song-info": "YouTube Muzik : {{artist}} - {{title}}"
}
}
},
"plugins": {
"ambient-mode": {
"ad-speedup": {
"description": "Jika iklan dimainkan, ia meredamkan audio dan menetapkan kelajuan main semula kepada 16x",
"name": "Kelajuan Iklan"
},
"adblocker": {
"description": "Sekat semua iklan dan penjejakan di luar kotak",
"menu": {
"blocker": "Penyekat"
},
"name": "Penyekat Iklan"
},
"album-actions": {
"description": "Menambah butang Suka dan Tidak Suka pada semua lagu dalam senarai main atau album",
"name": "Tindakan Album"
},
"album-color-theme": {
"description": "Menggunakan tema dinamik dan kesan visual berdasarkan palet warna album",
"menu": {
"color-mix-ratio": {
"label": "Nisbah campuran warna",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Tema Warna Album"
},
"ambient-mode": {
"description": "Menggunakan kesan pencahayaan dengan menghantar warna lembut daripada video, ke latar belakang skrin anda",
"menu": {
"blur-amount": {
"label": "Jumlah Kekaburan",
"submenu": {
"pixels": "{{blurAmount}}piksel"
}
},
"opacity": {
"label": "Kelegapan"
},
"quality": {
"label": "Kualiti"
"label": "Kualiti",
"submenu": {
"pixels": "{{kualiti}} piksel"
}
},
"size": {
"label": "Saiz"
"label": "Saiz",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Kelancaran transisi",
"submenu": {
"during": "Semasa {{masaInterpolasi}}s"
}
},
"use-fullscreen": {
"label": "Menggunakan skrin penuh"
}
},
"name": "Mod Sekitaran"
},
"amuse": {
"description": "Menambahkan sokongan YouTube Music untuk widget sedang dimain Amuse oleh 6K Labs"
},
"api-server": {
"description": "Perlukan server API untuk mengawal pemain",
"dialog": {
"request": {
"buttons": {
"allow": "Benarkan",
"deny": "Nafi"
},
"message": "Benarkan {{ID}} {{origin}} untuk akses API?",
"title": "Permintaan pemberian kuasa kepada API"
}
},
"menu": {
"auth-strategy": {
"label": "Strategi Pengesahan",
"submenu": {
"auth-at-first": {
"label": "Pengesahan pada permintaan pertama"
},
"none": {
"label": "Tiada pengesahan"
}
}
},
"hostname": {
"label": "Nama perumah"
},
"port": {
"label": "Port"
}
},
"name": "Server API [Beta]",
"prompt": {
"hostname": {
"label": "Masukkan nama perumah (seperti 0.0.0.0) untuk server API:",
"title": "Nama perumah"
},
"port": {
"label": "Masukkan port untuk API server:",
"title": "Port"
}
}
},
"audio-compressor": {
"description": "Laksanakan pemampatan untuk audio (mengurangkan kelantangan bagi bahagian signal yang kuat dan menaikkan kelantangan untuk bahagian yang lembut)",
"name": "Pemampat Audio"
},
"auth-proxy-adapter": {
"menu": {
"hostname": {
"label": "Nama perumah"
}
}
},
"blur-nav-bar": {
"name": "Kaburkan Bar navigasi"
},
"bypass-age-restrictions": {
"description": "Pintas verifikasi umur Youtube",
"name": "Pintas Sekatan Umur"
},
"captions-selector": {
"description": "Pemilih kapsyen untuk trek audio Youtube Music",
"menu": {
"autoload": "Pilih kapsyen terakhir diguna secara automatik",
"disable-captions": "Tiada kapsyen secara lalai"
},
"name": "Pemilih kapsyen",
"prompt": {
"selector": {
"label": "Bahasa kapsyen sekarang: {{bahasa}}",
"none": "Tiada",
"title": "Pilih bahasa kapsyen"
}
}
@ -196,7 +381,7 @@
}
},
"templates": {
"button": "Lagu"
"button-song": "Lagu"
}
}
}

View File

@ -577,7 +577,7 @@
},
"name": "Videoveksling",
"templates": {
"button": "Spor"
"button-song": "Spor"
}
},
"visualizer": {

View File

@ -207,6 +207,10 @@
}
},
"plugins": {
"ad-speedup": {
"description": "यदि कुनै विज्ञापन चल्छ भने, यसले अडियो म्यूट गर्छ र प्लेब्याक गतिको गति १६x मा सेट गर्छ",
"name": "विज्ञापन तीव्रगति"
},
"adblocker": {
"description": "सबै विज्ञापन र ट्र्याकइंगहरू ब्लक गर्नुहोस्",
"menu": {
@ -275,10 +279,84 @@
},
"name": "परिवेश मोड"
},
"amuse": {
"description": "६के ल्याब्सद्वारा अम्यूस नाउ प्लेइङ विजेटका लागि युट्युब म्युजिक समर्थन थप्दछ",
"name": "अम्यूस",
"response": {
"query": "Amuse API सर्भर चलिरहेको छ। गीत जानकारी प्राप्त गर्न GET /query प्रयोग गर्नुहोस्।"
}
},
"api-server": {
"description": "प्लेयर नियन्त्रण गर्नका लागि API सर्भर थप्दछ",
"dialog": {
"request": {
"buttons": {
"allow": "अनुमति दिनुहोस्",
"deny": "अस्वीकार गर्नुहोस्"
},
"message": "{{ID}} ({{origin}}) लाई API पहुँच अनुमति दिनुहुन्छ?",
"title": "API अनुमतिको अनुरोध"
}
},
"menu": {
"auth-strategy": {
"label": "अनुमति रणनीति",
"submenu": {
"auth-at-first": {
"label": "पहिलो अनुरोधमै अनुमति दिनुहोस्"
},
"none": {
"label": "कुनै अनुमति आवश्यक छैन"
}
}
},
"hostname": {
"label": "होस्टनेम"
},
"port": {
"label": "पोर्ट"
}
},
"name": "API सर्भर [बिटा]",
"prompt": {
"hostname": {
"label": "API सर्भरका लागि होस्टनेम प्रविष्ट गर्नुहोस् (उदाहरण: 0.0.0.0):",
"title": "होस्टनेम"
},
"port": {
"label": "API सर्भरका लागि पोर्ट प्रविष्ट गर्नुहोस्:",
"title": "पोर्ट"
}
}
},
"audio-compressor": {
"description": "अडियोमा कम्प्रेसन लागू गर्नुहोस् (सङ्केतको सबैभन्दा चर्को भागहरूको भोल्युम कम गर्दछ र नरम भागहरूको भोल्युम बढाउँछ)",
"name": "अडियो कम्प्रेसर"
},
"auth-proxy-adapter": {
"description": "प्रमाणीकरण प्रोक्सी सेवाहरूको प्रयोगको लागि समर्थन",
"menu": {
"disable": "प्रोक्सी एडाप्टर बन्द गर्नुहोस्",
"enable": "प्रोक्सी एडाप्टर खोल्नुहोस्",
"hostname": {
"label": "होस्टनाम"
},
"port": {
"label": "पोर्ट"
}
},
"name": "प्रमाणीकरण प्रोक्सी एडाप्टर",
"prompt": {
"hostname": {
"label": "स्थानीय प्रोक्सी सर्भरको लागि होस्टनाम प्रविष्ट गर्नुहोस् (पुनःसुरु गर्न आवश्यक छ):",
"title": "प्रोक्सी होस्टनाम"
},
"port": {
"label": "स्थानीय प्रोक्सी सर्भरको लागि पोर्ट प्रविष्ट गर्नुहोस् (पुनःसुरु गर्न आवश्यक छ):",
"title": "प्रोक्सी पोर्ट"
}
}
},
"blur-nav-bar": {
"description": "नेभिगेसन बारलाई पारदर्शी र धुवाँलो बनाउँछ",
"name": "ब्लर नेभिगेसन बार"
@ -303,6 +381,11 @@
},
"templates": {
"title": "क्याप्सन चयनकर्ता खोल्नुहोस्"
},
"toast": {
"caption-changed": "क्याप्सन {{language}} मा परिवर्तन भयो",
"caption-disabled": "क्याप्सन उपलब्ध छैन",
"no-captions": "यो गीतको लागि कुनै क्याप्सन उपलब्ध छैन।"
}
},
"compact-sidebar": {
@ -410,6 +493,21 @@
"description": "इन्टरफेसबाट सिधै MP3/स्रोत अडियो डाउनलोड गर",
"menu": {
"choose-download-folder": "डाउनलोड फोल्डर चयन गर्नुहोस्",
"download-finish-settings": {
"label": "समाप्त भएपछि डाउनलोड गर्नुहोस्",
"prompt": {
"last-percent": "x प्रतिशतपछि",
"last-seconds": "अन्तिम x सेकेन्ड",
"title": "कहिले डाउनलोड गर्ने भनेर कन्फिगर गर्नुहोस्"
},
"submenu": {
"advanced": "उन्नत",
"enabled": "सक्रिय गरिएको",
"mode": "समय मोड",
"percent": "प्रतिशत",
"seconds": "सेकेन्डहरू"
}
},
"download-playlist": "डाउनलोड प्लेलिस्ट",
"presets": "प्रिसेटहरू",
"skip-existing": "विद्यमान फाइलहरू स्किप गर्नुहोस्"
@ -422,6 +520,18 @@
"button": "डाउनलोड"
}
},
"equalizer": {
"description": "प्लेयरमा इक्वलाइजर थप्दछ",
"menu": {
"presets": {
"label": "पूर्वसेटहरू",
"list": {
"bass-booster": "बास बूस्टर"
}
}
},
"name": "इक्वलाइजर"
},
"exponential-volume": {
"description": "भोल्युम स्लाइडरलाई घातीय बनाउँछ त्यसैले कम भोल्युमहरू चयन गर्न सजिलो हुन्छ।",
"name": "एक्सपोनेन्सियल भोल्युम"
@ -495,7 +605,15 @@
},
"navigation": {
"description": "अर्को/पछाडि नेभिगेसन तपाईँको मनपर्ने ब्राउजरमा जस्तै सिधा इन्टरफेसमा एकीकृत तीरहरू",
"name": "नेभिगेसन"
"name": "नेभिगेसन",
"templates": {
"back": {
"title": "अघिल्लो पृष्ठमा जानुहोस्"
},
"forward": {
"title": "अर्को पृष्ठमा जानुहोस्"
}
}
},
"no-google-login": {
"description": "इन्टरफेसबाट गुगल लगइन बटन र लिङ्कहरू हटाउनुहोस्",
@ -519,6 +637,10 @@
},
"name": "सूचनाहरू"
},
"performance-improvement": {
"description": "प्रयोगात्मक स्क्रिप्टहरू सक्रिय गरेर कार्यसम्पादन सुधार गर्नुहोस्",
"name": "कार्यसम्पादन सुधार [प्रयोगात्मक]"
},
"picture-in-picture": {
"description": "एपलाई पिक्चर-इन-पिक्चर मोडमा परिवर्तन गर्न अनुमति दिन्छ",
"menu": {
@ -602,6 +724,7 @@
"listenbrainz": {
"token": "ListenBrainz प्रयोगकर्ता टोकन प्रविष्ट गर्नुहोस्"
},
"scrobble-alternative-title": "वैकल्पिक शीर्षकहरू प्रयोग गर्नुहोस्",
"scrobble-other-media": "अन्य मिडियालाई स्क्रबल गर्नुहोस्"
},
"name": "स्क्रबबलर",
@ -649,6 +772,67 @@
"description": "स्वचालित रूपमा गैर-सङ्गीत भागहरू जस्तै इन्ट्रो/आउट्रो वा सङ्गीत भिडियोका भागहरू छोड्नुहोस्",
"name": "स्पन्सरब्लक"
},
"synced-lyrics": {
"description": "LRClib जस्ता प्रदायकहरू प्रयोग गरेर गीतहरूका लागि समक्रमित गीतहरू प्रदान गर्छ।",
"errors": {
"fetch": "⚠️ गीतहरूको जानकारी ल्याउने क्रममा त्रुटि भयो।\n\tकृपया केही समयपछि फेरि प्रयास गर्नुहोस्।",
"not-found": "⚠️ यो गीतका लागि कुनै गीतशब्द फेला परेन।"
},
"menu": {
"default-text-string": {
"label": "पूर्वनिर्धारित अक्षर गीतशब्दहरू बीचमा",
"tooltip": "गीतशब्दहरू बीचको खाली ठाउँका लागि प्रयोग हुने पूर्वनिर्धारित अक्षर छनोट गर्नुहोस्"
},
"line-effect": {
"label": "रेखा प्रभाव",
"submenu": {
"fancy": {
"label": "रमणीय",
"tooltip": "हालको लाइनमा ठूलो, एप-जस्तै प्रभावहरू प्रयोग गर्नुहोस्"
},
"focus": {
"label": "केन्द्रित गर्नुहोस्",
"tooltip": "मात्रै हालको लाइन सेतो बनाउनुहोस्"
},
"offset": {
"label": "अफसेट",
"tooltip": "हालको लाइनलाई दायाँतर्फ अफसेट गर्नुहोस्"
},
"scale": {
"label": "स्केल",
"tooltip": "हालको लाइनको आकार परिवर्तन गर्नुहोस्"
}
},
"tooltip": "हालको लाइनमा लागू गर्ने प्रभाव चयन गर्नुहोस्"
},
"precise-timing": {
"label": "गीतशब्दहरू पूर्ण रूपमा समक्रमित बनाउनुहोस्",
"tooltip": "अर्को लाइनको प्रदर्शनलाई मिलिसेकेन्डमा गणना गर्नुहोस् (यसले प्रदर्शनमा हल्का प्रभाव पार्न सक्छ)"
},
"romanization": {
"label": "रोमनकृत शब्दहरू",
"tooltip": "यदि गीतका शब्दहरू फरक भाषामा छन् भने, ल्याटिन संस्करण प्रदर्शन गर्ने प्रयास गर्नुहोस्।"
},
"show-lyrics-even-if-inexact": {
"label": "गीतशब्दहरू अपर्याप्त भए पनि देखाउनुहोस्",
"tooltip": "यदि गीत फेला परेन भने, प्लगिनले फरक खोजी सोधपुछसँग पुन: प्रयास गर्छ।\nदोस्रो प्रयासको परिणाम ठ्याक्कै मिल्न नपनि सक्छ।"
},
"show-time-codes": {
"label": "समय कोडहरू देखाउनुहोस्",
"tooltip": "गीतशब्दहरूको छेउमा समय कोडहरू देखाउनुहोस्"
}
},
"name": "समक्रमित गीतशब्दहरू",
"refetch-btn": {
"fetching": "ल्याउँदैछ...",
"normal": "गीतशब्दहरू पुनः ल्याउनुहोस्"
},
"warnings": {
"duration-mismatch": "⚠️ - अवधि असमानताको कारण गीतशब्दहरू असमक्रमित हुन सक्छन्।",
"inexact": "⚠️ - यो गीतका लागि गीतशब्दहरू ठ्याक्कै मिल्दैनन्",
"instrumental": "⚠️ - यो एउटा वाद्य संगीत (इन्स्ट्रुमेन्टल) गीत हो"
}
},
"taskbar-mediacontrol": {
"description": "तपाईँको विन्डोज टास्कबारबाट प्लेब्याक नियन्त्रण गर्नुहोस्",
"name": "टास्कबार मेडिया कन्ट्रोल"
@ -661,6 +845,10 @@
"description": "OBS को टुना प्लगइनसँग एकीकरण",
"name": "टुना OBS"
},
"unobtrusive-player": {
"description": "गीत बजाउँदा प्लेयरलाई पप अप हुनबाट रोक्छ",
"name": "अवरोधरहित संगीत प्लेयर"
},
"video-toggle": {
"description": "भिडियो/गीत मोड बीच स्विच गर्न बटन थप्दछ। वैकल्पिक रूपमा सम्पूर्ण भिडियो ट्याब हटाउन पनि सक्छ",
"menu": {
@ -684,7 +872,8 @@
},
"name": "भिडियो टगल",
"templates": {
"button": "गीत"
"button-song": "गीत",
"button-video": "भिडियो"
}
},
"visualizer": {

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Visuele Aanpassingen",
"submenu": {
"custom-window-title": {
"label": "Aangepaste venstertitel",
"prompt": {
"label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)",
"placeholder": "Voorbeeld: Youtube Music"
}
},
"like-buttons": {
"default": "Standaard",
"force-show": "Forceren weergeven",
@ -163,12 +170,12 @@
"cancel": "Annuleren",
"remove": "Verwijderen"
},
"remove-theme": "Weet je zeker dat je het aangepaste thema wilt verwijderen?",
"remove-theme-message": "Dit verwijderd het aangepaste thema"
"remove-theme": "Weet je zeker dat je het aangepaste thema wil verwijderen?",
"remove-theme-message": "Dit verwijdert het aangepaste thema"
},
"label": "Thema",
"submenu": {
"import-css-file": "Aangepast CSS-bestand importeren",
"import-css-file": "Importeer aangepast CSS-bestand",
"no-theme": "Geen thema"
}
}
@ -178,11 +185,11 @@
},
"plugins": {
"enabled": "Ingeschakeld",
"label": "Plugins",
"label": "Invoegtoepassingen",
"new": "NIEUW"
},
"view": {
"label": "Weergave",
"label": "Weergeven",
"submenu": {
"force-reload": "Forceer Herladen",
"reload": "Herladen",
@ -195,31 +202,31 @@
},
"tray": {
"next": "Volgende",
"play-pause": "Afspelen/Pauzeren",
"play-pause": "Afspelen/Pauze",
"previous": "Vorige",
"quit": "Afsluiten",
"restart": "Applicatie Opnieuw Opstarten",
"show": "Venster Weergeven",
"restart": "Herstarten App",
"show": "Weergeven Venster",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"with-song-info": "YouTube Music: {{artiest}} - {{titel}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Wanneer een advertentie afspeelt, dempt het geluid en versnelt de playback naar 16x",
"name": "Snellere advertenties"
"description": "Bij het afspelen van een advertentie wordt het geluid gedempt en wordt de afspeelsnelheid wordt verhoogd naar 16x",
"name": "Advertenties versnellen"
},
"adblocker": {
"description": "Blokkeer alle advertenties en tracking vanuit de doos",
"description": "Blokkeer alle advertenties en trackers buiten het kader",
"menu": {
"blocker": "Blokkeerder"
},
"name": "Advertentieblokkeerder"
},
"album-actions": {
"description": "Voegt knoppen toe voor Ondisliken, Disliken, Liken en Ontliken om dit toe te passen op alle nummers in een afspeellijst of album",
"description": "Voegt niet-Niet Leuk, Niet Leuk, Leuk, niet-Leuk knoppen toe om dit toe te passen op alle nummers in een afspeellijst of album",
"name": "Albumacties"
},
"album-color-theme": {
@ -333,6 +340,30 @@
"description": "Past compressie toe op audio (verlaagt het volume van de luidste delen van het signaal en verhoogt het volume van de zachtste delen)",
"name": "Audiocompressor"
},
"auth-proxy-adapter": {
"description": "Ondersteuning voor het gebruik van authenticatie proxy diensten",
"menu": {
"disable": "Proxy adapter uitschakelen",
"enable": "Proxy adapter inschakelen",
"hostname": {
"label": "Hostnaam"
},
"port": {
"label": "Poort"
}
},
"name": "Proxy-authenticatieadapter",
"prompt": {
"hostname": {
"label": "Hostname voor lokale proxy server (vereist herstart):",
"title": "Proxy hostnaam"
},
"port": {
"label": "Poort voor lokale proxy server (herstart vereist):",
"title": "Proxy poort"
}
}
},
"blur-nav-bar": {
"description": "Maakt de navigatiebalk transparant en wazig",
"name": "Vervagen Navigatiebalk"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Open ondertitelkeuze"
},
"toast": {
"caption-changed": "Ondertitel veranderd naar {{language}}",
"caption-disabled": "Ondertitels uitgeschakeld",
"no-captions": "Geen ondertitels beschikbaar voor dit lied"
}
},
"compact-sidebar": {
@ -576,7 +612,15 @@
},
"navigation": {
"description": "Volgende/Vorige navigatiepijlen rechtstreeks geïntegreerd in de interface, zoals in je favoriete browser",
"name": "Navigatie"
"name": "Navigatie",
"templates": {
"back": {
"title": "Ga naar de vorige pagina"
},
"forward": {
"title": "Ga naar de volgende pagina"
}
}
},
"no-google-login": {
"description": "Verwijder Google aanmeldknoppen en -links uit de interface",
@ -600,6 +644,10 @@
},
"name": "Meldingen"
},
"performance-improvement": {
"description": "Verbeter prestaties door experimentale scripts aan te zetten",
"name": "Prestatie-verbetering"
},
"picture-in-picture": {
"description": "Laat de app toe om naar picture-in-picture modus om te schakelen",
"menu": {
@ -664,7 +712,12 @@
}
},
"description": "Maakt het mogelijk de videokwaliteit te wijzigen met een knop op de video-overlay",
"name": "Videokwaliteitwisselaar"
"name": "Videokwaliteitwisselaar",
"renderer": {
"quality-settings-button": {
"label": "Open speler kwaliteitswisselaar"
}
}
},
"scrobbler": {
"description": "Ondersteuning voor scrobbling toevoegen (etc. last.fm, Listenbrainz)",
@ -683,6 +736,7 @@
"listenbrainz": {
"token": "Voer het ListenBrainz-gebruikerstoken in"
},
"scrobble-alternative-title": "Gebruik alternatieve titels",
"scrobble-other-media": "Scrobble andere media"
},
"name": "Scrobbler",
@ -767,6 +821,15 @@
"label": "Zorg ervoor dat de songteksten perfect gesynchroniseerd zijn",
"tooltip": "Bereken tot op de milliseconde de weergave van de volgende regel (kan een kleine impact hebben op de prestaties)"
},
"preferred-provider": {
"none": {
"tooltip": "Geen provider beschikbaar"
}
},
"romanization": {
"label": "Romaniseer songtekst",
"tooltip": "Als de songtekst in een andere taal is, probeer dan een Latijnse versie weer te geven."
},
"show-lyrics-even-if-inexact": {
"label": "Toon songteksten, zelfs als ze onnauwkeurig zijn",
"tooltip": "Als het nummer niet wordt gevonden, probeert de plug-in het opnieuw met een andere zoekopdracht.\nHet resultaat van de tweede poging is mogelijk niet exact."
@ -799,6 +862,10 @@
"description": "Integratie met OBS's plug-in Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Voorkomt dat de speler omhoog springt tijdens het afspelen van een nummer",
"name": "Minder opdringerige speler"
},
"video-toggle": {
"description": "Voegt een knop toe om te schakelen tussen de video-/nummermodus. kan optioneel ook het hele videotabblad verwijderen",
"menu": {
@ -822,7 +889,8 @@
},
"name": "Videoschakelaar",
"templates": {
"button": "Nummer"
"button-song": "Nummer",
"button-video": "Video"
}
},
"visualizer": {

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Poprawki wizualne",
"submenu": {
"custom-window-title": {
"label": "Niestandardowy tytuł okna",
"prompt": {
"label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):",
"placeholder": "Przykład: YouTube Music"
}
},
"like-buttons": {
"default": "Domyślne",
"force-show": "Wymuś pokazywanie",
@ -333,6 +340,30 @@
"description": "Zastosuj kompresję do dźwięku (obniża głośność najgłośniejszych części sygnału i zwiększa głośność najcichszych części)",
"name": "Kompresor dźwięku"
},
"auth-proxy-adapter": {
"description": "Wparcie dla uwierzytalniających usług proxy",
"menu": {
"disable": "Wyłącz adapter proxy",
"enable": "Włącz adapter proxy",
"hostname": {
"label": "Nazwa hosta"
},
"port": {
"label": "Port"
}
},
"name": "Uwierzytelnij adapter proxy",
"prompt": {
"hostname": {
"label": "Wpisz nazwę hosta dla lokalnego serwera proxy (wymaga restaru):",
"title": "Nazwa hosta proxy"
},
"port": {
"label": "Wpisz port dla lokalnego serwera proxy (wymaga restartu):",
"title": "Port proxy"
}
}
},
"blur-nav-bar": {
"description": "Sprawia, że pasek nawigacji jest przezroczysty i rozmazany",
"name": "Rozmycie paska nawigacji"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Otwórz selektor napisów"
},
"toast": {
"caption-changed": "Zmieniono napisy na {{language}}",
"caption-disabled": "Napisy zostały wyłączone",
"no-captions": "Nie znaleziono napisów dla tego utworu"
}
},
"compact-sidebar": {
@ -364,7 +400,7 @@
"name": "Kompaktowy pasek boczny"
},
"crossfade": {
"description": "Przenikanie pomiędzy utworami",
"description": "Pozwól odtwarzaczowi płynnie przechodzić między utworami",
"menu": {
"advanced": "Zaawansowane"
},
@ -576,7 +612,15 @@
},
"navigation": {
"description": "Strzałki nawigacyjne Dalej/Wstecz zintegrowane bezpośrednio z interfejsem, tak jak w Twojej ulubionej przeglądarce",
"name": "Nawigacja"
"name": "Nawigacja",
"templates": {
"back": {
"title": "Przejdź do poprzedniej strony"
},
"forward": {
"title": "Przejdź do następnej strony"
}
}
},
"no-google-login": {
"description": "Usuń przyciski i linki logowania Google z interfejsu",
@ -600,6 +644,10 @@
},
"name": "Powiadomienia"
},
"performance-improvement": {
"description": "Popraw wydajność przez włączenie skryptów eksperymentalnych",
"name": "Poprawienie wydajności [Beta]"
},
"picture-in-picture": {
"description": "Umożliwia przełączenie aplikacji w tryb obrazu w obrazie",
"menu": {
@ -664,7 +712,12 @@
}
},
"description": "Umożliwia zmianę jakości wideo za pomocą przycisku na nakładce wideo",
"name": "Zmieniacz jakości wideo"
"name": "Zmieniacz jakości wideo",
"renderer": {
"quality-settings-button": {
"label": "Otwórz manipulator jakości odtwarzacza"
}
}
},
"scrobbler": {
"description": "Umożliwia scrobbling utworów do m.in. last.fm lub Listenbrainz",
@ -683,6 +736,7 @@
"listenbrainz": {
"token": "Podaj token użytkownika ListenBrainz"
},
"scrobble-alternative-title": "Użyj alternatywnych tytułów",
"scrobble-other-media": "Scrobbluj pozostałe multimedia"
},
"name": "Scrobblowanie",
@ -767,6 +821,10 @@
"label": "Zsynchronizuj tekst utworu do perfekcji",
"tooltip": "Wylicz czas wyświetlania następnej linijki co do milisekundy (może mieć mały wpływ na wydajność systemu)"
},
"romanization": {
"label": "Romanizacja utworów",
"tooltip": "Jeżeli tekst piosenki nie jest w alfabecie łacińskim, poddaje ją romanizacji, czyli przedstawia mowy za pomocą owych liter."
},
"show-lyrics-even-if-inexact": {
"label": "Pokaż teksty, mimo niezgodności",
"tooltip": "Jeżeli nie znaleziono tekstu piosenki z bazy danych, wtyczka spróbuje ponownie przez wyszukanie przybliżonej frazy.\nNależy jednak pamiętać, że następne próby mogą nie być trafne co do oryginału."
@ -799,6 +857,10 @@
"description": "Integracja z wtyczką OBS Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Zapobiega wyświetlaniu się ekranu z utworem po wybraniu innego tytułu",
"name": "Niewidoczny odtwarzacz"
},
"video-toggle": {
"description": "Dodaje przycisk do przełączania między trybem wideo a piosenki. Może również opcjonalnie usunąć całą kartę wideo",
"menu": {
@ -822,7 +884,8 @@
},
"name": "Przełącznik wideo",
"templates": {
"button": "Utwór"
"button-song": "Utwór",
"button-video": "Wideo"
}
},
"visualizer": {

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Ajustes visuais",
"submenu": {
"custom-window-title": {
"label": "Título da janela customizado",
"prompt": {
"label": "Insira título customizado para a janela: (deixe em branco para desabilitar)",
"placeholder": "Exemplo: Youtube Music"
}
},
"like-buttons": {
"default": "Padrão",
"force-show": "Forçar exibir",
@ -333,6 +340,30 @@
"description": "Aplicar compressão ao áudio (reduz o volume das partes mais altas e aumenta o volume das partes mais baixas)",
"name": "Compressor de áudio"
},
"auth-proxy-adapter": {
"description": "Suporte para o uso de serviços de proxy de autenticação",
"menu": {
"disable": "Desativar adaptador proxy",
"enable": "Ativar adaptador proxy",
"hostname": {
"label": "Nome do host"
},
"port": {
"label": "Porta"
}
},
"name": "Adaptador de proxy de autenticação",
"prompt": {
"hostname": {
"label": "Entre o nome do host do servidor proxy local (necessário reiniciar):",
"title": "Nome do host do proxy"
},
"port": {
"label": "Entre a porta do servidor proxy local (necessário reiniciar):",
"title": "Porta do proxy"
}
}
},
"blur-nav-bar": {
"description": "Torna a barra de navegação transparente e desfocada",
"name": "Desfocar barra de navegação"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Abrir seletor de legendas"
},
"toast": {
"caption-changed": "Legenda alterada para {{language}}",
"caption-disabled": "Legendas desativadas",
"no-captions": "Sem legendas disponíveis para essa música"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Configure um dispositivo de saída de mídia personalizado para músicas",
"menu": {
"device-selector": "Selecionar dispositivo"
},
"name": "Dispositivo de saída personalizado",
"prompt": {
"device-selector": {
"label": "Escolha o dispositivo de saída de mídia que será usado",
"title": "Selecionar dispositivo de saída"
}
}
},
"disable-autoplay": {
"description": "Faz a música começar no modo \"pausado\"",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "Ocultar duração restante",
"hide-github-button": "Ocultar botão do GitHub",
"play-on-youtube-music": "Reproduzir no YouTube Music",
"set-inactivity-timeout": "Definir tempo limite de inatividade"
"set-inactivity-timeout": "Definir tempo limite de inatividade",
"set-status-display-type": {
"label": "Texto de status",
"submenu": {
"artist": "Ouvindo {artist}",
"title": "Ouvindo {song title}",
"youtube-music": "Ouvindo YouTube Music"
}
}
},
"name": "Rich Presence do Discord",
"prompt": {
@ -576,7 +633,15 @@
},
"navigation": {
"description": "Setas de navegação para avançar/retornar diretamente integradas na interface, como no seu navegador favorito",
"name": "Navegação"
"name": "Navegação",
"templates": {
"back": {
"title": "Ir para a página anterior"
},
"forward": {
"title": "Ir para a próxima página"
}
}
},
"no-google-login": {
"description": "Remova os botões e links de login do Google da interface",
@ -600,6 +665,10 @@
},
"name": "Notificações"
},
"performance-improvement": {
"description": "Melhore o desempenho habilitando scripts experimentais",
"name": "Melhoria de desempenho [Beta]"
},
"picture-in-picture": {
"description": "Permite alternar o aplicativo para o modo picture-in-picture",
"menu": {
@ -664,7 +733,12 @@
}
},
"description": "Permite alterar a qualidade do vídeo com um botão na sobreposição de vídeo",
"name": "Alterador de qualidade do vídeo"
"name": "Alterador de qualidade do vídeo",
"renderer": {
"quality-settings-button": {
"label": "Abrir o player de troca de qualidade"
}
}
},
"scrobbler": {
"description": "Adicionar suporte para scrobbling (last.fm, Listenbrainz, etc.)",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "Insira o token de usuário ListenBrainz"
},
"scrobble-alternative-artist": "Use artistas alternativos",
"scrobble-alternative-title": "Usar títulos alternativos",
"scrobble-other-media": "Scrobble outras mídias"
},
"name": "Scrobbler",
@ -767,6 +843,18 @@
"label": "Deixa as letras perfeitamente sincronizadas",
"tooltip": "Calcular até o milissegundo a exibição da próxima linha (pode ter um pequeno impacto no desempenho)"
},
"preferred-provider": {
"label": "Provedor Preferido",
"none": {
"label": "Nenhum",
"tooltip": "Sem provedor preferido"
},
"tooltip": "Escolha o provedor padrão para uso"
},
"romanization": {
"label": "Letras romanizadas",
"tooltip": "Se as letras estiverem em um idioma diferente, tente exibir uma versão latina."
},
"show-lyrics-even-if-inexact": {
"label": "Mostrar letras mesmo que não sejam exatas",
"tooltip": "Se a música não for encontrada, o plugin tenta novamente com uma consulta de pesquisa diferente.\nO resultado da segunda tentativa pode não ser exato."
@ -795,10 +883,35 @@
"description": "Adiciona um widget TouchBar para usuários do macOS",
"name": "TouchBar"
},
"transparent-player": {
"description": "Faz a janela do app transparente",
"menu": {
"opacity": {
"label": "Opacidade",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Tipo",
"submenu": {
"acrylic": "Acrílico",
"mica": "Mica",
"none": "Nenhum",
"tabbed": "Em abas"
}
}
},
"name": "Player transparente"
},
"tuna-obs": {
"description": "Integração com o plugin Tuna do OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Evita que o player apareça ao tocar uma música",
"name": "Player discreto"
},
"video-toggle": {
"description": "Adiciona um botão para alternar entre o modo Vídeo/Música. Também é possível remover opcionalmente toda a aba de vídeo",
"menu": {
@ -822,7 +935,8 @@
},
"name": "Alternar vídeo",
"templates": {
"button": "Música"
"button-song": "Música",
"button-video": "Vídeo"
}
},
"visualizer": {

File diff suppressed because it is too large Load Diff

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Modificări Vizuale",
"submenu": {
"custom-window-title": {
"label": "Titlul ferestrei personalizate",
"prompt": {
"label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)",
"placeholder": "Exemplu: Youtube Music"
}
},
"like-buttons": {
"default": "Default",
"force-show": "Forțează randarea",
@ -333,8 +340,32 @@
"description": "Aplică compresie pe audio (scade volumul părților cele mai zgomotoase și crește volumul părților mai puțin zgomotoase)",
"name": "Compresor audio"
},
"auth-proxy-adapter": {
"description": "Suport pentru utilizarea serviciilor proxy de autentificare",
"menu": {
"disable": "Dezactivează Adaptorul Proxy",
"enable": "Activează Adaptorul Proxy",
"hostname": {
"label": "Nume host"
},
"port": {
"label": "Port"
}
},
"name": "Adaptor Proxy de Autentificare",
"prompt": {
"hostname": {
"label": "Introduceți numele de gazdă pentru serverul proxy local (necesită repornire):",
"title": "Nume host proxy"
},
"port": {
"label": "Introduceți portul pentru serverul proxy local (necesită repornire):",
"title": "Port Proxy"
}
}
},
"blur-nav-bar": {
"description": "Face bara de navigare semi-transparentă",
"description": "Face bara de navigare semi-transparentă și difuză",
"name": "Estompează Bara de Navigație"
},
"bypass-age-restrictions": {
@ -357,6 +388,11 @@
},
"templates": {
"title": "Deschide selectorul de subtitrări"
},
"toast": {
"caption-changed": "Subtitrare schimbata in {{language}}",
"caption-disabled": "Subtitrari dezactivate",
"no-captions": "Nu exista subtitrari disponibile pentru aceasta piesa"
}
},
"compact-sidebar": {
@ -576,7 +612,15 @@
},
"navigation": {
"description": "Săgețile pentru Următorul/Anteriorul integrate direct în interfață, ca în browser-ul tău preferat",
"name": "Navigație"
"name": "Navigație",
"templates": {
"back": {
"title": "Inapoi la pagina anterioara"
},
"forward": {
"title": "Urmatoarea pagina"
}
}
},
"no-google-login": {
"description": "Elimină butonul de autentificare Google și link-urile din interfață",
@ -600,6 +644,10 @@
},
"name": "Notificări"
},
"performance-improvement": {
"description": "Îmbunătățește performanța activând scripturile experimentale",
"name": "Îmbunătățirea performanței [Beta]"
},
"picture-in-picture": {
"description": "Permite să schimbi aplicația la modul picture-in-picture",
"menu": {
@ -683,6 +731,7 @@
"listenbrainz": {
"token": "Introdu token-ul de utilizator ListenBrainz"
},
"scrobble-alternative-title": "Folosește titluri alternative",
"scrobble-other-media": "Scrobble alte surse media"
},
"name": "Scrobbler",
@ -745,6 +794,7 @@
"label": "Efect de linie",
"submenu": {
"fancy": {
"label": "Elegant",
"tooltip": "Folosește efecte largi pe linia curentă"
},
"focus": {
@ -766,6 +816,10 @@
"label": "Sincronizează versurile perfect",
"tooltip": "Calculează afisarea următoarei linii până la milisecundă (poate afecta performanța)"
},
"romanization": {
"label": "Transcrie versurile în alfabet latin",
"tooltip": "Dacă versurile sunt într-o altă limbă, încearcă să afișezi o versiune în alfabet latin."
},
"show-lyrics-even-if-inexact": {
"label": "Afișează versurile chiar dacă sunt inexacte",
"tooltip": "Dacă melodia nu este găsită, plugin-ul încearcă din nou cu o căutare diferită.\nRezultatul acestei încercări poate să nu fie exact."
@ -798,6 +852,10 @@
"description": "Integrare cu plugin-ul OBS Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Împiedică playerul să apară atunci când redați o melodie",
"name": "Player discret"
},
"video-toggle": {
"description": "Adaugă un buton ce schimbă între modurile Video/Melodie. De asemenea se poate elimina opțional toată fila video",
"menu": {
@ -821,7 +879,8 @@
},
"name": "Comutator video",
"templates": {
"button": "Melodie"
"button-song": "Melodie",
"button-video": "Video"
}
},
"visualizer": {

View File

@ -21,7 +21,7 @@
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Загрузка завершена. DevTools открыт"
"dev-tools": "Загрузка завершена. DevTools открыты"
},
"i18n": {
"loaded": "i18n загружен"
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Визуальные настройки",
"submenu": {
"custom-window-title": {
"label": "Собственное название окна",
"prompt": {
"label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)",
"placeholder": "Например: YouTube Music"
}
},
"like-buttons": {
"default": "Default",
"force-show": "Всегда показывать",
@ -333,6 +340,30 @@
"description": "Применяет компрессию к аудио (уменьшает громкость самых громких частей сигнала и повышает громкость самых тихих частей)",
"name": "Нормализация аудио"
},
"auth-proxy-adapter": {
"description": "Поддержка использования сервисов аутентификационного прокси",
"menu": {
"disable": "Отключить адаптер прокси",
"enable": "Включить адаптер прокси",
"hostname": {
"label": "Имя хоста"
},
"port": {
"label": "Порт"
}
},
"name": "Адаптер аутентификационного прокси",
"prompt": {
"hostname": {
"label": "Введите имя хоста для локального прокси-сервера (требуется перезапуск):",
"title": "Имя хоста прокси"
},
"port": {
"label": "Введите порт для локального прокси-сервера (требуется перезапуск):",
"title": "Порт прокси"
}
}
},
"blur-nav-bar": {
"description": "Делает панель навигации прозрачной и размытой",
"name": "Размытие панели навигации"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Открыть выбор субтитров"
},
"toast": {
"caption-changed": "Субтитры изменены на {{language}}",
"caption-disabled": "Субтитры отключены",
"no-captions": "Нет доступных субтитров для этой песни"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Настройка устройства вывода медиа для песен",
"menu": {
"device-selector": "Выберите устройство"
},
"name": "Пользовательское устройство вывода",
"prompt": {
"device-selector": {
"label": "Выберите устройство вывода медиа, которое будет использоваться",
"title": "Выберите устройство вывода"
}
}
},
"disable-autoplay": {
"description": "Запускает песню сразу на паузе",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "Скрыть сколько осталось времени",
"hide-github-button": "Скрыть ссылку на GitHub",
"play-on-youtube-music": "Воспроизвести на YouTube Music",
"set-inactivity-timeout": "Поставить таймер неактивности"
"set-inactivity-timeout": "Поставить таймер неактивности",
"set-status-display-type": {
"label": "Текст статуса",
"submenu": {
"artist": "Слушает {исполнитель}",
"title": "Слушает {название трека}",
"youtube-music": "Слушает YouTube Music"
}
}
},
"name": "Discord Rich Presence",
"prompt": {
@ -576,7 +633,15 @@
},
"navigation": {
"description": "Стрелки навигации \"вперед/назад\" интегрированы в интерфейс, как в вашем любимом браузере",
"name": "Навигация"
"name": "Навигация",
"templates": {
"back": {
"title": "Предыдущая страница"
},
"forward": {
"title": "Следующая страница"
}
}
},
"no-google-login": {
"description": "Убрать из интерфейса кнопки и ссылки для входа через Google",
@ -600,6 +665,10 @@
},
"name": "Уведомления"
},
"performance-improvement": {
"description": "Улучшает производительность с помощью включения экспериментальных скриптов",
"name": "Улучшение производительности [Бета]"
},
"picture-in-picture": {
"description": "Позволяет переключить приложение в режим «картинка в картинке»",
"menu": {
@ -664,7 +733,12 @@
}
},
"description": "Позволяет изменять качество видео с помощью кнопки на оверлее видео",
"name": "Изменение качества видео"
"name": "Изменение качества видео",
"renderer": {
"quality-settings-button": {
"label": "Открыть настройки качества плеера"
}
}
},
"scrobbler": {
"description": "Добавляет поддержку скробблинга (last.fm, Listenbrainz)",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "Введите токен пользователя ListenBrainz"
},
"scrobble-alternative-artist": "Использовать альтернативных исполнителей",
"scrobble-alternative-title": "Использовать альтернативные названия",
"scrobble-other-media": "Скробблинг других медиа"
},
"name": "Скробблер",
@ -767,6 +843,18 @@
"label": "Идеально синхронизировать слова",
"tooltip": "До миллисекунды рассчитывает отображение следующей строки(может оказать небольшое влияние на производительность)"
},
"preferred-provider": {
"label": "Предпочитаемый источник",
"none": {
"label": "Никакой",
"tooltip": "Нет предпочитаемого источника"
},
"tooltip": "Выберите источник по умолчанию"
},
"romanization": {
"label": "Романизировать слова",
"tooltip": "Если слова на другом языке, пытаться отображать версию на латинице."
},
"show-lyrics-even-if-inexact": {
"label": "Показывать слова, даже если неточные",
"tooltip": "Если песня не найдена, плагин попытается снова с другим поисковым запросом.\nСо второй попытки результат может быть неточным."
@ -795,10 +883,35 @@
"description": "Добавляет виджет тачбара для пользователей macOS",
"name": "Тачбар"
},
"transparent-player": {
"description": "Делает окно приложения прозрачным",
"menu": {
"opacity": {
"label": "Непрозрачность",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Тип",
"submenu": {
"acrylic": "Acrylic",
"mica": "Mica",
"none": "Отключено",
"tabbed": "Tabbed"
}
}
},
"name": "Прозрачный плеер"
},
"tuna-obs": {
"description": "Интеграция с плагином Tuna от OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Предотвращает выскакивание плеера при воспроизведении",
"name": "Ненавязчивый плеер"
},
"video-toggle": {
"description": "Добавляет кнопку для переключения между режимами видео и песни. Также можно удалить всю вкладку с видео",
"menu": {
@ -822,7 +935,8 @@
},
"name": "Переключатель видео",
"templates": {
"button": "Песня"
"button-song": "Песня",
"button-video": "Видео"
}
},
"visualizer": {

View File

@ -7,9 +7,9 @@
"initialize-failed": "\"{{pluginName}}\" ප්ලගිනය ආරම්භ කිරීමට අසමත් විය",
"load-all": "සියලුම ප්ලගින පූරණය කරමින්",
"load-failed": "\"{{pluginName}}\" ප්ලගිනය පූරණය කිරීමට අසමත් විය",
"loaded": "ප්ලගිනය \"{{pluginName}}\" පූරණය කරන ලදී",
"unload-failed": "ප්ලගින් \"{{pluginName}}\" ගලවන්න අසාර්ථක වුන",
"unloaded": "ප්ලගින් \"{{pluginName}}\" ගැලෙව්වා"
"loaded": "\"{{pluginName}}\" ප්ලගිනය පූරණය විය",
"unload-failed": "\"{{pluginName}}\" ප්ලගිනය යළි ඉවත් කිරීමට අසාර්ථක විය",
"unloaded": "\"{{pluginName}}\" ප්ලගිනය යළි ඉවත් කරන ලදී"
}
}
},
@ -21,36 +21,39 @@
"main": {
"console": {
"did-finish-load": {
"dev-tools": "පූරණය සම්පුර්නි. ඩෙව්ටූල්ස් ඇරිලා"
"dev-tools": "පූරණය අවසන්. DevTools විවෘත වී ඇත"
},
"i18n": {
"loaded": "i18n පූරණය කර ඇත"
"loaded": "i18n පූරණය කරන ලදී"
},
"second-instance": {
"receive-command": "ප්‍රෝටෝකාල් හරහා විධානය ලැබුණි: \"{{command}}\""
},
"theme": {
"css-file-not-found": "සීඑස්එස් ගොනුව \"{{cssFile}}\" නොපවතී, නොසලකා හරී"
"css-file-not-found": "css ගොනුව \"{{cssFile}}\" නොපවතී, නොසලකා හරී"
},
"unresponsive": {
"details": "ප්‍රතිචාර නොදක්ව දෝෂයක් {{error}}"
"details": "ප්‍රතිචාර නොදක්වයි, දෝෂයක්\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "යෙදුම් කෑශ් නිදහස් කරමින්"
"clearing-cache-after-20s": "යෙදුමේ දත්ත සංචිතය හිස් කරමින්"
},
"window": {
"tried-to-render-offscreen": "වින්ඩෝව තිරයෙන් පිටත පෙන්වීමට උත්සාහ කළේය, වින්ඩෝවේ ප්‍රමාණය={{windowSize}}, තිරයෙ ප්‍රමාණය={{displaySize}}, පිහිටීම={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "මෙනුව සැගවී ඇත, 'Alt' යතුර නැවත පෙන්වීමට භාවිතා කරන්න. (හෝ In-App මෙනුවේ 'Escape')",
"message": "මෙනුව සැගවීම සාර්තකයි",
"detail": "මෙනුව සැගවී ඇත, නැවත පෙන්වීමට 'Alt' භාවිතා කරන්න. (මෙනුවේ 'Escape')",
"message": "මෙනුව සැගවීම සක්‍රීය කර ඇත",
"title": "මෙනුව සැගවීම සක්‍රීයයි"
},
"need-to-restart": {
"buttons": {
"later": "පසුව",
"restart-now": "යෙදුම වසා නැවත ආරම්භ කරන්න"
"restart-now": "නැවත ආරම්භ කරන්න"
},
"detail": "\"{{pluginName}}\" ප්ලගිනය යෙදුම නැවත ආරම්භ කිරීමක් ඉල්ලයි",
"detail": "\"{{pluginName}}\" ප්ලගිනය ක්‍රියාත්මක වීමට නැවත ආරම්භ කිරීමක් අවශ්‍යයි",
"message": "\"{{pluginName}}\" නැවත ආරම්භ කළ යුතුය",
"title": "නැවත ආරම්භ කිරීම අවශ්‍යයි"
},
@ -66,8 +69,8 @@
},
"update-available": {
"buttons": {
"disable": "යාවත්කාලීන කිරීම් නවතන්න",
"download": "බාගත කිරීම",
"disable": "යාවත්කාලීන කිරීම් අක්‍රිය කරන්න",
"download": "බාගත කරන්න",
"ok": "හරි"
},
"detail": "නව අනුවාදයක් ඇති අතර එය මෙයින් බාගන්න {{downloadLink}}",
@ -95,11 +98,117 @@
"submenu": {
"auto-reset-app-cache": "යෙදුම් කෑච් යෙදුම ආරම්භයේදී යලි පිහිටුවන්න",
"disable-hardware-acceleration": "දෘඩාංග භාවිත වේගවත් කිරීම් අක්‍රීය කරන්න",
"edit-config-json": "config.json සකසන්න"
"edit-config-json": "config.json සකසන්න",
"override-user-agent": "User-Agent ව වෙනස් කරන්න",
"restart-on-config-changes": "Config change එකක් වෙද්දී app එක auto restart වෙන්න",
"set-proxy": {
"label": "Proxy එක set කරන්න",
"prompt": {
"label": "Proxy ලිපිනය ඇතුළත් කරන්න: (නවතන්න නම් හිස්ව තබන්න)",
"placeholder": "උදාහරණය: SOCKS5://127.0.0.1:9999",
"title": "Proxy එක set කරන්න"
}
},
"toggle-dev-tools": "DevTools On/Off කරන්න"
}
},
"always-on-top": "Always on top කරන්න",
"auto-update": "Auto Update කරන්න",
"hide-menu": {
"dialog": {
"message": "Menu එක ඊළඟ වතාවට ආරම්භක වෙලාවේ හෝ hide වෙයි. දැක්වීමට [Alt] හෝ in-app menu එකේ නම් [`] key එක ඔබන්න",
"title": "Menu hide කිරීම enable කරලා"
},
"label": "Menu hide කරන්න"
},
"language": {
"dialog": {
"message": "Restart කිරීමෙන් පසු භාෂාව වෙනස් වේ",
"title": "Language change වුනා"
},
"label": "භාෂාව",
"submenu": {
"to-help-translate": "පරිවර්තනය කිරීමට උදව් කරන්න ඕනේද? මෙතන ක්ලික් කරන්න"
}
},
"resume-on-start": "App එක start වෙද්දි අවසන් ගීතය නැවත ඇරඹෙන්න",
"single-instance-lock": "Single Instance Lock සක්‍රීය කරන්න",
"start-at-login": "ලොගින් වුන විට start කරන්න",
"starting-page": {
"label": "ආරම්භක පිටුව",
"unset": "අවලංගු කරන්න"
},
"tray": {
"label": "ට්‍රේ එක",
"submenu": {
"disabled": "Disable කරන ලදී",
"enabled-and-hide-app": "ට්‍රේ එක enable කරලා, app window එක hide කරන්න",
"enabled-and-show-app": "Enable කරලා app එක පෙන්වන්න",
"play-pause-on-click": "Click කළ විට play/ pause වෙනවා"
}
},
"visual-tweaks": {
"label": "Visual tweaks කරන්න",
"submenu": {
"like-buttons": {
"default": "මූලික",
"force-show": "Force show කරන්න",
"hide": "සඟවන්න",
"label": "Like බොත්තම්"
},
"remove-upgrade-button": "Upgrade බොත්තම ඉවත් කරන්න",
"theme": {
"dialog": {
"button": {
"cancel": "අවලංගු කරන්න",
"remove": "ඉවත් කරන්න"
},
"remove-theme": "ඔබට විශ්වාසද ඔබගේ custom theme එක ඉවත් කිරීමට අවශ්‍ය බව?",
"remove-theme-message": "මෙය custom theme එක ඉවත් කරයි"
},
"label": "Theme",
"submenu": {
"import-css-file": "Custom CSS ගොනුව import කරන්න",
"no-theme": "Theme එකක් නැහැ"
}
}
}
}
}
},
"plugins": {
"enabled": "සක්රිය කරන්න",
"label": "ප්ලගීන",
"new": "නව"
},
"view": {
"label": "බලන්න",
"submenu": {
"force-reload": "බලෙන් රීලෝඩ් කරන්න",
"reload": "රීලෝඩ් කරන්න",
"reset-zoom": "සැබෑ ප්රමාණය",
"toggle-fullscreen": "සම්පූර්ණ තිරය ටොගල් කරන්න",
"zoom-in": "විශාලනය කරන්න",
"zoom-out": "කුඩා කරන්න"
}
}
},
"tray": {
"next": "ඊළඟ",
"play-pause": "වාදනය / විරාමය",
"previous": "පෙර",
"quit": "පිටවීම",
"restart": "නැවත ආරම්භ කරන්න",
"show": "තිරය පෙන්වන්න",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
}
}
},
"plugins": {
"adblocker": {
"description": "සියලුම දැන්වීම් අවහිර කර කොටුවෙන් පිටත ලුහුබැඳීම"
}
}
}

View File

@ -0,0 +1,10 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Dështoi në ekzekutimin e plugin-it {{pluginName}}::{{contextName}}",
"executed-at-ms": "Shtojca {{pluginName}}::{{contextName}} u ekzekutua në {{ms}}ms"
}
}
}
}

950
src/i18n/resources/sr.json Normal file
View File

@ -0,0 +1,950 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Neuspešno izvršavanje ekstenzije {{pluginName}}::{{contextName}}",
"executed-at-ms": "Ekstenzija {{pluginName}}::{{contextName}} se izvršila za {{ms}}ms",
"initialize-failed": "Greška pri učitavanju ekstenzije \"{{pluginName}}\"",
"load-all": "Učitavanje svih ekstenzija",
"load-failed": "Neuspešno učitavanje ekstenzije \"{{pluginName}}\"",
"loaded": "Ekstenzija \"{{pluginName}}\" je učitana",
"unload-failed": "Greška pri oslobađanju ekstenzije \"{{pluginName}}\"",
"unloaded": "Ekstenzija \"{{pluginName}}\" je oslobođena"
}
}
},
"language": {
"code": "sr",
"local-name": "Српски",
"name": "Serbian"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Završeno učitavanje. DevTools alat je otvoren"
},
"i18n": {
"loaded": "i18n su učitani"
},
"second-instance": {
"receive-command": "Primljena je komanda kroz protokol: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS datoteka \"{{cssFile}}\" ne postoji, ignorišem"
},
"unresponsive": {
"details": "Aplikacija se ne odaziva!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Čišćenje keširanih podataka"
},
"window": {
"tried-to-render-offscreen": "Prozor je pokušao da se učita van ekrana: windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Meni je sakriven, pritisnite 'Alt' da biste ga prikazali (ili 'Escape' ako koristite meni u aplikaciji)",
"message": "Opcija sakrivanja menija je omogućena",
"title": "Opcija sakrivanja menija je omogućena"
},
"need-to-restart": {
"buttons": {
"later": "Kasnije",
"restart-now": "Ponovo pokreni odmah"
},
"detail": "Ekstenzija \"{{pluginName}}\" zahteva ponovno pokretanje aplikacije da bi se učitala",
"message": "\"{{pluginName}}\" zahteva ponovno pokretanje",
"title": "Ponovno pokretanje je neophodno"
},
"unresponsive": {
"buttons": {
"quit": "Izađi",
"relaunch": "Pokreni ponovo",
"wait": "Čekaj"
},
"detail": "Izvinjavamo se zbog neprijatnosti! Molimo odaberite sledeći korak:",
"message": "Aplikacija ne odgovara ili je zamrznuta",
"title": "Prozor ne odgovara ili je zamrznut"
},
"update-available": {
"buttons": {
"disable": "Onemogući ažuriranja",
"download": "Preuzmi",
"ok": "U redu"
},
"detail": "Nova verzija je dostupna za preuzimanje na {{downloadLink}}",
"message": "Nova verzija je dostupna",
"title": "Ažuriranje je dostupno"
}
},
"menu": {
"about": "O aplikaciji",
"navigation": {
"label": "Navigacija",
"submenu": {
"copy-current-url": "Kopiraj trenutnu adresu",
"go-back": "Nazad",
"go-forward": "Napred",
"quit": "Izađi",
"restart": "Ponovo pokreni aplikaciju"
}
},
"options": {
"label": "Opcije",
"submenu": {
"advanced-options": {
"label": "Napredne opcije",
"submenu": {
"auto-reset-app-cache": "Očisti keširane podatke pri pokretanju aplikacije",
"disable-hardware-acceleration": "Onemogući hardversko ubrzanje",
"edit-config-json": "Izmeni config.json",
"override-user-agent": "Prepiši User-Agent",
"restart-on-config-changes": "Pokreni ponovo po promeni konfiguracije",
"set-proxy": {
"label": "Podesi proxy",
"prompt": {
"label": "Unesi Proxy adresu: (ostavi prazno da bi proxy bio onemogućen)",
"placeholder": "Primer: SOCKS5://127.0.0.1:9999",
"title": "Podesi proxy"
}
},
"toggle-dev-tools": "Pokreni/napusti DevTools"
}
},
"always-on-top": "Uvek na vrhu",
"auto-update": "Automatsko ažuriranje",
"hide-menu": {
"dialog": {
"message": "Meni će biti sakriven posle sledećeg pokretanje, upotrebite [Alt] da ga ponovo prikažete (ili backtick [`] ukoliko koristite meni u aplikaciji)",
"title": "Sakrivanje menija je omogućeno"
},
"label": "Sakrij meni"
},
"language": {
"dialog": {
"message": "Jezik aplikacije će biti promenjen nakon sledećeg pokretanja aplikacije",
"title": "Jezik je uspešno promenjen"
},
"label": "Jezik",
"submenu": {
"to-help-translate": "Želite da pomognete u prevođenju? Kliknite ovde"
}
},
"resume-on-start": "Nastavi trenutnu numeru pri sledećem pokretanju",
"single-instance-lock": "Sprečavanje višestrukog pokretanja",
"start-at-login": "Pokreni po prijavi u sistem",
"starting-page": {
"label": "Početna strana",
"unset": "Poništi podešavanje"
},
"tray": {
"label": "Lista",
"submenu": {
"disabled": "Onemogućeno",
"enabled-and-hide-app": "Omogući sklanjanje aplikacije u sistemsku listu",
"enabled-and-show-app": "Omogući i prikaži aplikaciju",
"play-pause-on-click": "Pokreni/Pauziraj na klik"
}
},
"visual-tweaks": {
"label": "Vizuelna podešavanja",
"submenu": {
"custom-window-title": {
"label": "Prilagođeni naziv prozora",
"prompt": {
"label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)",
"placeholder": "Primer: YouTube Muzika"
}
},
"like-buttons": {
"default": "Podrazumevano",
"force-show": "Prinudno prikaži",
"hide": "Sakrij",
"label": "'Sviđa mi se' dugmići"
},
"remove-upgrade-button": "Ukloni dugme za nadogradnju",
"theme": {
"dialog": {
"button": {
"cancel": "Otkaži",
"remove": "Ukloni"
},
"remove-theme": "Da li ste sigurni da želite da uklonite prilagođenu temu?",
"remove-theme-message": "Ova opcija će ukloniti prilagođenu temu"
},
"label": "Tema",
"submenu": {
"import-css-file": "Uvezi prilagođenu CSS datoteku (stil)",
"no-theme": "Bez teme"
}
}
}
}
}
},
"plugins": {
"enabled": "Omogućeno",
"label": "Ekstenzije",
"new": "NOVO"
},
"view": {
"label": "Prikaz",
"submenu": {
"force-reload": "Prinudno osveži",
"reload": "Osveži",
"reset-zoom": "Realna veličina",
"toggle-fullscreen": "Aktiviraj/deaktiviraj pun ekran",
"zoom-in": "Uvećaj",
"zoom-out": "Umanji"
}
}
},
"tray": {
"next": "Sledeće",
"play-pause": "Pokreni/Pauziraj",
"previous": "Prethodno",
"quit": "Izađi",
"restart": "Ponovo pokreni aplikaciju",
"show": "Prikaži prozor",
"tooltip": {
"default": "YouTube Muzika",
"with-song-info": "YouTube Muzika: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Ukoliko dođe do prikaza reklame, zvuk se prigušuje i podešava se brzina na 16x",
"name": "Ubrzanje reklama"
},
"adblocker": {
"description": "Podrazumevano blokiranje svih reklama i praćenja",
"menu": {
"blocker": "Bloker"
},
"name": "Bloker reklama"
},
"album-actions": {
"description": "Dodaje mogućnost primene opcija 'Sviđa mi se, ne sviđa mi se' kao i opciju njihovog poništenja na nivou plejliste ili albuma",
"name": "Akcije albuma"
},
"album-color-theme": {
"description": "Primenjuje dinamičku temu i vizuelne efekte na osnovu palete boja albuma",
"menu": {
"color-mix-ratio": {
"label": "Odnos mešavine boja",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Paleta boja albuma"
},
"ambient-mode": {
"description": "Primenjuje svetlosne efekte na pozadini ekrana upotrebom blagih boja iz video snimka",
"menu": {
"blur-amount": {
"label": "Zamagljenje",
"submenu": {
"pixels": "{{blurAmount}} piksela"
}
},
"buffer": {
"label": "Bafer",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Prozirnost",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kvalitet",
"submenu": {
"pixels": "{{quality}} piksela"
}
},
"size": {
"label": "Veličina",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Blag prelaz",
"submenu": {
"during": "U trajanju od {{interpolationTime}} s"
}
},
"use-fullscreen": {
"label": "Korišćenje punog ekrana"
}
},
"name": "Ambijentalni režim"
},
"amuse": {
"description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u YouTube Muziku",
"name": "Zabavi",
"response": {
"query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri."
}
},
"api-server": {
"description": "Dodaje API server za kontrolu muzičkog plejera",
"dialog": {
"request": {
"buttons": {
"allow": "Dozvoli",
"deny": "Odbij"
},
"message": "Dozvoli {{ID}} ({{origin}}) da pristupa API-ju?",
"title": "Zahtev za autorizaciju na API"
}
},
"menu": {
"auth-strategy": {
"label": "Strategija za autorizaciju",
"submenu": {
"auth-at-first": {
"label": "Autorizuj na prvom zahtevu"
},
"none": {
"label": "Bez autorizacije"
}
}
},
"hostname": {
"label": "Ime host-a"
},
"port": {
"label": "Port"
}
},
"name": "API Server [Beta]",
"prompt": {
"hostname": {
"label": "Unesite ime host-a (npr. 0.0.0.0) za API server:",
"title": "Ime host-a"
},
"port": {
"label": "Unesite port za API server:",
"title": "Port"
}
}
},
"audio-compressor": {
"description": "Primeni kompresiju audio trake (smanjuje jačinu zvuka na najglasnijim delovima signala, i povećava jačinu na najnižim)",
"name": "Kompresor zvuka"
},
"auth-proxy-adapter": {
"description": "Podrška za upotrebu proxy servisa za autentifikaciju",
"menu": {
"disable": "Onemogući Proxy adapter",
"enable": "Omogući Proxy adapter",
"hostname": {
"label": "Ime host-a"
},
"port": {
"label": "Port"
}
},
"name": "Proxy adapter za autentifikaciju",
"prompt": {
"hostname": {
"label": "Unesi ime host-a za lokalni proxy server (zahteva ponovno pokretanje):",
"title": "Ime host-a za Proxy"
},
"port": {
"label": "Unesi port za lokalni proxy server (zahteva ponovno pokretanje):",
"title": "Proxy Port"
}
}
},
"blur-nav-bar": {
"description": "Čini navigacioni meni prozirnim i zamućenim",
"name": "Zamuti navigacioni meni"
},
"bypass-age-restrictions": {
"description": "Preskoči starosnu verifikaciju za YouTube",
"name": "Preskoči starosna ograničenja"
},
"captions-selector": {
"description": "Odabir prevoda za numere/audio trake na YouTube Muzici",
"menu": {
"autoload": "Automatski odaberi prethodno odabrani prevod",
"disable-captions": "Podrazumevano bez prevoda"
},
"name": "Odabir prevoda",
"prompt": {
"selector": {
"label": "Trenutno odabrani jezik prevoda: {{language}}",
"none": "Ništa",
"title": "Odaberi jezik prevoda"
}
},
"templates": {
"title": "Otvori meni za izbor prevoda"
},
"toast": {
"caption-changed": "Prevod promenjen u {{language}}",
"caption-disabled": "Prevod onemogućen",
"no-captions": "Za ovu pesmu nisu dostupni prevodi"
}
},
"compact-sidebar": {
"description": "Uvek koristi kompaktni meni sa strane",
"name": "Kompaktni meni sa strane"
},
"crossfade": {
"description": "Ublaženi prelaz između numera",
"menu": {
"advanced": "Napredno"
},
"name": "Ublaženi prelaz [Beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Ulazno trajanje prelaza (ms)",
"fade-out-duration": "Izlazno trajanje prelaza (ms)",
"fade-scaling": {
"label": "Skaliranje prelaza",
"linear": "Linearno",
"logarithmic": "Logaritamsko"
},
"seconds-before-end": "Prelaz N sekundi pre kraja"
},
"title": "Opcije prelaza"
}
}
},
"custom-output-device": {
"description": "Konfigurišite prilagođeni izlazni medijski uređaj za pesme",
"menu": {
"device-selector": "Izaberite uređaj"
},
"name": "Prilagođeni izlazni uređaj",
"prompt": {
"device-selector": {
"label": "Izaberite izlazni medijski uređaj koji će se koristiti",
"title": "Izaberite izlazni uređaj"
}
}
},
"disable-autoplay": {
"description": "Numere se pokreću u pauziranom režimu",
"menu": {
"apply-once": "Primenjuje se samo pri pokretanju"
},
"name": "Onemogući automatsko reprodukovanje"
},
"discord": {
"backend": {
"already-connected": "Pokušano je da se poveže sa aktivnom vezom",
"connected": "Spojeno sa Discord-om",
"disconnected": "Poništeno povezivanje sa Discord-om"
},
"description": "Prikaži prijateljima šta slušaš uz 'Rich Presence'",
"menu": {
"auto-reconnect": "Automatsko ponovno povezivanje",
"clear-activity": "Očisti aktivnosti",
"clear-activity-after-timeout": "Očisti aktivnosti nakon isteka vremena",
"connected": "Povezano",
"disconnected": "Nije povezano",
"hide-duration-left": "Sakrij preostalo vreme",
"hide-github-button": "Sakrij dugme sa GitHub linkom",
"play-on-youtube-music": "Reprodukuj na YouTube Muzici",
"set-inactivity-timeout": "Podesi tajmer za neaktivnost",
"set-status-display-type": {
"label": "Tekst statusa",
"submenu": {
"artist": "Slušanje {artist}",
"title": "Slušanje {song title}",
"youtube-music": "Slušanje YouTube muzike"
}
}
},
"name": "Discord Bogato Prisustvo",
"prompt": {
"set-inactivity-timeout": {
"label": "Unesi vreme za tajmer neaktivnosti u sekundama:",
"title": "Podesi tajmer neaktivnosti"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "U redu"
},
"message": "Greška! Izvinjavamo se, preuzimanje nije uspelo…",
"title": "Greška pri preuzimanju!"
},
"start-download-playlist": {
"buttons": {
"ok": "U redu"
},
"detail": "({{playlistSize}} numera)",
"message": "Preuzimanje plejliste {{playlistTitle}}",
"title": "Preuzimanje je započeto"
}
},
"feedback": {
"conversion-progress": "Konverzija: {{percent}}%",
"converting": "Konvertuje se…",
"done": "Završeno: {{filePath}}",
"download-info": "Preuzima se {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Preuzimanje: {{percent}}%",
"downloading": "Preuzimanje…",
"downloading-counter": "Preuzimanje {{current}}/{{total}}…",
"downloading-playlist": "Preuzimanje plejliste \"{{playlistTitle}}\" - {{playlistSize}} numera ({{playlistId}})",
"error-while-downloading": "Greška pri preuzimanju \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Direktorijum {{playlistFolder}} već postoji",
"getting-playlist-info": "Preuzimanje informacija o plejlisti…",
"loading": "Učitavanje…",
"playlist-has-only-one-song": "Plejlista sadrži samo jednu numeru, preuzima se direktno",
"playlist-id-not-found": "Nije pronađen ID plejliste",
"playlist-is-empty": "Plejlista je prazna",
"playlist-is-mix-or-private": "Greška pri preuzimanju informacija o plejlisti: proverite da li je možda skrivena ili \"Za tebe\" plejlista\n\n{{error}}",
"preparing-file": "Pripremanje datoteke…",
"saving": "Čuvanje…",
"trying-to-get-playlist-id": "Pokušaj preuzimanja ID plejliste: {{playlistId}}",
"video-id-not-found": "Video nije pronađen",
"writing-id3": "Zapisivanje ID3 tagova…"
}
},
"description": "Preuzimanje MP3 / izvornog zvuka direktno sa interfejsa",
"menu": {
"choose-download-folder": "Odaberite direktorijum za preuzimanja",
"download-finish-settings": {
"label": "Preuzmi na završetku",
"prompt": {
"last-percent": "Nakon x procenata",
"last-seconds": "Poslednjih x sekundi",
"title": "Podesite kad da se vrši preuzimanje"
},
"submenu": {
"advanced": "Napredno",
"enabled": "Omogućeno",
"mode": "Vremenski režim",
"percent": "Procenat(a)",
"seconds": "Sekundi"
}
},
"download-playlist": "Preuzmi plejlistu",
"presets": "Predefinisana podešavanja",
"skip-existing": "Preskoči postojeće datoteke"
},
"name": "Servis za preuzimanje",
"renderer": {
"can-not-update-progress": "Nemoguće ažuriranje trenutnog napretka"
},
"templates": {
"button": "Preuzimanje"
}
},
"equalizer": {
"description": "Dodaje ekvilajzer u muzički plejer",
"menu": {
"presets": {
"label": "Predefinisana podešavanja",
"list": {
"bass-booster": "Pojačivač basa"
}
}
},
"name": "Ekvilajzer"
},
"exponential-volume": {
"description": "Postavlja slajder jačine kao eksponencijalan radi lakšeg izbora nižih jačina.",
"name": "Eksponencijalna jačina"
},
"in-app-menu": {
"description": "Daje izbornim trakama fensi, tamni ili izgled prema boji albuma",
"menu": {
"hide-dom-window-controls": "Sakrij kontrole DOM prozora"
},
"name": "Izborni menu unutar aplikacije"
},
"lumiastream": {
"description": "Dodaje podršku za Lumia Stream",
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Dodaje podršku za tekstove za većinu pesama",
"menu": {
"romanized-lyrics": "Romanizovani tekstovi"
},
"name": "Genius tekstovi",
"renderer": {
"fetched-lyrics": "Dobavljen tekst pesme sa Genius-a"
}
},
"music-together": {
"description": "Podeli plejlistu sa drugima. Kada domaćin (host) pusti pesmu, svi ostali će čuti istu pesmu",
"dialog": {
"enter-host": "Unesi ID host-a"
},
"internal": {
"save": "Sačuvaj",
"track-source": "Izvor pesme",
"unknown-user": "Nepoznat korisnik"
},
"menu": {
"click-to-copy-id": "Kopiraj ID host-a",
"close": "Zatvori 'Music Together'",
"connected-users": "Spojeni korisnici",
"disconnect": "Prekini vezu sa 'Music Together'",
"empty-user": "Nema povezanih korisnika",
"host": "'Music Together' domaćin (host)",
"join": "Pridruži se 'Music Together'",
"permission": {
"all": "Dozvoli gostima da kontrolišu plejlistu i reprodukciju",
"host-only": "Samo domaćin (host) može da kontroliše plejlistu i reprodukciju",
"playlist": "Dozvoli gostima da kontrolišu plejlistu"
},
"set-permission": "Promeni dozvole za upravljanje",
"status": {
"disconnected": "Nije povezan",
"guest": "Povezan kao gost",
"host": "Povezan kao domaćin (host)"
}
},
"name": "Music Together [Beta]",
"toast": {
"add-song-failed": "Dodavanje pesme nije uspelo",
"closed": "'Music Together' je zatvorena",
"disconnected": "Veza sa 'Music Together' je prekinuta",
"host-failed": "Pokretanje 'Music Together' kao domaćin (host) nije uspelo",
"id-copied": "ID domaćina (host) kopiran u privremenu memoriju",
"id-copy-failed": "Kopiranje ID domaćina (host) u privremenu memoriju nije uspelo",
"join-failed": "Povezivanje na 'Music Together' neuspešno",
"joined": "Povezan na 'Music Together'",
"permission-changed": "Dozvola 'Music Together' promenjena na \"{{permission}}\"",
"remove-song-failed": "Uklanjanje pesme nije uspelo",
"user-connected": "{{name}} se pridružio na 'Music Together'",
"user-disconnected": "{{name}} je napustio 'Music Together'"
}
},
"navigation": {
"description": "Strelice za navigaciju napred/nazad su direktno integrisane u interfejs, kao i u tvom omiljenom pregledaču",
"name": "Navigacija",
"templates": {
"back": {
"title": "Vrati se na prethodnu stranicu"
},
"forward": {
"title": "Idi na sledeću stranicu"
}
}
},
"no-google-login": {
"description": "Ukloni Google dugmad i linkove za prijavu sa interfejsa",
"name": "Bez Google prijave"
},
"notifications": {
"description": "Prikaži obaveštenje kada numera krene sa reprodukcijom (interaktivna obaveštenja su dostupna na Windows-u)",
"menu": {
"interactive": "Interaktivna obaveštenja",
"interactive-settings": {
"label": "Podešavanja za interakciju",
"submenu": {
"hide-button-text": "Sakrij tekst dugmeta",
"refresh-on-play-pause": "Osveži prilikom Pokreni/Pauziraj",
"tray-controls": "Otvori/Zatvori klikom na sistemsku traku"
}
},
"priority": "Prioritet obaveštenja",
"toast-style": "Toast stil obaveštenja",
"unpause-notification": "Prikaži obaveštenje prilikom nastavka reprodukcije"
},
"name": "Obaveštenja"
},
"performance-improvement": {
"description": "Poboljšaj performanse omogućavanjem eksperimentalnih skripti",
"name": "Poboljšaj performanse [Beta]"
},
"picture-in-picture": {
"description": "Dozvoljava aplikaciji da se prebaci u režim slike-u-slici",
"menu": {
"always-on-top": "Uvek na vrhu",
"hotkey": {
"label": "Prečica",
"prompt": {
"keybind-options": {
"hotkey": "Prečica"
},
"label": "Izaberi prečicu za prebacivanje u režim slike-u-slici",
"title": "Prečica za režim slike-u-slici"
}
},
"save-window-position": "Sačuvaj poziciju prozora",
"save-window-size": "Sačuvaj veličinu prozora",
"use-native-pip": "Koristi izvorni režim slike-u-slici za pregledače"
},
"name": "Slika-u-slici",
"templates": {
"button": "Slika-u-slici"
}
},
"playback-speed": {
"description": "Slušaj brzo, slušaj sporo! Dodaje slajder koji kontroliše brzinu pesme",
"name": "Brzina reprodukcije",
"templates": {
"button": "Brzina"
}
},
"precise-volume": {
"description": "Precizno kontroliši jačinu zvuka korišćenjem točka na mišu/prečica, sa prilagođenim interfejsom i prilagodivim inkrementalnim koracima jačine",
"menu": {
"arrows-shortcuts": "Lokalne kontrole tastera sa strelicama",
"custom-volume-steps": "Postavi prilagođene korake za promenu jačine",
"global-shortcuts": "Globalne prečice"
},
"name": "Precizna jačina",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Smanji jačinu",
"increase": "Povećaj jačinu"
},
"label": "Izaberi globalne prečice na tastaturi za jačinu:",
"title": "Globalne prečice na tastaturi za jačinu"
},
"volume-steps": {
"label": "Izaberi korake za povećanje/smanjenje jačine",
"title": "Koraci za promenu jačine"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Trenutni kvalitet: {{quality}}",
"message": "Izaberi kvalitet videa:",
"title": "Izaberi kvalitet videa"
}
}
},
"description": "Dozvoljava promenu kvaliteta videa pomoću dugmeta na video preklapanju",
"name": "Promena kvaliteta videa",
"renderer": {
"quality-settings-button": {
"label": "Otvori meni za promenu kvaliteta plejera"
}
}
},
"scrobbler": {
"description": "Dodaj podršku za 'četkanje' (poput last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Autentifikacija sa Last.fm nije uspela.\nZatvori iskačući prozor do sledećeg ponovnog pokretanja.",
"title": "Autentifikacija neuspešna"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Podešavanja za Last.fm API"
},
"listenbrainz": {
"token": "Unesi korisnički žeton za ListenBrainz"
},
"scrobble-alternative-artist": "Koristi alternativne izvođače",
"scrobble-alternative-title": "Koristi alternativne naslove",
"scrobble-other-media": "Učetkaj druge medije"
},
"name": "Četkarnik",
"prompt": {
"lastfm": {
"api-key": "Last.fm API ključ",
"api-secret": "Last.fm API tajna"
},
"listenbrainz": {
"token": {
"label": "Unesi svoj ListenBrainz korisnički žeton:",
"title": "ListenBrainz žeton"
}
}
}
},
"shortcuts": {
"description": "Dozvoljava postavljanje globalnih prečica na tastaturi za reproduciju (pusti/pauziraj/sledeće/prethodno) i isključivanje OSD za medije tako što će prepisati tastere za medije, uključiti Ctrl/CMD + F za pretragu, isključiti MPRIS podršku za medija tastere na Linux-u, i prilagođene prečice za napredne korisnike",
"menu": {
"override-media-keys": "Prepiši medija tastere",
"set-keybinds": "Podesi globalne kontrole za pesme"
},
"name": "Prečice (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Sledeće",
"play-pause": "Pusti / Pauziraj",
"previous": "Prethodno"
},
"label": "Izaberi globalne prečice za upravljanje pesmama:",
"title": "Globalne prečice na tastaturi"
}
}
},
"skip-disliked-songs": {
"description": "Preskače pesme koje vam se nisu svidele",
"name": "Preskočite pesme koje vam se nisu svidele"
},
"skip-silences": {
"description": "Automatski preskočite delove pesama gde nema zvuka",
"name": "Preskoči tišine"
},
"sponsorblock": {
"description": "Automatski preskače delove pesama koji nisu muzika poput uvod/odjava ili delove muzičkih spotova u kojima nema muzike",
"name": "Blok sponzora"
},
"synced-lyrics": {
"description": "Obezbeđuje sinhronizovane lirike pesama, korišćenjem dobavljača poput LRClib.",
"errors": {
"fetch": "⚠️\tDošlo je do greške prilikom dobavljanja stihova pesme.\n\tMolimo vas da pokušate ponovo kasnije.",
"not-found": "⚠️ Tekst za ovu pesmu nije pronađen."
},
"menu": {
"default-text-string": {
"label": "Podrazumevani karakteri između tekstova pesama",
"tooltip": "Izaberi podrazumevane karaktere koji će biti korišćeni za razmake između tekstova pesama"
},
"line-effect": {
"label": "Efekat linije",
"submenu": {
"fancy": {
"label": "Kitnjast",
"tooltip": "Koristi velike (kao iz aplikacije) efekte na trenutnu liniju"
},
"focus": {
"label": "Fokus",
"tooltip": "Učini samo trenutnu liniju belom"
},
"offset": {
"label": "Pomeraj",
"tooltip": "Pomeraj na trenutnoj liniji"
},
"scale": {
"label": "Razmera",
"tooltip": "Promeni razmeru trenutne linije"
}
},
"tooltip": "Izaberi efekat koji će biti primenjen na trenutnoj liniji"
},
"precise-timing": {
"label": "Učini da tekst pesme bude savršeno usklađen",
"tooltip": "Izračunaj do milisekunde prikaz sledeće linije teksta (može malo uticati na učinak)"
},
"preferred-provider": {
"label": "Preferirani dobavljač",
"none": {
"label": "Nijedan",
"tooltip": "Bez preferiranog dobavljača"
},
"tooltip": "Izaberite podrazumevanog dobavljača kog ćete koristiti"
},
"romanization": {
"label": "Romanizuj tekstove pesama",
"tooltip": "Ako je tekst pesme na drugom jeziku, pokušaj da ga prikažeš u latiničnoj varijanti."
},
"show-lyrics-even-if-inexact": {
"label": "Prikaži tekst pesme čak iako nije tačan",
"tooltip": "Ako pesma nije pronađena, produžetak će pokušati ponovo sa novim upitom za pretragu.\nRezultat iz drugog pokušaja možda neće biti tačan."
},
"show-time-codes": {
"label": "Prikaži vremenske oznake",
"tooltip": "Prikaži vremenske oznake pored teksta pesme"
}
},
"name": "Sinhronizovani tekstovi pesama",
"refetch-btn": {
"fetching": "Dobavljanje...",
"normal": "Ponovo dobavi tekst pesme"
},
"warnings": {
"duration-mismatch": "⚠️ - Tekst pesme možda nije usklađen zbog neuklapanja u dužini trajanja.",
"inexact": "⚠️ - Tekst za ovu pesmu možda nije tačan",
"instrumental": "⚠️ - Ovo je instrumentalna pesma"
}
},
"taskbar-mediacontrol": {
"description": "Upravljaj reprodukcijom iz Windows trake sa zadacima",
"name": "Upravljanje medijima iz trake sa zadacima"
},
"touchbar": {
"description": "Dodaje dodatak dodirne trake za macOS korisnike",
"name": "Dodirna Traka"
},
"transparent-player": {
"description": "Čini prozor aplikacije transparentnim",
"menu": {
"opacity": {
"label": "Neprozirnost",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Tip",
"submenu": {
"acrylic": "Akrilan",
"mica": "Mika",
"none": "Nijedan",
"tabbed": "Kartice"
}
}
},
"name": "Transparentni plejer"
},
"tuna-obs": {
"description": "Integracija sa OBS-ovim Tuna dodatkom",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Onemogućava plejeru da iskače u toku pokretanja pesme",
"name": "Nenametljivi plejer"
},
"video-toggle": {
"description": "Dodaje dugme za promenu između režima za video/numeru. Opciono, može da ukloni celu karticu sa videom",
"menu": {
"align": {
"label": "Poravnanje",
"submenu": {
"left": "Levo",
"middle": "Sredina",
"right": "Desno"
}
},
"force-hide": "Nasilno ukloni karticu sa videom",
"mode": {
"label": "Režim",
"submenu": {
"custom": "Prilagođeno prebacivanje",
"disabled": "Onemogućeno",
"native": "Izvorno prebacivanje"
}
}
},
"name": "Video prebacivanje",
"templates": {
"button-song": "Pesma",
"button-video": "Video"
}
},
"visualizer": {
"description": "Dodaje vizualizaciju u plejer",
"menu": {
"visualizer-type": "Tip vizualizacije"
},
"name": "Vizualizacija"
}
}
}

View File

@ -1,51 +1,723 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Misslyckades med att köra tillägget {{pluginName}}::{{contextName}}",
"executed-at-ms": "Tillägget {{pluginName}}::{{contextName}} kördes på {{ms}}ms",
"initialize-failed": "Misslyckades med att initialisera tillägget \"{{pluginName}}\"",
"load-all": "Laddar alla tillägg",
"load-failed": "Misslyckades med att ladda tillägget \"{{pluginName}}\"",
"loaded": "Tillägget \"{{pluginName}}\" laddades in",
"unload-failed": "Kunde inte inaktivera {{pluginName}}-tillägget",
"unloaded": "{{pluginName}}-tillägget inaktiverat"
}
}
},
"language": {
"code": "sv",
"local-name": "Svenska",
"name": "Swedish"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Laddning slutförd. Utvecklarverktyg öppnad"
},
"i18n": {
"loaded": "i18n laddad"
},
"second-instance": {
"receive-command": "Mottog kommando via protokoll: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS-filen \"{{cssFile}}\" finns inte, ignorerar"
},
"unresponsive": {
"details": "Oresponsivt fel!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Rensar appens cache"
},
"window": {
"tried-to-render-offscreen": "Fönstret försökte rendera utanför skärmen, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menyn är dold, använd 'Alt' för att visa den (eller 'Escape' om du använder inbyggd meny)",
"message": "Dölj meny är aktiverad",
"title": "Dölj meny aktiverad"
},
"need-to-restart": {
"buttons": {
"later": "Senare",
"restart-now": "Starta om nu"
},
"detail": "\"{{pluginName}}\"-tillägget kräver en omstart för att träda i kraft",
"message": "\"{{pluginName}}\"-tillägget behöver startas om",
"title": "Omstart krävs"
},
"unresponsive": {
"buttons": {
"quit": "Avsluta",
"relaunch": "Starta om",
"wait": "Vänta"
},
"detail": "Vi beklagar besväret! Välj vad du vill göra:",
"message": "Programmet svarar inte",
"title": "Fönstret svarar inte"
},
"update-available": {
"buttons": {
"disable": "Stäng av uppdateringar",
"download": "Ladda ned",
"ok": "OK"
},
"detail": "En ny version är tillgänglig och kan laddas ned på {{downloadLink}}",
"message": "En ny version är tillgänglig",
"title": "Uppdatering tillgänglig"
}
},
"menu": {
"about": "Om",
"navigation": {
"label": "Navigering",
"submenu": {
"copy-current-url": "Kopiera nuvarande länk",
"go-back": "Gå tillbaka",
"go-forward": "Gå framåt",
"quit": "Avsluta",
"restart": "Starta om appen"
}
},
"options": {
"label": "Alternativ",
"submenu": {
"advanced-options": {
"label": "Avancerade alternativ",
"submenu": {
"auto-reset-app-cache": "Nollställ appcache när appen startar",
"disable-hardware-acceleration": "Stäng av hårdvaruacceleration",
"edit-config-json": "Redigera config.json",
"override-user-agent": "Ersätt User-Agent",
"restart-on-config-changes": "Starta om vid konfigurationsändringar",
"set-proxy": {
"label": "Ställ in proxy",
"prompt": {
"label": "Ange Proxy-adress: (lämna tomt för att inaktivera)",
"placeholder": "Exempel: SOCKS5://127.0.0.1:9999",
"title": "Ställ in proxy"
}
},
"toggle-dev-tools": "Utvecklarverktyg"
}
},
"always-on-top": "Alltid överst",
"auto-update": "Uppdatera automatiskt",
"hide-menu": {
"dialog": {
"message": "Menyn kommer att döljas efter omstart, använd [Alt] för att visa menyn (eller [`] vid användning av menyn inuti applikationen)",
"title": "Dölj meny aktiverad"
},
"label": "Dölj meny"
},
"language": {
"dialog": {
"message": "Språket ändras efter omstart",
"title": "Språket har ändrats"
},
"label": "Språk",
"submenu": {
"to-help-translate": "Vill du hjälpa till att översätta? Klicka här"
}
},
"resume-on-start": "Fortsätt spela när appen öppnas",
"single-instance-lock": "Lås enskild instans",
"start-at-login": "Starta vid inloggning",
"starting-page": {
"label": "Startsidа",
"unset": "Ej inställt"
},
"tray": {
"label": "Systemfält",
"submenu": {
"disabled": "Inaktiverad",
"enabled-and-hide-app": "Aktiverad och dölj app",
"enabled-and-show-app": "Aktiverad och visa app",
"play-pause-on-click": "Spela/Pausa vid klick"
}
},
"visual-tweaks": {
"label": "Visuella justeringar",
"submenu": {
"custom-window-title": {
"label": "Anpassad titel på fönstret",
"prompt": {
"label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)",
"placeholder": "Exempelvis: YouTube Music"
}
},
"like-buttons": {
"default": "Standard",
"force-show": "Tvinga fram visning",
"hide": "Dölj",
"label": "Gilla-knappar"
},
"remove-upgrade-button": "Ta bort knappen för uppgradering",
"theme": {
"dialog": {
"button": {
"cancel": "Avbryt",
"remove": "Ta bort"
},
"remove-theme": "Vill du verkligen radera det anpassade temat?",
"remove-theme-message": "Det här raderar ditt anpassade tema"
},
"label": "Tema",
"submenu": {
"import-css-file": "Importera anpassad CSS-fil",
"no-theme": "Inget tema"
}
}
}
}
}
},
"plugins": {
"enabled": "Aktiverad",
"label": "Tillägg",
"new": "NY"
},
"view": {
"label": "Visa",
"submenu": {
"force-reload": "Tvinga omladdning",
"reload": "Ladda om",
"reset-zoom": "Verklig storlek",
"toggle-fullscreen": "Växla helskärm",
"zoom-in": "Zooma in",
"zoom-out": "Zooma ut"
}
}
},
"tray": {
"next": "Nästa",
"play-pause": "Spela/Pausa",
"previous": "Föregående",
"quit": "Stäng",
"restart": "Starta om appen",
"show": "Visa fönster",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "Om en annons spelas, tystas ljudet och uppspelningshastigheten sätts till 16×",
"name": "Snabba upp annonser"
},
"adblocker": {
"description": "Blockerar annonser och spårning automatiskt",
"menu": {
"blocker": "Blockerare"
},
"name": "Annonsblockerare"
},
"album-actions": {
"description": "Lägger till knappar för Undislike, Dislike, Like och Unlike för att använda detta på alla spår i en spellista eller ett album",
"name": "Albumåtgärder"
},
"album-color-theme": {
"description": "Använder ett dynamiskt tema och visuella effekter baserat på albumets färgpalett",
"menu": {
"color-mix-ratio": {
"label": "Färgblandningsförhållande",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "Albumfärgtema"
},
"ambient-mode": {
"description": "Ger en ljuseffekt genom att försiktigt kasta färger från videon på skärmens bakgrund",
"menu": {
"blur-amount": {
"label": "Oskärpa",
"submenu": {
"pixels": "{{blurAmount}} pixlar"
}
},
"buffer": {
"label": "Buffert",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Opacitet",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kvalitet",
"submenu": {
"pixels": "{{quality}} pixlar"
}
},
"size": {
"label": "Storlek",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Mjuk övergång",
"submenu": {
"during": "Under {{interpolationTime}} s"
}
},
"use-fullscreen": {
"label": "Använder helskärm"
}
},
"name": "Ambiensläge"
},
"amuse": {
"description": "Lägger till stöd för YouTube Music i Amuse Now Playing-widgeten av 6K Labs",
"name": "Amuse",
"response": {
"query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt."
}
},
"api-server": {
"description": "Lägger till en API-server för att styra spelaren",
"dialog": {
"request": {
"buttons": {
"allow": "Tillåt",
"deny": "Avvisa"
},
"message": "Tillåt {{ID}} ({{origin}}) att få åtkomst till API:et?",
"title": "Förfrågan om API-åtkomst"
}
},
"menu": {
"auth-strategy": {
"label": "Metod för åtkomstkontroll",
"submenu": {
"auth-at-first": {
"label": "Ge åtkomst vid första begäran"
},
"none": {
"label": "Ingen åtkomstkontroll"
}
}
},
"hostname": {
"label": "Värdnamn"
},
"port": {
"label": "Port"
}
},
"name": "API-server [Beta]",
"prompt": {
"hostname": {
"label": "Ange värdnamnet (t.ex. 0.0.0.0) för API-servern:",
"title": "Värdnamn"
},
"port": {
"label": "Ange porten för API-servern:",
"title": "Port"
}
}
},
"audio-compressor": {
"description": "Applicera komprimering på ljudet (sänker volymen på de starkaste delarna av signalen och höjer volymen på de svagaste delarna)",
"name": "Ljudkompressor"
},
"auth-proxy-adapter": {
"description": "Stöd för användning av autentiseringsproxy-tjänster",
"menu": {
"disable": "Inaktivera proxy-adapter",
"enable": "Aktivera proxy-adapter",
"hostname": {
"label": "Värdnamn"
},
"port": {
"label": "Port"
}
},
"name": "Adapter För Autentiseringsproxy",
"prompt": {
"hostname": {
"label": "Ange värdnamn för lokal proxyserver (kräver omstart):",
"title": "Proxy-värdnamn"
},
"port": {
"label": "Ange port för lokal proxyserver (kräver omstart):",
"title": "Port för proxy"
}
}
},
"blur-nav-bar": {
"description": "Gör navigeringsfältet transparent och suddigt",
"name": "Suddigt Navigeringsfält"
},
"bypass-age-restrictions": {
"description": "Hoppa över YouTubes åldersverifiering",
"name": "Hoppa Över Åldersbegränsningar"
},
"captions-selector": {
"description": "Välj textning för YouTube Music-ljudspår",
"menu": {
"autoload": "Välj automatiskt senast använda textning",
"disable-captions": "Ingen textning som standard"
},
"name": "Textväljare",
"prompt": {
"selector": {
"label": "Aktuellt textningsspråk: {{language}}",
"none": "Inget",
"title": "Välj textspråk"
}
},
"templates": {
"title": "Öppna textväljaren"
},
"toast": {
"caption-changed": "Textning ändrad till {{language}}",
"caption-disabled": "Textning inaktiverad",
"no-captions": "Inga undertexter tillgängliga för denna låt"
}
},
"compact-sidebar": {
"description": "Sätt alltid sidomenyn i kompakt läge",
"name": "Kompakt Sidomeny"
},
"crossfade": {
"description": "Mjuk övergång mellan låtar",
"menu": {
"advanced": "Avancerat"
},
"name": "Mjuk Övergång [Beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Fade-in-varaktighet (ms)",
"fade-out-duration": "Fade-out-varaktighet (ms)",
"fade-scaling": {
"label": "Fade-skalning",
"linear": "Linjär",
"logarithmic": "Logaritmisk"
},
"seconds-before-end": "Övergång i sekunder före slutet"
},
"title": "Övergångsinställningar"
}
}
},
"custom-output-device": {
"description": "Konfigurera en anpassad utdataenhet för låtar",
"menu": {
"device-selector": "Välj enhet"
},
"name": "Anpassad Utdataenhet",
"prompt": {
"device-selector": {
"label": "Välj den utdataenhet som ska användas",
"title": "Välj utdataenhet"
}
}
},
"disable-autoplay": {
"description": "Starta låt i \"pausat\" läge",
"menu": {
"apply-once": "Gäller endast vid uppstart"
},
"name": "Inaktivera Automatisk Uppspelning"
},
"discord": {
"backend": {
"already-connected": "Försökte ansluta med aktiv anslutning",
"connected": "Ansluten till Discord",
"disconnected": "Frånkopplad från Discord"
},
"description": "Visa dina vänner vad du lyssnar på med Aktivitetsdelning",
"menu": {
"auto-reconnect": "Automatisk återanslutning",
"clear-activity": "Rensa aktivitet",
"clear-activity-after-timeout": "Rensa aktivitet efter tidsgräns",
"connected": "Ansluten",
"disconnected": "Frånkopplad",
"hide-duration-left": "Dölj återstående tid",
"hide-github-button": "Dölj knapp för GitHub-länk",
"play-on-youtube-music": "Spela på YouTube Music",
"set-inactivity-timeout": "Ställ in inaktivitetstid",
"set-status-display-type": {
"label": "Statusmeddelande",
"submenu": {
"artist": "Lyssnar på {artist}",
"title": "Lyssnar på {song title}",
"youtube-music": "Lyssnar på YouTube Music"
}
}
},
"name": "Discord Aktivitetsdelning",
"prompt": {
"set-inactivity-timeout": {
"label": "Ange inaktivitetstid i sekunder:",
"title": "Ställ in inaktivitetstid"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Hoppsan! Nedladdningen misslyckades…",
"title": "Fel vid nedladdning!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{playlistSize}} låtar)",
"message": "Laddar ner {{playlistTitle}}-spellistan",
"title": "Nedladdning påbörjad"
}
},
"feedback": {
"conversion-progress": "Konvertering: {{percent}}%",
"converting": "Konverterar…",
"done": "Klart: {{filePath}}",
"download-info": "Laddar ner {{artist}} - {{title}} [{{videoId}}",
"download-progress": "Nedladdning: {{percent}}%",
"downloading": "Laddar ner…",
"downloading-counter": "Laddar ner {{current}}/{{total}}…",
"downloading-playlist": "Laddar ner {{playlistTitle}}-spellistan — {{playlistSize}} spår ({{playlistId}})",
"error-while-downloading": "Fel vid nedladdning \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Mappen {{playlistFolder}} finns redan",
"getting-playlist-info": "Hämtar information om spellista…",
"loading": "Laddar…",
"playlist-has-only-one-song": "Spellistan innehåller bara ett objekt. Laddar ner direkt.",
"playlist-id-not-found": "Hittade inget ID för spellista",
"playlist-is-empty": "Spellistan är tom",
"playlist-is-mix-or-private": "Fel vid hämtning av spellisteinformation. Se till att den inte är privat eller en 'Mixed for you'-spellista\n\n{{error}}",
"preparing-file": "Förbereder fil…",
"saving": "Sparar…",
"trying-to-get-playlist-id": "Försöker hämta spelliste-ID: {{playlistId}}",
"video-id-not-found": "Videon hittades inte",
"writing-id3": "Skriver ID3-taggar…"
}
},
"description": "Laddar ner MP3 / originalljud direkt från gränssnittet",
"menu": {
"choose-download-folder": "Välj nedladdningsmapp",
"download-finish-settings": {
"label": "Ladda ner när klart",
"prompt": {
"last-percent": "Efter x procent",
"last-seconds": "Senaste x sekunderna",
"title": "Ställ in när nedladdning ska ske"
},
"submenu": {
"advanced": "Avancerat",
"enabled": "Aktiverad",
"mode": "Tidsläge",
"percent": "Procent",
"seconds": "Sekunder"
}
},
"download-playlist": "Ladda ner spellista",
"presets": "Förinställningar",
"skip-existing": "Hoppa över befintliga filer"
},
"name": "Nedladdare",
"renderer": {
"can-not-update-progress": "Kan inte uppdatera förlopp"
},
"templates": {
"button": "Ladda ner"
}
},
"equalizer": {
"description": "Lägger till en equalizer i spelaren",
"menu": {
"presets": {
"label": "Förinställningar",
"list": {
"bass-booster": "Basförstärkning"
}
}
},
"name": "Equalizer"
},
"exponential-volume": {
"description": "Gör volymreglaget exponentiellt så att det blir lättare att välja lägre volymer.",
"name": "Exponentiell Volym"
},
"in-app-menu": {
"description": "Ger menyrader ett snyggt, mörkt, eller albumfärgat utseende",
"menu": {
"hide-dom-window-controls": "Dölj DOM-fönsterkontroller"
},
"name": "Meny I Appen"
},
"lumiastream": {
"description": "Lägger till stöd för Lumia Stream",
"name": "Lumia Stream [Beta]"
},
"lyrics-genius": {
"description": "Lägger till stöd för texter till de flesta låtar",
"menu": {
"romanized-lyrics": "Romiserade texter"
},
"name": "Texter från Genius",
"renderer": {
"fetched-lyrics": "Hämtade texter från Genius"
}
},
"music-together": {
"description": "Dela en spellista med andra. När värden spelar en låt kommer alla andra höra samma låt",
"dialog": {
"enter-host": "Ange värd-ID"
},
"internal": {
"save": "Spara",
"track-source": "Ljudkälla",
"unknown-user": "Okänd användare"
},
"menu": {
"click-to-copy-id": "Kopiera värd-ID",
"close": "Stäng \"Music Together\"",
"connected-users": "Anslutna användare",
"disconnect": "Koppla från \"Music Together\"",
"empty-user": "Inga anslutna användare",
"host": "Värd för \"Music Together\"",
"join": "Gå med i \"Music Together\"",
"permission": {
"all": "Tillåt gäster att styra spellista och spelare",
"host-only": "Endast värden kan styra spellista och spelare",
"playlist": "Tillåt gäster att styra spellistan"
},
"set-permission": "Ändra behörighet för styrning",
"status": {
"disconnected": "Frånkopplad",
"guest": "Ansluten som gäst",
"host": "Ansluten som värd"
}
},
"name": "Music Together [Beta]",
"toast": {
"add-song-failed": "Misslyckades med att lägga till låt",
"closed": "\"Music Together\" stängdes",
"disconnected": "\"Music Together\" frånkopplad",
"host-failed": "Misslyckades med att vara värd för \"Music Together\"",
"id-copied": "Värd-ID kopierat till urklipp",
"id-copy-failed": "Misslyckades med att kopiera värd-ID till urklipp",
"join-failed": "Misslyckades med att gå med i \"Music Together\"",
"joined": "Gick med i \"Music Together\"",
"permission-changed": "Behörighet för \"Music Together\" ändrad till \"{{permission}}\"",
"remove-song-failed": "Misslyckades med att radera låt",
"user-connected": "{{name}} gick med i \"Music Together\"",
"user-disconnected": "{{name}} lämnade \"Music Together\""
}
},
"navigation": {
"name": "Navigering"
"description": "Direkt integrering av Nästa-/Tillbaka-navigeringspilar i gränssnittet, som i din favoritwebbläsare",
"name": "Navigering",
"templates": {
"back": {
"title": "Gå till föregående sida"
},
"forward": {
"title": "Gå till nästa sida"
}
}
},
"no-google-login": {
"name": "Inget Google Login"
"description": "Ta bort Google-inloggningsknappar och länkar från gränssnittet",
"name": "Ingen Google-inloggning"
},
"notifications": {
"description": "Visa en notis när en låt börjar spelas (interaktiva notiser finns på Windows)",
"menu": {
"interactive": "Interaktiva notiser",
"interactive-settings": {
"label": "Interaktiva inställningar",
"submenu": {
"hide-button-text": "Dölj knapptext",
"refresh-on-play-pause": "Uppdatera vid Play/Pause",
"tray-controls": "Öppna/stäng vid klick i systemfältet"
}
},
"priority": "Notisprioritet",
"toast-style": "Stil för \"toast\"-notiser",
"unpause-notification": "Visa notis när uppspelning återupptas"
},
"name": "Notiser"
},
"performance-improvement": {
"description": "Förbättra prestanda genom att aktivera experimentella skript",
"name": "Prestandaförbättring [Beta]"
},
"picture-in-picture": {
"description": "Tillåter appen att växla till bild-i-bild-läge",
"menu": {
"always-on-top": "Alltid överst",
"hotkey": {
"label": "Snabbkommando",
"prompt": {
"keybind-options": {
"hotkey": "Snabbkommando"
},
"label": "Välj ett snabbkommando för att växla bild-i-bild-läge",
"title": "Bild-I-Bild genväg"
}
}
},
"save-window-position": "Spara fönsterposition",
"save-window-size": "Spara fönsterstorlek",
"use-native-pip": "Använd webbläsarens inbyggda bild-i-bild"
},
"name": "Bild-I-Bild",
"name": "Bild-i-bild",
"templates": {
"button": "Bild-i-bild"
}
},
"playback-speed": {
"description": "Lägger till ett reglage för att ändra uppspelningshastighet",
"name": "Uppspelningshastighet",
"templates": {
"button": "Hasighet"
"button": "Hastighet"
}
},
"precise-volume": {
"description": "Styr ljudstyrkan exakt med mushjul/snabbtangenter, med anpassat skärmlager och justerbara volymsteg",
"menu": {
"arrows-shortcuts": "Kontroller för lokala piltangenter",
"custom-volume-steps": "Ställ in egna volymsteg",
"global-shortcuts": "Globala snabbkommandon"
},
"name": "Noggrann Volymkontroll",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Minska Volym",
"increase": "Öka Volym"
}
"decrease": "Sänk volymen",
"increase": "Öka volymen"
},
"label": "Välj globala kortkommandon för volym:",
"title": "Globala kortkommandon för volym"
},
"volume-steps": {
"label": "Välj volymsteg för ökning/minskning",
"title": "Volymsteg"
}
}
@ -54,54 +726,225 @@
"backend": {
"dialog": {
"quality-changer": {
"detail": "Nuvarande kvalité: {{quality}}",
"message": "Välj Video Kvalité:",
"title": "Välj Video Kvalité"
"detail": "Nuvarande kvalitet: {{quality}}",
"message": "Välj videokvalitet:",
"title": "Välj videokvalitet"
}
}
},
"description": "Tillåter att ändra videokvalitet med en knapp i videons overlay",
"name": "Videokvalitetsväxlare",
"renderer": {
"quality-settings-button": {
"label": "Öppna kvalitetsväxlare för spelaren"
}
}
},
"scrobbler": {
"description": "Lägg till scrobbling-stöd (t.ex. last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Misslyckades att autentisera med Last.fm\nDölj popup-fönstret till nästa omstart.",
"title": "Autentisering misslyckades"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Last.fm API-inställningar"
},
"listenbrainz": {
"token": "Ange ListenBrainz användartoken"
},
"scrobble-alternative-artist": "Använd alternativa artister",
"scrobble-alternative-title": "Använd alternativa titlar",
"scrobble-other-media": "Scrobbla annan media"
},
"name": "Scrobbler",
"prompt": {
"lastfm": {
"api-key": "Last.fm API nyckel"
"api-key": "Last.fm API nyckel",
"api-secret": "Last.fm API-hemlighet"
},
"listenbrainz": {
"token": {
"label": "Ange din ListenBrainz användartoken:",
"title": "ListenBrainz token"
}
}
}
},
"shortcuts": {
"description": "Tillåter inställning av globala kortkommandon för uppspelning (spela/pausa/nästa/föregående) och inaktiverar medie-OSD genom att åsidosätta medietangenter. Aktiverar Ctrl/CMD + F för sökning. Aktiverar Linux MPRIS-stöd för medietangenter och anpassade kortkommandon för avancerade användare",
"menu": {
"override-media-keys": "Åsidosätt medietangenter",
"set-keybinds": "Ställ in globala kontroller för låtar"
},
"name": "Genvägar (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Nästa",
"play-pause": "Spela / Pausa",
"previous": "Föregående"
}
},
"label": "Välj globala kortkommandon för kontroll av låtar:",
"title": "Globala kortkommandon"
}
}
},
"skip-disliked-songs": {
"description": "Hoppar över låtar du inte gillar",
"name": "Hoppa Över Låtar Du Inte Gillar"
},
"skip-silences": {
"description": "Hoppa automatiskt över tysta partier i låtar",
"name": "Hoppa Över Tysta Partier"
},
"sponsorblock": {
"description": "Hoppar automatiskt över icke-musikdelar som intro/outro eller delar av musikvideor där ingen musik spelas",
"name": "Blockera Sponsorer"
},
"synced-lyrics": {
"description": "Visar synkroniserade låttexter med hjälp av tjänster som LRClib.",
"errors": {
"fetch": "⚠️ Ett fel uppstod när texterna skulle hämtas.\n\tFörsök igen senare.",
"not-found": "⚠️ Inga texter hittades för denna låt."
},
"menu": {
"default-text-string": {
"label": "Standardtecken mellan låttexter",
"tooltip": "Välj standardtecken att använda för mellanrummet mellan låttexter"
},
"line-effect": {
"label": "Linjeeffekt",
"submenu": {
"fancy": {
"label": "Stiligt",
"tooltip": "Använd stora, app-liknande effekter på den aktuella raden"
},
"focus": {
"label": "Fokus",
"tooltip": "Gör endast den aktuella raden vit"
},
"offset": {
"label": "Förskjutning",
"tooltip": "Förskjut den aktuella raden åt höger"
},
"scale": {
"label": "Skala",
"tooltip": "Skala den aktuella raden"
}
},
"tooltip": "Välj effekt att applicera på den aktuella raden"
},
"precise-timing": {
"label": "Gör låttexterna perfekt synkroniserade",
"tooltip": "Beräkna till millisekunden när nästa rad ska visas (kan ha en liten inverkan på prestanda)"
},
"preferred-provider": {
"label": "Föredragen leverantör",
"none": {
"label": "Ingen",
"tooltip": "Ingen föredragen leverantör"
},
"tooltip": "Välj standardleverantör att använda"
},
"romanization": {
"label": "Romanisera låttexter",
"tooltip": "Om låttexterna är på ett annat språk, försök visa en latinsk version."
},
"show-lyrics-even-if-inexact": {
"label": "Visa låttexter även om de inte är exakta",
"tooltip": "Om låten inte hittas försöker tillägget igen med en annan sökförfrågan.\nResultatet från det andra försöket kanske inte är exakt."
},
"show-time-codes": {
"label": "Visa tidskoder",
"tooltip": "Visa tidskoderna bredvid låttexterna"
}
},
"name": "Synkroniserade Låttexter",
"refetch-btn": {
"fetching": "Hämtar...",
"normal": "Hämta låttexter igen"
},
"warnings": {
"duration-mismatch": "⚠️ - Texterna kan vara osynkroniserade på grund av en skillnad i spårlängd.",
"inexact": "⚠️ - Låttexterna för den här låten kanske inte är exakta",
"instrumental": "⚠️ - Det här är en instrumentallåt"
}
},
"taskbar-mediacontrol": {
"description": "Kontrollera uppspelning från aktivitetsfältet i Windows",
"name": "Mediakontroll i aktivitetsfältet"
},
"touchbar": {
"description": "Lägger till en TouchBar-widget för macOS-användare",
"name": "TouchBar"
},
"transparent-player": {
"description": "Gör appfönstret genomskinligt",
"menu": {
"opacity": {
"label": "Opacitet",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Typ",
"submenu": {
"acrylic": "Akryl",
"mica": "Mica",
"none": "Ingen",
"tabbed": "Flikad"
}
}
},
"name": "Genomskinlig Spelare"
},
"tuna-obs": {
"description": "Integration med OBS-pluginprogrammet Tuna",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Undviker att spelaren visas när musik spelas",
"name": "Diskret Spelare"
},
"video-toggle": {
"description": "Lägger till en knapp för att växla mellan video/musik-läge. Kan också valfritt ta bort hela videofliken",
"menu": {
"align": {
"label": "Justering",
"submenu": {
"left": "Vänster",
"middle": "Mitten",
"right": "Höger"
}
},
"force-hide": "Tvinga borttagning av videoflik",
"mode": {
"label": "Läge",
"submenu": {
"disabled": "Inaktiverad"
"custom": "Anpassad växling",
"disabled": "Inaktiverad",
"native": "Inbyggd växling"
}
}
},
"name": "Video PÅ/AV",
"templates": {
"button": "Låt"
"button-song": "Låt",
"button-video": "Video"
}
},
"visualizer": {
"description": "Lägger till en visualisering i spelaren",
"menu": {
"visualizer-type": "Visualiseringstyp"
},
"name": "Visualiserare"
}
}
}

899
src/i18n/resources/ta.json Normal file
View File

@ -0,0 +1,899 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "சொருகி செயல்படுத்துவதில் தோல்வி {{pluginName}} :: {{contextName}}",
"executed-at-ms": "சொருகி {{pluginName}} :: {{contextName}} {{ms}} ms இல் செயல்படுத்தப்படுகிறது",
"initialize-failed": "சொருகி தொடங்குவதில் தோல்வி \"{{pluginName}}\"",
"load-all": "அனைத்து செருகுநிரல்களையும் ஏற்றுகிறது",
"load-failed": "சொருகி ஏற்றுவதில் தோல்வி \"{{pluginName}}\"",
"loaded": "சொருகி \"{{pluginName}}\" ஏற்றப்பட்டது",
"unload-failed": "சொருகி \"{{pluginName}}\"",
"unloaded": "சொருகி \"{{pluginName}}\" இறக்கப்பட்டது"
}
}
},
"language": {
"code": "ta",
"local-name": "தமிழ்",
"name": "Tamil"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "ஏற்றுதல் முடிந்தது. டெவ்டூல்ச் திறக்கப்பட்டது"
},
"i18n": {
"loaded": "ப18ல் ஏற்றப்பட்டது"
},
"second-instance": {
"receive-command": "நெறிமுறை மீது கட்டளை பெறப்பட்டது: \"{{command}}\""
},
"theme": {
"css-file-not-found": "சிஎச்எச் கோப்பு \"{{cssFile}}\" புறக்கணிக்கிறது"
},
"unresponsive": {
"details": "பதிலளிக்காத பிழை!\n {{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "பயன்பாட்டு தற்காலிக சேமிப்பை அழித்தல்"
},
"window": {
"tried-to-render-offscreen": "சாளரம் ஆஃப்ச்கிரீன், சாளரங்கள் = {{windowSize}}, டிச்ப்ளேச்ச் = {{displaySize}}, நிலை = {{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "பட்டியல் மறைக்கப்பட்டுள்ளது, அதைக் காட்ட 'ஆல்ட்' ஐப் பயன்படுத்தவும் (அல்லது பயன்பாட்டில் மெனுவைப் பயன்படுத்தினால் 'தப்பிக்க')",
"message": "மறை பட்டியல் இயக்கப்பட்டது",
"title": "பட்டியல் இயக்கப்பட்டது"
},
"need-to-restart": {
"buttons": {
"later": "பின்னர்",
"restart-now": "இப்போது மறுதொடக்கம் செய்யுங்கள்"
},
"detail": "\"{{pluginName}}\" சொருகி நடைமுறைக்கு மறுதொடக்கம் தேவை",
"message": "\"{{pluginName}}\" மறுதொடக்கம் செய்ய வேண்டும்",
"title": "மறுதொடக்கம் தேவை"
},
"unresponsive": {
"buttons": {
"quit": "வெளியேறு",
"relaunch": "மீண்டும் தொடங்கவும்",
"wait": "காத்திருங்கள்"
},
"detail": "சிரமத்திற்கு வருந்துகிறோம்! என்ன செய்ய வேண்டும் என்பதைத் தேர்வுசெய்க:",
"message": "பயன்பாடு பதிலளிக்கவில்லை",
"title": "சாளரம் பதிலளிக்கவில்லை"
},
"update-available": {
"buttons": {
"disable": "புதுப்பிப்புகளை முடக்கு",
"download": "பதிவிறக்கம்",
"ok": "சரி"
},
"detail": "ஒரு புதிய பதிப்பு கிடைக்கிறது மற்றும் {{downloadLink}} இல் பதிவிறக்கம் செய்யலாம்",
"message": "புதிய பதிப்பு கிடைக்கிறது",
"title": "புதுப்பிப்பு கிடைக்கிறது"
}
},
"menu": {
"about": "பற்றி",
"navigation": {
"label": "வானோடல்",
"submenu": {
"copy-current-url": "தற்போதைய முகவரி ஐ நகலெடுக்கவும்",
"go-back": "திரும்பிச் செல்லுங்கள்",
"go-forward": "முன்னோக்கிச் செல்லுங்கள்",
"quit": "வெளியேறு",
"restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்"
}
},
"options": {
"label": "விருப்பங்கள்",
"submenu": {
"advanced-options": {
"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": "டெவ்டூல்சை மாற்றவும்"
}
},
"always-on-top": "எப்போதும் மேலே",
"auto-update": "ஆட்டோ புதுப்பிப்பு",
"hide-menu": {
"dialog": {
"message": "அடுத்த துவக்கத்தில் பட்டியல் மறைக்கப்படும், அதைக் காட்ட [Alt] ஐப் பயன்படுத்தவும் (அல்லது App-menu ஐப் பயன்படுத்தினால் [அல்லது பின்னணி [`])",
"title": "பட்டியல் இயக்கப்பட்டது"
},
"label": "மெனுவை மறைக்கவும்"
},
"language": {
"dialog": {
"message": "மறுதொடக்கம் செய்த பிறகு மொழி மாற்றப்படும்",
"title": "மொழி மாற்றப்பட்டது"
},
"label": "மொழி",
"submenu": {
"to-help-translate": "மொழிபெயர்க்க உதவ வேண்டுமா? இங்கே சொடுக்கு செய்க"
}
},
"resume-on-start": "பயன்பாடு தொடங்கும் போது கடைசி பாடலை மீண்டும் தொடங்குங்கள்",
"single-instance-lock": "ஒற்றை நிகழ்வு பூட்டு",
"start-at-login": "உள்நுழைவில் தொடங்கவும்",
"starting-page": {
"label": "தொடக்க பக்கம்",
"unset": "அமைக்கப்படாதது"
},
"tray": {
"label": "தட்டு",
"submenu": {
"disabled": "முடக்கப்பட்டது",
"enabled-and-hide-app": "இயக்கப்பட்ட மற்றும் பயன்பாட்டை மறைக்கவும்",
"enabled-and-show-app": "இயக்கப்பட்டது மற்றும் பயன்பாட்டைக் காட்டு",
"play-pause-on-click": "சொடுக்கு செய்யவும்/இடைநிறுத்தவும்"
}
},
"visual-tweaks": {
"label": "காட்சி மாற்றங்கள்",
"submenu": {
"custom-window-title": {
"label": "தனிப்பயன் சாளர தலைப்பு",
"prompt": {
"label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)",
"placeholder": "எடுத்துக்காட்டு: YouTube இசை"
}
},
"like-buttons": {
"default": "இயல்புநிலை",
"force-show": "படை நிகழ்ச்சி",
"hide": "மறை",
"label": "பொத்தான்கள் போன்றவை"
},
"remove-upgrade-button": "மேம்படுத்தல் பொத்தானை அகற்று",
"theme": {
"dialog": {
"button": {
"cancel": "ரத்துசெய்",
"remove": "அகற்று"
},
"remove-theme": "தனிப்பயன் கருப்பொருளை அகற்ற விரும்புகிறீர்களா?",
"remove-theme-message": "இது தனிப்பயன் கருப்பொருளை அகற்றும்"
},
"label": "கருப்பொருள்",
"submenu": {
"import-css-file": "தனிப்பயன் சிஎச்எச் கோப்பை இறக்குமதி செய்க",
"no-theme": "கருப்பொருள் இல்லை"
}
}
}
}
}
},
"plugins": {
"enabled": "இயக்கப்பட்டது",
"label": "செருகுநிரல்கள்",
"new": "புதிய"
},
"view": {
"label": "பார்வை",
"submenu": {
"force-reload": "படை மறுஏற்றம்",
"reload": "ஏற்றவும்",
"reset-zoom": "உண்மையான அளவு",
"toggle-fullscreen": "முழுத் திரையை மாற்றவும்",
"zoom-in": "பெரிதாக்கு",
"zoom-out": "சிறிதாக்கு"
}
}
},
"tray": {
"next": "அடுத்தது",
"play-pause": "விளையாடு/இடைநிறுத்தம்",
"previous": "முந்தைய",
"quit": "வெளியேறு",
"restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்",
"show": "சாளரத்தைக் காட்டு",
"tooltip": {
"default": "யூடியூப் இசை",
"with-song-info": "YouTube இசை: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "ஒரு விளம்பரம் விளையாடினால் அது ஆடியோவை முடக்குகிறது மற்றும் பின்னணி வேகத்தை 16x ஆக அமைக்கிறது",
"name": "விளம்பர விரைவு"
},
"adblocker": {
"description": "எல்லா விளம்பரங்களையும் தடுத்து பெட்டியிலிருந்து கண்காணிக்கவும்",
"menu": {
"blocker": "தடுப்பான்"
},
"name": "விளம்பர தடுப்பான்"
},
"album-actions": {
"description": "பிளேலிச்ட் அல்லது ஆல்பத்தில் உள்ள அனைத்து பாடல்களுக்கும் இதைப் பயன்படுத்த பொத்தான்கள் போன்றவற்றைச் சேர்க்கவும், விரும்பாதது, போன்றவை, மற்றும் பொத்தான்களைப் போலல்லாமல் சேர்க்கவும்",
"name": "ஆல்பம் செயல்கள்"
},
"album-color-theme": {
"description": "வண்ணத் தட்டு ஆல்பத்தின் அடிப்படையில் மாறும் கருப்பொருள் மற்றும் காட்சி விளைவுகளைப் பயன்படுத்துகிறது",
"menu": {
"color-mix-ratio": {
"label": "வண்ண கலவை விகிதம்",
"submenu": {
"percent": "{{ratio}}%"
}
}
},
"name": "ஆல்பம் வண்ண கருப்பொருள்"
},
"ambient-mode": {
"description": "வீடியோவிலிருந்து மென்மையான வண்ணங்களை உங்கள் திரையின் பின்னணியில் போடுவதன் மூலம் லைட்டிங் விளைவைப் பயன்படுத்துகிறது",
"menu": {
"blur-amount": {
"label": "மங்கலான தொகை",
"submenu": {
"pixels": "{{blurAmount}} படப்புள்ளிகள்"
}
},
"buffer": {
"label": "இடையக",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "ஒளிபுகாநிலை",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "தகுதி",
"submenu": {
"pixels": "{{quality}} படப்புள்ளிகள்"
}
},
"size": {
"label": "அளவு",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "மென்மையான மாற்றம்",
"submenu": {
"during": "{{interpolationTime}} s இன் போது"
}
},
"use-fullscreen": {
"label": "முழுத்திரை பயன்படுத்துதல்"
}
},
"name": "சுற்றுப்புற முறை"
},
"amuse": {
"description": "6K ஆய்வகங்களால் இப்போது விட்செட்டில் விளையாடும் Amuse க்கு YouTube இசை ஆதரவை சேர்க்கிறது",
"name": "பொழுதுபோக்கு",
"response": {
"query": "பநிஇ சேவையகம் இயங்குகிறது. பாடல் தகவலைப் பெற /வினவல்."
}
},
"api-server": {
"description": "பிளேயரைக் கட்டுப்படுத்த பநிஇ சேவையகத்தைச் சேர்க்கிறது",
"dialog": {
"request": {
"buttons": {
"allow": "இசைவு",
"deny": "மறுக்கவும்"
},
"message": "பநிஇ ஐ அணுக {{ID}} ({{origin}}) அனுமதிக்கவா?",
"title": "பநிஇ அங்கீகார கோரிக்கை"
}
},
"menu": {
"auth-strategy": {
"label": "அங்கீகார உத்தி",
"submenu": {
"auth-at-first": {
"label": "முதல் கோரிக்கையின் பேரில் ஏற்பு"
},
"none": {
"label": "ஏற்பு இல்லை"
}
}
},
"hostname": {
"label": "புரவலன்பெயர்"
},
"port": {
"label": "துறைமுகம்"
}
},
"name": "பநிஇ சேவையகம் [பீட்டா]",
"prompt": {
"hostname": {
"label": "பநிஇ சேவையகத்திற்கு ஓச்ட்பெயரை (0.0.0.0 போன்றவை) உள்ளிடவும்:",
"title": "புரவலன்பெயர்"
},
"port": {
"label": "பநிஇ சேவையகத்திற்கான துறைமுகத்தை உள்ளிடவும்:",
"title": "துறைமுகம்"
}
}
},
"audio-compressor": {
"description": "ஆடியோவுக்கு சுருக்கத்தைப் பயன்படுத்துங்கள் (சமிக்ஞையின் உரத்த பகுதிகளின் அளவைக் குறைத்து, மென்மையான பகுதிகளின் அளவை உயர்த்துகிறது)",
"name": "ஆடியோ அமுக்கி"
},
"auth-proxy-adapter": {
"description": "அங்கீகார ப்ராக்ஸி சேவைகளைப் பயன்படுத்துவதற்கான ஆதரவு",
"menu": {
"disable": "ப்ராக்ஸி அடாப்டரைத் துண்டிக்கவும்",
"enable": "ப்ராக்ஸி அடாப்டரை இயக்கு",
"hostname": {
"label": "ஹோஸ்ட் பெயர்"
},
"port": {
"label": "port"
}
},
"name": "அங்கீகார பதிலாள் அடாப்டர்",
"prompt": {
"hostname": {
"label": "ப்ராக்ஸி சர்வருக்கான ஹோஸ்ட் பெயரை உள்ளிடவும் (மறுதொடக்கம் தேவை):",
"title": "ப்ராக்ஸி ஹோஸ்ட்பெயர்"
},
"port": {
"label": "ப்ராக்ஸி சர்வருக்கான போர்ட்டை உள்ளிடவும் (மறுதொடக்கம் தேவை):",
"title": "ப்ராக்ஸி போர்ட்"
}
}
},
"blur-nav-bar": {
"description": "வழிசெலுத்தல் பட்டியை வெளிப்படையானதாகவும் மங்கலாகவும் ஆக்குகிறது",
"name": "மங்கலான வழிசெலுத்தல் பட்டி"
},
"bypass-age-restrictions": {
"description": "YouTube அகவை சரிபார்ப்பு பைபாச்",
"name": "அகவை கட்டுப்பாடுகள் பைபாச்"
},
"captions-selector": {
"description": "YouTube இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்",
"menu": {
"autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்",
"disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை"
},
"name": "தலைப்புகள் தேர்வாளர்",
"prompt": {
"selector": {
"label": "தற்போதைய தலைப்பு மொழி: {{language}}",
"none": "எதுவுமில்லை",
"title": "தலைப்பு மொழியைத் தேர்ந்தெடுக்கவும்"
}
},
"templates": {
"title": "திறந்த தலைப்புகள் தேர்வாளர்"
},
"toast": {
"caption-changed": "தலைப்பு {{language}} என மாற்றப்பட்டது",
"caption-disabled": "தலைப்புகள் முடக்கப்பட்டன",
"no-captions": "இந்த பாடலுக்கு தலைப்புகள் எதுவும் கிடைக்கவில்லை"
}
},
"compact-sidebar": {
"description": "எப்போதும் பக்கப்பட்டியை சிறிய பயன்முறையில் அமைக்கவும்",
"name": "சிறிய பக்கப்பட்டி"
},
"crossfade": {
"description": "பாடல்களுக்கு இடையில் கிராச்ஃபேட்",
"menu": {
"advanced": "மேம்பட்ட"
},
"name": "கிராச்ஃபேட் [பீட்டா]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "காலகட்டத்தில் (எம்.எச்) மங்கிவிடும்",
"fade-out-duration": "காலத்தை மங்கச் செய்யுங்கள் (எம்.எச்)",
"fade-scaling": {
"label": "மங்கலான அளவிடுதல்",
"linear": "நேரியல்",
"logarithmic": "மடக்கை"
},
"seconds-before-end": "கிராச்ஃபேட் n வினாடிகள் முடிவுக்கு முன்"
},
"title": "கிராச்ஃபேட் விருப்பங்கள்"
}
}
},
"disable-autoplay": {
"description": "\"இடைநிறுத்தப்பட்ட\" பயன்முறையில் பாடல் தொடங்குகிறது",
"menu": {
"apply-once": "தொடக்கத்தில் மட்டுமே பொருந்தும்"
},
"name": "ஆட்டோபிளேவை முடக்கு"
},
"discord": {
"backend": {
"already-connected": "செயலில் இணைப்புடன் இணைக்க முயற்சித்தது",
"connected": "முரண்பாட்டுடன் இணைக்கப்பட்டுள்ளது",
"disconnected": "முரண்பாட்டிலிருந்து துண்டிக்கப்பட்டது"
},
"description": "பணக்கார இருப்பைக் கொண்டு நீங்கள் கேட்பதை உங்கள் நண்பர்களுக்குக் காட்டுங்கள்",
"menu": {
"auto-reconnect": "ஆட்டோ மீண்டும் இணைக்கவும்",
"clear-activity": "தெளிவான செயல்பாடு",
"clear-activity-after-timeout": "காலக்கெடுவுக்குப் பிறகு தெளிவான செயல்பாடு",
"connected": "இணைக்கப்பட்டுள்ளது",
"disconnected": "துண்டிக்கப்பட்டது",
"hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்",
"hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்",
"play-on-youtube-music": "யூடியூப் இசையில் விளையாடுங்கள்",
"set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது"
},
"name": "முரண்பாடு பணக்கார இருப்பு",
"prompt": {
"set-inactivity-timeout": {
"label": "நொடிகளில் செயலற்ற நேரத்தை உள்ளிடவும்:",
"title": "செயலற்ற நேரம் முடிந்தது"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "சரி"
},
"message": "ஆர்க்! மன்னிப்பு, பதிவிறக்கம் தோல்வியுற்றது…",
"title": "பதிவிறக்கத்தில் பிழை!"
},
"start-download-playlist": {
"buttons": {
"ok": "சரி"
},
"detail": "({{playlistSize}} பாடல்கள்)",
"message": "பிளேலிச்ட்டைப் பதிவிறக்குகிறது {{playlistTitle}}",
"title": "பதிவிறக்கம் தொடங்கியது"
}
},
"feedback": {
"conversion-progress": "மாற்றம்: {{percent}}%",
"converting": "மாற்றுகிறது…",
"done": "முடிந்தது: {{filePath}}",
"download-info": "பதிவிறக்கம் {{artist}} - {{title}} [{{videoId}}}",
"download-progress": "பதிவிறக்கம்: {{percent}}%",
"downloading": "பதிவிறக்கம்…",
"downloading-counter": "பதிவிறக்கம் {{current}}/{{total}}…",
"downloading-playlist": "பிளேலிச்ட்டைப் பதிவிறக்குதல் \"{{playlistTitle}}\" - {{playlistSize}} பாடல்கள் ({{playlistId}})",
"error-while-downloading": "பிழை \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "{{playlistFolder}}} ஏற்கனவே உள்ளது",
"getting-playlist-info": "பிளேலிச்ட் தகவலைப் பெறுதல்…",
"loading": "ஏற்றுகிறது…",
"playlist-has-only-one-song": "பிளேலிச்ட்டில் ஒரே ஒரு உருப்படி மட்டுமே உள்ளது, அதை நேரடியாக பதிவிறக்குகிறது",
"playlist-id-not-found": "பிளேலிச்ட் ஐடி எதுவும் கிடைக்கவில்லை",
"playlist-is-empty": "பிளேலிச்ட் காலியாக உள்ளது",
"playlist-is-mix-or-private": "பிளேலிச்ட் தகவலைப் பெறுவதில் பிழை: இது ஒரு தனிப்பட்ட அல்லது \"உங்களுக்காக கலப்பு\" பிளேலிச்ட் அல்ல என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்\n\n {{error}}",
"preparing-file": "கோப்பைத் தயாரித்தல்…",
"saving": "சேமிப்பு…",
"trying-to-get-playlist-id": "பிளேலிச்ட் ஐடியைப் பெற முயற்சிக்கிறது: {{playlistId}}}",
"video-id-not-found": "வீடியோ கிடைக்கவில்லை",
"writing-id3": "ஐடி 3 குறிச்சொற்களை எழுதுதல்…"
}
},
"description": "எம்பி 3 / மூல ஆடியோவை இடைமுகத்திலிருந்து நேரடியாக பதிவிறக்குகிறது",
"menu": {
"choose-download-folder": "பதிவிறக்க கோப்புறையைத் தேர்வுசெய்க",
"download-finish-settings": {
"label": "முடிவில் பதிவிறக்கவும்",
"prompt": {
"last-percent": "ஃச் சதவீதத்திற்குப் பிறகு",
"last-seconds": "கடைசி ஃச் விநாடிகள்",
"title": "எப்போது பதிவிறக்கம் செய்ய வேண்டும் என்பதை உள்ளமைக்கவும்"
},
"submenu": {
"advanced": "மேம்பட்ட",
"enabled": "இயக்கப்பட்டது",
"mode": "நேர முறை",
"percent": "விழுக்காடு",
"seconds": "நொடிகள்"
}
},
"download-playlist": "பிளேலிச்ட்டைப் பதிவிறக்கவும்",
"presets": "முன்னமைவுகள்",
"skip-existing": "இருக்கும் கோப்புகளைத் தவிர்க்கவும்"
},
"name": "பதிவிறக்குபவர்",
"renderer": {
"can-not-update-progress": "முன்னேற்றத்தை புதுப்பிக்க முடியாது"
},
"templates": {
"button": "பதிவிறக்கம்"
}
},
"equalizer": {
"description": "பிளேயருக்கு ஒரு சமநிலையைச் சேர்க்கிறது",
"menu": {
"presets": {
"label": "முன்னமைவுகள்",
"list": {
"bass-booster": "பாச் பூச்டர்"
}
}
},
"name": "சமநிலைப்படுத்தி"
},
"exponential-volume": {
"description": "தொகுதி ச்லைடர் அதிவேகமானது, எனவே குறைந்த தொகுதிகளைத் தேர்ந்தெடுப்பது எளிது.",
"name": "அதிவேக தொகுதி"
},
"in-app-menu": {
"description": "மெனு-பட்டியை ஒரு ஆடம்பரமான, இருண்ட அல்லது ஆல்பம்-வண்ண தோற்றத்தைக் கொடுங்கள்",
"menu": {
"hide-dom-window-controls": "டோம் சாளர கட்டுப்பாடுகளை மறைக்கவும்"
},
"name": "பயன்பாட்டில் பட்டியல்"
},
"lumiastream": {
"description": "லூமியா ச்ட்ரீம் ஆதரவை சேர்க்கிறது",
"name": "லூமியா ச்ட்ரீம் [பீட்டா]"
},
"lyrics-genius": {
"description": "பெரும்பாலான பாடல்களுக்கு பாடல் ஆதரவை சேர்க்கிறது",
"menu": {
"romanized-lyrics": "ரோமானிய பாடல்"
},
"name": "பாடல் சீனியச்",
"renderer": {
"fetched-lyrics": "சீனியசுக்கு பாடல் வரிகள்"
}
},
"music-together": {
"description": "ஒரு பிளேலிச்ட்டை மற்றவர்களுடன் பகிர்ந்து கொள்ளுங்கள். புரவலன் ஒரு பாடலை விளையாடும்போது, மற்றவர்கள் அனைவரும் ஒரே பாடலைக் கேட்பார்கள்",
"dialog": {
"enter-host": "புரவலன் ஐடியை உள்ளிடவும்"
},
"internal": {
"save": "சேமி",
"track-source": "ட்ராக் சோர்ச்",
"unknown-user": "தெரியாத பயனர்"
},
"menu": {
"click-to-copy-id": "புரவலன் ஐடியை நகலெடுக்கவும்",
"close": "ஒன்றாக இசையை மூடு",
"connected-users": "இணைக்கப்பட்ட பயனர்கள்",
"disconnect": "ஒன்றாக இசையை துண்டிக்கவும்",
"empty-user": "இணைக்கப்பட்ட பயனர்கள் இல்லை",
"host": "இசை ஒன்றாக புரவலன்",
"join": "ஒன்றாக இசையில் சேரவும்",
"permission": {
"all": "பிளேலிச்ட் மற்றும் பிளேயரைக் கட்டுப்படுத்த விருந்தினர்களை அனுமதிக்கவும்",
"host-only": "ஓச்டால் மட்டுமே பிளேலிச்ட் மற்றும் பிளேயரை கட்டுப்படுத்த முடியும்",
"playlist": "பிளேலிச்ட்டைக் கட்டுப்படுத்த விருந்தினர்களை அனுமதிக்கவும்"
},
"set-permission": "கட்டுப்பாட்டு அனுமதியை மாற்றவும்",
"status": {
"disconnected": "துண்டிக்கப்பட்டது",
"guest": "விருந்தினராக இணைக்கப்பட்டுள்ளது",
"host": "ஓச்டாக இணைக்கப்பட்டுள்ளது"
}
},
"name": "இசை ஒன்றாக [பீட்டா]",
"toast": {
"add-song-failed": "பாடல் சேர்க்கத் தவறிவிட்டது",
"closed": "இசை ஒன்றாக மூடப்பட்டது",
"disconnected": "இசை ஒன்றாக துண்டிக்கப்பட்டது",
"host-failed": "ஒன்றாக இசையை புரவலன் செய்யத் தவறிவிட்டது",
"id-copied": "இடைநிலைப்பலகைக்கு புரவலன் ஐடி நகலெடுக்கப்பட்டது",
"id-copy-failed": "புரவலன் ஐடியை இடைநிலைப்பலகைக்கு நகலெடுப்பதில் தோல்வி",
"join-failed": "ஒன்றாக இசையில் சேரத் தவறிவிட்டது",
"joined": "ஒன்றாக இசையில் சேர்ந்தார்",
"permission-changed": "இசை ஒன்றாக இசைவு \"{{permission}}\" என மாற்றப்பட்டது",
"remove-song-failed": "பாடலை அகற்றுவதில் தோல்வி",
"user-connected": "{{name}} ஒன்றாக இசையில் சேர்ந்தார்",
"user-disconnected": "{{name}}} இடது இசையை ஒன்றாக"
}
},
"navigation": {
"description": "உங்களுக்கு பிடித்த உலாவியைப் போலவே இடைமுகத்தில் நேரடியாக ஒருங்கிணைக்கப்பட்ட அடுத்த/பின் வழிசெலுத்தல் அம்புகள்",
"name": "வானோடல்",
"templates": {
"back": {
"title": "முந்தைய பக்கத்திற்குச் செல்"
},
"forward": {
"title": "அடுத்த பக்கத்திற்குச் செல்"
}
}
},
"no-google-login": {
"description": "இடைமுகத்திலிருந்து Google உள்நுழைவு பொத்தான்கள் மற்றும் இணைப்புகளை அகற்று",
"name": "கூகிள் உள்நுழைவு இல்லை"
},
"notifications": {
"description": "ஒரு பாடல் இயக்கத் தொடங்கும் போது அறிவிப்பைக் காண்பி (விண்டோசில் ஊடாடும் அறிவிப்புகள் கிடைக்கின்றன)",
"menu": {
"interactive": "ஊடாடும் அறிவிப்புகள்",
"interactive-settings": {
"label": "ஊடாடும் அமைப்புகள்",
"submenu": {
"hide-button-text": "பொத்தான் உரையை மறைக்கவும்",
"refresh-on-play-pause": "விளையாட்டு/இடைநிறுத்தத்தில் புதுப்பிக்கவும்",
"tray-controls": "தட்டு சொடுக்கு செய்யவும்/மூடு"
}
},
"priority": "அறிவிப்பு முன்னுரிமை",
"toast-style": "சிற்றுண்டி நடை",
"unpause-notification": "பொருத்தமற்ற அறிவிப்பைக் காட்டு"
},
"name": "அறிவிப்புகள்"
},
"performance-improvement": {
"description": "சோதனை ஸ்கிரிப்ட்களை இயக்குவதன் மூலம் செயல்திறனை மேம்படுத்தும்",
"name": "செயல்திறன் மேம்பாடு [பீட்டா]"
},
"picture-in-picture": {
"description": "பயன்பாட்டை பட-பட பயன்முறைக்கு மாற்ற அனுமதிக்கிறது",
"menu": {
"always-on-top": "எப்போதும் மேலே",
"hotkey": {
"label": "ஆட்ச்கி",
"prompt": {
"keybind-options": {
"hotkey": "ஆட்ச்கி"
},
"label": "படம்-இன்-படத்தை மாற்ற ஆட்கியைத் தேர்வுசெய்க",
"title": "படம்-இன்-பட ஆட்ச்கி"
}
},
"save-window-position": "சாளர நிலையை சேமி",
"save-window-size": "சாளர அளவை சேமி",
"use-native-pip": "உலாவி சொந்த பிப் பயன்படுத்தவும்"
},
"name": "படம்-படம்",
"templates": {
"button": "படம்-படம்"
}
},
"playback-speed": {
"description": "வேகமாக கேளுங்கள், மெதுவாக கேளுங்கள்! பாடல் வேகத்தைக் கட்டுப்படுத்தும் ச்லைடரைச் சேர்க்கிறது",
"name": "பின்னணி விரைவு",
"templates": {
"button": "வேகம்"
}
},
"precise-volume": {
"description": "தனிப்பயன் HUD மற்றும் தனிப்பயனாக்கக்கூடிய தொகுதி படிகளுடன், மவுச்வீல்/ஆட்கீசைப் பயன்படுத்தி துல்லியமாக அளவைக் கட்டுப்படுத்தவும்",
"menu": {
"arrows-shortcuts": "உள்ளக அம்பு-கீச் கட்டுப்பாடுகள்",
"custom-volume-steps": "தனிப்பயன் தொகுதி படிகளை அமைக்கவும்",
"global-shortcuts": "உலகளாவிய ஆட்கீச்"
},
"name": "துல்லியமான தொகுதி",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "அளவைக் குறைக்கவும்",
"increase": "அளவை அதிகரிக்கவும்"
},
"label": "உலகளாவிய தொகுதி விசைப்பலகைகளைத் தேர்வுசெய்க:",
"title": "உலகளாவிய தொகுதி கீபிண்ட்ச்"
},
"volume-steps": {
"label": "தொகுதி அதிகரிப்பு/குறைத்தல் படிகளைத் தேர்வுசெய்க",
"title": "தொகுதி படிகள்"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "தற்போதைய தரம்: {{quality}}",
"message": "வீடியோ தரத்தைத் தேர்வுசெய்க:",
"title": "வீடியோ தரத்தைத் தேர்வுசெய்க"
}
}
},
"description": "வீடியோ மேலடுக்கில் ஒரு பொத்தானைக் கொண்டு வீடியோ தரத்தை மாற்ற அனுமதிக்கிறது",
"name": "வீடியோ தர மாற்றி",
"renderer": {
"quality-settings-button": {
"label": "திறந்த பிளேயர் தர மாற்றி"
}
}
},
"scrobbler": {
"description": "ச்க்ரோப்ளிங் ஆதரவைச் சேர் (last.fm, Listenbrainz முதலியன)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Last.fm உடன் அங்கீகரிக்கத் தவறிவிட்டது\n அடுத்த மறுதொடக்கம் வரை பாப்அப்பை மறைக்கவும்.",
"title": "ஏற்பு தோல்வியடைந்தது"
}
}
},
"menu": {
"lastfm": {
"api-settings": "Last.fm பநிஇ அமைப்புகள்"
},
"listenbrainz": {
"token": "WeskBrainz பயனர் கிள்ளாக்கை உள்ளிடவும்"
},
"scrobble-alternative-title": "மாற்று தலைப்புகளைப் பயன்படுத்தவும்",
"scrobble-other-media": "மற்ற ஊடகங்களை வெல்லுங்கள்"
},
"name": "ச்க்ரோபிளர்",
"prompt": {
"lastfm": {
"api-key": "Last.fm பநிஇ key",
"api-secret": "Last.fm பநிஇ மறைபொருள்"
},
"listenbrainz": {
"token": {
"label": "உங்கள் கயிட் பிரைன்ச் பயனர் கிள்ளாக்கை உள்ளிடவும்:",
"title": "கேளுங்கள் பிரெய்ன்ச் கிள்ளாக்கு"
}
}
}
},
"shortcuts": {
"description": "பிளேபேக்கிற்கான உலகளாவிய ஆட்கீசை அமைக்க அனுமதிக்கிறது (நாடகம்/இடைநிறுத்தம்/அடுத்த/முந்தைய) மீடியா விசைகளை மீறுவதன் மூலம் மீடியா ஓஎச்டி",
"menu": {
"override-media-keys": "மீடியா விசைகளை மேலெழுதவும்",
"set-keybinds": "உலகளாவிய பாடல் கட்டுப்பாடுகளை அமைக்கவும்"
},
"name": "குறுக்குவழிகள் (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "அடுத்தது",
"play-pause": "விளையாடு / இடைநிறுத்தம்",
"previous": "முந்தைய"
},
"label": "பாடல்கள் கட்டுப்பாட்டுக்கு உலகளாவிய விசைப்பல்களைத் தேர்வுசெய்க:",
"title": "உலகளாவிய கீபிண்ட்ச்"
}
}
},
"skip-disliked-songs": {
"description": "ச்கிப்ச் விரும்பாத பாடல்கள்",
"name": "விரும்பாத பாடல்களைத் தவிர்க்கவும்"
},
"skip-silences": {
"description": "பாடல்களில் அமைதியான பகுதிகளை தானாகத் தவிர்க்கவும்",
"name": "ம n னங்களைத் தவிர்க்கவும்"
},
"sponsorblock": {
"description": "அறிமுகம்/அவுட்ரோ போன்ற இசை அல்லாத பகுதிகள் அல்லது பாடல் இசைக்காத இசை வீடியோக்களின் பகுதிகளை தானாகவே தவிர்க்கிறது",
"name": "ஒப்புரவாளர் தொகுதி"
},
"synced-lyrics": {
"description": "எல்.ஆர்.சி.எல்.ஐ.பி போன்ற வழங்குநர்களைப் பயன்படுத்தி பாடல்களுக்கு ஒத்திசைக்கப்பட்ட பாடல்களை வழங்குகிறது.",
"errors": {
"fetch": "The பாடல் வரிகளைப் பெறும்போது பிழை ஏற்பட்டது.\n தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும்.",
"not-found": "Ling இந்த பாடலுக்கு வரிகள் எதுவும் கிடைக்கவில்லை."
},
"menu": {
"default-text-string": {
"label": "பாடல் வரிகளுக்கு இடையில் இயல்புநிலை எழுத்து",
"tooltip": "பாடல் வரிகளுக்கு இடையிலான இடைவெளியைப் பயன்படுத்த இயல்புநிலை எழுத்தைத் தேர்வுசெய்க"
},
"line-effect": {
"label": "வரி விளைவு",
"submenu": {
"fancy": {
"label": "ஆடம்பரமான",
"tooltip": "தற்போதைய வரியில் பெரிய, பயன்பாடு போன்ற விளைவுகளைப் பயன்படுத்தவும்"
},
"focus": {
"label": "குவி",
"tooltip": "தற்போதைய வரியை மட்டுமே வெள்ளை செய்யுங்கள்"
},
"offset": {
"label": "ஈடுசெய்யும்",
"tooltip": "வலதுபுறத்தில் தற்போதைய வரியை ஈடுசெய்யவும்"
},
"scale": {
"label": "அளவு",
"tooltip": "தற்போதைய வரியை அளவிடவும்"
}
},
"tooltip": "தற்போதைய வரிக்கு பொருந்தக்கூடிய விளைவைத் தேர்வுசெய்க"
},
"precise-timing": {
"label": "பாடல் வரிகளை சரியாக ஒத்திசைக்கவும்",
"tooltip": "அடுத்த வரியின் காட்சியைக் கணக்கிடுங்கள் (செயல்திறனில் ஒரு சிறிய தாக்கத்தை ஏற்படுத்தும்)"
},
"romanization": {
"label": "பாடல் வரிகள் ரோமானியமாக்குங்கள்",
"tooltip": "பாடல் வரிகள் வேறு மொழியில் இருந்தால், லத்தீன் பதிப்பைக் காட்ட முயற்சிக்கவும்."
},
"show-lyrics-even-if-inexact": {
"label": "துல்லியமாக இருந்தாலும் பாடல்களைக் காட்டு",
"tooltip": "பாடல் காணப்படாவிட்டால், சொருகி மீண்டும் வேறு தேடல் வினவலுடன் முயற்சிக்கிறது.\n இரண்டாவது முயற்சியின் முடிவு துல்லியமாக இருக்காது."
},
"show-time-codes": {
"label": "நேரக் குறியீடுகளைக் காட்டு",
"tooltip": "பாடல் வரிகளுக்கு அடுத்த நேர குறியீடுகளைக் காட்டு"
}
},
"name": "ஒத்திசைக்கப்பட்ட பாடல்",
"refetch-btn": {
"fetching": "பெறுதல் ...",
"normal": "ரீஃபட்ச் பாடல்"
},
"warnings": {
"duration-mismatch": "⚠.எம் - கால பொருத்தமின்மை காரணமாக பாடல் வரிகள் ஒத்திசைக்கப்படாமல் இருக்கலாம்.",
"inexact": "- - இந்த பாடலுக்கான வரிகள் துல்லியமாக இருக்காது",
"instrumental": "- இது ஒரு கருவி பாடல்"
}
},
"taskbar-mediacontrol": {
"description": "உங்கள் சாளரங்கள் பணிப்பட்டியிலிருந்து பிளேபேக்கைக் கட்டுப்படுத்தவும்",
"name": "பணிப்பட்டு மீடியா கட்டுப்பாடு"
},
"touchbar": {
"description": "MACOS பயனர்களுக்கான டச்ச்பார் விட்செட்டை சேர்க்கிறது",
"name": "டக்பார்"
},
"tuna-obs": {
"description": "OBS இன் சொருகி டுனாவுடன் ஒருங்கிணைப்பு",
"name": "டுனா குறிப்பு"
},
"unobtrusive-player": {
"description": "பாடலைப் பாடும்போது பாப் அப் செய்வதைத் தடுக்கிறது",
"name": "எளிதில் கேட்கக்கூடிய பாடல்"
},
"video-toggle": {
"description": "வீடியோ/பாடல் பயன்முறைக்கு இடையில் மாற ஒரு பொத்தானைச் சேர்க்கிறது. முழு வீடியோ தாவலையும் விருப்பமாக அகற்றலாம்",
"menu": {
"align": {
"label": "இருப்புவழி",
"submenu": {
"left": "இடது",
"middle": "நடுத்தர",
"right": "வலது"
}
},
"force-hide": "வீடியோ தாவலை அகற்றவும்",
"mode": {
"label": "பயன்முறை",
"submenu": {
"custom": "தனிப்பயன் மாற்று",
"disabled": "முடக்கப்பட்டது",
"native": "சொந்த மாற்று"
}
}
},
"name": "வீடியோ மாற்று",
"templates": {
"button-song": "பாடல்",
"button-video": "காணொளி"
}
},
"visualizer": {
"description": "பிளேயருக்கு ஒரு காட்சிப்படுத்தியைச் சேர்க்கிறது",
"menu": {
"visualizer-type": "விசுவலைசர் வகை"
},
"name": "காட்சிப்படுத்தல்"
}
}
}

View File

@ -39,29 +39,29 @@
"clearing-cache-after-20s": "กำลังล้างแคชแอป"
},
"window": {
"tried-to-render-offscreen": "หน้าต่างพยายามแสดงผลเกินขนาดหน้าจอ windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
"tried-to-render-offscreen": "หน้าต่างพยายามแสดงผลเกินขนาดหน้าจอ ขนาดหน้าต่าง={{windowSize}}, ขนาดหน้าจอ={{displaySize}}, ตำแหน่ง={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "เมนูถูกซ่อนไว้ กด'Alt' เพื่อแสดงเมนู (หรือ 'Escape' หากอยู่ในเมนูแอป)",
"message": "การซ่อนเมนูถูกเปิดใช้งาน",
"detail": "เมนูถูกซ่อนไว้ กด'Alt' เพื่อแสดงเมนู (หรือ 'Escape' หากกำลังใช้เมนูบนแอป)",
"message": "การซ่อนเมนูเปิดใช้งานอยู่",
"title": "เปิดใช้งานการซ่อนเมนู"
},
"need-to-restart": {
"buttons": {
"later": "ภายหลัง",
"restart-now": "รีสตาร์ตอนนี้"
"later": "รีสตาร์ตภายหลัง",
"restart-now": "รีสตาร์ตอนนี้"
},
"detail": "\"{{pluginName}}\" ปลั๊กอินต้องการการรีสตาร์เพื่อแสดงผล",
"message": "\"{{pluginName}}\" ต้องการรีสตาร์",
"title": "แนะนำให้รีสตาร์"
"detail": "ปลั๊กอิน \"{{pluginName}}\" ต้องการการรีสตาร์เพื่อจะทำงานได้",
"message": "\"{{pluginName}}\" ต้องการรีสตาร์",
"title": "แนะนำให้รีสตาร์"
},
"unresponsive": {
"buttons": {
"quit": "ออก",
"relaunch": "เปิดใหม่",
"wait": "รอซักครู่"
"relaunch": "ปิดแล้วเปิดใหม่",
"wait": "รอให้ตอบสนอง"
},
"detail": "ขออภัยในความไม่สะดวก! โปรดเลือกสิ่งที่ต้องการจะทำ:",
"message": "แอปพลิเคชันไม่ตอบสนอง",
@ -73,7 +73,7 @@
"download": "ดาวน์โหลด",
"ok": "ตกลง"
},
"detail": "มีเวอร์ชันใหม่ให้ดาวน์โหลดแล้วที่ {{downloadLink}}",
"detail": "มีเวอร์ชันใหม่ให้ใช้งานได้สามารถดาวน์โหลดได้ที่ {{downloadLink}}",
"message": "มีเวอร์ชันใหม่ให้ใช้งานแล้ว",
"title": "อัปเดตพร้อมใช้งาน"
}
@ -87,7 +87,7 @@
"go-back": "ก่อนหน้า",
"go-forward": "ถัดไป",
"quit": "ออก",
"restart": "รีสตาร์แอป"
"restart": "รีสตาร์แอป"
}
},
"options": {
@ -96,23 +96,23 @@
"advanced-options": {
"label": "ตัวเลือกขั้นสูง",
"submenu": {
"auto-reset-app-cache": "รีเซตแอปแคชเมื่อเริ่มแอป",
"auto-reset-app-cache": "รีเซตแคชของแอปเมื่อเริ่มแอป",
"disable-hardware-acceleration": "ปิดการใช้งานตัวเร่งประสิทธิภาพด้วยฮาร์ดแวร์",
"edit-config-json": "แก้ไข config.json",
"override-user-agent": "แทนที่ User-Agent",
"restart-on-config-changes": "รีสตาร์เมื่อมีการเปลี่ยนแปลงคอนฟิก",
"restart-on-config-changes": "รีสตาร์เมื่อมีการเปลี่ยนแปลงคอนฟิก",
"set-proxy": {
"label": "ตั้งค่าพร็อกซี่",
"prompt": {
"label": "ใส่ที่อยู่พร็อกซี่: (ปล่อยให้ว่างเพื่อปิดใช้งาน)",
"label": "ใส่ที่อยู่ของพร็อกซี่: (เว้นว่างเพื่อปิดใช้งาน)",
"placeholder": "ตัวอย่าง: SOCKS5://127.0.0.1:9999",
"title": "ตั้งค่าพร็อกซี่"
}
},
"toggle-dev-tools": "เปิด-ปิด DevTools"
"toggle-dev-tools": "เปิด/ปิดเครื่องมือสำหรับนักพัฒนา"
}
},
"always-on-top": "อยู่ด้านบนตลอดเวลา",
"always-on-top": "อยู่ด้านบนหน้าต่างอื่นตลอดเวลา",
"auto-update": "อัปเดตอัตโนมัติ",
"hide-menu": {
"dialog": {
@ -123,17 +123,17 @@
},
"language": {
"dialog": {
"message": "ภาษาจะเปลี่ยนหลังจากทำการรีสตาร์",
"message": "ภาษาจะเปลี่ยนหลังจากทำการรีสตาร์",
"title": "ภาษาถูกเปลี่ยนแล้ว"
},
"label": "ภาษา",
"submenu": {
"to-help-translate": "ต้องการช่วยแปล? คลิกที่นี่"
"to-help-translate": "ต้องการช่วยแปลภาษา? คลิกที่นี่"
}
},
"resume-on-start": "เล่นเพลงล่าสุดต่อ เมื่อแอปเริ่มต้น",
"single-instance-lock": "ล็อกการทำงานเพียงรายการเดียว",
"start-at-login": "เริ่มต้นที่การเข้าสู่ระบบ",
"resume-on-start": "เล่นเพลงที่เล่นล่าสุดต่อ เมื่อเปิดแอป",
"single-instance-lock": "ล็อกไม่ให้เปิดซำ้ซ้อน",
"start-at-login": "เริ่มต้นเมื่อเข้าสู่ระบบ",
"starting-page": {
"label": "หน้าเริ่มต้น",
"unset": "ยกเลิกการตั้งค่า"
@ -148,8 +148,15 @@
}
},
"visual-tweaks": {
"label": "การปรับแต่งหน้าตาแอป",
"label": "ปรับแต่งหน้าตาแอป",
"submenu": {
"custom-window-title": {
"label": "ชื่อหน้าต่างกำหนดเอง",
"prompt": {
"label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)",
"placeholder": "ตัวอย่าง: Youtube Music"
}
},
"like-buttons": {
"default": "ค่าเริ่มต้น",
"force-show": "บังคับให้แสดง",
@ -169,7 +176,7 @@
"label": "ธีม",
"submenu": {
"import-css-file": "นำเข้าไฟล์ CSS ที่กำหนดเอง",
"no-theme": "ไม่มีธีม"
"no-theme": "ไม่ใช้ธีม"
}
}
}
@ -187,28 +194,28 @@
"force-reload": "บังคับโหลดใหม่",
"reload": "โหลดใหม่",
"reset-zoom": "ขนาดจริง",
"toggle-fullscreen": "สลับเต็มหน้าจอ",
"toggle-fullscreen": "เปิด/ปิดโหมดเต็มหน้าจอ",
"zoom-in": "ซูมเข้า",
"zoom-out": "ซูมออก"
}
}
},
"tray": {
"next": "่อไป",
"play-pause": "เล่น/พัก",
"next": "่อไป",
"play-pause": "เล่น/หยุดชั่วคราว",
"previous": "ก่อนหน้า",
"quit": "ออก",
"restart": "รีสตาร์แอป",
"restart": "รีสตาร์แอป",
"show": "แสดงหน้าต่าง",
"tooltip": {
"default": "ยูทุปมิวสิค",
"with-song-info": "ยูทูปมิวสิค: {{artist}} - {{title}}"
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
}
}
},
"plugins": {
"ad-speedup": {
"description": "หากมีการเล่นโฆษณา เสียงจะถูกปิดและตั้งค่าความเร็วในการเล่นเป็น 16x",
"description": "หากมีโฆษณาเล่นขึ้น เสียงจะถูกปิดและตั้งความเร็วในการเล่นเป็น 16 เท่า",
"name": "เพิ่มความเร็วโฆษณา"
},
"adblocker": {
@ -219,7 +226,7 @@
"name": "ตัวบล็อกโฆษณา"
},
"album-actions": {
"description": "เพิ่ม ยกเลิกไม่ชอบ, ไม่ชอบ, 'ถูกใจ', และ 'ยกเลิกถูกใจ' เพื่อให้สามารถใช้งานกับเพลงทั้งหมดในรายการเพลงหรืออัลบั้ม",
"description": "เพิ่ม ยกเลิกไม่ชอบ, ไม่ชอบ, ถูกใจ, และ ยกเลิกถูกใจ ที่มีผลกับเพลงทั้งหมดในรายการเพลงหรืออัลบั้ม",
"name": "การกระทำที่เกี่ยวกับอัลบั้ม"
},
"album-color-theme": {
@ -228,14 +235,14 @@
"color-mix-ratio": {
"label": "สัดส่วนการผสมสี",
"submenu": {
"percent": "{{ratio}}เปอร์เซ็น"
"percent": "{{ratio}}%"
}
}
},
"name": "ธีมสีของอัลบั้ม"
},
"ambient-mode": {
"description": "เอฟเฟกต์แสงจะใช้สีอ่อนๆจากวีดิโอมาเป็พื้นหลังสกรีน",
"description": "เอฟเฟกต์แสงที่ดึงสีอ่อนๆจากวีดิโอมาบนพื้นหลังแอป",
"menu": {
"blur-amount": {
"label": "ระดับความเบลอ",
@ -268,9 +275,9 @@
}
},
"smoothness-transition": {
"label": "การเปลี่ยนแบบสมูท",
"label": "ความเรียบการเปลี่ยน",
"submenu": {
"during": "ระหว่าง {{interpolationTime}} วินาที"
"during": "ในระยะเวลา {{interpolationTime}} วินาที"
}
},
"use-fullscreen": {
@ -279,6 +286,13 @@
},
"name": "โหมดสภาพแวดล้อม"
},
"amuse": {
"description": "เพิ่มการรองรับ Youtube Music สำหรับ Widget Amuse Now Playing ของ 6K Labs",
"name": "Amuse",
"response": {
"query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง"
}
},
"api-server": {
"description": "เพิ่มเซิร์ฟเวอร์ API เพื่อควบคุมการเล่น",
"dialog": {
@ -287,7 +301,38 @@
"allow": "อนุญาต",
"deny": "ปฏิเสธ"
},
"message": "อนุญาตให้ {{ID}} ({{origin}}) เข้าถึง API หรือไม่?"
"message": "อนุญาตให้ {{ID}} ({{origin}}) เข้าถึง API หรือไม่?",
"title": "คำขอลงชื่อเข้าใช้งาน API"
}
},
"menu": {
"auth-strategy": {
"label": "วิธีการลงชื่อเข้าใช้งาน",
"submenu": {
"auth-at-first": {
"label": "ลงชื่อเข้าใช้งานในคำขอแรก"
},
"none": {
"label": "ไม่ต้องลงชื่อเข้าใช้งาน"
}
}
},
"hostname": {
"label": "ชื่อโฮสต์ (Hostname)"
},
"port": {
"label": "พอร์ต (Port) ของ Server"
}
},
"name": "เซิร์ฟเวอร์ API [เบต้า]",
"prompt": {
"hostname": {
"label": "ใส่ชื่อโฮสต์ (Hostname) เช่น 0.0.0.0 สำหรับเซิร์ฟเวอร์ API:",
"title": "ชื่อโฮสต์ (Hostname)"
},
"port": {
"label": "ใส่พอร์ต (Port) ในการเข้าถึงเซิร์ฟเวอร์ API:",
"title": "พอร์ต (Port) ของ Server"
}
}
},
@ -295,16 +340,40 @@
"description": "ใช้การบีบอัดเสียง (ลดระดับเสียงของส่วนที่ดังที่สุดของสัญญาณและเพิ่มระดับเสียงของส่วนที่เบาที่สุด)",
"name": "เครื่องมือบีบอัดเสียง"
},
"auth-proxy-adapter": {
"description": "รองรับการใช้พร็อกซีสำหรับการตรวจสอบสิทธิ์",
"menu": {
"disable": "เปิดใช้งาน ตัวเชื่อมต่อพร็อกซี",
"enable": "ปิดใช้งาน ตัวเชื่อมต่อพร็อกซี",
"hostname": {
"label": "ชื่อโฮสต์"
},
"port": {
"label": "พอร์ต"
}
},
"name": "ตัวเชื่อมต่อสำหรับตรวจสอบสิทธิ์ผ่านพร็อกซี",
"prompt": {
"hostname": {
"label": "ป้อนชื่อโฮสต์สำหรับพร็อกซีเซิร์ฟเวอร์ภายในเครื่อง (ต้องรีสตาร์ท):",
"title": "ชื่อโฮสต์พร็อกซี"
},
"port": {
"label": "ป้อนพอร์ตสำหรับพร็อกซีเซิร์ฟเวอร์ภายในเครื่อง (ต้องรีสตาร์ท):",
"title": "พอร์ตพร็อกซี"
}
}
},
"blur-nav-bar": {
"description": "ทำให้แถบนำทางโปร่งแสงและเบลอ",
"name": "เบลอแถบนำทาง"
},
"bypass-age-restrictions": {
"description": "ข้ามการตรวจสอบอายุของยูทูป",
"description": "ข้ามการตรวจสอบอายุของ YouTube",
"name": "ข้ามข้อจำกัดอายุ"
},
"captions-selector": {
"description": "ตัวเลือกคำบรรยายสำหรับเพลงในYoutube Music",
"description": "ตัวเลือกคำบรรยายสำหรับเพลงใน YouTube Music",
"menu": {
"autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ",
"disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น"
@ -319,6 +388,11 @@
},
"templates": {
"title": "เปิดตัวเลือกคำบรรยาย"
},
"toast": {
"caption-changed": "เปลี่ยนคำบรรยายเป็นภาษา {{language}}",
"caption-disabled": "คำบรรยายถูกปิดใช้งาน",
"no-captions": "ไม่มีคำบรรยายสำหรับเพลงนี้"
}
},
"compact-sidebar": {
@ -347,20 +421,33 @@
}
}
},
"disable-autoplay": {
"description": "เริ่มเพลงในโหมดหยุด",
"custom-output-device": {
"description": "ตั้งค่าอุปกรณ์เสียงออกสำหรับเพลง",
"menu": {
"apply-once": "ใช้เฉพาะเมื่อเริ่มต้น"
"device-selector": "เลือกอุปกรณ์"
},
"name": "อุปกรณ์เสียงออกที่กำหนดเอง",
"prompt": {
"device-selector": {
"label": "เลือกอุปกรณ์เสียงออกที่ต้องการใช้",
"title": "เลือกอุปกรณ์เสียงออก"
}
}
},
"disable-autoplay": {
"description": "เริ่มเพลงในโหมดหยุดชั่วคราว",
"menu": {
"apply-once": "ใช้เฉพาะเมื่อเริ่มต้นแอป"
},
"name": "ปิดใช้งานการเล่นอัตโนมัติ"
},
"discord": {
"backend": {
"already-connected": "พยายามเชื่อมต่อกับการเชื่อมต่อที่ทำงานอยู่",
"already-connected": "กำลังพยายามเชื่อมต่อด้วยการเชื่อมต่อที่มีอยู่",
"connected": "เชื่อมต่อกับดิสคอร์ดแล้ว",
"disconnected": "ตัดการเชื่อมต่อออกจากดิสคอร์ด"
"disconnected": "ไม่มีการเชื่อมต่อกับดิสคอร์ดอยู่"
},
"description": "แสดงให้เพื่อนเห็นว่าคุณกำลังฟังอะไรด้วย Rich Presence",
"description": "แสดงให้เพื่อนเห็นว่าคุณกำลังฟังอะไรด้วย Rich Presence บนดิสคอร์ด",
"menu": {
"auto-reconnect": "เชื่อมต่อใหม่โดยอัตโนมัติ",
"clear-activity": "ล้างกิจกรรม",
@ -369,10 +456,18 @@
"disconnected": "ตัดการเชื่อมต่อ",
"hide-duration-left": "ซ่อนระยะเวลาที่เหลือ",
"hide-github-button": "ซ่อนปุ่มลิงก์ GitHub",
"play-on-youtube-music": "เล่นบนยูทูปมิวสุค",
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม"
"play-on-youtube-music": "เล่นบน YouTube Music",
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม",
"set-status-display-type": {
"label": "ข้อความสถานะ",
"submenu": {
"artist": "กำลังฟัง {ชื่อนักร้อง}",
"title": "กำลังฟัง {ชื่อเพลง}",
"youtube-music": "กำลังฟัง YouTube Music"
}
}
},
"name": "Discord Rich Presence",
"name": "แสดงกิจกรรมบนดิสคอร์ด",
"prompt": {
"set-inactivity-timeout": {
"label": "ป้อนระยะเวลาไม่มีกิจกรรมเป็นวินาที:",
@ -426,6 +521,21 @@
"description": "ดาวน์โหลด MP3 / เสียงต้นฉบับโดยตรงจากอินเทอร์เฟซ",
"menu": {
"choose-download-folder": "เลือกโฟลเดอร์ดาวน์โหลด",
"download-finish-settings": {
"label": "ดาวน์โหลดเมื่อเล่นเสร็จ",
"prompt": {
"last-percent": "หลังจาก x เปอร์เซ็นต์",
"last-seconds": "x วินาทีล่าสุด",
"title": "ตั่งค่าเวลาที่จะดาวน์โหลด"
},
"submenu": {
"advanced": "การตั้งค่าขั้นสูง",
"enabled": "เปิดใช้งาน",
"mode": "โหมดเวลา",
"percent": "โหมดเปอร์เซ็นต์",
"seconds": "โหมดวินาที"
}
},
"download-playlist": "ดาวน์โหลดเพลย์ลิสต์",
"presets": "พรีเซ็ต",
"skip-existing": "ข้ามไฟล์ที่มีอยู่แล้ว"
@ -438,12 +548,24 @@
"button": "ดาวน์โหลด"
}
},
"equalizer": {
"description": "เพิ่มอีควอไลเซอร์ให้ที่เล่นเพลง",
"menu": {
"presets": {
"label": "การตั้งค่าล่วงหน้า",
"list": {
"bass-booster": "เพิ่มเบส"
}
}
},
"name": "อีควอไลเซอร์"
},
"exponential-volume": {
"description": "ทำให้ตัวเลือกความดังมีลักษณะเอ็กซ์โปเนนเชียล เพื่อให้ง่ายต่อการเลือกระดับความดังที่ต่ำลง",
"name": "ระดับเสียงแบบเอ็กซโปเนนเชียล"
},
"in-app-menu": {
"description": "ให้เมนูบาร์ดูทันสมัย มืดหรือเป็นสีของอัลบั้มอย่างน่าสนใจ",
"description": "ให้เแถบเมนูดูทันสมัย มืดหรือเป็นสีของอัลบั้มอย่างน่าสนใจ",
"menu": {
"hide-dom-window-controls": "ซ่อนตัวควบคุมหน้าต่าง DOM"
},
@ -511,7 +633,15 @@
},
"navigation": {
"description": "ลูกศรนำทางถัดไป/ย้อนกลับรวมอยู่ในอินเทอร์เฟซโดยตรง เช่นเดียวกับในเบราว์เซอร์ที่คุณชื่นชอบ",
"name": "การนำทาง"
"name": "การนำทาง",
"templates": {
"back": {
"title": "ไปหน้าก่อนหน้า"
},
"forward": {
"title": "ไปหน้าถัดไป"
}
}
},
"no-google-login": {
"description": "ลบปุ่มเข้าสู่ระบบ Google และลิงก์ออกจากอินเทอร์เฟซ",
@ -530,10 +660,15 @@
}
},
"priority": "ลำดับความสำคัญของการแจ้งเตือน",
"toast-style": "แบบไม่ถาวร",
"unpause-notification": "แสดงการแจ้งเตือนเมื่อหยุดพัก"
},
"name": "การแจ้งเตือน"
},
"performance-improvement": {
"description": "ปรับปรุงประสิทธิภาพโดยเปิดใช้งานสคริปต์ทดลอง",
"name": "ปรับปรุงประสิทธิภาพ [Beta]"
},
"picture-in-picture": {
"description": "อนุญาตให้สลับแอปเป็นโหมดภาพในภาพ",
"menu": {
@ -549,8 +684,267 @@
}
},
"save-window-position": "บันทึกตำแหน่งหน้าต่าง",
"save-window-size": "บันทึกขนาดหน้าต่าง"
"save-window-size": "บันทึกขนาดหน้าต่าง",
"use-native-pip": "ใช้โหมดภาพซ้อนภาพของเบราเซอร์"
},
"name": "โหมดภาพซ้อนภาพ",
"templates": {
"button": "เปิดโหมดภาพซ้อนภาพ"
}
},
"playback-speed": {
"description": "ฟังเพลงได้ทั้งช้าและเร็ว เพิ่มที่เลื่อนปรับความเร็วของเพลง",
"name": "ความเร็วเพลง",
"templates": {
"button": "ความเร็ว"
}
},
"precise-volume": {
"description": "ควบคุมระดับเสียงได้อย่างแม่นยำด้วยที่เลื่อนเมาส์หรือปุ่มลัด พร้อมด้วยหน้าจอแสดงข้อมูลและขั้นระดับเสียงที่ปรับแต่งได้",
"menu": {
"arrows-shortcuts": "ควบคุมด้วยปุ่มลูกศรเมื่ออยู่ในแอป",
"custom-volume-steps": "ตั้งขั้นการปรับระดับเสียง",
"global-shortcuts": "ตั้งปุ่มลัดที่ใช้ได้ทั้งระบบ"
},
"name": "ระดับเสียงแม่นยำ",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "ปุ่มลดระดับเสียง",
"increase": "ปุ่มเพิ่มระดับเสียง"
},
"label": "ตั้งค่าปุ่มลัดระดับเสียงที่ใช้ได้ทั้งระบบ:",
"title": "ปุ่มลัดระดับเสียงที่ใช้ได้ทั้งระบบ"
},
"volume-steps": {
"label": "ตั้งขั้นการเพิ่ม/ลดระดับเสียง",
"title": "ขั้นการปรับระดับเสียง"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "คุณภาพปัจจุบัน: {{quality}}",
"message": "เลือกคุณภาพวิดีโอ:",
"title": "เลือกคุณภาพวิดีโอ"
}
}
},
"description": "อนุญาตให้เปลี่ยนคุณภาพของวิดีโอด้วยปุ่มที่แสดงเหนือวิดีโอ",
"name": "ที่เปลี่ยนคุณภาพวิดีโอ",
"renderer": {
"quality-settings-button": {
"label": "เปิดตัวเปลี่ยนคุณภาพเครื่องเล่น"
}
}
},
"scrobbler": {
"description": "รองรับการบันทึกการเล่นเพลง (เช่น last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "เกิดปัญหาระหว่างเข้าใช้งาน Last.fm\nซ่อนข้อความนี้จนการรีสตาร์ตครั้งถัดไป",
"title": "เกิดปัญหาในการเข้าใช้งาน"
}
}
},
"menu": {
"lastfm": {
"api-settings": "การตั้งค่า API Last.fm"
},
"listenbrainz": {
"token": "ใส่ user token ของ ListenBrainz"
},
"scrobble-alternative-artist": "ใช้ชื่อศิลปินอื่น",
"scrobble-alternative-title": "ใช้ชื่ออื่น",
"scrobble-other-media": "บันทึกการเล่นสื่ออื่นๆ"
},
"name": "บันทึกการเล่น (Scrobbler)",
"prompt": {
"lastfm": {
"api-key": "API Key ของ Last.fm",
"api-secret": "API secret ของ Last.fm"
},
"listenbrainz": {
"token": {
"label": "ใส่ user token ListenBrainz ของคุณ:",
"title": "token ListenBrainz"
}
}
}
},
"shortcuts": {
"description": "อนุญาตให้ตั้งปุ่มลัดทั่วระบบสำหรับการเล่น (เล่น/หยุดชั่วคราว/ถัดไป/ก่อนหน้า) และปิดการแสดงผลสื่อโดยทับปุ่มควบคุมสื่อ เปิด Ctrl/CMD + F เพื่อค้นหา เปิดการใช้งานการควบคุมเพลงผ่าน MPRIS สำหรับ Linux และปุ่มลัดที่กำหนดเองได้สำหรับผู้ใช้ขั้นสูง",
"menu": {
"override-media-keys": "เปลี่ยนการทำงานของปุ่มควบคุมสื่อ",
"set-keybinds": "ตั้งค่าปุ่มลัดควบคุมเพลง"
},
"name": "ปุ่มลัด (และ MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "เพลงถัดไป",
"play-pause": "เล่น/หยุดชั่วคราว",
"previous": "เพลงก่อนหน้า"
},
"label": "ตั้งค่าปุ่มลัดทั่วระบบสำหรับควบคุมเพลง:",
"title": "ปุ่มลัดทั่วระบบ"
}
}
},
"skip-disliked-songs": {
"description": "ข้ามเพลงที่ไม่ถูกใจ",
"name": "ข้ามเพลงที่ไม่ถูกใจ"
},
"skip-silences": {
"description": "ข้ามช่วงที่เงียบในเพลงโดยอัตโนมัติ",
"name": "ข้ามช่วงเงียบ"
},
"sponsorblock": {
"description": "ข้ามช่วงที่ไม่ใช่เพลงเช่น intro/outro หรือ ช่วงที่ไม่มีเพลงเล่นใน mv โดยอัตโนมัติ",
"name": "SponsorBlock"
},
"synced-lyrics": {
"description": "ให้เนื้อเพลงที่ตรงกับเวลาของเพลง ผ่านผู้ให้บริการเช่น LRClib",
"errors": {
"fetch": "⚠️\tเกิดปัญหาในการดึงเนื้อเพลง\n\tกรุณาลองใหม่ภายหลัง",
"not-found": "⚠️ ไม่เจอเนื้อเพลงสำหรับเพลงนี้"
},
"menu": {
"default-text-string": {
"label": "อักขระคั่นระหว่างเนื้อเพลง",
"tooltip": "เลือกอักขระที่คั่นในช่วงที่อยู่ระหว่างเนื้อเพลง"
},
"line-effect": {
"label": "เอฟเฟกต์บรรทัด",
"submenu": {
"fancy": {
"label": "อลังการ",
"tooltip": "ใช้เอฟเฟกต์ใหญ่คล้ายบนแอพ บนบรรทัดปัจจุบัน"
},
"focus": {
"label": "เด่น",
"tooltip": "ทำให้แค่บรรทัดปัจจุบันสีขาว"
},
"offset": {
"label": "เลื่อน",
"tooltip": "เลื่อนบรรทัดปัจจุบันไปทางขวา"
},
"scale": {
"label": "ขยายขนาด",
"tooltip": "ขยายบรรทัดปัจจุบันให้ใหญ่ขึ้น"
}
},
"tooltip": "เลือกเอฟเฟกต์ที่จะใช้กับบรรทัดปัจจุบัน"
},
"precise-timing": {
"label": "ให้เนื้อเพลงตรงกับเพลงเป๊ะๆ",
"tooltip": "คำนวณมิลิวินาทีในการแสดงบรรทัดถัดไป (มีผลเล็กน้อยกับประสิทธิภาพการทำงาน)"
},
"preferred-provider": {
"label": "ผู้ให้บริการที่ต้องการ",
"none": {
"label": "ไม่มี",
"tooltip": "ไม่มีผู้ให้บริการที่ต้องการ"
},
"tooltip": "เลือกผู้ให้บริการที่ต้องการใช้งาน"
},
"romanization": {
"label": "เนื้อเพลงตัวด้วยอักษรโรมัน",
"tooltip": "ถ้าหากเนื้อเพลงอยู่ในภาษาอื่น ลองเปลี่ยนการแสดงผลโดยใช้เวอร์ชั่นลาติน"
},
"show-lyrics-even-if-inexact": {
"label": "แสดงเนื้อเพลงแม้ไม่ตรงเป๊ะ",
"tooltip": "ถ้าหาเนื้อเพลงไม่เจอจะลองหาด้วยคำค้นหาที่ต่างกัน\nอาจได้เนื้อเพลงไม่ตรง"
},
"show-time-codes": {
"label": "แสดงตำแหน่งเวลา",
"tooltip": "แสดงตำแหน่งเวลาข้างๆเนื้อเพลง"
}
},
"name": "เนื้อเพลงตรงกับเพลง",
"refetch-btn": {
"fetching": "กำลังดึงข้อมูล...",
"normal": "ดึงเนื้อเพลงใหม่"
},
"warnings": {
"duration-mismatch": "⚠️ - เนื้อเพลงอาจไม่ตรงกับเวลาเนื่องจากความยาวไม่ตรงกัน",
"inexact": "⚠️ - เนื้อเพลงอาจไม่ตรง",
"instrumental": "⚠️ - เพลงนี้เป็นเพลงบรรเลง"
}
},
"taskbar-mediacontrol": {
"description": "ควบคุมการเล่นผ่าน taskbar ของ Windows",
"name": "ควบคุมสื่อผ่าน Taskbar"
},
"touchbar": {
"description": "เพิ่ม Widget บน TouchBar สำหรับผู้ใช้ macOS",
"name": "TouchBar"
},
"transparent-player": {
"description": "ทำให้หน้าต่างของแอปโปร่งใส",
"menu": {
"opacity": {
"label": "ความทึบแสง",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "ประเภท",
"submenu": {
"acrylic": "อะคริลิก",
"mica": "ไมกา",
"none": "ไม่มี",
"tabbed": "Tabbed"
}
}
},
"name": "ที่เล่นเพลงโปร่งใส"
},
"tuna-obs": {
"description": "ใช้งานร่วมกันกับปลั้กอิน Tuna บน OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "ป้องกันเครื่องเล่นแสดงขึ้นเมื่อเริ่มเล่นเพลง",
"name": "เครื่องเล่นที่ไม่รบกวน"
},
"video-toggle": {
"description": "เพิ่มปุ่มสลับระหว่างโหมดเพลงกับโหมดวิดีโอ หรือลบแถบวิดีโอออกทั้งแถบ",
"menu": {
"align": {
"label": "ตำแหน่งปุ่ม",
"submenu": {
"left": "ซ้าย",
"middle": "กลาง",
"right": "ขวา"
}
},
"force-hide": "บังคับลบแถบวิดีโอ",
"mode": {
"label": "โหมด",
"submenu": {
"custom": "ปุ่มกำหนดเอง",
"disabled": "ปิด",
"native": "ปุ่มเริ่มต้น"
}
}
},
"name": "ปุ่มวิดีโอ",
"templates": {
"button-song": "เพลง",
"button-video": "วิดีโอ"
}
},
"visualizer": {
"description": "เพิ่มวิชวลไลเซอร์ให้ที่เล่นเพลง",
"menu": {
"visualizer-type": "ประเภทวิชวลไลเซอร์"
},
"name": "วิชวลไลเซอร์"
}
}
}

View File

@ -36,7 +36,7 @@
"details": "Yanıt verilmedi!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Uygulama ön belleği temizleme"
"clearing-cache-after-20s": "Uygulama ön belleği temizle"
},
"window": {
"tried-to-render-offscreen": "Pencere ekranın dışında oluşturulmaya çalışıldı, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Görsel İnce Ayarlar",
"submenu": {
"custom-window-title": {
"label": "Özel pencere başlığı",
"prompt": {
"label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)",
"placeholder": "Örnek: Youtube Music"
}
},
"like-buttons": {
"default": "Varsayılan",
"force-show": "Zorla göster",
@ -209,7 +216,7 @@
"plugins": {
"ad-speedup": {
"description": "Bir reklam oynatılırsa sesi kapatır ve oynatma hızını 16x olarak ayarlar",
"name": "Hızlandırma"
"name": "Reklam Hızlandırma"
},
"adblocker": {
"description": "Tüm reklamları ve izleyicileri engelle",
@ -287,7 +294,7 @@
}
},
"api-server": {
"description": "APİ ekle ve oynatıcıyı kontrol et",
"description": "Oynatıcıyı kontrol etmek için bir API sunucusu ekle",
"dialog": {
"request": {
"buttons": {
@ -321,7 +328,7 @@
"prompt": {
"hostname": {
"label": "API sunucusu için hostname (örneğin 0.0.0.0) girin:",
"title": "Hostname"
"title": "Hostname(Ana bilgisayar adı)"
},
"port": {
"label": "API sunucusu için port girin:",
@ -333,6 +340,30 @@
"description": "Ses sıkıştırma (dalganın en gürültülü bölümlerinin ses düzeyini azaltır ve daha yumuşak bölümlerin ses düzeyini artırır)",
"name": "Ses Sıkıştırma"
},
"auth-proxy-adapter": {
"description": "Kimlik doğrulama proxy hizmetlerinin kullanımına destek",
"menu": {
"disable": "Proxy Bağdaştırıcısını Devre Dışı Bırak",
"enable": "Proxy Bağdaştırıcısını Etkinleştir",
"hostname": {
"label": "Ana makine adı"
},
"port": {
"label": "Port"
}
},
"name": "Ara Sunucu Doğrulama Bağdaştırıcısı",
"prompt": {
"hostname": {
"label": "Yerel proxy sunucusu için ana makine adını girin (yeniden başlatma gerektirir):",
"title": "Proxy Ana Makine Adı"
},
"port": {
"label": "Yerel proxy sunucusu için bağlantı noktasını girin (yeniden başlatma gerektirir):",
"title": "Proxy Bağlantı Noktası"
}
}
},
"blur-nav-bar": {
"description": "Gezinme çubuğunu şeffaf ve bulanık yapar",
"name": "Navigasyon barını bulanıklaştır"
@ -357,6 +388,11 @@
},
"templates": {
"title": "Altyazı seçiciyi aç"
},
"toast": {
"caption-changed": "Başlık {{language}} olarak değiştirildi",
"caption-disabled": "Altyazılar devre dışı",
"no-captions": "Bu şarkı için altyazı mevcut değil"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "Şarkılar için özel bir medya çıkış aygıtı ayarlayın",
"menu": {
"device-selector": "Aygıt Seçin"
},
"name": "Özel Çıkış Aygıtı",
"prompt": {
"device-selector": {
"label": "Kullanılacak medya çıkış aygıtını seçin",
"title": ıkış Aygıtını Seçin"
}
}
},
"disable-autoplay": {
"description": "Şarkıların otomatik olarak duraklatılmasını sağlar",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "Kalan süreyi gizle",
"hide-github-button": "GitHub bağlantısını gizle",
"play-on-youtube-music": "YouTube Music de oynat",
"set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla"
"set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla",
"set-status-display-type": {
"label": "Durum metni",
"submenu": {
"artist": "{artist} Dinleniyor",
"title": "{song title} Dinleniyor",
"youtube-music": "YouTube Müzik Dinleniyor"
}
}
},
"name": "Discord Etkinlik Durumu",
"prompt": {
@ -576,7 +633,15 @@
},
"navigation": {
"description": "Favori tarayıcınızdaki gibi doğrudan arayüze entegre edilmiş İleri/Geri gezinme okları",
"name": "Navigasyon"
"name": "Navigasyon",
"templates": {
"back": {
"title": "Önceki sayfaya git"
},
"forward": {
"title": "Sonraki sayfaya geç"
}
}
},
"no-google-login": {
"description": "Google giriş düğmelerini ve bağlantılarını arayüzden kaldır",
@ -600,6 +665,10 @@
},
"name": "Bildirimler"
},
"performance-improvement": {
"description": "Deneysel komut dosyalarını etkinleştirerek performansı artırın",
"name": "Performans iyileştirmesi [Beta]"
},
"picture-in-picture": {
"description": "Uygulamayı resim-içinde-resim moduna geçirmeye izin verir",
"menu": {
@ -664,7 +733,12 @@
}
},
"description": "Video katmanı üzerindeki bir düğme ile video kalitesinin değiştirilmesine izin verir",
"name": "Video Kalitesi Değiştirici"
"name": "Video Kalitesi Değiştirici",
"renderer": {
"quality-settings-button": {
"label": "Açık oynatıcı kalite değiştirici"
}
}
},
"scrobbler": {
"description": "Listeleme desteği ekler (lastfm, listenbrainz ve benzeri)",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "ListenBrainz kullanıcı kimliğinizi girin"
},
"scrobble-alternative-artist": "Alternatif sanatçıları kullan",
"scrobble-alternative-title": "Alternatif başlıklar kullan",
"scrobble-other-media": "Diğer medya ortamlarında listele"
},
"name": "Listeleyici",
@ -767,6 +843,18 @@
"label": "Şarkı sözlerini mükemmel şekilde senkronize edin",
"tooltip": "Bir sonraki satırın görüntülenmesini milisaniyesine kadar hesaplayın (performans üzerinde küçük bir etkisi olabilir)"
},
"preferred-provider": {
"label": "Tercih edilen Sağlayıcı",
"none": {
"label": "Hiçbiri",
"tooltip": "Varsayılan sağlayıcı yok"
},
"tooltip": "Kullanmak İçin varsayılan sağlayıcıyı seçin"
},
"romanization": {
"label": "Sözleri Romanize Et",
"tooltip": "Sözler başka bir dilde gözüküyorsa, Latin versiyonunu dene."
},
"show-lyrics-even-if-inexact": {
"label": "Kesin olmasa bile şarkı sözlerini gösterin",
"tooltip": "Şarkı bulunamazsa, eklenti farklı bir arama sorgusuyla tekrar dener. \nİkinci denemenin sonucu tam olmayabilir."
@ -795,10 +883,35 @@
"description": "macOS kullanıcıları için bir TouchBar widget'ı ekler",
"name": "TouchBar"
},
"transparent-player": {
"description": "Uygulama penceresini şeffaf yapar",
"menu": {
"opacity": {
"label": "Opaklık",
"submenu": {
"percent": "%{{opacity}}"
}
},
"type": {
"label": "Tür",
"submenu": {
"acrylic": "Akrilik",
"mica": "Mika",
"none": "Hiçbiri",
"tabbed": "Sekmeli"
}
}
},
"name": "Şeffaf Oynatıcı"
},
"tuna-obs": {
"description": "OBS eklentisi Tuna ile entegrasyon sağlar",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Müzik oynatıcının şarkı çalarken saçmalamasını engeller",
"name": "Göze Batmayan Çalar"
},
"video-toggle": {
"description": "Video/Şarkı modu arasında geçiş yapmak için bir düğme ekler. ayrıca isteğe bağlı olarak tüm video sekmesini kaldırabilir",
"menu": {
@ -822,7 +935,8 @@
},
"name": "Video Geçiş",
"templates": {
"button": "Şarkı"
"button-song": "Şarkı",
"button-video": "Video"
}
},
"visualizer": {

View File

@ -2,7 +2,7 @@
"common": {
"console": {
"plugins": {
"execute-failed": "Не вдалося запустити плагін {{pluginName}}::{{contextName}}",
"execute-failed": "Не вдалося виконати плагін {{pluginName}}::{{contextName}}",
"executed-at-ms": "Плагін {{pluginName}}::{{contextName}} запущено за {{ms}}ms",
"initialize-failed": "Не вдалося ініціалізувати плагін \"{{pluginName}}\"",
"load-all": "Завантаження всіх плагінів",
@ -209,7 +209,7 @@
"plugins": {
"ad-speedup": {
"description": "При програванні реклами звук вимикається і встановлюється швидкість відтворення 16х",
"name": "Пришвидшення релками"
"name": "Пришвидшення реклами"
},
"adblocker": {
"description": "Блокувати всю рекламу та відстеження з коробки",
@ -333,6 +333,30 @@
"description": "Застосувати стиснення аудіо (зменшити гучність найгучніших фрагментів сигналу та збільшити гучність тихих фрагментів)",
"name": "Аудіокомпресор"
},
"auth-proxy-adapter": {
"description": "Підтримка використання проксі-сервісів з аутентифікацією",
"menu": {
"disable": "Вимкнути проксі-адаптер",
"enable": "Ввімкнути проксі-адаптер",
"hostname": {
"label": "Ім'я хоста"
},
"port": {
"label": "Порт"
}
},
"name": "Адаптер проксі-авторизації",
"prompt": {
"hostname": {
"label": "Введіть ім'я хоста для локального проксі сервера(вимагає перезапуск):",
"title": "Назва проксі-хоста"
},
"port": {
"label": "Введіть порт для локального проксі серверу (потрібен рестарт):",
"title": "Порт проксі"
}
}
},
"blur-nav-bar": {
"description": "Робить панель навігації прозорою та розмитою",
"name": "Розмиття панелі навігації"
@ -495,7 +519,7 @@
"description": "Додає еквалайзер до програвача",
"menu": {
"presets": {
"label": "Пресети",
"label": "Шаблони",
"list": {
"bass-booster": "Підсилювач басів"
}
@ -600,6 +624,10 @@
},
"name": "Сповіщення"
},
"performance-improvement": {
"description": "Поліпшіть продуктивність, ввімкнувши експериментальні сценарії",
"name": "Поліпшення продуктивності [Бета]"
},
"picture-in-picture": {
"description": "Дозволяє перемикати програму в режим «картинка в картинці»",
"menu": {
@ -683,6 +711,7 @@
"listenbrainz": {
"token": "Ввести токен користувача ListenBrainz"
},
"scrobble-alternative-title": "Використовувати альтернативні назви",
"scrobble-other-media": "Скробилити інші медіа"
},
"name": "Скроблер",
@ -758,7 +787,7 @@
},
"scale": {
"label": "Масштабувати",
"tooltip": "Масштабуваты поточну лінію"
"tooltip": "Масштабувати поточну лінію"
}
},
"tooltip": "Виберіть ефект, який потрібно застосувати до поточної лінії"
@ -767,13 +796,17 @@
"label": "Зробити текст пісні ідеально синхронізованим",
"tooltip": "Обчисли до мілісекунд відображення наступного рядка (може мати невеликий вплив на продуктивність)"
},
"romanization": {
"label": "Транслітерувати текст пісень",
"tooltip": "Якщо текст пісні іншою мовою, спробувати його відобразити латинською версією."
},
"show-lyrics-even-if-inexact": {
"label": "Показувати текст пісні, навіть якщо він неточний",
"tooltip": "Якщо пісня не знайдена, плагін повторює спробу з іншим пошуковим запитом.\nРезультат з другої спроби може бути не точним."
},
"show-time-codes": {
"label": "Показувати часові марки",
"tooltip": "Показує часові маркы поруч із текстом пісні"
"label": "Відображати часові коди",
"tooltip": "Відображати часові коди біля тексту"
}
},
"name": "Синхронізовані тексти",
@ -799,6 +832,10 @@
"description": "Інтеграція з плагіном Tuna для OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Запобігання спливання плеєру під час відтворення пісні",
"name": "Ненав'язливий програвач"
},
"video-toggle": {
"description": "Додає кнопку для перемикання між режимом відео і режимом пісні. Також може опціонально видаляти вкладку відео",
"menu": {
@ -822,7 +859,7 @@
},
"name": "Перемикач відео",
"templates": {
"button": "Пісня"
"button-song": "Пісня"
}
},
"visualizer": {

View File

@ -125,10 +125,80 @@
"dialog": {
"message": "دوبارہ شروع کرنے کے بعد زبان بدل دی جائے گی",
"title": "زبان بدل گئی ہے"
},
"label": "زبان",
"submenu": {
"to-help-translate": "ترجمہ میں مدد کرنا چاہتے ہیں؟ یہاں دبائیں"
}
},
"resume-on-start": "ایپ شروع ہونے پر آخری گانا دوبارہ شروع کریں",
"single-instance-lock": "ایک واحد مثال لاک",
"start-at-login": "لاگ ان پر شروع کریں",
"starting-page": {
"label": "شروعاتی صفحہ",
"unset": "غیر متعین"
},
"tray": {
"label": "سسٹم ٹرے",
"submenu": {
"disabled": "غیر فعال",
"enabled-and-hide-app": "فعال اور ایپ کو چھپائیں",
"enabled-and-show-app": "فعال اور ایپ دکھائیں",
"play-pause-on-click": "دبانے پر چلائیں/روکیں"
}
},
"visual-tweaks": {
"label": "بصری تبدیلیاں",
"submenu": {
"like-buttons": {
"default": "پہلے سے طے شدہ",
"force-show": "زبردستی دکھائیں",
"hide": "چھپائیں",
"label": "لائیک بٹن"
},
"remove-upgrade-button": "اپ گریڈ بٹن ہٹائیں",
"theme": {
"dialog": {
"button": {
"cancel": "منسوخ کریں",
"remove": "ہٹائیں"
},
"remove-theme": "کیا آپ واقعی کسٹم تھیم کو ہٹانا چاہتے ہیں؟",
"remove-theme-message": "یہ کسٹم تھیم کو ہٹا دے گا"
},
"label": "تھیم",
"submenu": {
"import-css-file": "کسٹم CSS فائل درآمد کریں",
"no-theme": "کوئی تھیم نہیں"
}
}
}
}
}
},
"plugins": {
"enabled": "فعال",
"label": "پلگ انز",
"new": "نیا"
},
"view": {
"label": "دیکھیں",
"submenu": {
"force-reload": "زبردستی دوبارہ لوڈ کریں",
"reload": "دوبارہ لوڈ کریں",
"reset-zoom": "اصل سائز",
"toggle-fullscreen": "پوری سکرین ٹوگل کریں",
"zoom-in": "زوم ان کریں",
"zoom-out": "زوم آؤٹ کریں"
}
}
},
"tray": {
"next": "اگلا",
"play-pause": "چلائیں/روکیں",
"previous": "پچھلا",
"quit": "باہر نکلیں",
"restart": "ایپ دوبارہ شروع کریں"
}
}
}

View File

@ -30,7 +30,7 @@
"receive-command": "Đã nhận được lệnh qua giao thức: \"{{command}}\""
},
"theme": {
"css-file-not-found": "Tệp tin CSS \"{{cssFile}}\"không tồn tại, đang bỏ qua"
"css-file-not-found": "Tệp CSS \"{{cssFile}}\" không tồn tại, đang bỏ qua"
},
"unresponsive": {
"details": "Lỗi không phản hồi!\n{{error}}"
@ -44,7 +44,7 @@
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menu đã ẩn, ấn phím 'Alt' để hiện menu (hoặc ấn 'Escape' nếu bạn đang bật In-app Menu)",
"detail": "Menu đã ẩn, ấn phím 'Alt' để hiện menu (hoặc ấn phím 'Esc' nếu bạn đang bật In-app Menu)",
"message": "Ẩn Menu đã được bật",
"title": "Ẩn Menu đã được bật"
},
@ -53,7 +53,7 @@
"later": "Để sau",
"restart-now": "Khởi động lại ngay"
},
"detail": "Tiện ích mở rộng \"{{pluginName}}\" yêu cầu khởi động lại ứng dụng để áp dụng",
"detail": "Phần mở rộng \"{{pluginName}}\" yêu cầu khởi động lại ứng dụng để áp dụng",
"message": "\"{{pluginName}}\" cần khởi động lại",
"title": "Yêu cầu khởi động lại"
},
@ -74,7 +74,7 @@
"ok": "Đồng ý"
},
"detail": "Đã có phiên bản mới hơn, bạn có thể tải xuống tại {{downloadLink}}",
"message": "Đã có phiên bản mới",
"message": "Đã có một phiên bản mới",
"title": "Cập nhật có sẵn"
}
},
@ -96,7 +96,7 @@
"advanced-options": {
"label": "Tùy chọn nâng cao",
"submenu": {
"auto-reset-app-cache": "Làm mới bộ nhớ đệm khi khởi động ứng dụng",
"auto-reset-app-cache": "Làm mới bộ nhớ đệm khi mở ứng dụng",
"disable-hardware-acceleration": "Vô hiệu hóa tăng tốc phần cứng",
"edit-config-json": "Chỉnh sửa config.json",
"override-user-agent": "Ghi đè User-Agent",
@ -106,7 +106,7 @@
"prompt": {
"label": "Nhập địa chỉ Proxy: (để trống nếu muốn tắt)",
"placeholder": "Ví dụ: SOCKS5://127.0.0.1:9999",
"title": "Cài proxy"
"title": "Cài đặt proxy"
}
},
"toggle-dev-tools": "Bật/tắt DevTools"
@ -116,19 +116,19 @@
"auto-update": "Tự động cập nhật",
"hide-menu": {
"dialog": {
"message": "Menu sẽ bị ẩn khi ứng dụng được chạy vào lần tới, dùng phím [Alt] để hiện nó (hoặc phím [`] nếu sử dụng in-app-menu)",
"message": "Menu sẽ bị ẩn trong lần khởi chạy tiếp theo, dùng phím [Alt] để hiện nó (hoặc phím [`] nếu sử dụng in-app-menu)",
"title": "Ẩn Menu đã được bật"
},
"label": "Ẩn Menu"
},
"language": {
"dialog": {
"message": "Ngôn ngữ sẽ được thay đổi sau khi ứng dụng khởi động lại",
"message": "Ngôn ngữ sẽ được thay đổi sau khi khởi động lại ứng dụng",
"title": "Ngôn ngữ đã thay đổi"
},
"label": "Ngôn ngữ",
"submenu": {
"to-help-translate": "Bạn muốn giúp dịch? Bấm vào đây"
"to-help-translate": "Bạn muốn hỗ trợ dịch? Bấm vào đây"
}
},
"resume-on-start": "Tiếp tục bài hát cuối cùng khi ứng dụng khởi động",
@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "Tinh chỉnh hình ảnh",
"submenu": {
"custom-window-title": {
"label": "Tiêu đề cửa sổ tùy chỉnh",
"prompt": {
"label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)",
"placeholder": "Ví dụ: Youtube Music"
}
},
"like-buttons": {
"default": "Mặc định",
"force-show": "Tập trung hiển thị",
@ -163,7 +170,7 @@
"cancel": "Hủy",
"remove": "Loại bỏ"
},
"remove-theme": "Bạn có chắc muốn loại bỏ chủ đề tùy chỉnh không?",
"remove-theme": "Bạn có chắc muốn loại bỏ chủ đề tùy chỉnh này không?",
"remove-theme-message": "Tùy chọn này sẽ loại bỏ chủ đề tùy chỉnh"
},
"label": "Chủ đề",
@ -186,7 +193,7 @@
"submenu": {
"force-reload": "Buộc tải lại",
"reload": "Tải lại",
"reset-zoom": "Kích thước thực",
"reset-zoom": "Đặt lại",
"toggle-fullscreen": "Bật chế độ toàn màn hình",
"zoom-in": "Phóng to",
"zoom-out": "Thu nhỏ"
@ -202,7 +209,7 @@
"show": "Hiện cửa sổ",
"tooltip": {
"default": "YouTube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"with-song-info": "YouTube Music: {{title}} - {{artist}}"
}
}
},
@ -219,7 +226,7 @@
"name": "Chặn quảng cáo"
},
"album-actions": {
"description": "Thêm nút hủy không thích, không thích, thích và không thích để áp dụng cho tất cả danh sách phát hoặc album",
"description": "Thêm nút Hủy không thích, Không thích, Thích và Hủy thích để áp dụng cho tất cả bài hát trong danh sách phát hoặc album",
"name": "Tác vụ với album"
},
"album-color-theme": {
@ -279,6 +286,13 @@
},
"name": "Chế độ Môi trường xung quanh"
},
"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",
"name": "Amuse",
"response": {
"query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát."
}
},
"api-server": {
"description": "Thêm máy chủ API để điều khiển trình phát",
"dialog": {
@ -299,7 +313,7 @@
"label": "Xác thực ngay yêu cầu đầu tiên"
},
"none": {
"label": "Không/Chưa xác thực (Need context)"
"label": "Không xác thực"
}
}
},
@ -310,7 +324,7 @@
"label": "Cổng"
}
},
"name": "Máy chủ API [Beta]",
"name": "Máy chủ API [Thử nghiệm]",
"prompt": {
"hostname": {
"label": "Điền tên máy chủ (như 0.0.0.0) cho máy chủ API:",
@ -326,9 +340,33 @@
"description": "Áp dụng tính năng nén cho âm thanh (giảm âm lượng của phần to nhất của tín hiệu và tăng âm lượng của phần nhỏ nhất)",
"name": "Bộ nén âm thanh"
},
"auth-proxy-adapter": {
"description": "Ủng hộ cho mục đích duy trì dịch vụ xác minh proxy",
"menu": {
"disable": "Vô hiệu bộ chuyển đổi Proxy",
"enable": "Kích hoạt bộ chuyển đổi Proxy",
"hostname": {
"label": "Tên máy chủ"
},
"port": {
"label": "Cổng"
}
},
"name": "Bộ chuyển đổi xác minh máy chủ Proxy",
"prompt": {
"hostname": {
"label": "Nhập tên của máy chủ proxy lân cận (yêu cầu khởi động lại ứng dụng):",
"title": "Tên máy chủ Proxy"
},
"port": {
"label": "Nhập cổng của máy chủ proxy lận cận (bắt buộc khởi động lại ứng dụng):",
"title": "Cổng máy chủ Proxy"
}
}
},
"blur-nav-bar": {
"description": "Làm mờ và trong suốt thanh điều hướng",
"name": "Thanh điều hướng mờ"
"description": "Làm thanh điều hướng mờ và trong suốt",
"name": "Làm mờ thanh điều hướng"
},
"bypass-age-restrictions": {
"description": "Bỏ qua xác minh độ tuổi của YouTube",
@ -338,7 +376,7 @@
"description": "Bộ lựa chọn phụ đề cho các bài hát trên Youtube Music",
"menu": {
"autoload": "Tự động chọn phụ đề vừa sử dụng",
"disable-captions": "Không có phụ đề đặt làm mặc định"
"disable-captions": "Không có phụ đề làm mặc định"
},
"name": "Bộ lựa chọn phụ đề",
"prompt": {
@ -350,10 +388,15 @@
},
"templates": {
"title": "Mở lựa chọn phụ đề"
},
"toast": {
"caption-changed": "Phụ đề đã chuyển sang {{language}}",
"caption-disabled": "Tắt phụ đề",
"no-captions": "Không có phụ đề nào cho bài hát này"
}
},
"compact-sidebar": {
"description": "Luôn đặt thanh bên cạnh ở chế độ thu gọn",
"description": "Luôn đặt thanh bên ở chế độ thu gọn",
"name": "Thanh bên thu gọn"
},
"crossfade": {
@ -361,12 +404,12 @@
"menu": {
"advanced": "Nâng cao"
},
"name": "Xen kẽ [thử nghiệm]",
"name": "Xen kẽ [Thử nghiệm]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Xuất hiện mờ dần trong khoảng thời gian (ms)",
"fade-out-duration": "Khoảng thời gian hoát ra mờ dần (ms)",
"fade-in-duration": "Thời lượng mờ dần vào (ms)",
"fade-out-duration": "Thời lượng mờ dần ra (ms)",
"fade-scaling": {
"label": "Làm mờ theo tỉ lệ",
"linear": "Trực tuyến",
@ -378,10 +421,23 @@
}
}
},
"disable-autoplay": {
"description": "Bắt đầu bài hát khi ở chế độ \"tạm dừng\"",
"custom-output-device": {
"description": "Cài đặt cho thiết bị đầu ra tùy chỉnh cho bài hát",
"menu": {
"apply-once": "Áp dụng khi khởi động"
"device-selector": "Chọn thiết bị"
},
"name": "Thiết bị đầu ra tùy chỉnh",
"prompt": {
"device-selector": {
"label": "Chọn thiết bị phát làm đầu ra để dùng",
"title": "Chọn thiết bị đầu ra"
}
}
},
"disable-autoplay": {
"description": "Làm nhạc bắt đầu ở chế độ \"tạm dừng\". Ngoài ra có thể dừng nhạc khi khởi động ứng dụng (nếu có bật tính năng \"Tiếp tục bài hát cuối cùng khi ứng dụng khởi động\")",
"menu": {
"apply-once": "Chỉ áp dụng khi khởi động"
},
"name": "Tắt tự động phát"
},
@ -401,9 +457,17 @@
"hide-duration-left": "Ẩn thời lượng còn lại",
"hide-github-button": "Ẩn nút liên kết GitHub",
"play-on-youtube-music": "Phát trong Youtube Music",
"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": {
"label": "Văn bản trạng thái",
"submenu": {
"artist": "Đang nghe nhạc của {artist}",
"title": "Đang nghe nhạc {song title}",
"youtube-music": "Đang nghe Youtube Music"
}
}
},
"name": "Discord Rich Presence",
"name": "Tích hợp trạng thái Discord",
"prompt": {
"set-inactivity-timeout": {
"label": "Nhập thời gian chờ không hoạt động tính bằng giây:",
@ -446,8 +510,8 @@
"playlist-has-only-one-song": "Danh sách phát chỉ có một mục, tải trực tiếp",
"playlist-id-not-found": "Không tìm thấy ID danh sách phát",
"playlist-is-empty": "Danh sách phát trống",
"playlist-is-mix-or-private": "Lỗi lấy thông tin danh sách phát: đảm bảo danh sách phát không ở chế độ riêng tư hoặc danh sách phát \"Dành cho bạn\"\n\n{{error}}",
"preparing-file": "Đang chuẩn bị thư mục…",
"playlist-is-mix-or-private": "Lỗi lấy thông tin danh sách phát: hãy đảm bảo danh sách phát không ở chế độ riêng tư hoặc danh sách phát \"Dành cho bạn\"\n\n{{error}}",
"preparing-file": "Đang chuẩn bị tệp…",
"saving": "Đang lưu…",
"trying-to-get-playlist-id": "Đang lấy ID danh sách phát: {{playlistId}}",
"video-id-not-found": "Không tìm thấy video",
@ -473,8 +537,8 @@
}
},
"download-playlist": "Tải danh sách phát",
"presets": "Cài đặt sẵn",
"skip-existing": "Bỏ qua các tập tin hiện có"
"presets": "Tùy chọn định dạng",
"skip-existing": "Bỏ qua các tập tin đã có"
},
"name": "Trình tải xuống",
"renderer": {
@ -484,6 +548,18 @@
"button": "Tải xuống"
}
},
"equalizer": {
"description": "Thêm bộ chỉnh âm để điều chỉnh âm thanh cho trình phát nhạc",
"menu": {
"presets": {
"label": "Thiết lập có sẵn",
"list": {
"bass-booster": "Tăng âm trầm"
}
}
},
"name": "Bộ chỉnh âm"
},
"exponential-volume": {
"description": "Làm cho thanh trượt âm lượng theo cấp số nhân để dễ dàng chọn âm lượng thấp hơn.",
"name": "Âm lượng theo cấp số nhân"
@ -502,7 +578,7 @@
"lyrics-genius": {
"description": "Thêm hỗ trợ lời bài hát cho hầu hết các bài hát",
"menu": {
"romanized-lyrics": "Lời bài hát La Mã"
"romanized-lyrics": "Chuyển lời bài hát sang chữ Latin"
},
"name": "Lời bài hát từ Genius",
"renderer": {
@ -557,7 +633,15 @@
},
"navigation": {
"description": "Mũi tên điều hướng Tiếp theo/Quay lại được tích hợp trực tiếp trong giao diện, giống như trong trình duyệt yêu thích của bạn",
"name": "Điều hướng"
"name": "Điều hướng",
"templates": {
"back": {
"title": "Đi đến trang trước"
},
"forward": {
"title": "Đi đến trang tiếp theo"
}
}
},
"no-google-login": {
"description": "Xóa các nút và liên kết đăng nhập Google khỏi giao diện",
@ -571,7 +655,7 @@
"label": "Cài đặt tương tác",
"submenu": {
"hide-button-text": "Ẩn tên nút",
"refresh-on-play-pause": "Làm mới khi phát/tạm dừng",
"refresh-on-play-pause": "Làm mới khi Phát/Tạm dừng",
"tray-controls": "Mở/Đóng khi nhấp vào khay"
}
},
@ -581,18 +665,22 @@
},
"name": "Thông báo"
},
"performance-improvement": {
"description": "Cải thiện hiệu suất thông qua kích hoạt scripts thử nghiệm",
"name": "Cải thiện hiệu năng [Thử nghiệm]"
},
"picture-in-picture": {
"description": "Cho phép chuyển ứng dụng sang chế độ ảnh trong ảnh",
"menu": {
"always-on-top": "Luôn ở trên cùng",
"hotkey": {
"label": "Phím nóng",
"label": "Phím tắt",
"prompt": {
"keybind-options": {
"hotkey": "Phím nóng"
"hotkey": "Phím tắt"
},
"label": "Chọn phím nóng để chuyển đổi ảnh trong ảnh",
"title": "Phím nóng ảnh trong ảnh"
"label": "Chọn phím tắt để chuyển đổi ảnh trong ảnh",
"title": "Phím tắt ảnh trong ảnh"
}
},
"save-window-position": "Lưu vị trí cửa sổ",
@ -640,19 +728,24 @@
"quality-changer": {
"detail": "Chất lượng hiện tại: {{quality}}",
"message": "Chọn chất lượng video:",
"title": "Chọn chất lượng video:"
"title": "Chọn chất lượng video"
}
}
},
"description": "Cho phép thay đổi chất lượng video bằng một nút trên lớp phủ video",
"name": "Thay đổi chất lượng video"
"name": "Thay đổi chất lượng video",
"renderer": {
"quality-settings-button": {
"label": "Mở trình thay đổi chất lượng"
}
}
},
"scrobbler": {
"description": "Thêm hỗ trợ scrobbling (v.v. Last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Không thể xác minh với \nẨn thông báo cho đến lần bật ứng dụng tiếp theo.",
"message": "Không thể xác minh với Last.fm \nẨn thông báo cho đến lần bật ứng dụng tiếp theo.",
"title": "Xác minh thất bại"
}
}
@ -664,6 +757,8 @@
"listenbrainz": {
"token": "Nhập mã người dùng ListenBrainz"
},
"scrobble-alternative-artist": "Dùng nghệ sĩ thay thế",
"scrobble-alternative-title": "Dùng tiêu đề thay thế",
"scrobble-other-media": "Scrobber nội dung khác"
},
"name": "Scrobbler",
@ -700,42 +795,46 @@
}
},
"skip-disliked-songs": {
"description": "Bỏ qua những bài hát không thích",
"name": "Bỏ qua những bài hát không thích"
"description": "Tự động bỏ qua những bài hát bạn nhấn không thích",
"name": "Bỏ qua bài hát không thích"
},
"skip-silences": {
"description": "Tự động bỏ qua các đoạn im lặng trong bài hát",
"name": "Bỏ qua đoạn im lặng"
},
"sponsorblock": {
"description": "Tự động bỏ qua các phần không phải âm nhạc như phần giới thiệu/kết thúc hoặc các phần của video nhạc mà bài hát không được phát",
"description": "Tự động bỏ qua các phần không phải âm nhạc như phần intro/outro hoặc các phần không được phát của video nhạc",
"name": "SponsorBlock"
},
"synced-lyrics": {
"description": "Cung cấp lời bài hát được đồng bộ hoá với các bài hát, sử dụng những nhà cung cấp như LRClib.",
"description": "Cung cấp lời được đồng bộ với bài hát, sử dụng các nhà cung cấp như LRClib.",
"errors": {
"fetch": "⚠️ - Đã xảy ra lỗi khi tìm lời bài hát, Vui lòng thử lại sau.",
"not-found": "⚠️ - Không tìm thấy lời cho bài hát này."
"fetch": "⚠️\t\tĐã xảy ra lỗi khi tìm lời bài hát.\n\tVui lòng thử lại sau.",
"not-found": "⚠️ Không tìm thấy lời cho bài hát này."
},
"menu": {
"default-text-string": {
"label": "Kí tự mặc định giữa các lời bài hát",
"label": "Kí tự giữa các lời bài hát",
"tooltip": "Chọn kí tự mặc định cho khoảng trống giữa các lời bài hát"
},
"line-effect": {
"label": "Kiểu đường thẳng",
"label": "Kiểu lời nhạc",
"submenu": {
"fancy": {
"label": "Màu mè",
"tooltip": "Làm đoạn lời nhạc đang nghe to hơn và nổi bật hơn"
},
"focus": {
"label": "Tập trung",
"tooltip": "Chỉ làm cho dòng hiện tại có màu trắng"
},
"offset": {
"label": "Độ lệch",
"tooltip": "Độ lệch bên phải của dòng hiện tại"
"label": "Lệch",
"tooltip": "Làm dòng hiện tại lệch sang bên phải"
},
"scale": {
"label": "Tỉ lệ",
"tooltip": "Áp dng tỉ lệ cho dòng hiện tại"
"label": "Phóng to",
"tooltip": "Làm dòng hiện tại to hơn các dòng khác"
}
},
"tooltip": "Chọn kiểu để áp dụng cho dòng hiện tại"
@ -744,6 +843,18 @@
"label": "Làm cho lời bài hát được đồng bộ hoàn hảo",
"tooltip": "Tính toán chính xác đến mili giây thời gian hiển thị dòng tiếp theo (có thể có tác động nhỏ đến hiệu suất)"
},
"preferred-provider": {
"label": "Nhà cung cấp ưa thích",
"none": {
"label": "Không có",
"tooltip": "Không có nhà cung cấp ưu thích"
},
"tooltip": "Chọn nhà cung cấp lời bài hát mặc định để sử dụng"
},
"romanization": {
"label": "Chuyển lời bài hát sang chữ Latin",
"tooltip": "Nếu lời bài hát đang ở ngôn ngữ khác, thử hiển thị phiên bản bảng chữ cái La-tinh."
},
"show-lyrics-even-if-inexact": {
"label": "Hiển thị lời bài hát ngay cả khi không chính xác",
"tooltip": "Nếu không tìm thấy bài hát, plugin sẽ thử lại bằng truy vấn tìm kiếm khác.\nKết quả từ lần thử thứ hai có thể không chính xác."
@ -761,23 +872,48 @@
"warnings": {
"duration-mismatch": "⚠️ - Lời bài hát có thể không đồng bộ do thời lượng không khớp.",
"inexact": "⚠️ - Lời bài hát này có thể không chính xác",
"instrumental": "⚠️ - Đây là một bài hát trình diễn bằng nhạc khí"
"instrumental": "⚠️ - Đây là một bài hát không lời"
}
},
"taskbar-mediacontrol": {
"description": "Kiểm soát phát lại từ thanh tác vụ Windows của bạn",
"name": "Kiểm soát phương tiện trên thanh tác vụ"
"description": "Điều khiển nhạc từ cửa sổ xem trước trên thanh tác vụ Windows của bạn",
"name": "Điều khiển phương tiện trên thanh tác vụ"
},
"touchbar": {
"description": "Thêm tiện ích TouchBar cho người dùng macOS",
"name": "TouchBar"
},
"transparent-player": {
"description": "Làm cho cửa sổ ứng dụng có hiệu ứng trong suốt",
"menu": {
"opacity": {
"label": "Độ mờ",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Kiểu nền",
"submenu": {
"acrylic": "Acrylic",
"mica": "Mica",
"none": "Không có",
"tabbed": "Tabbed"
}
}
},
"name": "Trình phát trong suốt"
},
"tuna-obs": {
"description": "Tích hợp với plugin Tuna của OBS",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Ngăn trình phát nhạc xuất hiện đột ngột khi phát một bài hát",
"name": "Không hiện trình phát nhạc khi phát"
},
"video-toggle": {
"description": "Thêm nút để chuyển giữa chế độ Video/Bài hát. Cũng có thể tùy ý xóa toàn bộ tab video",
"description": "Thêm nút để chuyển giữa chế độ Video/Bài hát. Cũng có thể ẩn toàn bộ video",
"menu": {
"align": {
"label": "Căn chỉnh",
@ -787,27 +923,28 @@
"right": "Phải"
}
},
"force-hide": "Buộc loại bỏ tab video",
"force-hide": "Buộc ẩn video",
"mode": {
"label": "Chế độ",
"submenu": {
"custom": "Chuyển đổi tùy chỉnh",
"custom": "Tùy chỉnh",
"disabled": "Vô hiệu hoá",
"native": "Chuyển đổi gốc"
"native": "Gốc"
}
}
},
"name": "Chuyển đổi video",
"templates": {
"button": "Bài hát"
"button-song": "Bài hát",
"button-video": "Video"
}
},
"visualizer": {
"description": "Thêm trình hiển th cho trình phát",
"description": "Hiển thị sóng nhạc thay thế cho video (hay \"Music visualizer\")",
"menu": {
"visualizer-type": "Loại trình hiển thị"
"visualizer-type": "Loại Sóng nhạc"
},
"name": "Trình hiển thị"
"name": "Sóng nhạc"
}
}
}

View File

@ -150,6 +150,13 @@
"visual-tweaks": {
"label": "视觉调整",
"submenu": {
"custom-window-title": {
"label": "自定义窗口标题",
"prompt": {
"label": "输入自定义窗口标题:(留空表示停用)",
"placeholder": "示例YouTube Music"
}
},
"like-buttons": {
"default": "默认",
"force-show": "强制显示",
@ -333,6 +340,30 @@
"description": "对音频应用压缩(压低响亮部分,提升柔和部分)",
"name": "音频压缩器"
},
"auth-proxy-adapter": {
"description": "支持使用需要身份验证的代理",
"menu": {
"disable": "禁用代理适配",
"enable": "启用代理适配",
"hostname": {
"label": "主机名"
},
"port": {
"label": "端口"
}
},
"name": "认证代理适配",
"prompt": {
"hostname": {
"label": "请输入本地代理服务器的主机名(需要重启):",
"title": "代理主机名"
},
"port": {
"label": "请输入本地代理服务器的端口号(需要重启):",
"title": "代理端口"
}
}
},
"blur-nav-bar": {
"description": "让导航栏透明及模糊",
"name": "模糊导航栏"
@ -357,6 +388,11 @@
},
"templates": {
"title": "开启字幕选择器"
},
"toast": {
"caption-changed": "字幕语言更改为 {{language}}",
"caption-disabled": "停用了字幕",
"no-captions": "这首歌没有字幕"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "配置歌曲的自定义输出媒体设备",
"menu": {
"device-selector": "选择设备"
},
"name": "自定义输出设备",
"prompt": {
"device-selector": {
"label": "选择要使用的输出媒体设备",
"title": "选择输出设备"
}
}
},
"disable-autoplay": {
"description": "让曲目开始时处于 “暂停” 模式",
"menu": {
@ -408,7 +457,15 @@
"hide-duration-left": "隐藏剩余时长",
"hide-github-button": "隐藏 GitHub 链接按钮",
"play-on-youtube-music": "转至 YouTube Music 播放",
"set-inactivity-timeout": "设置非活跃时长"
"set-inactivity-timeout": "设置非活跃时长",
"set-status-display-type": {
"label": "状态文本",
"submenu": {
"artist": "在听 {artist}",
"title": "在听 {song title}",
"youtube-music": "在听 YouTube Music"
}
}
},
"name": "Discord Rich Presence 状态显示",
"prompt": {
@ -576,7 +633,15 @@
},
"navigation": {
"description": "如同浏览器般,在应用界面内直接显示前进/后退导航按钮",
"name": "导航"
"name": "导航",
"templates": {
"back": {
"title": "转到上一页"
},
"forward": {
"title": "转到下一页"
}
}
},
"no-google-login": {
"description": "从界面内移除 Google 登录按钮和链接",
@ -600,6 +665,10 @@
},
"name": "通知"
},
"performance-improvement": {
"description": "通过开启实验性脚本改进性能",
"name": "性能改进 [公测]"
},
"picture-in-picture": {
"description": "允许应用切换到画中画模式",
"menu": {
@ -664,7 +733,12 @@
}
},
"description": "允许在视频上显示切换画质按钮",
"name": "视频画质切换器"
"name": "视频画质切换器",
"renderer": {
"quality-settings-button": {
"label": "打开播放器音质更改程序"
}
}
},
"scrobbler": {
"description": "添加歌曲追踪支持(如 Last.fm 和 Listenbrainz",
@ -683,6 +757,8 @@
"listenbrainz": {
"token": "输入 ListenBrainz 用户令牌"
},
"scrobble-alternative-artist": "使用替代艺术家",
"scrobble-alternative-title": "使用替代标题",
"scrobble-other-media": "记录其他媒体文件"
},
"name": "歌曲记录器",
@ -733,8 +809,8 @@
"synced-lyrics": {
"description": "透过 LRClib 等服务提供滚动歌词显示。",
"errors": {
"fetch": "⚠️ - 获取歌词时发生错误。请稍后再试。",
"not-found": "⚠️ - 未找到此歌曲的歌词。"
"fetch": "⚠️ 获取歌词时发生错误。\n 请稍后再试。",
"not-found": "⚠️ 未找到此歌曲的歌词。"
},
"menu": {
"default-text-string": {
@ -744,6 +820,10 @@
"line-effect": {
"label": "歌词行特效",
"submenu": {
"fancy": {
"label": "Fancy",
"tooltip": "在当前行上使用大的、类似应用的效果"
},
"focus": {
"label": "高亮",
"tooltip": "仅将当前歌词行显示为白色"
@ -763,6 +843,18 @@
"label": "让滚动歌词完全同步",
"tooltip": "以毫秒精度估算下句歌词的显示时间(可能对性能有小幅影响)"
},
"preferred-provider": {
"label": "首选歌词源",
"none": {
"label": "无",
"tooltip": "没有首选的歌词源"
},
"tooltip": "选择默认要用的源"
},
"romanization": {
"label": "将歌词罗马化",
"tooltip": "如果歌词以不同语言显示,试着展示拉丁字母版本。"
},
"show-lyrics-even-if-inexact": {
"label": "即使时值不精确依然显示歌词",
"tooltip": "若首次搜索未找到该歌曲的歌词,插件将尝试用不同的查询方式重新获取。\n重试查询的结果可能不精确。"
@ -791,10 +883,35 @@
"description": "为 macOS 用户启用 TouchBar 支持",
"name": "TouchBar"
},
"transparent-player": {
"description": "把应用窗口变透明",
"menu": {
"opacity": {
"label": "不透明",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "类型",
"submenu": {
"acrylic": "亚克力",
"mica": "云母",
"none": "无",
"tabbed": "标签"
}
}
},
"name": "透明播放器"
},
"tuna-obs": {
"description": "与 OBS 的 Tuna 插件集成",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "防止播放器在播放歌曲时弹出",
"name": "非侵扰式播放器"
},
"video-toggle": {
"description": "增加视频/音频模式间的切换按钮。兼具移除整个视频页面的功能",
"menu": {
@ -818,7 +935,8 @@
},
"name": "视频切换开关",
"templates": {
"button": "歌曲"
"button-song": "歌曲",
"button-video": "视频"
}
},
"visualizer": {

View File

@ -27,7 +27,7 @@
"loaded": "i18n 已載入"
},
"second-instance": {
"receive-command": "使用協定來接收指令:「{{command}}」"
"receive-command": "使用通訊協定來接收指令:「{{command}}」"
},
"theme": {
"css-file-not-found": "CSS 檔案「{{cssFile}}」不存在,已忽略"
@ -53,17 +53,17 @@
"later": "稍後",
"restart-now": "立即重啟"
},
"detail": "\"{{pluginName}}\" 外掛需要重啟應用之後才會生效",
"detail": "外掛 \"{{pluginName}}\" 需要重啟應用才會生效",
"message": "\"{{pluginName}}\" 需要重啟應用",
"title": "需要重啟應用"
},
"unresponsive": {
"buttons": {
"quit": "離開",
"relaunch": "重新啟動",
"wait": "等一下"
"relaunch": "重啟應用",
"wait": "等"
},
"detail": "造成不便我們深表歉意!請選擇動作",
"detail": "造成不便我們深表歉意!請選擇動作:",
"message": "應用程式沒有回應",
"title": "視窗沒有回應"
},
@ -73,7 +73,7 @@
"download": "前往下載",
"ok": "略過"
},
"detail": "新版本已經推出,你可以至 {{downloadLink}} 下載",
"detail": "新版本已經推出,前往下載 {{downloadLink}}",
"message": "有新版本可用",
"title": "有可用的更新"
}
@ -84,8 +84,8 @@
"label": "導覽列",
"submenu": {
"copy-current-url": "複製當前頁面的網址",
"go-back": "回上一頁",
"go-forward": "回到下一頁",
"go-back": "回上一頁",
"go-forward": "前往下一頁",
"quit": "退出",
"restart": "重啟應用"
}
@ -96,7 +96,7 @@
"advanced-options": {
"label": "進階選項",
"submenu": {
"auto-reset-app-cache": "啟動時重設應用快取",
"auto-reset-app-cache": "啟動時清除應用程式快取",
"disable-hardware-acceleration": "關閉硬體加速",
"edit-config-json": "編輯 config.json",
"override-user-agent": "覆寫使用者代理",
@ -105,11 +105,11 @@
"label": "設定代理伺服器",
"prompt": {
"label": "輸入代理伺服器位置:(留空以停用本設定)",
"placeholder": "範例:SOCKS5://127.0.0.1:9999",
"placeholder": "例: SOCKS5://127.0.0.1:9999",
"title": "設定代理伺服器"
}
},
"toggle-dev-tools": "切換開發人員工具"
"toggle-dev-tools": "開發人員工具"
}
},
"always-on-top": "最上層顯示",
@ -142,14 +142,21 @@
"label": "系統匣",
"submenu": {
"disabled": "已停用",
"enabled-and-hide-app": "啟用並最小化應用",
"enabled-and-show-app": "啟用並顯示應用",
"play-pause-on-click": "點時播放/暫停"
"enabled-and-hide-app": "啟用並最小化應用程式",
"enabled-and-show-app": "啟用並顯示應用程式",
"play-pause-on-click": "點時播放/暫停"
}
},
"visual-tweaks": {
"label": "介面設定",
"submenu": {
"custom-window-title": {
"label": "客製化窗口標題",
"prompt": {
"label": "輸入客製化窗口標題: (留空讓其停用)",
"placeholder": "例如: YouTube 音樂"
}
},
"like-buttons": {
"default": "預設",
"force-show": "強制顯示",
@ -177,17 +184,17 @@
}
},
"plugins": {
"enabled": "啟用",
"enabled": "啟用",
"label": "外掛功能",
"new": "新的"
},
"view": {
"label": "視",
"label": "視",
"submenu": {
"force-reload": "強制重新整理",
"reload": "重新整理",
"reset-zoom": "重設大小",
"toggle-fullscreen": "全螢幕",
"toggle-fullscreen": "切換全螢幕",
"zoom-in": "放大",
"zoom-out": "縮小"
}
@ -198,11 +205,11 @@
"play-pause": "播放/暫停",
"previous": "上一首",
"quit": "關閉",
"restart": "重程式",
"restart": "重新啟動應用程式",
"show": "顯示視窗",
"tooltip": {
"default": "Youtube Music",
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
"default": "YouTube 音樂",
"with-song-info": "YouTube 音樂: {{artist}} - {{title}}"
}
}
},
@ -235,7 +242,7 @@
"name": "隨歌曲色調變更主題"
},
"ambient-mode": {
"description": "影片周圍背景根據影片內容改變顏色, 讓觀眾在觀賞影片時更有臨場感",
"description": "影片周圍背景根據影片內容改變顏色讓觀眾在觀賞影片時更有臨場感",
"menu": {
"blur-amount": {
"label": "模糊等級",
@ -280,10 +287,10 @@
"name": "微光效果"
},
"amuse": {
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 Youtube Music 現正播放資訊",
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 YouTube Music 現正播放資訊",
"name": "Amuse",
"response": {
"query": "Amuse API 伺服器正在運中,使用 /query 以取得歌曲資訊。"
"query": "Amuse API 伺服器正在運中,使用 /query 以取得歌曲資訊。"
}
},
"api-server": {
@ -294,7 +301,7 @@
"allow": "允許",
"deny": "拒絕"
},
"message": "允許 {{ID}} ({{origin}}) 訪問 API 嗎?",
"message": "允許 {{ID}} ({{origin}}) 存取 API 嗎?",
"title": "API 驗證請求"
}
},
@ -314,7 +321,7 @@
"label": "主機名稱"
},
"port": {
"label": "接口"
"label": "連接埠"
}
},
"name": "API 伺服器 [Beta]",
@ -324,39 +331,68 @@
"title": "主機名稱"
},
"port": {
"label": "輸入 API 伺服器接口",
"title": "接口"
"label": "輸入 API 伺服器連接埠",
"title": "連接埠"
}
}
},
"audio-compressor": {
"description": "使用音效壓縮 (大聲部份的音量降低, 柔和部份的音量提高)",
"description": "使用音效壓縮 (大聲部份的音量降低柔和部份的音量提高)",
"name": "音效壓縮器"
},
"auth-proxy-adapter": {
"description": "支援使用 Proxy 驗證服務",
"menu": {
"disable": "中斷 Proxy 連線",
"enable": "啟用 Proxy 連線",
"hostname": {
"label": "主機名稱"
},
"port": {
"label": "連接埠"
}
},
"name": "Proxy 連線驗證",
"prompt": {
"hostname": {
"label": "本地 Proxy 伺服器主機名稱(需要重啟應用):",
"title": "Proxy 主機名稱"
},
"port": {
"label": "本地 Proxy 伺服器連接埠(需要重啟應用):",
"title": "Proxy 連接埠"
}
}
},
"blur-nav-bar": {
"description": "使導覽列透明及模糊",
"name": "模糊導覽列"
},
"bypass-age-restrictions": {
"description": "繞過Youtube年齡驗證",
"description": "繞過 YouTube 年齡驗證",
"name": "繞過年齡驗證"
},
"captions-selector": {
"description": "音軌標題選擇",
"description": "Youtube Music 音軌字幕選項",
"menu": {
"autoload": "自動選擇最後使用的標題",
"disable-captions": "預設無標題"
"autoload": "自動選擇上次使用的字幕",
"disable-captions": "預設無字幕"
},
"name": "標題選擇器",
"name": "字幕選項",
"prompt": {
"selector": {
"label": "目前標題語言:{{language}}",
"label": "當前語言: {{language}}",
"none": "無",
"title": "選擇標題語言"
"title": "選擇字幕語言"
}
},
"templates": {
"title": "打開標題選擇器"
"title": "開啟字幕選項"
},
"toast": {
"caption-changed": "字幕語言已更改至 {{language}}",
"caption-disabled": "字幕已停用",
"no-captions": "該首歌曲無可用的字幕"
}
},
"compact-sidebar": {
@ -385,6 +421,19 @@
}
}
},
"custom-output-device": {
"description": "為歌曲設定自訂輸出媒體裝置",
"menu": {
"device-selector": "選擇裝置"
},
"name": "自訂輸出裝置",
"prompt": {
"device-selector": {
"label": "選擇要使用的輸出媒體裝置",
"title": "選擇輸出裝置"
}
}
},
"disable-autoplay": {
"description": "讓歌曲開始時為暫停模式",
"menu": {
@ -394,21 +443,29 @@
},
"discord": {
"backend": {
"already-connected": "已嘗試可用連",
"connected": "已連至 Discord",
"disconnected": "與 Discord 斷開連接"
"already-connected": "已嘗試可用連",
"connected": "已連至 Discord",
"disconnected": "與 Discord 中斷連線"
},
"description": "使用 Discord 狀態與你的好友分享你正在收聽的音樂",
"menu": {
"auto-reconnect": "自動重新連",
"auto-reconnect": "自動重新連",
"clear-activity": "清除狀態",
"clear-activity-after-timeout": "在音樂暫停後清除狀態",
"connected": "已連",
"disconnected": "已斷開連",
"connected": "已連",
"disconnected": "已斷開連",
"hide-duration-left": "隱藏音樂剩餘時間狀態",
"hide-github-button": "隱藏 Github 頁面按鈕",
"hide-github-button": "隱藏 GitHub 頁面按鈕",
"play-on-youtube-music": "顯示 Play on YouTube Music 按鈕",
"set-inactivity-timeout": "設定閒置狀態時長"
"set-inactivity-timeout": "設定閒置狀態時長",
"set-status-display-type": {
"label": "狀態文字",
"submenu": {
"artist": "正在聽 {artist}",
"title": "正在聽 {song title}",
"youtube-music": "正在聽 YouTube Music"
}
}
},
"name": "Discord 狀態",
"prompt": {
@ -425,8 +482,8 @@
"buttons": {
"ok": "完成"
},
"message": "啊!抱歉,下載失敗了…",
"title": "下載出現錯誤!"
"message": "啊抱歉下載失敗了…",
"title": "下載出現錯誤"
},
"start-download-playlist": {
"buttons": {
@ -448,15 +505,15 @@
"downloading-playlist": "正在下載播放清單 \"{{playlistTitle}}\" - 共 {{playlistSize}} 首歌 ({{playlistId}})",
"error-while-downloading": "無法下載 \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "資料夾 {{playlistFolder}} 已經存在",
"getting-playlist-info": "正在取播放清單資訊…",
"getting-playlist-info": "正在取播放清單資訊…",
"loading": "載入中…",
"playlist-has-only-one-song": "播放清單內只有一首歌曲, 將直接下載",
"playlist-has-only-one-song": "播放清單內只有一首歌曲將直接下載",
"playlist-id-not-found": "沒有找到播放清單 ID",
"playlist-is-empty": "播放清單是空的",
"playlist-is-mix-or-private": "取播放清單資訊時發生錯誤:請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
"playlist-is-mix-or-private": "取播放清單資訊時發生錯誤:請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
"preparing-file": "正在準備檔案…",
"saving": "儲存中…",
"trying-to-get-playlist-id": "正在嘗試取播放清單 ID{{playlistId}}",
"trying-to-get-playlist-id": "正在嘗試取播放清單 ID{{playlistId}}",
"video-id-not-found": "未能找到該影片",
"writing-id3": "正在寫入 ID3 標籤…"
}
@ -510,7 +567,7 @@
"in-app-menu": {
"description": "使選單列變更為黑色或隨主題變色",
"menu": {
"hide-dom-window-controls": "隱藏DOM視窗控制"
"hide-dom-window-controls": "隱藏 DOM 視窗控制"
},
"name": "程式內選單列"
},
@ -525,13 +582,13 @@
},
"name": "第三方字幕",
"renderer": {
"fetched-lyrics": "為 Genius 取字幕"
"fetched-lyrics": "為 Genius 取字幕"
}
},
"music-together": {
"description": "與他人共享播放清單。當發起人播放歌曲時,其他成員也會同步收聽",
"description": "與他人共享播放清單。當主持人播放歌曲時,其他成員也會同步收聽",
"dialog": {
"enter-host": "輸入發起人 ID"
"enter-host": "輸入主持人 ID"
},
"internal": {
"save": "儲存",
@ -539,11 +596,11 @@
"unknown-user": "未知使用者"
},
"menu": {
"click-to-copy-id": "複製發起人 ID",
"click-to-copy-id": "複製主持人 ID",
"close": "同步關閉音樂",
"connected-users": "已連的使用者",
"disconnect": "斷開連共享音樂",
"empty-user": "無已連的使用者",
"connected-users": "已連的使用者",
"disconnect": "斷開連共享音樂",
"empty-user": "無已連的使用者",
"host": "發起共享音樂",
"join": "加入共享音樂",
"permission": {
@ -551,23 +608,23 @@
"host-only": "不允許加入的使用者控制播放清單及播放控制",
"playlist": "只允許加入的使用者控制播放清單"
},
"set-permission": "切換共享音樂播放權",
"set-permission": "切換共享音樂播放許可權",
"status": {
"disconnected": "已斷開連",
"guest": "以使用者身份加入",
"host": "以發起人身份加入"
"disconnected": "已斷開連",
"guest": "以訪客身份加入",
"host": "以主持人身份加入"
}
},
"name": "共享音樂 [Beta]",
"toast": {
"add-song-failed": "歌曲加入失敗",
"closed": "關閉共享音樂",
"disconnected": "共享音樂已斷開連",
"disconnected": "共享音樂已斷開連",
"host-failed": "發起共享音樂失敗",
"id-copied": "已複製發起人 ID",
"id-copy-failed": "複製發起人 ID 失敗",
"id-copied": "已複製主持人 ID",
"id-copy-failed": "複製主持人 ID 失敗",
"join-failed": "加入共享音樂失敗",
"joined": "加入共享音樂",
"joined": "加入共享音樂",
"permission-changed": "共享音樂播放權限已切換至 \"{{permission}}\"",
"remove-song-failed": "歌曲移除失敗",
"user-connected": "{{name}} 已加入共享音樂",
@ -576,30 +633,42 @@
},
"navigation": {
"description": "允許應用程式上方顯示上一頁/下一頁按鈕",
"name": "導覽列"
"name": "導覽列",
"templates": {
"back": {
"title": "回到上一頁"
},
"forward": {
"title": "前往下一頁"
}
}
},
"no-google-login": {
"description": "移除 Google 登入按鈕及連結",
"name": "停用 Google 登入"
},
"notifications": {
"description": "在歌曲播放時送一個系統通知 (可互動通知僅限Windows)",
"description": "在歌曲播放時送一個系統通知 (可互動通知僅限 Windows)",
"menu": {
"interactive": "可互動通知",
"interactive-settings": {
"label": "通知互動設定",
"submenu": {
"hide-button-text": "隱藏按鈕文字",
"refresh-on-play-pause": "在播放/暫停時刷新",
"tray-controls": "點系統閘圖示時開/關閉"
"refresh-on-play-pause": "在播放/暫停時重新整理",
"tray-controls": "點系統閘圖示時開/關閉"
}
},
"priority": "通知優先權",
"toast-style": "通知樣式",
"unpause-notification": "在取消暫停時送通知"
"unpause-notification": "在取消暫停時送通知"
},
"name": "歌曲播放通知"
},
"performance-improvement": {
"description": "使用實驗性的腳本以最佳化效能",
"name": "效能最佳化 [Beta]"
},
"picture-in-picture": {
"description": "允許應用程式切換至子母畫面模式",
"menu": {
@ -624,7 +693,7 @@
}
},
"playback-speed": {
"description": "傷心的人別聽慢歌, 新增一個滑桿控制歌曲速度",
"description": "傷心的人別聽慢歌新增一個滑桿控制歌曲速度",
"name": "控制歌曲速度",
"templates": {
"button": "速度"
@ -664,14 +733,19 @@
}
},
"description": "允許在影片內進行畫質更改",
"name": "允許變更影片畫質"
"name": "允許變更影片畫質",
"renderer": {
"quality-settings-button": {
"label": "開啟畫質調整器"
}
}
},
"scrobbler": {
"description": "額外新增 scrobbling 支援 (例如last.fm, Listenbrainz)",
"dialog": {
"lastfm": {
"auth-failed": {
"message": "Last.fm認證失敗\n將隱藏彈窗直到重啟。",
"message": "Last.fm 認證失敗\n將隱藏彈出視窗直到重啟。",
"title": "認證失敗"
}
}
@ -683,13 +757,15 @@
"listenbrainz": {
"token": "輸入 ListenBrainz 使用者憑證"
},
"scrobble-other-media": "紀錄其他媒體文件"
"scrobble-alternative-artist": "使用替代的藝人",
"scrobble-alternative-title": "使用替代歌曲標題",
"scrobble-other-media": "紀錄其他媒體檔案"
},
"name": "Scrobbler",
"prompt": {
"lastfm": {
"api-key": "Last.fm API 金鑰",
"api-secret": "Last.fm API 鑰"
"api-secret": "Last.fm API 鑰"
},
"listenbrainz": {
"token": {
@ -700,12 +776,12 @@
}
},
"shortcuts": {
"description": "使用全域快捷鍵控制音樂 (播放/暫停/下一首/上一首) + 透過覆寫媒體快捷鍵停用媒體OSD + 允許Ctrl/CMD + F來搜尋 + 支援Linux MPRIS媒體快捷鍵 + 更多自訂快捷鍵給進階使用者",
"description": "使用全域快捷鍵控制音樂 (播放/暫停/下一首/上一首) + 透過覆寫媒體快捷鍵停用媒體 OSD + 允許 Ctrl/CMD + F 來搜尋 + 支援 Linux MPRIS 媒體快捷鍵 + 更多自訂快捷鍵給進階使用者",
"menu": {
"override-media-keys": "覆寫媒體快捷鍵",
"set-keybinds": "設定全域歌曲控制"
},
"name": "Shortcuts (& MPRIS)",
"name": "快捷鍵 (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
@ -728,7 +804,7 @@
},
"sponsorblock": {
"description": "自動跳過贊助片段",
"name": "贊助阻擋"
"name": "SponsorBlock"
},
"synced-lyrics": {
"description": "使用 LRClib 等管道提供歌詞同步顯示。",
@ -746,26 +822,38 @@
"submenu": {
"fancy": {
"label": "絢麗",
"tooltip": "使用較為接近原生樣式並且放大前該行歌詞"
"tooltip": "使用較為接近原生樣式並且放大前該行歌詞"
},
"focus": {
"label": "高亮",
"tooltip": "高亮當前的歌詞"
"label": "聚焦",
"tooltip": "聚焦目前的歌詞"
},
"offset": {
"label": "凸行",
"tooltip": "凸行前的歌詞"
"tooltip": "凸行前的歌詞"
},
"scale": {
"label": "放大",
"tooltip": "放大前的歌詞"
"tooltip": "放大前的歌詞"
}
},
"tooltip": "選擇要使用的歌詞顯示效果"
},
"precise-timing": {
"label": "使歌詞完美同步",
"tooltip": "更精確的計算下一行歌詞的顯示(將會降低些許效能)"
"tooltip": "更精確的計算下一行歌詞的顯示 (將會降低些許效能)"
},
"preferred-provider": {
"label": "偏好提供者",
"none": {
"label": "無",
"tooltip": "沒有偏好的提供者"
},
"tooltip": "選擇要使用的預設提供者"
},
"romanization": {
"label": "羅馬拼音化歌詞",
"tooltip": "如果歌詞使用不同語言,嘗試使用拉丁文顯示。"
},
"show-lyrics-even-if-inexact": {
"label": "即使不精確依然強制顯示歌詞",
@ -792,13 +880,38 @@
"name": "工作列媒體控制"
},
"touchbar": {
"description": "為macOS使用者新增觸控列支援",
"description": "為 macOS 使用者新增觸控列支援",
"name": "觸控列 (Touchbar) 支援"
},
"transparent-player": {
"description": "讓應用程式視窗變為透明",
"menu": {
"opacity": {
"label": "不透明度",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "類型",
"submenu": {
"acrylic": "壓克力",
"mica": "雲母",
"none": "無",
"tabbed": "分頁式"
}
}
},
"name": "透明撥放器"
},
"tuna-obs": {
"description": "與 OBS 的 Tuna 外掛連",
"description": "與 OBS 的 Tuna 外掛連",
"name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "防止播放器介面在點選歌曲後彈出",
"name": "低干擾播放器介面"
},
"video-toggle": {
"description": "新增一個按鈕可以控制影片/歌曲切換和完全移除整個影片頁面的功能",
"menu": {
@ -812,7 +925,7 @@
},
"force-hide": "強制移除整個影片頁面",
"mode": {
"label": "式",
"label": "式",
"submenu": {
"custom": "自訂樣式",
"disabled": "停用",
@ -822,15 +935,16 @@
},
"name": "歌曲/影片切換",
"templates": {
"button": "歌曲"
"button-song": "歌曲",
"button-video": "影片"
}
},
"visualizer": {
"description": "新增一個視化音樂效果",
"description": "新增一個視化音樂效果",
"menu": {
"visualizer-type": "樣式"
"visualizer-type": "視覺化效果類型"
},
"name": "可視化音樂效果"
"name": "視覺化效果"
}
}
}

View File

@ -15,7 +15,7 @@ import {
type BrowserWindowConstructorOptions,
} from 'electron';
import enhanceWebRequest, {
BetterSession,
type BetterSession,
} from '@jellybrick/electron-better-web-request';
import is from 'electron-is';
import unhandled from 'electron-unhandled';
@ -29,7 +29,7 @@ import { allPlugins, mainPlugins } from 'virtual:plugins';
import { languageResources } from 'virtual:i18n';
import config from '@/config';
import * as config from '@/config';
import { refreshMenu, setApplicationMenu } from '@/menu';
import { fileExists, injectCSS, injectCSSAsFile } from '@/plugins/utils/main';
@ -57,14 +57,9 @@ import { loadI18n, setLanguage, t } from '@/i18n';
import ErrorHtmlAsset from '@assets/error.html?asset';
import type { PluginConfig } from '@/types/plugins';
import { defaultAuthProxyConfig } from '@/plugins/auth-proxy-adapter/config';
if (!is.macOS()) {
delete allPlugins['touchbar'];
}
if (!is.windows()) {
delete allPlugins['taskbar-mediacontrol'];
}
import type { PluginConfig } from '@/types/plugins';
// Catch errors and log them
unhandled({
@ -72,9 +67,6 @@ unhandled({
showDialog: false,
});
// Disable Node options if the env var is set
process.env.NODE_OPTIONS = '';
// Prevent window being garbage collected
let mainWindow: Electron.BrowserWindow | null;
autoUpdater.autoDownload = false;
@ -112,6 +104,11 @@ protocol.registerSchemesAsPrivileged([
{ 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
app.commandLine.appendSwitch('ozone-platform-hint', 'auto');
// SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt)
@ -122,6 +119,8 @@ app.commandLine.appendSwitch(
'enable-features',
'OverlayScrollbar,SharedArrayBuffer,UseOzonePlatform,WaylandWindowDecorations',
);
// Disable Fluent Scrollbar (for OverlayScrollbar)
app.commandLine.appendSwitch('disable-features', 'FluentScrollbar');
if (config.get('options.disableHardwareAcceleration')) {
if (is.dev()) {
console.log('Disabling hardware acceleration');
@ -134,22 +133,31 @@ if (is.linux()) {
// Overrides WM_CLASS for X11 to correspond to icon filename
app.setName('com.github.th_ch.youtube_music');
// Workaround for issue #2248
if (
process.env.XDG_SESSION_TYPE === 'wayland' ||
process.env.WAYLAND_DISPLAY
) {
app.commandLine.appendSwitch('disable-gpu-memory-buffer-video-frames');
}
// Stops chromium from launching its own MPRIS service
if (config.plugins.isEnabled('shortcuts')) {
if (await config.plugins.isEnabled('shortcuts')) {
app.commandLine.appendSwitch('disable-features', 'MediaSessionService');
}
}
if (config.get('options.proxy')) {
app.commandLine.appendSwitch('proxy-server', config.get('options.proxy'));
const authProxyEnabled = await config.plugins.isEnabled('auth-proxy-adapter');
let proxyToUse = '';
if (authProxyEnabled) {
// Use proxy from Auth-Proxy-Adapter plugin
const authProxyConfig = deepmerge(
defaultAuthProxyConfig,
config.get('plugins.auth-proxy-adapter') ?? {},
) as typeof defaultAuthProxyConfig;
const { hostname, port } = authProxyConfig;
proxyToUse = `socks5://${hostname}:${port}`;
} else if (config.get('options.proxy')) {
// Use global proxy settings
proxyToUse = config.get('options.proxy');
}
console.log(LoggerPrefix, `Using proxy: ${proxyToUse}`);
app.commandLine.appendSwitch('proxy-server', proxyToUse);
}
// Adds debug features like hotkeys for triggering dev tools and reload
@ -170,19 +178,23 @@ function onClosed() {
mainWindow = null;
}
ipcMain.handle('ytmd:get-main-plugin-names', () => Object.keys(mainPlugins));
ipcMain.handle('ytmd:get-main-plugin-names', async () =>
Object.keys(await mainPlugins()),
);
const initHook = async (win: BrowserWindow) => {
const allPluginStubs = await allPlugins();
const initHook = (win: BrowserWindow) => {
ipcMain.handle(
'ytmd:get-config',
(_, id: string) =>
deepmerge(
allPlugins[id].config ?? { enabled: false },
allPluginStubs[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {},
) as PluginConfig,
);
ipcMain.handle('ytmd:set-config', (_, name: string, obj: object) =>
config.setPartial(`plugins.${name}`, obj, allPlugins[name].config),
config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config),
);
config.watch((newValue, oldValue) => {
@ -201,7 +213,7 @@ const initHook = (win: BrowserWindow) => {
if (!isEqual) {
const oldConfig = oldPluginConfigList[id] as PluginConfig;
const config = deepmerge(
allPlugins[id].config ?? { enabled: false },
allPluginStubs[id].config ?? { enabled: false },
newPluginConfig ?? {},
) as PluginConfig;
@ -216,7 +228,7 @@ const initHook = (win: BrowserWindow) => {
forceUnloadMainPlugin(id, win);
}
if (allPlugins[id]?.restartNeeded) {
if (allPluginStubs[id]?.restartNeeded) {
showNeedToRestartDialog(id);
}
}
@ -237,8 +249,8 @@ const initHook = (win: BrowserWindow) => {
});
};
const showNeedToRestartDialog = (id: string) => {
const plugin = allPlugins[id];
const showNeedToRestartDialog = async (id: string) => {
const plugin = (await allPlugins())[id];
const dialogOptions: Electron.MessageBoxOptions = {
type: 'info',
@ -312,7 +324,7 @@ async function createMainWindow() {
const windowSize = config.get('window-size');
const windowMaximized = config.get('window-maximized');
const windowPosition: Electron.Point = config.get('window-position');
const useInlineMenu = config.plugins.isEnabled('in-app-menu');
const useInlineMenu = await config.plugins.isEnabled('in-app-menu');
const defaultTitleBarOverlayOptions: Electron.TitleBarOverlay = {
color: '#00000000',
@ -337,15 +349,17 @@ async function createMainWindow() {
delete decorations.titleBarStyle;
}
const win = new BrowserWindow({
const electronWindowSettings: Electron.BrowserWindowConstructorOptions = {
icon,
width: windowSize.width,
height: windowSize.height,
minWidth: 325,
minHeight: 425,
backgroundColor: '#000',
show: false,
webPreferences: {
contextIsolation: true,
preload: path.join(__dirname, '..', 'preload', 'preload.js'),
preload: path.join(__dirname, '..', 'preload', 'preload.cjs'),
...(isTesting()
? undefined
: {
@ -355,8 +369,11 @@ async function createMainWindow() {
}),
},
...decorations,
});
initHook(win);
};
const win = new BrowserWindow(electronWindowSettings);
await initHook(win);
initTheme(win);
await loadAllMainPlugins(win);
@ -580,6 +597,15 @@ app.once('browser-window-created', (_event, win) => {
win.webContents.on('will-prevent-unload', (event) => {
event.preventDefault();
});
const customWindowTitle = config.get('options.customWindowTitle');
if (customWindowTitle) {
win.on('page-title-updated', (event) => {
event.preventDefault();
win.setTitle(customWindowTitle);
});
}
});
app.on('window-all-closed', () => {
@ -601,12 +627,12 @@ app.on('activate', async () => {
}
});
const getDefaultLocale = (locale: string) =>
Object.keys(languageResources).includes(locale) ? locale : null;
const getDefaultLocale = async (locale: string) =>
Object.keys(await languageResources()).includes(locale) ? locale : null;
app.whenReady().then(async () => {
if (!config.get('options.language')) {
const locale = getDefaultLocale(app.getLocale());
const locale = await getDefaultLocale(app.getLocale());
if (locale) {
config.set('options.language', locale);
}
@ -747,7 +773,7 @@ app.whenReady().then(async () => {
const splited = decodeURIComponent(command).split(' ');
handleProtocol(splited.shift()!, splited);
handleProtocol(splited.shift()!, ...splited);
return;
}
@ -833,7 +859,7 @@ app.whenReady().then(async () => {
// Optimized for Mac OS X
if (is.macOS() && !config.get('options.appVisible')) {
app.dock.hide();
app.dock?.hide();
}
let forceQuit = false;

View File

@ -1,9 +1,9 @@
import { BrowserWindow, ipcMain } from 'electron';
import { type BrowserWindow, ipcMain } from 'electron';
import { deepmerge } from 'deepmerge-ts';
import { allPlugins, mainPlugins } from 'virtual:plugins';
import config from '@/config';
import * as config from '@/config';
import { LoggerPrefix, startPlugin, stopPlugin } from '@/utils';
import { t } from '@/i18n';
@ -20,13 +20,17 @@ const createContext = (
id: string,
win: BrowserWindow,
): BackendContext<PluginConfig> => ({
getConfig: () =>
getConfig: async () =>
deepmerge(
allPlugins[id].config ?? { enabled: false },
(await allPlugins())[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {},
) as PluginConfig,
setConfig: (newConfig) => {
config.setPartial(`plugins.${id}`, newConfig, allPlugins[id].config);
setConfig: async (newConfig) => {
config.setPartial(
`plugins.${id}`,
newConfig,
(await allPlugins())[id].config,
);
},
ipc: {
@ -96,7 +100,7 @@ export const forceLoadMainPlugin = async (
id: string,
win: BrowserWindow,
): Promise<void> => {
const plugin = mainPlugins[id];
const plugin = (await mainPlugins())[id];
if (!plugin) return;
try {
@ -133,7 +137,7 @@ export const loadAllMainPlugins = async (win: BrowserWindow) => {
const pluginConfigs = config.plugins.getPlugins();
const queue: Promise<void>[] = [];
for (const [plugin, pluginDef] of Object.entries(mainPlugins)) {
for (const [plugin, pluginDef] of Object.entries(await mainPlugins())) {
const config = deepmerge(pluginDef.config, pluginConfigs[plugin] ?? {});
if (config.enabled) {
queue.push(forceLoadMainPlugin(plugin, win));

View File

@ -1,7 +1,7 @@
import { deepmerge } from 'deepmerge-ts';
import { allPlugins } from 'virtual:plugins';
import config from '@/config';
import * as config from '@/config';
import { setApplicationMenu } from '@/menu';
import { LoggerPrefix } from '@/utils';
@ -17,19 +17,23 @@ const createContext = (
id: string,
win: BrowserWindow,
): MenuContext<PluginConfig> => ({
getConfig: () =>
getConfig: async () =>
deepmerge(
allPlugins[id].config ?? { enabled: false },
(await allPlugins())[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {},
) as PluginConfig,
setConfig: (newConfig) => {
config.setPartial(`plugins.${id}`, newConfig, allPlugins[id].config);
setConfig: async (newConfig) => {
config.setPartial(
`plugins.${id}`,
newConfig,
(await allPlugins())[id].config,
);
},
window: win,
refresh: async () => {
await setApplicationMenu(win);
if (config.plugins.isEnabled('in-app-menu')) {
if (await config.plugins.isEnabled('in-app-menu')) {
win.webContents.send('refresh-in-app-menu');
}
},
@ -37,7 +41,7 @@ const createContext = (
export const forceLoadMenuPlugin = async (id: string, win: BrowserWindow) => {
try {
const plugin = allPlugins[id];
const plugin = (await allPlugins())[id];
if (!plugin) return;
const menu = plugin.menu?.(createContext(id, win));
@ -68,7 +72,7 @@ export const forceLoadMenuPlugin = async (id: string, win: BrowserWindow) => {
export const loadAllMenuPlugins = async (win: BrowserWindow) => {
const pluginConfigs = config.plugins.getPlugins();
for (const [pluginId, pluginDef] of Object.entries(allPlugins)) {
for (const [pluginId, pluginDef] of Object.entries(await allPlugins())) {
const config = deepmerge(
pluginDef.config ?? { enabled: false },
pluginConfigs[pluginId] ?? {},

View File

@ -3,7 +3,7 @@ import { allPlugins, preloadPlugins } from 'virtual:plugins';
import { LoggerPrefix, startPlugin, stopPlugin } from '@/utils';
import config from '@/config';
import * as config from '@/config';
import { t } from '@/i18n';
@ -15,13 +15,17 @@ const loadedPluginMap: Record<
PluginDef<unknown, unknown, unknown>
> = {};
const createContext = (id: string): PreloadContext<PluginConfig> => ({
getConfig: () =>
getConfig: async () =>
deepmerge(
allPlugins[id].config ?? { enabled: false },
(await allPlugins())[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {},
) as PluginConfig,
setConfig: (newConfig) => {
config.setPartial(`plugins.${id}`, newConfig, allPlugins[id].config);
setConfig: async (newConfig) => {
config.setPartial(
`plugins.${id}`,
newConfig,
(await allPlugins())[id].config,
);
},
});
@ -48,7 +52,7 @@ export const forceUnloadPreloadPlugin = async (id: string) => {
export const forceLoadPreloadPlugin = async (id: string) => {
try {
const plugin = preloadPlugins[id];
const plugin = (await preloadPlugins())[id];
if (!plugin) return;
const hasStarted = await startPlugin(id, plugin, {
@ -78,10 +82,10 @@ export const forceLoadPreloadPlugin = async (id: string) => {
}
};
export const loadAllPreloadPlugins = () => {
export const loadAllPreloadPlugins = async () => {
const pluginConfigs = config.plugins.getPlugins();
for (const [pluginId, pluginDef] of Object.entries(preloadPlugins)) {
for (const [pluginId, pluginDef] of Object.entries(await preloadPlugins())) {
const config = deepmerge(
pluginDef.config ?? { enable: false },
pluginConfigs[pluginId] ?? {},

View File

@ -18,7 +18,7 @@ const loadedPluginMap: Record<
export const createContext = <Config extends PluginConfig>(
id: string,
): RendererContext<Config> => ({
getConfig: async () =>
getConfig: () =>
window.ipcRenderer.invoke('ytmd:get-config', id) as Promise<Config>,
setConfig: async (newConfig) => {
await window.ipcRenderer.invoke('ytmd:set-config', id, newConfig);
@ -47,7 +47,7 @@ export const forceUnloadRendererPlugin = async (id: string) => {
delete unregisterStyleMap[id];
delete loadedPluginMap[id];
const plugin = rendererPlugins[id];
const plugin = (await rendererPlugins())[id];
if (!plugin) return;
const hasStopped = await stopPlugin(id, plugin, {
@ -71,7 +71,7 @@ export const forceUnloadRendererPlugin = async (id: string) => {
};
export const forceLoadRendererPlugin = async (id: string) => {
const plugin = rendererPlugins[id];
const plugin = (await rendererPlugins())[id];
if (!plugin) return;
const hasEvaled = await startPlugin(id, plugin, {
@ -117,7 +117,7 @@ export const forceLoadRendererPlugin = async (id: string) => {
export const loadAllRendererPlugins = async () => {
const pluginConfigs = window.mainConfig.plugins.getPlugins();
for (const [pluginId, pluginDef] of Object.entries(rendererPlugins)) {
for (const [pluginId, pluginDef] of Object.entries(await rendererPlugins())) {
const config = deepmerge(pluginDef.config, pluginConfigs[pluginId] ?? {});
if (config.enabled) {

View File

@ -1,11 +1,11 @@
import is from 'electron-is';
import {
app,
BrowserWindow,
type BrowserWindow,
clipboard,
dialog,
Menu,
MenuItem,
type MenuItem,
shell,
} from 'electron';
import prompt from 'custom-electron-prompt';
@ -15,7 +15,7 @@ import { allPlugins } from 'virtual:plugins';
import { languageResources } from 'virtual:i18n';
import config from './config';
import * as config from './config';
import { restart } from './providers/app-controls';
import { startingPages } from './providers/extracted-data';
@ -29,21 +29,21 @@ import packageJson from '../package.json';
export type MenuTemplate = Electron.MenuItemConstructorOptions[];
// True only if in-app-menu was loaded on launch
const inAppMenuActive = config.plugins.isEnabled('in-app-menu');
const inAppMenuActive = await config.plugins.isEnabled('in-app-menu');
const pluginEnabledMenu = (
const pluginEnabledMenu = async (
plugin: string,
label = '',
description: string | undefined = undefined,
isNew = false,
hasSubmenu = false,
refreshMenu: (() => void) | undefined = undefined,
): Electron.MenuItemConstructorOptions => ({
): Promise<Electron.MenuItemConstructorOptions> => ({
label: label || plugin,
sublabel: isNew ? t('main.menu.plugins.new') : undefined,
toolTip: description,
type: 'checkbox',
checked: config.plugins.isEnabled(plugin),
checked: await config.plugins.isEnabled(plugin),
click(item: Electron.MenuItem) {
if (item.checked) {
config.plugins.enable(plugin);
@ -71,19 +71,21 @@ export const mainMenuTemplate = async (
const { navigationHistory } = win.webContents;
await loadAllMenuPlugins(win);
const menuResult = Object.entries(getAllMenuTemplate()).map(
([id, template]) => {
const plugin = allPlugins[id];
const allPluginsStubs = await allPlugins();
const menuResult = await Promise.all(
Object.entries(getAllMenuTemplate()).map(async ([id, template]) => {
const plugin = allPluginsStubs[id];
const pluginLabel = plugin?.name?.() ?? id;
const pluginDescription = plugin?.description?.() ?? undefined;
const isNew = plugin?.addedVersion
? satisfies(packageJson.version, plugin.addedVersion)
: false;
if (!config.plugins.isEnabled(id)) {
if (!(await config.plugins.isEnabled(id))) {
return [
id,
pluginEnabledMenu(
await pluginEnabledMenu(
id,
pluginLabel,
pluginDescription,
@ -101,7 +103,7 @@ export const mainMenuTemplate = async (
sublabel: isNew ? t('main.menu.plugins.new') : undefined,
toolTip: pluginDescription,
submenu: [
pluginEnabledMenu(
await pluginEnabledMenu(
id,
t('main.menu.plugins.enabled'),
undefined,
@ -114,39 +116,42 @@ export const mainMenuTemplate = async (
],
} satisfies Electron.MenuItemConstructorOptions,
] as const;
},
}),
);
const availablePlugins = Object.keys(allPlugins);
const pluginMenus = availablePlugins
.sort((a, b) => {
const aPluginLabel = allPlugins[a]?.name?.() ?? a;
const bPluginLabel = allPlugins[b]?.name?.() ?? b;
const availablePlugins = Object.keys(await allPlugins());
const pluginMenus = await Promise.all(
availablePlugins
.sort((a, b) => {
const aPluginLabel = allPluginsStubs[a]?.name?.() ?? a;
const bPluginLabel = allPluginsStubs[b]?.name?.() ?? b;
return aPluginLabel.localeCompare(bPluginLabel);
})
.map((id) => {
const predefinedTemplate = menuResult.find((it) => it[0] === id);
if (predefinedTemplate) return predefinedTemplate[1];
return aPluginLabel.localeCompare(bPluginLabel);
})
.map((id) => {
const predefinedTemplate = menuResult.find((it) => it[0] === id);
if (predefinedTemplate) return predefinedTemplate[1];
const plugin = allPlugins[id];
const pluginLabel = plugin?.name?.() ?? id;
const pluginDescription = plugin?.description?.() ?? undefined;
const isNew = plugin?.addedVersion
? satisfies(packageJson.version, plugin.addedVersion)
: false;
const plugin = allPluginsStubs[id];
const pluginLabel = plugin?.name?.() ?? id;
const pluginDescription = plugin?.description?.() ?? undefined;
const isNew = plugin?.addedVersion
? satisfies(packageJson.version, plugin.addedVersion)
: false;
return pluginEnabledMenu(
id,
pluginLabel,
pluginDescription,
isNew,
true,
innerRefreshMenu,
);
});
return pluginEnabledMenu(
id,
pluginLabel,
pluginDescription,
isNew,
true,
innerRefreshMenu,
);
}),
);
const availableLanguages = Object.keys(languageResources);
const langResources = await languageResources();
const availableLanguages = Object.keys(langResources);
return [
{
@ -211,6 +216,37 @@ export const mainMenuTemplate = async (
);
},
},
{
label: t(
'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.label',
),
async click() {
const output = await prompt(
{
title: t(
'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.label',
),
label: t(
'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.prompt.label',
),
value: config.get('options.customWindowTitle') || '',
type: 'input',
inputAttrs: {
type: 'text',
placeholder: t(
'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.prompt.placeholder',
),
},
width: 500,
...promptOptions(),
},
win,
);
if (typeof output === 'string') {
config.setMenuOption('options.customWindowTitle', output);
}
},
},
{
label: t(
'main.menu.options.submenu.visual-tweaks.submenu.like-buttons.label',
@ -445,7 +481,7 @@ export const mainMenuTemplate = async (
availableLanguages
.map(
(lang): Electron.MenuItemConstructorOptions => ({
label: `${languageResources[lang].translation.language?.name ?? 'Unknown'} (${languageResources[lang].translation.language?.['local-name'] ?? 'Unknown'})`,
label: `${langResources[lang].translation.language?.name ?? 'Unknown'} (${langResources[lang].translation.language?.['local-name'] ?? 'Unknown'})`,
type: 'checkbox',
checked: (config.get('options.language') ?? 'en') === lang,
click() {

View File

@ -76,7 +76,7 @@ export default createPlugin({
async onPlayerApiReady(_, { getConfig }) {
const config = await getConfig();
if (config.blocker === blockers.AdSpeedup) {
await loadAdSpeedup();
loadAdSpeedup();
}
},
},

View File

@ -1,12 +1,17 @@
import { render } from 'solid-js/web';
import { createSignal, Show } from 'solid-js';
import { t } from '@/i18n';
import { createPlugin } from '@/utils';
import { ElementFromHtml } from '@/plugins/utils/renderer';
import { waitForElement } from '@/utils/wait-for-element';
import undislikeHTML from './templates/undislike.html?raw';
import dislikeHTML from './templates/dislike.html?raw';
import likeHTML from './templates/like.html?raw';
import unlikeHTML from './templates/unlike.html?raw';
import {
DislikeButton,
LikeButton,
UnDislikeButton,
UnLikeButton,
} from './templates';
export default createPlugin<
unknown,
@ -52,19 +57,69 @@ export default createPlugin<
}
const continuations = await waitForElement<HTMLElement>('#continuations');
this.waiting = false;
//Gets the for buttons
const buttons: Array<HTMLElement> = [
ElementFromHtml(undislikeHTML),
ElementFromHtml(dislikeHTML),
ElementFromHtml(likeHTML),
ElementFromHtml(unlikeHTML),
];
const [showUnDislike, setShowUnDislike] = createSignal(true);
const [showDislike, setShowDislike] = createSignal(true);
const [showLike, setShowLike] = createSignal(true);
const [showUnLike, setShowUnLike] = createSignal(true);
const DEFAULT_MASK_SIZE = '100% 50%';
const [unDislikeMaskSize, setUnDislikeMaskSize] =
createSignal(DEFAULT_MASK_SIZE);
const [dislikeMaskSize, setDislikeMaskSize] =
createSignal(DEFAULT_MASK_SIZE);
const [likeMaskSize, setLikeMaskSize] = createSignal(DEFAULT_MASK_SIZE);
const [unLikeMaskSize, setUnLikeMaskSize] =
createSignal(DEFAULT_MASK_SIZE);
const buttonContainer = document.createElement('div');
buttonContainer.style.display = 'flex';
buttonContainer.style.flexDirection = 'row';
render(
() => (
<>
<Show when={showUnDislike()}>
<UnDislikeButton
maskSize={unDislikeMaskSize()}
onClick={this.loadFullList}
/>
</Show>
<Show when={showDislike()}>
<DislikeButton
maskSize={dislikeMaskSize()}
onClick={this.loadFullList}
/>
</Show>
<Show when={showLike()}>
<LikeButton
maskSize={likeMaskSize()}
onClick={this.loadFullList}
/>
</Show>
<Show when={showUnLike()}>
<UnLikeButton
maskSize={unLikeMaskSize()}
onClick={this.loadFullList}
/>
</Show>
</>
),
buttonContainer,
);
//Finds the playlist
const playlist =
document.querySelector('ytmusic-shelf-renderer') ??
document.querySelector('ytmusic-playlist-shelf-renderer')!;
document.querySelector('ytmusic-playlist-shelf-renderer') ??
document.querySelector(':nth-last-child(1 of ytmusic-shelf-renderer)');
if (!playlist) {
return;
}
// Adds an observer for every button, so it gets updated when one is clicked
this.changeObserver?.disconnect();
this.changeObserver = new MutationObserver(() => {
this.stop();
this.start();
@ -84,34 +139,57 @@ export default createPlugin<
'#button-shape-dislike > button',
).length;
if (continuations.children.length == 0 && listsLength > 0) {
const counts = [
playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=true] > button',
const counts = {
dislike: playlist?.querySelectorAll(
'#button-shape-dislike > button[aria-pressed=true]',
).length,
playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=false] > button',
undislike: playlist?.querySelectorAll(
'#button-shape-dislike > button[aria-pressed=false]',
).length,
playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=false] > button',
unlike: playlist?.querySelectorAll(
'#button-shape-like > button[aria-pressed=false]',
).length,
playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=true] > button',
like: playlist?.querySelectorAll(
'#button-shape-like > button[aria-pressed=true]',
).length,
];
let i = 0;
for (const count of counts) {
if (count == 0) {
buttons.splice(i, 1);
i--;
} else {
(
buttons[i].children[0].children[0] as HTMLElement
).style.setProperty(
'-webkit-mask-size',
`100% ${100 - (count / listsLength) * 100}%`,
);
};
for (const [name, size] of Object.entries(counts)) {
switch (name) {
case 'dislike':
if (size > 0) {
setShowDislike(true);
setDislikeMaskSize(`100% ${100 - (size / listsLength) * 100}%`);
} else {
setShowDislike(false);
}
break;
case 'undislike':
if (size > 0) {
setShowUnDislike(true);
setUnDislikeMaskSize(
`100% ${100 - (size / listsLength) * 100}%`,
);
} else {
setShowUnDislike(false);
}
break;
case 'like':
if (size > 0) {
setShowLike(true);
setLikeMaskSize(`100% ${100 - (size / listsLength) * 100}%`);
} else {
setShowLike(false);
}
break;
case 'unlike':
if (size > 0) {
setShowUnLike(true);
setUnLikeMaskSize(`100% ${100 - (size / listsLength) * 100}%`);
} else {
setShowUnLike(false);
}
break;
}
i++;
}
}
const menuParent =
@ -126,10 +204,7 @@ export default createPlugin<
menu,
menuParent.children[menuParent.children.length - 1],
);
for (const button of buttons) {
menu.appendChild(button);
button.addEventListener('click', this.loadFullList);
}
menu.appendChild(buttonContainer);
}
},
loadFullList(event: MouseEvent) {
@ -157,28 +232,28 @@ export default createPlugin<
if (loader.children.length != 0) return;
this.loadObserver?.disconnect();
let playlistButtons: NodeListOf<HTMLElement> | undefined;
const playlist = document.querySelector('ytmusic-shelf-renderer')
? document.querySelector('ytmusic-shelf-renderer')
: document.querySelector('ytmusic-playlist-shelf-renderer');
const playlist =
document.querySelector('ytmusic-playlist-shelf-renderer') ??
document.querySelector(':nth-last-child(1 of ytmusic-shelf-renderer)');
switch (id) {
case 'allundislike':
playlistButtons = playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=true] > button',
'#button-shape-dislike > button[aria-pressed=true]',
);
break;
case 'alldislike':
playlistButtons = playlist?.querySelectorAll(
'#button-shape-dislike[aria-pressed=false] > button',
'#button-shape-dislike > button[aria-pressed=false]',
);
break;
case 'alllike':
playlistButtons = playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=false] > button',
'#button-shape-like > button[aria-pressed=false]',
);
break;
case 'allunlike':
playlistButtons = playlist?.querySelectorAll(
'#button-shape-like[aria-pressed=true] > button',
'#button-shape-like > button[aria-pressed=true]',
);
break;
default:

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