Compare commits

..

77 Commits

Author SHA1 Message Date
203c80767d Bump version to 3.1.1 2023-12-18 21:49:31 +09:00
f564039438 chore: fix the example plugins in the README 2023-12-18 14:47:18 +02:00
d6566fb870 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 84.3% (248 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2023-12-18 13:46:47 +01:00
55ab17e789 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2023-12-18 13:43:08 +01:00
e0eeb720cd feat: upgrade to Vite v5 2023-12-18 21:10:47 +09:00
53ac7ff257 fix: electron-vite dev --watch 2023-12-18 20:00:00 +09:00
a4e2f10afa chore(deps): update dependency playwright to v1.41.0-alpha-dec-18-2023 2023-12-18 19:58:33 +09:00
c9c9d766e6 chore(deps): update dependency rollup to v4.9.1 2023-12-18 19:56:14 +09:00
b82d161180 chore: Update bug_report.yml 2023-12-18 19:47:51 +09:00
7cadacd8cf fix: vite dev mode
fix an issue caused by da3bc5aeb7
2023-12-18 19:07:43 +09:00
fc1a7cda62 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 84.3% (248 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2023-12-18 10:56:31 +01:00
da3bc5aeb7 fix: renderer plugin load timing
MAGIC OF JAVASCRIPT
2023-12-18 18:42:01 +09:00
ee98344064 chore(i18n): Added translation using Weblate (Lithuanian) 2023-12-17 21:43:08 +01:00
da10eabf99 chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 69.3% (204 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2023-12-17 14:55:42 +01:00
ce3c63c386 chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 73.8% (217 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2023-12-17 14:55:42 +01:00
f8c3cff5a9 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2023-12-17 14:55:41 +01:00
08f369f8bc chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 43.5% (128 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2023-12-17 08:28:44 +01:00
1517230ede chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2023-12-17 08:28:44 +01:00
45aeadef86 fix(song-info-front): fix type 2023-12-17 16:05:26 +09:00
5ec7c346ca fix(song-info-front): fix parser to parse album name 2023-12-17 15:51:35 +09:00
4b68de1606 fix: update types 2023-12-16 22:39:57 +09:00
7710bcdacc chore(i18n): Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2023-12-16 11:58:32 +01:00
4c19bcc983 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 26.1% (77 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2023-12-16 03:33:06 +01:00
2f50b1423a chore(i18n): Translated using Weblate (French)
Currently translated at 95.9% (282 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2023-12-16 03:33:06 +01:00
15768c9691 chore(deps): update dependency eslint to v8.56.0 2023-12-16 11:28:58 +09:00
442eb75b8d chore(i18n): Translated using Weblate (Portuguese)
Currently translated at 43.1% (127 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt/
2023-12-16 03:09:12 +01:00
8facd27125 chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2023-12-16 03:09:11 +01:00
a302cb6ebf chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2023-12-16 03:09:11 +01:00
32422c7ba9 fix(deps): update dependency i18next to v23.7.11 2023-12-15 13:42:50 +09:00
ca131cb156 chore(deps): update dependency eslint-plugin-import to v2.29.1 2023-12-15 13:42:44 +09:00
5f8262ede1 chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 65.3% (192 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2023-12-14 02:11:40 +01:00
88db9d3693 chore(i18n): Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2023-12-13 21:33:32 +01:00
0fa6f344f9 chore(i18n): Translated using Weblate (Polish)
Currently translated at 97.6% (287 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2023-12-13 21:33:31 +01:00
d1642b3dfb chore(i18n): Translated using Weblate (Polish)
Currently translated at 97.6% (287 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pl/
2023-12-13 21:33:31 +01:00
7599fce5f5 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 97.6% (287 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2023-12-13 21:33:31 +01:00
9bd0dc9a7b chore(i18n): Translated using Weblate (Greek)
Currently translated at 23.8% (70 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2023-12-13 21:33:31 +01:00
dad7cafebc chore(i18n): Translated using Weblate (Russian)
Currently translated at 72.7% (214 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2023-12-13 16:20:54 +01:00
4febb28201 chore(deps): update dependency rollup to v4.9.0 2023-12-13 21:13:41 +09:00
ced943bad3 chore(deps): update pnpm to v8.12.1 2023-12-13 21:12:07 +09:00
202b8717a2 chore(i18n): Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2023-12-13 13:10:46 +01:00
eba7026b89 chore(i18n): Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2023-12-13 13:10:46 +01:00
6b2adca1f4 fix(downloader): fix download button i18n 2023-12-13 18:02:18 +09:00
0c9d3cc057 chore(i18n): Translated using Weblate (Ukrainian)
Currently translated at 42.8% (126 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/uk/
2023-12-13 05:07:02 +01:00
45ec11aaed chore(deps): update pnpm-lock.yaml 2023-12-13 13:06:10 +09:00
4d47fa3fac fix(deps): update dependency @electron/remote to v2.1.1 2023-12-13 12:24:55 +09:00
6322d5bb09 chore(i18n): Translated using Weblate (Indonesian)
Currently translated at 3.0% (9 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/id/
2023-12-12 21:56:36 +01:00
2e8a579049 chore(i18n): Translated using Weblate (Thai)
Currently translated at 1.0% (3 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/th/
2023-12-12 21:56:36 +01:00
9db7e99d7f chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2023-12-12 21:56:36 +01:00
ef73989995 chore(i18n): Translated using Weblate (Czech)
Currently translated at 79.9% (235 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2023-12-12 21:56:36 +01:00
61024084e9 chore(deps): update dependency ws to v8.15.1 2023-12-13 05:46:56 +09:00
1c71b2020f fix(deps): update dependency i18next to v23.7.9 2023-12-13 05:45:52 +09:00
3b2b545388 chore(i18n): Translated using Weblate (Russian)
Currently translated at 67.6% (199 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2023-12-12 21:44:51 +01:00
fafc7f94fd chore(i18n): Translated using Weblate (Italian)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2023-12-12 21:44:50 +01:00
5fa88b5ce9 fix: fix renderer plugin load timing
- fix #1522
2023-12-12 12:53:41 +09:00
a8fe4167db fix(pip): fix invalid position config 2023-12-12 11:11:41 +09:00
0e6b0ddc26 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2023-12-12 02:24:41 +01:00
af88db3865 chore(i18n): Translated using Weblate (Japanese)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ja/
2023-12-12 02:24:41 +01:00
0a1bef556c chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2023-12-12 02:24:41 +01:00
7030181dc1 chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2023-12-12 02:24:41 +01:00
98cb2f61ab chore(deps): update dependency playwright to v1.41.0-alpha-dec-12-2023 2023-12-12 10:23:59 +09:00
a601d0b3d2 chore(deps): update dependency rollup to v4.8.0 2023-12-12 10:22:23 +09:00
8d18923065 chore(i18n): Translated using Weblate (Norwegian Bokmål)
Currently translated at 75.1% (221 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nb_NO/
2023-12-12 01:08:34 +01:00
4b6a7e0bd7 chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2023-12-12 01:08:34 +01:00
44f87853d6 chore(i18n): Translated using Weblate (Norwegian Bokmål)
Currently translated at 74.8% (220 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nb_NO/
2023-12-12 01:02:37 +01:00
4ff47bee03 chore(i18n): Translated using Weblate (Norwegian Bokmål)
Currently translated at 74.1% (218 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nb_NO/
2023-12-12 00:54:03 +01:00
7a2c28df21 chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2023-12-12 00:54:02 +01:00
f7241d1e4a chore(i18n): Added translation using Weblate (Indonesian) 2023-12-12 00:33:55 +01:00
2b5daf3a75 chore(deps): update dependency @typescript-eslint/eslint-plugin to v6.14.0 2023-12-12 06:43:20 +09:00
d7184cf75d chore(i18n): Translated using Weblate (Russian)
Currently translated at 54.0% (159 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ru/
2023-12-11 19:59:59 +01:00
1313d18d44 chore(i18n): Translated using Weblate (Czech)
Currently translated at 80.9% (238 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/cs/
2023-12-11 19:59:58 +01:00
605e9481d9 chore(i18n): Translated using Weblate (English)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/en/
2023-12-11 19:59:58 +01:00
cf4c89f825 chore(i18n): Added translation using Weblate (Thai) 2023-12-11 10:17:18 +01:00
f4f1d4d373 chore(i18n): Translated using Weblate (Norwegian Bokmål)
Currently translated at 46.2% (136 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/nb_NO/
2023-12-11 09:00:43 +01:00
6557b40924 Translated using Weblate (Spanish)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2023-12-11 00:20:44 +01:00
e01a29c5d1 Translated using Weblate (Spanish)
Currently translated at 100.0% (294 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2023-12-11 00:20:44 +01:00
d9a7e16d63 Translated using Weblate (Italian)
Currently translated at 99.3% (292 of 294 strings)

Translation: th-ch/youtube-music/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2023-12-11 00:20:44 +01:00
d170199d85 Update changelog for v3.1.0 2023-12-10 23:10:52 +00:00
38 changed files with 3284 additions and 533 deletions

View File

@ -24,6 +24,11 @@ body:
placeholder: 2.0.0 placeholder: 2.0.0
validations: validations:
required: true required: true
- type: checkboxes
attributes:
label: Are you using the portable version of the YouTube Music Application?
options:
- label: I use the portable version of the YouTube Music Application.
- type: dropdown - type: dropdown
attributes: attributes:
label: What operating system are you using? label: What operating system are you using?

View File

@ -290,9 +290,9 @@ import style from './style.css?inline'; // import style as inline
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
const builder = createPlugin({ export default createPlugin({
name: 'Plugin Label', name: 'Plugin Label',
restartNeeded: true, // if value is true, ytmusic show restart dialog restartNeeded: true, // if value is true, ytmusic will show a restart dialog
config: { config: {
enabled: false, enabled: false,
}, // your custom config }, // your custom config
@ -306,9 +306,9 @@ const builder = createPlugin({
```typescript ```typescript
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
const builder = createPlugin({ export default createPlugin({
name: 'Plugin Label', name: 'Plugin Label',
restartNeeded: true, // if value is true, ytmusic show restart dialog restartNeeded: true, // if value is true, ytmusic will show the restart dialog
config: { config: {
enabled: false, enabled: false,
}, // your custom config }, // your custom config

View File

@ -2,8 +2,24 @@
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.1.0](https://github.com/th-ch/youtube-music/compare/v3.0.2...v3.1.0)
- chore(deps): update dependency electron to v28 [`#1498`](https://github.com/th-ch/youtube-music/pull/1498)
- Enable/Disable Navigation without restart [`#1507`](https://github.com/th-ch/youtube-music/pull/1507)
- Turkish(tr)_lang_file [`#1513`](https://github.com/th-ch/youtube-music/pull/1513)
- Skip Disliked Songs [`#1505`](https://github.com/th-ch/youtube-music/pull/1505)
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v6.13.2 [`#1452`](https://github.com/th-ch/youtube-music/pull/1452)
- fix: Homebrew latest release url parsing [`#1496`](https://github.com/th-ch/youtube-music/pull/1496)
- fix: in-player adblocker inject timing issue [`#1478`](https://github.com/th-ch/youtube-music/issues/1478)
- fix(package.json): fix RPM version `libuuid` issue [`#1508`](https://github.com/th-ch/youtube-music/issues/1508)
- Translated using Weblate (Polish) [`7b78ba6`](https://github.com/th-ch/youtube-music/commit/7b78ba67613f14be65a45751efeb06431b405a91)
- Translated using Weblate (French) [`ebc0879`](https://github.com/th-ch/youtube-music/commit/ebc087963b23265ff00528c8305d51597abf587a)
- Translated using Weblate (Chinese (Traditional)) [`020bdc0`](https://github.com/th-ch/youtube-music/commit/020bdc0811ea45ad6c2853c62a05ae6695c5c4f9)
#### [v3.0.2](https://github.com/th-ch/youtube-music/compare/v3.0.1...v3.0.2) #### [v3.0.2](https://github.com/th-ch/youtube-music/compare/v3.0.1...v3.0.2)
> 3 December 2023
- fix(adblocker): fix In-Player adblocker [`#1478`](https://github.com/th-ch/youtube-music/issues/1478) - fix(adblocker): fix In-Player adblocker [`#1478`](https://github.com/th-ch/youtube-music/issues/1478)
- fix(menu): crash on linux [`#1477`](https://github.com/th-ch/youtube-music/issues/1477) - fix(menu): crash on linux [`#1477`](https://github.com/th-ch/youtube-music/issues/1477)
- fix: update pnpm-lock.yaml [`9e2c6b1`](https://github.com/th-ch/youtube-music/commit/9e2c6b1afa33b5708853c8328946e68ec45b09c3) - fix: update pnpm-lock.yaml [`9e2c6b1`](https://github.com/th-ch/youtube-music/commit/9e2c6b1afa33b5708853c8328946e68ec45b09c3)

View File

@ -1,15 +1,18 @@
import { resolve } from 'node:path'; import { resolve, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
import { defineConfig, defineViteConfig } from 'electron-vite'; import { defineConfig, defineViteConfig } from 'electron-vite';
import builtinModules from 'builtin-modules'; import builtinModules from 'builtin-modules';
import viteResolve from 'vite-plugin-resolve'; import viteResolve from 'vite-plugin-resolve';
import Inspect from 'vite-plugin-inspect'; import Inspect from 'vite-plugin-inspect';
import { pluginVirtualModuleGenerator } from './vite-plugins/plugin-importer'; import { pluginVirtualModuleGenerator } from './vite-plugins/plugin-importer.mjs';
import pluginLoader from './vite-plugins/plugin-loader'; import pluginLoader from './vite-plugins/plugin-loader.mjs';
import type { UserConfig } from 'vite'; import type { UserConfig } from 'vite';
import { i18nImporter } from './vite-plugins/i18n-importer'; import { i18nImporter } from './vite-plugins/i18n-importer.mjs';
const __dirname = dirname(fileURLToPath(import.meta.url));
const resolveAlias = { const resolveAlias = {
'@': resolve(__dirname, './src'), '@': resolve(__dirname, './src'),

View File

@ -1,7 +1,7 @@
{ {
"name": "youtube-music", "name": "youtube-music",
"productName": "YouTube Music", "productName": "YouTube Music",
"version": "3.1.0", "version": "3.1.1",
"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",
@ -77,8 +77,8 @@
"rpm" "rpm"
] ]
}, },
"rpm":{ "rpm": {
"depends":[ "depends": [
"/usr/lib64/libuuid.so.1" "/usr/lib64/libuuid.so.1"
] ]
}, },
@ -102,7 +102,7 @@
"vite:inspect": "pnpm clean && electron-vite build --mode development && pnpm exec serve .vite-inspect", "vite:inspect": "pnpm clean && electron-vite build --mode development && pnpm exec serve .vite-inspect",
"start": "electron-vite preview", "start": "electron-vite preview",
"start:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm start", "start:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm start",
"dev": "electron-vite dev", "dev": "electron-vite dev --watch",
"dev:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm dev", "dev:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm dev",
"clean": "del-cli dist && del-cli pack && del-cli .vite-inspect", "clean": "del-cli dist && del-cli pack && del-cli .vite-inspect",
"dist": "pnpm clean && pnpm build && electron-builder --win --mac --linux -p never", "dist": "pnpm clean && pnpm build && electron-builder --win --mac --linux -p never",
@ -123,8 +123,9 @@
}, },
"pnpm": { "pnpm": {
"overrides": { "overrides": {
"esbuild": "0.18.20",
"usocket": "1.0.1", "usocket": "1.0.1",
"rollup": "4.7.0", "rollup": "4.9.1",
"node-gyp": "10.0.1", "node-gyp": "10.0.1",
"xml2js": "0.6.2", "xml2js": "0.6.2",
"node-fetch": "3.3.2", "node-fetch": "3.3.2",
@ -136,7 +137,7 @@
"@cliqz/adblocker-electron": "1.26.12", "@cliqz/adblocker-electron": "1.26.12",
"@cliqz/adblocker-electron-preload": "1.26.12", "@cliqz/adblocker-electron-preload": "1.26.12",
"@electron-toolkit/tsconfig": "1.0.1", "@electron-toolkit/tsconfig": "1.0.1",
"@electron/remote": "2.1.0", "@electron/remote": "2.1.1",
"@ffmpeg.wasm/core-mt": "0.12.0", "@ffmpeg.wasm/core-mt": "0.12.0",
"@ffmpeg.wasm/main": "0.12.0", "@ffmpeg.wasm/main": "0.12.0",
"@foobar404/wave": "2.0.4", "@foobar404/wave": "2.0.4",
@ -161,7 +162,7 @@
"filenamify": "6.0.0", "filenamify": "6.0.0",
"howler": "2.2.4", "howler": "2.2.4",
"html-to-text": "9.0.5", "html-to-text": "9.0.5",
"i18next": "23.7.8", "i18next": "23.7.11",
"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": "6.1.11", "node-html-parser": "6.1.11",
@ -174,12 +175,12 @@
"youtubei.js": "8.0.0" "youtubei.js": "8.0.0"
}, },
"devDependencies": { "devDependencies": {
"@playwright/test": "1.41.0-alpha-dec-10-2023", "@playwright/test": "1.41.0-alpha-dec-18-2023",
"@total-typescript/ts-reset": "0.5.1", "@total-typescript/ts-reset": "0.5.1",
"@types/electron-localshortcut": "3.1.3", "@types/electron-localshortcut": "3.1.3",
"@types/howler": "2.2.11", "@types/howler": "2.2.11",
"@types/html-to-text": "9.0.4", "@types/html-to-text": "9.0.4",
"@typescript-eslint/eslint-plugin": "6.13.2", "@typescript-eslint/eslint-plugin": "6.14.0",
"bufferutil": "4.0.8", "bufferutil": "4.0.8",
"builtin-modules": "3.3.0", "builtin-modules": "3.3.0",
"cross-env": "7.0.3", "cross-env": "7.0.3",
@ -187,22 +188,23 @@
"electron": "28.0.0", "electron": "28.0.0",
"electron-builder": "24.9.1", "electron-builder": "24.9.1",
"electron-devtools-installer": "3.2.0", "electron-devtools-installer": "3.2.0",
"electron-vite": "1.0.29", "electron-vite": "2.0.0-beta.1",
"eslint": "8.55.0", "esbuild": "0.18.20",
"eslint": "8.56.0",
"eslint-import-resolver-exports": "1.0.0-beta.5", "eslint-import-resolver-exports": "1.0.0-beta.5",
"eslint-import-resolver-typescript": "3.6.1", "eslint-import-resolver-typescript": "3.6.1",
"eslint-plugin-import": "2.29.0", "eslint-plugin-import": "2.29.1",
"eslint-plugin-prettier": "5.0.1", "eslint-plugin-prettier": "5.0.1",
"glob": "10.3.10", "glob": "10.3.10",
"node-gyp": "10.0.1", "node-gyp": "10.0.1",
"playwright": "1.41.0-alpha-dec-10-2023", "playwright": "1.41.0-alpha-dec-18-2023",
"rollup": "4.7.0", "rollup": "4.9.1",
"typescript": "5.3.3", "typescript": "5.3.3",
"utf-8-validate": "6.0.3", "utf-8-validate": "6.0.3",
"vite": "4.5.1", "vite": "5.0.10",
"vite-plugin-inspect": "0.8.1", "vite-plugin-inspect": "0.8.1",
"vite-plugin-resolve": "2.5.1", "vite-plugin-resolve": "2.5.1",
"ws": "8.15.0" "ws": "8.15.1"
}, },
"auto-changelog": { "auto-changelog": {
"hideCredit": true, "hideCredit": true,
@ -210,5 +212,5 @@
"unreleased": true, "unreleased": true,
"output": "changelog.md" "output": "changelog.md"
}, },
"packageManager": "pnpm@8.12.0" "packageManager": "pnpm@8.12.1"
} }

470
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,7 @@
"main": { "main": {
"console": { "console": {
"did-finish-load": { "did-finish-load": {
"dev-tools": "Dokončeno načítání. DevTools otevřeny" "dev-tools": "Načítání dokončeno. Vývojářské nástroje se otevřely"
}, },
"i18n": { "i18n": {
"loaded": "i18n načteno" "loaded": "i18n načteno"
@ -43,7 +43,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Menu je skryté, use 'Alt' to show it (nebo 'Escape', pokud používáte in-app-menu)", "detail": "Menu je skryté, stiskněte 'Alt' k zobrazení (nebo 'Escape', pokud používáte in-app-menu)",
"message": "Skrýt Menu je povoleno", "message": "Skrýt Menu je povoleno",
"title": "Skrýt Menu Povolené" "title": "Skrýt Menu Povolené"
}, },
@ -138,6 +138,7 @@
}, },
"tray": { "tray": {
"submenu": { "submenu": {
"disabled": "Vypnuté",
"enabled-and-hide-app": "Povolit a skrýt aplikaci", "enabled-and-hide-app": "Povolit a skrýt aplikaci",
"enabled-and-show-app": "Enabled a show aplikaci", "enabled-and-show-app": "Enabled a show aplikaci",
"play-pause-on-click": "Přehrát/Pozastavit na kliknutí" "play-pause-on-click": "Přehrát/Pozastavit na kliknutí"
@ -172,7 +173,9 @@
"label": "Zobrazení", "label": "Zobrazení",
"submenu": { "submenu": {
"force-reload": "Vynutit znovu načtení", "force-reload": "Vynutit znovu načtení",
"reload": "Obnovit",
"reset-zoom": "Actual velikost", "reset-zoom": "Actual velikost",
"toggle-fullscreen": "Přepnout režim celé obrazovky",
"zoom-in": "Přiblížit", "zoom-in": "Přiblížit",
"zoom-out": "Oddálit" "zoom-out": "Oddálit"
} }

View File

@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Menü ist versteckt, nutze 'Alt', um es zu zeigen (oder 'Escape' beim Verwenden des In-App-Menüs)", "detail": "Das Menü ist versteckt, nutze 'Alt', um es zu aufzurufen (oder 'Escape' beim Verwenden des In-App-Menüs)",
"message": "Menü verstecken ist aktiviert", "message": "Menü verstecken ist aktiviert",
"title": "Menü Verstecken Aktiviert" "title": "Menü Verstecken Aktiviert"
}, },
@ -105,7 +105,7 @@
"label": "Proxy setzen", "label": "Proxy setzen",
"prompt": { "prompt": {
"label": "Proxy-Adresse eingeben: (leer lassen zum Ausschalten)", "label": "Proxy-Adresse eingeben: (leer lassen zum Ausschalten)",
"placeholder": "Beispiel: socks5://127.0.0.1:9999", "placeholder": "Beispiel: SOCKS5://127.0.0.1:9999",
"title": "Proxy setzen" "title": "Proxy setzen"
} }
}, },
@ -470,9 +470,9 @@
"save-window-size": "Fenstergröße speichern", "save-window-size": "Fenstergröße speichern",
"use-native-pip": "Browsereigenes PiP verwenden" "use-native-pip": "Browsereigenes PiP verwenden"
}, },
"name": "Bild im Bild", "name": "Bild-im-Bild",
"templates": { "templates": {
"button": "Bild im Bild" "button": "Bild-im-Bild"
} }
}, },
"playback-speed": { "playback-speed": {
@ -519,7 +519,7 @@
"name": "Videoqualitätsänderer" "name": "Videoqualitätsänderer"
}, },
"shortcuts": { "shortcuts": {
"description": "Ermöglicht das Festlegen globaler Hotkeys für die Wiedergabe (Abspielen/Pause/Nächstes/Vorheriges) + Deaktivieren des Medien-OSD durch Überschreiben der Medientasten + Aktivieren von Strg/CMD + F zum Suchen + Aktivieren der Linux mpris-Unterstützung für Medientasten + Angepasste Tastenkürzel für fortgeschrittene Benutzer", "description": "Ermöglicht das Festlegen globaler Hotkeys für die Wiedergabe (Abspielen/Pause/Nächster/Vorheriger) + Deaktivieren des Medien-OSD durch Überschreiben der Medientasten + Aktivieren von Strg/CMD + F zum Suchen + Aktivieren der Linux mpris-Unterstützung für Medientasten + Angepasste Tastenkürzel für fortgeschrittene Benutzer.",
"menu": { "menu": {
"override-media-keys": "Medientasten überschreiben", "override-media-keys": "Medientasten überschreiben",
"set-keybinds": "Globale Liedsteuerung setzen" "set-keybinds": "Globale Liedsteuerung setzen"
@ -537,6 +537,10 @@
} }
} }
}, },
"skip-disliked-songs": {
"description": "Überspringt Lieder, die ihnen nicht gefallen",
"name": "Überspring Lieder, die ihnen nicht gefallen"
},
"skip-silences": { "skip-silences": {
"description": "Automatisch stille Abschnitte in Liedern überspringen", "description": "Automatisch stille Abschnitte in Liedern überspringen",
"name": "Stille überspringen" "name": "Stille überspringen"

View File

@ -1,4 +1,11 @@
{ {
"common": {
"console": {
"plugins": {
"execute-failed": "Αποτυχία εκτέλεσης προσθέτου {{pluginName}}::{{contextName}}"
}
}
},
"language": { "language": {
"code": "el", "code": "el",
"local-name": "Ελληνικά", "local-name": "Ελληνικά",

View File

@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Menu is hidden, use 'Alt' to show it (or 'Escape' if using in-app-menu)", "detail": "Menu is hidden, use 'Alt' to show it (or 'Escape' if using In-App Menu)",
"message": "Hide Menu is enabled", "message": "Hide Menu is enabled",
"title": "Hide Menu Enabled" "title": "Hide Menu Enabled"
}, },
@ -96,7 +96,7 @@
"advanced-options": { "advanced-options": {
"label": "Advanced options", "label": "Advanced options",
"submenu": { "submenu": {
"auto-reset-app-cache": "Reset App cache when app starts", "auto-reset-app-cache": "Reset app cache when app starts",
"disable-hardware-acceleration": "Disable hardware acceleration", "disable-hardware-acceleration": "Disable hardware acceleration",
"edit-config-json": "Edit config.json", "edit-config-json": "Edit config.json",
"override-user-agent": "Override User-Agent", "override-user-agent": "Override User-Agent",
@ -105,7 +105,7 @@
"label": "Set proxy", "label": "Set proxy",
"prompt": { "prompt": {
"label": "Enter Proxy Address: (leave empty to disable)", "label": "Enter Proxy Address: (leave empty to disable)",
"placeholder": "Example: socks5://127.0.0.1:9999", "placeholder": "Example: SOCKS5://127.0.0.1:9999",
"title": "Set proxy" "title": "Set proxy"
} }
}, },
@ -241,7 +241,7 @@
"smoothness-transition": { "smoothness-transition": {
"label": "Smoothness transition", "label": "Smoothness transition",
"submenu": { "submenu": {
"during": "During {{interpolationTime}}s" "during": "During {{interpolationTime}} s"
} }
}, },
"use-fullscreen": { "use-fullscreen": {
@ -293,8 +293,8 @@
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "Fade in duration (milliseconds)", "fade-in-duration": "Fade in duration (ms)",
"fade-out-duration": "Fade out duration (milliseconds)", "fade-out-duration": "Fade out duration (ms)",
"fade-scaling": { "fade-scaling": {
"label": "Fade scaling", "label": "Fade scaling",
"linear": "Linear", "linear": "Linear",
@ -462,17 +462,17 @@
"keybind-options": { "keybind-options": {
"hotkey": "Hotkey" "hotkey": "Hotkey"
}, },
"label": "Choose a hotkey for toggle Picture in Picture", "label": "Choose a hotkey to toggle picture-in-picture",
"title": "Picture in Picture Hotkey" "title": "Picture-in-picture Hotkey"
} }
}, },
"save-window-position": "Save window position", "save-window-position": "Save window position",
"save-window-size": "Save window size", "save-window-size": "Save window size",
"use-native-pip": "Use browser native PiP" "use-native-pip": "Use browser native PiP"
}, },
"name": "Picture in Picture", "name": "Picture-in-picture",
"templates": { "templates": {
"button": "Picture in Picture" "button": "Picture-in-picture"
} }
}, },
"playback-speed": { "playback-speed": {
@ -519,7 +519,7 @@
"name": "Video Quality Changer" "name": "Video Quality Changer"
}, },
"shortcuts": { "shortcuts": {
"description": "Allows setting global hotkeys for playback (play/pause/next/previous) + disable media osd by overriding media keys + enable Ctrl/CMD + F to search + enable linux mpris support for mediakeys + custom hotkeys for advanced users", "description": "Allows setting global hotkeys for playback (play/pause/next/previous) and turning off media OSD by overriding media keys, turning on Ctrl/CMD + F to search, turning on Linux MPRIS support for media keys, and custom hotkeys for advanced users.",
"menu": { "menu": {
"override-media-keys": "Override Media Keys", "override-media-keys": "Override Media Keys",
"set-keybinds": "Set Global Song Controls" "set-keybinds": "Set Global Song Controls"

View File

@ -16,12 +16,12 @@
"language": { "language": {
"code": "es", "code": "es",
"local-name": "Inglés", "local-name": "Inglés",
"name": "Inglés" "name": "Spanish"
}, },
"main": { "main": {
"console": { "console": {
"did-finish-load": { "did-finish-load": {
"dev-tools": "Carga Finalizada. DevTools abiertas" "dev-tools": "Carga finalizada. DevTools abiertos"
}, },
"i18n": { "i18n": {
"loaded": "i18n cargado" "loaded": "i18n cargado"
@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "El menú está oculto, use 'Alt' para mostrarlo (o 'Escape' si usa en-app-menu)", "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", "message": "Menu oculto esta deshabilitado",
"title": "Menú oculto activado" "title": "Menú oculto activado"
}, },
@ -96,7 +96,7 @@
"advanced-options": { "advanced-options": {
"label": "Opciones avanzadas", "label": "Opciones avanzadas",
"submenu": { "submenu": {
"auto-reset-app-cache": "Restablecer la caché cuando se inicie la aplicación", "auto-reset-app-cache": "Restablecer la caché de la aplicación al iniciarla",
"disable-hardware-acceleration": "Desactivar la aceleración por hardware", "disable-hardware-acceleration": "Desactivar la aceleración por hardware",
"edit-config-json": "Editar config.json", "edit-config-json": "Editar config.json",
"override-user-agent": "sobrescribir User-Agent", "override-user-agent": "sobrescribir User-Agent",
@ -105,7 +105,7 @@
"label": "Definir proxy", "label": "Definir proxy",
"prompt": { "prompt": {
"label": "Introduzca la dirección del proxy: (déjela vacía para desactivarla)", "label": "Introduzca la dirección del proxy: (déjela vacía para desactivarla)",
"placeholder": "Ejemplo: socks5://127.0.0.1:9999", "placeholder": "Ejemplo: SOCKS5://127.0.0.1:9999",
"title": "Establecer proxy" "title": "Establecer proxy"
} }
}, },
@ -241,7 +241,7 @@
"smoothness-transition": { "smoothness-transition": {
"label": "Transición suave", "label": "Transición suave",
"submenu": { "submenu": {
"during": "Durante {{interpolationTime}}s" "during": "Durante {{interpolationTime}} s"
} }
}, },
"use-fullscreen": { "use-fullscreen": {
@ -293,8 +293,8 @@
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "Duración del fundido (milliseconds)", "fade-in-duration": "Duración del fundido (ms)",
"fade-out-duration": "Duración del fundido de salida (milliseconds)", "fade-out-duration": "Duración del fundido de salida (ms)",
"fade-scaling": { "fade-scaling": {
"label": "Escala de fundido", "label": "Escala de fundido",
"linear": "Lineal", "linear": "Lineal",
@ -462,17 +462,17 @@
"keybind-options": { "keybind-options": {
"hotkey": "Tecla de acceso rápido" "hotkey": "Tecla de acceso rápido"
}, },
"label": "Elige una tecla de acceso rápido para alternar al modo \"Dos imágenes a la vez\" PiP", "label": "Elige una tecla de acceso rápido para activar la función de imagen en imagen",
"title": "Tecla de acceso rápido al modo \"Dos imágenes a la vez\" PiP" "title": "Tecla de acceso directo a imagen en imagen"
} }
}, },
"save-window-position": "Guardar la posición de la ventana", "save-window-position": "Guardar la posición de la ventana",
"save-window-size": "Guardar tamaño 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 \"Dos imágenes a la vez\" PiP nativo del navegador"
}, },
"name": "Imagen en Imagen", "name": "Imagen en imagen",
"templates": { "templates": {
"button": "Imagen en Imagen" "button": "Imagen en imagen"
} }
}, },
"playback-speed": { "playback-speed": {
@ -519,7 +519,7 @@
"name": "Ajustador de calidad de vídeo" "name": "Ajustador de calidad de vídeo"
}, },
"shortcuts": { "shortcuts": {
"description": "Permite ajustar atajos de teclado generales para reproducción (reproducir/pausar/siguiente/previo) + deshabilita OSD de medios mediante la anulación de las teclas de medios + habilitar Ctrl/CMD + F para buscar + habilitar soporte mpris de linux para teclas de medios + atajos de teclado personalizados 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": { "menu": {
"override-media-keys": "Anular teclas de medios", "override-media-keys": "Anular teclas de medios",
"set-keybinds": "Configurar controles globales de canciones" "set-keybinds": "Configurar controles globales de canciones"

View File

@ -537,6 +537,9 @@
} }
} }
}, },
"skip-disliked-songs": {
"description": "Passer les musiques que je n'aime pas"
},
"skip-silences": { "skip-silences": {
"description": "Ignorer automatiquement les sections de silence dans les chansons", "description": "Ignorer automatiquement les sections de silence dans les chansons",
"name": "Passer les silences" "name": "Passer les silences"

View File

@ -0,0 +1,19 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Gagal saat mengeksekusi 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",
"load-failed": "Gagal memuat plugin \"{{pluginName}}\"",
"loaded": "Plugin \"{{pluginName}}\" dimuat"
}
}
},
"language": {
"code": "id",
"local-name": "Bahasa Indonesia",
"name": "Indonesian"
}
}

View File

@ -15,8 +15,8 @@
}, },
"language": { "language": {
"code": "it", "code": "it",
"local-name": "Inglese", "local-name": "Italiano",
"name": "Inglese" "name": "Italian"
}, },
"main": { "main": {
"console": { "console": {
@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Il menu è nascosto, utilizza 'Alt' per visualizzarlo (o 'Escape' se si utilizza il menu In-App)\"", "detail": "Il menu è nascosto, utilizza 'Alt' per visualizzarlo (o 'Escape' se si utilizza il Menu In-App)\"",
"message": "'Nascondi menu' è attivo", "message": "'Nascondi menu' è attivo",
"title": "'Nascondi menu' attivo" "title": "'Nascondi menu' attivo"
}, },
@ -96,7 +96,7 @@
"advanced-options": { "advanced-options": {
"label": "Opzioni avanzate", "label": "Opzioni avanzate",
"submenu": { "submenu": {
"auto-reset-app-cache": "Resetta la cache dell'app quando viene riavviata", "auto-reset-app-cache": "Reimposta la cache dell'app quando viene riavviata",
"disable-hardware-acceleration": "Disabilita l'accelerazione hardware", "disable-hardware-acceleration": "Disabilita l'accelerazione hardware",
"edit-config-json": "Modificare config.json", "edit-config-json": "Modificare config.json",
"override-user-agent": "Sovrascrivi User-Agent", "override-user-agent": "Sovrascrivi User-Agent",
@ -105,7 +105,7 @@
"label": "Imposta il proxy", "label": "Imposta il proxy",
"prompt": { "prompt": {
"label": "Inserisci l'indirizzo proxy: (lascia vuoto per disabilitare)", "label": "Inserisci l'indirizzo proxy: (lascia vuoto per disabilitare)",
"placeholder": "Esempio: socks5://127.0.0.1:9999", "placeholder": "Esempio: SOKS5://127.0.0.1:9999",
"title": "Imposta il proxy" "title": "Imposta il proxy"
} }
}, },
@ -116,7 +116,7 @@
"auto-update": "Aggiornamento automatico", "auto-update": "Aggiornamento automatico",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "Il menu verrà nascosto al prossimo avvio. Utilizzare [Alt] per mostrarlo (o backtick [`] se si utilizza il menu In-App)", "message": "Il menu verrà nascosto al prossimo avvio. Utilizzare [Alt] per mostrarlo (o backtick [`] se si utilizza il Menu In-App)",
"title": "Nascondi menu abilitato" "title": "Nascondi menu abilitato"
}, },
"label": "Nascondi menu" "label": "Nascondi menu"
@ -132,7 +132,7 @@
} }
}, },
"resume-on-start": "Riprendi a riprodurre l'ultimo brano all'avvio dell'app", "resume-on-start": "Riprendi a riprodurre l'ultimo brano all'avvio dell'app",
"single-instance-lock": "Blocco a istanza singola", "single-instance-lock": "Permetti una sola istanza dell'app",
"start-at-login": "Avvia al login", "start-at-login": "Avvia al login",
"starting-page": { "starting-page": {
"label": "Pagina iniziale", "label": "Pagina iniziale",
@ -169,7 +169,7 @@
} }
}, },
"plugins": { "plugins": {
"enabled": "Abilitato", "enabled": "Attivato",
"label": "Plugin" "label": "Plugin"
}, },
"view": { "view": {
@ -177,7 +177,7 @@
"submenu": { "submenu": {
"force-reload": "Forza l'aggiornamento", "force-reload": "Forza l'aggiornamento",
"reload": "Aggiorna", "reload": "Aggiorna",
"reset-zoom": "Dimensione attuale", "reset-zoom": "Ripristina dimensione",
"toggle-fullscreen": "Attiva/disattiva Schermo Intero", "toggle-fullscreen": "Attiva/disattiva Schermo Intero",
"zoom-in": "Zoom in", "zoom-in": "Zoom in",
"zoom-out": "Zoom out" "zoom-out": "Zoom out"
@ -203,7 +203,7 @@
}, },
"album-color-theme": { "album-color-theme": {
"description": "Applica un tema dinamico e degli effetti visivi basandosi sul colore dell'album", "description": "Applica un tema dinamico e degli effetti visivi basandosi sul colore dell'album",
"name": "Tema Colore Album" "name": "Tema abbinato a colore album"
}, },
"ambient-mode": { "ambient-mode": {
"description": "Applica un effetto di illuminazione proiettando i colori delicati del video sullo sfondo dello schermo.", "description": "Applica un effetto di illuminazione proiettando i colori delicati del video sullo sfondo dello schermo.",
@ -241,7 +241,7 @@
"smoothness-transition": { "smoothness-transition": {
"label": "Fluidità transizione", "label": "Fluidità transizione",
"submenu": { "submenu": {
"during": "Per {{interpolationTime}}" "during": "Per {{interpolationTime}} _s"
} }
}, },
"use-fullscreen": { "use-fullscreen": {
@ -252,15 +252,15 @@
}, },
"audio-compressor": { "audio-compressor": {
"description": "Attiva la compressione audio (abbassa il volume delle parti più alte e alza quello delle parti più basse del segnale)", "description": "Attiva la compressione audio (abbassa il volume delle parti più alte e alza quello delle parti più basse del segnale)",
"name": "Compressore Audio" "name": "Compressore audio"
}, },
"blur-nav-bar": { "blur-nav-bar": {
"description": "Rende la barra di navigazione trasparente e sfuocata", "description": "Rende la barra di navigazione trasparente e sfuocata",
"name": "Sfuoca Barra di Navigazione" "name": "Barra di navigazione trasparente"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypassa la verifica dell'età di YouTube", "description": "Bypassa la verifica dell'età di YouTube",
"name": "Bypassa le Restrizioni d'Età" "name": "Aggira i limiti d'età"
}, },
"captions-selector": { "captions-selector": {
"description": "Selettore sottotitolo per le tracce audio di YouTube", "description": "Selettore sottotitolo per le tracce audio di YouTube",
@ -282,7 +282,7 @@
}, },
"compact-sidebar": { "compact-sidebar": {
"description": "Imposta sempre la barra laterale in modalità compatta", "description": "Imposta sempre la barra laterale in modalità compatta",
"name": "Barra Laterale Compatta" "name": "Barra laterale compatta"
}, },
"crossfade": { "crossfade": {
"description": "Crossfade tra i brani", "description": "Crossfade tra i brani",
@ -293,8 +293,8 @@
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "Durata dissolvenza in entrata (millisecondi)", "fade-in-duration": "Durata dissolvenza in entrata (ms)",
"fade-out-duration": "Durata dissolvenza in uscita (millisecondi)", "fade-out-duration": "Durata dissolvenza in uscita (ms)",
"fade-scaling": { "fade-scaling": {
"label": "Transizione dissolvenza", "label": "Transizione dissolvenza",
"linear": "Lineare", "linear": "Lineare",
@ -311,7 +311,7 @@
"menu": { "menu": {
"apply-once": "Solo all'avvio" "apply-once": "Solo all'avvio"
}, },
"name": "Disattiva Autoplay" "name": "Disattiva autoplay"
}, },
"discord": { "discord": {
"backend": { "backend": {
@ -399,7 +399,7 @@
}, },
"exponential-volume": { "exponential-volume": {
"description": "Rende esponenziale il cursore del volume, in modo da facilitare la selezione di volumi più bassi.", "description": "Rende esponenziale il cursore del volume, in modo da facilitare la selezione di volumi più bassi.",
"name": "Volume Esponenziale" "name": "Volume esponenziale"
}, },
"in-app-menu": { "in-app-menu": {
"description": "Migliora l'aspetto delle barre del menu con un look scuro o basato sul colore dell'album", "description": "Migliora l'aspetto delle barre del menu con un look scuro o basato sul colore dell'album",
@ -432,7 +432,7 @@
}, },
"no-google-login": { "no-google-login": {
"description": "Rimuovi i pulsanti di accesso e i link di Google dall'interfaccia", "description": "Rimuovi i pulsanti di accesso e i link di Google dall'interfaccia",
"name": "Nessun Login di Google" "name": "Nessun login di Google"
}, },
"notifications": { "notifications": {
"description": "Mostra una notifica quando viene riprodotto un brano (le notifiche interattive sono disponibili su Windows)", "description": "Mostra una notifica quando viene riprodotto un brano (le notifiche interattive sono disponibili su Windows)",
@ -462,22 +462,22 @@
"keybind-options": { "keybind-options": {
"hotkey": "Hotkey" "hotkey": "Hotkey"
}, },
"label": "Scegliere un'hotkey per attivare Picture-in-Picture", "label": "Scegliere un'hotkey per attivare Picture-in-picture",
"title": "Picture-in-Picture Hotkey" "title": "Picture-in-picture Hotkey"
} }
}, },
"save-window-position": "Salva la posizione della finestra", "save-window-position": "Salva la posizione della finestra",
"save-window-size": "Salva la dimensione della finestra", "save-window-size": "Salva la dimensione della finestra",
"use-native-pip": "Usa il PiP nativo del browser" "use-native-pip": "Usa il PiP nativo del browser"
}, },
"name": "Picture in Picture", "name": "Picture-in-Picture",
"templates": { "templates": {
"button": "Picture in Picture" "button": "Picture-in-Picture"
} }
}, },
"playback-speed": { "playback-speed": {
"description": "Ascolto veloce, ascolto lento! Aggiunge un cursore che controlla la velocità di riproduzione del brano", "description": "Ascolto veloce, ascolto lento! Aggiunge un cursore che controlla la velocità di riproduzione del brano",
"name": "Velocità Riproduzione", "name": "Velocità riproduzione",
"templates": { "templates": {
"button": "Velocità" "button": "Velocità"
} }
@ -489,7 +489,7 @@
"custom-volume-steps": "Imposta incrementi di volume personalizzati", "custom-volume-steps": "Imposta incrementi di volume personalizzati",
"global-shortcuts": "Hotkey globali" "global-shortcuts": "Hotkey globali"
}, },
"name": "Volume Preciso", "name": "Volume preciso",
"prompt": { "prompt": {
"global-shortcuts": { "global-shortcuts": {
"keybind-options": { "keybind-options": {
@ -519,7 +519,7 @@
"name": "Cambia qualità video" "name": "Cambia qualità video"
}, },
"shortcuts": { "shortcuts": {
"description": "Consente di impostare tasti di scelta rapida globali per la riproduzione (riproduci/pausa/successivo/precedente) + disabilita l'OSD multimediale sovrascrivendo i tasti multimediali + abilita Ctrl/CMD + F per la ricerca + abilita il supporto Linux MPRIS per i tasti multimediali + tasti di scelta rapida personalizzati per utenti avanzati", "description": "Consente di impostare tasti di scelta rapida globali per la riproduzione (riproduci/pausa/successivo/precedente) + disabilita l'OSD multimediale sovrascrivendo i tasti multimediali + abilita Ctrl/CMD + F per la ricerca + abilita il supporto Linux MPRIS per i tasti multimediali + tasti di scelta rapida personalizzati per utenti avanzati.",
"menu": { "menu": {
"override-media-keys": "Ridefinisci i tasti multimediali", "override-media-keys": "Ridefinisci i tasti multimediali",
"set-keybinds": "Imposta i controlli brano globali" "set-keybinds": "Imposta i controlli brano globali"
@ -537,21 +537,25 @@
} }
} }
}, },
"skip-disliked-songs": {
"description": "Salta i brani che non ti piacciono",
"name": "Salta i brani che non ti piacciono"
},
"skip-silences": { "skip-silences": {
"description": "Salta automaticamente le parti silenziose nei brani", "description": "Salta automaticamente le parti silenziose nei brani",
"name": "Salta Silenzi" "name": "Salta silenzi"
}, },
"sponsorblock": { "sponsorblock": {
"description": "Salta automaticamente le parti non musicali, come l'intro/outro delle canzoni o le parti dei video musicali in cui non viene riprodotto il brano", "description": "Salta automaticamente le parti non musicali, come l'intro/outro delle canzoni o le parti dei video musicali in cui non viene riprodotto il brano",
"name": "SponsorBlock" "name": "Blocco sponsor"
}, },
"taskbar-mediacontrol": { "taskbar-mediacontrol": {
"description": "Controlla riproduzione dalla taskbar di Windows", "description": "Controlla riproduzione dalla taskbar di Windows",
"name": "Controlli Multimediali Taskbar" "name": "Controlli multimediali sulla taskbar"
}, },
"touchbar": { "touchbar": {
"description": "Aggiunge un widget TouchBar per gli utenti macOS", "description": "Aggiunge un widget TouchBar per gli utenti macOS",
"name": "Touch Bar" "name": "Touch Bar (per MacOS)"
}, },
"tuna-obs": { "tuna-obs": {
"description": "Integrazione con il plugin OBS Tuna", "description": "Integrazione con il plugin OBS Tuna",
@ -573,7 +577,7 @@
"label": "Modalità", "label": "Modalità",
"submenu": { "submenu": {
"custom": "Brano/Video personalizzato", "custom": "Brano/Video personalizzato",
"disabled": "Disabilitato", "disabled": "Disattivato",
"native": "Brano/Video nativo" "native": "Brano/Video nativo"
} }
} }
@ -588,7 +592,7 @@
"menu": { "menu": {
"visualizer-type": "Tipo di visualizzazione" "visualizer-type": "Tipo di visualizzazione"
}, },
"name": "Visualizzatore" "name": "Visualizzatore grafico"
} }
} }
} }

View File

@ -105,7 +105,7 @@
"label": "プロキシ", "label": "プロキシ",
"prompt": { "prompt": {
"label": "プロキシのアドレスを入力: (空にすると無効化)", "label": "プロキシのアドレスを入力: (空にすると無効化)",
"placeholder": "例: socks5://127.0.0.1:9999", "placeholder": "例: SOCKS5://127.0.0.1:9999",
"title": "プロキシ" "title": "プロキシ"
} }
}, },
@ -519,7 +519,7 @@
"name": "ビデオ品質チェンジャー" "name": "ビデオ品質チェンジャー"
}, },
"shortcuts": { "shortcuts": {
"description": "再生用のグローバル ホットキー (再生/一時停止/次/前) の設定 + メディア キーをオーバーライドしてメディア OSD を無効にする + Ctrl/CMD + F による検索を有効にする + メディアキーの Linux mpris サポートを有効にする + 上級ユーザー向けのカスタム ホットキー を可能にします", "description": "再生用のグローバル ホットキー (再生/一時停止/次/前) の設定メディア キーをオーバーライドしてメディア OSD を無効にするCtrl/CMD + F による検索を有効にする メディアキーの Linux mpris サポートを有効にする 上級ユーザー向けのカスタム ホットキー を可能にします",
"menu": { "menu": {
"override-media-keys": "メディアキーを上書き", "override-media-keys": "メディアキーを上書き",
"set-keybinds": "グローバルソングコントロールを設定する" "set-keybinds": "グローバルソングコントロールを設定する"

View File

@ -105,7 +105,7 @@
"label": "프록시 설정", "label": "프록시 설정",
"prompt": { "prompt": {
"label": "프록시 주소를 입력하세요: (비워두면 비활성화됨)", "label": "프록시 주소를 입력하세요: (비워두면 비활성화됨)",
"placeholder": "예제: socks5://127.0.0.1:9999", "placeholder": "예제: SOCKS5://127.0.0.1:9999",
"title": "프록시 설정" "title": "프록시 설정"
} }
}, },
@ -197,9 +197,9 @@
"adblocker": { "adblocker": {
"description": "모든 광고와 트래커를 즉시 차단합니다", "description": "모든 광고와 트래커를 즉시 차단합니다",
"menu": { "menu": {
"blocker": "애드블록 타입" "blocker": "광고 차단 타입"
}, },
"name": "애드블록" "name": "광고 차단기"
}, },
"album-color-theme": { "album-color-theme": {
"description": "앨범 색상 팔레트를 기반으로 동적 테마 및 시각 효과를 적용합니다", "description": "앨범 색상 팔레트를 기반으로 동적 테마 및 시각 효과를 적용합니다",
@ -519,7 +519,7 @@
"name": "영상 품질 체인저" "name": "영상 품질 체인저"
}, },
"shortcuts": { "shortcuts": {
"description": "재생을 위한 전역 단축키 설정 허용 (재생/일시 정지/다음/이전) + 미디어 키를 재정의하여 미디어 OSD 비활성화 + Ctrl/CMD + F 검색 활성화 + 미디어 키에 대한 리눅스 MPRIS 지원 활성화 + 고급 사용자를 위한 사용자 지정 단축키 지원", "description": "재생을 위한 전역 단축키 설정 허용 (재생/일시 정지/다음/이전), 미디어 키를 재정의하여 미디어 OSD 비활성화, Ctrl/CMD + F 검색 활성화, 미디어키 지원을 위해 리눅스 MPRIS 지원 활성화, 고급 사용자를 위한 사용자 지정 단축키 지원 추가.",
"menu": { "menu": {
"override-media-keys": "미디어 키 재정의", "override-media-keys": "미디어 키 재정의",
"set-keybinds": "전역 노래 제어 설정" "set-keybinds": "전역 노래 제어 설정"

598
src/i18n/resources/lt.json Normal file
View File

@ -0,0 +1,598 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "Nepavyko įvykdyti įskiepio {{pluginName}}::{{contextName}}",
"executed-at-ms": "Įskiepis {{pluginName}}::{{contextName}} įvykdytas per {{ms}}ms",
"initialize-failed": "Nepavyko inicijuoti įskiepio \"{{pluginName}}\"",
"load-all": "Kraunama visus įskiepius",
"load-failed": "Nepavyko užkrauti įskiepio \"{{pluginName}}\"",
"loaded": "Įskiepis \"{{pluginName}}\" užkrautas",
"unload-failed": "Nepavyko iškrauti įskiepio \"{{pluginName}}\"",
"unloaded": "Įskiepis \"{{pluginName}}\" iškrautas"
}
}
},
"language": {
"code": "lt",
"local-name": "Lietuvių kalba",
"name": "Lithuanian"
},
"main": {
"console": {
"did-finish-load": {
"dev-tools": "Baigta krauti. \"DevTools\" atidaryta"
},
"i18n": {
"loaded": "\"i18n\" užkrauta"
},
"second-instance": {
"receive-command": "Gauta komanda per protokolą: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS failas \"{{cssFile}}\" neegzistuoja, ignoruojama"
},
"unresponsive": {
"details": "Nereguojanti paklaida\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Išvaloma programos talpykla"
},
"window": {
"tried-to-render-offscreen": "Langas bandė vaizduotis už ekrano ribų, langoDydis={{windowSize}}, ekranoDydis={{displaySize}}, pozicija={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Meniu yra paslėpta, naudokite 'Alt', kad ją parodyti (arba 'Escape' jei naudojama programos meniu)",
"message": "\"Paslėpti Meniu\" yra įjungta",
"title": "Įjungta \"Paslėpti Meniu\""
},
"need-to-restart": {
"buttons": {
"later": "Vėliau",
"restart-now": "Perkrauti Dabar"
},
"detail": "\"{{pluginName}}\" įskiepis reikalauja perkrovimą, kad veiktų",
"message": "\"{{pluginName}}\" reikia perkrovimo",
"title": "Reikiamas perkrovimas"
},
"unresponsive": {
"buttons": {
"quit": "Išeiti",
"relaunch": "Perleisti",
"wait": "Palaukti"
},
"detail": "Mes apgailestaujame dėl nepatogumų! prašau pasirinkti ką daryti:",
"message": "Programa Neatsako",
"title": "Langas Neatsako"
},
"update-available": {
"buttons": {
"disable": "Išjungti Atnaujinimus",
"download": "Atsisiųsti",
"ok": "Gerai"
},
"detail": "Nauja versija yra prieinama ir gali būti atsisiųsta {{downloadLink}}",
"message": "Nauja versija yra prieinama",
"title": "Prieinamas Atnaujinimas"
}
},
"menu": {
"about": "Apie",
"navigation": {
"label": "Navigacija",
"submenu": {
"copy-current-url": "Nukopijuoti dabartinį URL",
"go-back": "Grįžti Atgal",
"go-forward": "Eiti į priekį",
"quit": "Išeiti",
"restart": "Perkrauti programą"
}
},
"options": {
"label": "Nustatymai",
"submenu": {
"advanced-options": {
"label": "Išplėstiniai nustatymai",
"submenu": {
"auto-reset-app-cache": "Perkrauti programos talpyklą, kai programa paleidžiama",
"disable-hardware-acceleration": "Išjungti aparatūros pagreitį",
"edit-config-json": "Redaguoti config.json",
"override-user-agent": "Perrašyti User-Agent",
"restart-on-config-changes": "Perkrauti po config pasikeitimo",
"set-proxy": {
"label": "Nustatyti įgaliotajį serverį",
"prompt": {
"label": "Įvesti Įgaliotojo serverio adresą: (palikti tuščią, kad išjungti)",
"placeholder": "Pavyzdys: SOCKS5://127.0.0.1:9999",
"title": "Nustatyti įgaliotajį serverį"
}
},
"toggle-dev-tools": "Įjungti/Išjungti DevTools"
}
},
"always-on-top": "Visada viršuje",
"auto-update": "Automatinis Atnaujinimas",
"hide-menu": {
"dialog": {
"message": "Meniu bus paslėpta per kitą paleidimą, naudokite [Alt], kad ją parodyti (arba [`] jei naudojama programos meniu)",
"title": "\"Paslėpti Meniu\" įjungtas"
},
"label": "Paslėpti Meniu"
},
"language": {
"dialog": {
"message": "Kalba bus pakeista po perkrovimo",
"title": "Kalba Pakeista"
},
"label": "Kalba",
"submenu": {
"to-help-translate": "Norite padėti išversti? Paspauskite čia"
}
},
"resume-on-start": "Tęsti paskutinę dainą, kai programa bus paleista",
"single-instance-lock": "Vienkartinis užraktas",
"start-at-login": "Pradėti nuo prisijungimo",
"starting-page": {
"label": "Pradžios puslapis",
"unset": "Nenustatyta"
},
"tray": {
"label": "Padėklas",
"submenu": {
"disabled": "Išjungta",
"enabled-and-hide-app": "Įjungta ir slėpti programos langą",
"enabled-and-show-app": "Įjungta ir rodyti programos langą",
"play-pause-on-click": "Leisti/Sustabdyti ant paspaudimo"
}
},
"visual-tweaks": {
"label": "Vizualiniai patobulinimai",
"submenu": {
"like-buttons": {
"default": "Numatytasis",
"force-show": "Priversti rodyti",
"hide": "Slėpti",
"label": "\"Patinka\" mygtukai"
},
"remove-upgrade-button": "Nerodyti \"Patobulinti\" mygtuko",
"theme": {
"label": "Tema",
"submenu": {
"import-css-file": "Įkelti pasirinktinį CSS failą",
"no-theme": "Be temos"
}
}
}
}
}
},
"plugins": {
"enabled": "Įjungta",
"label": "Įskiepiai"
},
"view": {
"label": "Vaizdas",
"submenu": {
"force-reload": "Priverstinis perkrovimas",
"reload": "Perkrauti",
"reset-zoom": "Tikras dydis",
"toggle-fullscreen": "Įjungti/Išjungti Pilną Ekraną",
"zoom-in": "Priartinti",
"zoom-out": "Nutolinti"
}
}
},
"tray": {
"next": "Kitas",
"play-pause": "Leisti/Sustabdyti",
"previous": "Ankstesnis",
"quit": "Išeiti",
"restart": "Perkrauti programą",
"show": "Rodyti langą"
}
},
"plugins": {
"adblocker": {
"description": "Blokuoti visas reklamas ir seklius",
"menu": {
"blocker": "Blokuotojas"
},
"name": "Reklamų blokuotojas"
},
"album-color-theme": {
"description": "Pritaiko dinamišką temą ir vizualinius efektus pagal albumo spalvų paletę",
"name": "Albumo Spalvų Tema"
},
"ambient-mode": {
"description": "Pritaiko apšvietimo efektą, perteikdamas švelnias vaizdo įrašo spalvas į ekrano foną.",
"menu": {
"blur-amount": {
"label": "Suliejimo kiekis",
"submenu": {
"pixels": "{{blurAmount}} pikseliai"
}
},
"buffer": {
"label": "Buferis",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Skaidrumas",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Kokybė",
"submenu": {
"pixels": "{{quality}} pikseliai"
}
},
"size": {
"label": "Dydis",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Perėjimo švelnumas",
"submenu": {
"during": "Per {{interpolationTime}}s"
}
},
"use-fullscreen": {
"label": "Naudojamas visas ekranas"
}
},
"name": "Aplinkos rėžimas"
},
"audio-compressor": {
"description": "Pritaikyti garso kompresiją (sumažina garsiausių signalo dalių garsumą ir padidina švelniausių dalių garsumą)",
"name": "Garso Kompresorius"
},
"blur-nav-bar": {
"description": "Padaro navigacijos lentą permatomą ir susiliejusią",
"name": "Sulieti Navigacijos Lentą"
},
"bypass-age-restrictions": {
"description": "Apeiti \"Youtube\" amžiaus patikrinimą",
"name": "Apeiti Amžiaus Apribojimus"
},
"captions-selector": {
"description": "„YouTube Music“ Garso takelių antraščių parinkiklis",
"menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės"
},
"name": "Antraščių parinkiklis",
"prompt": {
"selector": {
"label": "Dabartinė antraščių kalba: {{language}}",
"none": "Joks",
"title": "Pasirinkti antraščių kalbą"
}
},
"templates": {
"title": "Atidaryti antraščių parinkiklį"
}
},
"compact-sidebar": {
"description": "Visada nustatyti šoninę juostą kompaktiniame rėžime",
"name": "Kompaktinė šoninė juosta"
},
"crossfade": {
"description": "Perliejimas tarp dainų",
"menu": {
"advanced": "Išplėstinė"
},
"name": "Perliejimas [beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Išblukimo trukmė (ms)",
"fade-out-duration": "Išnykimo trukmė (ms)",
"fade-scaling": {
"label": "Išblukimo stiprumas",
"linear": "Linijinis",
"logarithmic": "Logaritminis"
},
"seconds-before-end": "Pradėti lieti dainas N sekundžių prieš pabaigą"
},
"title": "Perliejimo nustatymai"
}
}
},
"disable-autoplay": {
"description": "Pradeda dainą sustabdytame rėžime",
"menu": {
"apply-once": "Pritaiko tik per programos paleidimą"
},
"name": "Išjungti Automatinį leidimą"
},
"discord": {
"backend": {
"already-connected": "Bandyta prisijungti naudojant aktyvų ryšį",
"connected": "Prisijungta prie \"Discord\"",
"disconnected": "Atsijungta nuo \"Discord\""
},
"description": "Parodyk savo draugams ko tu klausaisi su \"Turtingas Buvimas\"",
"menu": {
"auto-reconnect": "Automatiškai prisijungti",
"clear-activity": "Išvalyti veiksmus",
"clear-activity-after-timeout": "Išvalyti veiksmus po skirtojo laiko",
"connected": "Prisijungta",
"disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko",
"hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką",
"play-on-youtube-music": "Leisti ant \"Youtube Music\"",
"set-inactivity-timeout": "Nustatyti neveiklumo laiką"
},
"name": "\"Discord\" Turtingas Buvimas",
"prompt": {
"set-inactivity-timeout": {
"label": "Įveskite neveiklumo skirtąjį laiką sekundėmis:",
"title": "Nustatyti neveiklumo laiką"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "Gerai"
},
"message": "Aaa! Apgailestaujame, nepavyko atsisiųsti…",
"title": "Paklaida atsisiunčiant!"
},
"start-download-playlist": {
"buttons": {
"ok": "Gerai"
},
"detail": "({{playlistSize}} dainos)",
"message": "Atsisiunčiama {{playlistTitle}} grojaraštį",
"title": "Prasidėjo atsisiuntimas"
}
},
"feedback": {
"conversion-progress": "Konversija: {{percent}}%",
"converting": "Konvertuojama…",
"done": "Baigta: {{filePath}}",
"download-info": "Atsiunčiama {{artist}} - {{title}} {{videoId}}",
"download-progress": "Atsisiuntimas: {{percent}}%",
"downloading": "Atsisiunčiama…",
"downloading-counter": "Atsisiunčiama {{current}}/{{total}}…",
"downloading-playlist": "Atsisiunčiamas grojaraštis \"{{playlistTitle}}\" - {{playlistSize}} dainų {{playlistId}}",
"error-while-downloading": "Paklaida atsisiunčiant \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "Aplankas {{playlistFolder}} jau egzistuoja",
"getting-playlist-info": "Gaunama grojaraščio informacija…",
"loading": "Kraunama…",
"playlist-has-only-one-song": "Grojaraštis turi tik vieną daiktą, jis atsisiunčiamas tiesiogiai",
"playlist-id-not-found": "Grojaraščio ID nerastas",
"playlist-is-empty": "Grojaraštis yra tuščias",
"playlist-is-mix-or-private": "Paklaida gaunant grojaraščio informaciją: Pasitikrink, kad nėra privatus ar \"Surinkta specialiai jums\" grojaraštis\n\n{{error}}",
"preparing-file": "Failas paruošiamas…",
"saving": "Išsaugojama…",
"trying-to-get-playlist-id": "Bandoma gauti grojaraščio ID: {{playlistId}}",
"video-id-not-found": "Vaizdo įrašas nerastas",
"writing-id3": "Rašoma ID3 žymes…"
}
},
"description": "Atsisiunčia MP3 / šaltinio garsą tiesiogiai iš sąsajos",
"menu": {
"choose-download-folder": "Pasirinkti atsisiuntimų aplanką",
"download-playlist": "Atsisiųsti grojaraštį",
"presets": "Iš anksto nustatyti nustatymai",
"skip-existing": "Praleisti egzistuojančius failus"
},
"name": "Atsiuntėjas",
"renderer": {
"can-not-update-progress": "Nepavyko atnaujinti eigos"
},
"templates": {
"button": "Atsisiųsti"
}
},
"exponential-volume": {
"description": "Padaro garsumo slankiklį eksponentinį, kad būtų lengviau pasirinkti mažesnį garsumą.",
"name": "Eksponentinis garsas"
},
"in-app-menu": {
"description": "Duoda meniu lentoms įmantrią, tamsią ar albumo spalvos išvaizdą",
"menu": {
"hide-dom-window-controls": "Slėpti DOM lango kontroles"
},
"name": "Programos Meniu"
},
"last-fm": {
"description": "Pridėkite Last.fm scrobble palaikymą",
"name": "Last.fm"
},
"lumiastream": {
"description": "Prideda \"Lumia Stream\" palaikymą",
"name": "Lumia Stream [beta]"
},
"lyrics-genius": {
"description": "Prideda daugumai dainių žodžių tekstus",
"menu": {
"romanized-lyrics": "Romanizuoti dainų tekstai"
},
"name": "\"Genius\" Žodžių tekstai",
"renderer": {
"fetched-lyrics": "Gauti žodžiai iš „Genius“."
}
},
"navigation": {
"description": "Kitas/Ankstenis navigacijos rodyklės tiesiogiai integruotos sąsajoje, kaip tavo mėgstamiausioje naršyklėje",
"name": "Navigacija"
},
"no-google-login": {
"description": "Pašalinti \"Google\" prisijungimo mygtukus ir nuorodas iš sąsjos",
"name": "Be \"Google\" Prisijungimo"
},
"notifications": {
"description": "Rodyti pranešimą, kai pradeda groti daina (interaktyvūs pranešimai pasiekiami sistemoje \"Windows\")",
"menu": {
"interactive": "Interaktyvūs pranešimai",
"interactive-settings": {
"label": "Interaktyvūs nustatymai",
"submenu": {
"hide-button-text": "Paslėpti mygtuko tekstą",
"refresh-on-play-pause": "Atnaujinti ant Leisti/Sustabdyti",
"tray-controls": "Atidaryti/Uždaryti ant padėklo paspaudimo"
}
},
"priority": "Pranešimų pirminybė",
"toast-style": "Skrudintas stilius",
"unpause-notification": "Rodyti pranešimus po dainos paleidimo"
},
"name": "Pranešimai"
},
"picture-in-picture": {
"description": "Leidžia pakeisti programą į \"picture-in-picture\" rėžimą",
"menu": {
"always-on-top": "Visada viršuje",
"hotkey": {
"label": "Spartusis klavišas",
"prompt": {
"keybind-options": {
"hotkey": "Spartusis klavišas"
},
"label": "Pasirinkti spartujį klaviša, kad įjungti/išjungti \"picture-in-picture\"",
"title": "\"Picture-in-picture\" Spartusis klavišas"
}
},
"save-window-position": "Išsaugoti lango poziciją",
"save-window-size": "Išsaugoti lango dydį",
"use-native-pip": "Naudoti naršyklės savajį PiP"
},
"name": "Picture-in-picture",
"templates": {
"button": "Picture-in-picture"
}
},
"playback-speed": {
"description": "Klausyk greitai, klausyk lėtai! Prideda slankiklį, kuris valdo dainos greitį",
"name": "Atkūrimo Greitis",
"templates": {
"button": "Greitis"
}
},
"precise-volume": {
"description": "Tiksliai valdykite garsumą naudodami pelės ratuką / sparčiuosius klavišus, naudodami pritaikytą HUD ir pritaikomus garsumo žingsnius",
"menu": {
"arrows-shortcuts": "Vietiniai rodyklių klavišai valdikliai",
"custom-volume-steps": "Nustatykite Pasirinktinius Garsumo Žingsnius",
"global-shortcuts": "Pasauliniai spartieji klavišai"
},
"name": "Tikslus Garsas",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Pamažinti Garsą",
"increase": "Padidinti Garsą"
},
"label": "Pasirinkti Pasaulinius garso klavišus:",
"title": "Pasauliniai Garso Klavišai"
},
"volume-steps": {
"label": "Pasirinkti Garso Didinimo/Mažinimo Žingsnius",
"title": "Garso Žingsniai"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Dabartinė Kokybė: {{quality}}",
"message": "Pasirinkite Vaizdo Kokybę:",
"title": "Pasirinkite Vaizdo Kokybę"
}
}
},
"description": "Leidžia pakeisti vaizdo kokybę su mygtuku ant vaizdo perdangos",
"name": "Vaizdo Kokybės Pakeitėjas"
},
"shortcuts": {
"description": "Leidžia nustatyti visuotinius atkūrimo sparčiuosius klavišus (paleisti / pristabdyti / kitą / ankstesnį) ir išjungti medijos OSD nepaisant medijos klavišų, įjungti Ctrl / CMD + F ieškoti, įjungti Linux MPRIS palaikymą medijos klavišams ir pasirinktinius sparčiuosius klavišus pažengusiems vartotojams.",
"menu": {
"override-media-keys": "Perrašyti Medijos klavišus",
"set-keybinds": "Nustatyti Pasaulines Dainų Kontroles"
},
"name": "Spartieji klavišai (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Kitas",
"play-pause": "Paleisti / Pristabdyti",
"previous": "Ankstesnis"
},
"label": "Pasirinkti Pasaulinius Klavišus Dainų Kontroliavimui:",
"title": "Pasauliniai Klavišai"
}
}
},
"skip-disliked-songs": {
"description": "Praleidžia nepatinkančias dainas",
"name": "Praleisti Nepatinkančias Dainas"
},
"skip-silences": {
"description": "Automatiškai praleisti tylos dalis dainose",
"name": "Praleisti Tylas"
},
"sponsorblock": {
"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"
},
"taskbar-mediacontrol": {
"description": "Valdykite atkūrimą iš „Windows“ užduočių juostos",
"name": "Užduočių juostos medijos valdymas"
},
"touchbar": {
"description": "Pridedamas jutiklinės juostos valdiklis MacOS vartotojams",
"name": "TouchBar"
},
"tuna-obs": {
"description": "Integracija su OBS papildiniu \"Tuna\"",
"name": "Tuna OBS"
},
"video-toggle": {
"description": "Pridedamas mygtukas, skirtas perjungti vaizdo įrašo/dainos režimą. taip pat galite pasirinktinai pašalinti visą vaizdo įrašo skirtuką",
"menu": {
"align": {
"label": "Lygiavimas",
"submenu": {
"left": "Kairė",
"middle": "Vidurys",
"right": "Dešinė"
}
},
"force-hide": "Priverstinai pašalinti vaizdo įrašo skirtuką",
"mode": {
"label": "Rėžimas",
"submenu": {
"custom": "Pasirinktinis perjungimas",
"disabled": "Išjungta",
"native": "Vietinis perjungimas"
}
}
},
"name": "Vaizdo įrašo perjungimas",
"templates": {
"button": "Daina"
}
},
"visualizer": {
"description": "Prie grotuvo pridedamas vizualizatorius",
"menu": {
"visualizer-type": "Vizualizatoriaus tipas"
},
"name": "Vizualizatorius"
}
}
}

View File

@ -1,25 +1,160 @@
{ {
"common": {
"console": {
"plugins": {
"execute-failed": "Klarte ikke å kjøre programtillegg {{pluginName}}::{{contextName}}",
"executed-at-ms": "Det tok {{ms}} ms å kjøre {{pluginName}}::{{contextName}}",
"initialize-failed": "Klarte ikke å igangsette «{{pluginName}}»",
"load-all": "Laster inn alle programtillegg",
"load-failed": "Klarte ikke å laste inn {{pluginName}}-programtillegget",
"loaded": "Lastet inn {{pluginName}}-programtillegget",
"unload-failed": "Kunne ikke skru av {{pluginName}}-programtillegget",
"unloaded": "{{pluginName}}-programtillegg avskrudd"
}
}
},
"language": { "language": {
"code": "nb_NO", "code": "nb_NO",
"local-name": "Norsk bokmål", "local-name": "Norsk bokmål",
"name": "Norwegian Bokmål" "name": "Norwegian Bokmål"
}, },
"main": { "main": {
"console": {
"did-finish-load": {
"dev-tools": "Innlasting fullført. Utviklerverktøy åpnet."
},
"i18n": {
"loaded": "språkstøtte innlastet"
},
"second-instance": {
"receive-command": "Mottok kommando over protokoll: \"{{command}}\""
},
"theme": {
"css-file-not-found": "CSS-filen «{{cssFile}}» finnes ikke. Ignorerer."
},
"unresponsive": {
"details": "Svarer ikke\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Tømmer programhurtiglager"
},
"window": {
"tried-to-render-offscreen": "Prøvde å tegne vindu utenfor skjermen. Størrelse={{windowSize}}, skjermstørrelse={{displaySize}}, posisjon={{position}}"
}
},
"dialog": {
"hide-menu-enabled": {
"detail": "Menyen er skjult. Bruk «Alt» for å vise den, (ller «Esc» for å bruke menyen i programmet).",
"message": "Meny skjult",
"title": "Meny vist"
},
"need-to-restart": {
"buttons": {
"later": "Senere",
"restart-now": "Start på ny nå"
},
"detail": "{{pluginName}}-programtillegget krever programomstart før bruk.",
"message": "{{pluginName}}-programtillegget krever programomstart.",
"title": "Programomstart kreves"
},
"unresponsive": {
"buttons": {
"quit": "Avslutt",
"relaunch": "Start igjen",
"wait": "Vent"
},
"detail": "Velg blandt følgende:",
"message": "Programmet svarer ikke",
"title": "Vinduet svarer ikke"
},
"update-available": {
"buttons": {
"disable": "Skru av oppgraderinger",
"download": "Last ned",
"ok": "OK"
},
"detail": "En ny versjon er tilgjengelig og kan lastes ned fra {{downloadLink}}",
"message": "En ny versjon er tilgjengelig",
"title": "Oppgradering tilgjengelig"
}
},
"menu": { "menu": {
"about": "Om",
"navigation": {
"label": "Navigasjon",
"submenu": {
"copy-current-url": "Kopier nåværende nettadresse",
"go-back": "Tilbake",
"go-forward": "Forover",
"quit": "Avslutt",
"restart": "Programomstart"
}
},
"options": { "options": {
"label": "Alternativer", "label": "Alternativer",
"submenu": { "submenu": {
"advanced-options": {
"label": "Avanserte alternativer",
"submenu": {
"auto-reset-app-cache": "Tilbakestill programhurtiglager når programmet startes",
"disable-hardware-acceleration": "Skru av maskinvareakselerasjon",
"edit-config-json": "Rediger config.json",
"override-user-agent": "Overstyr brukeragent",
"restart-on-config-changes": "Omstart ved oppsettsendringer",
"set-proxy": {
"label": "Sett mellomtjener",
"prompt": {
"label": "Skriv inn mellomtjeneradresse: (la stå tom for å skru av)",
"placeholder": "Eksempel: socks5://127.0.0.1:9999",
"title": "Sett mellomtjener"
}
},
"toggle-dev-tools": "Skru av/på utviklerverktøy"
}
},
"always-on-top": "Alltid på toppen",
"auto-update": "Auto-oppdatering",
"hide-menu": { "hide-menu": {
"dialog": {
"message": "Menyen vil bli skjult ved neste programstart. Bruk [Alt] for å vise den, eller gravistegn [`] hvis du bruker menyen i programmet).",
"title": "Skjuler meny"
},
"label": "Skjul meny" "label": "Skjul meny"
}, },
"language": {
"dialog": {
"message": "Nytt språk vises når programmet startes på ny",
"title": "Språk endret"
},
"label": "Språk",
"submenu": {
"to-help-translate": "Klikk her for å bistå oversettelsen"
}
},
"resume-on-start": "Gjenoppta siste spor ved programstart",
"single-instance-lock": "Sperr én instans",
"start-at-login": "Start ved innlogging",
"starting-page": {
"label": "Startside",
"unset": "Opphev"
},
"tray": { "tray": {
"label": "Systemkurv", "label": "Systemkurv",
"submenu": { "submenu": {
"disabled": "Avskrudd" "disabled": "Avskrudd",
"play-pause-on-click": "Spill av/pause ved klikk"
} }
}, },
"visual-tweaks": { "visual-tweaks": {
"label": "Visuelle tilpasninger",
"submenu": { "submenu": {
"like-buttons": {
"default": "Forvalg",
"force-show": "Tving visning",
"hide": "Skjul",
"label": "Begunstningsknapper"
},
"remove-upgrade-button": "Fjern oppgraderingsknapp",
"theme": { "theme": {
"label": "Drakt", "label": "Drakt",
"submenu": { "submenu": {
@ -32,8 +167,28 @@
} }
}, },
"plugins": { "plugins": {
"enabled": "Påskrudd",
"label": "Programtillegg" "label": "Programtillegg"
},
"view": {
"label": "Vis",
"submenu": {
"force-reload": "Tving gjeninnlasting",
"reload": "Gjeninnlast",
"reset-zoom": "Faktisk størrelse",
"toggle-fullscreen": "Veksle fullskjermsvisning",
"zoom-in": "Forstørr",
"zoom-out": "Forminsk"
}
} }
},
"tray": {
"next": "Neste",
"play-pause": "Spill av/pause",
"previous": "Forrige",
"quit": "Avslutt",
"restart": "Programomstart",
"show": "Vis vindu"
} }
}, },
"plugins": { "plugins": {
@ -49,6 +204,7 @@
"name": "Albumsfargedrakt" "name": "Albumsfargedrakt"
}, },
"ambient-mode": { "ambient-mode": {
"description": "Ifører lyseffekt ved å hente myke farger fra videoen inn i skjermens bakgrunn.",
"menu": { "menu": {
"blur-amount": { "blur-amount": {
"label": "Tilsløringsmengde", "label": "Tilsløringsmengde",
@ -56,6 +212,12 @@
"pixels": "{{blurAmount}} piksler" "pixels": "{{blurAmount}} piksler"
} }
}, },
"buffer": {
"label": "Mellomlager",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": { "opacity": {
"label": "Dekkevne", "label": "Dekkevne",
"submenu": { "submenu": {
@ -73,10 +235,38 @@
"submenu": { "submenu": {
"percent": "{{size}}%" "percent": "{{size}}%"
} }
},
"smoothness-transition": {
"label": "Mykhetsovergang",
"submenu": {
"during": "I løpet av {{interpolationTime}} s"
}
},
"use-fullscreen": {
"label": "Ved bruk av fullskjerm"
} }
} },
"name": "Omgivelsesmodus"
},
"audio-compressor": {
"description": "Anvend kompresjon for lyd (senker lydstyrken for de kraftigste delene av signalet og øker nivået i de svakeste)",
"name": "Lydkompressor"
},
"blur-nav-bar": {
"description": "Gjør navigeringsbjelken gjennomsiktig og tilslørt",
"name": "Tilslør navigasjonsfelt"
},
"bypass-age-restrictions": {
"description": "Omgå YouTube sin aldersgrenser",
"name": "Omgå aldersgrense"
}, },
"captions-selector": { "captions-selector": {
"description": "Undertekstverktøy for lydspor i YouTube Music",
"menu": {
"autoload": "Auto-velg sist brukte undertekst",
"disable-captions": "Ingen undertekst som forvalg"
},
"name": "Undertekstvelger",
"prompt": { "prompt": {
"selector": { "selector": {
"label": "Nåværende tekstingsspråk: {{language}}", "label": "Nåværende tekstingsspråk: {{language}}",
@ -88,27 +278,63 @@
"title": "Åpne undertekstvelger" "title": "Åpne undertekstvelger"
} }
}, },
"compact-sidebar": {
"description": "Alltid sett sidefeltet i kompakt modus",
"name": "Kompakt sidefelt"
},
"crossfade": { "crossfade": {
"description": "Overgang mellom spor",
"menu": { "menu": {
"advanced": "Avansert" "advanced": "Avansert"
}, },
"name": "Overgang [beta]",
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "Inntoningsvarighet (ms)",
"fade-out-duration": "Uttoningsvarighet (ms)",
"fade-scaling": { "fade-scaling": {
"label": "Overgangsskalering",
"linear": "Lineær", "linear": "Lineær",
"logarithmic": "Logaritmisk" "logarithmic": "Logaritmisk"
} },
} "seconds-before-end": "Overgang antall sekunder før slutt"
},
"title": "Overgangsalternativer"
} }
} }
}, },
"disable-autoplay": { "disable-autoplay": {
"description": "Merkerer sporstart i «pauset» modus",
"menu": {
"apply-once": "Har kun innvirkning ved oppstart"
},
"name": "Skru av autospilling" "name": "Skru av autospilling"
}, },
"discord": { "discord": {
"backend": { "backend": {
"already-connected": "Forsøkte å koble til med aktiv tilkobling",
"connected": "Tilkoblet Discord",
"disconnected": "Frakoblet fra Discord" "disconnected": "Frakoblet fra Discord"
},
"description": "Vis venne dine hva du lytter til med rik tilstedeværelse",
"menu": {
"auto-reconnect": "Automatisk retilkobling",
"clear-activity": "Tøm aktivitet",
"clear-activity-after-timeout": "Tøm aktivitet etter tidsavbrudd",
"connected": "Tilkoblet",
"disconnected": "Frakoblet",
"hide-duration-left": "Skjul gjenværende tid",
"hide-github-button": "Skjul GitHub-lenkeknapp",
"play-on-youtube-music": "Spill på YouTube Music",
"set-inactivity-timeout": "Sett tid før tidsavbrudd"
},
"name": "Rik tilstedeværelse for Discord",
"prompt": {
"set-inactivity-timeout": {
"label": "Skriv inn antall sekunder for inaktivitetstidsavbrudd:",
"title": "Sett inaktivitetstidsavbrudd"
}
} }
}, },
"downloader": { "downloader": {
@ -117,12 +343,16 @@
"error": { "error": {
"buttons": { "buttons": {
"ok": "OK" "ok": "OK"
} },
"message": "Nedlasting mislyktes …",
"title": "Feil i nedlastning."
}, },
"start-download-playlist": { "start-download-playlist": {
"buttons": { "buttons": {
"ok": "OK" "ok": "OK"
}, },
"detail": "({{playlistSize}} spor)",
"message": "Laster ned {{playlistTitle}}-spillelisten …",
"title": "Nedlasting startet" "title": "Nedlasting startet"
} }
}, },
@ -130,42 +360,147 @@
"conversion-progress": "Konvertering: {{percent}}%", "conversion-progress": "Konvertering: {{percent}}%",
"converting": "Konverterer …", "converting": "Konverterer …",
"done": "Ferdig: {{filePath}}", "done": "Ferdig: {{filePath}}",
"download-info": "Laster ned {{artist}} — {{title}} [{{videoId}} …",
"download-progress": "Nedlastet: {{percent}}%",
"downloading": "Laster ned …", "downloading": "Laster ned …",
"downloading-counter": "Laster ned {{current}}/{{total}} …",
"downloading-playlist": "Laster ned {{playlistTitle}}-spillelisten — {{playlistSize}} spor ({{playlistId}})",
"error-while-downloading": "Kunne ikke laste ned «{{author}} — {{title}}»: {{error}}",
"folder-already-exists": "{{playlistFolder}}-mappen finnes allerede",
"getting-playlist-info": "Henter spillelisteinfo …",
"loading": "Laster inn …", "loading": "Laster inn …",
"playlist-has-only-one-song": "Spillelisten har kun ett element. Laster ned direkte.",
"playlist-id-not-found": "Fant ingen spilleliste-ID",
"playlist-is-empty": "Tom spilleliste", "playlist-is-empty": "Tom spilleliste",
"playlist-is-mix-or-private": "Kunne ikke hente spillelisteinfo. Forsikre deg om at den ikke er privat eller «Mikset for deg».\n\n{{error}}",
"preparing-file": "Forbereder fil …", "preparing-file": "Forbereder fil …",
"saving": "Lagrer …" "saving": "Lagrer …",
"trying-to-get-playlist-id": "Prøver å hente spilleliste-ID: {{playlistId}}",
"video-id-not-found": "Fant ikke videoen",
"writing-id3": "Skriver ID3-tagger …"
} }
}, },
"description": "Laster ned MP3/kildelyd direkte fra grensesnittet",
"menu": { "menu": {
"choose-download-folder": "Velg nedlastningsmappe", "choose-download-folder": "Velg nedlastningsmappe",
"download-playlist": "Last ned spilleliste",
"presets": "Forhåndsinnstillinger", "presets": "Forhåndsinnstillinger",
"skip-existing": "Hopp over eksisterende filer" "skip-existing": "Hopp over eksisterende filer"
}, },
"name": "Nedlaster", "name": "Nedlaster",
"renderer": {
"can-not-update-progress": "Kan ikke oppdatere framdrift"
},
"templates": { "templates": {
"button": "Last ned" "button": "Last ned"
} }
}, },
"exponential-volume": {
"description": "Gjør lydstyrkekontrollen eksponentiell, slik at det er enklere velge lavere lydstyrker.",
"name": "Eksponentiell lydstyrke"
},
"in-app-menu": {
"description": "Gir menybjelkene stilig, mørk, eller albumfarget utseende",
"menu": {
"hide-dom-window-controls": "Skjul DOM-vinduskontroller"
},
"name": "Meny i programmet"
},
"last-fm": { "last-fm": {
"description": "Legg til lyttestatistikkstøtte for Last.fm",
"name": "Last.fm" "name": "Last.fm"
}, },
"lumiastream": {
"description": "Legger til Lumia Stream-støtte",
"name": "Lumia Stream [beta]"
},
"lyrics-genius": {
"description": "Gir sangtekststøtte for de fleste spor",
"menu": {
"romanized-lyrics": "Romaniserte sangtekster"
},
"name": "Sangtekster fra Genius",
"renderer": {
"fetched-lyrics": "Henter sangtekster for Genius"
}
},
"navigation": {
"description": "Direkte integrering av neste/tilbake-navigasjonspilene i grensesnittet, som din favorittnettleser",
"name": "Navigasjon"
},
"no-google-login": {
"description": "Fjern Google-innloggingsknapper og lenker fra grensesnittet",
"name": "Ingen Google-innlogging"
},
"notifications": { "notifications": {
"description": "Vis en merknad når et spor starter avspilling (interaktive merknader er tilgjengelig på Windows)",
"menu": {
"interactive": "Interaktive merknader",
"interactive-settings": {
"label": "Interaktive innstillinger",
"submenu": {
"hide-button-text": "Skjul knappetekst",
"refresh-on-play-pause": "Gjenoppfrisk ved avspilling/pause",
"tray-controls": "Åpne/lukk med klikk i systemkurven"
}
},
"priority": "Merknadsprioritet",
"unpause-notification": "Vis merknad ved oppheving av pause"
},
"name": "Merknader" "name": "Merknader"
}, },
"picture-in-picture": { "picture-in-picture": {
"description": "Tillater å bytte programmet til bilde-i-bilde modus",
"menu": { "menu": {
"save-window-position": "Lagre vindusposisjon" "always-on-top": "Alltid på toppen",
"hotkey": {
"label": "Hurtigtast",
"prompt": {
"keybind-options": {
"hotkey": "Hurtigtast"
},
"label": "Velg en hurtigtast for veksling av bilde-i-bilde",
"title": "Hurtigtast for bilde-i-bilde"
}
},
"save-window-position": "Lagre vindusposisjon",
"save-window-size": "Lagre vindusstørrelse",
"use-native-pip": "Bruk nettleserens innebygde bilde-i-bilde"
},
"name": "Bilde-i-bilde",
"templates": {
"button": "Bilde-i-bilde"
} }
}, },
"playback-speed": { "playback-speed": {
"description": "Legger til glidebryter som kontrollerer avspillingshastighet",
"name": "Avspillingshastighet", "name": "Avspillingshastighet",
"templates": { "templates": {
"button": "Hastighet" "button": "Hastighet"
} }
}, },
"precise-volume": { "precise-volume": {
"name": "Presis lydstyrkejustering" "description": "Kontroller lydstyrken presist ved bruk av musehjul/hurtigtaster, med egendefinert skjermoverlag og tilpassbare steg",
"menu": {
"arrows-shortcuts": "Kontroller for lokale piltaster",
"custom-volume-steps": "Sett egendefinerte lydstyrkesteg",
"global-shortcuts": "Hurtigtaster i hele programmet"
},
"name": "Presis lydstyrkejustering",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Senk lydstyrke",
"increase": "Øk lydstyrke"
},
"label": "Velg tastetilknytninger for lydstyrkejusteringskontroller i hele programmet",
"title": "Tastetilknytninger for lydstyrkejusteringskontroller i hele programmet"
},
"volume-steps": {
"label": "Velg steg for økning/senking av lydstyrke",
"title": "Lydstyrkesteg"
}
}
}, },
"quality-changer": { "quality-changer": {
"backend": { "backend": {
@ -176,30 +511,85 @@
"title": "Velg videokvalitet" "title": "Velg videokvalitet"
} }
} }
},
"description": "Tillat endring av videokvalitet med en knapp i videooverlaget",
"name": "Vindukvalitetsvelger"
},
"shortcuts": {
"description": "Tillater bruk av hurtigtaster for hele programmet til avspilling (spill/pause/neste/forrige) + skru av media-videooverlag ved å overstyre mediataster + skru på Ctrl+CMD+F for å søke, pluss å egge til MPRIS støtte på linux for mediataster pluss egendefinerte hurtigtaster for avanserte brukere",
"menu": {
"override-media-keys": "Overstyr mediataster",
"set-keybinds": "Sett kontroller for spor i hele programmet"
},
"name": "Snarveier (og MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Neste",
"play-pause": "Spill av/pause",
"previous": "Forrige"
},
"label": "Velg kontroller for spor i hele programmet:",
"title": "Tastaturtilknytninger i hele programmet"
}
} }
}, },
"skip-disliked-songs": {
"description": "Hopper over mislikte spor",
"name": "Hopp over mislikte spor"
},
"skip-silences": { "skip-silences": {
"description": "Hopp over stille deler av spor",
"name": "Hopp over pauser" "name": "Hopp over pauser"
}, },
"sponsorblock": { "sponsorblock": {
"description": "Hopper over ikke-musikalske deler, som intro/sluttsats, eller deler av musikkvideoer der ingen musikk spilles",
"name": "SponsorBlock" "name": "SponsorBlock"
}, },
"taskbar-mediacontrol": {
"description": "Kontroller avspilling fra din Windows-oppgavelinje",
"name": "Oppgavelinje-mediakontroll"
},
"touchbar": {
"description": "Legger til et pekefelt-miniprogram for macOS-brukere",
"name": "Pekefelt"
},
"tuna-obs": {
"description": "Integrasjon med Tuna-programtillegget i OBS",
"name": "OBS Tuna"
},
"video-toggle": { "video-toggle": {
"description": "Leger til en knapp for å bytte mellom video/spormodus. Kan også alternativt fjerne hele videofanen.",
"menu": { "menu": {
"align": { "align": {
"label": "Justering",
"submenu": { "submenu": {
"left": "Venstre", "left": "Venstre",
"middle": "Midten", "middle": "Midten",
"right": "Høyre" "right": "Høyre"
} }
}, },
"force-hide": "Påtving fjerning av videofane",
"mode": { "mode": {
"label": "Modus" "label": "Modus",
"submenu": {
"custom": "Egendefinert veksling",
"disabled": "Avskrudd",
"native": "Innebygd veksling"
}
} }
}, },
"name": "Videoveksling",
"templates": { "templates": {
"button": "Spor" "button": "Spor"
} }
},
"visualizer": {
"description": "Legger til en visualisator i avspilleren",
"menu": {
"visualizer-type": "Visualisatortype"
},
"name": "Visualisator"
} }
} }
} }

View File

@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Menu jest ukryte, użyj 'Alt' aby je pokazać (lub 'Escape' jeśli używasz in-app-menu)", "detail": "Menu jest ukryte, użyj przycisku [Alt] aby je pokazać (lub [Escape], jeśli używasz menu w aplikacji)",
"message": "Ukrywanie menu jest włączone", "message": "Ukrywanie menu jest włączone",
"title": "Ukrywanie Menu Włączone" "title": "Ukrywanie Menu Włączone"
}, },
@ -116,7 +116,7 @@
"auto-update": "Automatyczne aktualizacje", "auto-update": "Automatyczne aktualizacje",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "Menu będzie ukryte po następnym uruchomieniu, użyj [Alt] aby je pokazać (lub [`] jeśli używasz in-app-menu)", "message": "Menu będzie ukryte po następnym uruchomieniu, użyj przycisku [Alt] aby je pokazać (lub [`], jeśli używasz menu w aplikacji)",
"title": "Ukrywanie menu włączone" "title": "Ukrywanie menu włączone"
}, },
"label": "Ukryj menu" "label": "Ukryj menu"
@ -406,7 +406,7 @@
"menu": { "menu": {
"hide-dom-window-controls": "Ukryj kontrolki okna DOM" "hide-dom-window-controls": "Ukryj kontrolki okna DOM"
}, },
"name": "In-App menu" "name": "Menu w aplikacji"
}, },
"last-fm": { "last-fm": {
"description": "Dodanie obsługi scrobblingu dla Last.fm", "description": "Dodanie obsługi scrobblingu dla Last.fm",
@ -463,7 +463,7 @@
"hotkey": "Klawisz skrótu" "hotkey": "Klawisz skrótu"
}, },
"label": "Wybierz klawisz skrótu do przełączania trybu obrazu w obrazie", "label": "Wybierz klawisz skrótu do przełączania trybu obrazu w obrazie",
"title": "Klawisz skrótu Obraz w obrazie" "title": "Klawisz skrótu obrazu w obrazie"
} }
}, },
"save-window-position": "Zapisz pozycję okna", "save-window-position": "Zapisz pozycję okna",
@ -519,7 +519,7 @@
"name": "Zmieniacz jakości wideo" "name": "Zmieniacz jakości wideo"
}, },
"shortcuts": { "shortcuts": {
"description": "Umożliwia ustawienie globalnych skrótów klawiszowych do odtwarzania (odtwarzanie/pauza/następny/poprzedni) + wyłączanie OSD multimediów poprzez zastąpienie klawiszy multimediów + włączanie Ctrl/CMD + F w celu wyszukiwania + włączanie obsługi linux mpris dla klawiszy multimediów + niestandardowe skróty klawiszowe dla zaawansowanych użytkowników", "description": "Umożliwia ustawienie globalnych skrótów klawiszowych do odtwarzania (odtwarzanie/pauza/następny/poprzedni) + wyłączanie OSD multimediów poprzez zastąpienie klawiszy multimediów, włączając kombinację klawiszy Ctrl/CMD + F w celu wyszukiwania, obsługę Linux MPRIS dla klawiszy multimediów oraz niestandardowe skróty klawiszowe dla zaawansowanych użytkowników.",
"menu": { "menu": {
"override-media-keys": "Zastąp klawisze multimediów", "override-media-keys": "Zastąp klawisze multimediów",
"set-keybinds": "Ustaw globalne sterowanie utworem" "set-keybinds": "Ustaw globalne sterowanie utworem"
@ -537,6 +537,10 @@
} }
} }
}, },
"skip-disliked-songs": {
"description": "Pomija nieulubione piosenki (zaznaczone łapką w dół)",
"name": "Pomijanie nieulubionych piosenek"
},
"skip-silences": { "skip-silences": {
"description": "Automatycznie pomijaj sekcje bez dźwięku w utworach", "description": "Automatycznie pomijaj sekcje bez dźwięku w utworach",
"name": "Pomiń ciszę" "name": "Pomiń ciszę"
@ -547,7 +551,7 @@
}, },
"taskbar-mediacontrol": { "taskbar-mediacontrol": {
"description": "Steruj odtwarzaniem z paska zadań systemu Windows", "description": "Steruj odtwarzaniem z paska zadań systemu Windows",
"name": "Kontrola odtwarzania z paska zadań" "name": "Kontroler odtwarzania z paska zadań"
}, },
"touchbar": { "touchbar": {
"description": "Dodaje widżet do paska dotykowego dla użytkowników systemu macOS", "description": "Dodaje widżet do paska dotykowego dla użytkowników systemu macOS",

View File

@ -31,10 +31,28 @@
}, },
"theme": { "theme": {
"css-file-not-found": "Arquivo CSS \"{{cssFile}}\" não existe, ignorando" "css-file-not-found": "Arquivo CSS \"{{cssFile}}\" não existe, ignorando"
},
"unresponsive": {
"details": "Erro sem resposta!\n{{error}}"
},
"when-ready": {
"clearing-cache-after-20s": "Limpando o cache do aplicativo"
},
"window": {
"tried-to-render-offscreen": "Janela tentou desenhar fora do ecrã, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
} }
}, },
"dialog": { "dialog": {
"hide-menu-enabled": {
"detail": "O menu está oculto, use a tecla 'Alt' para mostra-lo (ou 'Esc' se estiver usando o menu do aplicativo)",
"message": "Ocultar menu está ativado",
"title": "Ocultar menu ativado"
},
"need-to-restart": { "need-to-restart": {
"buttons": {
"later": "Depois",
"restart-now": "Reiniciar agora"
},
"detail": "O plugin {{pluginName}} precisa ser reiniciado para ter efeito", "detail": "O plugin {{pluginName}} precisa ser reiniciado para ter efeito",
"message": "\"{{pluginName}}\" precisa ser reiniciado", "message": "\"{{pluginName}}\" precisa ser reiniciado",
"title": "É necessário reiniciar" "title": "É necessário reiniciar"
@ -47,7 +65,7 @@
}, },
"detail": "Lamentamos o inconveniente! Por favor escolha o que fazer:", "detail": "Lamentamos o inconveniente! Por favor escolha o que fazer:",
"message": "A aplicação não está respondendo", "message": "A aplicação não está respondendo",
"title": "Janela não está respondendo" "title": "A janela não está respondendo"
}, },
"update-available": { "update-available": {
"buttons": { "buttons": {
@ -81,11 +99,13 @@
"auto-reset-app-cache": "Reiniciar cache do aplicativo quando o aplicativo abrir", "auto-reset-app-cache": "Reiniciar cache do aplicativo quando o aplicativo abrir",
"disable-hardware-acceleration": "Desabilitar aceleração por hardware", "disable-hardware-acceleration": "Desabilitar aceleração por hardware",
"edit-config-json": "Editar config.json", "edit-config-json": "Editar config.json",
"override-user-agent": "Substituir User-Agent",
"restart-on-config-changes": "Reinicie as alterações de configurações feitas",
"set-proxy": { "set-proxy": {
"label": "Definir proxy", "label": "Definir proxy",
"prompt": { "prompt": {
"label": "Inserir Endereço do Proxy: (deixe em branco para desativar)", "label": "Inserir Endereço do Proxy: (deixe em branco para desativar)",
"placeholder": "Exemplo: socks5://127.0.0.1:9999", "placeholder": "Exemplo: SOCKS5://127.0.0.1:9999",
"title": "Definir proxy" "title": "Definir proxy"
} }
}, },
@ -176,10 +196,403 @@
"plugins": { "plugins": {
"adblocker": { "adblocker": {
"description": "Bloquear todos os anúncios e rastreamento automaticamente", "description": "Bloquear todos os anúncios e rastreamento automaticamente",
"name": "Adblocker" "menu": {
"blocker": "Bloqueador"
},
"name": "Bloqueador de anúncios"
}, },
"album-color-theme": { "album-color-theme": {
"description": "\"Aplica um tema dinâmico e efeitos visuais com base na paleta de cores do álbum." "description": "Aplica um tema dinâmico e efeitos visuais com base na paleta de cores do álbum",
"name": "Tema de cores do álbum"
},
"ambient-mode": {
"description": "Aplica um efeito de iluminação lançando cores suaves do vídeo no fundo da tela.",
"menu": {
"blur-amount": {
"label": "Quantidade de desfoque",
"submenu": {
"pixels": "{{blurAmount}} píxeis"
}
},
"buffer": {
"label": "Buffer",
"submenu": {
"buffer": "{{buffer}}"
}
},
"opacity": {
"label": "Opacidade",
"submenu": {
"percent": "{{opacity}}%"
}
},
"quality": {
"label": "Qualidade",
"submenu": {
"pixels": "{{quality}} píxeis"
}
},
"size": {
"label": "Tamanho",
"submenu": {
"percent": "{{size}}%"
}
},
"smoothness-transition": {
"label": "Transição suave",
"submenu": {
"during": "Durante {{interpolationTime}}s"
}
},
"use-fullscreen": {
"label": "Tela cheia"
}
},
"name": "Modo Ambiente"
},
"audio-compressor": {
"description": "Aplicar compressão ao áudio (diminui o volume das partes mais altas do sinal e aumenta o volume das partes mais suaves)",
"name": "Compressor de áudio"
},
"blur-nav-bar": {
"description": "Torna a barra de navegação transparente e desfocada",
"name": "Barra de navegação desfocada"
},
"bypass-age-restrictions": {
"description": "Ignorar a verificação de idade do YouTube",
"name": "Ignorar restrições de idade"
},
"captions-selector": {
"description": "Seletor de legenda para faixas de áudio do YouTube Music",
"menu": {
"autoload": "Selecionar automaticamente a última legenda usada",
"disable-captions": "Sem legendas por padrão"
},
"name": "Seletor de legendas",
"prompt": {
"selector": {
"label": "Idioma da legenda atual: {{language}}",
"none": "Nenhuma",
"title": "Selecione o idioma da legenda"
}
},
"templates": {
"title": "Seletor de legendas aberto"
}
},
"compact-sidebar": {
"description": "Definir sempre a barra lateral no modo compacto",
"name": "Barra lateral compacta"
},
"crossfade": {
"description": "Transição entre músicas",
"menu": {
"advanced": "Avançado"
},
"name": "Transição entre músicas [beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Duração da transição no início (ms)",
"fade-out-duration": "Duração da transição no final (ms)",
"fade-scaling": {
"label": "Escala da transição",
"linear": "Linear",
"logarithmic": "Logarítmica"
},
"seconds-before-end": "Realizar transição N segundos antes do final"
},
"title": "Opções de transição"
}
}
},
"disable-autoplay": {
"description": "Faz a música começar no modo \"pausado\"",
"menu": {
"apply-once": "Aplicar apenas na inicialização"
},
"name": "Desativar reprodução automática"
},
"discord": {
"backend": {
"already-connected": "Tentativa de conexão com conexão já ativa",
"connected": "Conectado ao Discord",
"disconnected": "Desconectado do Discord"
},
"description": "Mostre aos seus amigos o que você ouve com Rich Presence",
"menu": {
"auto-reconnect": "Reconexão automática",
"clear-activity": "Limpar atividade",
"clear-activity-after-timeout": "Limpar atividade após o tempo limite",
"connected": "Conectado",
"disconnected": "Desconectado",
"hide-duration-left": "Ocultar duração restante",
"hide-github-button": "Ocultar botão de link do GitHub",
"play-on-youtube-music": "Reproduzir no YouTube Music",
"set-inactivity-timeout": "Definir tempo limite de inatividade"
},
"name": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Insira o tempo limite de inatividade em segundos:",
"title": "Definir tempo limite de inatividade"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "OK"
},
"message": "Poxa! Desculpe, o download falhou…",
"title": "Erro no download!"
},
"start-download-playlist": {
"buttons": {
"ok": "OK"
},
"detail": "({{playlistSize}} músicas)",
"message": "Baixando lista de reprodução {{playlistTitle}}",
"title": "Download iniciado"
}
},
"feedback": {
"conversion-progress": "Conversão: {{percent}}%",
"converting": "Convertendo…",
"done": "Finalizado: {{filePath}}",
"download-info": "Baixando {{artist}} - {{title}} {{videoId}}",
"download-progress": "Baixando: {{percent}}%",
"downloading": "Baixando…",
"downloading-counter": "Baixando {{current}}/{{total}}…",
"downloading-playlist": "Baixando lista de reprodução \"{{playlistTitle}}\" - {{playlistSize}} músicas ({{playlistId}})",
"error-while-downloading": "Erro ao baixar \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "A pasta {{playlistFolder}} já existe",
"getting-playlist-info": "Obtendo informações da lista de reprodução…",
"loading": "Carregando…",
"playlist-has-only-one-song": "A lista de reprodução possui apenas um item, baixando-o diretamente",
"playlist-id-not-found": "ID da lista de reprodução não encontrado",
"playlist-is-empty": "Lista de reprodução vazia",
"playlist-is-mix-or-private": "Erro ao obter informações da lista de reprodução: tenha certeza que ela não está privada ou não seja \"Mixtapes criadas para você\"\n\n{{error}}",
"preparing-file": "Preparando arquivos…",
"saving": "Salvando…",
"trying-to-get-playlist-id": "Tentando pegar ID da lista de reprodução: {{playlistId}}",
"video-id-not-found": "Vídeo não encontrado",
"writing-id3": "Escrevendo tags ID3…"
}
},
"description": "Baixa MP3 / fonte de áudio diretamente da interface",
"menu": {
"choose-download-folder": "Escolha a pasta de download",
"download-playlist": "Baixar lista de reprodução",
"presets": "Predefinições",
"skip-existing": "Ignorar arquivos existentes"
},
"name": "Downloader",
"renderer": {
"can-not-update-progress": "Não é possível atualizar o progresso"
},
"templates": {
"button": "Baixar"
}
},
"exponential-volume": {
"description": "Torna o controle deslizante de volume exponencial, facilitando a seleção de volumes mais baixos.",
"name": "Volume Exponencial"
},
"in-app-menu": {
"description": "Dá às barras de menu uma aparência sofisticada, escura ou com a cor do álbum",
"menu": {
"hide-dom-window-controls": "Ocultar controles da janela DOM"
},
"name": "Menu no aplicativo"
},
"last-fm": {
"description": "Adiciona suporte de scrobbling para Last.fm",
"name": "Last.fm"
},
"lumiastream": {
"description": "Adiciona suporte Lumia Stream",
"name": "Lumia Stream [beta]"
},
"lyrics-genius": {
"description": "Adiciona suporte a letras para a maioria das músicas",
"menu": {
"romanized-lyrics": "Letras romanizadas"
},
"name": "Letras Genius",
"renderer": {
"fetched-lyrics": "Buscar letras no Genius"
}
},
"navigation": {
"description": "Setas de navegação Próximo/Voltar integradas diretamente na interface, como no seu navegador favorito",
"name": "Navegação"
},
"no-google-login": {
"description": "Remove os botões e links de login do Google da interface",
"name": "Sem login do Google"
},
"notifications": {
"description": "Exibir uma notificação quando uma música começar a tocar (notificações interativas estão disponíveis no Windows)",
"menu": {
"interactive": "Notificações interativas",
"interactive-settings": {
"label": "Configurações interativas",
"submenu": {
"hide-button-text": "Ocultar texto do botão",
"refresh-on-play-pause": "Atualizar ao reproduzir/pausar",
"tray-controls": "Abrir/Fechar no clique da bandeja"
}
},
"priority": "Prioridade de notificação",
"toast-style": "Estilo de alerta",
"unpause-notification": "Mostrar notificação ao despausar"
},
"name": "Notificações"
},
"picture-in-picture": {
"description": "Permite mudar o aplicativo para o modo picture-in-picture",
"menu": {
"always-on-top": "Sempre no topo",
"hotkey": {
"label": "Tecla de atalho",
"prompt": {
"keybind-options": {
"hotkey": "Tecla de atalho"
},
"label": "Escolha uma tecla de atalho para alternar o picture-in-picture",
"title": "Tecla de atalho picture-in-picture"
}
},
"save-window-position": "Salvar posição da janela",
"save-window-size": "Salvar tamanho da janela",
"use-native-pip": "Use PiP nativo do navegador"
},
"name": "Picture-in-picture",
"templates": {
"button": "Picture-in-picture"
}
},
"playback-speed": {
"description": "Ouça rápido, ouça devagar! Adiciona um controle deslizante que controla a velocidade da música",
"name": "Velocidade de reprodução",
"templates": {
"button": "Velocidade"
}
},
"precise-volume": {
"description": "Controle o volume com precisão usando a roda do mouse/teclas de atalho, com um HUD personalizado e etapas de volume personalizáveis",
"menu": {
"arrows-shortcuts": "Controles locais das teclas de seta",
"custom-volume-steps": "Definir etapas de volume personalizadas",
"global-shortcuts": "Teclas de atalho globais"
},
"name": "Volume preciso",
"prompt": {
"global-shortcuts": {
"keybind-options": {
"decrease": "Diminuir o volume",
"increase": "Aumentar o volume"
},
"label": "Escolha atalhos de teclado de volume global:",
"title": "Atalhos de teclado de volume global"
},
"volume-steps": {
"label": "Escolha as etapas de aumento/diminuição de volume",
"title": "Etapas de volume"
}
}
},
"quality-changer": {
"backend": {
"dialog": {
"quality-changer": {
"detail": "Qualidade atual: {{quality}}",
"message": "Escolha a qualidade do vídeo:",
"title": "Escolha a qualidade do vídeo"
}
}
},
"description": "Permite alterar a qualidade do vídeo com um botão na sobreposição de vídeo",
"name": "Trocador de qualidade do vídeo"
},
"shortcuts": {
"description": "Permite definir teclas de atalho globais para reprodução (reproduzir/pausar/próximo/anterior) e desligar o OSD de mídia substituindo as teclas de mídia, ativando Ctrl/CMD + F para pesquisar, ativando o suporte Linux MPRIS para teclas de mídia e teclas de atalho personalizadas para usuários avançados.",
"menu": {
"override-media-keys": "Substituir teclas de mídia",
"set-keybinds": "Definir controles globais de música"
},
"name": "Atalhos (& MPRIS)",
"prompt": {
"keybind": {
"keybind-options": {
"next": "Próximo",
"play-pause": "Reproduzir/Pausar",
"previous": "Anterior"
},
"label": "Escolha atalhos de teclado globais para controle de músicas:",
"title": "Atalhos globais do teclado"
}
}
},
"skip-disliked-songs": {
"description": "Pula músicas com 'não gostei'",
"name": "Pular músicas com 'não gostei'"
},
"skip-silences": {
"description": "Pular automaticamente seções de silêncio nas músicas",
"name": "Pular silêncios"
},
"sponsorblock": {
"description": "Ignora automaticamente partes não musicais, como introdução/final ou partes de videoclipes onde a música não está tocando",
"name": "SponsorBlock (bloqueador de patrocínios)"
},
"taskbar-mediacontrol": {
"description": "Controle a reprodução na barra de tarefas do Windows",
"name": "Controle de mídia da barra de tarefas"
},
"touchbar": {
"description": "Adiciona um widget TouchBar para usuários do macOS",
"name": "Barra de toque"
},
"tuna-obs": {
"description": "Integração com o plugin Tuna do OBS",
"name": "Tuna OBS"
},
"video-toggle": {
"description": "Adiciona um botão para alternar entre o modo Vídeo/Música. Também pode, opcionalmente, remover toda a guia de vídeo",
"menu": {
"align": {
"label": "Alinhamento",
"submenu": {
"left": "Esquerda",
"middle": "Centro",
"right": "Direita"
}
},
"force-hide": "Forçar remoção da guia de vídeo",
"mode": {
"label": "Modo",
"submenu": {
"custom": "Alternar personalizado",
"disabled": "Desabilitado",
"native": "Alternar nativo"
}
}
},
"name": "Botão de Alternar Vídeo",
"templates": {
"button": "Música"
}
},
"visualizer": {
"description": "Adiciona um visualizador ao player",
"menu": {
"visualizer-type": "Tipo de visualizador"
},
"name": "Visualizer"
} }
} }
} }

View File

@ -7,7 +7,9 @@
"initialize-failed": "Ошибка инициализации плагина \"{{pluginName}}\"", "initialize-failed": "Ошибка инициализации плагина \"{{pluginName}}\"",
"load-all": "Загружаем все плагины", "load-all": "Загружаем все плагины",
"load-failed": "Ошибка загрузки плагина \"{{pluginName}}\"", "load-failed": "Ошибка загрузки плагина \"{{pluginName}}\"",
"loaded": "Плагин \"{{pluginName}}\" загружен" "loaded": "Плагин \"{{pluginName}}\" загружен",
"unload-failed": "Ошибка выгрузки плагина \"{{pluginName}}\"",
"unloaded": "Плагин \"{{pluginName}}\" выгружен"
} }
} }
}, },
@ -17,45 +19,147 @@
"name": "Russian" "name": "Russian"
}, },
"main": { "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": "Очищаю кеш приложения"
},
"window": {
"tried-to-render-offscreen": "Окно попробовало открыться за пределами экрана, размер окна={{windowSize}}, разрешение экрана={{displaySize}}, местоположение={{position}}"
}
},
"dialog": { "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": { "update-available": {
"buttons": { "buttons": {
"download": "Download", "disable": "Отключить обновления",
"download": "Скачать",
"ok": "OK" "ok": "OK"
} },
"detail": "Новая версия доступна для загрузки на {{downloadLink}}",
"message": "Доступная новая версия",
"title": "Доступно обновление"
} }
}, },
"menu": { "menu": {
"about": "О приложении",
"navigation": { "navigation": {
"label": "Navigation" "label": "Навигация",
"submenu": {
"copy-current-url": "Скопировать текущий URL",
"go-back": "Вернуться",
"go-forward": "Вперед",
"quit": "Выйти",
"restart": "Перезапустить приложение"
}
}, },
"options": { "options": {
"label": "Options", "label": "Настройки",
"submenu": { "submenu": {
"advanced-options": { "advanced-options": {
"label": "Расширенные настройки",
"submenu": { "submenu": {
"auto-reset-app-cache": "Очищать кеш при запуске приложения",
"disable-hardware-acceleration": "Отключить аппаратное ускорение",
"edit-config-json": "Редактировать config.json",
"restart-on-config-changes": "Перезапускать при изменениях конфига",
"set-proxy": { "set-proxy": {
"label": "Set proxy", "label": "Задать прокси",
"prompt": { "prompt": {
"title": "Set proxy" "label": "Введите прокси адрес (оставьте поле пустым для отключения)",
"placeholder": "Пример: SOCKS5://127.0.0.1:9999",
"title": "Задать прокси"
} }
} },
"toggle-dev-tools": "Включить DevTools"
} }
}, },
"auto-update": "Auto Update", "always-on-top": "Поверх остальных окон",
"start-at-login": "Start at login", "auto-update": "Автообновление",
"hide-menu": {
"dialog": {
"message": "Меню будет скрыто при следующем запуске, используйте [Alt] чтобы показать его (или [`] если используйте меню внутри приложения)",
"title": "Скрытие меню включено"
},
"label": "Скрыть меню"
},
"language": {
"dialog": {
"message": "Язык будет сменён после перезапуска",
"title": "Язык изменён"
},
"label": "Язык",
"submenu": {
"to-help-translate": "Хотите помочь с переводом? Кликните сюда"
}
},
"resume-on-start": "Продолжать последнюю песню при запуске приложения",
"start-at-login": "Запуск при включении компьютера",
"starting-page": {
"label": "Стартовая страница",
"unset": "Не настроено"
},
"tray": { "tray": {
"label": "Tray" "label": "Трей",
"submenu": {
"disabled": "Отключено",
"enabled-and-hide-app": "Включено и скрывать приложение",
"enabled-and-show-app": "Включено и показывать приложение",
"play-pause-on-click": "Пауза/продолжить при нажатии"
}
}, },
"visual-tweaks": { "visual-tweaks": {
"label": "Визуальные настройки",
"submenu": { "submenu": {
"like-buttons": { "like-buttons": {
"default": "Default" "default": "Default",
"force-show": "Всегда показывать",
"hide": "Скрывать",
"label": "Кнопка лайка"
}, },
"remove-upgrade-button": "Убрать кнопку Youtube Premium",
"theme": { "theme": {
"label": "Theme", "label": "Тема",
"submenu": { "submenu": {
"no-theme": "No theme" "import-css-file": "Импортировать кастомный CSS файл",
"no-theme": "Без темы"
} }
} }
} }
@ -63,11 +167,28 @@
} }
}, },
"plugins": { "plugins": {
"label": "Plugins" "enabled": "Включено",
"label": "Плагины"
}, },
"view": { "view": {
"label": "View" "label": "Вид",
"submenu": {
"force-reload": "Принудительная перезагрузка",
"reload": "Перезагрузить",
"reset-zoom": "Настоящий размер",
"toggle-fullscreen": "Включить полноэкранный режим",
"zoom-in": "Приблизить",
"zoom-out": "Отдалить"
}
} }
},
"tray": {
"next": "Следующий",
"play-pause": "Пауза/Продолжить",
"previous": "Предыдущий",
"quit": "Выйти",
"restart": "Перезагрузить приложение",
"show": "Показать окно"
} }
}, },
"plugins": { "plugins": {
@ -118,7 +239,7 @@
"smoothness-transition": { "smoothness-transition": {
"label": "Плавный переход", "label": "Плавный переход",
"submenu": { "submenu": {
"during": "В течение {{interpolationTime}}s" "during": "В течение {{interpolationTime}} s"
} }
}, },
"use-fullscreen": { "use-fullscreen": {
@ -141,21 +262,78 @@
}, },
"captions-selector": { "captions-selector": {
"description": "Выбор субтитров для аудиотреков в YouTube Music", "description": "Выбор субтитров для аудиотреков в YouTube Music",
"menu": {
"autoload": "Автоматически выбирать последние использованные субтитры",
"disable-captions": "Без субтитров по умолчанию"
},
"name": "Выбор субтитров", "name": "Выбор субтитров",
"prompt": { "prompt": {
"selector": { "selector": {
"none": "None" "label": "Текущий язык субтитров:{{language}}",
"none": "Нет",
"title": "Выберите язык субтитров"
} }
},
"templates": {
"title": "Открыть выбор субтитров"
} }
}, },
"compact-sidebar": {
"description": "Боковая панель всегда в компактном режиме",
"name": "Компактная боковая панель"
},
"crossfade": { "crossfade": {
"description": "Плавный переход между песнями",
"menu": {
"advanced": "Расширенное"
},
"name": "Плавный переход [бета]",
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "Длительность постепенного появления (мс)",
"fade-out-duration": "Длительность затухания (мс)",
"fade-scaling": { "fade-scaling": {
"linear": "Linear" "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": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Введите таймер неактивности в секундах:",
"title": "Задать таймер неактивности"
} }
} }
}, },
@ -166,22 +344,61 @@
"buttons": { "buttons": {
"ok": "OK" "ok": "OK"
}, },
"message": "Ой-ой! Прошу простить, загрузка дала сбой…",
"title": "Error in download!" "title": "Error in download!"
}, },
"start-download-playlist": { "start-download-playlist": {
"buttons": { "buttons": {
"ok": "OK" "ok": "OK"
} },
"detail": "({{playlistSize}} песен)",
"message": "Скачиваем плейлист {{playlistTitle}}",
"title": "Загрузка началась"
} }
}, },
"feedback": { "feedback": {
"download-progress": "Download: {{percent}}%" "conversion-progress": "Конвертация: {{percent}}%",
"converting": "Конвертация…",
"done": "Выполнено: {{filePath}}",
"download-info": "Скачиваем {{artist}}-{{title}} {{videoId}}",
"download-progress": "Download: {{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": "Пытаемся получить ID плейлиста: {{playlistId}}",
"video-id-not-found": "Видео не найдено",
"writing-id3": "Пишем ID3 теги…"
} }
}, },
"description": "Скачивать MP3 / исходное аудио напрямую из интерфейса",
"menu": {
"choose-download-folder": "Выберите папку для загрузок",
"download-playlist": "Скачать плейлист",
"presets": "Пресеты",
"skip-existing": "Пропускать уже существующие файлы"
},
"name": "Загрузчик",
"renderer": {
"can-not-update-progress": "Невозможно обновить прогресс"
},
"templates": { "templates": {
"button": "Download" "button": "Download"
} }
}, },
"exponential-volume": {
"description": "Делает слайдер громкости расширенным чтобы было легче выбирать низкие уровни.",
"name": "Расширенная громкость"
},
"last-fm": { "last-fm": {
"name": "Last.fm" "name": "Last.fm"
}, },
@ -207,7 +424,7 @@
"name": "SponsorBlock" "name": "SponsorBlock"
}, },
"touchbar": { "touchbar": {
"name": "TouchBar" "name": "Тачбар"
}, },
"tuna-obs": { "tuna-obs": {
"name": "Tuna OBS" "name": "Tuna OBS"
@ -227,6 +444,9 @@
"templates": { "templates": {
"button": "Song" "button": "Song"
} }
},
"visualizer": {
"name": "Визуалайзер"
} }
} }
} }

View File

@ -0,0 +1,7 @@
{
"language": {
"code": "th",
"local-name": "ภาษาไทย",
"name": "Thai"
}
}

View File

@ -1,10 +1,30 @@
{ {
"common": {
"console": {
"plugins": {
"execute-failed": "{{pluginName}}::{{contextName}} eklentisi çalıştırılamadı",
"executed-at-ms": "{{pluginName}}::{{contextName}} eklentisi {{ms}}ms'de çalıştırıldı",
"initialize-failed": "\"{{pluginName}}\" eklentisi başlatılamadı",
"load-all": "Tüm eklentiler yükleniyor",
"load-failed": "\"{{pluginName}}\" eklentisi yüklenemedi",
"loaded": "\"{{pluginName}}\" eklentisi yüklendi"
}
}
},
"language": { "language": {
"code": "tr", "code": "tr",
"local-name": "Türkçe", "local-name": "Türkçe",
"name": "Turkish" "name": "Turkish"
}, },
"main": { "main": {
"console": {
"did-finish-load": {
"dev-tools": "Yükleme tamamlandı. Geliştirici araçlarııldı"
},
"i18n": {
"loaded": "i18n yüklendi"
}
},
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"message": "Gizli menüyü etkinleştir" "message": "Gizli menüyü etkinleştir"

View File

@ -1,7 +1,408 @@
{ {
"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": { "language": {
"code": "uk", "code": "uk",
"local-name": "Українська", "local-name": "Українська",
"name": "Ukrainian" "name": "Ukrainian"
},
"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": "Очищення кешу програми"
},
"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": "Змінити User-Agent",
"restart-on-config-changes": "Перезапуск після зміни конфігурації",
"set-proxy": {
"label": "Задати проксі",
"prompt": {
"label": "Введіть адресу проксі-сервера: (залиште порожнім, щоб вимкнути)",
"placeholder": "Приклад: SOCKS5://127.0.0.1:9999",
"title": "Задати проксі"
}
},
"toggle-dev-tools": "Перемкнути DevTools"
}
},
"always-on-top": "Завжди зверху",
"auto-update": "Автооновлення",
"hide-menu": {
"dialog": {
"message": "Меню буде приховано при наступному запуску, використовуйте [Alt], щоб показати його (або клавішу [`], якщо ви використовуєте вбудоване меню)",
"title": "Приховане меню Увімкнено"
},
"label": "Приховане меню"
},
"language": {
"dialog": {
"message": "Мова буде змінена після перезапуску",
"title": "Мову змінено"
},
"label": "Мова",
"submenu": {
"to-help-translate": "Хочете допомогти з перекладом? Клацніть тут"
}
},
"resume-on-start": "Відновлювати останню пісню при запуску програми",
"single-instance-lock": "Заблокувати єдиним інстансом",
"start-at-login": "Запустити при вході в систему",
"starting-page": {
"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": {
"label": "Тема",
"submenu": {
"import-css-file": "Імпортувати власний CSS файл",
"no-theme": "Без теми"
}
}
}
}
}
},
"plugins": {
"enabled": "Увімкнено",
"label": "Плагіни"
},
"view": {
"label": "Вид",
"submenu": {
"force-reload": "Примусове перезавантаження",
"reload": "Перезавантажити",
"reset-zoom": "Фактичний розмір",
"toggle-fullscreen": "Включити повноекранний режим",
"zoom-in": "Збільшити",
"zoom-out": "Зменшити"
}
}
},
"tray": {
"next": "Далі",
"play-pause": "Відтворення/Пауза",
"previous": "Попередній",
"quit": "Вихід",
"restart": "Перезапустити програму",
"show": "Показати вікно"
}
},
"plugins": {
"adblocker": {
"description": "Блокувати всю рекламу та відстеження з коробки",
"menu": {
"blocker": "Блокувальник"
},
"name": "Блокувальник реклами"
},
"album-color-theme": {
"description": "Застосовує динамічну тему та візуальні ефекти на основі колірної палітри альбому",
"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": "Режим навколишнього середовища"
},
"audio-compressor": {
"description": "Застосувати стиснення аудіо (зменшити гучність найгучніших фрагментів сигналу та збільшити гучність тихих фрагментів)",
"name": "Аудіокомпресор"
},
"blur-nav-bar": {
"description": "Робить панель навігації прозорою та розмитою",
"name": "Розмиття панелі навігації"
},
"bypass-age-restrictions": {
"description": "Обхід перевірки віку на YouTube",
"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": "Розширене"
},
"name": "Плавний перехід[бета-версія]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "Тривалість згасання (мс)",
"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": "Під'єднано до 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": "Discord Rich Presence",
"prompt": {
"set-inactivity-timeout": {
"label": "Введіть тайм-аут бездіяльності в секундах:",
"title": "Встановлення тайм-ауту бездіяльності"
}
}
},
"downloader": {
"backend": {
"dialog": {
"error": {
"buttons": {
"ok": "Добре"
},
"message": "Йой! При завантаженні виникла помилка…",
"title": "Помилка при завантаженні!"
},
"start-download-playlist": {
"buttons": {
"ok": "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-playlist": "Завантажити плейлист",
"presets": "Попередні налаштування",
"skip-existing": "Пропустити наявні файли"
},
"name": "Завантажувач",
"renderer": {
"can-not-update-progress": "Неможливо оновити прогрес"
},
"templates": {
"button": "Завантажити"
}
},
"exponential-volume": {
"description": "Робить регулятор гучності експоненціальним, що полегшує вибір тихих рівнів гучності.",
"name": "Експоненціальний обсяг"
},
"in-app-menu": {
"description": "Надає меню-барам вишуканого, темного або кольору альбому вигляду"
}
} }
} }

View File

@ -1,7 +1,598 @@
{ {
"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": { "language": {
"code": "zh-CN", "code": "zh-CN",
"local-name": "簡體中文", "local-name": "简体中文",
"name": "Simplified Chinese" "name": "Simplified Chinese"
},
"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 键来显示(若使用应用内菜单则按 Esc 键)",
"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": "覆盖 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": {
"like-buttons": {
"default": "默认",
"force-show": "强制显示",
"hide": "隐藏",
"label": "点赞按钮"
},
"remove-upgrade-button": "移除升级按钮",
"theme": {
"label": "主题",
"submenu": {
"import-css-file": "导入自定义 CSS 文件",
"no-theme": "无主题"
}
}
}
}
}
},
"plugins": {
"enabled": "已启用",
"label": "插件"
},
"view": {
"label": "视图",
"submenu": {
"force-reload": "强制刷新",
"reload": "刷新",
"reset-zoom": "实际缩放大小",
"toggle-fullscreen": "切换全屏",
"zoom-in": "放大",
"zoom-out": "缩小"
}
}
},
"tray": {
"next": "下一首",
"play-pause": "播放/暂停",
"previous": "上一首",
"quit": "退出",
"restart": "重启应用",
"show": "显示窗口"
}
},
"plugins": {
"adblocker": {
"description": "屏蔽所有广告与跟踪器",
"menu": {
"blocker": "屏蔽器"
},
"name": "广告屏蔽器"
},
"album-color-theme": {
"description": "根据专辑封面配色动态改变主题与视觉效果",
"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": "沉浸模式"
},
"audio-compressor": {
"description": "对音频应用压缩(压低响亮部分,提升柔和部分)",
"name": "音频压缩器"
},
"blur-nav-bar": {
"description": "让导航栏透明及模糊",
"name": "模糊导航栏"
},
"bypass-age-restrictions": {
"description": "绕过 YouTube 年龄验证",
"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": "高级"
},
"name": "交叉淡化 [beta]",
"prompt": {
"options": {
"multi-input": {
"fade-in-duration": "淡入持续时间(毫秒)",
"fade-out-duration": "淡出持续时间(毫秒)",
"fade-scaling": {
"label": "淡化尺度",
"linear": "线性",
"logarithmic": "对数"
},
"seconds-before-end": "歌曲结束前持续交叉淡化时长"
},
"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": "Discord Rich Presence 状态显示",
"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-playlist": "下载播放列表",
"presets": "预设",
"skip-existing": "跳过已存在的文件"
},
"name": "下载器",
"renderer": {
"can-not-update-progress": "无法更新进度"
},
"templates": {
"button": "下载"
}
},
"exponential-volume": {
"description": "让音量滑块指数化以便选择更低的音量。",
"name": "指数化音量"
},
"in-app-menu": {
"description": "为菜单栏启用更精美的外观,可选暗色或专辑配色",
"menu": {
"hide-dom-window-controls": "隐藏 DOM 窗口控件"
},
"name": "应用内菜单"
},
"last-fm": {
"description": "添加 Last.fm 记录支持",
"name": "Last.fm"
},
"lumiastream": {
"description": "添加 Lumia Stream 支持",
"name": "Lumia Stream [测试]"
},
"lyrics-genius": {
"description": "为大多数歌曲添加歌词支持",
"menu": {
"romanized-lyrics": "罗马化字幕"
},
"name": "Genius 歌词",
"renderer": {
"fetched-lyrics": "已从 Genius 获取字幕"
}
},
"navigation": {
"description": "如同浏览器般,在应用界面内直接显示前进/后退导航按钮",
"name": "导航"
},
"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": "弹出通知样式",
"unpause-notification": "取消暂停时显示通知"
},
"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": "视频画质切换器"
},
"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": "自动跳过非音乐部分,如 MV 的介绍/结语以及歌曲未开始的部分",
"name": "SponsorBlock"
},
"taskbar-mediacontrol": {
"description": "从 Windows 任务栏控制音乐回放",
"name": "任务栏媒体控件"
},
"touchbar": {
"description": "为 macOS 用户启用 TouchBar 支持",
"name": "TouchBar"
},
"tuna-obs": {
"description": "与 OBS 的 Tuna 插件集成",
"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

@ -2,14 +2,14 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "外掛 {{pluginName}} 無法執行::{{contextName}}", "execute-failed": "外掛 {{pluginName}} 無法執行::{{contextName}}",
"executed-at-ms": "外掛 {{pluginName}}::{{contextName}} 用了 {{ms}} 毫秒來執行", "executed-at-ms": "外掛 {{pluginName}}::{{contextName}} 用了 {{ms}} 毫秒來執行",
"initialize-failed": "初始化外掛「{{pluginName}}」失敗", "initialize-failed": "初始化外掛「{{pluginName}}」失敗",
"load-all": "正在載入所有外掛", "load-all": "正在載入所有外掛",
"load-failed": "載入外掛「{{pluginName}}」失敗", "load-failed": "載入外掛「{{pluginName}}」失敗",
"loaded": "外掛「{{pluginName}}」已載入", "loaded": "外掛「{{pluginName}}」已載入",
"unload-failed": "移除外掛「{{pluginName}}」失敗", "unload-failed": "移除外掛「{{pluginName}}」失敗",
"unloaded": "外掛「{{pluginName}}」已移除" "unloaded": "外掛「{{pluginName}}」已移除"
} }
} }
}, },
@ -44,9 +44,9 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "選單已隱藏,使用 Alt 鍵來重新顯示(或是使用 Esc 鍵)", "detail": "選單已隱藏,使用 Alt 鍵來重新顯示(或是使用 Esc 鍵)",
"message": "隱藏選單已經啟用", "message": "隱藏選單已經啟用",
"title": "隱藏選單已啟用" "title": "隱藏選單已啟用"
}, },
"need-to-restart": { "need-to-restart": {
"buttons": { "buttons": {
@ -87,7 +87,7 @@
"go-back": "回到上一頁", "go-back": "回到上一頁",
"go-forward": "回到下一頁", "go-forward": "回到下一頁",
"quit": "退出", "quit": "退出",
"restart": "重程式" "restart": "重新啟動應用程式"
} }
}, },
"options": { "options": {
@ -100,12 +100,12 @@
"disable-hardware-acceleration": "關閉硬體加速", "disable-hardware-acceleration": "關閉硬體加速",
"edit-config-json": "編輯 config.json", "edit-config-json": "編輯 config.json",
"override-user-agent": "覆寫使用者代理", "override-user-agent": "覆寫使用者代理",
"restart-on-config-changes": "設定檔變更時重啟程式", "restart-on-config-changes": "設定檔更動時自動重啟應用程式",
"set-proxy": { "set-proxy": {
"label": "設定代理伺服器", "label": "設定代理伺服器",
"prompt": { "prompt": {
"label": "輸入代理伺服器位置:(留空以停用本設定)", "label": "輸入代理伺服器位置:(留空以停用本設定)",
"placeholder": "範例:socks5://127.0.0.1:9999", "placeholder": "範例:SOCKS5://127.0.0.1:9999",
"title": "設定代理伺服器" "title": "設定代理伺服器"
} }
}, },
@ -116,10 +116,10 @@
"auto-update": "自動更新", "auto-update": "自動更新",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "選單會在程式下次啟動時隱藏,使用 Alt 鍵來重新顯示(或是使用 ` 鍵)", "message": "選單會在程式下次啟動時隱藏,使用 Alt 鍵來重新顯示(或是使用 ` 鍵)",
"title": "隱藏選單已啟用" "title": "隱藏選單已啟用"
}, },
"label": "隱藏選單" "label": "隱藏選單"
}, },
"language": { "language": {
"dialog": { "dialog": {
@ -202,8 +202,8 @@
"name": "廣告阻擋" "name": "廣告阻擋"
}, },
"album-color-theme": { "album-color-theme": {
"description": "依歌曲專輯色調動態改變主題顏色", "description": "依歌曲色調自動更改應用程式主題",
"name": "動態專輯主題色調" "name": "隨歌曲色調變更主題"
}, },
"ambient-mode": { "ambient-mode": {
"description": "將影片內容的淺色畫面投放至螢幕背景, 讓觀眾在觀賞影片時更有臨場感。", "description": "將影片內容的淺色畫面投放至螢幕背景, 讓觀眾在觀賞影片時更有臨場感。",
@ -329,13 +329,13 @@
"hide-duration-left": "隱藏音樂剩餘時間狀態", "hide-duration-left": "隱藏音樂剩餘時間狀態",
"hide-github-button": "隱藏Github頁面按鈕", "hide-github-button": "隱藏Github頁面按鈕",
"play-on-youtube-music": "顯示Play on YouTube Music按鈕", "play-on-youtube-music": "顯示Play on YouTube Music按鈕",
"set-inactivity-timeout": "設置歌曲暫停後幾秒清除狀態" "set-inactivity-timeout": "設定閒置狀態時長"
}, },
"name": "Discord狀態", "name": "Discord狀態",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "設多少秒後清除狀態:", "label": "設多少秒後清除狀態:",
"title": "設置歌曲暫停後幾秒清除狀態" "title": "設定閒置狀態時長"
} }
} }
}, },
@ -354,7 +354,7 @@
"ok": "完成" "ok": "完成"
}, },
"detail": "({{playlistSize}} 首歌曲)", "detail": "({{playlistSize}} 首歌曲)",
"message": "正在下載 {{playlistTitle}} 播放清單", "message": "正在下載播放清單 {{playlistTitle}}",
"title": "開始下載" "title": "開始下載"
} }
}, },
@ -366,30 +366,30 @@
"download-progress": "下載進度: {{percent}}%", "download-progress": "下載進度: {{percent}}%",
"downloading": "下載中…", "downloading": "下載中…",
"downloading-counter": "正在下載第 {{current}}/{{total}}…", "downloading-counter": "正在下載第 {{current}}/{{total}}…",
"downloading-playlist": "正在下載 \"{{playlistTitle}}\" 播放清單 - 共 {{playlistSize}} 首歌 ({{playlistId}})", "downloading-playlist": "正在下載播放清單 \"{{playlistTitle}}\" - 共 {{playlistSize}} 首歌 ({{playlistId}})",
"error-while-downloading": "無法下載 \"{{author}} - {{title}}\": {{error}}", "error-while-downloading": "無法下載 \"{{author}} - {{title}}\": {{error}}",
"folder-already-exists": "資料夾 {{playlistFolder}} 已經存在", "folder-already-exists": "資料夾 {{playlistFolder}} 已經存在",
"getting-playlist-info": "正在獲取播放清單資訊…", "getting-playlist-info": "正在獲取播放清單資訊…",
"loading": "載入中…", "loading": "載入中…",
"playlist-has-only-one-song": "播放清單內只有一首歌曲, 直接下載", "playlist-has-only-one-song": "播放清單內只有一首歌曲, 直接下載",
"playlist-id-not-found": "沒有找到播放清單ID", "playlist-id-not-found": "沒有找到播放清單 ID",
"playlist-is-empty": "播放清單為空", "playlist-is-empty": "播放清單是空的",
"playlist-is-mix-or-private": "獲取播放清單資訊時發生錯誤: 請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}", "playlist-is-mix-or-private": "獲取播放清單資訊時發生錯誤: 請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
"preparing-file": "正在準備檔案…", "preparing-file": "正在準備檔案…",
"saving": "儲存中…", "saving": "儲存中…",
"trying-to-get-playlist-id": "正在嘗試獲取播放清單ID: {{playlistId}}", "trying-to-get-playlist-id": "正在嘗試獲取播放清單 ID: {{playlistId}}",
"video-id-not-found": "未找到影片", "video-id-not-found": "未找到影片",
"writing-id3": "正在寫入ID3標籤…" "writing-id3": "正在寫入 ID3 標籤…"
} }
}, },
"description": "在應用程式內下載MP3原始音樂檔", "description": "在應用程式內下載 MP3原始音樂檔",
"menu": { "menu": {
"choose-download-folder": "選擇下載位置", "choose-download-folder": "選擇下載位置",
"download-playlist": "下載播放清單", "download-playlist": "下載播放清單",
"presets": "預設格式", "presets": "預設格式",
"skip-existing": "跳過已存在的檔案" "skip-existing": "跳過已存在的檔案"
}, },
"name": "下載", "name": "歌曲下載",
"renderer": { "renderer": {
"can-not-update-progress": "無法更新進度" "can-not-update-progress": "無法更新進度"
}, },
@ -398,15 +398,15 @@
} }
}, },
"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視窗控制"
}, },
"name": "程式內選單" "name": "程式內選單"
}, },
"last-fm": { "last-fm": {
"description": "新增對Last.fm的scrobbling支援", "description": "新增對Last.fm的scrobbling支援",
@ -432,7 +432,7 @@
}, },
"no-google-login": { "no-google-login": {
"description": "移除Google登入按鈕及連結", "description": "移除Google登入按鈕及連結",
"name": "用Google登入" "name": "用Google登入"
}, },
"notifications": { "notifications": {
"description": "在歌曲播放時發送一個系統通知 (可互動通知僅限Windows)", "description": "在歌曲播放時發送一個系統通知 (可互動通知僅限Windows)",
@ -453,7 +453,7 @@
"name": "歌曲播放通知" "name": "歌曲播放通知"
}, },
"picture-in-picture": { "picture-in-picture": {
"description": "允許應用程式切換至畫中畫模式", "description": "允許應用程式切換至子母畫面模式",
"menu": { "menu": {
"always-on-top": "永遠顯示在最上層", "always-on-top": "永遠顯示在最上層",
"hotkey": { "hotkey": {
@ -462,17 +462,17 @@
"keybind-options": { "keybind-options": {
"hotkey": "快捷鍵" "hotkey": "快捷鍵"
}, },
"label": "選擇一個快捷鍵來切換畫中畫模式", "label": "選擇一個快捷鍵來切換子母畫面模式",
"title": "畫中畫模式快捷鍵" "title": "子母畫面模式快捷鍵"
} }
}, },
"save-window-position": "記住視窗位置", "save-window-position": "記住視窗位置",
"save-window-size": "記住視窗大小", "save-window-size": "記住視窗大小",
"use-native-pip": "使用瀏覽器原生畫中畫模式" "use-native-pip": "使用瀏覽器原生子母畫面模式"
}, },
"name": "畫中畫模式", "name": "子母畫面",
"templates": { "templates": {
"button": "畫中畫模式" "button": "子母畫面"
} }
}, },
"playback-speed": { "playback-speed": {
@ -483,13 +483,13 @@
} }
}, },
"precise-volume": { "precise-volume": {
"description": "讓你可使用滑鼠滾輪/快捷鍵控制音量", "description": "讓你可使用滑鼠滾輪/快捷鍵控制音量,並顯示目前音量大小",
"menu": { "menu": {
"arrows-shortcuts": "本地方向鍵控制", "arrows-shortcuts": "方向鍵音量控制",
"custom-volume-steps": "自訂音量層級", "custom-volume-steps": "自訂音量調整時層級",
"global-shortcuts": "全域快捷鍵" "global-shortcuts": "全域快捷鍵"
}, },
"name": "精確音量控制", "name": "進階音量控制",
"prompt": { "prompt": {
"global-shortcuts": { "global-shortcuts": {
"keybind-options": { "keybind-options": {
@ -500,8 +500,8 @@
"title": "全域音量控制快捷鍵" "title": "全域音量控制快捷鍵"
}, },
"volume-steps": { "volume-steps": {
"label": "設定音量一次增加/降低的層級", "label": "設定音量一次增加/降低的層級",
"title": "音量層級設定" "title": "自訂音量調整時層級"
} }
} }
}, },
@ -515,11 +515,11 @@
} }
} }
}, },
"description": "允許在影片畫面內調整影片畫質", "description": "允許在影片內進行畫質更改",
"name": "影片畫質更改器" "name": "允許變更影片畫質"
}, },
"shortcuts": { "shortcuts": {
"description": "使用全域快捷鍵控制音樂 (播放/暫停/下一首/上一首) + 透過覆寫媒體快捷鍵停用媒體OSD + 允許Ctrl/CMD + F來搜尋 + 支援Linux MPRIS媒體快捷鍵 + 更多自訂快捷鍵給進階使用者", "description": "使用全域快捷鍵控制音樂 (播放/暫停/下一首/上一首) + 透過覆寫媒體快捷鍵停用媒體OSD + 允許Ctrl/CMD + F來搜尋 + 支援Linux MPRIS媒體快捷鍵 + 更多自訂快捷鍵給進階使用者",
"menu": { "menu": {
"override-media-keys": "覆寫媒體快捷鍵", "override-media-keys": "覆寫媒體快捷鍵",
"set-keybinds": "設定全域歌曲控制" "set-keybinds": "設定全域歌曲控制"
@ -537,9 +537,13 @@
} }
} }
}, },
"skip-disliked-songs": {
"description": "自動跳過不喜歡的歌曲",
"name": "自動跳過不喜歡的歌曲"
},
"skip-silences": { "skip-silences": {
"description": "自動跳過音樂無聲片段", "description": "自動跳過音樂無聲片段",
"name": "跳過無聲" "name": "自動跳過無聲片段"
}, },
"sponsorblock": { "sponsorblock": {
"description": "自動跳過贊助片段", "description": "自動跳過贊助片段",
@ -550,8 +554,8 @@
"name": "工作列媒體控制" "name": "工作列媒體控制"
}, },
"touchbar": { "touchbar": {
"description": "為macOS使用者新增支援觸控列", "description": "為macOS使用者新增觸控列支援",
"name": "觸控列" "name": "觸控列 (Touchbar) 支援"
}, },
"tuna-obs": { "tuna-obs": {
"description": "與OBS外掛Tuna連接", "description": "與OBS外掛Tuna連接",
@ -578,7 +582,7 @@
} }
} }
}, },
"name": "影片切換", "name": "歌曲/影片切換",
"templates": { "templates": {
"button": "歌曲" "button": "歌曲"
} }

View File

@ -402,55 +402,16 @@ async function createMainWindow() {
removeContentSecurityPolicy(); removeContentSecurityPolicy();
win.webContents.on('dom-ready', async () => { win.webContents.on('dom-ready', () => {
if (useInlineMenu && is.windows()) { if (useInlineMenu && is.windows()) {
win.setTitleBarOverlay({ win.setTitleBarOverlay({
...defaultTitleBarOverlayOptions, ...defaultTitleBarOverlayOptions,
height: Math.floor( height: Math.floor(
defaultTitleBarOverlayOptions.height! * defaultTitleBarOverlayOptions.height! *
win.webContents.getZoomFactor(), win.webContents.getZoomFactor(),
), ),
}); });
} }
// Inject index.html file as string using insertAdjacentHTML
// In dev mode, get string from process.env.VITE_DEV_SERVER_URL, else use fs.readFileSync
if (is.dev() && process.env.ELECTRON_RENDERER_URL) {
// HACK: to make vite work with electron renderer (supports hot reload)
await win.webContents.executeJavaScript(`
console.log('Loading vite from dev server');
const viteScript = document.createElement('script');
viteScript.type = 'module';
viteScript.src = '${process.env.ELECTRON_RENDERER_URL}/@vite/client';
const rendererScript = document.createElement('script');
rendererScript.type = 'module';
rendererScript.src = '${process.env.ELECTRON_RENDERER_URL}/renderer.ts';
document.body.appendChild(viteScript);
document.body.appendChild(rendererScript);
0
`);
} else {
const rendererPath = path.join(__dirname, '..', 'renderer');
const indexHTML = parse(
fs.readFileSync(path.join(rendererPath, 'index.html'), 'utf-8'),
);
const scriptSrc = indexHTML.querySelector('script')!;
const scriptPath = path.join(
rendererPath,
scriptSrc.getAttribute('src')!,
);
const scriptString = fs.readFileSync(scriptPath, 'utf-8');
await win.webContents.executeJavaScriptInIsolatedWorld(
0,
[
{
code: scriptString + ';0',
url: url.pathToFileURL(scriptPath).toString(),
},
],
true,
);
}
}); });
win.webContents.loadURL(urlToLoad); win.webContents.loadURL(urlToLoad);
@ -629,6 +590,48 @@ app.whenReady().then(async () => {
} }
} }
ipcMain.on('get-renderer-script', (event) => {
// Inject index.html file as string using insertAdjacentHTML
// In dev mode, get string from process.env.VITE_DEV_SERVER_URL, else use fs.readFileSync
if (is.dev() && process.env.ELECTRON_RENDERER_URL) {
// HACK: to make vite work with electron renderer (supports hot reload)
event.returnValue = [null, `
console.log('${LoggerPrefix}', 'Loading vite from dev server');
(async () => {
await new Promise((resolve) => {
if (document.readyState === 'loading') {
console.log('${LoggerPrefix}', 'Waiting for DOM to load');
document.addEventListener('DOMContentLoaded', () => resolve(), { once: true });
} else {
resolve();
}
});
const viteScript = document.createElement('script');
viteScript.type = 'module';
viteScript.src = '${process.env.ELECTRON_RENDERER_URL}/@vite/client';
const rendererScript = document.createElement('script');
rendererScript.type = 'module';
rendererScript.src = '${process.env.ELECTRON_RENDERER_URL}/renderer.ts';
document.body.appendChild(viteScript);
document.body.appendChild(rendererScript);
})();
0
`];
} else {
const rendererPath = path.join(__dirname, '..', 'renderer');
const indexHTML = parse(
fs.readFileSync(path.join(rendererPath, 'index.html'), 'utf-8'),
);
const scriptSrc = indexHTML.querySelector('script')!;
const scriptPath = path.join(
rendererPath,
scriptSrc.getAttribute('src')!,
);
const scriptString = fs.readFileSync(scriptPath, 'utf-8');
event.returnValue = [url.pathToFileURL(scriptPath).toString(), scriptString + ';0'];
}
});
mainWindow = await createMainWindow(); mainWindow = await createMainWindow();
await setApplicationMenu(mainWindow); await setApplicationMenu(mainWindow);
await refreshMenu(mainWindow); await refreshMenu(mainWindow);

View File

@ -77,7 +77,7 @@ export const onRendererLoad = ({
ipc.on('downloader-feedback', (feedback: string) => { ipc.on('downloader-feedback', (feedback: string) => {
if (progress) { if (progress) {
progress.innerHTML = feedback || 'Download'; progress.innerHTML = feedback || t('plugins.downloader.templates.button');
} else { } else {
console.warn( console.warn(
LoggerPrefix, LoggerPrefix,

View File

@ -107,13 +107,15 @@ export const onMainLoad = async ({
window.on('move', () => { window.on('move', () => {
if (config.isInPiP && !config.useNativePiP) { if (config.isInPiP && !config.useNativePiP) {
setConfig({ 'pip-position': window.getPosition() as [number, number] }); const [x, y] = window.getPosition();
setConfig({ 'pip-position': [x, y] });
} }
}); });
window.on('resize', () => { window.on('resize', () => {
if (config.isInPiP && !config.useNativePiP) { if (config.isInPiP && !config.useNativePiP) {
setConfig({ 'pip-size': window.getSize() as [number, number] }); const [width, height] = window.getSize();
setConfig({ 'pip-size': [width, height] });
} }
}); });
}; };

View File

@ -1,4 +1,4 @@
import { contextBridge, ipcRenderer, IpcRendererEvent } from 'electron'; import { contextBridge, ipcRenderer, IpcRendererEvent, webFrame } from 'electron';
import is from 'electron-is'; import is from 'electron-is';
import config from './config'; import config from './config';
@ -53,3 +53,19 @@ contextBridge.exposeInMainWorld(
'ELECTRON_RENDERER_URL', 'ELECTRON_RENDERER_URL',
process.env.ELECTRON_RENDERER_URL, process.env.ELECTRON_RENDERER_URL,
); );
const [path, script] = ipcRenderer.sendSync('get-renderer-script') as [string | null, string];
let blocked = true;
if (path) {
webFrame.executeJavaScriptInIsolatedWorld(0, [
{
code: script,
url: path,
},
], true, () => blocked = false);
} else {
webFrame.executeJavaScript(script, true, () => blocked = false);
}
// HACK: Wait for the script to be executed
while (blocked);

View File

@ -2,7 +2,7 @@ import { singleton } from './decorators';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { YoutubePlayer } from '@/types/youtube-player';
import type { GetState } from '@/types/datahost-get-state'; import type { GetState } from '@/types/datahost-get-state';
import type { VideoDataChangeValue } from '@/types/player-api-events'; import type { AlbumDetails, VideoDataChangeValue } from '@/types/player-api-events';
import type { SongInfo } from './song-info'; import type { SongInfo } from './song-info';
import type { VideoDataChanged } from '@/types/video-data-changed'; import type { VideoDataChanged } from '@/types/video-data-changed';
@ -155,7 +155,10 @@ export default (api: YoutubePlayer) => {
const data = api.getPlayerResponse(); const data = api.getPlayerResponse();
data.videoDetails.album = data.videoDetails.album =
videoData?.Hd?.playerOverlays?.playerOverlayRenderer?.browserMediaSession?.browserMediaSessionRenderer?.album.runs?.at( (
Object.entries(videoData)
.find(([, value]) => value && Object.hasOwn(value, 'playerOverlays')) as [string, AlbumDetails | undefined]
)?.[1]?.playerOverlays?.playerOverlayRenderer?.browserMediaSession?.browserMediaSessionRenderer?.album?.runs?.at(
0, 0,
)?.text; )?.text;
data.videoDetails.elapsedSeconds = 0; data.videoDetails.elapsedSeconds = 0;

View File

@ -21,37 +21,6 @@ let isPluginLoaded = false;
let isApiLoaded = false; let isApiLoaded = false;
let firstDataLoaded = false; let firstDataLoaded = false;
const observer = new MutationObserver(() => {
const playerApi = document.querySelector<Element & YoutubePlayer>(
'#movie_player',
);
if (playerApi) {
observer.disconnect();
// Inject song-info provider
setupSongInfo(playerApi);
const dataLoadedListener = (name: string) => {
if (!firstDataLoaded && name === 'dataloaded') {
firstDataLoaded = true;
playerApi.removeEventListener('videodatachange', dataLoadedListener);
}
};
playerApi.addEventListener('videodatachange', dataLoadedListener);
if (isPluginLoaded && !isApiLoaded) {
api = playerApi;
isApiLoaded = true;
onApiLoaded();
}
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true,
});
async function listenForApiLoad() { async function listenForApiLoad() {
if (!isApiLoaded) { if (!isApiLoaded) {
api = document.querySelector('#movie_player'); api = document.querySelector('#movie_player');
@ -176,14 +145,16 @@ const defineYTMDTransElements = () => {
); );
}; };
(async () => { const preload = async () => {
await loadI18n(); await loadI18n();
await setLanguage(window.mainConfig.get('options.language') ?? 'en'); await setLanguage(window.mainConfig.get('options.language') ?? 'en');
window.i18n = { window.i18n = {
t: i18t.bind(i18next), t: i18t.bind(i18next),
}; };
defineYTMDTransElements(); defineYTMDTransElements();
};
const main = async () => {
await loadAllRendererPlugins(); await loadAllRendererPlugins();
isPluginLoaded = true; isPluginLoaded = true;
@ -226,4 +197,48 @@ const defineYTMDTransElements = () => {
console.log(JSON.parse(log)); console.log(JSON.parse(log));
}); });
} }
})(); };
const initObserver = async () => {
// check document.documentElement is ready
await new Promise<void>((resolve) => {
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', () => resolve(), { once: true });
} else {
resolve();
}
});
const observer = new MutationObserver(() => {
const playerApi = document.querySelector<Element & YoutubePlayer>(
'#movie_player',
);
if (playerApi) {
observer.disconnect();
// Inject song-info provider
setupSongInfo(playerApi);
const dataLoadedListener = (name: string) => {
if (!firstDataLoaded && name === 'dataloaded') {
firstDataLoaded = true;
playerApi.removeEventListener('videodatachange', dataLoadedListener);
}
};
playerApi.addEventListener('videodatachange', dataLoadedListener);
if (isPluginLoaded && !isApiLoaded) {
api = playerApi;
isApiLoaded = true;
onApiLoaded();
}
}
});
observer.observe(document.documentElement, {
childList: true,
subtree: true,
});
};
initObserver().then(preload).then(main);

View File

@ -246,8 +246,6 @@ export type VideoDataChangeValue = Record<string, unknown> & {
title: string; title: string;
author: string; author: string;
Hd?: AlbumDetails;
playlistId: string; playlistId: string;
isUpcoming: boolean; isUpcoming: boolean;
loading: boolean; loading: boolean;

View File

@ -170,17 +170,13 @@ export interface YoutubePlayer {
channelUnsubscribed: <Parameters extends unknown[], Return>( channelUnsubscribed: <Parameters extends unknown[], Return>(
...params: Parameters ...params: Parameters
) => Return; ) => Return;
togglePictureInPicture: <Parameters extends unknown[], Return>( togglePictureInPicture: () => void;
...params: Parameters
) => Return;
supportsGaplessAudio: () => boolean; supportsGaplessAudio: () => boolean;
supportsGaplessShorts: () => boolean; supportsGaplessShorts: () => boolean;
enqueueVideoByPlayerVars: <Parameters extends unknown[], Return>( enqueueVideoByPlayerVars: <Parameters extends unknown[], Return>(
...params: Parameters ...params: Parameters
) => Return; ) => Return;
clearQueue: <Parameters extends unknown[], Return>( clearQueue: () => void;
...params: Parameters
) => Return;
getAudioTrack: <Parameters extends unknown[], Return>( getAudioTrack: <Parameters extends unknown[], Return>(
...params: Parameters ...params: Parameters
) => Return; ) => Return;
@ -284,14 +280,10 @@ export interface YoutubePlayer {
handleGlobalKeyDown: () => void; handleGlobalKeyDown: () => void;
handleGlobalKeyUp: () => void; handleGlobalKeyUp: () => void;
wakeUpControls: () => void; wakeUpControls: () => void;
cueVideoById: (videoId: string) => void; cueVideoById: (videoId: string, startSeconds: number, suggestedQuality: string) => void;
loadVideoById: (videoId: string) => void; loadVideoById: (videoId: string, startSeconds: number, suggestedQuality: string) => void;
cueVideoByUrl: <Parameters extends unknown[], Return>( cueVideoByUrl: (mediaContentUrl: string, startSeconds: number, suggestedQuality: string, playerType: string) => void;
...params: Parameters loadVideoByUrl: (mediaContentUrl: string, startSeconds: number, suggestedQuality: string, playerType: string) => void;
) => Return;
loadVideoByUrl: <Parameters extends unknown[], Return>(
...params: Parameters
) => Return;
/** /**
* Note: This doesn't resume playback, it plays from the start. * Note: This doesn't resume playback, it plays from the start.
*/ */
@ -363,9 +355,7 @@ export interface YoutubePlayer {
addCueRange: <Parameters extends unknown[], Return>( addCueRange: <Parameters extends unknown[], Return>(
...params: Parameters ...params: Parameters
) => Return; ) => Return;
removeCueRange: <Parameters extends unknown[], Return>( removeCueRange: (range: unknown[]) => void;
...params: Parameters
) => Return;
setSize: (size: { width: number; height: number }) => void; setSize: (size: { width: number; height: number }) => void;
destroy: <Parameters extends unknown[], Return>( destroy: <Parameters extends unknown[], Return>(
...params: Parameters ...params: Parameters
@ -383,12 +373,8 @@ export interface YoutubePlayer {
getVideoUrl: () => string; getVideoUrl: () => string;
getMediaReferenceTime: () => number; getMediaReferenceTime: () => number;
getSize: () => { width: number; height: number }; getSize: () => { width: number; height: number };
logImaAdEvent: <Parameters extends unknown[], Return>( logImaAdEvent: (eventType: unknown, breakType: unknown) => void;
...params: Parameters preloadVideoById: (videoId: string, startSeconds: number, suggestedQuality: string) => void;
) => Return;
preloadVideoById: <Parameters extends unknown[], Return>(
...params: Parameters
) => Return;
setAccountLinkState: <Parameters extends unknown[], Return>( setAccountLinkState: <Parameters extends unknown[], Return>(
...params: Parameters ...params: Parameters
) => Return; ) => Return;

View File

@ -1,9 +1,9 @@
{ {
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json", "extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
"compilerOptions": { "compilerOptions": {
"target": "ESNext", "target": "esnext",
"lib": ["dom", "dom.iterable", "es2022"], "lib": ["dom", "dom.iterable", "es2022"],
"module": "CommonJS", "module": "esnext",
"types": ["electron-vite/node"], "types": ["electron-vite/node"],
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"esModuleInterop": true, "esModuleInterop": true,
@ -21,5 +21,8 @@
} }
}, },
"exclude": ["./dist"], "exclude": ["./dist"],
"include": ["electron.vite.config.ts", "./src/**/*"] "include": [
"electron.vite.config.mts",
"./src/**/*"
]
} }

View File

@ -1,4 +1,5 @@
import { basename, relative, resolve, extname } from 'node:path'; import { basename, relative, resolve, extname, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
import { globSync } from 'glob'; import { globSync } from 'glob';
import { Project } from 'ts-morph'; import { Project } from 'ts-morph';
@ -7,6 +8,7 @@ const snakeToCamel = (text: string) =>
text.replace(/-(\w)/g, (_, letter: string) => letter.toUpperCase()); text.replace(/-(\w)/g, (_, letter: string) => letter.toUpperCase());
export const i18nImporter = () => { export const i18nImporter = () => {
const __dirname = dirname(fileURLToPath(import.meta.url));
const project = new Project({ const project = new Project({
tsConfigFilePath: resolve(__dirname, '..', 'tsconfig.json'), tsConfigFilePath: resolve(__dirname, '..', 'tsconfig.json'),
skipAddingFilesFromTsConfig: true, skipAddingFilesFromTsConfig: true,

View File

@ -1,4 +1,5 @@
import { basename, relative, resolve, extname } from 'node:path'; import { basename, relative, resolve, extname, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
import { globSync } from 'glob'; import { globSync } from 'glob';
import { Project } from 'ts-morph'; import { Project } from 'ts-morph';
@ -9,6 +10,7 @@ const snakeToCamel = (text: string) =>
export const pluginVirtualModuleGenerator = ( export const pluginVirtualModuleGenerator = (
mode: 'main' | 'preload' | 'renderer', mode: 'main' | 'preload' | 'renderer',
) => { ) => {
const __dirname = dirname(fileURLToPath(import.meta.url));
const project = new Project({ const project = new Project({
tsConfigFilePath: resolve(__dirname, '..', 'tsconfig.json'), tsConfigFilePath: resolve(__dirname, '..', 'tsconfig.json'),
skipAddingFilesFromTsConfig: true, skipAddingFilesFromTsConfig: true,

View File

@ -1,5 +1,6 @@
import { readFile } from 'node:fs/promises'; import { readFile } from 'node:fs/promises';
import { resolve, basename } from 'node:path'; import { resolve, basename, dirname } from 'node:path';
import { fileURLToPath } from 'node:url';
import { createFilter } from 'vite'; import { createFilter } from 'vite';
import { Project, ts, ObjectLiteralExpression, VariableDeclarationKind } from 'ts-morph'; import { Project, ts, ObjectLiteralExpression, VariableDeclarationKind } from 'ts-morph';
@ -17,6 +18,8 @@ export default function (mode: 'backend' | 'preload' | 'renderer' | 'none'): Plu
async load(id) { async load(id) {
if (!pluginFilter(id)) return null; if (!pluginFilter(id)) return null;
const __dirname = dirname(fileURLToPath(import.meta.url));
const project = new Project({ const project = new Project({
tsConfigFilePath: resolve(__dirname, '..', 'tsconfig.json'), tsConfigFilePath: resolve(__dirname, '..', 'tsconfig.json'),
skipAddingFilesFromTsConfig: true, skipAddingFilesFromTsConfig: true,