chore: improve readability

This commit is contained in:
Su-Yong
2025-10-12 14:28:29 +09:00
parent 4f716d8e0b
commit ffa61687bf
137 changed files with 2625 additions and 2626 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -7,7 +7,7 @@
[![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs) [![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/pear-devs/pear-desktop/blob/master/eslint.config.mjs)
[![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![Build status](https://img.shields.io/github/actions/workflow/status/pear-devs/pear-desktop/build.yml?branch=master&style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/)
[![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/) [![GitHub All Releases](https://img.shields.io/github/downloads/pear-devs/pear-desktop/total?style=for-the-badge)](https://GitHub.com/pear-devs/pear-desktop/releases/)
<!--[![AUR](https://img.shields.io/aur/version/youtube-music-bin?color=blueviolet&style=for-the-badge)](https://aur.archlinux.org/packages/youtube-music-bin)--> <!--[![AUR](https://img.shields.io/aur/version/pear-desktop-bin?color=blueviolet&style=for-the-badge)](https://aur.archlinux.org/packages/pear-desktop-bin)-->
[![Known Vulnerabilities](https://snyk.io/test/github/pear-devs/pear-desktop/badge.svg)](https://snyk.io/test/github/pear-devs/pear-desktop) [![Known Vulnerabilities](https://snyk.io/test/github/pear-devs/pear-desktop/badge.svg)](https://snyk.io/test/github/pear-devs/pear-desktop)
</div> </div>
@ -16,19 +16,19 @@
- Native look & feel extension - Native look & feel extension
> [!IMPORTANT] > [!IMPORTANT]
> ⚠️ Disclaimer > ⚠️ Disclaimer
> >
> **No Affiliation** > **No Affiliation**
> >
> This project, and its contributors, are not affiliated with, authorized by, endorsed by, or in any way officially connected with Google LLC, YouTube, or any of their subsidiaries or affiliates. **This is an independent, non-profit, and unofficial extension developed by a team of volunteers with the goal of providing a desktop experience.** > This project, and its contributors, are not affiliated with, authorized by, endorsed by, or in any way officially connected with Google LLC, YouTube, or any of their subsidiaries or affiliates. **This is an independent, non-profit, and unofficial extension developed by a team of volunteers with the goal of providing a desktop experience.**
> >
> **Trademarks** > **Trademarks**
> >
> The names "Google" and "YouTube Music", as well as related names, marks, emblems, and images, are registered trademarks of their respective owners. Any use of these trademarks is for identification and reference purposes only and does not imply any association with the trademark holder. We have no intention of infringing upon these trademarks or causing harm to the trademark holders. > The names "Google" and "YouTube Music", as well as related names, marks, emblems, and images, are registered trademarks of their respective owners. Any use of these trademarks is for identification and reference purposes only and does not imply any association with the trademark holder. We have no intention of infringing upon these trademarks or causing harm to the trademark holders.
> >
> **Limitation of Liability** > **Limitation of Liability**
> >
> This application (extension) is provided "AS IS", and you use it at your own risk. In no event shall the developers or contributors be liable for any claim, damages, or other liability, including any legal consequences, arising from, out of, or in connection with the software or the use or other dealings in the software. The responsibility for any and all outcomes of using this software rests entirely with the user. > This application (extension) is provided "AS IS", and you use it at your own risk. In no event shall the developers or contributors be liable for any claim, damages, or other liability, including any legal consequences, arising from, out of, or in connection with the software or the use or other dealings in the software. The responsibility for any and all outcomes of using this software rests entirely with the user.
## Content ## Content
@ -53,11 +53,11 @@
## Translation ## Translation
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/). You can help with translation on [Hosted Weblate](https://bit.ly/48n5YF7).
<a href="https://hosted.weblate.org/engage/youtube-music/"> <a href="https://bit.ly/48n5YF7/">
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" /> <img src="https://bit.ly/4q83L6S" alt="translation status" />
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" /> <img src="https://bit.ly/4h3zBxo" alt="translation status 2" />
</a> </a>
## Download ## Download

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
appId: com.github.th-ch.youtube-music appId: com.github.th-ch.pear-desktop
productName: YouTube Music productName: Pear Desktop
files: files:
- '!*' - '!*'
- dist - dist
@ -43,7 +43,7 @@ linux:
category: AudioVideo category: AudioVideo
desktop: desktop:
entry: entry:
StartupWMClass: com.github.th_ch.youtube_music StartupWMClass: com.github.th_ch.pear_desktop
target: target:
- target: AppImage - target: AppImage
arch: arch:
@ -77,12 +77,12 @@ linux:
- armv7l - armv7l
appImage: appImage:
description: >- description: >-
YouTube Music Desktop App bundled with custom plugins (and built-in ad Pear Desktop App bundled with custom plugins (and built-in ad
blocker / downloader) blocker / downloader)
category: AudioVideo category: AudioVideo
flatpak: flatpak:
description: >- description: >-
YouTube Music Desktop App bundled with custom plugins (and built-in ad Pear Desktop App bundled with custom plugins (and built-in ad
blocker / downloader) blocker / downloader)
category: AudioVideo category: AudioVideo
runtimeVersion: '24.08' runtimeVersion: '24.08'
@ -98,7 +98,7 @@ flatpak:
- '--talk-name=org.freedesktop.Notifications' - '--talk-name=org.freedesktop.Notifications'
- '--talk-name=org.gnome.SessionManager' - '--talk-name=org.gnome.SessionManager'
- '--talk-name=org.kde.StatusNotifierWatcher' - '--talk-name=org.kde.StatusNotifierWatcher'
- '--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*' - '--own-name=org.mpris.MediaPlayer2.PearDesktop.*'
deb: deb:
depends: depends:
- libgtk-3-0 - libgtk-3-0

View File

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

View File

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

View File

@ -1,17 +1,17 @@
{ {
"name": "youtube-music", "name": "pear-music",
"desktopName": "com.github.th_ch.youtube_music", "desktopName": "com.github.th_ch.pear_music",
"productName": "YouTube Music", "productName": "Pear Desktop",
"version": "3.11.0", "version": "3.11.0",
"description": "YouTube Music Desktop App - including custom plugins", "description": "Pear Desktop App - including custom plugins",
"main": "./dist/main/index.js", "main": "./dist/main/index.js",
"type": "module", "type": "module",
"license": "MIT", "license": "MIT",
"repository": "th-ch/youtube-music", "repository": "pear-devs/pear-desktop",
"author": { "author": {
"name": "th-ch", "name": "th-ch",
"email": "th-ch@users.noreply.github.com", "email": "th-ch@users.noreply.github.com",
"url": "https://github.com/th-ch/youtube-music" "url": "https://github.com/pear-devs/pear-desktop"
}, },
"scripts": { "scripts": {
"test": "pnpm playwright test", "test": "pnpm playwright test",
@ -123,7 +123,6 @@
"peerjs": "1.5.5", "peerjs": "1.5.5",
"semver": "7.7.2", "semver": "7.7.2",
"serve": "14.2.5", "serve": "14.2.5",
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
"socks": "2.8.7", "socks": "2.8.7",
"solid-element": "1.9.1", "solid-element": "1.9.1",
"solid-floating-ui": "0.3.1", "solid-floating-ui": "0.3.1",

10
pnpm-lock.yaml generated
View File

@ -216,9 +216,6 @@ importers:
serve: serve:
specifier: 14.2.5 specifier: 14.2.5
version: 14.2.5 version: 14.2.5
simple-youtube-age-restriction-bypass:
specifier: github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9
version: https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6
socks: socks:
specifier: 2.8.7 specifier: 2.8.7
version: 2.8.7 version: 2.8.7
@ -4276,11 +4273,6 @@ packages:
resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==}
engines: {node: '>=20.12.2'} engines: {node: '>=20.12.2'}
simple-youtube-age-restriction-bypass@https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6:
resolution: {tarball: https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6}
version: 2.5.9
engines: {node: '>=18.0.0', npm: '>=7.0.0'}
sirv@3.0.1: sirv@3.0.1:
resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
engines: {node: '>=18'} engines: {node: '>=18'}
@ -9255,8 +9247,6 @@ snapshots:
simple-xml-to-json@1.2.3: {} simple-xml-to-json@1.2.3: {}
simple-youtube-age-restriction-bypass@https://codeload.github.com/organization/Simple-YouTube-Age-Restriction-Bypass/tar.gz/4e2db89ccb2fb880c5110add9ff3f1dfb78d0ff6: {}
sirv@3.0.1: sirv@3.0.1:
dependencies: dependencies:
'@polka/url': 1.0.0-next.29 '@polka/url': 1.0.0-next.29

View File

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

View File

@ -112,7 +112,7 @@ const migrations = {
'>=2.1.3'(store: IStore) { '>=2.1.3'(store: IStore) {
const listenAlong = store.get('plugins.discord.listenAlong'); const listenAlong = store.get('plugins.discord.listenAlong');
if (listenAlong !== undefined) { if (listenAlong !== undefined) {
store.set('plugins.discord.playOnYouTubeMusic', listenAlong); store.set('plugins.discord.playOnPearMusic', listenAlong);
store.delete('plugins.discord.listenAlong'); store.delete('plugins.discord.listenAlong');
} }
}, },

View File

@ -153,7 +153,7 @@
"custom-window-title": { "custom-window-title": {
"label": "عنوان نافذة مخصص", "label": "عنوان نافذة مخصص",
"prompt": { "prompt": {
"placeholder": "مثال: YouTube Music" "placeholder": "مثال: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -286,7 +286,7 @@
"name": "الوضع المحيطي" "name": "الوضع المحيطي"
}, },
"amuse": { "amuse": {
"description": "تكامل دعم YouTube Music مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs", "description": "تكامل دعم Pear Desktop مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs",
"name": "تلسيه", "name": "تلسيه",
"response": { "response": {
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية." "query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
@ -372,7 +372,7 @@
"name": "تجاوز التحقق من السن" "name": "تجاوز التحقق من السن"
}, },
"captions-selector": { "captions-selector": {
"description": "محدد ترجمات المقاطع الصوتية لYoutube Music", "description": "محدد ترجمات المقاطع الصوتية لPear Desktop",
"menu": { "menu": {
"autoload": "اختار اخر ترجمة مستخدمة تلقائيا", "autoload": "اختار اخر ترجمة مستخدمة تلقائيا",
"disable-captions": "لا توجد ترجمات بشكل افتراضي" "disable-captions": "لا توجد ترجمات بشكل افتراضي"
@ -447,7 +447,7 @@
"disconnected": "قطع الاتصال", "disconnected": "قطع الاتصال",
"hide-duration-left": "إخفاء المدة المتبقية", "hide-duration-left": "إخفاء المدة المتبقية",
"hide-github-button": "إخفاء زر رابط GitHub", "hide-github-button": "إخفاء زر رابط GitHub",
"play-on-youtube-music": "شغل في YouTube Music", "play-on-pear-desktop": "شغل في Pear Desktop",
"set-inactivity-timeout": "ضبط مهلة عدم النشاط" "set-inactivity-timeout": "ضبط مهلة عدم النشاط"
}, },
"name": "حالة ديسكورد", "name": "حالة ديسكورد",

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naslov prozora", "label": "Prilagođeni naslov prozora",
"prompt": { "prompt": {
"label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)", "label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)",
"placeholder": "Primjer: YouTube Music" "placeholder": "Primjer: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {

View File

@ -154,7 +154,7 @@
"label": "Títol personalitzat de la finestra", "label": "Títol personalitzat de la finestra",
"prompt": { "prompt": {
"label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)", "label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)",
"placeholder": "Exemple: YouTube Music" "placeholder": "Exemple: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reinicia l'aplicació", "restart": "Reinicia l'aplicació",
"show": "Mostra la finestra", "show": "Mostra la finestra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mode ambient" "name": "Mode ambient"
}, },
"amuse": { "amuse": {
"description": "Afegeix suport a Youtube Music per el widget \"now playing\" d'Amuse per 6K Labs", "description": "Afegeix suport a Pear Desktop per el widget \"now playing\" d'Amuse per 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó." "query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó."
@ -369,11 +369,11 @@
"name": "Desenfoca la barra de navegació" "name": "Desenfoca la barra de navegació"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Esquiva la verificació d'edat de YouTube", "description": "Esquiva la verificació d'edat de Music Player",
"name": "Esquiva les restriccions d'edat" "name": "Esquiva les restriccions d'edat"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtítols per les pistes d'àudio de YouTube Music", "description": "Selector de subtítols per les pistes d'àudio de Pear Desktop",
"menu": { "menu": {
"autoload": "Selecciona automàticament l'últim subtítol emprat", "autoload": "Selecciona automàticament l'últim subtítol emprat",
"disable-captions": "Sense subtítols per defecte" "disable-captions": "Sense subtítols per defecte"
@ -456,14 +456,14 @@
"disconnected": "Desconnectat", "disconnected": "Desconnectat",
"hide-duration-left": "Amaga la durada restant", "hide-duration-left": "Amaga la durada restant",
"hide-github-button": "Amaga el botó de l'enllaç a GitHub", "hide-github-button": "Amaga el botó de l'enllaç a GitHub",
"play-on-youtube-music": "Reprodueix a YouTube Music", "play-on-pear-desktop": "Reprodueix a Pear Desktop",
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat", "set-inactivity-timeout": "Estableix temps d'espera d'inactivitat",
"set-status-display-type": { "set-status-display-type": {
"label": "Text d'estat", "label": "Text d'estat",
"submenu": { "submenu": {
"artist": "Escoltant {artist}", "artist": "Escoltant {artist}",
"title": "Escoltant {song title}", "title": "Escoltant {song title}",
"youtube-music": "Escoltant YouTube Music" "pear-desktop": "Escoltant Pear Desktop"
} }
} }
}, },

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Benutzerdefinierter Fenstertitel", "label": "Benutzerdefinierter Fenstertitel",
"prompt": { "prompt": {
"label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)", "label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)",
"placeholder": "Beispiel: YouTube Music" "placeholder": "Beispiel: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Anwendung neu starten", "restart": "Anwendung neu starten",
"show": "Fenster anzeigen", "show": "Fenster anzeigen",
"tooltip": { "tooltip": {
"default": "YouTube Musik", "default": "Pear Desktop",
"with-song-info": "YouTube Musik: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -369,11 +369,11 @@
"name": "Verschwommene Navigationsleiste" "name": "Verschwommene Navigationsleiste"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Youtubes Altersbestätigung umgehen", "description": "Music Player Altersbestätigung umgehen",
"name": "Altersbeschränkungen umgehen" "name": "Altersbeschränkungen umgehen"
}, },
"captions-selector": { "captions-selector": {
"description": "Untertitelwähler für YouTube Music-Audio-Lieder", "description": "Untertitelwähler für Pear Desktop-Audio-Lieder",
"menu": { "menu": {
"autoload": "Wähle automatisch den zuletzt verwendeten Untertitel", "autoload": "Wähle automatisch den zuletzt verwendeten Untertitel",
"disable-captions": "Standardmäßig keine Untertitel" "disable-captions": "Standardmäßig keine Untertitel"
@ -456,14 +456,14 @@
"disconnected": "Getrennt", "disconnected": "Getrennt",
"hide-duration-left": "Verbleibende Zeit verstecken", "hide-duration-left": "Verbleibende Zeit verstecken",
"hide-github-button": "Knopf mit Link zu GitHub ausblenden", "hide-github-button": "Knopf mit Link zu GitHub ausblenden",
"play-on-youtube-music": "Auf YouTube Music abspielen", "play-on-pear-desktop": "Auf Pear Desktop abspielen",
"set-inactivity-timeout": "Inaktivitätstimeout setzen", "set-inactivity-timeout": "Inaktivitätstimeout setzen",
"set-status-display-type": { "set-status-display-type": {
"label": "Status Text", "label": "Status Text",
"submenu": { "submenu": {
"artist": "Hört {artist} zu", "artist": "Hört {artist} zu",
"title": "Du hörst {song title}", "title": "Du hörst {song title}",
"youtube-music": "Hört YouTube Music" "pear-desktop": "Hört Pear Desktop"
} }
} }
}, },

View File

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

View File

@ -160,7 +160,7 @@
"label": "Custom window title", "label": "Custom window title",
"prompt": { "prompt": {
"label": "Enter custom window title: (leave empty to disable)", "label": "Enter custom window title: (leave empty to disable)",
"placeholder": "Example: YouTube Music" "placeholder": "Example: Pear Desktop"
} }
}, },
"remove-upgrade-button": "Remove upgrade button", "remove-upgrade-button": "Remove upgrade button",
@ -208,8 +208,8 @@
"restart": "Restart App", "restart": "Restart App",
"show": "Show window", "show": "Show window",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambient Mode" "name": "Ambient Mode"
}, },
"amuse": { "amuse": {
"description": "Adds YouTube Music support for the Amuse now playing widget by 6K Labs", "description": "Adds Pear Desktop support for the Amuse now playing widget by 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API server is running. GET /query to get song info." "query": "Amuse API server is running. GET /query to get song info."
@ -369,11 +369,11 @@
"name": "Blur Navigation Bar" "name": "Blur Navigation Bar"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypass YouTube's age verification", "description": "Bypass Music Player's age verification",
"name": "Bypass Age Restrictions" "name": "Bypass Age Restrictions"
}, },
"captions-selector": { "captions-selector": {
"description": "Caption selector for YouTube Music audio tracks", "description": "Caption selector for Pear Desktop audio tracks",
"menu": { "menu": {
"autoload": "Automatically select last used caption", "autoload": "Automatically select last used caption",
"disable-captions": "No captions by default" "disable-captions": "No captions by default"
@ -456,12 +456,12 @@
"disconnected": "Disconnected", "disconnected": "Disconnected",
"hide-duration-left": "Hide duration left", "hide-duration-left": "Hide duration left",
"hide-github-button": "Hide GitHub link Button", "hide-github-button": "Hide GitHub link Button",
"play-on-youtube-music": "Play on YouTube Music", "play-on-pear-desktop": "Play on Pear Desktop",
"set-inactivity-timeout": "Set inactivity timeout", "set-inactivity-timeout": "Set inactivity timeout",
"set-status-display-type": { "set-status-display-type": {
"label": "Status text", "label": "Status text",
"submenu": { "submenu": {
"youtube-music": "Listening to YouTube Music", "pear-desktop": "Listening to Pear Desktop",
"artist": "Listening to {artist}", "artist": "Listening to {artist}",
"title": "Listening to {song title}" "title": "Listening to {song title}"
} }

View File

@ -154,7 +154,7 @@
"label": "Título de ventana personalizado", "label": "Título de ventana personalizado",
"prompt": { "prompt": {
"label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)", "label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)",
"placeholder": "Ejemplo: YouTube Music" "placeholder": "Ejemplo: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar la aplicación", "restart": "Reiniciar la aplicación",
"show": "Mostrar ventana", "show": "Mostrar ventana",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Agrega soporte a YouTube Music para el widget \"reproduciendo\" de Amuse por 6K Labs", "description": "Agrega soporte a Pear Desktop para el widget \"reproduciendo\" de Amuse por 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción." "query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción."
@ -369,11 +369,11 @@
"name": "Desenfocar barra de navegación" "name": "Desenfocar barra de navegación"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Saltarse la verificación de edad de YouTube", "description": "Saltarse la verificación de edad de Music Player",
"name": "Saltarse las restricciones de edad" "name": "Saltarse las restricciones de edad"
}, },
"captions-selector": { "captions-selector": {
"description": "Selector de subtítulos para pistas de audio de YouTube Music", "description": "Selector de subtítulos para pistas de audio de Pear Desktop",
"menu": { "menu": {
"autoload": "Seleccionar automáticamente el último subtítulo utilizado", "autoload": "Seleccionar automáticamente el último subtítulo utilizado",
"disable-captions": "Sin subtítulos por defecto" "disable-captions": "Sin subtítulos por defecto"
@ -456,14 +456,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar la duración restante", "hide-duration-left": "Ocultar la duración restante",
"hide-github-button": "Ocultar el botón de enlace a GitHub", "hide-github-button": "Ocultar el botón de enlace a GitHub",
"play-on-youtube-music": "Reproducir en YouTube Music", "play-on-pear-desktop": "Reproducir en Pear Desktop",
"set-inactivity-timeout": "Establecer tiempo de inactividad", "set-inactivity-timeout": "Establecer tiempo de inactividad",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de estado", "label": "Texto de estado",
"submenu": { "submenu": {
"artist": "Escuchando a {artist}", "artist": "Escuchando a {artist}",
"title": "Escuchando {song title}", "title": "Escuchando {song title}",
"youtube-music": "Escuchando YouTube Music" "pear-desktop": "Escuchando Pear Desktop"
} }
} }
}, },

View File

@ -125,8 +125,8 @@
"restart": "Käivita rakendus uuesti", "restart": "Käivita rakendus uuesti",
"show": "Näita akent", "show": "Näita akent",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },

View File

@ -280,7 +280,7 @@
"name": "حالت محیطی" "name": "حالت محیطی"
}, },
"amuse": { "amuse": {
"description": "حالا ویجت Amuse از YouTube Music هم پشتیبانی می‌کنه! (توسط 6K Labs)", "description": "حالا ویجت Amuse از Pear Desktop هم پشتیبانی می‌کنه! (توسط 6K Labs)",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید." "query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید."
@ -436,7 +436,7 @@
"disconnected": "اتصال قطع شد", "disconnected": "اتصال قطع شد",
"hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده", "hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده",
"hide-github-button": "مخفی کردن دکمه لینک گیت هاب", "hide-github-button": "مخفی کردن دکمه لینک گیت هاب",
"play-on-youtube-music": "پخش در یوتیوب موزیک", "play-on-pear-desktop": "پخش در یوتیوب موزیک",
"set-inactivity-timeout": "تنظیم زمان عدم فعالیت" "set-inactivity-timeout": "تنظیم زمان عدم فعالیت"
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Titre de fenêtre personnalisé", "label": "Titre de fenêtre personnalisé",
"prompt": { "prompt": {
"label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)", "label": "Entrés un titre de fenêtre : (Laissé vide pour déactiver)",
"placeholder": "Exemple : YouTube Musique" "placeholder": "Exemple : Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Redémarrer l'application", "restart": "Redémarrer l'application",
"show": "Afficher la fenêtre", "show": "Afficher la fenêtre",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mode ambiant" "name": "Mode ambiant"
}, },
"amuse": { "amuse": {
"description": "Ajout de la prise en charge de YouTube Music pour le widget Amuse now playing de 6K Labs", "description": "Ajout de la prise en charge de Pear Desktop pour le widget Amuse now playing de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Le serveur API Amuse est en cours d'exécution. Envoyez une requête GET /query pour obtenir des informations sur la chanson." "query": "Le serveur API Amuse est en cours d'exécution. Envoyez une requête GET /query pour obtenir des informations sur la chanson."
@ -369,11 +369,11 @@
"name": "Barre de navigation floue" "name": "Barre de navigation floue"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Contourner la vérification de l'âge de YouTube", "description": "Contourner la vérification de l'âge de Music Player",
"name": "Contourner les restrictions dâge" "name": "Contourner les restrictions dâge"
}, },
"captions-selector": { "captions-selector": {
"description": "Sélecteur de sous-titres pour les pistes audio YouTube Music", "description": "Sélecteur de sous-titres pour les pistes audio Pear Desktop",
"menu": { "menu": {
"autoload": "Sélectionner automatiquement la dernière légende utilisée", "autoload": "Sélectionner automatiquement la dernière légende utilisée",
"disable-captions": "Pas de sous-titres par défaut" "disable-captions": "Pas de sous-titres par défaut"
@ -456,14 +456,14 @@
"disconnected": "Déconnecté", "disconnected": "Déconnecté",
"hide-duration-left": "Masquer la durée restante", "hide-duration-left": "Masquer la durée restante",
"hide-github-button": "Masquer le bouton du lien GitHub", "hide-github-button": "Masquer le bouton du lien GitHub",
"play-on-youtube-music": "Jouer sur YouTube Music", "play-on-pear-desktop": "Jouer sur Pear Desktop",
"set-inactivity-timeout": "Définir le délai d'inactivité", "set-inactivity-timeout": "Définir le délai d'inactivité",
"set-status-display-type": { "set-status-display-type": {
"label": "Texte d'état", "label": "Texte d'état",
"submenu": { "submenu": {
"artist": "Écoute {artiste}", "artist": "Écoute {artiste}",
"title": "Écoute {titre de la chanson}", "title": "Écoute {titre de la chanson}",
"youtube-music": "Écoute YouTube Music" "pear-desktop": "Écoute Pear Desktop"
} }
} }
}, },

View File

@ -279,7 +279,7 @@
"name": "מצב אווירה" "name": "מצב אווירה"
}, },
"amuse": { "amuse": {
"description": "מוסיף תמיכה ב-YouTube Music עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs", "description": "מוסיף תמיכה ב-Pear Desktop עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs",
"name": "משעשע", "name": "משעשע",
"response": { "response": {
"query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query." "query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query."
@ -365,7 +365,7 @@
"name": "עקוף את ההחמרות של הגיל" "name": "עקוף את ההחמרות של הגיל"
}, },
"captions-selector": { "captions-selector": {
"description": "בורר כתוביות עבור רצועות אודיו של YouTube Music", "description": "בורר כתוביות עבור רצועות אודיו של Pear Desktop",
"menu": { "menu": {
"autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה", "autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה",
"disable-captions": "ברירת מחד ללא כתוביות" "disable-captions": "ברירת מחד ללא כתוביות"
@ -419,7 +419,7 @@
"connected": "מחובר", "connected": "מחובר",
"disconnected": "מנותק", "disconnected": "מנותק",
"hide-github-button": "הסתר את לחצן הקישור של GitHub", "hide-github-button": "הסתר את לחצן הקישור של GitHub",
"play-on-youtube-music": "הפעל ביוטיוב מיוזיק", "play-on-pear-desktop": "הפעל ביוטיוב מיוזיק",
"set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות" "set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות"
} }
}, },

View File

@ -287,7 +287,7 @@
"name": "अम्बिएन्ट मोड्" "name": "अम्बिएन्ट मोड्"
}, },
"amuse": { "amuse": {
"description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए YouTube म्यूजिक समर्थन जोड़ा गया", "description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए Music Player म्यूजिक समर्थन जोड़ा गया",
"name": "मन बहलाना", "name": "मन बहलाना",
"response": { "response": {
"query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।" "query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।"
@ -369,11 +369,11 @@
"name": "नेविगेशन बार को ब्लर करें" "name": "नेविगेशन बार को ब्लर करें"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube आयु की जांच को बायपास करें", "description": "Music Player आयु की जांच को बायपास करें",
"name": "आयु प्रतिबंध को बायपास करें" "name": "आयु प्रतिबंध को बायपास करें"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता", "description": "Pear Desktop म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता",
"menu": { "menu": {
"autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें", "autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें",
"disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं" "disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं"
@ -450,7 +450,7 @@
"disconnected": "डिस्कनेक्ट किया गया", "disconnected": "डिस्कनेक्ट किया गया",
"hide-duration-left": "शेष अवधि छिपाएँ", "hide-duration-left": "शेष अवधि छिपाएँ",
"hide-github-button": "GitHub लिंक के बटन को छिपाएँ", "hide-github-button": "GitHub लिंक के बटन को छिपाएँ",
"play-on-youtube-music": "YouTube म्यूज़िक पर चलाएँ", "play-on-pear-desktop": "Pear Desktop म्यूज़िक पर चलाएँ",
"set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें" "set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें"
}, },
"name": "डिस्कॉर्ड रिच प्रेजेंस", "name": "डिस्कॉर्ड रिच प्रेजेंस",

View File

@ -201,8 +201,8 @@
"restart": "Ponovo Pokreni Aplikaciju", "restart": "Ponovo Pokreni Aplikaciju",
"show": "Prikaži prozor", "show": "Prikaži prozor",
"tooltip": { "tooltip": {
"default": "YouTube Glazba", "default": "Pear Desktop",
"with-song-info": "YouTube Glazba: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +280,7 @@
"name": "Ambijentalni Način" "name": "Ambijentalni Način"
}, },
"amuse": { "amuse": {
"description": "Dodaje podršku za YouTube Glazbu za widget \"sada reproducira\" od Amuse od strane 6K Labs", "description": "Dodaje podršku za Pear Desktop za widget \"sada reproducira\" od Amuse od strane 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi." "query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi."
@ -362,11 +362,11 @@
"name": "Zamagli Navigacijsku Traku" "name": "Zamagli Navigacijsku Traku"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Zaobiđi YouTubeovu provjeru dobi", "description": "Zaobiđi Music Player provjeru dobi",
"name": "Zaobiđi dobna ograničenja" "name": "Zaobiđi dobna ograničenja"
}, },
"captions-selector": { "captions-selector": {
"description": "Izbornik titlova za audiozapise od YouTube Musica", "description": "Izbornik titlova za audiozapise od Pear Desktopa",
"menu": { "menu": {
"autoload": "Automatski izaberi posljednje korištene titlove", "autoload": "Automatski izaberi posljednje korištene titlove",
"disable-captions": "Bez titlova" "disable-captions": "Bez titlova"
@ -436,7 +436,7 @@
"disconnected": "Odspojen", "disconnected": "Odspojen",
"hide-duration-left": "Sakrij preostalo vrijeme", "hide-duration-left": "Sakrij preostalo vrijeme",
"hide-github-button": "Sakrij gumb sa GitHub poveznicom", "hide-github-button": "Sakrij gumb sa GitHub poveznicom",
"play-on-youtube-music": "Reproduciraj na YouTube Musicu", "play-on-pear-desktop": "Reproduciraj na Pear Desktopu",
"set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)" "set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)"
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",

View File

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

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Personalizza titolo finestra", "label": "Personalizza titolo finestra",
"prompt": { "prompt": {
"label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)", "label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)",
"placeholder": "Esempio: YouTube Music" "placeholder": "Esempio: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Riavvia l'app", "restart": "Riavvia l'app",
"show": "Mostra finestra", "show": "Mostra finestra",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modalità Ambiente" "name": "Modalità Ambiente"
}, },
"amuse": { "amuse": {
"description": "Aggiunge il supporto a YouTube Music per il widget Amuse Now Playing di 6K Labs", "description": "Aggiunge il supporto a Pear Desktop per il widget Amuse Now Playing di 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani." "query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani."
@ -369,11 +369,11 @@
"name": "Barra di navigazione trasparente" "name": "Barra di navigazione trasparente"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Bypassa la verifica dell'età di YouTube", "description": "Bypassa la verifica dell'età di Music Player",
"name": "Aggira i limiti d'età" "name": "Aggira i limiti d'età"
}, },
"captions-selector": { "captions-selector": {
"description": "Selettore sottotitolo per le tracce audio di YouTube", "description": "Selettore sottotitolo per le tracce audio di Pear Desktop",
"menu": { "menu": {
"autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato", "autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato",
"disable-captions": "Disattiva i sottotitoli" "disable-captions": "Disattiva i sottotitoli"
@ -456,14 +456,14 @@
"disconnected": "Disconnesso", "disconnected": "Disconnesso",
"hide-duration-left": "Nascondi la durata rimasta", "hide-duration-left": "Nascondi la durata rimasta",
"hide-github-button": "Nascondi il pulsante link a GitHub", "hide-github-button": "Nascondi il pulsante link a GitHub",
"play-on-youtube-music": "Riproduci su YouTube Music", "play-on-pear-desktop": "Riproduci su Pear Desktop",
"set-inactivity-timeout": "Imposta il timeout di inattività", "set-inactivity-timeout": "Imposta il timeout di inattività",
"set-status-display-type": { "set-status-display-type": {
"label": "Testo dello status", "label": "Testo dello status",
"submenu": { "submenu": {
"artist": "Stai ascoltando {artist}", "artist": "Stai ascoltando {artist}",
"title": "Stai ascoltando {song title}", "title": "Stai ascoltando {song title}",
"youtube-music": "Ascoltando YouTube Music" "pear-desktop": "Ascoltando Pear Desktop"
} }
} }
}, },

View File

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

View File

@ -154,7 +154,7 @@
"label": "사용자 정의 앱 제목", "label": "사용자 정의 앱 제목",
"prompt": { "prompt": {
"label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)", "label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)",
"placeholder": "예: YouTube Music" "placeholder": "예: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -287,7 +287,7 @@
"name": "앰비언트 모드" "name": "앰비언트 모드"
}, },
"amuse": { "amuse": {
"description": "6K Labs Amuse의 'now playing' 위젯에 YouTube Music 지원 추가", "description": "6K Labs Amuse의 'now playing' 위젯에 Pear Desktop 지원 추가",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요." "query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요."
@ -373,7 +373,7 @@
"name": "나이 제한 우회" "name": "나이 제한 우회"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music 트랙용 자막 선택기입니다", "description": "Pear Desktop 트랙용 자막 선택기입니다",
"menu": { "menu": {
"autoload": "마지막으로 사용한 자막을 자동으로 선택", "autoload": "마지막으로 사용한 자막을 자동으로 선택",
"disable-captions": "기본 자막 제거" "disable-captions": "기본 자막 제거"
@ -456,14 +456,14 @@
"disconnected": "연결 해제 됨", "disconnected": "연결 해제 됨",
"hide-duration-left": "남은 재생 시간 숨기기", "hide-duration-left": "남은 재생 시간 숨기기",
"hide-github-button": "GitHub 링크 버튼 숨기기", "hide-github-button": "GitHub 링크 버튼 숨기기",
"play-on-youtube-music": "유튜브 뮤직에서 재생", "play-on-pear-desktop": "유튜브 뮤직에서 재생",
"set-inactivity-timeout": "비활성 시간 제한 설정", "set-inactivity-timeout": "비활성 시간 제한 설정",
"set-status-display-type": { "set-status-display-type": {
"label": "상태 텍스트", "label": "상태 텍스트",
"submenu": { "submenu": {
"artist": "{아티스트} 듣는 중", "artist": "{아티스트} 듣는 중",
"title": "{곡 제목} 듣는 중", "title": "{곡 제목} 듣는 중",
"youtube-music": "YouTube Music 듣는 중" "pear-desktop": "Pear Desktop 듣는 중"
} }
} }
}, },

View File

@ -152,7 +152,7 @@
"submenu": { "submenu": {
"custom-window-title": { "custom-window-title": {
"prompt": { "prompt": {
"placeholder": "Pavyzdys: YouTube Music" "placeholder": "Pavyzdys: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -206,8 +206,8 @@
"restart": "Perkrauti programą", "restart": "Perkrauti programą",
"show": "Rodyti langą", "show": "Rodyti langą",
"tooltip": { "tooltip": {
"default": "Youtube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -285,7 +285,7 @@
"name": "Aplinkos rėžimas" "name": "Aplinkos rėžimas"
}, },
"amuse": { "amuse": {
"description": "Prideda Youtube Muzika palaikyma Amuse grojimo valdikliui pagal 6K Labs", "description": "Prideda Pear Desktop palaikyma Amuse grojimo valdikliui pagal 6K Labs",
"name": "Amuse (Platforma Dainininkams)", "name": "Amuse (Platforma Dainininkams)",
"response": { "response": {
"query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija." "query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija."
@ -343,11 +343,11 @@
"name": "Sulieti Navigacijos Lentą" "name": "Sulieti Navigacijos Lentą"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apeiti \"Youtube\" amžiaus patikrinimą", "description": "Apeiti \"Music Player\" amžiaus patikrinimą",
"name": "Apeiti Amžiaus Apribojimus" "name": "Apeiti Amžiaus Apribojimus"
}, },
"captions-selector": { "captions-selector": {
"description": "„YouTube Music“ Garso takelių antraščių parinkiklis", "description": "„Pear Desktop“ Garso takelių antraščių parinkiklis",
"menu": { "menu": {
"autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę", "autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę",
"disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės" "disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės"
@ -427,13 +427,13 @@
"disconnected": "Atsijungta", "disconnected": "Atsijungta",
"hide-duration-left": "Slėpti kiek liko laiko", "hide-duration-left": "Slėpti kiek liko laiko",
"hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką", "hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką",
"play-on-youtube-music": "Leisti ant \"Youtube Music\"", "play-on-pear-desktop": "Leisti ant \"Pear Desktop\"",
"set-inactivity-timeout": "Nustatyti neveiklumo laiką", "set-inactivity-timeout": "Nustatyti neveiklumo laiką",
"set-status-display-type": { "set-status-display-type": {
"submenu": { "submenu": {
"artist": "Klausosi {artist]", "artist": "Klausosi {artist]",
"title": "Klausosi {song title}", "title": "Klausosi {song title}",
"youtube-music": "Klausosi Youtube Music" "pear-desktop": "Klausosi Pear Desktop"
} }
} }
}, },

View File

@ -156,7 +156,7 @@
"hide": "Paslēpt", "hide": "Paslēpt",
"label": "Like pogas" "label": "Like pogas"
}, },
"remove-upgrade-button": "Noslēpt YouTube Premium pogu", "remove-upgrade-button": "Noslēpt Premium pogu",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -201,8 +201,8 @@
"restart": "Restartēt Lietotni", "restart": "Restartēt Lietotni",
"show": "Rādīt logu", "show": "Rādīt logu",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -280,7 +280,7 @@
"name": "Ambientais Režīms" "name": "Ambientais Režīms"
}, },
"amuse": { "amuse": {
"description": "Pievieno YouTube Music atblastu priekš Amuse \"tagad spēlē\" no 6K Labs", "description": "Pievieno Pear Desktop atblastu priekš Amuse \"tagad spēlē\" no 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info." "query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info."
@ -362,11 +362,11 @@
"name": "Izplūdusi Navigācijas Josla" "name": "Izplūdusi Navigācijas Josla"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Apiet YouTube vecuma pārbaudi", "description": "Apiet Music Player vecuma pārbaudi",
"name": "Apiet Vecuma Ierobežojumus" "name": "Apiet Vecuma Ierobežojumus"
}, },
"captions-selector": { "captions-selector": {
"description": "Subtitru izvēlne priekš YouTube Music audio ceļiem", "description": "Subtitru izvēlne priekš Pear Desktop audio ceļiem",
"menu": { "menu": {
"autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus", "autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus",
"disable-captions": "Bez subtitriem pēc noklusējuma" "disable-captions": "Bez subtitriem pēc noklusējuma"
@ -436,7 +436,7 @@
"disconnected": "Atvienojies", "disconnected": "Atvienojies",
"hide-duration-left": "Paslēpt cik palika laika", "hide-duration-left": "Paslēpt cik palika laika",
"hide-github-button": "Paslēpt GitHub saites pogu", "hide-github-button": "Paslēpt GitHub saites pogu",
"play-on-youtube-music": "Atskaņot uz YouTube Music", "play-on-pear-desktop": "Atskaņot uz Pear Desktop",
"set-inactivity-timeout": "Iestatīt neaktivitātes taimeru" "set-inactivity-timeout": "Iestatīt neaktivitātes taimeru"
}, },
"name": "Discord Rich Presence", "name": "Discord Rich Presence",

View File

@ -154,7 +154,7 @@
"label": "Tajuk tetingkap tersuai", "label": "Tajuk tetingkap tersuai",
"prompt": { "prompt": {
"label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)", "label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)",
"placeholder": "Contoh: YouTube Music" "placeholder": "Contoh: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Mulakan Semula Aplikasi", "restart": "Mulakan Semula Aplikasi",
"show": "Papar tetingkap", "show": "Papar tetingkap",
"tooltip": { "tooltip": {
"default": "YouTube Muzik", "default": "Pear Desktop",
"with-song-info": "YouTube Muzik : {{artist}} - {{title}}" "with-song-info": "Pear Desktop : {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Mod Sekitaran" "name": "Mod Sekitaran"
}, },
"amuse": { "amuse": {
"description": "Menambahkan sokongan YouTube Music untuk widget sedang dimain Amuse oleh 6K Labs", "description": "Menambahkan sokongan Pear Desktop untuk widget sedang dimain Amuse oleh 6K Labs",
"name": "Terhibur", "name": "Terhibur",
"response": { "response": {
"query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu." "query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu."
@ -369,11 +369,11 @@
"name": "Kaburkan Bar navigasi" "name": "Kaburkan Bar navigasi"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Pintas verifikasi umur Youtube", "description": "Pintas verifikasi umur Music Player",
"name": "Pintas Sekatan Umur" "name": "Pintas Sekatan Umur"
}, },
"captions-selector": { "captions-selector": {
"description": "Pemilih kapsyen untuk trek audio Youtube Music", "description": "Pemilih kapsyen untuk trek audio Pear Desktop",
"menu": { "menu": {
"autoload": "Pilih kapsyen terakhir diguna secara automatik", "autoload": "Pilih kapsyen terakhir diguna secara automatik",
"disable-captions": "Tiada kapsyen secara lalai" "disable-captions": "Tiada kapsyen secara lalai"
@ -456,14 +456,14 @@
"disconnected": "Tidak disambungkan", "disconnected": "Tidak disambungkan",
"hide-duration-left": "Sembunyikan tempoh yang tinggal", "hide-duration-left": "Sembunyikan tempoh yang tinggal",
"hide-github-button": "Sembunyikan Butang pautan GitHub", "hide-github-button": "Sembunyikan Butang pautan GitHub",
"play-on-youtube-music": "Main di YouTube Music", "play-on-pear-desktop": "Main di Pear Desktop",
"set-inactivity-timeout": "Tetapkan tamat masa tidak aktif", "set-inactivity-timeout": "Tetapkan tamat masa tidak aktif",
"set-status-display-type": { "set-status-display-type": {
"label": "Teks status", "label": "Teks status",
"submenu": { "submenu": {
"artist": "Sedang mendengar {artist}", "artist": "Sedang mendengar {artist}",
"title": "Sedang mendengar {tajuk lagu}", "title": "Sedang mendengar {tajuk lagu}",
"youtube-music": "Mendengar YouTube Music" "pear-desktop": "Mendengar Pear Desktop"
} }
} }
}, },

View File

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

View File

@ -436,7 +436,7 @@
"disconnected": "डिसकन्एक्टेड", "disconnected": "डिसकन्एक्टेड",
"hide-duration-left": "बाकी समय लुकाऊ", "hide-duration-left": "बाकी समय लुकाऊ",
"hide-github-button": "GitHub लिंक लुकाऊ", "hide-github-button": "GitHub लिंक लुकाऊ",
"play-on-youtube-music": "YouTube music मा बजाउ", "play-on-pear-desktop": "Pear Desktop मा बजाउ",
"set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख" "set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख"
}, },
"name": "डिसकार्ड रिच प्रीसेंस", "name": "डिसकार्ड रिच प्रीसेंस",

View File

@ -154,7 +154,7 @@
"label": "Aangepaste venstertitel", "label": "Aangepaste venstertitel",
"prompt": { "prompt": {
"label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)", "label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)",
"placeholder": "Voorbeeld: Youtube Music" "placeholder": "Voorbeeld: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Herstarten App", "restart": "Herstarten App",
"show": "Weergeven Venster", "show": "Weergeven Venster",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Omgevingsmodus" "name": "Omgevingsmodus"
}, },
"amuse": { "amuse": {
"description": "Voegt YouTube Music ondersteuning toe voor de Amuse now playing widget van 6K Labs", "description": "Voegt Pear Desktop ondersteuning toe voor de Amuse now playing widget van 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API server loopt. Gebruik /query voor nummer informatie." "query": "Amuse API server loopt. Gebruik /query voor nummer informatie."
@ -369,11 +369,11 @@
"name": "Vervagen Navigatiebalk" "name": "Vervagen Navigatiebalk"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Omzeil de leeftijdsverificatie van YouTube", "description": "Omzeil de leeftijdsverificatie van Music Player",
"name": "Leeftijdsbeperkingen Omzeilen" "name": "Leeftijdsbeperkingen Omzeilen"
}, },
"captions-selector": { "captions-selector": {
"description": "Ondertitelkeuze voor YouTube Music-audiotracks", "description": "Ondertitelkeuze voor Pear Desktop-audiotracks",
"menu": { "menu": {
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren", "autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
"disable-captions": "Standaard geen ondertitels" "disable-captions": "Standaard geen ondertitels"
@ -456,14 +456,14 @@
"disconnected": "Verbinding verbroken", "disconnected": "Verbinding verbroken",
"hide-duration-left": "Verberg resterende tijd", "hide-duration-left": "Verberg resterende tijd",
"hide-github-button": "GitHub-knop verbergen", "hide-github-button": "GitHub-knop verbergen",
"play-on-youtube-music": "Afspelen op YouTube Music", "play-on-pear-desktop": "Afspelen op Pear Desktop",
"set-inactivity-timeout": "Inactiviteitstime-out instellen", "set-inactivity-timeout": "Inactiviteitstime-out instellen",
"set-status-display-type": { "set-status-display-type": {
"label": "Status tekst", "label": "Status tekst",
"submenu": { "submenu": {
"artist": "Naar {artist} aan het luisteren", "artist": "Naar {artist} aan het luisteren",
"title": "Naar {song title} aan het luisteren", "title": "Naar {song title} aan het luisteren",
"youtube-music": "Naar Youtube Music aan het luisteren" "pear-desktop": "Naar Pear Desktop aan het luisteren"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Niestandardowy tytuł okna", "label": "Niestandardowy tytuł okna",
"prompt": { "prompt": {
"label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):", "label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć):",
"placeholder": "Przykład: YouTube Music" "placeholder": "Przykład: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,7 +208,7 @@
"restart": "Uruchom ponownie aplikację", "restart": "Uruchom ponownie aplikację",
"show": "Pokaż okno", "show": "Pokaż okno",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "{{title}} (autorstwa {{artist}}) - YT Music" "with-song-info": "{{title}} (autorstwa {{artist}}) - YT Music"
} }
} }
@ -287,14 +287,14 @@
"name": "Tryb otoczenia" "name": "Tryb otoczenia"
}, },
"amuse": { "amuse": {
"description": "Wspiera integrację YouTube Music z widgetami Amuse (od 6K Labs)", "description": "Wspiera integrację Pear Desktop z widgetami Amuse (od 6K Labs)",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze." "query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze."
} }
}, },
"api-server": { "api-server": {
"description": "Pozwala na kontrolowanie YouTube Music poprzez podłączenie specjalnego serwera API", "description": "Pozwala na kontrolowanie Pear Desktop poprzez podłączenie specjalnego serwera API",
"dialog": { "dialog": {
"request": { "request": {
"buttons": { "buttons": {
@ -324,7 +324,7 @@
"label": "Port" "label": "Port"
} }
}, },
"name": "YouTube Music API", "name": "Pear Desktop API",
"prompt": { "prompt": {
"hostname": { "hostname": {
"label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:", "label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:",
@ -373,7 +373,7 @@
"name": "Omiń ograniczenia wiekowe" "name": "Omiń ograniczenia wiekowe"
}, },
"captions-selector": { "captions-selector": {
"description": "Selektor napisów dla ścieżek audio YouTube Music", "description": "Selektor napisów dla ścieżek audio Pear Desktop",
"menu": { "menu": {
"autoload": "Automatycznie wybierz ostatnio używanych napisów", "autoload": "Automatycznie wybierz ostatnio używanych napisów",
"disable-captions": "Domyślnie, brak napisów" "disable-captions": "Domyślnie, brak napisów"
@ -456,14 +456,14 @@
"disconnected": "Odłączono", "disconnected": "Odłączono",
"hide-duration-left": "Ukryj pozostały czas trwania", "hide-duration-left": "Ukryj pozostały czas trwania",
"hide-github-button": "Ukryj przycisk do GitHub", "hide-github-button": "Ukryj przycisk do GitHub",
"play-on-youtube-music": "Odtwórz w YouTube Music", "play-on-pear-desktop": "Odtwórz w Pear Desktop",
"set-inactivity-timeout": "Ustaw limit czasu bezczynności", "set-inactivity-timeout": "Ustaw limit czasu bezczynności",
"set-status-display-type": { "set-status-display-type": {
"label": "Opis statusu", "label": "Opis statusu",
"submenu": { "submenu": {
"artist": "Słucha {artist}", "artist": "Słucha {artist}",
"title": "Słucha {song title}", "title": "Słucha {song title}",
"youtube-music": "Słucha YouTube Music" "pear-desktop": "Słucha Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Título da janela customizado", "label": "Título da janela customizado",
"prompt": { "prompt": {
"label": "Insira título customizado para a janela: (deixe em branco para desabilitar)", "label": "Insira título customizado para a janela: (deixe em branco para desabilitar)",
"placeholder": "Exemplo: Youtube Music" "placeholder": "Exemplo: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicativo", "restart": "Reiniciar aplicativo",
"show": "Mostrar janela", "show": "Mostrar janela",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Adiciona suporte ao YouTube Music ao widget 'Reproduzindo agora' do Amuse da 6K Labs", "description": "Adiciona suporte ao Pear Desktop ao widget 'Reproduzindo agora' do Amuse da 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Servidor API do Amuse em execução. GET /query para obter informações da música." "query": "Servidor API do Amuse em execução. GET /query para obter informações da música."
@ -369,11 +369,11 @@
"name": "Desfocar barra de navegação" "name": "Desfocar barra de navegação"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Pular a verificação de idade do YouTube", "description": "Pular a verificação de idade do Music Player",
"name": "Ignorar restrições de idade" "name": "Ignorar restrições de idade"
}, },
"captions-selector": { "captions-selector": {
"description": "Seletor de legendas para faixas de áudio do YouTube Music", "description": "Seletor de legendas para faixas de áudio do Pear Desktop",
"menu": { "menu": {
"autoload": "Selecionar automaticamente a última legenda usada", "autoload": "Selecionar automaticamente a última legenda usada",
"disable-captions": "Sem legendas por padrão" "disable-captions": "Sem legendas por padrão"
@ -456,14 +456,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar duração restante", "hide-duration-left": "Ocultar duração restante",
"hide-github-button": "Ocultar botão do GitHub", "hide-github-button": "Ocultar botão do GitHub",
"play-on-youtube-music": "Reproduzir no YouTube Music", "play-on-pear-desktop": "Reproduzir no Pear Desktop",
"set-inactivity-timeout": "Definir tempo limite de inatividade", "set-inactivity-timeout": "Definir tempo limite de inatividade",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de status", "label": "Texto de status",
"submenu": { "submenu": {
"artist": "Ouvindo {artist}", "artist": "Ouvindo {artist}",
"title": "Ouvindo {song title}", "title": "Ouvindo {song title}",
"youtube-music": "Ouvindo YouTube Music" "pear-desktop": "Ouvindo Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Título de janela personalizado", "label": "Título de janela personalizado",
"prompt": { "prompt": {
"label": "Introduza um título: (deixe em branco para desativar)", "label": "Introduza um título: (deixe em branco para desativar)",
"placeholder": "Exemplo: YouTube Music" "placeholder": "Exemplo: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Reiniciar aplicação", "restart": "Reiniciar aplicação",
"show": "Mostrar janela", "show": "Mostrar janela",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Modo ambiente" "name": "Modo ambiente"
}, },
"amuse": { "amuse": {
"description": "Adiciona suporte ao YouTube Music para o widget Amuse now playing de 6K Labs", "description": "Adiciona suporte ao Pear Desktop para o widget Amuse now playing de 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa." "query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa."
@ -369,11 +369,11 @@
"name": "Barra de navegação desfocada" "name": "Barra de navegação desfocada"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Ignorar verificação de idade do YouTube", "description": "Ignorar verificação de idade do Music Player",
"name": "Ignorar restrições de idade" "name": "Ignorar restrições de idade"
}, },
"captions-selector": { "captions-selector": {
"description": "Seletor de legendas para as faixas de áudio do YouTube Music", "description": "Seletor de legendas para as faixas de áudio do Pear Desktop",
"menu": { "menu": {
"autoload": "Selecionar automaticamente a última legenda utilizada", "autoload": "Selecionar automaticamente a última legenda utilizada",
"disable-captions": "Sem legendas por omissão" "disable-captions": "Sem legendas por omissão"
@ -456,14 +456,14 @@
"disconnected": "Desconectado", "disconnected": "Desconectado",
"hide-duration-left": "Ocultar tempo restante", "hide-duration-left": "Ocultar tempo restante",
"hide-github-button": "Ocultar botão GitHub", "hide-github-button": "Ocultar botão GitHub",
"play-on-youtube-music": "Reproduzir em YouTube Music", "play-on-pear-desktop": "Reproduzir em Pear Desktop",
"set-inactivity-timeout": "Definir tempo de inatividade", "set-inactivity-timeout": "Definir tempo de inatividade",
"set-status-display-type": { "set-status-display-type": {
"label": "Texto de estado", "label": "Texto de estado",
"submenu": { "submenu": {
"artist": "A ouvir {artist}", "artist": "A ouvir {artist}",
"title": "A ouvir {song title}", "title": "A ouvir {song title}",
"youtube-music": "A reproduzir YouTube Music" "pear-desktop": "A reproduzir Pear Desktop"
} }
} }
}, },

View File

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

View File

@ -154,7 +154,7 @@
"label": "Собственное название окна", "label": "Собственное название окна",
"prompt": { "prompt": {
"label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)", "label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)",
"placeholder": "Например: YouTube Music" "placeholder": "Например: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -163,7 +163,7 @@
"hide": "Скрывать", "hide": "Скрывать",
"label": "Кнопка лайка" "label": "Кнопка лайка"
}, },
"remove-upgrade-button": "Убрать кнопку Youtube Premium", "remove-upgrade-button": "Убрать кнопку Premium",
"theme": { "theme": {
"dialog": { "dialog": {
"button": { "button": {
@ -208,8 +208,8 @@
"restart": "Перезапустить приложение", "restart": "Перезапустить приложение",
"show": "Показать окно", "show": "Показать окно",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -369,11 +369,11 @@
"name": "Размытие панели навигации" "name": "Размытие панели навигации"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Обход проверки возраста на YouTube", "description": "Обход проверки возраста на Music Player",
"name": "Обход возрастных ограничений" "name": "Обход возрастных ограничений"
}, },
"captions-selector": { "captions-selector": {
"description": "Выбор субтитров для аудиотреков в YouTube Music", "description": "Выбор субтитров для аудиотреков в Pear Desktop",
"menu": { "menu": {
"autoload": "Автоматически выбирать последние использованные субтитры", "autoload": "Автоматически выбирать последние использованные субтитры",
"disable-captions": "Без субтитров по умолчанию" "disable-captions": "Без субтитров по умолчанию"
@ -456,14 +456,14 @@
"disconnected": "Отключено", "disconnected": "Отключено",
"hide-duration-left": "Скрыть сколько осталось времени", "hide-duration-left": "Скрыть сколько осталось времени",
"hide-github-button": "Скрыть ссылку на GitHub", "hide-github-button": "Скрыть ссылку на GitHub",
"play-on-youtube-music": "Воспроизвести на YouTube Music", "play-on-pear-desktop": "Воспроизвести на Pear Desktop",
"set-inactivity-timeout": "Поставить таймер неактивности", "set-inactivity-timeout": "Поставить таймер неактивности",
"set-status-display-type": { "set-status-display-type": {
"label": "Текст статуса", "label": "Текст статуса",
"submenu": { "submenu": {
"artist": "Слушает {исполнитель}", "artist": "Слушает {исполнитель}",
"title": "Слушает {название трека}", "title": "Слушает {название трека}",
"youtube-music": "Слушает YouTube Music" "pear-desktop": "Слушает Pear Desktop"
} }
} }
}, },

View File

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

View File

@ -154,7 +154,7 @@
"label": "Vlastný názov okna", "label": "Vlastný názov okna",
"prompt": { "prompt": {
"label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)", "label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)",
"placeholder": "Napríklad: YouTube Music" "placeholder": "Napríklad: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -206,8 +206,8 @@
"restart": "Reštartovať aplikáciu", "restart": "Reštartovať aplikáciu",
"show": "Zobraziť okno", "show": "Zobraziť okno",
"tooltip": { "tooltip": {
"default": "YouTube Hudba", "default": "Pear Desktop",
"with-song-info": "Youtube Hudba: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
} }

View File

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

View File

@ -154,7 +154,7 @@
"label": "Prilagođeni naziv prozora", "label": "Prilagođeni naziv prozora",
"prompt": { "prompt": {
"label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)", "label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)",
"placeholder": "Primer: YouTube Muzika" "placeholder": "Primer: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Ponovo pokreni aplikaciju", "restart": "Ponovo pokreni aplikaciju",
"show": "Prikaži prozor", "show": "Prikaži prozor",
"tooltip": { "tooltip": {
"default": "YouTube Muzika", "default": "Pear Desktop",
"with-song-info": "YouTube Muzika: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambijentalni režim" "name": "Ambijentalni režim"
}, },
"amuse": { "amuse": {
"description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u YouTube Muziku", "description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u Pear Desktop",
"name": "Zabavi", "name": "Zabavi",
"response": { "response": {
"query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri." "query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri."
@ -369,11 +369,11 @@
"name": "Zamuti navigacioni meni" "name": "Zamuti navigacioni meni"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Preskoči starosnu verifikaciju za YouTube", "description": "Preskoči starosnu verifikaciju za Music Player",
"name": "Preskoči starosna ograničenja" "name": "Preskoči starosna ograničenja"
}, },
"captions-selector": { "captions-selector": {
"description": "Odabir prevoda za numere/audio trake na YouTube Muzici", "description": "Odabir prevoda za numere/audio trake na Pear Desktop",
"menu": { "menu": {
"autoload": "Automatski odaberi prethodno odabrani prevod", "autoload": "Automatski odaberi prethodno odabrani prevod",
"disable-captions": "Podrazumevano bez prevoda" "disable-captions": "Podrazumevano bez prevoda"
@ -456,14 +456,14 @@
"disconnected": "Nije povezano", "disconnected": "Nije povezano",
"hide-duration-left": "Sakrij preostalo vreme", "hide-duration-left": "Sakrij preostalo vreme",
"hide-github-button": "Sakrij dugme sa GitHub linkom", "hide-github-button": "Sakrij dugme sa GitHub linkom",
"play-on-youtube-music": "Reprodukuj na YouTube Muzici", "play-on-pear-desktop": "Reprodukuj na Pear Desktop",
"set-inactivity-timeout": "Podesi tajmer za neaktivnost", "set-inactivity-timeout": "Podesi tajmer za neaktivnost",
"set-status-display-type": { "set-status-display-type": {
"label": "Tekst statusa", "label": "Tekst statusa",
"submenu": { "submenu": {
"artist": "Slušanje {artist}", "artist": "Slušanje {artist}",
"title": "Slušanje {song title}", "title": "Slušanje {song title}",
"youtube-music": "Slušanje YouTube muzike" "pear-desktop": "Slušanje Pear Desktop"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Anpassad titel på fönstret", "label": "Anpassad titel på fönstret",
"prompt": { "prompt": {
"label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)", "label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)",
"placeholder": "Exempelvis: YouTube Music" "placeholder": "Exempelvis: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Starta om appen", "restart": "Starta om appen",
"show": "Visa fönster", "show": "Visa fönster",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} {{title}}" "with-song-info": "Pear Desktop: {{artist}} {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambiensläge" "name": "Ambiensläge"
}, },
"amuse": { "amuse": {
"description": "Lägger till stöd för YouTube Music i Amuse Now Playing-widgeten av 6K Labs", "description": "Lägger till stöd för Pear Desktop i Amuse Now Playing-widgeten av 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt." "query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt."
@ -369,11 +369,11 @@
"name": "Suddigt Navigeringsfält" "name": "Suddigt Navigeringsfält"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Hoppa över YouTubes åldersverifiering", "description": "Hoppa över Music Player åldersverifiering",
"name": "Hoppa Över Åldersbegränsningar" "name": "Hoppa Över Åldersbegränsningar"
}, },
"captions-selector": { "captions-selector": {
"description": "Välj textning för YouTube Music-ljudspår", "description": "Välj textning för Pear Desktop-ljudspår",
"menu": { "menu": {
"autoload": "Välj automatiskt senast använda textning", "autoload": "Välj automatiskt senast använda textning",
"disable-captions": "Ingen textning som standard" "disable-captions": "Ingen textning som standard"
@ -456,14 +456,14 @@
"disconnected": "Frånkopplad", "disconnected": "Frånkopplad",
"hide-duration-left": "Dölj återstående tid", "hide-duration-left": "Dölj återstående tid",
"hide-github-button": "Dölj knapp för GitHub-länk", "hide-github-button": "Dölj knapp för GitHub-länk",
"play-on-youtube-music": "Spela på YouTube Music", "play-on-pear-desktop": "Spela på Pear Desktop",
"set-inactivity-timeout": "Ställ in inaktivitetstid", "set-inactivity-timeout": "Ställ in inaktivitetstid",
"set-status-display-type": { "set-status-display-type": {
"label": "Statusmeddelande", "label": "Statusmeddelande",
"submenu": { "submenu": {
"artist": "Lyssnar på {artist}", "artist": "Lyssnar på {artist}",
"title": "Lyssnar på {song title}", "title": "Lyssnar på {song title}",
"youtube-music": "Lyssnar på YouTube Music" "pear-desktop": "Lyssnar på Pear Desktop"
} }
} }
}, },

View File

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

View File

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

View File

@ -154,7 +154,7 @@
"label": "Özel pencere başlığı", "label": "Özel pencere başlığı",
"prompt": { "prompt": {
"label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)", "label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)",
"placeholder": "Örnek: Youtube Music" "placeholder": "Örnek: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Yeniden başlat", "restart": "Yeniden başlat",
"show": "Pencereyi görüntüle", "show": "Pencereyi görüntüle",
"tooltip": { "tooltip": {
"default": "YouTube Müzik", "default": "Pear Desktop",
"with-song-info": "YouTube Müzik: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Ambiyans Modu" "name": "Ambiyans Modu"
}, },
"amuse": { "amuse": {
"description": "6K Labs'ın Amuse oynatma widget'ı için YouTube Music desteği ekler", "description": "6K Labs'ın Amuse oynatma widget'ı için Pear Desktop desteği ekler",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz." "query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz."
@ -369,11 +369,11 @@
"name": "Navigasyon barını bulanıklaştır" "name": "Navigasyon barını bulanıklaştır"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "YouTube yaş doğrulamasını atla", "description": "Music Player yaş doğrulamasını atla",
"name": "Yaş doğrulamasını atla" "name": "Yaş doğrulamasını atla"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music için altyazı seçici", "description": "Pear Desktop için altyazı seçici",
"menu": { "menu": {
"autoload": "Son kullanılan altyazıyı otomatik olarak seç", "autoload": "Son kullanılan altyazıyı otomatik olarak seç",
"disable-captions": "Varsayılan olarak altyazı yok" "disable-captions": "Varsayılan olarak altyazı yok"
@ -456,14 +456,14 @@
"disconnected": "Bağlantı kesildi", "disconnected": "Bağlantı kesildi",
"hide-duration-left": "Kalan süreyi gizle", "hide-duration-left": "Kalan süreyi gizle",
"hide-github-button": "GitHub bağlantısını gizle", "hide-github-button": "GitHub bağlantısını gizle",
"play-on-youtube-music": "YouTube Music de oynat", "play-on-pear-desktop": "Pear Desktop de oynat",
"set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla", "set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla",
"set-status-display-type": { "set-status-display-type": {
"label": "Durum metni", "label": "Durum metni",
"submenu": { "submenu": {
"artist": "{artist} Dinleniyor", "artist": "{artist} Dinleniyor",
"title": "{song title} Dinleniyor", "title": "{song title} Dinleniyor",
"youtube-music": "YouTube Müzik Dinleniyor" "pear-desktop": "Pear Desktop Dinleniyor"
} }
} }
}, },

View File

@ -154,7 +154,7 @@
"label": "Налаштування заголовка вікна", "label": "Налаштування заголовка вікна",
"prompt": { "prompt": {
"label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)", "label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)",
"placeholder": "Приклад: YouTube Music" "placeholder": "Приклад: Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "Перезапустити програму", "restart": "Перезапустити програму",
"show": "Показати вікно", "show": "Показати вікно",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "Режим навколишнього середовища" "name": "Режим навколишнього середовища"
}, },
"amuse": { "amuse": {
"description": "Додає підтримку YouTube Music для віджета Amuse now playing від 6K Labs", "description": "Додає підтримку Pear Desktop для віджета Amuse now playing від 6K Labs",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню." "query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню."
@ -369,11 +369,11 @@
"name": "Розмиття панелі навігації" "name": "Розмиття панелі навігації"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "Обхід перевірки віку на YouTube", "description": "Обхід перевірки віку на Music Player",
"name": "Обхід вікових обмежень" "name": "Обхід вікових обмежень"
}, },
"captions-selector": { "captions-selector": {
"description": "Вибір субтитрів для аудіодоріжок YouTube Music", "description": "Вибір субтитрів для аудіодоріжок Pear Desktop",
"menu": { "menu": {
"autoload": "Автоматичний вибір останніх використаних субтитрів", "autoload": "Автоматичний вибір останніх використаних субтитрів",
"disable-captions": "За замовчуванням субтитри відсутні" "disable-captions": "За замовчуванням субтитри відсутні"
@ -451,12 +451,12 @@
"disconnected": "Від'єднано", "disconnected": "Від'єднано",
"hide-duration-left": "Приховати тривалість, яка залишилася", "hide-duration-left": "Приховати тривалість, яка залишилася",
"hide-github-button": "Приховати посилання на GitHub", "hide-github-button": "Приховати посилання на GitHub",
"play-on-youtube-music": "Слухати на YouTube Music", "play-on-pear-desktop": "Слухати на Pear Desktop",
"set-inactivity-timeout": "Встановити тайм-аут бездіяльності", "set-inactivity-timeout": "Встановити тайм-аут бездіяльності",
"set-status-display-type": { "set-status-display-type": {
"label": "Статус", "label": "Статус",
"submenu": { "submenu": {
"youtube-music": "Відтворення з YouTube Music" "pear-desktop": "Відтворення з Pear Desktop"
} }
} }
}, },

View File

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

View File

@ -154,7 +154,7 @@
"label": "自定义窗口标题", "label": "自定义窗口标题",
"prompt": { "prompt": {
"label": "输入自定义窗口标题:(留空表示停用)", "label": "输入自定义窗口标题:(留空表示停用)",
"placeholder": "示例:YouTube Music" "placeholder": "示例:Pear Desktop"
} }
}, },
"like-buttons": { "like-buttons": {
@ -208,8 +208,8 @@
"restart": "重启应用", "restart": "重启应用",
"show": "显示窗口", "show": "显示窗口",
"tooltip": { "tooltip": {
"default": "YouTube Music", "default": "Pear Desktop",
"with-song-info": "YouTube Music: {{artist}} - {{title}}" "with-song-info": "Pear Desktop: {{artist}} - {{title}}"
} }
} }
}, },
@ -287,7 +287,7 @@
"name": "沉浸模式" "name": "沉浸模式"
}, },
"amuse": { "amuse": {
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持", "description": "为 6K Labs 的 Amuse 正在播放小部件添加 Pear Desktop 支持",
"name": "Amuse", "name": "Amuse",
"response": { "response": {
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。" "query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
@ -369,11 +369,11 @@
"name": "模糊导航栏" "name": "模糊导航栏"
}, },
"bypass-age-restrictions": { "bypass-age-restrictions": {
"description": "绕过 YouTube 年龄验证", "description": "绕过 Music Player 年龄验证",
"name": "绕过年龄验证" "name": "绕过年龄验证"
}, },
"captions-selector": { "captions-selector": {
"description": "YouTube Music 音轨字幕选择器", "description": "Pear Desktop 音轨字幕选择器",
"menu": { "menu": {
"autoload": "自动选择上次使用的字幕", "autoload": "自动选择上次使用的字幕",
"disable-captions": "默认无字幕" "disable-captions": "默认无字幕"
@ -456,14 +456,14 @@
"disconnected": "已断开连接", "disconnected": "已断开连接",
"hide-duration-left": "隐藏剩余时长", "hide-duration-left": "隐藏剩余时长",
"hide-github-button": "隐藏 GitHub 链接按钮", "hide-github-button": "隐藏 GitHub 链接按钮",
"play-on-youtube-music": "转至 YouTube Music 播放", "play-on-pear-desktop": "转至 Pear Desktop 播放",
"set-inactivity-timeout": "设置非活跃时长", "set-inactivity-timeout": "设置非活跃时长",
"set-status-display-type": { "set-status-display-type": {
"label": "状态文本", "label": "状态文本",
"submenu": { "submenu": {
"artist": "在听 {artist}", "artist": "在听 {artist}",
"title": "在听 {song title}", "title": "在听 {song title}",
"youtube-music": "在听 YouTube Music" "pear-desktop": "在听 Pear Desktop"
} }
} }
}, },

View File

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

View File

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

View File

@ -43,7 +43,7 @@ import {
setupProtocolHandler, setupProtocolHandler,
} from '@/providers/protocol-handler'; } from '@/providers/protocol-handler';
import youtubeMusicCSS from '@/youtube-music.css?inline'; import musicPlayerCss from '@/music-player.css?inline';
import { import {
forceLoadMainPlugin, forceLoadMainPlugin,
@ -131,7 +131,7 @@ if (config.get('options.disableHardwareAcceleration')) {
if (is.linux()) { if (is.linux()) {
// Overrides WM_CLASS for X11 to correspond to icon filename // Overrides WM_CLASS for X11 to correspond to icon filename
app.setName('com.github.th_ch.youtube_music'); app.setName('com.github.th_ch.pear_music');
// Stops chromium from launching its own MPRIS service // Stops chromium from launching its own MPRIS service
if (await config.plugins.isEnabled('shortcuts')) { if (await config.plugins.isEnabled('shortcuts')) {
@ -165,7 +165,7 @@ electronDebug({
showDevTools: false, // Disable automatic devTools on new window showDevTools: false, // Disable automatic devTools on new window
}); });
let icon = 'assets/youtube-music.png'; let icon = 'assets/icon.png';
if (process.platform === 'win32') { if (process.platform === 'win32') {
icon = 'assets/generated/icon.ico'; icon = 'assets/generated/icon.ico';
} else if (process.platform === 'darwin') { } else if (process.platform === 'darwin') {
@ -178,7 +178,7 @@ function onClosed() {
mainWindow = null; mainWindow = null;
} }
ipcMain.handle('ytmd:get-main-plugin-names', async () => ipcMain.handle('peard:get-main-plugin-names', async () =>
Object.keys(await mainPlugins()), Object.keys(await mainPlugins()),
); );
@ -186,14 +186,14 @@ const initHook = async (win: BrowserWindow) => {
const allPluginStubs = await allPlugins(); const allPluginStubs = await allPlugins();
ipcMain.handle( ipcMain.handle(
'ytmd:get-config', 'peard:get-config',
(_, id: string) => (_, id: string) =>
deepmerge( deepmerge(
allPluginStubs[id].config ?? { enabled: false }, allPluginStubs[id].config ?? { enabled: false },
config.get(`plugins.${id}`) ?? {}, config.get(`plugins.${id}`) ?? {},
) as PluginConfig, ) as PluginConfig,
); );
ipcMain.handle('ytmd:set-config', (_, name: string, obj: object) => ipcMain.handle('peard:set-config', (_, name: string, obj: object) =>
config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config), config.setPartial(`plugins.${name}`, obj, allPluginStubs[name].config),
); );
@ -292,7 +292,7 @@ const showNeedToRestartDialog = async (id: string) => {
}; };
function initTheme(win: BrowserWindow) { function initTheme(win: BrowserWindow) {
injectCSS(win.webContents, youtubeMusicCSS); injectCSS(win.webContents, musicPlayerCss);
// Load user CSS // Load user CSS
const themes: string[] = config.get('options.themes'); const themes: string[] = config.get('options.themes');
if (Array.isArray(themes)) { if (Array.isArray(themes)) {
@ -503,11 +503,14 @@ async function createMainWindow() {
const url = new URL(event.url); const url = new URL(event.url);
// Workarounds for regions where YTM is restricted // Workarounds for regions where YTM is restricted
if (url.hostname.endsWith('youtube.com') && url.pathname === '/premium') { if (
url.hostname.endsWith('\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com') &&
url.pathname === '/premium'
) {
event.preventDefault(); event.preventDefault();
win.webContents.loadURL( win.webContents.loadURL(
'https://accounts.google.com/ServiceLogin?ltmpl=music&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.youtube.com%252F', 'https://accounts.google.com/ServiceLogin?ltmpl=music&service=\u0079\u006f\u0075\u0074\u0075\u0062\u0065&continue=https%3A%2F%2Fwww.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com%252F',
); );
} }
}); });
@ -660,7 +663,7 @@ app.whenReady().then(async () => {
// Register appID on windows // Register appID on windows
if (is.windows()) { if (is.windows()) {
const appID = 'com.github.th-ch.youtube-music'; const appID = 'com.github.th-ch.pear-music';
app.setAppUserModelId(appID); app.setAppUserModelId(appID);
const appLocation = process.execPath; const appLocation = process.execPath;
const appData = app.getPath('appData'); const appData = app.getPath('appData');
@ -675,7 +678,7 @@ app.whenReady().then(async () => {
'Windows', 'Windows',
'Start Menu', 'Start Menu',
'Programs', 'Programs',
'YouTube Music.lnk', 'Pear Desktop.lnk',
); );
try { try {
// Check if shortcut is registered and valid // Check if shortcut is registered and valid
@ -695,7 +698,7 @@ app.whenReady().then(async () => {
{ {
target: appLocation, target: appLocation,
cwd: path.dirname(appLocation), cwd: path.dirname(appLocation),
description: 'YouTube Music Desktop App - including custom plugins', description: 'Pear Desktop App - including custom plugins',
appUserModelId: appID, appUserModelId: appID,
}, },
); );
@ -804,7 +807,7 @@ app.whenReady().then(async () => {
}, 2000); }, 2000);
autoUpdater.on('update-available', () => { autoUpdater.on('update-available', () => {
const downloadLink = const downloadLink =
'https://github.com/th-ch/youtube-music/releases/latest'; 'https://github.com/pear-devs/pear-desktop/releases/latest';
const dialogOptions: Electron.MessageBoxOptions = { const dialogOptions: Electron.MessageBoxOptions = {
type: 'info', type: 'info',
buttons: [ buttons: [
@ -943,7 +946,7 @@ function removeContentSecurityPolicy(
!details.responseHeaders['access-control-allow-origin'] && !details.responseHeaders['access-control-allow-origin'] &&
!details.responseHeaders['Access-Control-Allow-Origin'] !details.responseHeaders['Access-Control-Allow-Origin']
) { ) {
details.responseHeaders['access-control-allow-origin'] = ['https://music.youtube.com']; details.responseHeaders['access-control-allow-origin'] = ['https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com'];
} }
} }

View File

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

View File

@ -473,7 +473,7 @@ export const mainMenuTemplate = async (
), ),
type: 'normal', type: 'normal',
click() { click() {
const url = 'https://hosted.weblate.org/engage/youtube-music/'; const url = 'https://bit.ly/48n5YF7';
shell.openExternal(url); shell.openExternal(url);
}, },
} as Electron.MenuItemConstructorOptions, } as Electron.MenuItemConstructorOptions,

View File

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

View File

@ -29,22 +29,22 @@ export const backend = createBackend<BackendType, APIServerConfig>({
this.songInfo = songInfo; this.songInfo = songInfo;
}); });
ctx.ipc.on('ytmd:player-api-loaded', () => { ctx.ipc.on('peard:player-api-loaded', () => {
ctx.ipc.send('ytmd:setup-seeked-listener'); ctx.ipc.send('peard:setup-seeked-listener');
ctx.ipc.send('ytmd:setup-time-changed-listener'); ctx.ipc.send('peard:setup-time-changed-listener');
ctx.ipc.send('ytmd:setup-repeat-changed-listener'); ctx.ipc.send('peard:setup-repeat-changed-listener');
ctx.ipc.send('ytmd:setup-like-changed-listener'); ctx.ipc.send('peard:setup-like-changed-listener');
ctx.ipc.send('ytmd:setup-volume-changed-listener'); ctx.ipc.send('peard:setup-volume-changed-listener');
ctx.ipc.send('ytmd:setup-shuffle-changed-listener'); ctx.ipc.send('peard:setup-shuffle-changed-listener');
}); });
ctx.ipc.on( ctx.ipc.on(
'ytmd:repeat-changed', 'peard:repeat-changed',
(mode: RepeatMode) => (this.currentRepeatMode = mode), (mode: RepeatMode) => (this.currentRepeatMode = mode),
); );
ctx.ipc.on( ctx.ipc.on(
'ytmd:volume-changed', 'peard:volume-changed',
(newVolumeState: VolumeState) => (this.volumeState = newVolumeState), (newVolumeState: VolumeState) => (this.volumeState = newVolumeState),
); );
@ -138,7 +138,7 @@ export const backend = createBackend<BackendType, APIServerConfig>({
openapi: '3.1.0', openapi: '3.1.0',
info: { info: {
version: '1.0.0', version: '1.0.0',
title: 'Youtube Music API Server', title: 'Pear Desktop API Server',
description: description:
'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.', 'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.',
}, },

View File

@ -29,7 +29,7 @@ import type { SongInfo } from '@/providers/song-info';
import type { BackendContext } from '@/types/contexts'; import type { BackendContext } from '@/types/contexts';
import type { APIServerConfig } from '../../config'; import type { APIServerConfig } from '../../config';
import type { HonoApp } from '../types'; import type { HonoApp } from '../types';
import type { QueueResponse } from '@/types/youtube-music-desktop-internal'; import type { QueueResponse } from '@/types/music-player-desktop-internal';
import type { Context } from 'hono'; import type { Context } from 'hono';
const routes = { const routes = {
@ -630,7 +630,7 @@ export const register = (
app.openapi(routes.getShuffleState, async (ctx) => { app.openapi(routes.getShuffleState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => { const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once( ipcMain.once(
'ytmd:get-shuffle-response', 'peard:get-shuffle-response',
(_, isShuffled: boolean | undefined) => { (_, isShuffled: boolean | undefined) => {
return resolve(!!isShuffled); return resolve(!!isShuffled);
}, },
@ -693,7 +693,7 @@ export const register = (
app.openapi(routes.getFullscreenState, async (ctx) => { app.openapi(routes.getFullscreenState, async (ctx) => {
const stateResponsePromise = new Promise<boolean>((resolve) => { const stateResponsePromise = new Promise<boolean>((resolve) => {
ipcMain.once( ipcMain.once(
'ytmd:set-fullscreen', 'peard:set-fullscreen',
(_, isFullscreen: boolean | undefined) => { (_, isFullscreen: boolean | undefined) => {
return resolve(!!isFullscreen); return resolve(!!isFullscreen);
}, },
@ -728,7 +728,7 @@ export const register = (
// Queue // Queue
const queueInfo = async (ctx: Context) => { const queueInfo = async (ctx: Context) => {
const queueResponsePromise = new Promise<QueueResponse>((resolve) => { const queueResponsePromise = new Promise<QueueResponse>((resolve) => {
ipcMain.once('ytmd:get-queue-response', (_, queue: QueueResponse) => { ipcMain.once('peard:get-queue-response', (_, queue: QueueResponse) => {
return resolve(queue); return resolve(queue);
}); });

View File

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

View File

@ -1,6 +1,6 @@
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
import { t } from '@/i18n'; import { t } from '@/i18n';
import { type YoutubePlayer } from '@/types/youtube-player'; import { type MusicPlayer } from '@/types/music-player';
const lazySafeTry = (...fns: (() => void)[]) => { const lazySafeTry = (...fns: (() => void)[]) => {
for (const fn of fns) { for (const fn of fns) {
@ -95,7 +95,7 @@ const audioCanPlayHandler = ({
); );
}; };
const ensureAudioContextLoad = (playerApi: YoutubePlayer) => { const ensureAudioContextLoad = (playerApi: MusicPlayer) => {
if (playerApi.getPlayerState() !== 1 || storage.lastContext) return; if (playerApi.getPlayerState() !== 1 || storage.lastContext) return;
playerApi.loadVideoById( playerApi.loadVideoById(
@ -115,7 +115,7 @@ export default createPlugin({
}, },
start() { start() {
document.addEventListener('ytmd:audio-can-play', audioCanPlayHandler, { document.addEventListener('peard:audio-can-play', audioCanPlayHandler, {
passive: true, passive: true,
}); });
storage.connectToCompressor( storage.connectToCompressor(
@ -126,7 +126,7 @@ export default createPlugin({
}, },
stop() { stop() {
document.removeEventListener('ytmd:audio-can-play', audioCanPlayHandler); document.removeEventListener('peard:audio-can-play', audioCanPlayHandler);
storage.disconnectCompressor(); storage.disconnectCompressor();
}, },
}, },

View File

@ -7,7 +7,7 @@ import { t } from '@/i18n';
export default createBackend({ export default createBackend({
start({ ipc: { handle }, window }) { start({ ipc: { handle }, window }) {
handle( handle(
'ytmd:captions-selector', 'peard:captions-selector',
async (captionLabels: Record<string, string>, currentIndex: string) => async (captionLabels: Record<string, string>, currentIndex: string) =>
await prompt( await prompt(
{ {

View File

@ -7,7 +7,7 @@ import renderer, {
type LanguageOptions, type LanguageOptions,
} from './renderer'; } from './renderer';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
export default createPlugin< export default createPlugin<
unknown, unknown,
@ -15,7 +15,7 @@ export default createPlugin<
{ {
captionsSettingsButton?: HTMLElement; captionsSettingsButton?: HTMLElement;
captionTrackList: LanguageOptions[] | null; captionTrackList: LanguageOptions[] | null;
api: YoutubePlayer | null; api: MusicPlayer | null;
config: CaptionsSelectorConfig | null; config: CaptionsSelectorConfig | null;
videoChangeListener: () => void; videoChangeListener: () => void;
}, },

View File

@ -6,7 +6,7 @@ import { t } from '@/i18n';
import { CaptionsSettingButton } from './templates/captions-settings-template'; import { CaptionsSettingButton } from './templates/captions-settings-template';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
import type { AppElement } from '@/types/queue'; import type { AppElement } from '@/types/queue';
export interface LanguageOptions { export interface LanguageOptions {
@ -35,7 +35,7 @@ export default createRenderer<
{ {
captionsSettingsButton?: HTMLElement; captionsSettingsButton?: HTMLElement;
captionTrackList: LanguageOptions[] | null; captionTrackList: LanguageOptions[] | null;
api: YoutubePlayer | null; api: MusicPlayer | null;
config: CaptionsSelectorConfig | null; config: CaptionsSelectorConfig | null;
videoChangeListener: () => void; videoChangeListener: () => void;
}, },
@ -73,7 +73,7 @@ export default createRenderer<
this.api?.unloadModule('captions'); this.api?.unloadModule('captions');
document document
.querySelector('video') .querySelector('video')
?.removeEventListener('ytmd:src-changed', this.videoChangeListener); ?.removeEventListener('peard:src-changed', this.videoChangeListener);
if (this.captionsSettingsButton) { if (this.captionsSettingsButton) {
document document
.querySelector('.right-controls-buttons') .querySelector('.right-controls-buttons')
@ -111,7 +111,7 @@ export default createRenderer<
]; ];
currentIndex = (await ipc.invoke( currentIndex = (await ipc.invoke(
'ytmd:captions-selector', 'peard:captions-selector',
captionLabels, captionLabels,
currentIndex, currentIndex,
)) as number; )) as number;
@ -156,7 +156,7 @@ export default createRenderer<
document document
.querySelector('video') .querySelector('video')
?.addEventListener('ytmd:src-changed', this.videoChangeListener); ?.addEventListener('peard:src-changed', this.videoChangeListener);
}, },
onConfigChange(newConfig) { onConfigChange(newConfig) {
this.config = newConfig; this.config = newConfig;

View File

@ -1,4 +1,4 @@
import { Innertube } from 'youtubei.js'; import { Innertube } from '\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js';
import prompt from 'custom-electron-prompt'; import prompt from 'custom-electron-prompt';

View File

@ -1,6 +1,6 @@
import { createRenderer } from '@/utils'; import { createRenderer } from '@/utils';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
import type { RendererContext } from '@/types/contexts'; import type { RendererContext } from '@/types/contexts';
import type { CustomOutputPluginConfig } from './index'; import type { CustomOutputPluginConfig } from './index';
@ -48,13 +48,13 @@ export const renderer = createRenderer<
await updateSinkId(audioContext, this.options!.output); await updateSinkId(audioContext, this.options!.output);
}, },
async onPlayerApiReady(_: YoutubePlayer, context) { async onPlayerApiReady(_: MusicPlayer, context) {
this.options = await context.getConfig(); this.options = await context.getConfig();
await navigator.mediaDevices.getUserMedia({ audio: true, video: false }); await navigator.mediaDevices.getUserMedia({ audio: true, video: false });
navigator.mediaDevices.ondevicechange = async () => navigator.mediaDevices.ondevicechange = async () =>
await updateDeviceList(context); await updateDeviceList(context);
document.addEventListener('ytmd:audio-can-play', this.audioCanPlayHandler, { document.addEventListener('peard:audio-can-play', this.audioCanPlayHandler, {
once: true, once: true,
passive: true, passive: true,
}); });
@ -63,7 +63,7 @@ export const renderer = createRenderer<
stop() { stop() {
document.removeEventListener( document.removeEventListener(
'ytmd:audio-can-play', 'peard:audio-can-play',
this.audioCanPlayHandler, this.audioCanPlayHandler,
); );
navigator.mediaDevices.ondevicechange = null; navigator.mediaDevices.ondevicechange = null;

View File

@ -3,7 +3,7 @@ import { createPlugin } from '@/utils';
import { t } from '@/i18n'; import { t } from '@/i18n';
import type { VideoDataChanged } from '@/types/video-data-changed'; import type { VideoDataChanged } from '@/types/video-data-changed';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
export type DisableAutoPlayPluginConfig = { export type DisableAutoPlayPluginConfig = {
enabled: boolean; enabled: boolean;
@ -15,7 +15,7 @@ export default createPlugin<
unknown, unknown,
{ {
config: DisableAutoPlayPluginConfig | null; config: DisableAutoPlayPluginConfig | null;
api: YoutubePlayer | null; api: MusicPlayer | null;
eventListener: (event: CustomEvent<VideoDataChanged>) => void; eventListener: (event: CustomEvent<VideoDataChanged>) => void;
timeUpdateListener: (e: Event) => void; timeUpdateListener: (e: Event) => void;
}, },

View File

@ -1,5 +1,5 @@
/** /**
* Application ID registered by @th-ch/youtube-music dev team * Application ID registered by @th-ch/pear-desktop dev team
*/ */
export const clientId = '1177081335727267940'; export const clientId = '1177081335727267940';
/** /**

View File

@ -24,9 +24,9 @@ export type DiscordPluginConfig = {
*/ */
activityTimeoutTime: number; activityTimeoutTime: number;
/** /**
* Add a "Play on YouTube Music" button to rich presence * Add a "Play on Pear Desktop" button to rich presence
*/ */
playOnYouTubeMusic: boolean; playOnPearDesktop: boolean;
/** /**
* Hide the "View App On GitHub" button in the rich presence * Hide the "View App On GitHub" button in the rich presence
*/ */
@ -50,7 +50,7 @@ export default createPlugin({
autoReconnect: true, autoReconnect: true,
activityTimeoutEnabled: true, activityTimeoutEnabled: true,
activityTimeoutTime: 10 * 60 * 1000, activityTimeoutTime: 10 * 60 * 1000,
playOnYouTubeMusic: true, playOnPearDesktop: true,
hideGitHubButton: false, hideGitHubButton: false,
hideDurationLeft: false, hideDurationLeft: false,
statusDisplayType: StatusDisplayType.Details, statusDisplayType: StatusDisplayType.Details,

View File

@ -45,8 +45,8 @@ export const backend = createBackend<
}); });
} }
ctx.ipc.on('ytmd:player-api-loaded', () => { ctx.ipc.on('peard:player-api-loaded', () => {
ctx.ipc.send('ytmd:setup-time-changed-listener'); ctx.ipc.send('peard:setup-time-changed-listener');
}); });
app.on('before-quit', () => { app.on('before-quit', () => {

View File

@ -18,7 +18,7 @@ const registerRefreshOnce = singleton((refreshMenu: () => void) => {
const DiscordStatusDisplayTypeLabels: Record<StatusDisplayType, string> = { const DiscordStatusDisplayTypeLabels: Record<StatusDisplayType, string> = {
[StatusDisplayType.Name]: [StatusDisplayType.Name]:
'plugins.discord.menu.set-status-display-type.submenu.youtube-music', 'plugins.discord.menu.set-status-display-type.submenu.pear-desktop',
[StatusDisplayType.State]: [StatusDisplayType.State]:
'plugins.discord.menu.set-status-display-type.submenu.artist', 'plugins.discord.menu.set-status-display-type.submenu.artist',
[StatusDisplayType.Details]: [StatusDisplayType.Details]:
@ -67,12 +67,12 @@ export const onMenu = async ({
}, },
}, },
{ {
label: t('plugins.discord.menu.play-on-youtube-music'), label: t('plugins.discord.menu.play-on-pear-desktop'),
type: 'checkbox', type: 'checkbox',
checked: config.playOnYouTubeMusic, checked: config.playOnPearDesktop,
click(item: Electron.MenuItem) { click(item: Electron.MenuItem) {
setConfig({ setConfig({
playOnYouTubeMusic: item.checked, playOnPearDesktop: item.checked,
}); });
}, },
}, },

View File

@ -28,16 +28,16 @@ export const buildDiscordButtons = (
songInfo: SongInfo, songInfo: SongInfo,
): GatewayActivityButton[] | undefined => { ): GatewayActivityButton[] | undefined => {
const buttons: GatewayActivityButton[] = []; const buttons: GatewayActivityButton[] = [];
if (config.playOnYouTubeMusic && songInfo.url) { if (config.playOnPearDesktop && songInfo.url) {
buttons.push({ buttons.push({
label: 'Play on YouTube Music', label: 'Play on Pear Desktop',
url: songInfo.url, url: songInfo.url,
}); });
} }
if (!config.hideGitHubButton) { if (!config.hideGitHubButton) {
buttons.push({ buttons.push({
label: 'View App On GitHub', label: 'View App On GitHub',
url: 'https://github.com/th-ch/youtube-music', url: 'https://github.com/pear-devs/pear-desktop',
}); });
} }
return buttons.length ? buttons : undefined; return buttons.length ? buttons : undefined;

View File

@ -3,7 +3,12 @@ import { join } from 'node:path';
import { randomBytes } from 'node:crypto'; import { randomBytes } from 'node:crypto';
import { app, type BrowserWindow, dialog, ipcMain } from 'electron'; import { app, type BrowserWindow, dialog, ipcMain } from 'electron';
import { Innertube, UniversalCache, Utils, YTNodes } from 'youtubei.js'; import {
Innertube,
UniversalCache,
Utils,
YTNodes,
} from '\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js';
import is from 'electron-is'; import is from 'electron-is';
import filenamify from 'filenamify'; import filenamify from 'filenamify';
import { Mutex } from 'async-mutex'; import { Mutex } from 'async-mutex';
@ -28,18 +33,18 @@ import {
import { getNetFetchAsFetch } from '@/plugins/utils/main'; import { getNetFetchAsFetch } from '@/plugins/utils/main';
import { t } from '@/i18n'; import { t } from '@/i18n';
import { DefaultPresetList, type Preset, YoutubeFormatList } from '../types'; import { DefaultPresetList, type Preset, VideoFormatList } from '../types';
import type { DownloaderPluginConfig } from '../index'; import type { DownloaderPluginConfig } from '../index';
import type { BackendContext } from '@/types/contexts'; import type { BackendContext } from '@/types/contexts';
import type { GetPlayerResponse } from '@/types/get-player-response'; import type { GetPlayerResponse } from '@/types/get-player-response';
import type { FormatOptions } from 'node_modules/youtubei.js/dist/src/types'; import type { FormatOptions } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/types';
import type { VideoInfo } from 'node_modules/youtubei.js/dist/src/parser/youtube'; import type { VideoInfo } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/\u0079\u006f\u0075\u0074\u0075\u0062\u0065';
import type { PlayerErrorMessage } from 'node_modules/youtubei.js/dist/src/parser/nodes'; import type { PlayerErrorMessage } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/nodes';
import type { import type {
TrackInfo, TrackInfo,
Playlist, Playlist,
} from 'node_modules/youtubei.js/dist/src/parser/ytmusic'; } from 'node_modules/\u0079\u006f\u0075\u0074\u0075\u0062\u0065i.js/dist/src/parser/ytmusic';
type CustomSongInfo = SongInfo & { trackId?: string }; type CustomSongInfo = SongInfo & { trackId?: string };
@ -56,7 +61,7 @@ let yt: Innertube;
let win: BrowserWindow; let win: BrowserWindow;
let playingUrl: string; let playingUrl: string;
const isYouTubeMusicPremium = async () => { const isPremium = async () => {
// If signed out, it is understood as non-premium // If signed out, it is understood as non-premium
const isSignedIn = (await win.webContents.executeJavaScript( const isSignedIn = (await win.webContents.executeJavaScript(
'!!yt.config_.LOGGED_IN', '!!yt.config_.LOGGED_IN',
@ -66,7 +71,7 @@ const isYouTubeMusicPremium = async () => {
// If signed in, check if the upgrade button is present // If signed in, check if the upgrade button is present
const upgradeBtnIconPathData = (await win.webContents.executeJavaScript( const upgradeBtnIconPathData = (await win.webContents.executeJavaScript(
'document.querySelector(\'iron-iconset-svg[name="yt-sys-icons"] #youtube_music_monochrome\')?.firstChild?.getAttribute("d")?.substring(0, 15)', 'document.querySelector(\'iron-iconset-svg[name="yt-sys-icons"] #\u0079\u006f\u0075\u0074\u0075\u0062\u0065_music_monochrome\')?.firstChild?.getAttribute("d")?.substring(0, 15)',
)) as string | null; )) as string | null;
// Fallback to non-premium if the icon is not found // Fallback to non-premium if the icon is not found
@ -107,7 +112,7 @@ const sendError = (error: Error, source?: string) => {
export const getCookieFromWindow = async (win: BrowserWindow) => { export const getCookieFromWindow = async (win: BrowserWindow) => {
return ( return (
await win.webContents.session.cookies.get({ await win.webContents.session.cookies.get({
url: 'https://music.youtube.com', url: 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
}) })
) )
.map((it) => it.name + '=' + it.value) .map((it) => it.name + '=' + it.value)
@ -192,7 +197,7 @@ export const onMainLoad = async ({
} }
ipc.handle('download-song', (url: string) => downloadSong(url)); ipc.handle('download-song', (url: string) => downloadSong(url));
ipc.on('ytmd:video-src-changed', (data: GetPlayerResponse) => { ipc.on('peard:video-src-changed', (data: GetPlayerResponse) => {
playingUrl = data.microformat.microformatDataRenderer.urlCanonical; playingUrl = data.microformat.microformatDataRenderer.urlCanonical;
}); });
ipc.handle('download-playlist-request', async (url: string) => ipc.handle('download-playlist-request', async (url: string) =>
@ -298,8 +303,8 @@ function downloadSongOnFinishSetup({
} }
}); });
ipcMain.on('ytmd:player-api-loaded', () => { ipcMain.on('peard:player-api-loaded', () => {
ipc.send('ytmd:setup-time-changed-listener'); ipc.send('peard:setup-time-changed-listener');
}); });
} }
@ -390,7 +395,7 @@ async function downloadSongUnsafe(
} }
const downloadOptions: FormatOptions = { const downloadOptions: FormatOptions = {
type: (await isYouTubeMusicPremium()) ? 'audio' : 'video+audio', // Audio, video or video+audio type: (await isPremium()) ? 'audio' : 'video+audio', // Audio, video or video+audio
quality: 'best', // Best, bestefficiency, 144p, 240p, 480p, 720p and so on. quality: 'best', // Best, bestefficiency, 144p, 240p, 480p, 720p and so on.
format: 'any', // Media container format format: 'any', // Media container format
}; };
@ -400,7 +405,7 @@ async function downloadSongUnsafe(
let targetFileExtension: string; let targetFileExtension: string;
if (!presetSetting?.extension) { if (!presetSetting?.extension) {
targetFileExtension = targetFileExtension =
YoutubeFormatList.find((it) => it.itag === format.itag)?.container ?? VideoFormatList.find((it) => it.itag === format.itag)?.container ??
'mp3'; 'mp3';
} else { } else {
targetFileExtension = presetSetting?.extension ?? 'mp3'; targetFileExtension = presetSetting?.extension ?? 'mp3';

View File

@ -10,7 +10,7 @@ export const sendFeedback = (win: BrowserWindow, message?: unknown) => {
export const cropMaxWidth = (image: Electron.NativeImage) => { export const cropMaxWidth = (image: Electron.NativeImage) => {
const imageSize = image.getSize(); const imageSize = image.getSize();
// Standart YouTube artwork width with margins from both sides is 280 + 720 + 280 // Standard artwork width with margins from both sides is 280 + 720 + 280
if (imageSize.width === 1280 && imageSize.height === 720) { if (imageSize.width === 1280 && imageSize.height === 720) {
return image.crop({ return image.crop({
x: 280, x: 280,

View File

@ -19,7 +19,7 @@ export const DefaultPresetList: Record<string, Preset> = {
}, },
}; };
export interface YouTubeFormat { export interface VideoFormat {
itag: number; itag: number;
container: string; container: string;
content: string; content: string;
@ -29,9 +29,9 @@ export interface YouTubeFormat {
vrOr3D: string; vrOr3D: string;
} }
// converted from https://gist.github.com/sidneys/7095afe4da4ae58694d128b1034e01e2#file-youtube_format_code_itag_list-md // converted from https://gist.github.com/sidneys/7095afe4da4ae58694d128b1034e01e2
// and https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa // and https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
export const YoutubeFormatList: YouTubeFormat[] = [ export const VideoFormatList: VideoFormat[] = [
{ {
itag: 5, itag: 5,
container: 'flv', container: 'flv',

View File

@ -57,7 +57,7 @@ export default createPlugin({
const config = await getConfig(); const config = await getConfig();
document.addEventListener( document.addEventListener(
'ytmd:audio-can-play', 'peard:audio-can-play',
({ detail: { audioSource, audioContext } }) => { ({ detail: { audioSource, audioContext } }) => {
const filtersToApply = config.filters.concat( const filtersToApply = config.filters.concat(
defaultPresets defaultPresets

View File

@ -1,7 +1,7 @@
import { createPlugin } from '@/utils'; import { createPlugin } from '@/utils';
import { t } from '@/i18n'; import { t } from '@/i18n';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
export default createPlugin({ export default createPlugin({
name: () => t('plugins.exponential-volume.name'), name: () => t('plugins.exponential-volume.name'),
@ -12,7 +12,7 @@ export default createPlugin({
}, },
renderer: { renderer: {
onPlayerApiReady(playerApi) { onPlayerApiReady(playerApi) {
const syncVolume = (playerApi: YoutubePlayer) => { const syncVolume = (playerApi: MusicPlayer) => {
if (playerApi.getPlayerState() === 3) { if (playerApi.getPlayerState() === 3) {
setTimeout(() => syncVolume(playerApi), 0); setTimeout(() => syncVolume(playerApi), 0);
return; return;
@ -21,8 +21,8 @@ export default createPlugin({
playerApi.setVolume(playerApi.getVolume()); playerApi.setVolume(playerApi.getVolume());
}; };
// "YouTube Music fix volume ratio 0.4" by Marco Pfeiffer // "fix volume ratio 0.4" by Marco Pfeiffer
// https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/ // https://bit.ly/4nMu2WF
// Manipulation exponent, higher value = lower volume // Manipulation exponent, higher value = lower volume
// 3 is the value used by pulseaudio, which Barteks2x figured out this gist here: https://gist.github.com/Barteks2x/a4e189a36a10c159bb1644ffca21c02a // 3 is the value used by pulseaudio, which Barteks2x figured out this gist here: https://gist.github.com/Barteks2x/a4e189a36a10c159bb1644ffca21c02a

View File

@ -54,7 +54,7 @@ export const onMainLoad = ({
return target; return target;
}; };
ipcMain.handle('ytmd:menu-event', (event, commandId: number) => { ipcMain.handle('peard:menu-event', (event, commandId: number) => {
const target = getMenuItemById(commandId); const target = getMenuItemById(commandId);
if (target) if (target)
( (

View File

@ -25,7 +25,7 @@ export const onRendererLoad = async ({
}: RendererContext<InAppMenuConfig>) => { }: RendererContext<InAppMenuConfig>) => {
setConfig(await getConfig()); setConfig(await getConfig());
document.title = 'YouTube Music'; document.title = 'Pear Desktop';
const stylesheet = new CSSStyleSheet(); const stylesheet = new CSSStyleSheet();
stylesheet.replaceSync(scrollStyle); stylesheet.replaceSync(scrollStyle);
document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet]; document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];

View File

@ -278,7 +278,7 @@ export const PanelItem = (props: PanelItemProps) => {
}; };
const handleClick = async () => { const handleClick = async () => {
await window.ipcRenderer.invoke('ytmd:menu-event', props.commandId); await window.ipcRenderer.invoke('peard:menu-event', props.commandId);
if (props.type === 'radio') { if (props.type === 'radio') {
props.onChange?.(!props.checked); props.onChange?.(!props.checked);
} else if (props.type === 'checkbox') { } else if (props.type === 'checkbox') {

View File

@ -3,7 +3,7 @@
--menu-bar-height: 32px; --menu-bar-height: 32px;
} }
/* youtube-music style */ /* original style */
ytmusic-app-layout { ytmusic-app-layout {
overflow: auto scroll; overflow: auto scroll;
height: calc(100vh - var(--menu-bar-height, 36px)); height: calc(100vh - var(--menu-bar-height, 36px));
@ -73,7 +73,7 @@ ytmusic-app-layout ytmusic-player-page[is-mweb-modernization-enabled] .side-pane
transform: translate(0, calc(var(--ytmusic-player-page-inner-height) - var(--ytmusic-player-page-tabs-header-height) - var(--ytmusic-player-page-player-bar-height) - var(--menu-bar-height, 32px) )); transform: translate(0, calc(var(--ytmusic-player-page-inner-height) - var(--ytmusic-player-page-tabs-header-height) - var(--ytmusic-player-page-player-bar-height) - var(--menu-bar-height, 32px) ));
} }
/* ytm-bugs: see https://github.com/th-ch/youtube-music/issues/1737 */ /* ytm-bugs: see https://github.com/pear-devs/pear-desktop/issues/1737 */
html { html {
scrollbar-color: unset; scrollbar-color: unset;
} }

View File

@ -36,7 +36,7 @@ export default createPlugin({
const previousStatePaused = null; const previousStatePaused = null;
const data: LumiaData = { const data: LumiaData = {
origin: 'youtubemusic', origin: 'peardesktop',
eventType: 'switchSong', eventType: 'switchSong',
}; };
@ -65,8 +65,8 @@ export default createPlugin({
}); });
}; };
ipc.on('ytmd:player-api-loaded', () => ipc.on('peard:player-api-loaded', () =>
ipc.send('ytmd:setup-time-changed-listener'), ipc.send('peard:setup-time-changed-listener'),
); );
registerCallback((songInfo) => { registerCallback((songInfo) => {

View File

@ -21,7 +21,7 @@ import settingHTML from './templates/setting.html?raw';
import style from './style.css?inline'; import style from './style.css?inline';
import type { DataConnection } from 'peerjs'; import type { DataConnection } from 'peerjs';
import type { YoutubePlayer } from '@/types/youtube-player'; import type { MusicPlayer } from '@/types/music-player';
import type { RendererContext } from '@/types/contexts'; import type { RendererContext } from '@/types/contexts';
import type { VideoDataChanged } from '@/types/video-data-changed'; import type { VideoDataChanged } from '@/types/video-data-changed';
import type { AppElement } from '@/types/queue'; import type { AppElement } from '@/types/queue';
@ -49,7 +49,7 @@ export default createPlugin<
ipc?: RendererContext<never>['ipc']; ipc?: RendererContext<never>['ipc'];
api: AppElement | null; api: AppElement | null;
queue?: Queue; queue?: Queue;
playerApi?: YoutubePlayer; playerApi?: MusicPlayer;
showPrompt: (title: string, label: string) => Promise<string>; showPrompt: (title: string, label: string) => Promise<string>;
popups: { popups: {
host: ReturnType<typeof createHostPopup>; host: ReturnType<typeof createHostPopup>;

View File

@ -7,13 +7,13 @@ export const extractToken = (cookie = document.cookie) =>
export const getHash = async ( export const getHash = async (
papisid: string, papisid: string,
millis = Date.now(), millis = Date.now(),
origin: string = 'https://music.youtube.com', origin: string = 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
) => (await SHA1Hash(`${millis} ${papisid} ${origin}`)).toLowerCase(); ) => (await SHA1Hash(`${millis} ${papisid} ${origin}`)).toLowerCase();
export const getAuthorizationHeader = async ( export const getAuthorizationHeader = async (
papisid: string, papisid: string,
millis = Date.now(), millis = Date.now(),
origin: string = 'https://music.youtube.com', origin: string = 'https://music.\u0079\u006f\u0075\u0074\u0075\u0062\u0065.com',
) => { ) => {
return `SAPISIDHASH ${millis}_${await getHash(papisid, millis, origin)}`; return `SAPISIDHASH ${millis}_${await getHash(papisid, millis, origin)}`;
}; };

View File

@ -1,4 +1,4 @@
import type { YouTubeMusicAppElement } from '@/types/youtube-music-app-element'; import type { MusicPlayerAppElement } from '@/types/music-player-app-element';
import type { QueueElement } from '@/types/queue'; import type { QueueElement } from '@/types/queue';
type QueueRendererResponse = { type QueueRendererResponse = {
@ -13,7 +13,7 @@ export const getMusicQueueRenderer = async (
videoIds: string[], videoIds: string[],
): Promise<QueueRendererResponse | null> => { ): Promise<QueueRendererResponse | null> => {
const queue = document.querySelector<QueueElement>('#queue'); const queue = document.querySelector<QueueElement>('#queue');
const app = document.querySelector<YouTubeMusicAppElement>('ytmusic-app'); const app = document.querySelector<MusicPlayerAppElement>('ytmusic-app');
if (!app) return null; if (!app) return null;
const store = queue?.queue.store.store; const store = queue?.queue.store.store;

View File

@ -127,7 +127,7 @@ export default (
const getButton = (kind: keyof typeof mediaIcons) => const getButton = (kind: keyof typeof mediaIcons) =>
`<action ${display( `<action ${display(
kind, kind,
)} activationType="protocol" arguments="youtubemusic://${kind}"/>`; )} activationType="protocol" arguments="peardesktop://${kind}"/>`;
const getButtons = (isPaused: boolean) => `\ const getButtons = (isPaused: boolean) => `\
<actions> <actions>
@ -260,7 +260,7 @@ export default (
songControls = getSongControls(win); songControls = getSongControls(win);
let currentSeconds = 0; let currentSeconds = 0;
on('ytmd:player-api-loaded', () => send('ytmd:setup-time-changed-listener')); on('peard:player-api-loaded', () => send('peard:setup-time-changed-listener'));
let savedSongInfo: SongInfo; let savedSongInfo: SongInfo;
let lastUrl: string | undefined; let lastUrl: string | undefined;

View File

@ -3,7 +3,7 @@ import fs from 'node:fs';
import { app, type NativeImage } from 'electron'; import { app, type NativeImage } from 'electron';
import youtubeMusicIcon from '@assets/youtube-music.png?asset&asarUnpack'; import musicPlayerIcon from '@assets/icon.png?asset&asarUnpack';
import { type SongInfo } from '@/providers/song-info'; import { type SongInfo } from '@/providers/song-info';
@ -46,7 +46,7 @@ export const notificationImage = (
config: NotificationsPluginConfig, config: NotificationsPluginConfig,
) => { ) => {
if (!songInfo.image) { if (!songInfo.image) {
return youtubeMusicIcon; return musicPlayerIcon;
} }
if (!config.interactive) { if (!config.interactive) {
@ -71,7 +71,7 @@ export const saveImage = (img: NativeImage, savePath: string) => {
} catch (error: unknown) { } catch (error: unknown) {
console.error('Error writing song icon to disk:'); console.error('Error writing song icon to disk:');
console.trace(error); console.trace(error);
return youtubeMusicIcon; return musicPlayerIcon;
} }
return savePath; return savePath;

View File

@ -37,7 +37,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
win[hkey_script] = true; win[hkey_script] = true;
/** @type {globalThis.PromiseConstructor} */ /** @type {globalThis.PromiseConstructor} */
const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const Promise = (async () => { })().constructor; // hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve.
const PromiseExternal = ((resolve_, reject_) => { const PromiseExternal = ((resolve_, reject_) => {
const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject }; const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject };
return class PromiseExternal extends Promise { return class PromiseExternal extends Promise {
@ -64,7 +64,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
})(); })();
if (!isGPUAccelerationAvailable) { if (!isGPUAccelerationAvailable) {
throw new Error('Your browser does not support GPU Acceleration. YouTube CPU Tamer by AnimationFrame is skipped.'); throw new Error('Your browser does not support GPU Acceleration. CPU Tamer by AnimationFrame is skipped.');
} }
const timeupdateDT = (() => { const timeupdateDT = (() => {
@ -100,7 +100,7 @@ export const injectCpuTamerByAnimationFrame = ((__CONTEXT__) => {
frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe
let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting)
n.appendChild(frame); n.appendChild(frame);
while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by YouTube engine while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by the engine
const root = document.documentElement; const root = document.documentElement;
root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL
if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL)); if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL));

View File

@ -37,7 +37,7 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => {
win[hkey_script] = true; win[hkey_script] = true;
/** @type {globalThis.PromiseConstructor} */ /** @type {globalThis.PromiseConstructor} */
const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const Promise = (async () => { })().constructor; // hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve.
const PromiseExternal = ((resolve_, reject_) => { const PromiseExternal = ((resolve_, reject_) => {
const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject }; const h = (resolve, reject) => { resolve_ = resolve; reject_ = reject };
return class PromiseExternal extends Promise { return class PromiseExternal extends Promise {
@ -89,7 +89,7 @@ export const injectCpuTamerByDomMutation = ((__CONTEXT__) => {
frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe
let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting)
n.appendChild(frame); n.appendChild(frame);
while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by YouTube engine while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by the engine
const root = document.documentElement; const root = document.documentElement;
root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL
if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL)); if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL));

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