Compare commits

...

44 Commits

Author SHA1 Message Date
23fd60b94e chore(deps): bump @hono/node-server from 1.19.9 to 1.19.10
Bumps [@hono/node-server](https://github.com/honojs/node-server) from 1.19.9 to 1.19.10.
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](https://github.com/honojs/node-server/compare/v1.19.9...v1.19.10)

---
updated-dependencies:
- dependency-name: "@hono/node-server"
  dependency-version: 1.19.10
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-04 20:55:28 +00:00
6907fad1c5 chore(i18n): Translated using Weblate (Greek)
Currently translated at 90.3% (431 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/el/
2026-03-03 13:09:59 +00:00
04ccad3e06 doc: installation instructions for Solus (#4352) 2026-03-02 23:27:32 +09:00
b367c98cc5 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2026-03-01 18:10:30 +00:00
93a95aac72 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:28 +00:00
4e6d9ba017 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:27 +00:00
11f5815539 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:26 +00:00
4ddd7cc399 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:25 +00:00
deddbec79a chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:24 +00:00
bef4050f08 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:23 +00:00
398d80808f chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:21 +00:00
b0388f2be7 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:20 +00:00
ae5e65ad32 chore(i18n): Translated using Weblate (Lithuanian)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/lt/
2026-03-01 18:10:19 +00:00
3c67778c1b chore(deps): update eslint monorepo to v9.39.3 (#4337)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:31:20 +09:00
e9d8583e59 fix(deps): update dependency @hono/zod-openapi to v1.2.2 (#4338)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:31:13 +09:00
fb2b8185ea chore(deps): update actions/checkout action to v6 (#4293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:28:12 +09:00
b9c84f4404 chore(deps): update actions/upload-artifact action to v6 (#4294)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:28:00 +09:00
465a350890 chore(deps): update dependency @playwright/test to v1.58.2 (#4335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:12:33 +09:00
72886583e9 chore(deps): update dependency glob to v13.0.6 (#4298)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:12:02 +09:00
82294be035 chore(deps): update dependency discord-api-types to v0.38.40 (#4336)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 04:11:45 +09:00
af9d5aa21e chore(deps): update stefanzweifel/git-auto-commit-action action to v7 (#4302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 03:44:10 +09:00
a90ec4aa6e fix(deps): update dependency conf to v15.1.0 (#4303)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 03:43:55 +09:00
e3e9985924 fix(deps): update dependency semver to v7.7.4 (#4306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 03:43:41 +09:00
bac4c03e80 chore(deps): update dependency @electron-toolkit/tsconfig to v2 (#4301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 03:42:37 +09:00
9c8add02e4 fix(deps): update dependency i18next to v25.8.13 (#4290)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 03:42:13 +09:00
7aaca810ff fix(deps): update dependency hono to v4.11.10 [security] (#4331)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 03:42:05 +09:00
Bai
41f077b144 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2026-02-24 15:09:51 +01:00
520d111fe5 chore(i18n): Translated using Weblate (Vietnamese)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/vi/
2026-02-24 15:09:47 +01:00
658b3da7dd chore(i18n): Translated using Weblate (German)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/de/
2026-02-21 15:09:48 +00:00
65e11c01b9 chore(i18n): Translated using Weblate (Telugu)
Currently translated at 4.8% (23 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/te/
2026-02-19 15:09:48 +01:00
4a4c0fe055 chore(i18n): Translated using Weblate (Spanish)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/es/
2026-02-17 11:09:50 +01:00
fd9ae2c23d chore(i18n): Translated using Weblate (French)
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/fr/
2026-02-17 11:09:47 +01:00
b6d2bcd42f chore(i18n): Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/pt_BR/
2026-02-16 03:09:55 +01:00
021972520a chore(i18n): Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (477 of 477 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hans/
2026-02-16 03:09:54 +01:00
90e949d4e9 chore(i18n): Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (469 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/zh_Hant/
2026-02-14 18:09:56 +00:00
208e57bdd3 feat(synced-lyrics): Add Simplified/Traditional Chinese converter and improve Romanization to display tone (#4111)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Angelos Bouklis <me@arjix.dev>
Co-authored-by: JellyBrick <shlee1503@naver.com>
2026-02-13 01:27:48 +09:00
e2f1ff50dd feat(synced-lyrics): Added Hindi & Bengali romanization support for lyrics (#3933)
Co-authored-by: pranjol <pranjol@pranjols-iMac-Pro.local>
2026-02-11 08:00:36 +09:00
3f1ceca39c chore(i18n): Translated using Weblate (Telugu)
Currently translated at 2.7% (13 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/te/
2026-02-10 10:09:44 +00:00
37277b2764 chore(i18n): Added translation using Weblate (Telugu) 2026-02-09 11:03:37 +01:00
ba89772b09 chore(i18n): Translated using Weblate (Turkish)
Currently translated at 100.0% (469 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/tr/
2026-02-07 19:09:44 +00:00
13a0e8e2ab chore(i18n): Translated using Weblate (Italian)
Currently translated at 99.7% (468 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/it/
2026-02-05 18:01:49 +01:00
faddaea403 chore(i18n): Translated using Weblate (Korean)
Currently translated at 100.0% (469 of 469 strings)

Translation: pear-devs/pear-desktop/i18n
Translate-URL: https://hosted.weblate.org/projects/youtube-music/i18n/ko/
2026-02-04 14:02:00 +00:00
f50025f1f6 fix: pin deps 2026-02-03 19:06:04 +09:00
0f3a01718c fix: fix deps 2026-02-03 19:01:36 +09:00
26 changed files with 1157 additions and 454 deletions

View File

@ -19,7 +19,7 @@ jobs:
os: [ macos-26, ubuntu-latest, windows-latest ] os: [ macos-26, ubuntu-latest, windows-latest ]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
@ -92,7 +92,7 @@ jobs:
if: github.repository == 'pear-devs/pear-desktop' && github.ref == 'refs/heads/master' if: github.repository == 'pear-devs/pear-desktop' && github.ref == 'refs/heads/master'
needs: build needs: build
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
@ -163,7 +163,7 @@ jobs:
- name: Commit changelog - name: Commit changelog
if: ${{ env.VERSION_HASH == '' }} if: ${{ env.VERSION_HASH == '' }}
uses: stefanzweifel/git-auto-commit-action@v6 uses: stefanzweifel/git-auto-commit-action@v7
with: with:
commit_message: Update changelog for ${{ env.VERSION_TAG }} commit_message: Update changelog for ${{ env.VERSION_TAG }}
file_pattern: "changelog.md" file_pattern: "changelog.md"

View File

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

View File

@ -33,7 +33,7 @@ jobs:
os: [macos-latest, ubuntu-latest, windows-latest] os: [macos-latest, ubuntu-latest, windows-latest]
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4
@ -87,7 +87,7 @@ jobs:
pnpm dist:win pnpm dist:win
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v6
with: with:
name: build-artifacts-${{ matrix.os }} name: build-artifacts-${{ matrix.os }}
path: pack/ path: pack/

View File

@ -15,7 +15,7 @@ jobs:
pull-requests: write pull-requests: write
checks: write checks: write
steps: steps:
- uses: actions/checkout@v5 - uses: actions/checkout@v6
with: with:
ref: ${{ github.event.pull_request.head.sha }} ref: ${{ github.event.pull_request.head.sha }}

View File

@ -51,6 +51,7 @@
- [Translation](#translation) - [Translation](#translation)
- [Download](#download) - [Download](#download)
- [Arch Linux](#arch-linux) - [Arch Linux](#arch-linux)
- [Solus](#solus)
- [MacOS](#macos) - [MacOS](#macos)
- [Windows](#windows) - [Windows](#windows)
- [How to install without a network connection? (in Windows)](#how-to-install-without-a-network-connection-in-windows) - [How to install without a network connection? (in Windows)](#how-to-install-without-a-network-connection-in-windows)
@ -84,6 +85,12 @@ latest version.
Install the [`pear-desktop`](https://aur.archlinux.org/packages/pear-desktop) package from the AUR. For AUR installation instructions, take a look at Install the [`pear-desktop`](https://aur.archlinux.org/packages/pear-desktop) package from the AUR. For AUR installation instructions, take a look at
this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages). this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
### [Solus](https://getsol.us/)
```bash
sudo eopkg install pear-desktop
```
### macOS ### macOS
You can install the app using Homebrew (see the [cask definition](https://github.com/pear-devs/homebrew-pear)): You can install the app using Homebrew (see the [cask definition](https://github.com/pear-devs/homebrew-pear)):

View File

@ -1,9 +1,9 @@
{ {
"name": "youtube-music", "name": "\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063",
"desktopName": "com.github.th_ch.youtube_music", "desktopName": "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063",
"productName": "YouTube Music", "productName": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063",
"version": "3.11.0", "version": "3.11.0",
"description": "YouTube Music Desktop App - including custom plugins", "description": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App - including custom plugins",
"main": "./dist/main/index.js", "main": "./dist/main/index.js",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
@ -72,24 +72,26 @@
"@foobar404/wave": "2.0.5", "@foobar404/wave": "2.0.5",
"@ghostery/adblocker-electron": "2.13.4", "@ghostery/adblocker-electron": "2.13.4",
"@ghostery/adblocker-electron-preload": "2.13.4", "@ghostery/adblocker-electron-preload": "2.13.4",
"@hono/node-server": "1.19.9", "@hono/node-server": "1.19.10",
"@hono/node-ws": "1.3.0", "@hono/node-ws": "1.3.0",
"@hono/swagger-ui": "0.5.3", "@hono/swagger-ui": "0.5.3",
"@hono/zod-openapi": "1.2.1", "@hono/zod-openapi": "1.2.2",
"@hono/zod-validator": "0.7.6", "@hono/zod-validator": "0.7.6",
"@indic-transliteration/sanscript": "1.3.3",
"@jellybrick/dbus-next": "0.10.3", "@jellybrick/dbus-next": "0.10.3",
"@jellybrick/electron-better-web-request": "2.0.0", "@jellybrick/electron-better-web-request": "2.0.0",
"@jellybrick/mpris-service": "2.1.5", "@jellybrick/mpris-service": "2.1.5",
"@jimp/plugin-color": "1.6.0", "@jimp/plugin-color": "1.6.0",
"@mdui/icons": "^1.0.3", "@mdui/icons": "1.0.3",
"@skyra/jaro-winkler": "1.1.1", "@skyra/jaro-winkler": "1.1.1",
"@xhayper/discord-rpc": "1.3.0", "@xhayper/discord-rpc": "1.3.0",
"async-mutex": "0.5.0", "async-mutex": "0.5.0",
"bgutils-js": "3.2.0", "bgutils-js": "3.2.0",
"butterchurn": "3.0.0-beta.5", "butterchurn": "3.0.0-beta.5",
"butterchurn-presets": "3.0.0-beta.4", "butterchurn-presets": "3.0.0-beta.4",
"chinese-conv": "^4.0.0",
"color": "5.0.3", "color": "5.0.3",
"conf": "15.0.2", "conf": "15.1.0",
"custom-electron-prompt": "1.6.1", "custom-electron-prompt": "1.6.1",
"deepmerge-ts": "7.1.5", "deepmerge-ts": "7.1.5",
"electron-debug": "4.1.0", "electron-debug": "4.1.0",
@ -105,10 +107,10 @@
"filenamify": "7.0.1", "filenamify": "7.0.1",
"hanja": "1.1.5", "hanja": "1.1.5",
"happy-dom": "20.5.0", "happy-dom": "20.5.0",
"hono": "4.11.7", "hono": "4.11.10",
"howler": "2.2.4", "howler": "2.2.4",
"html-to-text": "9.0.5", "html-to-text": "9.0.5",
"i18next": "25.8.0", "i18next": "25.8.13",
"jimp": "1.6.0", "jimp": "1.6.0",
"keyboardevent-from-electron-accelerator": "2.0.0", "keyboardevent-from-electron-accelerator": "2.0.0",
"keyboardevents-areequal": "0.2.2", "keyboardevents-areequal": "0.2.2",
@ -120,7 +122,8 @@
"node-html-parser": "7.0.2", "node-html-parser": "7.0.2",
"node-id3": "0.2.9", "node-id3": "0.2.9",
"peerjs": "1.5.5", "peerjs": "1.5.5",
"semver": "7.7.3", "pinyin-pro": "^3.27.0",
"semver": "7.7.4",
"serve": "14.2.5", "serve": "14.2.5",
"socks": "2.8.7", "socks": "2.8.7",
"solid-element": "1.9.1", "solid-element": "1.9.1",
@ -128,19 +131,18 @@
"solid-js": "1.9.11", "solid-js": "1.9.11",
"solid-styled-components": "0.28.5", "solid-styled-components": "0.28.5",
"solid-transition-group": "0.3.0", "solid-transition-group": "0.3.0",
"tiny-pinyin": "1.3.2",
"tinyld": "1.3.4", "tinyld": "1.3.4",
"virtua": "0.48.5", "virtua": "0.48.5",
"vudio": "2.1.1", "vudio": "2.1.1",
"x11": "2.3.0", "x11": "2.3.0",
"youtubei.js": "^16.0.1", "youtubei.js": "16.0.1",
"zod": "4.3.6" "zod": "4.3.6"
}, },
"devDependencies": { "devDependencies": {
"@electron-toolkit/tsconfig": "1.0.1", "@electron-toolkit/tsconfig": "2.0.0",
"@eslint/js": "9.39.2", "@eslint/js": "9.39.3",
"@malept/flatpak-bundler": "0.4.0", "@malept/flatpak-bundler": "0.4.0",
"@playwright/test": "1.58.1", "@playwright/test": "1.58.2",
"@stylistic/eslint-plugin": "5.7.1", "@stylistic/eslint-plugin": "5.7.1",
"@total-typescript/ts-reset": "0.6.1", "@total-typescript/ts-reset": "0.6.1",
"@types/electron-localshortcut": "3.1.3", "@types/electron-localshortcut": "3.1.3",
@ -152,20 +154,20 @@
"builtin-modules": "5.0.0", "builtin-modules": "5.0.0",
"cross-env": "10.1.0", "cross-env": "10.1.0",
"del-cli": "7.0.0", "del-cli": "7.0.0",
"discord-api-types": "0.38.38", "discord-api-types": "0.38.40",
"electron": "40.1.0", "electron": "40.1.0",
"electron-builder": "26.7.0", "electron-builder": "26.7.0",
"electron-builder-squirrel-windows": "26.7.0", "electron-builder-squirrel-windows": "26.7.0",
"electron-devtools-installer": "4.0.0", "electron-devtools-installer": "4.0.0",
"electron-vite": "5.0.0", "electron-vite": "5.0.0",
"eslint": "9.39.2", "eslint": "9.39.3",
"eslint-config-prettier": "10.1.8", "eslint-config-prettier": "10.1.8",
"eslint-import-resolver-exports": "1.0.0-beta.5", "eslint-import-resolver-exports": "1.0.0-beta.5",
"eslint-import-resolver-typescript": "4.4.4", "eslint-import-resolver-typescript": "4.4.4",
"eslint-plugin-import": "2.32.0", "eslint-plugin-import": "2.32.0",
"eslint-plugin-prettier": "5.5.5", "eslint-plugin-prettier": "5.5.5",
"eslint-plugin-solid": "0.14.5", "eslint-plugin-solid": "0.14.5",
"glob": "13.0.0", "glob": "13.0.6",
"node-gyp": "12.2.0", "node-gyp": "12.2.0",
"ts-morph": "27.0.2", "ts-morph": "27.0.2",
"typescript": "5.9.3", "typescript": "5.9.3",

474
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -161,7 +161,8 @@
"default": "Standard", "default": "Standard",
"force-show": "Zeigen erzwungen", "force-show": "Zeigen erzwungen",
"hide": "Versteckt", "hide": "Versteckt",
"label": "Gefällt mir-Knopf" "label": "Gefällt mir-Knopf",
"swap": "Gefällt mir-Knopf Reihenfolge ändern"
}, },
"remove-upgrade-button": "Upgrade-Schaltfläche entfernen", "remove-upgrade-button": "Upgrade-Schaltfläche entfernen",
"theme": { "theme": {
@ -412,6 +413,17 @@
"no-captions": "Keine Untertitel für dieses Lied verfügbar" "no-captions": "Keine Untertitel für dieses Lied verfügbar"
} }
}, },
"clock": {
"description": "Füge eine Uhr der Navigationsleiste hinzu",
"menu": {
"format": {
"24-hour-format": "24-Stunden Format",
"display-seconds": "Sekunden anzeigen",
"label": "Format"
}
},
"name": "Uhr"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Seitenleiste immer in den kompakten Modus setzen", "description": "Seitenleiste immer in den kompakten Modus setzen",
"name": "Kompakte Seitenleiste" "name": "Kompakte Seitenleiste"
@ -830,6 +842,24 @@
"not-found": "⚠️ Kein Text für diesen Song gefunden." "not-found": "⚠️ Kein Text für diesen Song gefunden."
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "Chinesische Zeichen Umwandeln",
"submenu": {
"disabled": {
"label": "Deaktiviert",
"tooltip": "Chinesische Zeichenkonvertierung deaktivieren"
},
"simplified-to-traditional": {
"label": "Vereinfacht zu Traditionell",
"tooltip": "Vereinfachtes Chinesisch in traditionelles Chinesisch umwandeln"
},
"traditional-to-simplified": {
"label": "Traditionell zu Vereinfacht",
"tooltip": "Traditionelles Chinesisch in vereinfachtes Chinesisch umwandeln"
}
},
"tooltip": "Chinesische Zeichen in traditionell oder vereinfacht umwandeln"
},
"default-text-string": { "default-text-string": {
"label": "Standardzeichen zwischen Texten", "label": "Standardzeichen zwischen Texten",
"tooltip": "Standardzeichen für die Lücke zwischen Songtexten auswählen" "tooltip": "Standardzeichen für die Lücke zwischen Songtexten auswählen"

View File

@ -2,14 +2,14 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "Απέτυχε η εκτέλεση του πρόσθετου {{pluginName}}::{{contextName}}", "execute-failed": "Απέτυχε η εκτέλεση του plugin {{pluginName}}::{{contextName}}",
"executed-at-ms": "Το πρόσθετο {{pluginName}}::{{contextName}} εκτελέστηκε σε {{ms}}ms", "executed-at-ms": "Το plugin {{pluginName}}::{{contextName}} εκτελέστηκε σε {{ms}}ms",
"initialize-failed": "Απέτυχε η αρχικοποίηση του πρόσθετου \"{{pluginName}}\"", "initialize-failed": "Απέτυχε η εκκίνηση του plugin \"{{pluginName}}\"",
"load-all": "Φόρτωση όλων των πρόσθετων", "load-all": "Φόρτωση όλων των plugin",
"load-failed": "Απέτυχε η φόρτωση του πρόσθετου \"{{pluginName}}\"", "load-failed": "Απέτυχε η φόρτωση του plugin \"{{pluginName}}\"",
"loaded": "Το πρόσθετο \"{{pluginName}}\" φορτώθηκε", "loaded": "Το plugin \"{{pluginName}}\" φορτώθηκε",
"unload-failed": "Απέτυχε η κατάργηση φόρτωσης του πρόσθετου \"{{pluginName}}\"", "unload-failed": "Απέτυχε η εκφόρτωση του plugin \"{{pluginName}}\"",
"unloaded": "Η φόρτωση του πρόσθετου \"{{pluginName}}\" καταργήθηκε" "unloaded": "Το plugin \"{{pluginName}}\" εκφορτώθηκε"
} }
} }
}, },
@ -30,7 +30,7 @@
"receive-command": "Λήφθηκε εντολή μέσω πρωτοκόλλου: \"{{command}}\"" "receive-command": "Λήφθηκε εντολή μέσω πρωτοκόλλου: \"{{command}}\""
}, },
"theme": { "theme": {
"css-file-not-found": "Το αρχείο CSS \"{{cssFile}}\" δεν υπάρχει, αγνόηση" "css-file-not-found": "Το αρχείο CSS \"{{cssFile}}\" δεν υπάρχει, θα αγνοηθεί"
}, },
"unresponsive": { "unresponsive": {
"details": "Σφάλμα απόκρισης!\n{{error}}" "details": "Σφάλμα απόκρισης!\n{{error}}"
@ -44,7 +44,7 @@
}, },
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Το μενού είναι κρυμμένο, χρησιμοποιήστε το 'Alt' για να το εμφανίσετε (ή το 'Escape' αν χρησιμοποιείτε το μενού εφαρμογής)", "detail": "Το μενού είναι κρυμμένο, χρησιμοποιήστε το 'Alt' για να το εμφανίσετε (ή το 'Escape' αν χρησιμοποιείτε το μενού εντός εφαρμογής)",
"message": "Η απόκρυψη μενού είναι ενεργοποιημένη", "message": "Η απόκρυψη μενού είναι ενεργοποιημένη",
"title": "Η απόκρυψη μενού ενεργοποιήθηκε" "title": "Η απόκρυψη μενού ενεργοποιήθηκε"
}, },
@ -53,8 +53,8 @@
"later": "Αργότερα", "later": "Αργότερα",
"restart-now": "Επανεκκίνηση τώρα" "restart-now": "Επανεκκίνηση τώρα"
}, },
"detail": "Το πρόσθετο \"{{pluginName}}\" απαιτεί επανεκκίνηση για να ισχύσει", "detail": "Το plugin \"{{pluginName}}\" απαιτεί επανεκκίνηση για να ενεργοποιηθεί",
"message": "Το \"{{pluginName}}\" χρειάζεται επανεκκίνηση", "message": "Το plugin \"{{pluginName}}\" χρειάζεται επανεκκίνηση",
"title": "Απαιτείται επανεκκίνηση" "title": "Απαιτείται επανεκκίνηση"
}, },
"unresponsive": { "unresponsive": {
@ -63,7 +63,7 @@
"relaunch": "Επανεκκίνηση", "relaunch": "Επανεκκίνηση",
"wait": "Αναμονή" "wait": "Αναμονή"
}, },
"detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλώ επιλέξτε τι να κάνετε:", "detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλώ επιλέξτε τι να συμβεί:",
"message": "Η εφαρμογή δεν αποκρίνεται", "message": "Η εφαρμογή δεν αποκρίνεται",
"title": "Το παράθυρο δεν αποκρίνεται" "title": "Το παράθυρο δεν αποκρίνεται"
}, },
@ -71,11 +71,11 @@
"buttons": { "buttons": {
"disable": "Απενεργοποίηση ενημερώσεων", "disable": "Απενεργοποίηση ενημερώσεων",
"download": "Λήψη", "download": "Λήψη",
"ok": "OK" "ok": "Εντάξει"
}, },
"detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από το {{downloadLink}}", "detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από τον σύνδεσμο {{downloadLink}}",
"message": "Μια νέα έκδοση είναι διαθέσιμη", "message": "Μια νέα έκδοση είναι διαθέσιμη",
"title": "Διατίθεται ενημέρωση" "title": "Υπάρχει διαθέσιμη ενημέρωση"
} }
}, },
"menu": { "menu": {
@ -97,26 +97,26 @@
"label": "Επιλογές για προχωρημένους", "label": "Επιλογές για προχωρημένους",
"submenu": { "submenu": {
"auto-reset-app-cache": "Επαναφορά μνήμης cache εφαρμογής όταν η εφαρμογή ξεκινά", "auto-reset-app-cache": "Επαναφορά μνήμης cache εφαρμογής όταν η εφαρμογή ξεκινά",
"disable-hardware-acceleration": "Απενεργοποίηση επιτάχυνσης υλικού", "disable-hardware-acceleration": "Απενεργοποίηση επιτάχυνσης από υπολογιστή",
"edit-config-json": "Επεξεργασία του config.json", "edit-config-json": "Επεξεργασία του config.json",
"override-user-agent": "Αντικατάσταση του User-Agent", "override-user-agent": "Παράκαμψη του User-Agent",
"restart-on-config-changes": "Επανεκκίνηση σε αλλαγές του config", "restart-on-config-changes": "Επανεκκίνηση σε αλλαγές του config",
"set-proxy": { "set-proxy": {
"label": "Ορισμός μεσολάβησης", "label": "Ορισμός μεσολβητή",
"prompt": { "prompt": {
"label": "Εισαγωγή διεύθυνσης μεσολάβησης: (αφήστε κενό για απενεργοποίηση)", "label": "Εισαγωγή διεύθυνσης μεσολαβητή: (αφήστε κενό για απενεργοποίηση)",
"placeholder": "Παράδειγμα: SOCKS5://127.0.0.1:9999", "placeholder": "Παράδειγμα: SOCKS5://127.0.0.1:9999",
"title": "Ορισμός μεσολάβησης" "title": "Ρύθμιση μεσολαβητή"
} }
}, },
"toggle-dev-tools": "Εναλλαγή DevTools" "toggle-dev-tools": "Ενεργοποίηση/Απενεργοποίηση DevTools"
} }
}, },
"always-on-top": "Πάντα σε πρώτο πλάνο", "always-on-top": "Πάντα σε ανώτερο πλάνο",
"auto-update": "Αυτόματη ενημέρωση", "auto-update": "Αυτόματη ενημέρωση",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "Το μενού θα κρυφτεί στην επόμενη εκκίνηση, χρησιμοποιήστε [Alt] για να το εμφανίσετε (ή το πλήκτρο backtick [`] αν χρησιμοποιείτε το μενού εφαρμογής)", "message": "Το μενού θα κρυφτεί στην επόμενη εκκίνηση, χρησιμοποιήστε [Alt] για να το εμφανίσετε (ή το πλήκτρο backtick [`] αν χρησιμοποιείτε το μενού εντός εφαρμογής)",
"title": "Η απόκρυψη μενού ενεργοποιήθηκε" "title": "Η απόκρυψη μενού ενεργοποιήθηκε"
}, },
"label": "Απόκρυψη μενού" "label": "Απόκρυψη μενού"
@ -133,7 +133,7 @@
}, },
"resume-on-start": "Συνέχιση τελευταίου τραγουδιού όταν η εφαρμογή ξεκινά", "resume-on-start": "Συνέχιση τελευταίου τραγουδιού όταν η εφαρμογή ξεκινά",
"single-instance-lock": "Κλείδωμα μοναδικής εκδοχής", "single-instance-lock": "Κλείδωμα μοναδικής εκδοχής",
"start-at-login": "Έναρξη κατά τη σύνδεση", "start-at-login": "Έναρξη κατά την είσοδο",
"starting-page": { "starting-page": {
"label": "Αρχική σελίδα", "label": "Αρχική σελίδα",
"unset": "Κατάργηση ορισμού" "unset": "Κατάργηση ορισμού"
@ -161,7 +161,8 @@
"default": "Προεπιλογή", "default": "Προεπιλογή",
"force-show": "Επιβολή εμφάνισης", "force-show": "Επιβολή εμφάνισης",
"hide": "Απόκρυψη", "hide": "Απόκρυψη",
"label": "Κουμπιά Μου αρέσει" "label": "Κουμπιά like",
"swap": "Εναλλαγή της σειράς των κουμπιών like"
}, },
"remove-upgrade-button": "Αφαίρεση κουμπιού αναβάθμισης", "remove-upgrade-button": "Αφαίρεση κουμπιού αναβάθμισης",
"theme": { "theme": {

View File

@ -891,6 +891,24 @@
"show-time-codes": { "show-time-codes": {
"label": "Show time codes", "label": "Show time codes",
"tooltip": "Show the time codes next to the lyrics" "tooltip": "Show the time codes next to the lyrics"
},
"convert-chinese-character": {
"label": "Convert Chinese character",
"submenu": {
"disabled": {
"label": "Disabled",
"tooltip": "Disable Chinese character conversion"
},
"simplified-to-traditional": {
"label": "Simplified to Traditional",
"tooltip": "Convert Simplified Chinese to Traditional Chinese"
},
"traditional-to-simplified": {
"label": "Traditional to Simplified",
"tooltip": "Convert Traditional Chinese to Simplified Chinese"
}
},
"tooltip": "Convert Chinese character to Traditional or Simplified"
} }
}, },
"name": "Synced Lyrics", "name": "Synced Lyrics",

View File

@ -161,7 +161,8 @@
"default": "Predeterminado", "default": "Predeterminado",
"force-show": "Forzar la visualización", "force-show": "Forzar la visualización",
"hide": "Ocultar", "hide": "Ocultar",
"label": "Botones de \"Me Gusta\"" "label": "Botones de \"Me Gusta\"",
"swap": "Intercambiar el orden de los botones de \"Me Gusta\""
}, },
"remove-upgrade-button": "Eliminar el botón de Actualización", "remove-upgrade-button": "Eliminar el botón de Actualización",
"theme": { "theme": {
@ -322,10 +323,10 @@
"label": "Nombre del host" "label": "Nombre del host"
}, },
"https": { "https": {
"label": "HTTPS & Certificados", "label": "HTTPS y Certificados",
"submenu": { "submenu": {
"cert": { "cert": {
"dialogTitle": "Selecciona el archivo de certificado HTTPS", "dialogTitle": "Seleccione el archivo de certificado HTTPS",
"label": "Archivo de certificado (.crt/.pem)" "label": "Archivo de certificado (.crt/.pem)"
}, },
"enable-https": { "enable-https": {
@ -412,6 +413,17 @@
"no-captions": "Sin subtítulos para ésta canción" "no-captions": "Sin subtítulos para ésta canción"
} }
}, },
"clock": {
"description": "Añade un reloj a la barra de navegación",
"menu": {
"format": {
"24-hour-format": "Formato 24 horas",
"display-seconds": "Mostrar segundos",
"label": "Formato"
}
},
"name": "Reloj"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Establecer siempre la barra lateral en modo compacto", "description": "Establecer siempre la barra lateral en modo compacto",
"name": "Barra lateral compacta" "name": "Barra lateral compacta"
@ -830,6 +842,24 @@
"not-found": "⚠️ No se han encontrado letras para esta canción." "not-found": "⚠️ No se han encontrado letras para esta canción."
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "Convertir carácter Chino",
"submenu": {
"disabled": {
"label": "Deshabilitado",
"tooltip": "Deshabilitar conversión de caracteres Chinos"
},
"simplified-to-traditional": {
"label": "Simplificar a Tradicional",
"tooltip": "Convertir Chino Simplifcado en Chino Tradicional"
},
"traditional-to-simplified": {
"label": "Tradicional a Simplificado",
"tooltip": "Convertir Chino Tradicional a Chino Simplificado"
}
},
"tooltip": "Convertir carácter Chino a Tradicional o Simplificado"
},
"default-text-string": { "default-text-string": {
"label": "Carácter predeterminado entre letras", "label": "Carácter predeterminado entre letras",
"tooltip": "Elige el carácter predeterminado que se utilizará para el espacio entre letras" "tooltip": "Elige el carácter predeterminado que se utilizará para el espacio entre letras"

View File

@ -842,6 +842,24 @@
"not-found": "⚠️ Aucune paroles trouvées pour ce titre." "not-found": "⚠️ Aucune paroles trouvées pour ce titre."
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "Convertir les caractères Chinois",
"submenu": {
"disabled": {
"label": "Désactivé",
"tooltip": "Désactiver la conversion des caractères Chinois"
},
"simplified-to-traditional": {
"label": "Simplifié a Traditionnel",
"tooltip": "Convertir le Chinois Simplifié au Chinois Traditionnel"
},
"traditional-to-simplified": {
"label": "Traditionnel a Simplifié",
"tooltip": "Convertir le Chinois Traditionnel au Chinois Simplifié"
}
},
"tooltip": "Convertir les caractères Chinois en Traditionnel ou Simplifié"
},
"default-text-string": { "default-text-string": {
"label": "Caractère par défaut entre les paroles", "label": "Caractère par défaut entre les paroles",
"tooltip": "Choisi le caractère par défaut à utiliser pour les blancs entre les paroles" "tooltip": "Choisi le caractère par défaut à utiliser pour les blancs entre les paroles"

View File

@ -161,7 +161,8 @@
"default": "Predefinito", "default": "Predefinito",
"force-show": "Forza la visualizzazione", "force-show": "Forza la visualizzazione",
"hide": "Nascondi", "hide": "Nascondi",
"label": "Pulsanti Like" "label": "Pulsanti Like",
"swap": "Scambia l'ordine dei pulsanti like"
}, },
"remove-upgrade-button": "Rimuovi il pulsante aggiorna", "remove-upgrade-button": "Rimuovi il pulsante aggiorna",
"theme": { "theme": {
@ -412,6 +413,17 @@
"no-captions": "Nessun sottotitolo disponibile per questa canzone" "no-captions": "Nessun sottotitolo disponibile per questa canzone"
} }
}, },
"clock": {
"description": "Aggiungi un orologio alla barra di navigazione",
"menu": {
"format": {
"24-hour-format": "Formato in 24 ore",
"display-seconds": "Mostra Secondi",
"label": "Formato"
}
},
"name": "Orologio"
},
"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"

View File

@ -2,13 +2,13 @@
"common": { "common": {
"console": { "console": {
"plugins": { "plugins": {
"execute-failed": "확장 {{pluginName}}::{{contextName}}을(를) 실행하지 못했습니다", "execute-failed": "확장 {{pluginName}}::{{contextName}}을(를) 실행 실패함",
"executed-at-ms": "확장 {{pluginName}}::{{contextName}}이 {{ms}}ms 만에 실행됨", "executed-at-ms": "확장 {{pluginName}}::{{contextName}}이 {{ms}}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}}\" 언로드 됨"
} }
} }
@ -21,7 +21,7 @@
"main": { "main": {
"console": { "console": {
"did-finish-load": { "did-finish-load": {
"dev-tools": "로드 완료되었습니다. 개발자 도구가 열렸습니다" "dev-tools": "로드 완료. 개발자 도구 실행됨"
}, },
"i18n": { "i18n": {
"loaded": "국제화 로드됨" "loaded": "국제화 로드됨"
@ -30,32 +30,32 @@
"receive-command": "프로토콜을 통해 명령을 받았습니다: \"{{command}}\"" "receive-command": "프로토콜을 통해 명령을 받았습니다: \"{{command}}\""
}, },
"theme": { "theme": {
"css-file-not-found": "CSS 파일 \"{{cssFile}}\"이(가) 존재하지 않습니다. 무시합니다" "css-file-not-found": "CSS 파일 \"{{cssFile}}\"이(가) 존재하지 않. 무시"
}, },
"unresponsive": { "unresponsive": {
"details": "응답 없음 오류!\n{{error}}" "details": "응답 없음 오류!\n{{error}}"
}, },
"when-ready": { "when-ready": {
"clearing-cache-after-20s": "앱 캐시 지우" "clearing-cache-after-20s": "앱 캐시 지우는 중"
}, },
"window": { "window": {
"tried-to-render-offscreen": "창이 오프스크린 렌더링을 시도했습니다. windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}" "tried-to-render-offscreen": "창이 오프스크린 렌더링을 시도했습니다, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
} }
}, },
"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": {
"later": "나중에 하기", "later": "나중에",
"restart-now": "지금 재시작하기" "restart-now": "지금 재시작하기"
}, },
"detail": "\"{{pluginName}}\" 확장을 적용하려면 재시작해야 합니다", "detail": "\"{{pluginName}}\" 확장을 적용하려면 재시작해야 합니다",
"message": "\"{{pluginName}}\"은(는) 재시작이 필요합니다", "message": "\"{{pluginName}}\"은(는) 재시작이 필요합니다",
"title": "재시작 필요" "title": "재시작 필요"
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
@ -63,17 +63,17 @@
"relaunch": "재시작", "relaunch": "재시작",
"wait": "기다리기" "wait": "기다리기"
}, },
"detail": "불편을 드려 죄송합니다! 방법을 선택해 주세요:", "detail": "불편을 드려 죄송합니다! 다음 중 하나를 선택해 주세요.",
"message": "애플리케이션이 응답하지 않습니다", "message": "애플리케이션이 응답하지 않습니다",
"title": "창이 응답하지 않음" "title": "창이 응답하지 않음"
}, },
"update-available": { "update-available": {
"buttons": { "buttons": {
"disable": "업데이트 비활성화", "disable": "업데이트 비활성화하기",
"download": "다운로드", "download": "다운로드",
"ok": "확인" "ok": "확인"
}, },
"detail": "새 버전이 출시되었습니다. {{downloadLink}}에서 다운로드할 수 있습니다", "detail": "새 버전 {{downloadLink}}에서 설치할 수 있습니다",
"message": "새 버전을 사용할 수 있습니다", "message": "새 버전을 사용할 수 있습니다",
"title": "업데이트 사용 가능" "title": "업데이트 사용 가능"
} }
@ -96,23 +96,23 @@
"advanced-options": { "advanced-options": {
"label": "고급 설정", "label": "고급 설정",
"submenu": { "submenu": {
"auto-reset-app-cache": "앱 시작 시 앱 캐시 초기화", "auto-reset-app-cache": "앱 시작 시 앱 캐시 초기화하기",
"disable-hardware-acceleration": "하드웨어 가속 비활성화", "disable-hardware-acceleration": "하드웨어 가속 비활성화",
"edit-config-json": "config.json 편집", "edit-config-json": "config.json 편집",
"override-user-agent": "User-Agent 재정의", "override-user-agent": "User-Agent 재정의하기",
"restart-on-config-changes": "설정 변경 시 재시작", "restart-on-config-changes": "설정 변경 시 재시작하기",
"set-proxy": { "set-proxy": {
"label": "프록시 설정", "label": "프록시 설정하기",
"prompt": { "prompt": {
"label": "프록시 주소를 입력하세요: (비워두면 비활성화됨)", "label": "프록시 주소를 입력하세요: (비어있을 시 비활성화됨)",
"placeholder": "예제: SOCKS5://127.0.0.1:9999", "placeholder": "예제: SOCKS5://127.0.0.1:9999",
"title": "프록시 설정" "title": "프록시 설정하기"
} }
}, },
"toggle-dev-tools": "DevTools 열기" "toggle-dev-tools": "DevTools 열기"
} }
}, },
"always-on-top": "항상 최상단에 표시", "always-on-top": "항상 최상단에 표시하기",
"auto-update": "자동 업데이트", "auto-update": "자동 업데이트",
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
@ -153,15 +153,16 @@
"custom-window-title": { "custom-window-title": {
"label": "사용자 정의 앱 제목", "label": "사용자 정의 앱 제목",
"prompt": { "prompt": {
"label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)", "label": "앱 제목으로 표시할 내용: (빈칸일 시 비활성화)",
"placeholder": "예: {{applicationName}}" "placeholder": "예: {{applicationName}}"
} }
}, },
"like-buttons": { "like-buttons": {
"default": "기본", "default": "기본",
"force-show": "강제로 표시", "force-show": "강제로 표시하기",
"hide": "숨기기", "hide": "숨기기",
"label": "좋아요 버튼" "label": "좋아요 버튼",
"swap": "\"좋아요\" 버튼 순서 변경하기"
}, },
"remove-upgrade-button": "업그레이드 버튼 제거", "remove-upgrade-button": "업그레이드 버튼 제거",
"theme": { "theme": {
@ -186,7 +187,7 @@
"plugins": { "plugins": {
"enabled": "활성화", "enabled": "활성화",
"label": "확장", "label": "확장",
"new": "NEW" "new": "새 플러그인"
}, },
"view": { "view": {
"label": "보기", "label": "보기",
@ -215,7 +216,7 @@
}, },
"plugins": { "plugins": {
"ad-speedup": { "ad-speedup": {
"description": "광고가 재생될 때, 오디오가 음소거고 재생 속도 16배로 설정니다", "description": "광고가 재생될 때 소리를 음소거고 재생 속도 16배로 설정니다",
"name": "광고 배속" "name": "광고 배속"
}, },
"adblocker": { "adblocker": {
@ -243,7 +244,7 @@
"name": "앨범 컬러 기반 테마" "name": "앨범 컬러 기반 테마"
}, },
"ambient-mode": { "ambient-mode": {
"description": "영상의 간접 조명을 화면 배경에 투사합니다", "description": "영상의 간접 조명을 화면 배경에 투사하여 조명 효과를 적용합니다",
"menu": { "menu": {
"blur-amount": { "blur-amount": {
"label": "흐림 효과 강도", "label": "흐림 효과 강도",
@ -252,7 +253,7 @@
} }
}, },
"buffer": { "buffer": {
"label": "버퍼", "label": "버퍼",
"submenu": { "submenu": {
"buffer": "{{buffer}}" "buffer": "{{buffer}}"
} }
@ -289,7 +290,7 @@
}, },
"amuse": { "amuse": {
"description": "6K Labs Amuse의 'now playing' 위젯에 {{applicationName}} 지원 추가", "description": "6K Labs Amuse의 'now playing' 위젯에 {{applicationName}} 지원 추가",
"name": "Amuseio AB", "name": "Amuse (어뮤즈)",
"response": { "response": {
"query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요." "query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요."
} }
@ -358,10 +359,10 @@
"name": "오디오 컴프레서" "name": "오디오 컴프레서"
}, },
"auth-proxy-adapter": { "auth-proxy-adapter": {
"description": "아이디/패스워드가 필요한 프록시를 지원합니다", "description": "인증이 필요한 프록시를 지원합니다",
"menu": { "menu": {
"disable": "프록시 어댑터 차단", "disable": "프록시 어댑터 비활성화",
"enable": "프록시 어댑터 허용", "enable": "프록시 어댑터 활성화",
"hostname": { "hostname": {
"label": "호스트 명" "label": "호스트 명"
}, },
@ -372,11 +373,11 @@
"name": "권한 프록시 어댑터", "name": "권한 프록시 어댑터",
"prompt": { "prompt": {
"hostname": { "hostname": {
"label": "로컬 프록시 서버의 호스트명 을 입력 해주세요 (재시이 필요합니다):", "label": "로컬 프록시 서버의 호스트명을 입력해주세요 (재시이 필요합니다):",
"title": "프록시 호스트명" "title": "프록시 호스트명"
}, },
"port": { "port": {
"label": "로컬 프록시 서버의 포트를 입력 해주세요 (재시이 필요합니다):", "label": "로컬 프록시 서버의 포트를 입력 해주세요 (재시이 필요합니다):",
"title": "프록시 포트" "title": "프록시 포트"
} }
} }
@ -386,7 +387,7 @@
"name": "탐색 바 흐림 효과" "name": "탐색 바 흐림 효과"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "음악 플레이어의 연령 확인 우회합니다", "description": "플레이어의 연령 확인 인증 우회",
"name": "나이 제한 우회" "name": "나이 제한 우회"
}, },
"captions-selector": { "captions-selector": {
@ -408,10 +409,21 @@
}, },
"toast": { "toast": {
"caption-changed": "자막 언어가 {{language}}(으)로 변경되었습니다", "caption-changed": "자막 언어가 {{language}}(으)로 변경되었습니다",
"caption-disabled": "자막 비활성화 되었습니다", "caption-disabled": "자막 비활성화",
"no-captions": "이 곡에는 자막이 없습니다" "no-captions": "이 곡에는 자막이 없습니다"
} }
}, },
"clock": {
"description": "네비게이션 바 옆 시계 추가하기",
"menu": {
"format": {
"24-hour-format": "24시간 형식",
"display-seconds": "초 표시하기",
"label": "형식"
}
},
"name": "시계"
},
"compact-sidebar": { "compact-sidebar": {
"description": "사이드바를 항상 컴팩트 모드로 설정합니다", "description": "사이드바를 항상 컴팩트 모드로 설정합니다",
"name": "컴팩트 사이드바" "name": "컴팩트 사이드바"
@ -439,9 +451,9 @@
} }
}, },
"custom-output-device": { "custom-output-device": {
"description": "미디어 출력 장치 구성", "description": "미디어 출력할­ 장치 구성하기",
"menu": { "menu": {
"device-selector": "장치 선택" "device-selector": "장치 선택하세요"
}, },
"name": "출력 장치 커스텀", "name": "출력 장치 커스텀",
"prompt": { "prompt": {
@ -461,16 +473,16 @@
"discord": { "discord": {
"backend": { "backend": {
"already-connected": "활성화 된 연결에 연결을 시도했습니다", "already-connected": "활성화 된 연결에 연결을 시도했습니다",
"connected": "디스코드에 연결됨", "connected": "Discord에 연결됨",
"disconnected": "디스코드에서 연결이 끊김" "disconnected": "Discord에서 연결이 끊김"
}, },
"description": "활동 상태를 사용하여 친구들에게 내가 듣는 음악을 보여주세요", "description": "Rich Presence를 사용하여 친구들에게 내가 듣는 음악을 보여주세요",
"menu": { "menu": {
"auto-reconnect": "자동 연결", "auto-reconnect": "자동 연결",
"clear-activity": "활동 제거", "clear-activity": "활동 제거",
"clear-activity-after-timeout": "시간 초과 시 활동 제거", "clear-activity-after-timeout": "시간 초과 시 활동 제거",
"connected": "연결 됨", "connected": "연결됨",
"disconnected": "연결 해제 됨", "disconnected": "연결 해제됨",
"hide-duration-left": "남은 재생 시간 숨기기", "hide-duration-left": "남은 재생 시간 숨기기",
"hide-github-button": "GitHub 링크 버튼 숨기기", "hide-github-button": "GitHub 링크 버튼 숨기기",
"play-on-application": "{{applicationName}} 에서 재생", "play-on-application": "{{applicationName}} 에서 재생",
@ -484,7 +496,7 @@
} }
} }
}, },
"name": "디스코드 활동 상태", "name": "Discord 활동 상태",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "비활성 시간 제한을 초 단위로 입력하세요:", "label": "비활성 시간 제한을 초 단위로 입력하세요:",
@ -499,7 +511,7 @@
"buttons": { "buttons": {
"ok": "확인" "ok": "확인"
}, },
"message": "죄송합니다. 다운로드가 실패했습니다…", "message": "앗! 죄송합니다. 다운로드가 실패했습니다…",
"title": "다운로드 중 오류 발생!" "title": "다운로드 중 오류 발생!"
}, },
"start-download-playlist": { "start-download-playlist": {
@ -512,7 +524,7 @@
} }
}, },
"feedback": { "feedback": {
"conversion-progress": "변환: {{percent}}%", "conversion-progress": "변환: {{percent}}%",
"converting": "변환 중…", "converting": "변환 중…",
"done": "완료: {{filePath}}", "done": "완료: {{filePath}}",
"download-info": "{{artist}} - {{title}} [{{videoId}} 다운로드 중", "download-info": "{{artist}} - {{title}} [{{videoId}} 다운로드 중",
@ -527,7 +539,7 @@
"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": "재생목록 정보 가져오는 중 오류 발생: 비공개 재생목록 또는 '유튜브 Mix' 재생목록이 아닌지 확인하세요\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}}",

View File

@ -21,19 +21,19 @@
"main": { "main": {
"console": { "console": {
"did-finish-load": { "did-finish-load": {
"dev-tools": "Baigta krauti. \"DevTools\" atidaryta" "dev-tools": "Baigta krauti. DevTools atidaryta"
}, },
"i18n": { "i18n": {
"loaded": "\"i18n\" užkrauta" "loaded": "i18n užkrauta"
}, },
"second-instance": { "second-instance": {
"receive-command": "Gauta komanda per protokolą: \"{{command}}\"" "receive-command": "Gauta komanda per protokolą: {{command}}"
}, },
"theme": { "theme": {
"css-file-not-found": "CSS failas \"{{cssFile}}\" neegzistuoja, ignoruojama" "css-file-not-found": "CSS failas {{cssFile}} neegzistuoja, ignoruojama"
}, },
"unresponsive": { "unresponsive": {
"details": "Nereguojanti paklaida\n{{error}}" "details": "Nereguojanti klaida!\n{{error}}"
}, },
"when-ready": { "when-ready": {
"clearing-cache-after-20s": "Išvaloma programos talpykla" "clearing-cache-after-20s": "Išvaloma programos talpykla"
@ -45,25 +45,25 @@
"dialog": { "dialog": {
"hide-menu-enabled": { "hide-menu-enabled": {
"detail": "Meniu yra paslėpta, naudokite 'Alt', kad ją parodyti (arba 'Escape' jei naudojama programos meniu)", "detail": "Meniu yra paslėpta, naudokite 'Alt', kad ją parodyti (arba 'Escape' jei naudojama programos meniu)",
"message": "\"Paslėpti Meniu\" yra įjungta", "message": "Paslėpti Meniu yra įjungta",
"title": "Įjungta \"Paslėpti Meniu\"" "title": "Įjungta Paslėpti Meniu"
}, },
"need-to-restart": { "need-to-restart": {
"buttons": { "buttons": {
"later": "Vėliau", "later": "Vėliau",
"restart-now": "Perkrauti Dabar" "restart-now": "Perkrauti Dabar"
}, },
"detail": "\"{{pluginName}}\" įskiepis reikalauja perkrovimą, kad veiktų", "detail": "{{pluginName}} įskiepis reikalauja perkrovimą, kad veiktų",
"message": "\"{{pluginName}}\" reikia perkrovimo", "message": "{{pluginName}} reikia perkrovimo",
"title": "Reikiamas perkrovimas" "title": "Reikiamas perkrovimas"
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
"quit": "Išeiti", "quit": "Baigti",
"relaunch": "Perleisti", "relaunch": "Perleisti",
"wait": "Palaukti" "wait": "Palaukti"
}, },
"detail": "Mes apgailestaujame dėl nepatogumų! prašau pasirinkti ką daryti:", "detail": "Mes apgailestaujame dėl nepatogumų! Prašome pasirinkti ką daryti:",
"message": "Programa Neatsako", "message": "Programa Neatsako",
"title": "Langas Neatsako" "title": "Langas Neatsako"
}, },
@ -84,7 +84,7 @@
"label": "Navigacija", "label": "Navigacija",
"submenu": { "submenu": {
"copy-current-url": "Nukopijuoti dabartinį URL", "copy-current-url": "Nukopijuoti dabartinį URL",
"go-back": "Grįžti Atgal", "go-back": "Grįžti atgal",
"go-forward": "Eiti į priekį", "go-forward": "Eiti į priekį",
"quit": "Išeiti", "quit": "Išeiti",
"restart": "Perkrauti programą" "restart": "Perkrauti programą"
@ -97,19 +97,19 @@
"label": "Išplėstiniai nustatymai", "label": "Išplėstiniai nustatymai",
"submenu": { "submenu": {
"auto-reset-app-cache": "Perkrauti programos talpyklą, kai programa paleidžiama", "auto-reset-app-cache": "Perkrauti programos talpyklą, kai programa paleidžiama",
"disable-hardware-acceleration": "Išjungti aparatūros pagreitį", "disable-hardware-acceleration": "Išjungti aparatūros spartinimą",
"edit-config-json": "Redaguoti config.json", "edit-config-json": "Redaguoti config.json",
"override-user-agent": "Perrašyti \"User-Agent\"", "override-user-agent": "Perrašyti User-Agent",
"restart-on-config-changes": "Perkrauti po config pasikeitimo", "restart-on-config-changes": "Perkrauti po config pasikeitimo",
"set-proxy": { "set-proxy": {
"label": "Nustatyti įgaliotajį serverį", "label": "Nustatyti proxy serverį",
"prompt": { "prompt": {
"label": "Įvesti Įgaliotojo serverio adresą: (palikti tuščią, kad išjungti)", "label": "Įvesti proxy serverio adresą: (palikti tuščią, kad išjungti)",
"placeholder": "Pavyzdys: SOCKS5://127.0.0.1:9999", "placeholder": "Pavyzdys: SOCKS5://127.0.0.1:9999",
"title": "Nustatyti įgaliotajį serverį" "title": "Nustatyti proxy serverį"
} }
}, },
"toggle-dev-tools": "Įjungti/Išjungti DevTools" "toggle-dev-tools": "Įjungti/Išjungti DevTools"
} }
}, },
"always-on-top": "Visada viršuje", "always-on-top": "Visada viršuje",
@ -117,7 +117,7 @@
"hide-menu": { "hide-menu": {
"dialog": { "dialog": {
"message": "Meniu bus paslėpta per kitą paleidimą, naudokite [Alt], kad ją parodyti (arba kairinio kirčio ženklą [`] jei naudojama programos meniu)", "message": "Meniu bus paslėpta per kitą paleidimą, naudokite [Alt], kad ją parodyti (arba kairinio kirčio ženklą [`] jei naudojama programos meniu)",
"title": "\"Paslėpti Meniu\" įjungtas" "title": "Paslėpti Meniu įjungtas"
}, },
"label": "Paslėpti Meniu" "label": "Paslėpti Meniu"
}, },
@ -131,7 +131,7 @@
"to-help-translate": "Norite padėti išversti? Paspauskite čia" "to-help-translate": "Norite padėti išversti? Paspauskite čia"
} }
}, },
"resume-on-start": "Tęsti paskutinę dainą, kai programa bus paleista", "resume-on-start": "Programai pasileidus, tęsti paskutinę dainą",
"single-instance-lock": "Vienkartinis užraktas", "single-instance-lock": "Vienkartinis užraktas",
"start-at-login": "Pradėti nuo prisijungimo", "start-at-login": "Pradėti nuo prisijungimo",
"starting-page": { "starting-page": {
@ -153,7 +153,7 @@
"custom-window-title": { "custom-window-title": {
"label": "Pasirinktinis lango pavadinimas", "label": "Pasirinktinis lango pavadinimas",
"prompt": { "prompt": {
"label": "Įveskite pasirinktinį lango pavadinimą: (palikite tuščią, jei norite išjungti)", "label": "Įveskite pasirinktiną lango pavadinimą: (palikite tuščią kad išjungti)",
"placeholder": "Pavyzdys: {{applicationName}}" "placeholder": "Pavyzdys: {{applicationName}}"
} }
}, },
@ -161,9 +161,10 @@
"default": "Numatytasis", "default": "Numatytasis",
"force-show": "Priversti rodyti", "force-show": "Priversti rodyti",
"hide": "Slėpti", "hide": "Slėpti",
"label": "\"Patinka\" mygtukai" "label": "Patinka mygtukai",
"swap": "Sukeisti „Patinka“ mygtukų vietas"
}, },
"remove-upgrade-button": "Nerodyti \"Patobulinti\" mygtuko", "remove-upgrade-button": "Nerodyti Patobulinti mygtuko",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -215,7 +216,7 @@
}, },
"plugins": { "plugins": {
"ad-speedup": { "ad-speedup": {
"description": "Jeigu gros reklama, bus įrašo garsas išjungtas ir pagreitintas 16x", "description": "Jeigu gros reklama, įrašo garsas bus išjungtas ir pagreitintas 16x",
"name": "Reklamos Pagreitinimas" "name": "Reklamos Pagreitinimas"
}, },
"adblocker": { "adblocker": {
@ -226,7 +227,7 @@
"name": "Reklamų blokuotojas" "name": "Reklamų blokuotojas"
}, },
"album-actions": { "album-actions": {
"description": "Prideda Nepatinka, Patinka bei atžymėti Nepatika ir Patinka visoms dainoms grojaraštyje arba albume.", "description": "Prideda mygtukus pažymėti „Nepatinka, Patinka“, „Atžymėti Nepatinka“ bei „Atžymėti Patinka visas dainas grojaraštyje arba albume",
"name": "Albumo Veiksmai" "name": "Albumo Veiksmai"
}, },
"album-color-theme": { "album-color-theme": {
@ -237,12 +238,13 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Įjungti paieškos juostos temavimą"
}, },
"name": "Albumo Spalvų Tema" "name": "Albumo Spalvų Tema"
}, },
"ambient-mode": { "ambient-mode": {
"description": "Pritaiko apšvietimo efektą, perteikdamas švelnias vaizdo įrašo spalvas į ekrano foną.", "description": "Pritaiko apšvietimo efektą, perteikdamas švelnias vaizdo įrašo spalvas į ekrano foną",
"menu": { "menu": {
"blur-amount": { "blur-amount": {
"label": "Suliejimo kiekis", "label": "Suliejimo kiekis",
@ -287,10 +289,10 @@
"name": "Aplinkos rėžimas" "name": "Aplinkos rėžimas"
}, },
"amuse": { "amuse": {
"description": "Prideda {{applicationName}} palaikyma Amuse grojimo valdikliui pagal 6K Labs", "description": "Prideda {{applicationName}} palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"name": "Amuse (Platforma Dainininkams)", "name": "Amuse (Platforma Dainininkams)",
"response": { "response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija." "query": "Amuse API serveris veikia. Parašykite GET /query kad gautumėte dainos informacija."
} }
}, },
"api-server": { "api-server": {
@ -320,6 +322,22 @@
"hostname": { "hostname": {
"label": "Serverio Pavadinimas" "label": "Serverio Pavadinimas"
}, },
"https": {
"label": "HTTPS ir sertifikatai",
"submenu": {
"cert": {
"dialogTitle": "Pasirinkti HTTPS sertifikato failą",
"label": "Sertifikato failas (.crt/.pem)"
},
"enable-https": {
"label": "Įjungti HTTPS"
},
"key": {
"dialogTitle": "Pasirinkti HTTPS privataus rakto failą",
"label": "Privataus rakto failas (.key/.pem)"
}
}
},
"port": { "port": {
"label": "Prievadas" "label": "Prievadas"
} }
@ -340,19 +358,43 @@
"description": "Pritaikyti garso kompresiją (sumažina garsiausių signalo dalių garsumą ir padidina švelniausių dalių garsumą)", "description": "Pritaikyti garso kompresiją (sumažina garsiausių signalo dalių garsumą ir padidina švelniausių dalių garsumą)",
"name": "Garso Kompresorius" "name": "Garso Kompresorius"
}, },
"auth-proxy-adapter": {
"description": "autentifikavimo „proxy“ paslaugų naudojimo palaikymas",
"menu": {
"disable": "Išjungti „Proxy“ adapterį",
"enable": "Įjungti „Proxy“ adapterį",
"hostname": {
"label": "Sistemos pavadinimas"
},
"port": {
"label": "Prievadas"
}
},
"name": "Autentifikavimo „Proxy“ adapteris",
"prompt": {
"hostname": {
"label": "Įveskite sistemos vardą vietiniui „Proxy“ serveriui (reikalingas perkrovimas):",
"title": "„Proxy“ Sistemos pavadinimas"
},
"port": {
"label": "Įveskite vietinio „Proxy“ serverio prievadą (reikalingas perkrovimas):",
"title": "„Proxy“ Prievadas"
}
}
},
"blur-nav-bar": { "blur-nav-bar": {
"description": "Padaro navigacijos lentą permatomą ir susiliejusią", "description": "Padaro navigacijos lentą permatomą ir susiliejusią",
"name": "Sulieti Navigacijos Lentą" "name": "Sulieti Navigacijos Lentą"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apeiti \"Music Player\" amžiaus patikrinimą", "description": "Apeiti muzikos grotuvo amžiaus patikrinimą",
"name": "Apeiti Amžiaus Apribojimus" "name": "Apeiti Amžiaus Apribojimus"
}, },
"captions-selector": { "captions-selector": {
"description": "„{{applicationName}}“ Garso takelių antraščių parinkiklis", "description": "„{{applicationName}}“ Garso takelių antraščių parinkiklis",
"menu": { "menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę", "autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės" "disable-captions": "Antraštės išjungtos pagal numatytuosius nustatymus"
}, },
"name": "Antraščių parinkiklis", "name": "Antraščių parinkiklis",
"prompt": { "prompt": {
@ -366,10 +408,22 @@
"title": "Atidaryti antraščių parinkiklį" "title": "Atidaryti antraščių parinkiklį"
}, },
"toast": { "toast": {
"caption-changed": "Subtitrai pakeisti į {{language}}", "caption-changed": "Antraštės pakeistos į {{language}}",
"caption-disabled": "Subtitrai išjungti" "caption-disabled": "Antraštės išjungtos",
"no-captions": "Šiai dainai antraštė nepasiekiama"
} }
}, },
"clock": {
"description": "Pridėti laikrodį prie navigacijos lentos",
"menu": {
"format": {
"24-hour-format": "24Valandų Formatas",
"display-seconds": "Rodyti Sekundes",
"label": "Formatas"
}
},
"name": "Laikrodis"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Visada nustatyti šoninę juostą kompaktiniame rėžime", "description": "Visada nustatyti šoninę juostą kompaktiniame rėžime",
"name": "Kompaktinė šoninė juosta" "name": "Kompaktinė šoninė juosta"
@ -377,13 +431,13 @@
"crossfade": { "crossfade": {
"description": "Perliejimas tarp dainų", "description": "Perliejimas tarp dainų",
"menu": { "menu": {
"advanced": "Išplėsti" "advanced": "Išplėsti Nustatymai"
}, },
"name": "Perliejimas [Beta]", "name": "Perliejimas [Beta]",
"prompt": { "prompt": {
"options": { "options": {
"multi-input": { "multi-input": {
"fade-in-duration": "Išblukimo trukmė (ms)", "fade-in-duration": "Pasirodymo trukmė (ms)",
"fade-out-duration": "Išnykimo trukmė (ms)", "fade-out-duration": "Išnykimo trukmė (ms)",
"fade-scaling": { "fade-scaling": {
"label": "Išblukimo stiprumas", "label": "Išblukimo stiprumas",
@ -397,30 +451,32 @@
} }
}, },
"custom-output-device": { "custom-output-device": {
"description": "Konfigūruoti pasirinktiną medijos išvesties įrenginį dainoms",
"menu": { "menu": {
"device-selector": "Pasirinkti įrenginį" "device-selector": "Pasirinkti įrenginį"
}, },
"name": "Pasirinktinas išvesties įrenginys", "name": "Pasirinktinas išvesties įrenginys",
"prompt": { "prompt": {
"device-selector": { "device-selector": {
"label": "Pasirinkti naudotiną medijos išvesties įrenginį",
"title": "Pasirinkite išvesties įrenginį" "title": "Pasirinkite išvesties įrenginį"
} }
} }
}, },
"disable-autoplay": { "disable-autoplay": {
"description": "Pradeda dainą pristabdytame rėžime", "description": "Pradeda dainą pristabdytame rėžime",
"menu": { "menu": {
"apply-once": "Pritaiko tik per programos paleidimą" "apply-once": "Pritaiko tik per programos paleidimą"
}, },
"name": "Išjungti Automatinį leidimą" "name": "Išjungti automatinį leidimą"
}, },
"discord": { "discord": {
"backend": { "backend": {
"already-connected": "Bandyta prisijungti naudojant aktyvų ryšį", "already-connected": "Bandyta prisijungti naudojant aktyvų ryšį",
"connected": "Prisijungta prie \"Discord\"", "connected": "Prisijungta prie Discord",
"disconnected": "Atsijungta nuo \"Discord\"" "disconnected": "Atsijungta nuo Discord"
}, },
"description": "Parodyk savo draugams ko tu klausaisi su \"Turtingas Buvimas\" (Rich Presence)", "description": "Parodyk savo draugams ko tu klausaisi su Rich Presence",
"menu": { "menu": {
"auto-reconnect": "Automatiškai prisijungti", "auto-reconnect": "Automatiškai prisijungti",
"clear-activity": "Išvalyti veiklą", "clear-activity": "Išvalyti veiklą",
@ -428,10 +484,11 @@
"connected": "Prisijungta", "connected": "Prisijungta",
"disconnected": "Atsijungta", "disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko", "hide-duration-left": "Slėpti kiek liko laiko",
"hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką", "hide-github-button": "Slėpti GitHub nuorodos mygtuką",
"play-on-application": "Leisti ant \"{{applicationName}}\"", "play-on-application": "Leisti naudojant {{applicationName}}",
"set-inactivity-timeout": "Nustatyti neveiklumo laiką", "set-inactivity-timeout": "Nustatyti neveiklumo laiką",
"set-status-display-type": { "set-status-display-type": {
"label": "Būsenos tekstas",
"submenu": { "submenu": {
"application": "Klausosi {{applicationName}}", "application": "Klausosi {{applicationName}}",
"artist": "Klausosi {artist]", "artist": "Klausosi {artist]",
@ -439,7 +496,7 @@
} }
} }
}, },
"name": "\"Discord\" Turtingas Buvimas (Rich Presence)", "name": "Discord Turtingas Buvimas (Rich Presence)",
"prompt": { "prompt": {
"set-inactivity-timeout": { "set-inactivity-timeout": {
"label": "Įveskite neveiklumo skirtąjį laiką sekundėmis:", "label": "Įveskite neveiklumo skirtąjį laiką sekundėmis:",
@ -455,13 +512,13 @@
"ok": "Gerai" "ok": "Gerai"
}, },
"message": "Aaa! Apgailestaujame, nepavyko atsisiųsti…", "message": "Aaa! Apgailestaujame, nepavyko atsisiųsti…",
"title": "Paklaida atsisiunčiant!" "title": "Klaida atsisiunčiant!"
}, },
"start-download-playlist": { "start-download-playlist": {
"buttons": { "buttons": {
"ok": "Gerai" "ok": "Gerai"
}, },
"detail": "({{playlistSize}} dainos)", "detail": "({{playlistSize}} dainų)",
"message": "Atsisiunčiama {{playlistTitle}} grojaraštį", "message": "Atsisiunčiama {{playlistTitle}} grojaraštį",
"title": "Prasidėjo atsisiuntimas" "title": "Prasidėjo atsisiuntimas"
} }
@ -474,32 +531,34 @@
"download-progress": "Atsisiuntimas: {{percent}}%", "download-progress": "Atsisiuntimas: {{percent}}%",
"downloading": "Atsisiunčiama…", "downloading": "Atsisiunčiama…",
"downloading-counter": "Atsisiunčiama {{current}}/{{total}}…", "downloading-counter": "Atsisiunčiama {{current}}/{{total}}…",
"downloading-playlist": "Atsisiunčiamas grojaraštis \"{{playlistTitle}}\" - {{playlistSize}} dainų {{playlistId}}", "downloading-playlist": "Atsisiunčiamas grojaraštis {{playlistTitle}} - {{playlistSize}} dainų {{playlistId}}",
"error-while-downloading": "Paklaida atsisiunčiant \"{{author}} - {{title}}\": {{error}}", "error-while-downloading": "Klaida atsisiunčiant {{author}} - {{title}}: {{error}}",
"folder-already-exists": "Aplankas {{playlistFolder}} jau egzistuoja", "folder-already-exists": "Aplankas {{playlistFolder}} jau egzistuoja",
"getting-playlist-info": "Gaunama grojaraščio informacija…", "getting-playlist-info": "Gaunama grojaraščio informacija…",
"loading": "Kraunama…", "loading": "Kraunama…",
"playlist-has-only-one-song": "Grojaraštis turi tik vieną elementą, jis atsisiunčiamas tiesiogiai", "playlist-has-only-one-song": "Grojaraštis turi tik vieną elementą, jis atsisiunčiamas tiesiogiai",
"playlist-id-not-found": "Grojaraščio ID nerastas", "playlist-id-not-found": "Grojaraščio ID nerastas",
"playlist-is-empty": "Grojaraštis yra tuščias", "playlist-is-empty": "Grojaraštis yra tuščias",
"playlist-is-mix-or-private": "Paklaida gaunant grojaraščio informaciją: Pasitikrink, kad jis nėra privatus ar \"Surinkta specialiai jums\" grojaraštis\n\n{{error}}", "playlist-is-mix-or-private": "Klaida gaunant grojaraščio informaciją: Pasitikrink, ar jis nėra privatus ar \"Surinkta specialiai jums\" grojaraštis\n\n{{error}}",
"preparing-file": "Failas paruošiamas…", "preparing-file": "Failas ruošiamas…",
"saving": "Išsaugojama…", "saving": "Išsaugoma…",
"trying-to-get-playlist-id": "Bandoma gauti grojaraščio ID: {{playlistId}}", "trying-to-get-playlist-id": "Bandoma gauti grojaraščio ID: {{playlistId}}",
"video-id-not-found": "Vaizdo įrašas nerastas", "video-id-not-found": "Vaizdo įrašas nerastas",
"writing-id3": "Rašoma ID3 žymes…" "writing-id3": "Rašoma ID3 žymes…"
} }
}, },
"description": "Atsisiunčia MP3 / šaltinio garsą tiesiogiai iš sąsajos", "description": "Atsisiunčia MP3 / šaltinio garsą tiesiogiai iš sąsajos",
"menu": { "menu": {
"choose-download-folder": "Pasirinkti atsisiuntimų aplanką", "choose-download-folder": "Pasirinkti atsisiuntimų aplanką",
"download-finish-settings": { "download-finish-settings": {
"label": "Atsisiųsti pabaigus dainą",
"prompt": { "prompt": {
"last-percent": "Po x procentų", "last-percent": "Po x procentų",
"last-seconds": "Paskutinės x sekundės", "last-seconds": "Paskutinės x sekundės",
"title": "Nustatyti kada atsisiųsti" "title": "Nustatyti kada atsisiųsti"
}, },
"submenu": { "submenu": {
"advanced": "Išplėsti Nustatymai",
"enabled": "Įjungtas", "enabled": "Įjungtas",
"mode": "Laiko rėžimas", "mode": "Laiko rėžimas",
"percent": "Procentai", "percent": "Procentai",
@ -507,7 +566,7 @@
} }
}, },
"download-playlist": "Atsisiųsti grojaraštį", "download-playlist": "Atsisiųsti grojaraštį",
"presets": "Iš anksto nustatyti nustatymai", "presets": "Išankstiniai nustatymai",
"skip-existing": "Praleisti egzistuojančius failus" "skip-existing": "Praleisti egzistuojančius failus"
}, },
"name": "Atsiuntėjas", "name": "Atsiuntėjas",
@ -519,11 +578,16 @@
} }
}, },
"equalizer": { "equalizer": {
"description": "Prideda vienodintuvą į grotuvą",
"menu": { "menu": {
"presets": { "presets": {
"label": "Išankstiniai nustatymai" "label": "Išankstiniai nustatymai",
"list": {
"bass-booster": "Žemų dažnių stiprintuvas"
}
} }
} },
"name": "Vienodintuvas"
}, },
"exponential-volume": { "exponential-volume": {
"description": "Padaro garsumo slankiklį eksponentinį, kad būtų lengviau pasirinkti mažesnį garsumą.", "description": "Padaro garsumo slankiklį eksponentinį, kad būtų lengviau pasirinkti mažesnį garsumą.",
@ -532,20 +596,20 @@
"in-app-menu": { "in-app-menu": {
"description": "Duoda meniu lentoms įmantrią, tamsią ar albumo spalvos išvaizdą", "description": "Duoda meniu lentoms įmantrią, tamsią ar albumo spalvos išvaizdą",
"menu": { "menu": {
"hide-dom-window-controls": "Slėpti DOM lango kontroles" "hide-dom-window-controls": "Slėpti DOM lango kontroles"
}, },
"name": "Programos Meniu" "name": "Programos Meniu"
}, },
"lumiastream": { "lumiastream": {
"description": "Prideda \"Lumia Stream\" palaikymą", "description": "Prideda Lumia Stream palaikymą",
"name": "Lumia Stream [Beta]" "name": "Lumia Stream [Beta]"
}, },
"lyrics-genius": { "lyrics-genius": {
"description": "Prideda daugumai dainių žodžių tekstus", "description": "Daugumai dainų prideda jų dainų žodžius",
"menu": { "menu": {
"romanized-lyrics": "Romanizuoti dainų tekstai" "romanized-lyrics": "Romanizuoti dainų tekstai"
}, },
"name": "\"Genius\" Žodžių tekstai", "name": "„Lyrics Genius“ dainų žodžiai",
"renderer": { "renderer": {
"fetched-lyrics": "Gauti žodžiai iš „Genius“" "fetched-lyrics": "Gauti žodžiai iš „Genius“"
} }
@ -557,54 +621,85 @@
}, },
"internal": { "internal": {
"save": "Išsaugoti", "save": "Išsaugoti",
"track-source": "Dainos kilmė", "track-source": "Dainos Šaltinis",
"unknown-user": "Nežinomas Naudotojas" "unknown-user": "Nežinomas Naudotojas"
}, },
"menu": { "menu": {
"click-to-copy-id": "Kopijuoti Vedėjo ID", "click-to-copy-id": "Kopijuoti Vedėjo ID",
"close": "Uždaryti „Muzika Kartu“",
"connected-users": "Prisijungę vartotojai",
"disconnect": "Išjungti „Muzika Kartu“",
"empty-user": "Nėra prisijungusių vartotojų",
"host": "„Muzika Kartu“ Vedėjas",
"join": "Prisijungti prie „Muzika Kartu“",
"permission": { "permission": {
"all": "Leisti svečiams valdyti grojaraštį ir grotuvą", "all": "Leisti svečiams valdyti grojaraštį ir grotuvą",
"host-only": "Tik vedėjas gali valdyti grojaraštį ir grotuvą",
"playlist": "Leisti svečiams valdyti grojaraštį" "playlist": "Leisti svečiams valdyti grojaraštį"
}, },
"set-permission": "Keisti valdymo leidimus", "set-permission": "Keisti valdymo leidimus",
"status": { "status": {
"disconnected": "Atsijungta", "disconnected": "Atsijungta",
"guest": "Prisijungta kaip svečias" "guest": "Prisijungta kaip Svečias",
"host": "Prisijungta kaip Vedėjas"
} }
}, },
"name": "„Muzika Kartu“ [Beta]",
"toast": { "toast": {
"add-song-failed": "Nepavyko pridėti dainos", "add-song-failed": "Nepavyko pridėti dainos",
"remove-song-failed": "Nepavyko pašalinti dainos" "closed": "„Muzika Kartu“ uždaryta",
"disconnected": "„Muzika Kartu“ atsijungė",
"host-failed": "Nepavyko surengti „Muzika Kartu“",
"id-copied": "Vedėjo ID nukopijuota į iškarpinę",
"id-copy-failed": "Nepavyko nukopijuoti vedėjo ID į iškarpinę",
"join-failed": "Nepavyko prisijungti prie „Muzika Kartu“",
"joined": "Prisijungta prie „Muzika Kartu“",
"permission-changed": "„Muzika Kartu“ leidimas pakeistas į „{{permission}}“",
"remove-song-failed": "Nepavyko pašalinti dainos",
"user-connected": "{{name}} prisijungė prie „Muzika Kartu“",
"user-disconnected": "{{name}} išėjo iš „Muzika Kartu“"
} }
}, },
"navigation": { "navigation": {
"description": "Kitas/Ankstenis navigacijos rodyklės tiesiogiai integruotos sąsajoje, kaip tavo mėgstamiausioje naršyklėje", "description": "Kitas/Ankstenis navigacijos rodyklės tiesiogiai integruotos sąsajoje, kaip tavo mėgstamiausioje naršyklėje",
"name": "Navigacija" "name": "Navigacija",
"templates": {
"back": {
"title": "Eiti į praeitą puslapį"
},
"forward": {
"title": "Eiti į kitą puslapį"
}
}
}, },
"no-google-login": { "no-google-login": {
"description": "Pašalinti \"Google\" prisijungimo mygtukus ir nuorodas iš sąsjos", "description": "Pašalinti Google prisijungimo mygtukus ir nuorodas iš sąsajos",
"name": "Be \"Google\" Prisijungimo" "name": "Be Google Prisijungimo"
}, },
"notifications": { "notifications": {
"description": "Rodyti pranešimą, kai pradeda groti daina (interaktyvūs pranešimai pasiekiami sistemoje \"Windows\")", "description": "Rodyti pranešimą, kai pradeda groti daina (interaktyvūs pranešimai pasiekiami sistemoje Windows)",
"menu": { "menu": {
"interactive": "Interaktyvūs pranešimai", "interactive": "Interaktyvūs pranešimai",
"interactive-settings": { "interactive-settings": {
"label": "Interaktyvūs nustatymai", "label": "Interaktyvūs nustatymai",
"submenu": { "submenu": {
"hide-button-text": "Paslėpti mygtuko tekstą", "hide-button-text": "Paslėpti mygtuko tekstą",
"refresh-on-play-pause": "Atnaujinti ant Paleidimo/Pristabdymo", "refresh-on-play-pause": "Perkrauti po Paleidimo/Pristabdymo",
"tray-controls": "Atidaryti/Uždaryti ant padėklo paspaudimo" "tray-controls": "Atidaryti/Uždaryti po paspaudimo ant padėklo"
} }
}, },
"priority": "Pranešimų pirminybė", "priority": "Pranešimų pirmenybė",
"toast-style": "Skrudintas stilius", "toast-style": "įspėjimo pranešimų stilius",
"unpause-notification": "Rodyti pranešimus po dainos paleidimo" "unpause-notification": "Rodyti pranešimą po dainos paleidimo"
}, },
"name": "Pranešimai" "name": "Pranešimai"
}, },
"performance-improvement": {
"description": "Pagerinkite našumą įjungdami eksperimentinius scenarijus",
"name": "Našumo patobulinimas [Beta]"
},
"picture-in-picture": { "picture-in-picture": {
"description": "Leidžia pakeisti programą į \"picture-in-picture\" rėžimą", "description": "Leidžia pakeisti programą į „nuotrauka-nuotraukoje“ rėžimą",
"menu": { "menu": {
"always-on-top": "Visada ant viršaus", "always-on-top": "Visada ant viršaus",
"hotkey": { "hotkey": {
@ -613,17 +708,17 @@
"keybind-options": { "keybind-options": {
"hotkey": "Spartusis klavišas" "hotkey": "Spartusis klavišas"
}, },
"label": "Pasirinkti spartujį klaviša, kad įjungti/išjungti \"picture-in-picture\"", "label": "Pasirinkti spartųjį klavišą, kad įjungti/išjungti „nuotrauka-nuotraukoje“ rėžimą",
"title": "\"Picture-in-picture\" Spartusis klavišas" "title": "„Nuotrauka-Nuotraukoje“ Spartusis klavišas"
} }
}, },
"save-window-position": "Išsaugoti lango poziciją", "save-window-position": "Išsaugoti lango poziciją",
"save-window-size": "Išsaugoti lango dydį", "save-window-size": "Išsaugoti lango dydį",
"use-native-pip": "Naudoti naršyklės savajį PiP" "use-native-pip": "Naudoti naršyklės savąPiP"
}, },
"name": "Picture-in-picture", "name": "Nuotrauka-nuotraukoje",
"templates": { "templates": {
"button": "Picture-in-picture" "button": "Nuotrauka-nuotraukoje"
} }
}, },
"playback-speed": { "playback-speed": {
@ -634,10 +729,10 @@
} }
}, },
"precise-volume": { "precise-volume": {
"description": "Tiksliai valdykite garsumą naudodami pelės ratuką / sparčiuosius klavišus, naudodami pritaikytą HUD ir pritaikomus garsumo žingsnius", "description": "Tiksliai valdykite garsumą naudodami pelės ratuką / sparčiuosius klavišus, naudodami pritaikytą HUD ir pritaikomus garsumo žingsnius",
"menu": { "menu": {
"arrows-shortcuts": "Vietiniai rodyklių klavišai valdikliai", "arrows-shortcuts": "Vietiniai rodyklių klavišų valdikliai",
"custom-volume-steps": "Nustatykite Pasirinktinius Garsumo Žingsnius", "custom-volume-steps": "Nustatykite Pasirinktinius Garsumo Laiptus",
"global-shortcuts": "Pasauliniai spartieji klavišai" "global-shortcuts": "Pasauliniai spartieji klavišai"
}, },
"name": "Tikslus Garsas", "name": "Tikslus Garsas",
@ -651,8 +746,8 @@
"title": "Pasauliniai Garso Klavišai" "title": "Pasauliniai Garso Klavišai"
}, },
"volume-steps": { "volume-steps": {
"label": "Pasirinkti Garso Didinimo/Mažinimo Žingsnius", "label": "Pasirinkti Garso Didinimo/Mažinimo Laipsnius",
"title": "Garso Žingsniai" "title": "Garso Laipsniai"
} }
} }
}, },
@ -667,21 +762,50 @@
} }
}, },
"description": "Leidžia pakeisti vaizdo kokybę su mygtuku ant vaizdo perdangos", "description": "Leidžia pakeisti vaizdo kokybę su mygtuku ant vaizdo perdangos",
"name": "Vaizdo Kokybės Pakeitėjas" "name": "Vaizdo Kokybės Keitėjas",
"renderer": {
"quality-settings-button": {
"label": "Atidaryti grotuvo kokybės keistuvą"
}
}
}, },
"scrobbler": { "scrobbler": {
"menu": { "description": "Pridėti „scrobbling“ palaikymą (pvz., last.fm, Listenbrainz)",
"scrobble-alternative-artist": "Naudoti alternatyvius atlikėjus", "dialog": {
"scrobble-alternative-title": "Naudoti alternatyvius pavadinimus" "lastfm": {
"auth-failed": {
"message": "Nepavyko autentifikuotis su Last.fm\nPaslėpkite iššokantį langą iki kito paleidimo.",
"title": "Autentifikacija nepavyko"
}
}
}, },
"menu": {
"lastfm": {
"api-settings": "Last.fm API nustatymai"
},
"listenbrainz": {
"token": "Įvesti „ListenBrainz“ vartotojo žetoną"
},
"scrobble-alternative-artist": "Naudoti alternatyvius atlikėjus",
"scrobble-alternative-title": "Naudoti alternatyvius pavadinimus",
"scrobble-other-media": "„Scrobble“ kitas medijas"
},
"name": "„Scrobbler“",
"prompt": { "prompt": {
"lastfm": { "lastfm": {
"api-key": "Last.fm API raktas" "api-key": "Last.fm API raktas",
"api-secret": "Last.fm API paslaptis"
},
"listenbrainz": {
"token": {
"label": "Įveskite savo „ListenBrainz“ vartotojo žetoną:",
"title": "„ListenBrainz“ žetonas"
}
} }
} }
}, },
"shortcuts": { "shortcuts": {
"description": "Leidžia nustatyti visuotinius atkūrimo sparčiuosius klavišus (paleisti / pristabdyti / kitą / ankstesnį) ir išjungti medijos OSD nepaisant medijos klavišų, įjungti Ctrl / CMD + F ieškoti, įjungti Linux MPRIS palaikymą medijos klavišams ir pasirinktinius sparčiuosius klavišus pažengusiems vartotojams.", "description": "Leidžia nustatyti visuotinius atkūrimo sparčiuosius klavišus (paleisti / pristabdyti / kitą / ankstesnį) ir išjungti medijos OSD nepaisant medijos klavišų, įjungti Ctrl / CMD + F ieškoti, įjungti Linux MPRIS palaikymą medijos klavišams ir pasirinktinius sparčiuosius klavišus pažengusiems vartotojams",
"menu": { "menu": {
"override-media-keys": "Perrašyti Medijos klavišus", "override-media-keys": "Perrašyti Medijos klavišus",
"set-keybinds": "Nustatyti Pasaulines Dainų Kontroles" "set-keybinds": "Nustatyti Pasaulines Dainų Kontroles"
@ -712,11 +836,82 @@
"name": "Rėmėjų blokuotojas" "name": "Rėmėjų blokuotojas"
}, },
"synced-lyrics": { "synced-lyrics": {
"description": "Teikia sinchronizuotus dainų žodžius, naudojantis tiekėjais kaip LRClib.", "description": "Teikia sinchronizuotus dainų žodžius, naudojantis tiekėjais kaip LRClib.",
"errors": { "errors": {
"fetch": "⚠️\t\tĮvyko klaida gaunant dainos žodžius.\n\tPabandykite dar karta vėliau.", "fetch": "⚠️\t\tĮvyko klaida gaunant dainos žodžius.\n\tPabandykite dar karta vėliau.",
"not-found": "⚠️ Šiai dainai nerasti dainos tekstai." "not-found": "⚠️ Šiai dainai nerasti dainos tekstai."
}, },
"menu": {
"convert-chinese-character": {
"label": "Konvertuoti Kinietišką ženklą",
"submenu": {
"disabled": {
"label": "Išjungtas",
"tooltip": "Išjungti Kinietiškų ženklų konvertavimą"
},
"simplified-to-traditional": {
"label": "Supaprastintą į Tradicinę",
"tooltip": "Konvertuoti Supaprastintą Kinų kalbą į Tradicinę Kinų kalbą"
},
"traditional-to-simplified": {
"label": "Tradicionalią į Supaprastintą",
"tooltip": "Konvertuoti Tradicionalią Kinų kalbą į Supaprastintą Kinų kalbą"
}
},
"tooltip": "Konvertuoti Kinietiškus ženklus į Tradicinę arba Supaprastintą"
},
"default-text-string": {
"label": "Numatyti simboliai tarp dainos žodžių",
"tooltip": "Pasirinkite numatytąjį simbolį kurį naudoti tarpui tarp dainos žodžių"
},
"line-effect": {
"label": "Teksto linijos efektas",
"submenu": {
"fancy": {
"label": "Prašmatnus",
"tooltip": "Naudoti didelius, panašius į programos efektus dabartinei eilutei"
},
"focus": {
"label": "Sutelkti dėmesį",
"tooltip": "Padaryti tik dabartinę eilutę baltą"
},
"offset": {
"label": "Nuokrypis",
"tooltip": "Dabartinę eilutę pastumti iš dešinės"
},
"scale": {
"label": "Skalė",
"tooltip": "Padidinti dabartinę eilutę"
}
},
"tooltip": "Pasirinkti efektą, kurį pritaikyti dabartinei linijai"
},
"precise-timing": {
"label": "Tobulai sinchronizuoti dainos žodžius",
"tooltip": "Apskaičiuoti kitos eilutės rodymą milisekundės tikslumu (gali turėti nedidelę įtaką našumui)"
},
"preferred-provider": {
"label": "Pageidaujamas tiekėjas",
"none": {
"label": "Jokio",
"tooltip": "Jokio pageidaujamo tiekėjo"
},
"tooltip": "Pasirinkti numatytąjį tiekėją kurį naudoti"
},
"romanization": {
"label": "Romanizuoti dainos žodžius",
"tooltip": "jei dainos žodžiai yra kita kalba, bandyti pateikti lotyniškų ženklų versiją."
},
"show-lyrics-even-if-inexact": {
"label": "Rodyti dainos žodžius, net jei jie netikslūs",
"tooltip": "Jeigu daina nerasta, įskiepis bando iš naujo su skirtinga paieškos užklausa.\nAntro bandymo rezultatas gali būti netikslus."
},
"show-time-codes": {
"label": "Rodyti laiko žymes",
"tooltip": "Rodyti laiko žymes kartu su dainos žodžiais"
}
},
"name": "„Synced Lyrics“",
"refetch-btn": { "refetch-btn": {
"fetching": "Gaunama...", "fetching": "Gaunama...",
"normal": "Atgauti dainos žodžius" "normal": "Atgauti dainos žodžius"
@ -732,15 +927,40 @@
"name": "Užduočių juostos medijos valdymas" "name": "Užduočių juostos medijos valdymas"
}, },
"touchbar": { "touchbar": {
"description": "Pridedamas jutiklinės juostos valdiklis MacOS vartotojams", "description": "Pridedamas jutiklinės juostos valdiklis MacOS vartotojams",
"name": "TouchBar" "name": "TouchBar"
},
"transparent-player": {
"description": "Padaro programos langą skaidrų",
"menu": {
"opacity": {
"label": "Skaidrumas",
"submenu": {
"percent": "{{opacity}}%"
}
},
"type": {
"label": "Tipas",
"submenu": {
"acrylic": "Akrilas",
"mica": "Žėrutis",
"none": "Joks",
"tabbed": "Atskirtas"
}
}
},
"name": "Skaidrus Grotuvas"
}, },
"tuna-obs": { "tuna-obs": {
"description": "Integracija su OBS papildiniu \"Tuna\"", "description": "Integracija su OBS papildiniu Tuna",
"name": "Tuna OBS" "name": "Tuna OBS"
},
"unobtrusive-player": {
"description": "Trukdo grotuvo atsidarymui grojant dainą",
"name": "Netrukdantis Grotuvas"
}, },
"video-toggle": { "video-toggle": {
"description": "Pridedamas mygtukas, skirtas perjungti vaizdo įrašo/dainos režimą. taip pat galite pasirinktinai pašalinti visą vaizdo įrašo skirtuką", "description": "Pridedamas mygtukas, skirtas perjungti vaizdo įrašo/dainos režimą. Taip pat galite pasirinktinai pašalinti visą vaizdo įrašo skirtuką",
"menu": { "menu": {
"align": { "align": {
"label": "Lygiavimas", "label": "Lygiavimas",
@ -762,7 +982,8 @@
}, },
"name": "Vaizdo įrašo perjungimas", "name": "Vaizdo įrašo perjungimas",
"templates": { "templates": {
"button-song": "Daina" "button-song": "Daina",
"button-video": "Vaizdo įrašas"
} }
}, },
"visualizer": { "visualizer": {

View File

@ -842,6 +842,24 @@
"not-found": "⚠️ Nenhuma letra encontrada para esta música." "not-found": "⚠️ Nenhuma letra encontrada para esta música."
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "Converter caracteres Chineses",
"submenu": {
"disabled": {
"label": "Desativado",
"tooltip": "Desativar conversão de caracteres Chineses"
},
"simplified-to-traditional": {
"label": "Simplificado para Tradicional",
"tooltip": "Converter Chinês Simplificado para Chinês Tradicional"
},
"traditional-to-simplified": {
"label": "Tradicional para Simplificado",
"tooltip": "Converter Chinês Tradicional para Chinês Simplificado"
}
},
"tooltip": "Converter caractere Chinês para Tradicional ou Simplificado"
},
"default-text-string": { "default-text-string": {
"label": "Caractere padrão entre letras", "label": "Caractere padrão entre letras",
"tooltip": "Escolha o caractere padrão a ser usado para o intervalo entre as letras" "tooltip": "Escolha o caractere padrão a ser usado para o intervalo entre as letras"

View File

@ -0,0 +1,59 @@
{
"common": {
"console": {
"plugins": {
"execute-failed": "{{pluginName}}::{{contextName}} ప్లగిన్‌ను అమలు చేయడంలో విఫలమైంది",
"executed-at-ms": "{{pluginName}}::{{contextName}} ప్లగిన్ అమలు చేయబడిన సమయం {{ms}} మిల్లీసెకను",
"initialize-failed": "\"{{pluginName}}\" ప్లగిన్‌ను ప్రారంభించడంలో విఫలమైంది",
"load-all": "అన్నీ ప్లగిన్లను లోడ్ చెయ్యబడుతోంది",
"load-failed": "\"{{pluginName}}\" ప్లగిన్ లోడ్ చేయడంలో విఫలమైంది",
"loaded": "ప్లగిన్ \"{{pluginName}}\" లోడ్ చేయబడింది",
"unload-failed": "“{{pluginName}}” ప్లగిన్‌ను అన్‌లోడ్ చేయడంలో విఫలమైంది",
"unloaded": "\"{{pluginName}}\" ప్లగిన్ అన్‌లోడ్ చేయబడింది"
}
}
},
"language": {
"code": "te",
"local-name": "తెలుగు",
"name": "Telugu"
},
"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' ఉపయోగించండి (లేదా ఒకవేళ In-App Menu ఉపయోగిస్తుంటే 'Escape' ఉపయోగించండి)",
"message": "Hide Menu ఎనేబుల్ చేయబడింది",
"title": "Hide Menu ఎనేబుల్ అయిపోయింది"
},
"need-to-restart": {
"buttons": {
"later": "తర్వాత",
"restart-now": "ఇప్పుడే రీస్టార్ట్ చేయండి"
}
}
}
}
}

View File

@ -53,9 +53,9 @@
"later": "Daha Sonra", "later": "Daha Sonra",
"restart-now": "Şimdi yeniden başlat" "restart-now": "Şimdi yeniden başlat"
}, },
"detail": "\"{{pluginName}}\" eklentisinin çalışabilmesi için yeniden başlatman gerekiyor", "detail": "\"{{pluginName}}\" eklentisinin çalışması için uygulamanın yeniden başlatılması gerekiyor",
"message": "\"{{pluginName}}\" için yeniden başlatman gerekiyor", "message": "\"{{pluginName}}\" eklentisi için uygulamanın yeniden başlatılması gerekiyor",
"title": "Uygulamayı yeniden başlatman gerekiyor" "title": "Uygulamanın yeniden başlatılması gerekiyor"
}, },
"unresponsive": { "unresponsive": {
"buttons": { "buttons": {
@ -161,7 +161,8 @@
"default": "Varsayılan", "default": "Varsayılan",
"force-show": "Zorla göster", "force-show": "Zorla göster",
"hide": "Gizle", "hide": "Gizle",
"label": "Beğenme düğmeleri" "label": "Beğenme düğmeleri",
"swap": "Beğenme butonlarının sıralamasını değiştir"
}, },
"remove-upgrade-button": "Yükseltme düğmesini kaldır", "remove-upgrade-button": "Yükseltme düğmesini kaldır",
"theme": { "theme": {
@ -412,6 +413,17 @@
"no-captions": "Bu şarkı için altyazı mevcut değil" "no-captions": "Bu şarkı için altyazı mevcut değil"
} }
}, },
"clock": {
"description": "Navigasyon barına bir saat ekle",
"menu": {
"format": {
"24-hour-format": "24-Saat Formatı, Biçimi",
"display-seconds": "Saniyeleri göster",
"label": "Format, Biçim"
}
},
"name": "Saat"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Her zaman kompakt kenar çubugu", "description": "Her zaman kompakt kenar çubugu",
"name": "Kompakt Kenar Çubuğu" "name": "Kompakt Kenar Çubuğu"
@ -830,6 +842,24 @@
"not-found": "⚠️ Bu şarkı için şarkı sözleri bulunamadı." "not-found": "⚠️ Bu şarkı için şarkı sözleri bulunamadı."
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "Çince karakterleri çevir",
"submenu": {
"disabled": {
"label": "Devre dışı bırak",
"tooltip": "Çince karakterleri çevirmeyi devre dışı bırak"
},
"simplified-to-traditional": {
"label": "Basitleştirilmişten Geleneksele",
"tooltip": "Basitleştirilmiş Ç*nceyi Geleneksel Ç*nceye Çevir"
},
"traditional-to-simplified": {
"label": "Gelenekselden Basitleştirilmişe",
"tooltip": "Geleneksel Çince'yi Basitleştirilmiş Çince'ye dönüştür"
}
},
"tooltip": "Çince karakterleri Geleneksel veya Basitleştirilmiş Çinceye dönüştür"
},
"default-text-string": { "default-text-string": {
"label": "Şarkı sözleri arasında varsayılan karakter", "label": "Şarkı sözleri arasında varsayılan karakter",
"tooltip": "Şarkı sözleri arasındaki boşluk için kullanılacak varsayılan karakteri seçin" "tooltip": "Şarkı sözleri arasındaki boşluk için kullanılacak varsayılan karakteri seçin"

View File

@ -161,7 +161,8 @@
"default": "Mặc định", "default": "Mặc định",
"force-show": "Tập trung hiển thị", "force-show": "Tập trung hiển thị",
"hide": "Ẩn", "hide": "Ẩn",
"label": "Nút thích" "label": "Nút thích",
"swap": "Hoán đổi thứ tự nút Thích"
}, },
"remove-upgrade-button": "Xóa nút nâng cấp", "remove-upgrade-button": "Xóa nút nâng cấp",
"theme": { "theme": {
@ -237,7 +238,8 @@
"submenu": { "submenu": {
"percent": "{{ratio}}%" "percent": "{{ratio}}%"
} }
} },
"enable-seekbar": "Bật tùy chỉnh giao diện cho thanh trượt"
}, },
"name": "Màu nền album" "name": "Màu nền album"
}, },
@ -321,9 +323,18 @@
"label": "Tên máy chủ" "label": "Tên máy chủ"
}, },
"https": { "https": {
"label": "HTTPS & Chứng chỉ",
"submenu": { "submenu": {
"cert": {
"dialogTitle": "Chọn tệp chứng chỉ HTTPS",
"label": "Tệp chứng chỉ (.crt/.pem)"
},
"enable-https": { "enable-https": {
"label": "Bật HTTPS" "label": "Bật HTTPS"
},
"key": {
"dialogTitle": "Chọn tệp khóa riêng HTTPS",
"label": "Tệp khóa riêng (.key/.pem)"
} }
} }
}, },
@ -402,6 +413,17 @@
"no-captions": "Không có phụ đề nào cho bài hát này" "no-captions": "Không có phụ đề nào cho bài hát này"
} }
}, },
"clock": {
"description": "Thêm đồng hồ vào thanh điều hướng",
"menu": {
"format": {
"24-hour-format": "Định dạng 24h",
"display-seconds": "Hiển thị giây",
"label": "Định dạng"
}
},
"name": "Đồng hồ"
},
"compact-sidebar": { "compact-sidebar": {
"description": "Luôn đặt thanh bên ở chế độ thu gọn", "description": "Luôn đặt thanh bên ở chế độ thu gọn",
"name": "Thanh bên thu gọn" "name": "Thanh bên thu gọn"
@ -820,6 +842,24 @@
"not-found": "⚠️ Không tìm thấy lời cho bài hát này." "not-found": "⚠️ Không tìm thấy lời cho bài hát này."
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "Chuyển đổi kí tự tiếng Trung",
"submenu": {
"disabled": {
"label": "Vô hiệu hóa",
"tooltip": "Vô hiệu hóa chuyển đổi kí tự tiếng Trung"
},
"simplified-to-traditional": {
"label": "Giản thể sang Phồn thể",
"tooltip": "Chuyển đổi tiếng Trung Giản thể sang tiếng Trung Phồn thể"
},
"traditional-to-simplified": {
"label": "Phồn thể sang Giản thể",
"tooltip": "Chuyển đổi tiếng Trung Phồn thể sang tiếng Trung Giản thể"
}
},
"tooltip": "Chuyển đổi kí tự tiếng Trung sang Phồn thể hoặc Giản thể"
},
"default-text-string": { "default-text-string": {
"label": "Kí tự giữa các lời bài hát", "label": "Kí tự giữa các lời bài hát",
"tooltip": "Chọn kí tự mặc định cho khoảng trống giữa các lời bài hát" "tooltip": "Chọn kí tự mặc định cho khoảng trống giữa các lời bài hát"

View File

@ -842,6 +842,24 @@
"not-found": "⚠️ 未找到此歌曲的歌词。" "not-found": "⚠️ 未找到此歌曲的歌词。"
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "转换中文字符",
"submenu": {
"disabled": {
"label": "已停用",
"tooltip": "禁用中文字符转换"
},
"simplified-to-traditional": {
"label": "简体到繁体",
"tooltip": "转换简体中文到繁体中文"
},
"traditional-to-simplified": {
"label": "繁体到简体",
"tooltip": "转换繁体中文到简体中文"
}
},
"tooltip": "转换简繁体中文字符"
},
"default-text-string": { "default-text-string": {
"label": "默认的歌词行间字符", "label": "默认的歌词行间字符",
"tooltip": "选择在歌词间隙期间默认显示的字符" "tooltip": "选择在歌词间隙期间默认显示的字符"

View File

@ -161,7 +161,8 @@
"default": "預設", "default": "預設",
"force-show": "強制顯示", "force-show": "強制顯示",
"hide": "隱藏", "hide": "隱藏",
"label": "按讚按鈕" "label": "按讚按鈕",
"swap": "交換讚及倒讚的按鈕位置"
}, },
"remove-upgrade-button": "移除升級按鈕", "remove-upgrade-button": "移除升級按鈕",
"theme": { "theme": {
@ -321,6 +322,22 @@
"hostname": { "hostname": {
"label": "主機名稱" "label": "主機名稱"
}, },
"https": {
"label": "HTTPS 及 憑證",
"submenu": {
"cert": {
"dialogTitle": "選擇憑證檔案",
"label": "憑證檔案(.crt/.pem"
},
"enable-https": {
"label": "啟用 HTTPS"
},
"key": {
"dialogTitle": "選擇私人金鑰檔案",
"label": "私人金鑰檔案(.key/.pem"
}
}
},
"port": { "port": {
"label": "連接埠" "label": "連接埠"
} }
@ -396,6 +413,17 @@
"no-captions": "該首歌曲無可用的字幕" "no-captions": "該首歌曲無可用的字幕"
} }
}, },
"clock": {
"description": "新增時鐘至應用程式上方",
"menu": {
"format": {
"24-hour-format": "24 小時制",
"display-seconds": "顯示秒數",
"label": "時間格式"
}
},
"name": "時鐘"
},
"compact-sidebar": { "compact-sidebar": {
"description": "永遠讓側邊欄保持收合狀態", "description": "永遠讓側邊欄保持收合狀態",
"name": "收合側邊欄" "name": "收合側邊欄"
@ -462,8 +490,8 @@
"set-status-display-type": { "set-status-display-type": {
"label": "狀態樣式", "label": "狀態樣式",
"submenu": { "submenu": {
"artist": "正在聆聽 {artist} 的歌曲",
"application": "正在聆聽 {{applicationName}}", "application": "正在聆聽 {{applicationName}}",
"artist": "正在聆聽 {artist} 的歌曲",
"title": "正在聆聽 {song title}" "title": "正在聆聽 {song title}"
} }
} }
@ -814,6 +842,24 @@
"not-found": "⚠️未找到該首歌曲的歌詞。" "not-found": "⚠️未找到該首歌曲的歌詞。"
}, },
"menu": { "menu": {
"convert-chinese-character": {
"label": "繁簡轉換",
"submenu": {
"disabled": {
"label": "已停用",
"tooltip": "停用繁簡轉換"
},
"simplified-to-traditional": {
"label": "簡體轉繁體",
"tooltip": "轉換簡體中文至繁體中文"
},
"traditional-to-simplified": {
"label": "繁體轉簡體",
"tooltip": "轉換繁體中文至簡體中文"
}
},
"tooltip": "轉換中文字符至繁體或簡體"
},
"default-text-string": { "default-text-string": {
"label": "預設歌詞中間隔的符號", "label": "預設歌詞中間隔的符號",
"tooltip": "選擇歌詞中間隔要使用的符號" "tooltip": "選擇歌詞中間隔要使用的符號"

View File

@ -153,6 +153,62 @@ export const menu = async (
}); });
}, },
}, },
{
label: t('plugins.synced-lyrics.menu.convert-chinese-character.label'),
toolTip: t(
'plugins.synced-lyrics.menu.convert-chinese-character.tooltip',
),
type: 'submenu',
submenu: [
{
label: t(
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.disabled.label',
),
toolTip: t(
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.disabled.tooltip',
),
type: 'radio',
checked:
config.convertChineseCharacter === 'disabled' ||
config.convertChineseCharacter === undefined,
click() {
ctx.setConfig({
convertChineseCharacter: 'disabled',
});
},
},
{
label: t(
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.simplified-to-traditional.label',
),
toolTip: t(
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.simplified-to-traditional.tooltip',
),
type: 'radio',
checked: config.convertChineseCharacter === 'simplifiedToTraditional',
click() {
ctx.setConfig({
convertChineseCharacter: 'simplifiedToTraditional',
});
},
},
{
label: t(
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.traditional-to-simplified.label',
),
toolTip: t(
'plugins.synced-lyrics.menu.convert-chinese-character.submenu.traditional-to-simplified.tooltip',
),
type: 'radio',
checked: config.convertChineseCharacter === 'traditionalToSimplified',
click() {
ctx.setConfig({
convertChineseCharacter: 'traditionalToSimplified',
});
},
},
],
},
{ {
label: t('plugins.synced-lyrics.menu.show-time-codes.label'), label: t('plugins.synced-lyrics.menu.show-time-codes.label'),
toolTip: t('plugins.synced-lyrics.menu.show-time-codes.tooltip'), toolTip: t('plugins.synced-lyrics.menu.show-time-codes.tooltip'),

View File

@ -1,6 +1,11 @@
import { createEffect, createSignal, Show } from 'solid-js'; import { createEffect, createMemo, createSignal, Show } from 'solid-js';
import { canonicalize, romanize, simplifyUnicode } from '../utils'; import {
canonicalize,
convertChineseCharacter,
romanize,
simplifyUnicode,
} from '../utils';
import { config } from '../renderer'; import { config } from '../renderer';
interface PlainLyricsProps { interface PlainLyricsProps {
@ -9,11 +14,19 @@ interface PlainLyricsProps {
export const PlainLyrics = (props: PlainLyricsProps) => { export const PlainLyrics = (props: PlainLyricsProps) => {
const [romanization, setRomanization] = createSignal(''); const [romanization, setRomanization] = createSignal('');
const text = createMemo(() => {
let line = props.line;
const convertChineseText = config()?.convertChineseCharacter;
if (convertChineseText && convertChineseText !== 'disabled') {
line = convertChineseCharacter(line, convertChineseText);
}
return line;
});
createEffect(() => { createEffect(() => {
if (!config()?.romanization) return; if (!config()?.romanization) return;
const input = canonicalize(props.line); const input = canonicalize(text());
romanize(input).then((result) => { romanize(input).then((result) => {
setRomanization(canonicalize(result)); setRomanization(canonicalize(result));
}); });
@ -31,13 +44,13 @@ export const PlainLyrics = (props: PlainLyricsProps) => {
> >
<yt-formatted-string <yt-formatted-string
text={{ text={{
runs: [{ text: props.line }], runs: [{ text: text() }],
}} }}
/> />
<Show <Show
when={ when={
config()?.romanization && config()?.romanization &&
simplifyUnicode(props.line) !== simplifyUnicode(romanization()) simplifyUnicode(text()) !== simplifyUnicode(romanization())
} }
> >
<yt-formatted-string <yt-formatted-string

View File

@ -7,7 +7,12 @@ import { type LineLyrics } from '@/plugins/synced-lyrics/types';
import { config, currentTime } from '../renderer'; import { config, currentTime } from '../renderer';
import { _ytAPI } from '..'; import { _ytAPI } from '..';
import { canonicalize, romanize, simplifyUnicode } from '../utils'; import {
canonicalize,
convertChineseCharacter,
romanize,
simplifyUnicode,
} from '../utils';
interface SyncedLineProps { interface SyncedLineProps {
scroller: VirtualizerHandle; scroller: VirtualizerHandle;
@ -81,7 +86,14 @@ const EmptyLine = (props: SyncedLineProps) => {
}; };
export const SyncedLine = (props: SyncedLineProps) => { export const SyncedLine = (props: SyncedLineProps) => {
const text = createMemo(() => props.line.text.trim()); const text = createMemo(() => {
let line = props.line.text;
const convertChineseText = config()?.convertChineseCharacter;
if (convertChineseText && convertChineseText !== 'disabled') {
line = convertChineseCharacter(line, convertChineseText);
}
return line.trim();
});
const [romanization, setRomanization] = createSignal(''); const [romanization, setRomanization] = createSignal('');
createEffect(() => { createEffect(() => {

View File

@ -3,10 +3,12 @@ import KuromojiAnalyzer from 'kuroshiro-analyzer-kuromoji';
import Kuroshiro from 'kuroshiro'; import Kuroshiro from 'kuroshiro';
import { romanize as esHangulRomanize } from 'es-hangul'; import { romanize as esHangulRomanize } from 'es-hangul';
import hanja from 'hanja'; import hanja from 'hanja';
import * as pinyin from 'tiny-pinyin'; import { pinyin } from 'pinyin-pro';
import { romanize as romanizeThaiFrag } from '@dehoist/romanize-thai'; import { romanize as romanizeThaiFrag } from '@dehoist/romanize-thai';
import { lazy } from 'lazy-var'; import { lazy } from 'lazy-var';
import { detect } from 'tinyld'; import { detect } from 'tinyld';
import { sify, tify } from 'chinese-conv';
import Sanscript from '@indic-transliteration/sanscript';
import { waitForElement } from '@/utils/wait-for-element'; import { waitForElement } from '@/utils/wait-for-element';
import { LyricsRenderer, setIsVisible } from './renderer'; import { LyricsRenderer, setIsVisible } from './renderer';
@ -84,6 +86,20 @@ export const canonicalize = (text: string) => {
); );
}; };
export const convertChineseCharacter = (
text: string,
mode: 'simplifiedToTraditional' | 'traditionalToSimplified',
) => {
if (!hasChinese([text])) return text;
switch (mode) {
case 'simplifiedToTraditional':
return tify(text);
case 'traditionalToSimplified':
return sify(text);
}
};
export const simplifyUnicode = (text?: string) => export const simplifyUnicode = (text?: string) =>
text text
? text ? text
@ -155,6 +171,12 @@ const hasChinese = (lines: string[]) =>
const hasThai = (lines: string[]) => const hasThai = (lines: string[]) =>
lines.some((line) => /[\u0E00-\u0E7F]+/.test(line)); lines.some((line) => /[\u0E00-\u0E7F]+/.test(line));
const hasBengali = (lines: string[]) =>
lines.some((line) => /[\u0980-\u09FF]+/.test(line));
const hasHindi = (lines: string[]) =>
lines.some((line) => /[\u0900-\u097F]+/.test(line));
export const romanizeJapanese = async (line: string) => export const romanizeJapanese = async (line: string) =>
(await kuroshiro.get()).convert(line, { (await kuroshiro.get()).convert(line, {
to: 'romaji', to: 'romaji',
@ -165,9 +187,9 @@ export const romanizeHangul = (line: string) =>
esHangulRomanize(hanja.translate(line, 'SUBSTITUTION')); esHangulRomanize(hanja.translate(line, 'SUBSTITUTION'));
export const romanizeChinese = (line: string) => { export const romanizeChinese = (line: string) => {
return line.replaceAll(/[\u4E00-\u9FFF]+/g, (match) => return line.replaceAll(/[\u4E00-\u9FFF]+/g, (match) => {
pinyin.convertToPinyin(match, ' ', true), return pinyin(match, { separator: ' ' });
); });
}; };
const thaiSegmenter = Intl.Segmenter.supportedLocalesOf('th').includes('th') const thaiSegmenter = Intl.Segmenter.supportedLocalesOf('th').includes('th')
@ -190,11 +212,35 @@ export const romanizeThai = (line: string) => {
return latin; return latin;
}; };
export const romanizeBengali = (line: string) => {
try {
let out = Sanscript.t(line, 'bengali', 'iast');
out = out.normalize('NFD');
out = out.replace(/[\u0300-\u036f]/g, '');
out = out.replace(/[\u09BC\u09BE-\u09CD]/g, '');
return out.toLowerCase();
} catch {
return line;
}
};
export const romanizeHindi = (line: string) => {
try {
let out = Sanscript.t(line, 'devanagari', 'iast');
out = out.normalize('NFD').replace(/[\u0300-\u036f]/g, ''); // strip accents
return out.replace(/[^a-zA-Z\s]/g, '') || line; // remove any remaining symbols
} catch {
return line;
}
};
const handlers: Record<string, (line: string) => Promise<string> | string> = { const handlers: Record<string, (line: string) => Promise<string> | string> = {
ja: romanizeJapanese, ja: romanizeJapanese,
ko: romanizeHangul, ko: romanizeHangul,
zh: romanizeChinese, zh: romanizeChinese,
th: romanizeThai, th: romanizeThai,
bn: romanizeBengali,
hi: romanizeHindi,
}; };
export const romanize = async (line: string) => { export const romanize = async (line: string) => {
@ -210,6 +256,8 @@ export const romanize = async (line: string) => {
if (hasKorean([line])) line = romanizeHangul(line); if (hasKorean([line])) line = romanizeHangul(line);
if (hasChinese([line])) line = romanizeChinese(line); if (hasChinese([line])) line = romanizeChinese(line);
if (hasThai([line])) line = romanizeThai(line); if (hasThai([line])) line = romanizeThai(line);
if (hasBengali([line])) line = romanizeBengali(line);
if (hasHindi([line])) line = romanizeHindi(line);
return line; return line;
}; };

View File

@ -10,6 +10,10 @@ export type SyncedLyricsPluginConfig = {
showLyricsEvenIfInexact: boolean; showLyricsEvenIfInexact: boolean;
lineEffect: LineEffect; lineEffect: LineEffect;
romanization: boolean; romanization: boolean;
convertChineseCharacter?:
| 'simplifiedToTraditional'
| 'traditionalToSimplified'
| 'disabled';
}; };
export type LineLyricsStatus = 'previous' | 'current' | 'upcoming'; export type LineLyricsStatus = 'previous' | 'current' | 'upcoming';