Compare commits

...

33 Commits

Author SHA1 Message Date
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
15 changed files with 1322 additions and 656 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -2,8 +2,17 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC. All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [v3.7.4](https://github.com/th-ch/youtube-music/compare/v3.7.3...v3.7.4)
- 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) #### [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) - 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 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) - chore(deps): update dependency @babel/runtime to v7.26.9 [`#2980`](https://github.com/th-ch/youtube-music/pull/2980)

View File

@ -2,7 +2,7 @@
"name": "youtube-music", "name": "youtube-music",
"desktopName": "com.github.th_ch.youtube_music", "desktopName": "com.github.th_ch.youtube_music",
"productName": "YouTube Music", "productName": "YouTube Music",
"version": "3.7.3", "version": "3.7.5",
"description": "YouTube Music Desktop App - including custom plugins", "description": "YouTube Music Desktop App - including custom plugins",
"main": "./dist/main/index.js", "main": "./dist/main/index.js",
"license": "MIT", "license": "MIT",
@ -218,20 +218,19 @@
}, },
"engines": { "engines": {
"node": ">=18", "node": ">=18",
"pnpm": ">=8" "pnpm": ">=10"
}, },
"pnpm": { "pnpm": {
"overrides": { "overrides": {
"vite": "6.1.0", "vite": "6.2.0",
"node-gyp": "11.1.0", "node-gyp": "11.1.0",
"xml2js": "0.6.2", "xml2js": "0.6.2",
"node-fetch": "3.3.2", "node-fetch": "3.3.2",
"@electron/universal": "2.0.1", "@electron/universal": "2.0.2",
"@babel/runtime": "7.26.9" "@babel/runtime": "7.26.9"
}, },
"patchedDependencies": { "patchedDependencies": {
"vudio@2.1.1": "patches/vudio@2.1.1.patch", "vudio@2.1.1": "patches/vudio@2.1.1.patch",
"app-builder-lib@26.0.6": "patches/app-builder-lib@26.0.6.patch",
"@malept/flatpak-bundler": "patches/@malept__flatpak-bundler.patch" "@malept/flatpak-bundler": "patches/@malept__flatpak-bundler.patch"
}, },
"neverBuiltDependencies": [] "neverBuiltDependencies": []
@ -247,7 +246,7 @@
"@ghostery/adblocker-electron-preload": "2.5.0", "@ghostery/adblocker-electron-preload": "2.5.0",
"@hono/node-server": "1.13.8", "@hono/node-server": "1.13.8",
"@hono/swagger-ui": "0.5.0", "@hono/swagger-ui": "0.5.0",
"@hono/zod-openapi": "0.18.4", "@hono/zod-openapi": "0.19.0",
"@hono/zod-validator": "0.4.3", "@hono/zod-validator": "0.4.3",
"@jellybrick/dbus-next": "0.10.3", "@jellybrick/dbus-next": "0.10.3",
"@jellybrick/electron-better-web-request": "1.0.4", "@jellybrick/electron-better-web-request": "1.0.4",
@ -262,7 +261,7 @@
"color": "5.0.0", "color": "5.0.0",
"conf": "13.1.0", "conf": "13.1.0",
"custom-electron-prompt": "1.5.8", "custom-electron-prompt": "1.5.8",
"deepmerge-ts": "7.1.4", "deepmerge-ts": "7.1.5",
"electron-debug": "4.1.0", "electron-debug": "4.1.0",
"electron-is": "3.0.0", "electron-is": "3.0.0",
"electron-localshortcut": "3.2.1", "electron-localshortcut": "3.2.1",
@ -272,8 +271,8 @@
"fast-average-color": "9.4.0", "fast-average-color": "9.4.0",
"fast-equals": "5.2.2", "fast-equals": "5.2.2",
"filenamify": "6.0.0", "filenamify": "6.0.0",
"happy-dom": "17.1.0", "happy-dom": "17.1.8",
"hono": "4.7.1", "hono": "4.7.2",
"howler": "2.2.4", "howler": "2.2.4",
"html-to-text": "9.0.5", "html-to-text": "9.0.5",
"i18next": "24.2.2", "i18next": "24.2.2",
@ -281,61 +280,60 @@
"keyboardevent-from-electron-accelerator": "2.0.0", "keyboardevent-from-electron-accelerator": "2.0.0",
"keyboardevents-areequal": "0.2.2", "keyboardevents-areequal": "0.2.2",
"node-html-parser": "7.0.1", "node-html-parser": "7.0.1",
"node-id3": "0.2.7", "node-id3": "0.2.8",
"peerjs": "1.5.4", "peerjs": "1.5.4",
"semver": "7.7.1", "semver": "7.7.1",
"serve": "14.2.4", "serve": "14.2.4",
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9", "simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
"solid-floating-ui": "0.3.1", "solid-floating-ui": "0.3.1",
"solid-js": "1.9.4", "solid-js": "1.9.5",
"solid-styled-components": "0.28.5", "solid-styled-components": "0.28.5",
"solid-transition-group": "0.3.0", "solid-transition-group": "0.3.0",
"ts-morph": "25.0.1", "ts-morph": "25.0.1",
"vudio": "2.1.1", "vudio": "2.1.1",
"x11": "2.3.0", "x11": "2.3.0",
"youtubei.js": "13.0.0", "youtubei.js": "13.1.0",
"zod": "3.24.2" "zod": "3.24.2"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "9.20.0", "@eslint/js": "9.21.0",
"@playwright/test": "1.50.1", "@playwright/test": "1.50.1",
"@stylistic/eslint-plugin-js": "3.1.0", "@stylistic/eslint-plugin-js": "4.1.0",
"@total-typescript/ts-reset": "0.6.1", "@total-typescript/ts-reset": "0.6.1",
"@types/electron-localshortcut": "3.1.3", "@types/electron-localshortcut": "3.1.3",
"@types/eslint__js": "8.42.3",
"@types/howler": "2.2.12", "@types/howler": "2.2.12",
"@types/html-to-text": "9.0.4", "@types/html-to-text": "9.0.4",
"@types/semver": "7.5.8", "@types/semver": "7.5.8",
"@types/trusted-types": "2.0.7", "@types/trusted-types": "2.0.7",
"bufferutil": "4.0.9", "bufferutil": "4.0.9",
"builtin-modules": "4.0.0", "builtin-modules": "5.0.0",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"del-cli": "6.0.0", "del-cli": "6.0.0",
"discord-api-types": "0.37.119", "discord-api-types": "0.37.119",
"electron": "34.2.0", "electron": "34.3.0",
"electron-builder": "26.0.6", "electron-builder": "26.0.9",
"electron-builder-squirrel-windows": "26.0.6", "electron-builder-squirrel-windows": "26.0.9",
"electron-devtools-installer": "4.0.0", "electron-devtools-installer": "4.0.0",
"electron-vite": "3.0.0", "electron-vite": "3.0.0",
"esbuild": "0.25.0", "esbuild": "0.25.0",
"eslint": "9.20.1", "eslint": "9.21.0",
"eslint-config-prettier": "10.0.1", "eslint-config-prettier": "10.0.2",
"eslint-import-resolver-exports": "1.0.0-beta.5", "eslint-import-resolver-exports": "1.0.0-beta.5",
"eslint-import-resolver-typescript": "3.8.0", "eslint-import-resolver-typescript": "3.8.3",
"eslint-plugin-import": "2.31.0", "eslint-plugin-import": "2.31.0",
"eslint-plugin-prettier": "5.2.3", "eslint-plugin-prettier": "5.2.3",
"glob": "11.0.1", "glob": "11.0.1",
"node-gyp": "11.1.0", "node-gyp": "11.1.0",
"playwright": "1.50.1", "playwright": "1.50.1",
"rollup": "4.34.7", "rollup": "4.34.8",
"typescript": "5.7.3", "typescript": "5.7.3",
"typescript-eslint": "8.24.0", "typescript-eslint": "8.25.0",
"utf-8-validate": "6.0.5", "utf-8-validate": "6.0.5",
"vite": "6.1.0", "vite": "6.2.0",
"vite-plugin-inspect": "10.2.1", "vite-plugin-inspect": "11.0.0",
"vite-plugin-resolve": "2.5.2", "vite-plugin-resolve": "2.5.2",
"vite-plugin-solid": "2.11.1", "vite-plugin-solid": "2.11.6",
"ws": "8.18.0" "ws": "8.18.1"
}, },
"auto-changelog": { "auto-changelog": {
"hideCredit": true, "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) {

1079
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -279,6 +279,13 @@
}, },
"name": "الوضع المحيطي" "name": "الوضع المحيطي"
}, },
"amuse": {
"description": "تكامل دعم YouTube Music مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs",
"name": "تلسيه",
"response": {
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
}
},
"api-server": { "api-server": {
"description": "يضيف خادم للتحكم في المشغل", "description": "يضيف خادم للتحكم في المشغل",
"dialog": { "dialog": {
@ -286,17 +293,38 @@
"buttons": { "buttons": {
"allow": "سماح", "allow": "سماح",
"deny": "رفض" "deny": "رفض"
} },
"message": "السماح لـ {{ID}} ({{origin}}) بالوصول إلى واجهة برمجة التطبيقات (API)؟",
"title": "طلب السماح بالوصول إلى واجهة برمجة التطبيقات(API)"
} }
}, },
"menu": { "menu": {
"auth-strategy": {
"label": "نهج التفويض",
"submenu": {
"auth-at-first": {
"label": "التفويض المبدئي عند الطلب الأول"
},
"none": {
"label": "بدون تفويض"
}
}
},
"hostname": { "hostname": {
"label": "اسم المضيف" "label": "اسم المضيف"
},
"port": {
"label": "المنفذ"
} }
}, },
"name": "خادم API [تجريبي]",
"prompt": { "prompt": {
"hostname": { "hostname": {
"label": "أدخل اسم المضيف (مثل 0.0.0.0) لخادم API:",
"title": "اسم الخادم" "title": "اسم الخادم"
},
"port": {
"label": "أدخل المنفذ لخادم API:"
} }
} }
}, },

View File

@ -279,6 +279,9 @@
}, },
"name": "Ambientní režim" "name": "Ambientní režim"
}, },
"amuse": {
"description": "Přídá YouTube Music podporu pro Amuse právě těď hraje widget od 6k Labs"
},
"api-server": { "api-server": {
"description": "Vlož API server abys mohl ovládat přehrávač", "description": "Vlož API server abys mohl ovládat přehrávač",
"dialog": { "dialog": {

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

@ -86,7 +86,8 @@
"copy-current-url": "העתק את כתובת ה-URL", "copy-current-url": "העתק את כתובת ה-URL",
"go-back": "חזור אחורה", "go-back": "חזור אחורה",
"go-forward": "לך קדימה", "go-forward": "לך קדימה",
"quit": "יציאה" "quit": "יציאה",
"restart": "הפעל מחדש את היישום"
} }
}, },
"options": { "options": {
@ -96,9 +97,39 @@
"label": "אפשרויות מתקדמות", "label": "אפשרויות מתקדמות",
"submenu": { "submenu": {
"auto-reset-app-cache": "אפס את מטמון האפליקציה כאשר האפליקציה מתחילה", "auto-reset-app-cache": "אפס את מטמון האפליקציה כאשר האפליקציה מתחילה",
"disable-hardware-acceleration": "השבת האצת החומרה" "disable-hardware-acceleration": "השבת האצת החומרה",
"edit-config-json": "ערוך את config.json",
"restart-on-config-changes": "הפעל מחדש בשינויי תצורה",
"set-proxy": {
"label": "הגדר שרת proxy",
"prompt": {
"label": "הזן כתובת פרוקסי: (להשאיר ריק כדי להשבית)",
"placeholder": "דוגמה: SOCKS5://127.0.0.1:9999",
"title": "הגדר שרת proxy"
}
}
} }
} },
"auto-update": "עדכון אוטומטי",
"hide-menu": {
"dialog": {
"message": "התפריט יוסתר בהפעלה הבאה, השתמש ב-[Alt] כדי להציג אותו (או סמן את [`] אם אתה משתמש בתפריט בתוך האפליקציה)",
"title": "הסתר תפריט מופעל"
},
"label": "הסתר את התפריט"
},
"language": {
"dialog": {
"message": "השפה תשתנה לאחר הפעלת היישום מחדש",
"title": "השפה שונתה"
},
"label": "שפה",
"submenu": {
"to-help-translate": "רוצים לעזור לתרגם? לחץ כאן"
}
},
"resume-on-start": "המשך את השיר האחרון עם הפעלת האפליקציה",
"single-instance-lock": "נעילת מופע יחיד"
} }
} }
} }

View File

@ -744,6 +744,9 @@
"line-effect": { "line-effect": {
"label": "Effetto linea", "label": "Effetto linea",
"submenu": { "submenu": {
"fancy": {
"tooltip": "Usa effetti grandi, simili a quelli di un'app sulla riga attuale"
},
"focus": { "focus": {
"label": "Focus", "label": "Focus",
"tooltip": "Rendi bianca solo la riga corrente" "tooltip": "Rendi bianca solo la riga corrente"

View File

@ -39,29 +39,29 @@
"clearing-cache-after-20s": "กำลังล้างแคชแอป" "clearing-cache-after-20s": "กำลังล้างแคชแอป"
}, },
"window": { "window": {
"tried-to-render-offscreen": "หน้าต่างพยายามแสดงผลเกินขนาดหน้าจอ windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}" "tried-to-render-offscreen": "หน้าต่างพยายามแสดงผลเกินขนาดหน้าจอ ขนาดหน้าต่าง={{windowSize}}, ขนาดหน้าจอ={{displaySize}}, ตำแหน่ง={{position}}"
} }
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "เมนูถูกซ่อนไว้ กด'Alt' เพื่อแสดงเมนู (หรือ 'Escape' หากอยู่ในเมนูแอป)", "detail": "เมนูถูกซ่อนไว้ กด'Alt' เพื่อแสดงเมนู (หรือ 'Escape' หากกำลังใช้เมนูบนแอป)",
"message": "การซ่อนเมนูถูกเปิดใช้งาน", "message": "การซ่อนเมนูเปิดใช้งานอยู่",
"title": "เปิดใช้งานการซ่อนเมนู" "title": "เปิดใช้งานการซ่อนเมนู"
}, },
"need-to-restart": { "need-to-restart": {
"buttons": { "buttons": {
"later": "ภายหลัง", "later": "รีสตาร์ตภายหลัง",
"restart-now": "รีสตาร์ตอนนี้" "restart-now": "รีสตาร์ตอนนี้"
}, },
"detail": "\"{{pluginName}}\" ปลั๊กอินต้องการการรีสตาร์เพื่อแสดงผล", "detail": "ปลั๊กอิน \"{{pluginName}}\" ต้องการการรีสตาร์เพื่อจะทำงานได้",
"message": "\"{{pluginName}}\" ต้องการรีสตาร์", "message": "\"{{pluginName}}\" ต้องการรีสตาร์",
"title": "แนะนำให้รีสตาร์" "title": "แนะนำให้รีสตาร์"
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
"quit": "ออก", "quit": "ออก",
"relaunch": "เปิดใหม่", "relaunch": "ปิดแล้วเปิดใหม่",
"wait": "รอซักครู่" "wait": "รอให้ตอบสนอง"
}, },
"detail": "ขออภัยในความไม่สะดวก! โปรดเลือกสิ่งที่ต้องการจะทำ:", "detail": "ขออภัยในความไม่สะดวก! โปรดเลือกสิ่งที่ต้องการจะทำ:",
"message": "แอปพลิเคชันไม่ตอบสนอง", "message": "แอปพลิเคชันไม่ตอบสนอง",
@ -73,7 +73,7 @@
"download": "ดาวน์โหลด", "download": "ดาวน์โหลด",
"ok": "ตกลง" "ok": "ตกลง"
}, },
"detail": "มีเวอร์ชันใหม่ให้ดาวน์โหลดแล้วที่ {{downloadLink}}", "detail": "มีเวอร์ชันใหม่ให้ใช้งานได้สามารถดาวน์โหลดได้ที่ {{downloadLink}}",
"message": "มีเวอร์ชันใหม่ให้ใช้งานแล้ว", "message": "มีเวอร์ชันใหม่ให้ใช้งานแล้ว",
"title": "อัปเดตพร้อมใช้งาน" "title": "อัปเดตพร้อมใช้งาน"
} }
@ -87,7 +87,7 @@
"go-back": "ก่อนหน้า", "go-back": "ก่อนหน้า",
"go-forward": "ถัดไป", "go-forward": "ถัดไป",
"quit": "ออก", "quit": "ออก",
"restart": "รีสตาร์แอป" "restart": "รีสตาร์แอป"
} }
}, },
"options": { "options": {
@ -96,23 +96,23 @@
"advanced-options": { "advanced-options": {
"label": "ตัวเลือกขั้นสูง", "label": "ตัวเลือกขั้นสูง",
"submenu": { "submenu": {
"auto-reset-app-cache": "รีเซตแอปแคชเมื่อเริ่มแอป", "auto-reset-app-cache": "รีเซตแคชของแอปเมื่อเริ่มแอป",
"disable-hardware-acceleration": "ปิดการใช้งานตัวเร่งประสิทธิภาพด้วยฮาร์ดแวร์", "disable-hardware-acceleration": "ปิดการใช้งานตัวเร่งประสิทธิภาพด้วยฮาร์ดแวร์",
"edit-config-json": "แก้ไข config.json", "edit-config-json": "แก้ไข config.json",
"override-user-agent": "แทนที่ User-Agent", "override-user-agent": "แทนที่ User-Agent",
"restart-on-config-changes": "รีสตาร์เมื่อมีการเปลี่ยนแปลงคอนฟิก", "restart-on-config-changes": "รีสตาร์เมื่อมีการเปลี่ยนแปลงคอนฟิก",
"set-proxy": { "set-proxy": {
"label": "ตั้งค่าพร็อกซี่", "label": "ตั้งค่าพร็อกซี่",
"prompt": { "prompt": {
"label": "ใส่ที่อยู่พร็อกซี่: (ปล่อยให้ว่างเพื่อปิดใช้งาน)", "label": "ใส่ที่อยู่ของพร็อกซี่: (เว้นว่างเพื่อปิดใช้งาน)",
"placeholder": "ตัวอย่าง: SOCKS5://127.0.0.1:9999", "placeholder": "ตัวอย่าง: SOCKS5://127.0.0.1:9999",
"title": "ตั้งค่าพร็อกซี่" "title": "ตั้งค่าพร็อกซี่"
} }
}, },
"toggle-dev-tools": "เปิด-ปิด DevTools" "toggle-dev-tools": "เปิด/ปิดเครื่องมือสำหรับนักพัฒนา"
} }
}, },
"always-on-top": "อยู่ด้านบนตลอดเวลา", "always-on-top": "อยู่ด้านบนหน้าต่างอื่นตลอดเวลา",
"auto-update": "อัปเดตอัตโนมัติ", "auto-update": "อัปเดตอัตโนมัติ",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
@ -123,17 +123,17 @@
}, },
"language": { "language": {
"dialog": { "dialog": {
"message": "ภาษาจะเปลี่ยนหลังจากทำการรีสตาร์", "message": "ภาษาจะเปลี่ยนหลังจากทำการรีสตาร์",
"title": "ภาษาถูกเปลี่ยนแล้ว" "title": "ภาษาถูกเปลี่ยนแล้ว"
}, },
"label": "ภาษา", "label": "ภาษา",
"submenu": { "submenu": {
"to-help-translate": "ต้องการช่วยแปล? คลิกที่นี่" "to-help-translate": "ต้องการช่วยแปลภาษา? คลิกที่นี่"
} }
}, },
"resume-on-start": "เล่นเพลงล่าสุดต่อ เมื่อแอปเริ่มต้น", "resume-on-start": "เล่นเพลงที่เล่นล่าสุดต่อ เมื่อเปิดแอป",
"single-instance-lock": "ล็อกการทำงานเพียงรายการเดียว", "single-instance-lock": "ล็อกไม่ให้เปิดซำ้ซ้อน",
"start-at-login": "เริ่มต้นที่การเข้าสู่ระบบ", "start-at-login": "เริ่มต้นเมื่อเข้าสู่ระบบ",
"starting-page": { "starting-page": {
"label": "หน้าเริ่มต้น", "label": "หน้าเริ่มต้น",
"unset": "ยกเลิกการตั้งค่า" "unset": "ยกเลิกการตั้งค่า"
@ -148,7 +148,7 @@
} }
}, },
"visual-tweaks": { "visual-tweaks": {
"label": "การปรับแต่งหน้าตาแอป", "label": "ปรับแต่งหน้าตาแอป",
"submenu": { "submenu": {
"like-buttons": { "like-buttons": {
"default": "ค่าเริ่มต้น", "default": "ค่าเริ่มต้น",
@ -169,7 +169,7 @@
"label": "ธีม", "label": "ธีม",
"submenu": { "submenu": {
"import-css-file": "นำเข้าไฟล์ CSS ที่กำหนดเอง", "import-css-file": "นำเข้าไฟล์ CSS ที่กำหนดเอง",
"no-theme": "ไม่มีธีม" "no-theme": "ไม่ใช้ธีม"
} }
} }
} }
@ -187,28 +187,28 @@
"force-reload": "บังคับโหลดใหม่", "force-reload": "บังคับโหลดใหม่",
"reload": "โหลดใหม่", "reload": "โหลดใหม่",
"reset-zoom": "ขนาดจริง", "reset-zoom": "ขนาดจริง",
"toggle-fullscreen": "สลับเต็มหน้าจอ", "toggle-fullscreen": "เปิด/ปิดโหมดเต็มหน้าจอ",
"zoom-in": "ซูมเข้า", "zoom-in": "ซูมเข้า",
"zoom-out": "ซูมออก" "zoom-out": "ซูมออก"
} }
} }
}, },
"tray": { "tray": {
"next": "่อไป", "next": "่อไป",
"play-pause": "เล่น/พัก", "play-pause": "เล่น/หยุดชั่วคราว",
"previous": "ก่อนหน้า", "previous": "ก่อนหน้า",
"quit": "ออก", "quit": "ออก",
"restart": "รีสตาร์แอป", "restart": "รีสตาร์แอป",
"show": "แสดงหน้าต่าง", "show": "แสดงหน้าต่าง",
"tooltip": { "tooltip": {
"default": "ยูทุปมิวสิค", "default": "YouTube Music",
"with-song-info": "ยูทูปมิวสิค: {{artist}} - {{title}}" "with-song-info": "YouTube Music: {{artist}} - {{title}}"
} }
} }
}, },
"plugins": { "plugins": {
"ad-speedup": { "ad-speedup": {
"description": "หากมีการเล่นโฆษณา เสียงจะถูกปิดและตั้งค่าความเร็วในการเล่นเป็น 16x", "description": "หากมีโฆษณาเล่นขึ้น เสียงจะถูกปิดและตั้งความเร็วในการเล่นเป็น 16 เท่า",
"name": "เพิ่มความเร็วโฆษณา" "name": "เพิ่มความเร็วโฆษณา"
}, },
"adblocker": { "adblocker": {
@ -219,7 +219,7 @@
"name": "ตัวบล็อกโฆษณา" "name": "ตัวบล็อกโฆษณา"
}, },
"album-actions": { "album-actions": {
"description": "เพิ่ม ยกเลิกไม่ชอบ, ไม่ชอบ, 'ถูกใจ', และ 'ยกเลิกถูกใจ' เพื่อให้สามารถใช้งานกับเพลงทั้งหมดในรายการเพลงหรืออัลบั้ม", "description": "เพิ่ม ยกเลิกไม่ชอบ, ไม่ชอบ, ถูกใจ, และ ยกเลิกถูกใจ ที่มีผลกับเพลงทั้งหมดในรายการเพลงหรืออัลบั้ม",
"name": "การกระทำที่เกี่ยวกับอัลบั้ม" "name": "การกระทำที่เกี่ยวกับอัลบั้ม"
}, },
"album-color-theme": { "album-color-theme": {
@ -228,14 +228,14 @@
"color-mix-ratio": { "color-mix-ratio": {
"label": "สัดส่วนการผสมสี", "label": "สัดส่วนการผสมสี",
"submenu": { "submenu": {
"percent": "{{ratio}}เปอร์เซ็น" "percent": "{{ratio}}%"
} }
} }
}, },
"name": "ธีมสีของอัลบั้ม" "name": "ธีมสีของอัลบั้ม"
}, },
"ambient-mode": { "ambient-mode": {
"description": "เอฟเฟกต์แสงจะใช้สีอ่อนๆจากวีดิโอมาเป็พื้นหลังสกรีน", "description": "เอฟเฟกต์แสงที่ดึงสีอ่อนๆจากวีดิโอมาบนพื้นหลังแอป",
"menu": { "menu": {
"blur-amount": { "blur-amount": {
"label": "ระดับความเบลอ", "label": "ระดับความเบลอ",
@ -268,9 +268,9 @@
} }
}, },
"smoothness-transition": { "smoothness-transition": {
"label": "การเปลี่ยนแบบสมูท", "label": "ความเรียบการเปลี่ยน",
"submenu": { "submenu": {
"during": "ระหว่าง {{interpolationTime}} วินาที" "during": "ในระยะเวลา {{interpolationTime}} วินาที"
} }
}, },
"use-fullscreen": { "use-fullscreen": {
@ -279,6 +279,13 @@
}, },
"name": "โหมดสภาพแวดล้อม" "name": "โหมดสภาพแวดล้อม"
}, },
"amuse": {
"description": "เพิ่มการรองรับ Youtube Music สำหรับ Widget Amuse Now Playing ของ 6K Labs",
"name": "Amuse",
"response": {
"query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง"
}
},
"api-server": { "api-server": {
"description": "เพิ่มเซิร์ฟเวอร์ API เพื่อควบคุมการเล่น", "description": "เพิ่มเซิร์ฟเวอร์ API เพื่อควบคุมการเล่น",
"dialog": { "dialog": {
@ -287,7 +294,38 @@
"allow": "อนุญาต", "allow": "อนุญาต",
"deny": "ปฏิเสธ" "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"
} }
} }
}, },
@ -300,11 +338,11 @@
"name": "เบลอแถบนำทาง" "name": "เบลอแถบนำทาง"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "ข้ามการตรวจสอบอายุของยูทูป", "description": "ข้ามการตรวจสอบอายุของ YouTube",
"name": "ข้ามข้อจำกัดอายุ" "name": "ข้ามข้อจำกัดอายุ"
}, },
"captions-selector": { "captions-selector": {
"description": "ตัวเลือกคำบรรยายสำหรับเพลงในYoutube Music", "description": "ตัวเลือกคำบรรยายสำหรับเพลงใน YouTube Music",
"menu": { "menu": {
"autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ", "autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ",
"disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น" "disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น"
@ -348,19 +386,19 @@
} }
}, },
"disable-autoplay": { "disable-autoplay": {
"description": "เริ่มเพลงในโหมดหยุด", "description": "เริ่มเพลงในโหมดหยุดชั่วคราว",
"menu": { "menu": {
"apply-once": "ใช้เฉพาะเมื่อเริ่มต้น" "apply-once": "ใช้เฉพาะเมื่อเริ่มต้นแอป"
}, },
"name": "ปิดใช้งานการเล่นอัตโนมัติ" "name": "ปิดใช้งานการเล่นอัตโนมัติ"
}, },
"discord": { "discord": {
"backend": { "backend": {
"already-connected": "พยายามเชื่อมต่อกับการเชื่อมต่อที่ทำงานอยู่", "already-connected": "กำลังพยายามเชื่อมต่อด้วยการเชื่อมต่อที่มีอยู่",
"connected": "เชื่อมต่อกับดิสคอร์ดแล้ว", "connected": "เชื่อมต่อกับดิสคอร์ดแล้ว",
"disconnected": "ตัดการเชื่อมต่อออกจากดิสคอร์ด" "disconnected": "ไม่มีการเชื่อมต่อกับดิสคอร์ดอยู่"
}, },
"description": "แสดงให้เพื่อนเห็นว่าคุณกำลังฟังอะไรด้วย Rich Presence", "description": "แสดงให้เพื่อนเห็นว่าคุณกำลังฟังอะไรด้วย Rich Presence บนดิสคอร์ด",
"menu": { "menu": {
"auto-reconnect": "เชื่อมต่อใหม่โดยอัตโนมัติ", "auto-reconnect": "เชื่อมต่อใหม่โดยอัตโนมัติ",
"clear-activity": "ล้างกิจกรรม", "clear-activity": "ล้างกิจกรรม",
@ -369,10 +407,10 @@
"disconnected": "ตัดการเชื่อมต่อ", "disconnected": "ตัดการเชื่อมต่อ",
"hide-duration-left": "ซ่อนระยะเวลาที่เหลือ", "hide-duration-left": "ซ่อนระยะเวลาที่เหลือ",
"hide-github-button": "ซ่อนปุ่มลิงก์ GitHub", "hide-github-button": "ซ่อนปุ่มลิงก์ GitHub",
"play-on-youtube-music": "เล่นบนยูทูปมิวสุค", "play-on-youtube-music": "เล่นบน YouTube Music",
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม" "set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม"
}, },
"name": "Discord Rich Presence", "name": "แสดงกิจกรรมบนดิสคอร์ด",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "ป้อนระยะเวลาไม่มีกิจกรรมเป็นวินาที:", "label": "ป้อนระยะเวลาไม่มีกิจกรรมเป็นวินาที:",
@ -426,6 +464,21 @@
"description": "ดาวน์โหลด MP3 / เสียงต้นฉบับโดยตรงจากอินเทอร์เฟซ", "description": "ดาวน์โหลด MP3 / เสียงต้นฉบับโดยตรงจากอินเทอร์เฟซ",
"menu": { "menu": {
"choose-download-folder": "เลือกโฟลเดอร์ดาวน์โหลด", "choose-download-folder": "เลือกโฟลเดอร์ดาวน์โหลด",
"download-finish-settings": {
"label": "ดาวน์โหลดเมื่อเล่นเสร็จ",
"prompt": {
"last-percent": "หลังจาก x เปอร์เซ็นต์",
"last-seconds": "x วินาทีล่าสุด",
"title": "ตั่งค่าเวลาที่จะดาวน์โหลด"
},
"submenu": {
"advanced": "การตั้งค่าขั้นสูง",
"enabled": "เปิดใช้งาน",
"mode": "โหมดเวลา",
"percent": "โหมดเปอร์เซ็นต์",
"seconds": "โหมดวินาที"
}
},
"download-playlist": "ดาวน์โหลดเพลย์ลิสต์", "download-playlist": "ดาวน์โหลดเพลย์ลิสต์",
"presets": "พรีเซ็ต", "presets": "พรีเซ็ต",
"skip-existing": "ข้ามไฟล์ที่มีอยู่แล้ว" "skip-existing": "ข้ามไฟล์ที่มีอยู่แล้ว"
@ -438,12 +491,24 @@
"button": "ดาวน์โหลด" "button": "ดาวน์โหลด"
} }
}, },
"equalizer": {
"description": "เพิ่มอีควอไลเซอร์ให้ที่เล่นเพลง",
"menu": {
"presets": {
"label": "การตั้งค่าล่วงหน้า",
"list": {
"bass-booster": "เพิ่มเบส"
}
}
},
"name": "อีควอไลเซอร์"
},
"exponential-volume": { "exponential-volume": {
"description": "ทำให้ตัวเลือกความดังมีลักษณะเอ็กซ์โปเนนเชียล เพื่อให้ง่ายต่อการเลือกระดับความดังที่ต่ำลง", "description": "ทำให้ตัวเลือกความดังมีลักษณะเอ็กซ์โปเนนเชียล เพื่อให้ง่ายต่อการเลือกระดับความดังที่ต่ำลง",
"name": "ระดับเสียงแบบเอ็กซโปเนนเชียล" "name": "ระดับเสียงแบบเอ็กซโปเนนเชียล"
}, },
"in-app-menu": { "in-app-menu": {
"description": "ให้เมนูบาร์ดูทันสมัย มืดหรือเป็นสีของอัลบั้มอย่างน่าสนใจ", "description": "ให้เแถบเมนูดูทันสมัย มืดหรือเป็นสีของอัลบั้มอย่างน่าสนใจ",
"menu": { "menu": {
"hide-dom-window-controls": "ซ่อนตัวควบคุมหน้าต่าง DOM" "hide-dom-window-controls": "ซ่อนตัวควบคุมหน้าต่าง DOM"
}, },
@ -530,6 +595,7 @@
} }
}, },
"priority": "ลำดับความสำคัญของการแจ้งเตือน", "priority": "ลำดับความสำคัญของการแจ้งเตือน",
"toast-style": "แบบไม่ถาวร",
"unpause-notification": "แสดงการแจ้งเตือนเมื่อหยุดพัก" "unpause-notification": "แสดงการแจ้งเตือนเมื่อหยุดพัก"
}, },
"name": "การแจ้งเตือน" "name": "การแจ้งเตือน"
@ -549,8 +615,222 @@
} }
}, },
"save-window-position": "บันทึกตำแหน่งหน้าต่าง", "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": "ที่เปลี่ยนคุณภาพวิดีโอ"
},
"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-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": "คำนวณมิลิวินาทีในการแสดงบรรทัดถัดไป (มีผลเล็กน้อยกับประสิทธิภาพการทำงาน)"
},
"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"
},
"tuna-obs": {
"description": "ใช้งานร่วมกันกับปลั้กอิน Tuna บน OBS",
"name": "Tuna OBS"
},
"video-toggle": {
"description": "เพิ่มปุ่มสลับระหว่างโหมดเพลงกับโหมดวิดีโอ หรือลบแถบวิดีโอออกทั้งแถบ",
"menu": {
"align": {
"label": "ตำแหน่งปุ่ม",
"submenu": {
"left": "ซ้าย",
"middle": "กลาง",
"right": "ขวา"
}
},
"force-hide": "บังคับลบแถบวิดีโอ",
"mode": {
"label": "โหมด",
"submenu": {
"custom": "ปุ่มกำหนดเอง",
"disabled": "ปิด",
"native": "ปุ่มเริ่มต้น"
}
}
},
"name": "ปุ่มวิดีโอ",
"templates": {
"button": "เพลง"
}
},
"visualizer": {
"description": "เพิ่มวิชวลไลเซอร์ให้ที่เล่นเพลง",
"menu": {
"visualizer-type": "ประเภทวิชวลไลเซอร์"
},
"name": "วิชวลไลเซอร์"
} }
} }
} }

View File

@ -201,8 +201,8 @@
"restart": "重启应用", "restart": "重启应用",
"show": "显示窗口", "show": "显示窗口",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "优兔音乐",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "优兔音乐: {{artist}} - {{title}}"
} }
} }
}, },
@ -281,7 +281,7 @@
}, },
"amuse": { "amuse": {
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持", "description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持",
"name": "Amuse", "name": "逗笑",
"response": { "response": {
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。" "query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
} }
@ -734,7 +734,7 @@
"description": "透过 LRClib 等服务提供滚动歌词显示。", "description": "透过 LRClib 等服务提供滚动歌词显示。",
"errors": { "errors": {
"fetch": "⚠️ - 获取歌词时发生错误。请稍后再试。", "fetch": "⚠️ - 获取歌词时发生错误。请稍后再试。",
"not-found": "⚠️ - 未找到此歌曲的歌词。" "not-found": "⚠️ 未找到此歌曲的歌词。"
}, },
"menu": { "menu": {
"default-text-string": { "default-text-string": {

View File

@ -639,7 +639,12 @@ export async function downloadPlaylist(givenUrl?: string | URL) {
try { try {
playlist = await yt.music.getPlaylist(playlistId); playlist = await yt.music.getPlaylist(playlistId);
if (playlist?.items) { if (playlist?.items) {
items.push(...playlist.items.as(YTNodes.MusicResponsiveListItem)); const filteredItems = playlist.items.filter(
(item): item is YTNodes.MusicResponsiveListItem =>
item instanceof YTNodes.MusicResponsiveListItem,
);
items.push(...filteredItems);
} }
} catch (error: unknown) { } catch (error: unknown) {
sendError( sendError(
@ -674,9 +679,13 @@ export async function downloadPlaylist(givenUrl?: string | URL) {
while (playlist.has_continuation) { while (playlist.has_continuation) {
playlist = await playlist.getContinuation(); playlist = await playlist.getContinuation();
if (playlist?.items) {
items.push(...playlist.items.as(YTNodes.MusicResponsiveListItem)); const filteredItems = playlist.items.filter(
} (item): item is YTNodes.MusicResponsiveListItem =>
item instanceof YTNodes.MusicResponsiveListItem,
);
items.push(...filteredItems);
} }
if (items.length === 1) { if (items.length === 1) {

View File

@ -22,27 +22,5 @@ export default createPlugin({
node.remove(); node.remove();
} }
} }
// Remove the library button
const libraryIconPath =
'M16,6v2h-2v5c0,1.1-0.9,2-2,2s-2-0.9-2-2s0.9-2,2-2c0.37,0,0.7,0.11,1,0.28V6H16z M18,20H4V6H3v15h15V20z M21,3H6v15h15V3z M7,4h13v13H7V4z';
const observer = new MutationObserver(() => {
const menuEntries = document.querySelectorAll(
'#items ytmusic-guide-entry-renderer',
);
menuEntries.forEach((item) => {
const icon = item.querySelector('path');
if (icon) {
observer.disconnect();
if (icon.getAttribute('d') === libraryIconPath) {
item.remove();
}
}
});
});
observer.observe(document.documentElement, {
childList: true,
subtree: true,
});
}, },
}); });

View File

@ -130,7 +130,7 @@ export default function (
const stubContexts = const stubContexts =
mode === 'backend' mode === 'backend'
? contexts.filter((ctx) => ctx !== 'backend') ? contexts.filter((ctx) => ctx !== 'menu')
: contexts; : contexts;
for (const ctx of stubContexts) { for (const ctx of stubContexts) {
if (stubMap.has(ctx)) { if (stubMap.has(ctx)) {