From 696ff0fc7a4aaba1a19dd522354c14da19bae82e Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Sat, 20 Dec 2025 21:57:47 +0900 Subject: [PATCH] Improved compatibility --- assets/generated/icons/win/icon.ico | Bin 0 -> 10622 bytes assets/icon.png | Bin 0 -> 175581 bytes assets/tray-paused.png | Bin 0 -> 7548 bytes assets/tray.png | Bin 0 -> 6885 bytes electron-builder.yml | 16 ++++----- package.json | 10 +++--- pnpm-lock.yaml | 18 +++++----- src/config/store.ts | 5 ++- src/i18n/index.ts | 3 ++ src/i18n/resources/ar.json | 14 ++++---- src/i18n/resources/az.json | 2 +- src/i18n/resources/bg.json | 14 ++++---- src/i18n/resources/bn.json | 8 ++--- src/i18n/resources/bs.json | 2 +- src/i18n/resources/ca.json | 14 ++++---- src/i18n/resources/cs.json | 14 ++++---- src/i18n/resources/da.json | 6 ++-- src/i18n/resources/de.json | 12 +++---- src/i18n/resources/el.json | 12 +++---- src/i18n/resources/en.json | 14 ++++---- src/i18n/resources/es.json | 14 ++++---- src/i18n/resources/et.json | 6 ++-- src/i18n/resources/fa.json | 12 +++---- src/i18n/resources/fi.json | 12 +++---- src/i18n/resources/fil.json | 14 ++++---- src/i18n/resources/fr.json | 14 ++++---- src/i18n/resources/gl.json | 2 +- src/i18n/resources/he.json | 10 +++--- src/i18n/resources/hi.json | 10 +++--- src/i18n/resources/hr.json | 14 ++++---- src/i18n/resources/hu.json | 14 ++++---- src/i18n/resources/id.json | 14 ++++---- src/i18n/resources/is.json | 8 ++--- src/i18n/resources/it.json | 14 ++++---- src/i18n/resources/ja.json | 14 ++++---- src/i18n/resources/ko.json | 14 ++++---- src/i18n/resources/lt.json | 14 ++++---- src/i18n/resources/lv.json | 10 +++--- src/i18n/resources/ms.json | 14 ++++---- src/i18n/resources/nb.json | 4 +-- src/i18n/resources/ne.json | 6 ++-- src/i18n/resources/nl.json | 14 ++++---- src/i18n/resources/pl.json | 18 +++++----- src/i18n/resources/pt-BR.json | 14 ++++---- src/i18n/resources/pt.json | 14 ++++---- src/i18n/resources/ro.json | 14 ++++---- src/i18n/resources/ru.json | 12 +++---- src/i18n/resources/si.json | 4 +-- src/i18n/resources/sk.json | 14 ++++---- src/i18n/resources/sl.json | 8 ++--- src/i18n/resources/sr.json | 14 ++++---- src/i18n/resources/sv.json | 14 ++++---- src/i18n/resources/ta.json | 12 +++---- src/i18n/resources/th.json | 14 ++++---- src/i18n/resources/tr.json | 14 ++++---- src/i18n/resources/uk.json | 14 ++++---- src/i18n/resources/vi.json | 14 ++++---- src/i18n/resources/zh-CN.json | 14 ++++---- src/i18n/resources/zh-TW.json | 14 ++++---- src/index.ts | 25 +++++++------ src/menu.ts | 5 ++- src/plugins/amuse/index.ts | 7 ++-- src/plugins/api-server/backend/main.ts | 4 ++- src/plugins/captions-selector/index.ts | 7 ++-- src/plugins/discord/index.ts | 34 +++++++++--------- src/plugins/discord/menu.ts | 17 ++++++--- src/plugins/discord/utils.ts | 11 ++++-- src/plugins/in-app-menu/renderer.tsx | 4 ++- src/plugins/lumiastream/index.ts | 2 +- src/plugins/notifications/interactive.ts | 8 +++-- .../scrobbler/services/listenbrainz.ts | 5 +-- src/plugins/shortcuts/mpris.ts | 9 +++-- src/providers/protocol-handler.ts | 3 +- src/providers/song-info-front.ts | 6 ++-- src/tray.ts | 9 +++-- 75 files changed, 415 insertions(+), 375 deletions(-) create mode 100644 assets/generated/icons/win/icon.ico create mode 100644 assets/icon.png create mode 100644 assets/tray-paused.png create mode 100644 assets/tray.png diff --git a/assets/generated/icons/win/icon.ico b/assets/generated/icons/win/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b08f8ac42cce8e637949ccbe46b340b4fe2b2f3e GIT binary patch literal 10622 zcmb7qi$9b9`~SU@!yM+2L&!#=au_*vz?>sQsSw&qlvGrt!Zsv|qA-OwI_ltppvT%ON$8;72)kH|PCpch|n9B)}g*=bwhH{T6wC?*T~XgV=lk*rMz1>~P@H;Gh34 zM+I^2RpMoQlW&tw`Wv3jMx>g{!%Mwy3O?Vb~D&X7T)VC(V4`ytApp4Z3CFa(Z z%gpDcO>Z{efd3VaEUk1*UP!C^|GB=JJi{bEI==Bs?nL+#z2vZT^OF*v56fDFv<11J z(-+k*^Y=V4c15``s*ZPi?xP4VD;1Z@Ai@X_q=kGX(dCfkIB>VG3XOx#`-82%P>|gV zN4jlaptkJV;CSN4wuo-#&WN^#4Lu~;(}>#`2&BXTn9yldJf3(O!tR8+(kmo26f%Ld zLX-Bvq)v3f*7o`hkf`aPeT&8|Dc>!E2~W1b6El{L#`q0{ZM~s2_r%HP&XpftbaXrN z{2{_)=gzpDUywgTCl@S2_b82~c2bW2xNZp@)pW2t3Bg0f8PcpxbfQF$SXzjPPSU22 zpbBY!LgSy%x68K;A1N$B|Fsv%M`@3Wr3)R#NzyiwlT`R&drMPC!5`M%c=_TjSXZgz zy^k`5r!}zj$CE;%^J=O*lD|pC3nbpxsrSQmi;%vy_bXXX_m`nlgiD0h&gLs{8+l@q z>2}HA3M0~CiEJ1zuFB|B)Fv0#aKZEAmp2F9a?d~9X4Hz7xELibRF6kMqTsv}$#JyZ z${nk!4p}wy0}ggKL)Wv#ok2nO4HH5&+~4_zkL0^vm{?4jeEF*Ct}EQ`ujMdNNckF@@>Wl&OWDr%8(} z?iH`t!fE^Hm5|sD&6`q5HX5CspRNKoZk&8jLM9!pgHpphqW`L;BSIR~|G1QTD?=2l zBKyuH{{6r*o7GUiDwJ_t=D^)iA zfIR!(HGNNgk;^EuEI)NZChJI9Qb4-)!-PSrv?Fpwh{$Aj%w_*A#IE*Y1BTd+2hV1m znf>8>glG&U3`G-XjK|(0EN+>qGnx-%ee#9m;kc8=3Qdk4GRGR!Rs?&>v&3f!F5}{z z+fm<3^B$exH}bHz4e7-aV%QuNVY;48ir?1hIkrPr78$l@5X}0r3=4 zIcI7A=DX0!OwPJDNpY?hyt1fnVcUk@Qy&Gjr%`?G?Uiv9Zu7aLA@MVWHcl%b5ckDX z#9^OAsBC=L=N9NA9BOa!a`*4|raPoQyIAB0>WZz$M(Zc@4ZU*}NAV_J%A*EJrDQob zZGWQ5PVssECVG?Bu1iS0%rMSIDI<$hTj4H3na{7=EAUFFW8oD>x%yN4t?d6^nmyRn zsAtFEO7gHRJ#s}F=7FQZ*9zqxhRJxbDc##yqxBU^d2>$~%9y5WVT|6BO*RWhqQ$#) z;>P#P1rTxBB*nBy$;?~%H)`M2m`dOEI61K2D@39xk30>V;x(&6Xyn&C z8L`AuuE+}c;7U=E$~QND+?CLO>2cCDyHnEf0=v>PTakx1=^aUY zy}n^%dM8h^K$u?VwMh*lK3CgT?|xd^^(H30G_h+^Fk&lmyhnM|!q)|Qn!TH48R);f zBDHsp{SJ_|aJFvsL^3?X6IP@*}bA#F5$SoxIc}p~vyu z#k!g@lH|;J&GNhO_O>%dC-x;(O!t>e=iR74T}1MIm7Be3S`73{9_$4{yW#2<%!lxo zSu#4Tb`zc2B6NVNmVq#I%PT_L935XFojQAyRp}T{!Ld2`j<^b=X-M8P;l(ocNQSBD zECs{z=3@hW*~xZQDmF471BevTjtZA{{h*I8BkN^DhuH44I%OT754woLW!3-U¥0 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 Wq2~7wfd5Mg0PZe(ohuv(N&gQmSM5ds literal 0 HcmV?d00001 diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8e94f775b42ccd06273031dea66a94c70b69ea26 GIT binary patch literal 175581 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 z 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 AIsgCw literal 0 HcmV?d00001 diff --git a/assets/tray.png b/assets/tray.png new file mode 100644 index 0000000000000000000000000000000000000000..b33e9c3aff53550815f13efef076434f984f0c86 GIT binary patch literal 6885 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 - Pear Desktop App bundled with custom plugins (and built-in ad - blocker / downloader) + description: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App bundled with custom plugins" category: AudioVideo flatpak: - description: >- - Pear Desktop App bundled with custom plugins (and built-in ad - blocker / downloader) + description: "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App bundled with custom plugins" category: AudioVideo runtimeVersion: '24.08' baseVersion: '24.08' @@ -98,7 +94,7 @@ flatpak: - '--talk-name=org.freedesktop.Notifications' - '--talk-name=org.gnome.SessionManager' - '--talk-name=org.kde.StatusNotifierWatcher' - - '--own-name=org.mpris.MediaPlayer2.PearDesktop.*' + - "--own-name=org.mpris.MediaPlayer2.\u0059\u006f\u0075\u0074\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063.*" deb: depends: - libgtk-3-0 diff --git a/package.json b/package.json index 303f77c1..431dd80f 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { - "name": "pear-music", - "desktopName": "com.github.th_ch.pear_music", - "productName": "Pear Desktop", + "name": "\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063", + "desktopName": "com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063", + "productName": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063", "version": "3.11.0", - "description": "Pear Desktop App - including custom plugins", + "description": "\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063 Desktop App - including custom plugins", "main": "./dist/main/index.js", "type": "module", "license": "MIT", @@ -78,7 +78,7 @@ "@hono/zod-openapi": "1.2.0", "@hono/zod-validator": "0.7.6", "@jellybrick/dbus-next": "0.10.3", - "@jellybrick/electron-better-web-request": "1.0.4", + "@jellybrick/electron-better-web-request": "2.0.0", "@jellybrick/mpris-service": "2.1.5", "@jimp/plugin-color": "1.6.0", "@mdui/icons": "^1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5a7135c6..adbea23a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -82,8 +82,8 @@ importers: specifier: 0.10.3 version: 0.10.3 '@jellybrick/electron-better-web-request': - specifier: 1.0.4 - version: 1.0.4 + specifier: 2.0.0 + version: 2.0.0 '@jellybrick/mpris-service': specifier: 2.1.5 version: 2.1.5 @@ -886,8 +886,8 @@ packages: '@jellybrick/dbus-next@0.10.3': resolution: {integrity: sha512-7MLAiQS/UCa8V8/G3eyoWIzMhCUv3GaNxIpclu1wauDGUsL48ZT0CrilEO739gP/bviPiCUhy00DtvCNmYfPhA==} - '@jellybrick/electron-better-web-request@1.0.4': - resolution: {integrity: sha512-vL2lv7Gz8BWgCpwXb3ha17oaEmJqG5ZLdVWssAkA/0PGPMCWH2lLWq7vDymyTswmZ+zKpfOdzwTomvMqn9nElg==} + '@jellybrick/electron-better-web-request@2.0.0': + resolution: {integrity: sha512-BatvX5xGdn4vNGCHaIsoCQZWe65C0GD4xZ+wNTtEVJDjSAN+wbdfUmPKwuog+GKw7YqmilPI7LKO0a9rjTRk9Q==} '@jellybrick/mpris-service@2.1.5': resolution: {integrity: sha512-B6wOeS7aHO7BIJRFHbDA4h5tJHeQHf2VzVwIi2rN2wsB0Uf9wsITebGfnknPypZ1ZxRjobDkeTG4EKdBGXwSww==} @@ -4632,8 +4632,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + uuid@13.0.0: + resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==} hasBin: true validate-html-nesting@1.2.3: @@ -5405,10 +5405,10 @@ snapshots: safe-buffer: 5.2.1 xml2js: 0.6.2 - '@jellybrick/electron-better-web-request@1.0.4': + '@jellybrick/electron-better-web-request@2.0.0': dependencies: browser-extension-url-match: 1.2.0 - uuid: 9.0.1 + uuid: 13.0.0 '@jellybrick/mpris-service@2.1.5': dependencies: @@ -9618,7 +9618,7 @@ snapshots: util-deprecate@1.0.2: {} - uuid@9.0.1: {} + uuid@13.0.0: {} validate-html-nesting@1.2.3: {} diff --git a/src/config/store.ts b/src/config/store.ts index f371293a..6778d8a6 100644 --- a/src/config/store.ts +++ b/src/config/store.ts @@ -112,7 +112,10 @@ const migrations = { '>=2.1.3'(store: IStore) { const listenAlong = store.get('plugins.discord.listenAlong'); if (listenAlong !== undefined) { - store.set('plugins.discord.playOnPearMusic', listenAlong); + store.set( + 'plugins.discord.playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063', + listenAlong, + ); store.delete('plugins.discord.listenAlong'); } }, diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 4ba3dce7..abf2cfd9 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -2,6 +2,9 @@ import i18next, { init, t as i18t, changeLanguage } from 'i18next'; import { languageResources } from 'virtual:i18n'; +export const APPLICATION_NAME = + '\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u0020\u004d\u0075\u0073\u0069\u0063'; + export const loadI18n = async () => await init({ resources: await languageResources(), diff --git a/src/i18n/resources/ar.json b/src/i18n/resources/ar.json index 715832e1..da91cbc2 100644 --- a/src/i18n/resources/ar.json +++ b/src/i18n/resources/ar.json @@ -154,7 +154,7 @@ "label": "عنوان نافذة مخصص", "prompt": { "label": "ادخل عنوان مخصص للنافذة: (اتركه فارغًا إلغاء التفعيل)", - "placeholder": "مثال: Pear Desktop" + "placeholder": "مثال: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "إعادة تشغيل التطبيق", "show": "عرض النافدة", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "الوضع المحيطي" }, "amuse": { - "description": "تكامل دعم Pear Desktop مع ويدجت Amuse لعرض الأغنية التي قيد التشغيل، من إنتاج 6K Labs", + "description": "تكامل دعم {{applicationName}} مع ويدجت Amuse لعرض الأغنية التي قيد التشغيل، من إنتاج 6K Labs", "name": "تلسيه", "response": { "query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية." @@ -373,7 +373,7 @@ "name": "تجاوز التحقق من السن" }, "captions-selector": { - "description": "محدد ترجمات المقاطع الصوتية لPear Desktop", + "description": "محدد ترجمات المقاطع الصوتية ل{{applicationName}}", "menu": { "autoload": "اختار اخر ترجمة مستخدمة تلقائيا", "disable-captions": "لا توجد ترجمات بشكل افتراضي" @@ -456,13 +456,13 @@ "disconnected": "غير متصل", "hide-duration-left": "إخفاء المدة المتبقية", "hide-github-button": "إخفاء زر رابط GitHub", - "play-on-pear-desktop": "شغل في Pear Desktop", + "play-on-application": "شغل في {{applicationName}}", "set-inactivity-timeout": "ضبط مهلة عدم النشاط", "set-status-display-type": { "label": "نص الحالة", "submenu": { "artist": "جار السمع ل{artist}", - "pear-desktop": "جار السمع لPear Desktop", + "application": "جار السمع ل{{applicationName}}", "title": "جار السمع ل{song title}" } } diff --git a/src/i18n/resources/az.json b/src/i18n/resources/az.json index 13ff3f55..1f5cd5da 100644 --- a/src/i18n/resources/az.json +++ b/src/i18n/resources/az.json @@ -148,7 +148,7 @@ "submenu": { "custom-window-title": { "prompt": { - "placeholder": "Nümunə: Pear Desktop" + "placeholder": "Nümunə: {{applicationName}}" } }, "like-buttons": { diff --git a/src/i18n/resources/bg.json b/src/i18n/resources/bg.json index 18b35f05..dbf21bce 100644 --- a/src/i18n/resources/bg.json +++ b/src/i18n/resources/bg.json @@ -154,7 +154,7 @@ "label": "Персонализирано заглавие на прозорец", "prompt": { "label": "Въведи персонализирано заглавие: (остави празно за да изключиш)", - "placeholder": "Пример: Pear Desktop" + "placeholder": "Пример: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Рестартирай приложението", "show": "Покажи прозорец", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Атмосферен режим" }, "amuse": { - "description": "Добавя поддръжка на Pear Desktop за джаджата Amuse Now Play от 6K Labs", + "description": "Добавя поддръжка на {{applicationName}} за джаджата Amuse Now Play от 6K Labs", "name": "Забавление", "response": { "query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента." @@ -373,7 +373,7 @@ "name": "Избягване на възрастови ограничения" }, "captions-selector": { - "description": "Избор на надписи за аудио тракове в Pear Desktop", + "description": "Избор на надписи за аудио тракове в {{applicationName}}", "menu": { "autoload": "Автоматично избиране на последно използвания надпис", "disable-captions": "Без надписи по подразбиране" @@ -456,14 +456,14 @@ "disconnected": "Прекъснато", "hide-duration-left": "Скрий оставащото време", "hide-github-button": "Скрий бутона за линк към GitHub", - "play-on-pear-desktop": "Възпроизведи в Pear Desktop", + "play-on-application": "Възпроизведи в {{applicationName}}", "set-inactivity-timeout": "Задай таймаут за неактивност", "set-status-display-type": { "label": "Статус текст", "submenu": { "artist": "Слушам {artist}", "title": "Слушам {song title}", - "pear-desktop": "Слушам Pear Desktop" + "application": "Слушам {{applicationName}}" } } }, diff --git a/src/i18n/resources/bn.json b/src/i18n/resources/bn.json index 6571d936..4b760d83 100644 --- a/src/i18n/resources/bn.json +++ b/src/i18n/resources/bn.json @@ -154,7 +154,7 @@ "label": "কাস্টম উইন্ডো টাইটেল", "prompt": { "label": "নিজস্ব উইন্ডোর টাইটেল দিন (বন্ধ করতে ফাঁকা রাখুন)", - "placeholder": "উদাহরণস্বরূপ: Pear Desktop" + "placeholder": "উদাহরণস্বরূপ: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "অ্যাপ পুনরায় চালু করুন", "show": "উইন্ডো দেখান", "tooltip": { - "default": "ইউটিউব মিউজিক", - "with-song-info": "ইউটিউব মিউজিক: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -443,7 +443,7 @@ "disconnected": "সংযোগ বিচ্ছিন্ন", "hide-duration-left": "অবশিষ্ট সময় লুকান", "hide-github-button": "গিটহাব লিঙ্ক বাটন লুকান", - "play-on-pear-desktop": "ইউটিউব মিউজিকে চালান", + "play-on-application": "ইউটিউব মিউজিকে চালান", "set-inactivity-timeout": "নিষ্ক্রিয়তার সময়সীমা সেট করুন" }, "name": "ডিসকর্ড রিচ প্রেজেন্স", diff --git a/src/i18n/resources/bs.json b/src/i18n/resources/bs.json index 0d3284d0..a0472f5c 100644 --- a/src/i18n/resources/bs.json +++ b/src/i18n/resources/bs.json @@ -154,7 +154,7 @@ "label": "Prilagođeni naslov prozora", "prompt": { "label": "Unesite vlastiti naslov prozora: (ostavite prazno za isključenje)", - "placeholder": "Primjer: Pear Desktop" + "placeholder": "Primjer: {{applicationName}}" } }, "like-buttons": { diff --git a/src/i18n/resources/ca.json b/src/i18n/resources/ca.json index 2ff1a410..454bfc22 100644 --- a/src/i18n/resources/ca.json +++ b/src/i18n/resources/ca.json @@ -154,7 +154,7 @@ "label": "Títol personalitzat de la finestra", "prompt": { "label": "Introdueix un títol personalitzat per a la finestra (deixa-ho buit per deshabilitar-ho)", - "placeholder": "Exemple: Pear Desktop" + "placeholder": "Exemple: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Reinicia l'aplicació", "show": "Mostra la finestra", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Mode ambient" }, "amuse": { - "description": "Afegeix suport a Pear Desktop per el widget \"now playing\" d'Amuse per 6K Labs", + "description": "Afegeix suport a {{applicationName}} per el widget \"now playing\" d'Amuse per 6K Labs", "name": "Amuse", "response": { "query": "L'API del servidor de Amuse està funcionant. GET /query per tenir informació de la cançó." @@ -374,7 +374,7 @@ "name": "Esquiva les restriccions d'edat" }, "captions-selector": { - "description": "Selector de subtítols per les pistes d'àudio de Pear Desktop", + "description": "Selector de subtítols per les pistes d'àudio de {{applicationName}}", "menu": { "autoload": "Selecciona automàticament l'últim subtítol emprat", "disable-captions": "Sense subtítols per defecte" @@ -457,13 +457,13 @@ "disconnected": "Desconnectat", "hide-duration-left": "Amaga la durada restant", "hide-github-button": "Amaga el botó de l'enllaç a GitHub", - "play-on-pear-desktop": "Reprodueix a Pear Desktop", + "play-on-application": "Reprodueix a {{applicationName}}", "set-inactivity-timeout": "Estableix temps d'espera d'inactivitat", "set-status-display-type": { "label": "Text d'estat", "submenu": { "artist": "Escoltant {artist}", - "pear-desktop": "Escoltant Pear Desktop", + "application": "Escoltant {{applicationName}}", "title": "Escoltant {song title}" } } diff --git a/src/i18n/resources/cs.json b/src/i18n/resources/cs.json index 478aaceb..5d169990 100644 --- a/src/i18n/resources/cs.json +++ b/src/i18n/resources/cs.json @@ -154,7 +154,7 @@ "label": "Vlastní název okna", "prompt": { "label": "Zadejte vlastní název okna: (zanechejte prázdné pro zakázání)", - "placeholder": "Příklad: Pear Desktop" + "placeholder": "Příklad: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Restartovat aplikaci", "show": "Zobrazit okno", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Ambientní režim" }, "amuse": { - "description": "Přídá Pear Desktop podporu pro Amuse ‚právě hraje‘ widget od 6K Labs", + "description": "Přídá {{applicationName}} podporu pro Amuse ‚právě hraje‘ widget od 6K Labs", "name": "Amuse", "response": { "query": "Server Amuse API běží. Pošli požadavek typu GET na /query, aby ses dozvěděl info o písničce." @@ -373,7 +373,7 @@ "name": "Obejít věková omezení" }, "captions-selector": { - "description": "Titulkový selector pro zvukové stopy v Pear Desktop", + "description": "Titulkový selector pro zvukové stopy v {{applicationName}}", "menu": { "autoload": "Automaticky vybrat naposledy použité titulky", "disable-captions": "Žádné titulky ve vychozím nastavení" @@ -456,13 +456,13 @@ "disconnected": "Odpojeno", "hide-duration-left": "Skrýt zbývající duration", "hide-github-button": "Skrýt tlačítko s odkazem na GitHub", - "play-on-pear-desktop": "Hrát na Pear Desktop", + "play-on-application": "Hrát na {{applicationName}}", "set-inactivity-timeout": "Nastavit timeout pro neaktivitu", "set-status-display-type": { "label": "Text statusu", "submenu": { "artist": "Poslouchám: {artist}", - "pear-desktop": "Poslouchám Pear Desktop", + "application": "Poslouchám {{applicationName}}", "title": "Poslouchám {song title}" } } diff --git a/src/i18n/resources/da.json b/src/i18n/resources/da.json index 75537c8a..457a530f 100644 --- a/src/i18n/resources/da.json +++ b/src/i18n/resources/da.json @@ -154,7 +154,7 @@ "label": "Tilpasset vindues titel", "prompt": { "label": "Indtast tilpasset vindues titel: (lad være top for deaktiveret)", - "placeholder": "Eksempel: Pear Desktop" + "placeholder": "Eksempel: {{applicationName}}" } }, "like-buttons": { @@ -206,8 +206,8 @@ "restart": "Genstart app", "show": "Vis vindue", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, diff --git a/src/i18n/resources/de.json b/src/i18n/resources/de.json index 7d534d3e..0b689ded 100644 --- a/src/i18n/resources/de.json +++ b/src/i18n/resources/de.json @@ -154,7 +154,7 @@ "label": "Benutzerdefinierter Fenstertitel", "prompt": { "label": "Benutzerdefinierten Fenstertitel eingeben: (zum Deaktivieren leer lassen)", - "placeholder": "Beispiel: Pear Desktop" + "placeholder": "Beispiel: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Anwendung neu starten", "show": "Fenster anzeigen", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -374,7 +374,7 @@ "name": "Altersbeschränkungen umgehen" }, "captions-selector": { - "description": "Untertitelwähler für Pear Desktop-Audio-Lieder", + "description": "Untertitelwähler für {{applicationName}}-Audio-Lieder", "menu": { "autoload": "Wähle automatisch den zuletzt verwendeten Untertitel", "disable-captions": "Standardmäßig keine Untertitel" @@ -457,13 +457,13 @@ "disconnected": "Getrennt", "hide-duration-left": "Verbleibende Zeit verstecken", "hide-github-button": "Knopf mit Link zu GitHub ausblenden", - "play-on-pear-desktop": "Auf Pear Desktop abspielen", + "play-on-application": "Auf {{applicationName}} abspielen", "set-inactivity-timeout": "Inaktivitätstimeout setzen", "set-status-display-type": { "label": "Status Text", "submenu": { "artist": "Hört {artist} zu", - "pear-desktop": "Hört Pear Desktop", + "application": "Hört {{applicationName}}", "title": "Du hörst {song title}" } } diff --git a/src/i18n/resources/el.json b/src/i18n/resources/el.json index f9dbc77e..3f68b8e4 100644 --- a/src/i18n/resources/el.json +++ b/src/i18n/resources/el.json @@ -154,7 +154,7 @@ "label": "Προσαρμοσμένος τίτλος παραθύρου", "prompt": { "label": "Εισαγωγή προσαρμοσμένου τίτλου παραθύρου: (κενό για απενεργοποίηση)", - "placeholder": "Παράδειγμα: Pear Desktop" + "placeholder": "Παράδειγμα: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Επανεκκίνηση εφαρμογής", "show": "Εμφάνιση παραθύρου", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Λειτουργία περιβάλλοντος" }, "amuse": { - "description": "Προσθέτει υποστήριξη Pear Desktop στο widget Amuse now playing από την 6K Labs", + "description": "Προσθέτει υποστήριξη {{applicationName}} στο widget Amuse now playing από την 6K Labs", "name": "Amuse", "response": { "query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι." @@ -373,7 +373,7 @@ "name": "Παράκαμψη ηλικιακών περιορισμών" }, "captions-selector": { - "description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του Pear Desktop", + "description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του {{applicationName}}", "menu": { "autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας", "disable-captions": "Χωρίς λεζάντες από προεπιλογή" @@ -443,7 +443,7 @@ "disconnected": "Αποσυνδεδεμένο", "hide-duration-left": "Απόκρυψη της διάρκειας που απομένει", "hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub", - "play-on-pear-desktop": "Αναπαραγωγή στο Pear Desktop", + "play-on-application": "Αναπαραγωγή στο {{applicationName}}", "set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας" }, "name": "Discord Πλούσια παρουσία", diff --git a/src/i18n/resources/en.json b/src/i18n/resources/en.json index 276d64a6..ab71a622 100644 --- a/src/i18n/resources/en.json +++ b/src/i18n/resources/en.json @@ -160,7 +160,7 @@ "label": "Custom window title", "prompt": { "label": "Enter custom window title: (leave empty to disable)", - "placeholder": "Example: Pear Desktop" + "placeholder": "Example: {{applicationName}}" } }, "remove-upgrade-button": "Remove upgrade button", @@ -208,8 +208,8 @@ "restart": "Restart App", "show": "Show window", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Ambient Mode" }, "amuse": { - "description": "Adds Pear Desktop support for the Amuse now playing widget by 6K Labs", + "description": "Adds {{applicationName}} support for the Amuse now playing widget by 6K Labs", "name": "Amuse", "response": { "query": "Amuse API server is running. GET /query to get song info." @@ -390,7 +390,7 @@ "name": "Bypass Age Restrictions" }, "captions-selector": { - "description": "Caption selector for Pear Desktop audio tracks", + "description": "Caption selector for {{applicationName}} audio tracks", "menu": { "autoload": "Automatically select last used caption", "disable-captions": "No captions by default" @@ -473,12 +473,12 @@ "disconnected": "Disconnected", "hide-duration-left": "Hide duration left", "hide-github-button": "Hide GitHub link Button", - "play-on-pear-desktop": "Play on Pear Desktop", + "play-on-application": "Play on {{applicationName}}", "set-inactivity-timeout": "Set inactivity timeout", "set-status-display-type": { "label": "Status text", "submenu": { - "pear-desktop": "Listening to Pear Desktop", + "application": "Listening to {{applicationName}}", "artist": "Listening to {artist}", "title": "Listening to {song title}" } diff --git a/src/i18n/resources/es.json b/src/i18n/resources/es.json index 11cdfa21..ecd61903 100644 --- a/src/i18n/resources/es.json +++ b/src/i18n/resources/es.json @@ -154,7 +154,7 @@ "label": "Título de ventana personalizado", "prompt": { "label": "Ingresa un título de ventana personalizado: (déjalo vacío para desactivar)", - "placeholder": "Ejemplo: Pear Desktop" + "placeholder": "Ejemplo: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Reiniciar la aplicación", "show": "Mostrar ventana", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Modo ambiente" }, "amuse": { - "description": "Agrega soporte a Pear Desktop para el widget \"reproduciendo\" de Amuse por 6K Labs", + "description": "Agrega soporte a {{applicationName}} para el widget \"reproduciendo\" de Amuse por 6K Labs", "name": "Amuse", "response": { "query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción." @@ -374,7 +374,7 @@ "name": "Saltarse las restricciones de edad" }, "captions-selector": { - "description": "Selector de subtítulos para pistas de audio de Pear Desktop", + "description": "Selector de subtítulos para pistas de audio de {{applicationName}}", "menu": { "autoload": "Seleccionar automáticamente el último subtítulo utilizado", "disable-captions": "Sin subtítulos por defecto" @@ -457,13 +457,13 @@ "disconnected": "Desconectado", "hide-duration-left": "Ocultar la duración restante", "hide-github-button": "Ocultar el botón de enlace a GitHub", - "play-on-pear-desktop": "Reproducir en Pear Desktop", + "play-on-application": "Reproducir en {{applicationName}}", "set-inactivity-timeout": "Establecer tiempo de inactividad", "set-status-display-type": { "label": "Texto de estado", "submenu": { "artist": "Escuchando a {artist}", - "pear-desktop": "Escuchando Pear Desktop", + "application": "Escuchando {{applicationName}}", "title": "Escuchando {song title}" } } diff --git a/src/i18n/resources/et.json b/src/i18n/resources/et.json index 7c293d1e..cd70220f 100644 --- a/src/i18n/resources/et.json +++ b/src/i18n/resources/et.json @@ -154,7 +154,7 @@ "label": "Kohandatud akna tiitel", "prompt": { "label": "Sisesta kohandatud akna tiitel: (jäta täitmata, et välja lülitada)", - "placeholder": "Näide: Pear Desktop" + "placeholder": "Näide: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Käivita rakendus uuesti", "show": "Näita akent", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, diff --git a/src/i18n/resources/fa.json b/src/i18n/resources/fa.json index 5769e952..82459899 100644 --- a/src/i18n/resources/fa.json +++ b/src/i18n/resources/fa.json @@ -154,7 +154,7 @@ "label": "عنوان پنجره سفارشى", "prompt": { "label": "عنوان پنجره سفارشى را وارد کنىد: (خالى بزارىد تا غىرفعال شود)", - "placeholder": "مثال :Pear Desktop" + "placeholder": "مثال :{{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "راه‌اندازی مجدد برنامه", "show": "نمایش پنجره", "tooltip": { - "default": "پىر دسکتاپ", - "with-song-info": "پىر دسکتاپ: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "حالت محیطی" }, "amuse": { - "description": "حالا ویجت Amuse از Pear Desktop هم پشتیبانی می‌کنه! (توسط 6K Labs)", + "description": "حالا ویجت Amuse از {{applicationName}} هم پشتیبانی می‌کنه! (توسط 6K Labs)", "name": "Amuse", "response": { "query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید." @@ -456,13 +456,13 @@ "disconnected": "اتصال قطع شد", "hide-duration-left": "مخفی کردن مدت زمان باقی‌مانده", "hide-github-button": "مخفی کردن دکمه لینک گیت هاب", - "play-on-pear-desktop": "پخش در یوتیوب موزیک", + "play-on-application": "پخش در یوتیوب موزیک", "set-inactivity-timeout": "تنظیم زمان عدم فعالیت", "set-status-display-type": { "label": "متن وضعىت", "submenu": { "artist": "به {artist} گوش مىکند", - "pear-desktop": "به پىر دسکتاپ گوش مىکند", + "application": "به پىر دسکتاپ گوش مىکند", "title": "به {song title} گوش مىکند" } } diff --git a/src/i18n/resources/fi.json b/src/i18n/resources/fi.json index 8ea7ebae..9324b12b 100644 --- a/src/i18n/resources/fi.json +++ b/src/i18n/resources/fi.json @@ -154,7 +154,7 @@ "label": "Mukautettu ikkunan otsikko", "prompt": { "label": "Syötä mukautettu ikkunan otsikko: (jätä tyhjäksi poistaaksesi päältä)", - "placeholder": "Esimerkki: Pear Desktop" + "placeholder": "Esimerkki: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Uudelleen käynnistä appi", "show": "Näytä ikkuna", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Tunnelmallinen Tila" }, "amuse": { - "description": "Lisää Pear Desktop tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs", + "description": "Lisää {{applicationName}} tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs", "name": "Amuse", "response": { "query": "Amuse API-palvelin on päällä. Käytä GET /query-rajapintaa saadaksesi kappaleen tiedot." @@ -373,7 +373,7 @@ "name": "Ohita Ikään Perustuvat Rajoitukset" }, "captions-selector": { - "description": "Pear Desktop ääniraitojen tekstitysten valitsin", + "description": "{{applicationName}} ääniraitojen tekstitysten valitsin", "menu": { "autoload": "Valitse automaattisesti viimeksi käytetty tekstitys", "disable-captions": "Tekstitys ei oletusarvoisesti käytössä" @@ -443,7 +443,7 @@ "disconnected": "Yhteys katkaistu", "hide-duration-left": "Piilota kappaleen jäljellä oleva kesto", "hide-github-button": "Piilota \"linkki GitHubiin\" -nappi", - "play-on-pear-desktop": "Kuuntele palvelussa Pear Desktop", + "play-on-application": "Kuuntele palvelussa {{applicationName}}", "set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu" }, "name": "Discord Aktiviteetti (Rich Presence)", diff --git a/src/i18n/resources/fil.json b/src/i18n/resources/fil.json index 34b53e9c..de26bf7d 100644 --- a/src/i18n/resources/fil.json +++ b/src/i18n/resources/fil.json @@ -154,7 +154,7 @@ "label": "Custom na window title", "prompt": { "label": "I-enter ang custom na window tile: (iwanang blanko para di-mapagana)", - "placeholder": "Halimbawa: Pear Desktop" + "placeholder": "Halimbawa: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "I-restart ang App", "show": "Ipakita ang window", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Ambient Mode" }, "amuse": { - "description": "Nagdaragdag ng suporta sa Pear Desktop para sa Amuse now playing widget ng 6K Labs", + "description": "Nagdaragdag ng suporta sa {{applicationName}} para sa Amuse now playing widget ng 6K Labs", "response": { "query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta." } @@ -369,7 +369,7 @@ "name": "I-bypass ang Restriksyon sa Edad" }, "captions-selector": { - "description": "Tagapili ng caption para sa mga audio track ng Pear Desktop", + "description": "Tagapili ng caption para sa mga audio track ng {{applicationName}}", "menu": { "autoload": "Awtomatikong piliin ang huling ginamit na caption", "disable-captions": "Walang mga caption bilang default" @@ -446,13 +446,13 @@ "disconnected": "Nadiskonekta", "hide-duration-left": "Itago ang natitirang oras", "hide-github-button": "Itago ang button na GitHub link", - "play-on-pear-desktop": "Patugtugin sa Pear Desktop", + "play-on-application": "Patugtugin sa {{applicationName}}", "set-inactivity-timeout": "I-set ang inactivity timeout", "set-status-display-type": { "submenu": { "artist": "Nakikinig sa {artist}", "title": "Nakikinig sa {song title}", - "pear-desktop": "Kumikinig sa Pear Desktop" + "application": "Kumikinig sa {{applicationName}}" } } }, diff --git a/src/i18n/resources/fr.json b/src/i18n/resources/fr.json index 7df391fd..ea65e94d 100644 --- a/src/i18n/resources/fr.json +++ b/src/i18n/resources/fr.json @@ -154,7 +154,7 @@ "label": "Titre de fenêtre personnalisé", "prompt": { "label": "Entrer un titre de fenêtre : (Laissé vide pour désactiver)", - "placeholder": "Exemple : Pear Desktop" + "placeholder": "Exemple : {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Redémarrer l'application", "show": "Afficher la fenêtre", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop : {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Mode ambiant" }, "amuse": { - "description": "Ajout de la prise en charge de Pear Desktop pour le widget Amuse now playing de 6K Labs", + "description": "Ajout de la prise en charge de {{applicationName}} pour le widget Amuse now playing de 6K Labs", "name": "Amuse", "response": { "query": "Le serveur API d'Amuse est en cours d'exécution. GET /query pour obtenir des informations sur les chansons." @@ -374,7 +374,7 @@ "name": "Contourner les restrictions d’âge" }, "captions-selector": { - "description": "Sélecteur de sous-titres pour les pistes audio Pear Desktop", + "description": "Sélecteur de sous-titres pour les pistes audio {{applicationName}}", "menu": { "autoload": "Sélectionner automatiquement la dernière légende utilisée", "disable-captions": "Pas de sous-titres par défaut" @@ -457,13 +457,13 @@ "disconnected": "Déconnecté", "hide-duration-left": "Masquer la durée restante", "hide-github-button": "Masquer le bouton du lien GitHub", - "play-on-pear-desktop": "Jouer sur Pear Desktop", + "play-on-application": "Jouer sur {{applicationName}}", "set-inactivity-timeout": "Définir le délai d'inactivité", "set-status-display-type": { "label": "Texte d'état", "submenu": { "artist": "Écoute {artiste}", - "pear-desktop": "Écoute Pear Desktop", + "application": "Écoute {{applicationName}}", "title": "Écoute {titre de la chanson}" } } diff --git a/src/i18n/resources/gl.json b/src/i18n/resources/gl.json index 382d5aa3..872397d1 100644 --- a/src/i18n/resources/gl.json +++ b/src/i18n/resources/gl.json @@ -154,7 +154,7 @@ "label": "Título de xanela personalizado", "prompt": { "label": "Introduza o título personalizado da xanela (deixe baleiro para desactivala)", - "placeholder": "Exemplo: Pear Desktop" + "placeholder": "Exemplo: {{applicationName}}" } }, "like-buttons": { diff --git a/src/i18n/resources/he.json b/src/i18n/resources/he.json index 8c32a8e0..0a4c1908 100644 --- a/src/i18n/resources/he.json +++ b/src/i18n/resources/he.json @@ -206,8 +206,8 @@ "restart": "הפעל מחדש", "show": "הראה חלון", "tooltip": { - "default": "שולחן כתיבה אגסי", - "with-song-info": "שולחן כתיב אגסי: {{יוצר}} - {{כותרת}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -285,7 +285,7 @@ "name": "מצב אווירה" }, "amuse": { - "description": "מוסיף תמיכה ב-Pear Desktop עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs", + "description": "מוסיף תמיכה ב-{{applicationName}} עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs", "name": "משעשע", "response": { "query": "שרת ה-API של Amuse פועל. קבל מידע על השיר באמצעות GET /query." @@ -371,7 +371,7 @@ "name": "עקוף את ההחמרות של הגיל" }, "captions-selector": { - "description": "בורר כתוביות עבור רצועות אודיו של Pear Desktop", + "description": "בורר כתוביות עבור רצועות אודיו של {{applicationName}}", "menu": { "autoload": "בחר אוטומטי את הכתובית האחרונה שנבחרה", "disable-captions": "ברירת מחד ללא כתוביות" @@ -432,7 +432,7 @@ "connected": "מחובר", "disconnected": "מנותק", "hide-github-button": "הסתר את לחצן הקישור של GitHub", - "play-on-pear-desktop": "הפעל ביוטיוב מיוזיק", + "play-on-application": "הפעל ביוטיוב מיוזיק", "set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות" } }, diff --git a/src/i18n/resources/hi.json b/src/i18n/resources/hi.json index 200f9aa7..5a62fb6d 100644 --- a/src/i18n/resources/hi.json +++ b/src/i18n/resources/hi.json @@ -208,8 +208,8 @@ "restart": "ऐप पुनः प्रारंभ करें", "show": "ऐप दिखाए", "tooltip": { - "default": "पियर डेस्कटॉप", - "with-song-info": "पियर डेस्कटॉप: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -373,7 +373,7 @@ "name": "आयु प्रतिबंध को बायपास करें" }, "captions-selector": { - "description": "Pear Desktop म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता", + "description": "{{applicationName}} म्यूज़िक ऑडियो ट्रैक के लिए कैप्शन चयनकर्ता", "menu": { "autoload": "अंतिम बार उपयोग किए गए कैप्शन का ऑटोमैटिक रूप से चयन करें", "disable-captions": "डिफ़ॉल्ट रूप में कोई कैप्शन नहीं" @@ -456,13 +456,13 @@ "disconnected": "डिस्कनेक्ट किया गया", "hide-duration-left": "शेष अवधि छिपाएँ", "hide-github-button": "GitHub लिंक के बटन को छिपाएँ", - "play-on-pear-desktop": "Pear Desktop म्यूज़िक पर चलाएँ", + "play-on-application": "{{applicationName}} म्यूज़िक पर चलाएँ", "set-inactivity-timeout": "निष्क्रियता समय समाप्ति सेट करें", "set-status-display-type": { "label": "स्टेटस टेक्स्ट", "submenu": { "artist": "{artist} को सुन रहे है", - "pear-desktop": "Pear Desktop सुन रहे है", + "application": "{{applicationName}} सुन रहे है", "title": "{song title} सुन रहे है" } } diff --git a/src/i18n/resources/hr.json b/src/i18n/resources/hr.json index fa34b39c..0b51a22a 100644 --- a/src/i18n/resources/hr.json +++ b/src/i18n/resources/hr.json @@ -154,7 +154,7 @@ "label": "Prilagođeni naslov prozora", "prompt": { "label": "Unesi prilagođeni naslov prozora: (ostavi prazno za onemogućiti)", - "placeholder": "Primjer: Pear Desktop" + "placeholder": "Primjer: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Ponovo Pokreni Aplikaciju", "show": "Prikaži prozor", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Ambijentalni Način" }, "amuse": { - "description": "Dodaje podršku za Pear Desktop za widget \"sada reproducira\" od Amuse od strane 6K Labs", + "description": "Dodaje podršku za {{applicationName}} za widget \"sada reproducira\" od Amuse od strane 6K Labs", "name": "Zabavljati", "response": { "query": "Amuse API poslužitelj je pokrenut. Koristi GET /query za dohvat informacija o pjesmi." @@ -373,7 +373,7 @@ "name": "Zaobiđi dobna ograničenja" }, "captions-selector": { - "description": "Izbornik titlova za audiozapise od Pear Desktopa", + "description": "Izbornik titlova za audiozapise od {{applicationName}}a", "menu": { "autoload": "Automatski izaberi posljednje korištene titlove", "disable-captions": "Bez titlova" @@ -456,13 +456,13 @@ "disconnected": "Odspojen", "hide-duration-left": "Sakrij preostalo vrijeme", "hide-github-button": "Sakrij gumb sa GitHub poveznicom", - "play-on-pear-desktop": "Reproduciraj na Pear Desktopu", + "play-on-application": "Reproduciraj na {{applicationName}}u", "set-inactivity-timeout": "Postavi vremensko ograničenje neaktivnosti (inactivity timeout)", "set-status-display-type": { "label": "Tekst statusa", "submenu": { "artist": "Slušate {glazbenika}", - "pear-desktop": "Slušate Pear Desktop", + "application": "Slušate {{applicationName}}", "title": "Slušate {naslov pjesme}" } } diff --git a/src/i18n/resources/hu.json b/src/i18n/resources/hu.json index eaa0c728..50ad7104 100644 --- a/src/i18n/resources/hu.json +++ b/src/i18n/resources/hu.json @@ -154,7 +154,7 @@ "label": "Saját ablak cím", "prompt": { "label": "Kérem az egyéni ablak címét: (hagyd üresen a kikapcsoláshoz)", - "placeholder": "Példa: Pear Desktop" + "placeholder": "Példa: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "YT Music újraindítása", "show": "Ablak megjelenítése", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Ambient mód" }, "amuse": { - "description": "Hozzáadja a Pear Desktop támogatását az Amuse \"now playing\" widgethez a 6K Labs által", + "description": "Hozzáadja a {{applicationName}} támogatását az Amuse \"now playing\" widgethez a 6K Labs által", "name": "Amuse", "response": { "query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez." @@ -371,7 +371,7 @@ "name": "Korellenőrzés kihagyása" }, "captions-selector": { - "description": "Felirat választó a Pear Desktop zenékhez", + "description": "Felirat választó a {{applicationName}} zenékhez", "menu": { "autoload": "Automatikusan kiválasztja az utoljára használt feliratot", "disable-captions": "Alapértelmezetten nincsenek feliratok" @@ -453,13 +453,13 @@ "disconnected": "Nincs Kapcsolódva", "hide-duration-left": "Hátralévő idő elrejtése", "hide-github-button": "GitHub url gombjának elrejtése", - "play-on-pear-desktop": "Lejátszás a Pear Desktop-on", + "play-on-application": "Lejátszás a {{applicationName}}-on", "set-inactivity-timeout": "Inaktivitási időkorlát beállítása", "set-status-display-type": { "label": "Tevékenység szöveg", "submenu": { "artist": "Hallgatja: {artist}", - "pear-desktop": "Hallgatja: Pear Desktop", + "application": "Hallgatja: {{applicationName}}", "title": "Hallgatja: {song title}" } } diff --git a/src/i18n/resources/id.json b/src/i18n/resources/id.json index 96b93d43..4e682d42 100644 --- a/src/i18n/resources/id.json +++ b/src/i18n/resources/id.json @@ -154,7 +154,7 @@ "label": "Judul jendela kustom", "prompt": { "label": "Masukkan judul jendela kustom (kosongkan untuk menonaktifkan)", - "placeholder": "Contoh: Pear Desktop" + "placeholder": "Contoh: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Restart aplikasi", "show": "Tampilkan jendela", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Mode ambient" }, "amuse": { - "description": "Menambahkan dukungan Pear Desktop untuk widget Amuse yang sedang diputar oleh 6K Labs", + "description": "Menambahkan dukungan {{applicationName}} untuk widget Amuse yang sedang diputar oleh 6K Labs", "name": "Amuse", "response": { "query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu." @@ -373,7 +373,7 @@ "name": "Lewati batasan umur" }, "captions-selector": { - "description": "Pemilih caption untuk trek audio Pear Desktop", + "description": "Pemilih caption untuk trek audio {{applicationName}}", "menu": { "autoload": "Pilih caption terakhir secara otomatis", "disable-captions": "Tidak ada caption secara default" @@ -456,14 +456,14 @@ "disconnected": "Terputus", "hide-duration-left": "Sembunyikan sisa durasi", "hide-github-button": "Sembunyikan tombol link GitHub", - "play-on-pear-desktop": "Mainkan di Pear Desktop", + "play-on-application": "Mainkan di {{applicationName}}", "set-inactivity-timeout": "Tetapkan batas waktu tidak aktif", "set-status-display-type": { "label": "Teks status", "submenu": { "artist": "Sedang mendengarkan {artist}", "title": "Sedang mendengarkan {song title}", - "pear-desktop": "Sedang mendengarkan Pear Desktop" + "application": "Sedang mendengarkan {{applicationName}}" } } }, diff --git a/src/i18n/resources/is.json b/src/i18n/resources/is.json index f418281e..16c0f349 100644 --- a/src/i18n/resources/is.json +++ b/src/i18n/resources/is.json @@ -201,8 +201,8 @@ "restart": "Endurræstu Forritið", "show": "Sýna glugga", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -335,7 +335,7 @@ "name": "Farið Framhjá Aldurstakmörkunum" }, "captions-selector": { - "description": "Skjátextavali fyrir Pear Desktop hljóðrásir", + "description": "Skjátextavali fyrir {{applicationName}} hljóðrásir", "menu": { "autoload": "Veldu sjálfkrafa síðast notaða myndatexta", "disable-captions": "Engir skjátextar sjálfgefið" @@ -400,7 +400,7 @@ "disconnected": "Aftengt", "hide-duration-left": "Fela tímalengd til vinstri", "hide-github-button": "Fela GitHub tengilhnapp", - "play-on-pear-desktop": "Spilaðu á Pear Desktop", + "play-on-application": "Spilaðu á {{applicationName}}", "set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni" }, "name": "Discord Rík Nærvera", diff --git a/src/i18n/resources/it.json b/src/i18n/resources/it.json index 7caec77c..f434f03e 100644 --- a/src/i18n/resources/it.json +++ b/src/i18n/resources/it.json @@ -154,7 +154,7 @@ "label": "Personalizza titolo finestra", "prompt": { "label": "Inserisci un titolo della finestra personalizzato: (lascia vuoto per disattivare)", - "placeholder": "Esempio: Pear Desktop" + "placeholder": "Esempio: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Riavvia l'app", "show": "Mostra finestra", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Modalità Ambiente" }, "amuse": { - "description": "Aggiunge il supporto a Pear Desktop per il widget Amuse Now Playing di 6K Labs", + "description": "Aggiunge il supporto a {{applicationName}} per il widget Amuse Now Playing di 6K Labs", "name": "Amuse", "response": { "query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani." @@ -373,7 +373,7 @@ "name": "Aggira i limiti d'età" }, "captions-selector": { - "description": "Selettore sottotitolo per le tracce audio di Pear Desktop", + "description": "Selettore sottotitolo per le tracce audio di {{applicationName}}", "menu": { "autoload": "Seleziona automaticamente l'ultimo sottotitolo utilizzato", "disable-captions": "Disattiva i sottotitoli" @@ -456,14 +456,14 @@ "disconnected": "Disconnesso", "hide-duration-left": "Nascondi la durata rimasta", "hide-github-button": "Nascondi il pulsante link a GitHub", - "play-on-pear-desktop": "Riproduci su Pear Desktop", + "play-on-application": "Riproduci su {{applicationName}}", "set-inactivity-timeout": "Imposta il timeout di inattività", "set-status-display-type": { "label": "Testo dello status", "submenu": { "artist": "Stai ascoltando {artist}", "title": "Stai ascoltando {song title}", - "pear-desktop": "Ascoltando Pear Desktop" + "application": "Ascoltando {{applicationName}}" } } }, diff --git a/src/i18n/resources/ja.json b/src/i18n/resources/ja.json index 3c05d027..63e55f26 100644 --- a/src/i18n/resources/ja.json +++ b/src/i18n/resources/ja.json @@ -154,7 +154,7 @@ "label": "カスタムウィンドウタイトル", "prompt": { "label": "カスタムウィンドウタイトルを入力: (未入力の場合無効になります)", - "placeholder": "例: Pear Desktop" + "placeholder": "例: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "アプリを再起動", "show": "ウィンドウを表示", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "アンビエント モード" }, "amuse": { - "description": "6K LabsのAmuse再生中ウィジェットがPear Desktopに対応しました", + "description": "6K LabsのAmuse再生中ウィジェットが{{applicationName}}に対応しました", "name": "Amuse", "response": { "query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。" @@ -373,7 +373,7 @@ "name": "年齢制限迂回" }, "captions-selector": { - "description": "Pear Desktopトラック用字幕選択機", + "description": "{{applicationName}}トラック用字幕選択機", "menu": { "autoload": "最後の字幕を自動に選択", "disable-captions": "デフォルトで字幕を無効化" @@ -456,13 +456,13 @@ "disconnected": "切断済み", "hide-duration-left": "残りの再生時間を隠す", "hide-github-button": "GitHubリンクボタンを隠す", - "play-on-pear-desktop": "Pear Desktopで再生", + "play-on-application": "{{applicationName}}で再生", "set-inactivity-timeout": "タイムアウト時間を設定", "set-status-display-type": { "label": "ステータステキスト", "submenu": { "artist": "{artist}を聴いている", - "pear-desktop": "Pear Desktopを聴く", + "application": "{{applicationName}}を聴く", "title": "{曲名}を聴いている" } } diff --git a/src/i18n/resources/ko.json b/src/i18n/resources/ko.json index 0cc6b2d6..6002fc00 100644 --- a/src/i18n/resources/ko.json +++ b/src/i18n/resources/ko.json @@ -154,7 +154,7 @@ "label": "사용자 정의 앱 제목", "prompt": { "label": "앱 제목으로 표시할 내용 : (빈 칸 일시 비활성화)", - "placeholder": "예: Pear Desktop" + "placeholder": "예: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "앱 재시작", "show": "창 표시", "tooltip": { - "default": "피어 데스크톱", - "with-song-info": "피어 데스크톱: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "앰비언트 모드" }, "amuse": { - "description": "6K Labs Amuse의 'now playing' 위젯에 Pear Desktop 지원 추가", + "description": "6K Labs Amuse의 'now playing' 위젯에 {{applicationName}} 지원 추가", "name": "Amuse", "response": { "query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요." @@ -374,7 +374,7 @@ "name": "나이 제한 우회" }, "captions-selector": { - "description": "Pear Desktop 트랙용 자막 선택기입니다", + "description": "{{applicationName}} 트랙용 자막 선택기입니다", "menu": { "autoload": "마지막으로 사용한 자막을 자동으로 선택", "disable-captions": "기본 자막 제거" @@ -457,13 +457,13 @@ "disconnected": "연결 해제 됨", "hide-duration-left": "남은 재생 시간 숨기기", "hide-github-button": "GitHub 링크 버튼 숨기기", - "play-on-pear-desktop": "유튜브 뮤직에서 재생", + "play-on-application": "유튜브 뮤직에서 재생", "set-inactivity-timeout": "비활성 시간 제한 설정", "set-status-display-type": { "label": "상태 텍스트", "submenu": { "artist": "{아티스트} 듣는 중", - "pear-desktop": "Pear Desktop 듣는 중", + "application": "{{applicationName}} 듣는 중", "title": "{곡 제목} 듣는 중" } } diff --git a/src/i18n/resources/lt.json b/src/i18n/resources/lt.json index cbe91d11..3dac6316 100644 --- a/src/i18n/resources/lt.json +++ b/src/i18n/resources/lt.json @@ -152,7 +152,7 @@ "submenu": { "custom-window-title": { "prompt": { - "placeholder": "Pavyzdys: Pear Desktop" + "placeholder": "Pavyzdys: {{applicationName}}" } }, "like-buttons": { @@ -206,8 +206,8 @@ "restart": "Perkrauti programą", "show": "Rodyti langą", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -285,7 +285,7 @@ "name": "Aplinkos rėžimas" }, "amuse": { - "description": "Prideda Pear Desktop palaikyma Amuse grojimo valdikliui pagal 6K Labs", + "description": "Prideda {{applicationName}} palaikyma Amuse grojimo valdikliui pagal 6K Labs", "name": "Amuse (Platforma Dainininkams)", "response": { "query": "Amuse API serveris yra veikiantis. Parašykite Get /query kad gautumėte dainos informacija." @@ -347,7 +347,7 @@ "name": "Apeiti Amžiaus Apribojimus" }, "captions-selector": { - "description": "„Pear Desktop“ Garso takelių antraščių parinkiklis", + "description": "„{{applicationName}}“ Garso takelių antraščių parinkiklis", "menu": { "autoload": "Automatiškai pasirinkti paskutinę naudotą antraštę", "disable-captions": "Pagal numatytuosius nustatymus išjungti antraštės" @@ -427,13 +427,13 @@ "disconnected": "Atsijungta", "hide-duration-left": "Slėpti kiek liko laiko", "hide-github-button": "Slėpti \"GitHub\" nuorodos mygtuką", - "play-on-pear-desktop": "Leisti ant \"Pear Desktop\"", + "play-on-application": "Leisti ant \"{{applicationName}}\"", "set-inactivity-timeout": "Nustatyti neveiklumo laiką", "set-status-display-type": { "submenu": { "artist": "Klausosi {artist]", "title": "Klausosi {song title}", - "pear-desktop": "Klausosi Pear Desktop" + "application": "Klausosi {{applicationName}}" } } }, diff --git a/src/i18n/resources/lv.json b/src/i18n/resources/lv.json index 4b667765..8d7828ac 100644 --- a/src/i18n/resources/lv.json +++ b/src/i18n/resources/lv.json @@ -208,8 +208,8 @@ "restart": "Restartēt Lietotni", "show": "Rādīt logu", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Ambientais Režīms" }, "amuse": { - "description": "Pievieno Pear Desktop atblastu priekš Amuse \"tagad spēlē\" no 6K Labs", + "description": "Pievieno {{applicationName}} atblastu priekš Amuse \"tagad spēlē\" no 6K Labs", "name": "Amuse", "response": { "query": "Amuse API serveris ir palaists. GET /query lai dabūtu dziesmas info." @@ -373,7 +373,7 @@ "name": "Apiet Vecuma Ierobežojumus" }, "captions-selector": { - "description": "Subtitru izvēlne priekš Pear Desktop audio ceļiem", + "description": "Subtitru izvēlne priekš {{applicationName}} audio ceļiem", "menu": { "autoload": "Automātiski izvēlēties pēdējo izmantotos subtitrus", "disable-captions": "Bez subtitriem pēc noklusējuma" @@ -456,7 +456,7 @@ "disconnected": "Atvienojies", "hide-duration-left": "Paslēpt cik palika laika", "hide-github-button": "Paslēpt GitHub saites pogu", - "play-on-pear-desktop": "Atskaņot uz Pear Desktop", + "play-on-application": "Atskaņot uz {{applicationName}}", "set-inactivity-timeout": "Iestatīt neaktivitātes taimeru", "set-status-display-type": { "label": "Statusa teksts", diff --git a/src/i18n/resources/ms.json b/src/i18n/resources/ms.json index b0cb22ff..ae72cd6c 100644 --- a/src/i18n/resources/ms.json +++ b/src/i18n/resources/ms.json @@ -154,7 +154,7 @@ "label": "Tajuk tetingkap tersuai", "prompt": { "label": "Masukkan tajuk tetingkap tersuai: (biarkan kosong untuk matikan)", - "placeholder": "Contoh: Pear Desktop" + "placeholder": "Contoh: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Mulakan Semula Aplikasi", "show": "Papar tetingkap", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop : {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Mod Sekitaran" }, "amuse": { - "description": "Menambahkan sokongan Pear Desktop untuk widget sedang dimain Amuse oleh 6K Labs", + "description": "Menambahkan sokongan {{applicationName}} untuk widget sedang dimain Amuse oleh 6K Labs", "name": "Terhibur", "response": { "query": "API server Amuse telah berjalan. GET /query untuk mendapatkan maklumat lagu." @@ -373,7 +373,7 @@ "name": "Pintas Sekatan Umur" }, "captions-selector": { - "description": "Pemilih kapsyen untuk trek audio Pear Desktop", + "description": "Pemilih kapsyen untuk trek audio {{applicationName}}", "menu": { "autoload": "Pilih kapsyen terakhir diguna secara automatik", "disable-captions": "Tiada kapsyen secara lalai" @@ -456,13 +456,13 @@ "disconnected": "Tidak disambungkan", "hide-duration-left": "Sembunyikan tempoh yang tinggal", "hide-github-button": "Sembunyikan Butang pautan GitHub", - "play-on-pear-desktop": "Main di Pear Desktop", + "play-on-application": "Main di {{applicationName}}", "set-inactivity-timeout": "Tetapkan tamat masa tidak aktif", "set-status-display-type": { "label": "Teks status", "submenu": { "artist": "Sedang mendengar {artist}", - "pear-desktop": "Mendengar Pear Desktop", + "application": "Mendengar {{applicationName}}", "title": "Sedang mendengar {tajuk lagu}" } } diff --git a/src/i18n/resources/nb.json b/src/i18n/resources/nb.json index 83b847f3..59fc29f4 100644 --- a/src/i18n/resources/nb.json +++ b/src/i18n/resources/nb.json @@ -261,7 +261,7 @@ "name": "Omgå aldersgrense" }, "captions-selector": { - "description": "Undertekstverktøy for lydspor i Pear Desktop", + "description": "Undertekstverktøy for lydspor i {{applicationName}}", "menu": { "autoload": "Auto-velg sist brukte undertekst", "disable-captions": "Ingen undertekst som forvalg" @@ -326,7 +326,7 @@ "disconnected": "Frakoblet", "hide-duration-left": "Skjul gjenværende tid", "hide-github-button": "Skjul GitHub-lenkeknapp", - "play-on-pear-desktop": "Spill på Pear Desktop", + "play-on-application": "Spill på {{applicationName}}", "set-inactivity-timeout": "Sett tid før tidsavbrudd" }, "name": "Rik tilstedeværelse for Discord", diff --git a/src/i18n/resources/ne.json b/src/i18n/resources/ne.json index 66f43edb..6def4a10 100644 --- a/src/i18n/resources/ne.json +++ b/src/i18n/resources/ne.json @@ -208,8 +208,8 @@ "restart": "एप पुनः सुरु गर्नुहोस्", "show": "विन्डो देखाउनुहोस्", "tooltip": { - "default": "युट्युब मिउजिक", - "with-song-info": "युट्युब मिउजिक:{{artist}}-{{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -443,7 +443,7 @@ "disconnected": "डिसकन्एक्टेड", "hide-duration-left": "बाकी समय लुकाऊ", "hide-github-button": "GitHub लिंक लुकाऊ", - "play-on-pear-desktop": "Pear Desktop मा बजाउ", + "play-on-application": "{{applicationName}} मा बजाउ", "set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख" }, "name": "डिसकार्ड रिच प्रीसेंस", diff --git a/src/i18n/resources/nl.json b/src/i18n/resources/nl.json index 1df92d95..132cefdf 100644 --- a/src/i18n/resources/nl.json +++ b/src/i18n/resources/nl.json @@ -154,7 +154,7 @@ "label": "Aangepaste venstertitel", "prompt": { "label": "Voer aangepaste venstertitel in: (laat leeg om uit te schakelen)", - "placeholder": "Voorbeeld: Pear Desktop" + "placeholder": "Voorbeeld: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Herstarten App", "show": "Weergeven Venster", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Omgevingsmodus" }, "amuse": { - "description": "Voegt Pear Desktop ondersteuning toe voor de Amuse now playing widget van 6K Labs", + "description": "Voegt {{applicationName}} ondersteuning toe voor de Amuse now playing widget van 6K Labs", "name": "Amuse", "response": { "query": "Amuse API server loopt. Gebruik /query voor nummer informatie." @@ -373,7 +373,7 @@ "name": "Leeftijdsbeperkingen Omzeilen" }, "captions-selector": { - "description": "Ondertitelkeuze voor Pear Desktop-audiotracks", + "description": "Ondertitelkeuze voor {{applicationName}}-audiotracks", "menu": { "autoload": "Automatisch de laatst gebruikte ondertitel selecteren", "disable-captions": "Standaard geen ondertitels" @@ -456,14 +456,14 @@ "disconnected": "Verbinding verbroken", "hide-duration-left": "Verberg resterende tijd", "hide-github-button": "GitHub-knop verbergen", - "play-on-pear-desktop": "Afspelen op Pear Desktop", + "play-on-application": "Afspelen op {{applicationName}}", "set-inactivity-timeout": "Inactiviteitstime-out instellen", "set-status-display-type": { "label": "Status tekst", "submenu": { "artist": "Naar {artist} aan het luisteren", "title": "Naar {song title} aan het luisteren", - "pear-desktop": "Naar Pear Desktop aan het luisteren" + "application": "Naar {{applicationName}} aan het luisteren" } } }, diff --git a/src/i18n/resources/pl.json b/src/i18n/resources/pl.json index 11999211..d7546c4c 100644 --- a/src/i18n/resources/pl.json +++ b/src/i18n/resources/pl.json @@ -154,7 +154,7 @@ "label": "Niestandardowy tytuł okna", "prompt": { "label": "Podaj niestandardowy tytuł okna (zostaw puste, aby to wyłączyć)", - "placeholder": "Przykład: Pear Desktop" + "placeholder": "Przykład: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Uruchom ponownie aplikację", "show": "Pokaż okno", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "{{title}} (autorstwa {{artist}}) - Pear Desktop" + "default": "{{applicationName}}", + "with-song-info": "{{artist}} - (autorstwa {{artist}}) - {{applicationName}}" } } }, @@ -287,14 +287,14 @@ "name": "Tryb otoczenia" }, "amuse": { - "description": "Wspiera integrację Pear Desktop z widgetami Amuse (od 6K Labs)", + "description": "Wspiera integrację {{applicationName}} z widgetami Amuse (od 6K Labs)", "name": "Amuse", "response": { "query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze." } }, "api-server": { - "description": "Pozwala na kontrolowanie Pear Desktop poprzez podłączenie specjalnego serwera API", + "description": "Pozwala na kontrolowanie {{applicationName}} poprzez podłączenie specjalnego serwera API", "dialog": { "request": { "buttons": { @@ -324,7 +324,7 @@ "label": "Port" } }, - "name": "Pear Desktop API", + "name": "{{applicationName}} API", "prompt": { "hostname": { "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" }, "captions-selector": { - "description": "Selektor napisów dla ścieżek audio Pear Desktop", + "description": "Selektor napisów dla ścieżek audio {{applicationName}}", "menu": { "autoload": "Automatycznie wybierz ostatnio używanych napisów", "disable-captions": "Domyślnie, brak napisów" @@ -456,13 +456,13 @@ "disconnected": "Odłączono", "hide-duration-left": "Ukryj pozostały czas trwania", "hide-github-button": "Ukryj przycisk do GitHub", - "play-on-pear-desktop": "Odtwórz w Pear Desktop", + "play-on-application": "Odtwórz w {{applicationName}}", "set-inactivity-timeout": "Ustaw limit czasu bezczynności", "set-status-display-type": { "label": "Opis statusu", "submenu": { "artist": "Słucha {artist}", - "pear-desktop": "Słucha Pear Desktop", + "application": "Słucha {{applicationName}}", "title": "Słucha {song title}" } } diff --git a/src/i18n/resources/pt-BR.json b/src/i18n/resources/pt-BR.json index abb3e295..c2cacc8f 100644 --- a/src/i18n/resources/pt-BR.json +++ b/src/i18n/resources/pt-BR.json @@ -154,7 +154,7 @@ "label": "Título da janela customizado", "prompt": { "label": "Insira título customizado para a janela: (deixe em branco para desabilitar)", - "placeholder": "Exemplo: Pear Desktop" + "placeholder": "Exemplo: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Reiniciar aplicativo", "show": "Mostrar janela", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Modo ambiente" }, "amuse": { - "description": "Adiciona suporte ao Pear Desktop ao widget 'Reproduzindo agora' do Amuse da 6K Labs", + "description": "Adiciona suporte ao {{applicationName}} ao widget 'Reproduzindo agora' do Amuse da 6K Labs", "name": "Amuse", "response": { "query": "Servidor API do Amuse em execução. GET /query para obter informações da música." @@ -374,7 +374,7 @@ "name": "Ignorar restrições de idade" }, "captions-selector": { - "description": "Seletor de legendas para faixas de áudio do Pear Desktop", + "description": "Seletor de legendas para faixas de áudio do {{applicationName}}", "menu": { "autoload": "Selecionar automaticamente a última legenda usada", "disable-captions": "Sem legendas por padrão" @@ -457,13 +457,13 @@ "disconnected": "Desconectado", "hide-duration-left": "Ocultar duração restante", "hide-github-button": "Ocultar botão do GitHub", - "play-on-pear-desktop": "Reproduzir no Pear Desktop", + "play-on-application": "Reproduzir no {{applicationName}}", "set-inactivity-timeout": "Definir tempo limite de inatividade", "set-status-display-type": { "label": "Texto de status", "submenu": { "artist": "Ouvindo {artist}", - "pear-desktop": "Ouvindo Pear Desktop", + "application": "Ouvindo {{applicationName}}", "title": "Ouvindo {song title}" } } diff --git a/src/i18n/resources/pt.json b/src/i18n/resources/pt.json index 6556a77e..91655657 100644 --- a/src/i18n/resources/pt.json +++ b/src/i18n/resources/pt.json @@ -154,7 +154,7 @@ "label": "Título de janela personalizado", "prompt": { "label": "Introduza um título: (deixe em branco para desativar)", - "placeholder": "Exemplo: Pear Desktop" + "placeholder": "Exemplo: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Reiniciar aplicação", "show": "Mostrar janela", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Modo ambiente" }, "amuse": { - "description": "Adiciona suporte ao Pear Desktop para o widget Amuse now playing de 6K Labs", + "description": "Adiciona suporte ao {{applicationName}} para o widget Amuse now playing de 6K Labs", "name": "Amuse", "response": { "query": "O servidor da API Amuse está a ser executado. GET/query para obter informações sobre a faixa." @@ -374,7 +374,7 @@ "name": "Ignorar restrições de idade" }, "captions-selector": { - "description": "Seletor de legendas para as faixas de áudio do Pear Desktop", + "description": "Seletor de legendas para as faixas de áudio do {{applicationName}}", "menu": { "autoload": "Selecionar automaticamente a última legenda utilizada", "disable-captions": "Sem legendas por omissão" @@ -457,13 +457,13 @@ "disconnected": "Desconectado", "hide-duration-left": "Ocultar tempo restante", "hide-github-button": "Ocultar botão GitHub", - "play-on-pear-desktop": "Reproduzir em Pear Desktop", + "play-on-application": "Reproduzir em {{applicationName}}", "set-inactivity-timeout": "Definir tempo de inatividade", "set-status-display-type": { "label": "Texto de estado", "submenu": { "artist": "A ouvir {artist}", - "pear-desktop": "A reproduzir Pear Desktop", + "application": "A reproduzir {{applicationName}}", "title": "A ouvir {song title}" } } diff --git a/src/i18n/resources/ro.json b/src/i18n/resources/ro.json index 97c96ab6..1ff06b9a 100644 --- a/src/i18n/resources/ro.json +++ b/src/i18n/resources/ro.json @@ -154,7 +154,7 @@ "label": "Titlul ferestrei personalizate", "prompt": { "label": "Introduceți titlul ferestrei personalizate: (lăsați gol pentru a dezactiva)", - "placeholder": "Exemplu: Pear Desktop" + "placeholder": "Exemplu: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Reporneste aplicatia", "show": "Arata fereastra", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Mod ambiental" }, "amuse": { - "description": "Adauga suport Pear Desktop pentru Amuse se redă acum widget de 6K Labs", + "description": "Adauga suport {{applicationName}} pentru Amuse se redă acum widget de 6K Labs", "name": "Amuse", "response": { "query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie." @@ -373,7 +373,7 @@ "name": "Ignoră restricțiile de vârstă" }, "captions-selector": { - "description": "Selector de subtitrări pentru piesele audio de pe Pear Desktop", + "description": "Selector de subtitrări pentru piesele audio de pe {{applicationName}}", "menu": { "autoload": "Selectează automat ultima subtitrare folosită", "disable-captions": "Fără subtitrări în mod implicit" @@ -456,14 +456,14 @@ "disconnected": "Deconectat", "hide-duration-left": "Ascunde timpul rămas", "hide-github-button": "Ascunde butonul cu link-ul GitHub", - "play-on-pear-desktop": "Redă pe Pear Desktop", + "play-on-application": "Redă pe {{applicationName}}", "set-inactivity-timeout": "Setează intervalul de inactivitate", "set-status-display-type": { "label": "Text stare", "submenu": { "artist": "Ascultând {artist}", "title": "Ascultând {song title}", - "pear-desktop": "Ascultând Pear Desktop" + "application": "Ascultând {{applicationName}}" } } }, diff --git a/src/i18n/resources/ru.json b/src/i18n/resources/ru.json index a443dda1..23bccb1f 100644 --- a/src/i18n/resources/ru.json +++ b/src/i18n/resources/ru.json @@ -154,7 +154,7 @@ "label": "Собственное название окна", "prompt": { "label": "Введите собственное название окна: (оставьте пустым, чтобы отключить)", - "placeholder": "Например: Pear Desktop" + "placeholder": "Например: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Перезапустить приложение", "show": "Показать окно", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -373,7 +373,7 @@ "name": "Обход возрастных ограничений" }, "captions-selector": { - "description": "Выбор субтитров для аудиотреков в Pear Desktop", + "description": "Выбор субтитров для аудиотреков в {{applicationName}}", "menu": { "autoload": "Автоматически выбирать последние использованные субтитры", "disable-captions": "Без субтитров по умолчанию" @@ -456,13 +456,13 @@ "disconnected": "Отключено", "hide-duration-left": "Скрыть сколько осталось времени", "hide-github-button": "Скрыть ссылку на GitHub", - "play-on-pear-desktop": "Воспроизвести на Pear Desktop", + "play-on-application": "Воспроизвести на {{applicationName}}", "set-inactivity-timeout": "Поставить таймер неактивности", "set-status-display-type": { "label": "Текст статуса", "submenu": { "artist": "Слушает {исполнитель}", - "pear-desktop": "Слушает Pear Desktop", + "application": "Слушает {{applicationName}}", "title": "Слушает {название трека}" } } diff --git a/src/i18n/resources/si.json b/src/i18n/resources/si.json index 23a53ee0..4ed90d95 100644 --- a/src/i18n/resources/si.json +++ b/src/i18n/resources/si.json @@ -201,8 +201,8 @@ "restart": "නැවත ආරම්භ කරන්න", "show": "තිරය පෙන්වන්න", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, diff --git a/src/i18n/resources/sk.json b/src/i18n/resources/sk.json index 1f006288..d4b2a1b9 100644 --- a/src/i18n/resources/sk.json +++ b/src/i18n/resources/sk.json @@ -154,7 +154,7 @@ "label": "Vlastný názov okna", "prompt": { "label": "Napíšte vlastný názov okna: (nechajte prázdne pre vypnutie)", - "placeholder": "Napríklad: Pear Desktop" + "placeholder": "Napríklad: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Reštartovať aplikáciu", "show": "Zobraziť okno", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Ambientný mód" }, "amuse": { - "description": "Pridáva Pear Desktop podporu pre Amuse práve prehráva widget od 6K Labs", + "description": "Pridáva {{applicationName}} podporu pre Amuse práve prehráva widget od 6K Labs", "name": "Amuse", "response": { "query": "Amuse API server beží. GET /query to get song info." @@ -374,7 +374,7 @@ "name": "Obísť vekové obmedzenia" }, "captions-selector": { - "description": "Selektor titulkov pre zvukové stopy Pear Desktop", + "description": "Selektor titulkov pre zvukové stopy {{applicationName}}", "menu": { "autoload": "Automatický výber naposledy použitých titulkov", "disable-captions": "Žiadne titulky" @@ -457,13 +457,13 @@ "disconnected": "Odpojené", "hide-duration-left": "Skryť zostávajúcu dobu trvania", "hide-github-button": "Skryť tlačidlo s odkazom na GitHub", - "play-on-pear-desktop": "Spustiť na Pear Desktop", + "play-on-application": "Spustiť na {{applicationName}}", "set-inactivity-timeout": "Nastaviť časový limit nečinnosti", "set-status-display-type": { "label": "Text stavu", "submenu": { "artist": "Aktuálne si prehráva {artist}", - "pear-desktop": "Počúvať Pear Desktop", + "application": "Počúvať {{applicationName}}", "title": "Aktuálne si prehráva {song title}" } } diff --git a/src/i18n/resources/sl.json b/src/i18n/resources/sl.json index 3f5cc661..ea8118de 100644 --- a/src/i18n/resources/sl.json +++ b/src/i18n/resources/sl.json @@ -201,8 +201,8 @@ "restart": "Ponovni zagon", "show": "Pokaži okno", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -335,7 +335,7 @@ "name": "Preskoči starostno omejitev" }, "captions-selector": { - "description": "Izberi podnapise za Pear Desktop zvočne posnetke", + "description": "Izberi podnapise za {{applicationName}} zvočne posnetke", "menu": { "autoload": "Avtomatsko uporabi zadnje izbrane podnapise", "disable-captions": "Avtomatsko brez podnapisov" @@ -400,7 +400,7 @@ "disconnected": "Prekinjena povezava", "hide-duration-left": "Skrij preostali čas", "hide-github-button": "Skrij povezavo do GitHub-a", - "play-on-pear-desktop": "Predvajaj v Pear Desktop", + "play-on-application": "Predvajaj v {{applicationName}}", "set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti" }, "name": "Discord bogata prisotnost (Rich Presence)", diff --git a/src/i18n/resources/sr.json b/src/i18n/resources/sr.json index c03a2be2..e8fde6b3 100644 --- a/src/i18n/resources/sr.json +++ b/src/i18n/resources/sr.json @@ -154,7 +154,7 @@ "label": "Prilagođeni naziv prozora", "prompt": { "label": "Unesite prilagođeni naslov prozora: (ostavite prazno da onemogućite)", - "placeholder": "Primer: Pear Desktop" + "placeholder": "Primer: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Ponovo pokreni aplikaciju", "show": "Prikaži prozor", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Ambijentalni režim" }, "amuse": { - "description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u Pear Desktop", + "description": "Dodaje podršku za 'Amuse now' vidžet (6K Labs) u {{applicationName}}", "name": "Zabavi", "response": { "query": "Amuse API server je pokrenut. Koristite GET /query da biste dobili informacije o numeri." @@ -373,7 +373,7 @@ "name": "Preskoči starosna ograničenja" }, "captions-selector": { - "description": "Odabir prevoda za numere/audio trake na Pear Desktop", + "description": "Odabir prevoda za numere/audio trake na {{applicationName}}", "menu": { "autoload": "Automatski odaberi prethodno odabrani prevod", "disable-captions": "Podrazumevano bez prevoda" @@ -456,14 +456,14 @@ "disconnected": "Nije povezano", "hide-duration-left": "Sakrij preostalo vreme", "hide-github-button": "Sakrij dugme sa GitHub linkom", - "play-on-pear-desktop": "Reprodukuj na Pear Desktop", + "play-on-application": "Reprodukuj na {{applicationName}}", "set-inactivity-timeout": "Podesi tajmer za neaktivnost", "set-status-display-type": { "label": "Tekst statusa", "submenu": { "artist": "Slušanje {artist}", "title": "Slušanje {song title}", - "pear-desktop": "Slušanje Pear Desktop" + "application": "Slušanje {{applicationName}}" } } }, diff --git a/src/i18n/resources/sv.json b/src/i18n/resources/sv.json index 8927f483..fb1ecb1f 100644 --- a/src/i18n/resources/sv.json +++ b/src/i18n/resources/sv.json @@ -154,7 +154,7 @@ "label": "Anpassad titel på fönstret", "prompt": { "label": "Ange anpassad fönstertitel: (lämna tomt för att inaktivera)", - "placeholder": "Exempelvis: Pear Desktop" + "placeholder": "Exempelvis: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Starta om appen", "show": "Visa fönster", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} – {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Ambiensläge" }, "amuse": { - "description": "Lägger till stöd för Pear Desktop i Amuse ‘Now Playing’-widgeten av 6K Labs", + "description": "Lägger till stöd för {{applicationName}} i Amuse ‘Now Playing’-widgeten av 6K Labs", "name": "Amuse", "response": { "query": "Amuse API-servern körs. Använd GET /query för att hämta information om låt." @@ -374,7 +374,7 @@ "name": "Hoppa Över Åldersbegränsningar" }, "captions-selector": { - "description": "Välj textning för Pear Desktop-ljudspår", + "description": "Välj textning för {{applicationName}}-ljudspår", "menu": { "autoload": "Välj automatiskt senast använda textning", "disable-captions": "Ingen textning som standard" @@ -457,13 +457,13 @@ "disconnected": "Frånkopplad", "hide-duration-left": "Dölj återstående tid", "hide-github-button": "Dölj knapp för GitHub-länk", - "play-on-pear-desktop": "Spela på Pear Desktop", + "play-on-application": "Spela på {{applicationName}}", "set-inactivity-timeout": "Ställ in inaktivitetstid", "set-status-display-type": { "label": "Statusmeddelande", "submenu": { "artist": "Lyssnar på {artist}", - "pear-desktop": "Lyssnar på Pear Desktop", + "application": "Lyssnar på {{applicationName}}", "title": "Lyssnar på {song title}" } } diff --git a/src/i18n/resources/ta.json b/src/i18n/resources/ta.json index 53dfe627..2f6703c0 100644 --- a/src/i18n/resources/ta.json +++ b/src/i18n/resources/ta.json @@ -154,7 +154,7 @@ "label": "தனிப்பயன் சாளர தலைப்பு", "prompt": { "label": "தனிப்பயன் சாளர தலைப்பை உள்ளிடவும்: (முடக்க காலியாக விடவும்)", - "placeholder": "எடுத்துக்காட்டு: Pear Desktop" + "placeholder": "எடுத்துக்காட்டு: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்", "show": "சாளரத்தைக் காட்டு", "tooltip": { - "default": "யூடியூப் இசை", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -373,7 +373,7 @@ "name": "அகவை கட்டுப்பாடுகள் பைபாச்" }, "captions-selector": { - "description": "Pear Desktop இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்", + "description": "{{applicationName}} இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்", "menu": { "autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்", "disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை" @@ -456,13 +456,13 @@ "disconnected": "துண்டிக்கப்பட்டது", "hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்", "hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்", - "play-on-pear-desktop": "யூடியூப் இசையில் விளையாடுங்கள்", + "play-on-application": "யூடியூப் இசையில் விளையாடுங்கள்", "set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது", "set-status-display-type": { "label": "நிலை உரை", "submenu": { "artist": "{கலைஞர்} பாடலைக் கேட்கிறேன்", - "pear-desktop": "வலையொளி இசையில் கேட்கிறது", + "application": "வலையொளி இசையில் கேட்கிறது", "title": "பாடலைக் கேட்கிறேன்{பாடல் தலைப்பு}" } } diff --git a/src/i18n/resources/th.json b/src/i18n/resources/th.json index 000a1186..ec7f4be9 100644 --- a/src/i18n/resources/th.json +++ b/src/i18n/resources/th.json @@ -154,7 +154,7 @@ "label": "ชื่อหน้าต่างกำหนดเอง", "prompt": { "label": "กำหนดชื่อหน้าต่างที่ต้องการ: (ปล่อยว่างเพื่อปิดใช้งาน)", - "placeholder": "ตัวอย่าง: Pear Desktop" + "placeholder": "ตัวอย่าง: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "รีสตาร์ตแอป", "show": "แสดงหน้าต่าง", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "โหมดสภาพแวดล้อม" }, "amuse": { - "description": "เพิ่มการรองรับ Pear Desktop สำหรับ Widget Amuse Now Playing ของ 6K Labs", + "description": "เพิ่มการรองรับ {{applicationName}} สำหรับ Widget Amuse Now Playing ของ 6K Labs", "name": "Amuse", "response": { "query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง" @@ -373,7 +373,7 @@ "name": "ข้ามข้อจำกัดอายุ" }, "captions-selector": { - "description": "ตัวเลือกคำบรรยายสำหรับเพลงใน Pear Desktop", + "description": "ตัวเลือกคำบรรยายสำหรับเพลงใน {{applicationName}}", "menu": { "autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ", "disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น" @@ -456,14 +456,14 @@ "disconnected": "ตัดการเชื่อมต่อ", "hide-duration-left": "ซ่อนระยะเวลาที่เหลือ", "hide-github-button": "ซ่อนปุ่มลิงก์ GitHub", - "play-on-pear-desktop": "เล่นบน Pear Desktop", + "play-on-application": "เล่นบน {{applicationName}}", "set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม", "set-status-display-type": { "label": "ข้อความสถานะ", "submenu": { "artist": "กำลังฟัง {ชื่อนักร้อง}", "title": "กำลังฟัง {ชื่อเพลง}", - "pear-desktop": "กำลังฟัง Pear Desktop" + "application": "กำลังฟัง {{applicationName}}" } } }, diff --git a/src/i18n/resources/tr.json b/src/i18n/resources/tr.json index bc01e4e7..05910816 100644 --- a/src/i18n/resources/tr.json +++ b/src/i18n/resources/tr.json @@ -154,7 +154,7 @@ "label": "Özel pencere başlığı", "prompt": { "label": "Özel pencere başlığı girin: (devre dışı bırakmak için boş bırakın)", - "placeholder": "Örnek: Pear Desktop" + "placeholder": "Örnek: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Yeniden başlat", "show": "Pencereyi görüntüle", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "Ambiyans Modu" }, "amuse": { - "description": "6K Labs'ın Amuse oynatma widget'ı için Pear Desktop desteği ekler", + "description": "6K Labs'ın Amuse oynatma widget'ı için {{applicationName}} desteği ekler", "name": "Amuse", "response": { "query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz." @@ -374,7 +374,7 @@ "name": "Yaş doğrulamasını atla" }, "captions-selector": { - "description": "Pear Desktop için altyazı seçici", + "description": "{{applicationName}} için altyazı seçici", "menu": { "autoload": "Son kullanılan altyazıyı otomatik olarak seç", "disable-captions": "Varsayılan olarak altyazı yok" @@ -457,13 +457,13 @@ "disconnected": "Bağlantı kesildi", "hide-duration-left": "Kalan süreyi gizle", "hide-github-button": "GitHub bağlantısını gizle", - "play-on-pear-desktop": "Pear Desktop de oynat", + "play-on-application": "{{applicationName}} de oynat", "set-inactivity-timeout": "Hareketsizlik zaman aşımını ayarla", "set-status-display-type": { "label": "Durum metni", "submenu": { "artist": "{artist} Dinleniyor", - "pear-desktop": "Pear Desktop Dinleniyor", + "application": "{{applicationName}} Dinleniyor", "title": "{song title} Dinleniyor" } } diff --git a/src/i18n/resources/uk.json b/src/i18n/resources/uk.json index 14bf912f..bfa078f8 100644 --- a/src/i18n/resources/uk.json +++ b/src/i18n/resources/uk.json @@ -154,7 +154,7 @@ "label": "Налаштування заголовка вікна", "prompt": { "label": "Введіть власний заголовок вікна: (залиште порожнім, щоб вимкнути)", - "placeholder": "Приклад: Pear Desktop" + "placeholder": "Приклад: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Перезапустити програму", "show": "Показати вікно", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Режим навколишнього середовища" }, "amuse": { - "description": "Додає підтримку Pear Desktop для віджета Amuse now playing від 6K Labs", + "description": "Додає підтримку {{applicationName}} для віджета Amuse now playing від 6K Labs", "name": "Amuse", "response": { "query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню." @@ -373,7 +373,7 @@ "name": "Обхід вікових обмежень" }, "captions-selector": { - "description": "Вибір субтитрів для аудіодоріжок Pear Desktop", + "description": "Вибір субтитрів для аудіодоріжок {{applicationName}}", "menu": { "autoload": "Автоматичний вибір останніх використаних субтитрів", "disable-captions": "За замовчуванням субтитри відсутні" @@ -456,13 +456,13 @@ "disconnected": "Від'єднано", "hide-duration-left": "Приховати тривалість, яка залишилася", "hide-github-button": "Приховати посилання на GitHub", - "play-on-pear-desktop": "Слухати на Pear Desktop", + "play-on-application": "Слухати на {{applicationName}}", "set-inactivity-timeout": "Встановити тайм-аут бездіяльності", "set-status-display-type": { "label": "Статус", "submenu": { "artist": "Ви слухаєте {artist}", - "pear-desktop": "Відтворення з Pear Desktop", + "application": "Відтворення з {{applicationName}}", "title": "Ви слухаєте {song title}" } } diff --git a/src/i18n/resources/vi.json b/src/i18n/resources/vi.json index 2e041e99..1a8569ee 100644 --- a/src/i18n/resources/vi.json +++ b/src/i18n/resources/vi.json @@ -154,7 +154,7 @@ "label": "Tiêu đề cửa sổ tùy chỉnh", "prompt": { "label": "Nhập tiêu đề cửa sổ tùy chỉnh: (để trống để vô hiệu hóa)", - "placeholder": "Ví dụ: Pear Desktop" + "placeholder": "Ví dụ: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "Khởi động lại ứng dụng", "show": "Hiện cửa sổ", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{title}} - {{artist}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -287,7 +287,7 @@ "name": "Chế độ Môi trường xung quanh" }, "amuse": { - "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", + "description": "Thêm hỗ trợ {{applicationName}} cho tiện ích hiển thị bài hát đang phát Amuse của 6K Labs", "name": "Amuse", "response": { "query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát." @@ -373,7 +373,7 @@ "name": "Bỏ qua hạn chế độ tuổi" }, "captions-selector": { - "description": "Bộ lựa chọn phụ đề cho các bài hát trên Pear Desktop", + "description": "Bộ lựa chọn phụ đề cho các bài hát trên {{applicationName}}", "menu": { "autoload": "Tự động chọn phụ đề vừa sử dụng", "disable-captions": "Không có phụ đề làm mặc định" @@ -456,14 +456,14 @@ "disconnected": "Đã ngắt kết nối", "hide-duration-left": "Ẩn thời lượng còn lại", "hide-github-button": "Ẩn nút liên kết GitHub", - "play-on-pear-desktop": "Phát trong Pear Desktop", + "play-on-application": "Phát trong {{applicationName}}", "set-inactivity-timeout": "Đặt thời gian chờ không hoạt động", "set-status-display-type": { "label": "Văn bản trạng thái", "submenu": { "artist": "Đang nghe nhạc của {artist}", "title": "Đang nghe nhạc {song title}", - "pear-desktop": "Đang nghe Pear Desktop" + "application": "Đang nghe {{applicationName}}" } } }, diff --git a/src/i18n/resources/zh-CN.json b/src/i18n/resources/zh-CN.json index 057afa82..c05e88c0 100644 --- a/src/i18n/resources/zh-CN.json +++ b/src/i18n/resources/zh-CN.json @@ -154,7 +154,7 @@ "label": "自定义窗口标题", "prompt": { "label": "输入自定义窗口标题:(留空表示停用)", - "placeholder": "示例:Pear Desktop" + "placeholder": "示例:{{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "重启应用", "show": "显示窗口", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "沉浸模式" }, "amuse": { - "description": "为 6K Labs 的 Amuse 正在播放小部件添加 Pear Desktop 支持", + "description": "为 6K Labs 的 Amuse 正在播放小部件添加 {{applicationName}} 支持", "name": "Amuse", "response": { "query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。" @@ -374,7 +374,7 @@ "name": "绕过年龄验证" }, "captions-selector": { - "description": "Pear Desktop 音轨字幕选择器", + "description": "{{applicationName}} 音轨字幕选择器", "menu": { "autoload": "自动选择上次使用的字幕", "disable-captions": "默认无字幕" @@ -457,13 +457,13 @@ "disconnected": "已断开连接", "hide-duration-left": "隐藏剩余时长", "hide-github-button": "隐藏 GitHub 链接按钮", - "play-on-pear-desktop": "转至 Pear Desktop 播放", + "play-on-application": "转至 {{applicationName}} 播放", "set-inactivity-timeout": "设置非活跃时长", "set-status-display-type": { "label": "状态文本", "submenu": { "artist": "在听 {artist}", - "pear-desktop": "在听 Pear Desktop", + "application": "在听 {{applicationName}}", "title": "在听 {song title}" } } diff --git a/src/i18n/resources/zh-TW.json b/src/i18n/resources/zh-TW.json index a7fec95b..5a169eca 100644 --- a/src/i18n/resources/zh-TW.json +++ b/src/i18n/resources/zh-TW.json @@ -154,7 +154,7 @@ "label": "自訂窗口標題", "prompt": { "label": "輸入自訂視窗標題: (留空將其停用)", - "placeholder": "例如: Pear Desktop" + "placeholder": "例如: {{applicationName}}" } }, "like-buttons": { @@ -208,8 +208,8 @@ "restart": "重新啟動應用程式", "show": "顯示視窗", "tooltip": { - "default": "Pear Desktop", - "with-song-info": "Pear Desktop: {{artist}} - {{title}}" + "default": "{{applicationName}}", + "with-song-info": "{{applicationName}}: {{artist}} - {{title}}" } } }, @@ -288,7 +288,7 @@ "name": "微光效果" }, "amuse": { - "description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 Pear Desktop 現正播放資訊", + "description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 {{applicationName}} 現正播放資訊", "name": "Amuse", "response": { "query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。" @@ -374,7 +374,7 @@ "name": "繞過年齡驗證" }, "captions-selector": { - "description": "Pear Desktop 音軌字幕選項", + "description": "{{applicationName}} 音軌字幕選項", "menu": { "autoload": "自動選擇上次使用的字幕", "disable-captions": "預設無字幕" @@ -457,13 +457,13 @@ "disconnected": "已斷開連線", "hide-duration-left": "隱藏音樂剩餘時間狀態", "hide-github-button": "隱藏 GitHub 頁面按鈕", - "play-on-pear-desktop": "顯示 Play on Pear Desktop 按鈕", + "play-on-application": "顯示 Play on {{applicationName}} 按鈕", "set-inactivity-timeout": "設定閒置狀態時長", "set-status-display-type": { "label": "狀態樣式", "submenu": { "artist": "正在聆聽 {artist} 的歌曲", - "pear-desktop": "正在聆聽 Pear Desktop", + "application": "正在聆聽 {{applicationName}}", "title": "正在聆聽 {song title}" } } diff --git a/src/index.ts b/src/index.ts index 05d0b952..80fae3db 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,7 +14,8 @@ import { protocol, type BrowserWindowConstructorOptions, } from 'electron'; -import enhanceWebRequest, { +import { + enhanceWebRequest, type BetterSession, } from '@jellybrick/electron-better-web-request'; import is from 'electron-is'; @@ -53,7 +54,7 @@ import { } from '@/loader/main'; import { LoggerPrefix } from '@/utils'; -import { loadI18n, setLanguage, t } from '@/i18n'; +import { APPLICATION_NAME, loadI18n, setLanguage, t } from '@/i18n'; import ErrorHtmlAsset from '@assets/error.html?asset'; @@ -104,11 +105,6 @@ protocol.registerSchemesAsPrivileged([ { scheme: 'mailto', privileges: { standard: true } }, ]); -// https://github.com/electron/electron/issues/46538#issuecomment-2808806722 -if (is.linux()) { - app.commandLine.appendSwitch('gtk-version', '3'); -} - // Ozone platform hint: Required for Wayland support app.commandLine.appendSwitch('ozone-platform-hint', 'auto'); // SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt) @@ -131,7 +127,9 @@ if (config.get('options.disableHardwareAcceleration')) { if (is.linux()) { // Overrides WM_CLASS for X11 to correspond to icon filename - app.setName('com.github.th_ch.pear_music'); + app.setName( + 'com.github.th_ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u005f\u006d\u0075\u0073\u0069\u0063', + ); // Stops chromium from launching its own MPRIS service if (await config.plugins.isEnabled('shortcuts')) { @@ -167,9 +165,9 @@ electronDebug({ let icon = 'assets/icon.png'; if (process.platform === 'win32') { - icon = 'assets/generated/icon.ico'; + icon = 'assets/generated/icons/win/icon.ico'; } else if (process.platform === 'darwin') { - icon = 'assets/generated/icon.icns'; + icon = 'assets/generated/icons/mac/icon.icns'; } function onClosed() { @@ -663,7 +661,8 @@ app.whenReady().then(async () => { // Register appID on windows if (is.windows()) { - const appID = 'com.github.th-ch.pear-music'; + const appID = + 'com.github.th-ch.\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063'; app.setAppUserModelId(appID); const appLocation = process.execPath; const appData = app.getPath('appData'); @@ -678,7 +677,7 @@ app.whenReady().then(async () => { 'Windows', 'Start Menu', 'Programs', - 'Pear Desktop.lnk', + `${APPLICATION_NAME}.lnk`, ); try { // Check if shortcut is registered and valid @@ -698,7 +697,7 @@ app.whenReady().then(async () => { { target: appLocation, cwd: path.dirname(appLocation), - description: 'Pear Desktop App - including custom plugins', + description: `${APPLICATION_NAME} Desktop App - including custom plugins`, appUserModelId: appID, }, ); diff --git a/src/menu.ts b/src/menu.ts index 00f2b5f1..233ce47b 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -22,7 +22,7 @@ import { startingPages } from './providers/extracted-data'; import promptOptions from './providers/prompt-options'; import { getAllMenuTemplate, loadAllMenuPlugins } from './loader/menu'; -import { setLanguage, t } from '@/i18n'; +import { APPLICATION_NAME, setLanguage, t } from '@/i18n'; import packageJson from '../package.json'; @@ -235,6 +235,9 @@ export const mainMenuTemplate = async ( type: 'text', placeholder: t( 'main.menu.options.submenu.visual-tweaks.submenu.custom-window-title.prompt.placeholder', + { + applicationName: APPLICATION_NAME, + }, ), }, width: 500, diff --git a/src/plugins/amuse/index.ts b/src/plugins/amuse/index.ts index 206c70e4..8168fe40 100644 --- a/src/plugins/amuse/index.ts +++ b/src/plugins/amuse/index.ts @@ -1,6 +1,6 @@ import { createPlugin } from '@/utils'; import backend from './backend'; -import { t } from '@/i18n'; +import { APPLICATION_NAME, t } from '@/i18n'; export interface MusicWidgetConfig { enabled: boolean; @@ -12,7 +12,10 @@ export const defaultConfig: MusicWidgetConfig = { export default createPlugin({ name: () => t('plugins.amuse.name'), - description: () => t('plugins.amuse.description'), + description: () => + t('plugins.amuse.description', { + applicationName: APPLICATION_NAME, + }), addedVersion: '3.7.X', restartNeeded: true, config: defaultConfig, diff --git a/src/plugins/api-server/backend/main.ts b/src/plugins/api-server/backend/main.ts index de01b9a2..0ea22e58 100644 --- a/src/plugins/api-server/backend/main.ts +++ b/src/plugins/api-server/backend/main.ts @@ -15,6 +15,8 @@ import { createBackend } from '@/utils'; import { JWTPayloadSchema } from './scheme'; import { registerAuth, registerControl, registerWebsocket } from './routes'; +import { APPLICATION_NAME } from '@/i18n'; + import { type APIServerConfig, AuthStrategy } from '../config'; import type { BackendType } from './types'; @@ -146,7 +148,7 @@ export const backend = createBackend({ openapi: '3.1.0', info: { version: '1.0.0', - title: 'Pear Desktop API Server', + title: `${APPLICATION_NAME} API Server`, description: 'Note: You need to get an access token using the `/auth/{id}` endpoint first to call any API endpoints under `/api`.', }, diff --git a/src/plugins/captions-selector/index.ts b/src/plugins/captions-selector/index.ts index 37f61c4e..d98fb66b 100644 --- a/src/plugins/captions-selector/index.ts +++ b/src/plugins/captions-selector/index.ts @@ -1,5 +1,5 @@ import { createPlugin } from '@/utils'; -import { t } from '@/i18n'; +import { APPLICATION_NAME, t } from '@/i18n'; import backend from './back'; import renderer, { @@ -22,7 +22,10 @@ export default createPlugin< CaptionsSelectorConfig >({ name: () => t('plugins.captions-selector.name'), - description: () => t('plugins.captions-selector.description'), + description: () => + t('plugins.captions-selector.description', { + applicationName: APPLICATION_NAME, + }), config: { enabled: false, disableCaptions: false, diff --git a/src/plugins/discord/index.ts b/src/plugins/discord/index.ts index 6503c8a1..9cf95338 100644 --- a/src/plugins/discord/index.ts +++ b/src/plugins/discord/index.ts @@ -6,39 +6,39 @@ import { onMenu } from './menu'; import { t } from '@/i18n'; export type DiscordPluginConfig = { - enabled: boolean; + 'enabled': boolean; /** * If enabled, will try to reconnect to discord every 5 seconds after disconnecting or failing to connect * * @default true */ - autoReconnect: boolean; + 'autoReconnect': boolean; /** * If enabled, the discord rich presence gets cleared when music paused after the time specified below */ - activityTimeoutEnabled: boolean; + 'activityTimeoutEnabled': boolean; /** * The time in milliseconds after which the discord rich presence gets cleared when music paused * * @default 10 * 60 * 1000 (10 minutes) */ - activityTimeoutTime: number; + 'activityTimeoutTime': number; /** - * Add a "Play on Pear Desktop" button to rich presence + * Add a "Play on $APPLICATION_NAME" button to rich presence */ - playOnPearDesktop: boolean; + 'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063': boolean; /** * Hide the "View App On GitHub" button in the rich presence */ - hideGitHubButton: boolean; + 'hideGitHubButton': boolean; /** * Hide the "duration left" in the rich presence */ - hideDurationLeft: boolean; + 'hideDurationLeft': boolean; /** * Controls which field is displayed in the Discord status text */ - statusDisplayType: (typeof StatusDisplayType)[keyof typeof StatusDisplayType]; + 'statusDisplayType': (typeof StatusDisplayType)[keyof typeof StatusDisplayType]; }; export default createPlugin({ @@ -46,14 +46,14 @@ export default createPlugin({ description: () => t('plugins.discord.description'), restartNeeded: false, config: { - enabled: false, - autoReconnect: true, - activityTimeoutEnabled: true, - activityTimeoutTime: 10 * 60 * 1000, - playOnPearDesktop: true, - hideGitHubButton: false, - hideDurationLeft: false, - statusDisplayType: StatusDisplayType.Details, + 'enabled': false, + 'autoReconnect': true, + 'activityTimeoutEnabled': true, + 'activityTimeoutTime': 10 * 60 * 1000, + 'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063': true, + 'hideGitHubButton': false, + 'hideDurationLeft': false, + 'statusDisplayType': StatusDisplayType.Details, } as DiscordPluginConfig, menu: onMenu, backend, diff --git a/src/plugins/discord/menu.ts b/src/plugins/discord/menu.ts index 2d9a1de1..2bc0149a 100644 --- a/src/plugins/discord/menu.ts +++ b/src/plugins/discord/menu.ts @@ -6,7 +6,7 @@ import { discordService } from './main'; import { singleton } from '@/providers/decorators'; import promptOptions from '@/providers/prompt-options'; import { setMenuOptions } from '@/config/plugins'; -import { t } from '@/i18n'; +import { APPLICATION_NAME, t } from '@/i18n'; import type { MenuContext } from '@/types/contexts'; import type { DiscordPluginConfig } from './index'; @@ -18,7 +18,7 @@ const registerRefreshOnce = singleton((refreshMenu: () => void) => { const DiscordStatusDisplayTypeLabels: Record = { [StatusDisplayType.Name]: - 'plugins.discord.menu.set-status-display-type.submenu.pear-desktop', + 'plugins.discord.menu.set-status-display-type.submenu.application', [StatusDisplayType.State]: 'plugins.discord.menu.set-status-display-type.submenu.artist', [StatusDisplayType.Details]: @@ -67,12 +67,16 @@ export const onMenu = async ({ }, }, { - label: t('plugins.discord.menu.play-on-pear-desktop'), + label: t('plugins.discord.menu.play-on-application'), type: 'checkbox', - checked: config.playOnPearDesktop, + checked: + config[ + 'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063' + ], click(item: Electron.MenuItem) { setConfig({ - playOnPearDesktop: item.checked, + 'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063': + item.checked, }); }, }, @@ -111,6 +115,9 @@ export const onMenu = async ({ DiscordStatusDisplayTypeLabels[ statusDisplayType as StatusDisplayType ], + { + applicationName: APPLICATION_NAME, + }, ), type: 'radio', checked: config.statusDisplayType === statusDisplayType, diff --git a/src/plugins/discord/utils.ts b/src/plugins/discord/utils.ts index f3717760..7d1c3888 100644 --- a/src/plugins/discord/utils.ts +++ b/src/plugins/discord/utils.ts @@ -1,5 +1,7 @@ import { HANGUL_FILLER } from './constants'; +import { APPLICATION_NAME } from '@/i18n'; + import type { GatewayActivityButton } from 'discord-api-types/v10'; import type { SongInfo } from '@/providers/song-info'; import type { DiscordPluginConfig } from './index'; @@ -28,9 +30,14 @@ export const buildDiscordButtons = ( songInfo: SongInfo, ): GatewayActivityButton[] | undefined => { const buttons: GatewayActivityButton[] = []; - if (config.playOnPearDesktop && songInfo.url) { + if ( + config[ + 'playOn\u0059\u006f\u0075\u0054\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063' + ] && + songInfo.url + ) { buttons.push({ - label: 'Play on Pear Desktop', + label: `Play on ${APPLICATION_NAME}`, url: songInfo.url, }); } diff --git a/src/plugins/in-app-menu/renderer.tsx b/src/plugins/in-app-menu/renderer.tsx index 26c31acf..a0415519 100644 --- a/src/plugins/in-app-menu/renderer.tsx +++ b/src/plugins/in-app-menu/renderer.tsx @@ -4,6 +4,8 @@ import { render } from 'solid-js/web'; import { TitleBar } from './renderer/TitleBar'; import { defaultInAppMenuConfig, type InAppMenuConfig } from './constants'; +import { APPLICATION_NAME } from '@/i18n'; + import type { RendererContext } from '@/types/contexts'; const scrollStyle = ` @@ -25,7 +27,7 @@ export const onRendererLoad = async ({ }: RendererContext) => { setConfig(await getConfig()); - document.title = 'Pear Desktop'; + document.title = APPLICATION_NAME; const stylesheet = new CSSStyleSheet(); stylesheet.replaceSync(scrollStyle); document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet]; diff --git a/src/plugins/lumiastream/index.ts b/src/plugins/lumiastream/index.ts index 0a8351ac..b42cc033 100644 --- a/src/plugins/lumiastream/index.ts +++ b/src/plugins/lumiastream/index.ts @@ -36,7 +36,7 @@ export default createPlugin({ const previousStatePaused = null; const data: LumiaData = { - origin: 'peardesktop', + origin: '\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u006d\u0075\u0073\u0069\u0063', eventType: 'switchSong', }; diff --git a/src/plugins/notifications/interactive.ts b/src/plugins/notifications/interactive.ts index 4d1bb0e7..9376b35b 100644 --- a/src/plugins/notifications/interactive.ts +++ b/src/plugins/notifications/interactive.ts @@ -13,7 +13,7 @@ import { type SongInfo, SongInfoEvent, } from '@/providers/song-info'; -import { changeProtocolHandler } from '@/providers/protocol-handler'; +import { APP_PROTOCOL, changeProtocolHandler } from '@/providers/protocol-handler'; import { setTrayOnClick, setTrayOnDoubleClick } from '@/tray'; import { mediaIcons } from '@/types/media-icons'; @@ -127,7 +127,7 @@ export default ( const getButton = (kind: keyof typeof mediaIcons) => ``; + )} activationType="protocol" arguments="${APP_PROTOCOL}://${kind}"/>`; const getButtons = (isPaused: boolean) => `\ @@ -260,7 +260,9 @@ export default ( songControls = getSongControls(win); let currentSeconds = 0; - on('peard:player-api-loaded', () => send('peard:setup-time-changed-listener')); + on('peard:player-api-loaded', () => + send('peard:setup-time-changed-listener'), + ); let savedSongInfo: SongInfo; let lastUrl: string | undefined; diff --git a/src/plugins/scrobbler/services/listenbrainz.ts b/src/plugins/scrobbler/services/listenbrainz.ts index 2cfc592a..ecef1df0 100644 --- a/src/plugins/scrobbler/services/listenbrainz.ts +++ b/src/plugins/scrobbler/services/listenbrainz.ts @@ -5,6 +5,7 @@ import { ScrobblerBase } from './base'; import type { SetConfType } from '../main'; import type { SongInfo } from '@/providers/song-info'; import type { ScrobblerPluginConfig } from '../index'; +import { APPLICATION_NAME } from '@/i18n'; interface ListenbrainzRequestBody { listen_type?: string; @@ -91,8 +92,8 @@ function createRequestBody( track_name: title, release_name: songInfo.album ?? undefined, additional_info: { - media_player: 'Pear Desktop App', - submission_client: 'Pear Desktop App - Scrobbler Plugin', + media_player: `${APPLICATION_NAME} Desktop App`, + submission_client: `${APPLICATION_NAME} Desktop App - Scrobbler Plugin`, origin_url: songInfo.url, duration: songInfo.songDuration, }, diff --git a/src/plugins/shortcuts/mpris.ts b/src/plugins/shortcuts/mpris.ts index 8fa93e34..f80ba6b2 100644 --- a/src/plugins/shortcuts/mpris.ts +++ b/src/plugins/shortcuts/mpris.ts @@ -23,6 +23,8 @@ import { getSongControls } from '@/providers/song-controls'; import * as config from '@/config'; import { LoggerPrefix } from '@/utils'; +import { APPLICATION_NAME } from '@/i18n'; + import type { RepeatMode, VolumeState } from '@/types/datahost-get-state'; import type { QueueResponse } from '@/types/music-player-desktop-internal'; @@ -70,8 +72,8 @@ class YTPlayer extends MprisPlayer { function setupMPRIS() { const instance = new YTPlayer({ - name: 'PearDesktop', - identity: 'Pear Desktop', + name: '\u0059\u006f\u0075\u0074\u0075\u0062\u0065\u004d\u0075\u0073\u0069\u0063', + identity: APPLICATION_NAME, supportedMimeTypes: ['audio/mpeg'], supportedInterfaces: ['player'], }); @@ -80,7 +82,8 @@ function setupMPRIS() { instance.canQuit = false; instance.canUsePlayerControls = true; instance.supportedUriSchemes = ['http', 'https']; - instance.desktopEntry = 'pear-desktop'; + instance.desktopEntry = + '\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u002d\u006d\u0075\u0073\u0069\u0063'; return instance; } diff --git a/src/providers/protocol-handler.ts b/src/providers/protocol-handler.ts index 42fcfc56..6bbe3abf 100644 --- a/src/providers/protocol-handler.ts +++ b/src/providers/protocol-handler.ts @@ -4,7 +4,8 @@ import { app, type BrowserWindow } from 'electron'; import { getSongControls } from './song-controls'; -export const APP_PROTOCOL = 'peardesktop'; +export const APP_PROTOCOL = + '\u0079\u006f\u0075\u0074\u0075\u0062\u0065\u006d\u0075\u0073\u0069\u0063'; let protocolHandler: ((cmd: string, ...args: string[]) => void) | undefined; diff --git a/src/providers/song-info-front.ts b/src/providers/song-info-front.ts index 14f4d4af..a65194b0 100644 --- a/src/providers/song-info-front.ts +++ b/src/providers/song-info-front.ts @@ -24,7 +24,7 @@ window.ipcRenderer.on( }, ); -// Used because 'loadeddata' or 'loadedmetadata' weren't firing on song start for some users (https://github.com/pear-devs/pear-music/issues/473) +// Used because 'loadeddata' or 'loadedmetadata' weren't firing on song start for some users (https://github.com/pear-devs/pear-desktop/issues/473) const srcChangedEvent = new CustomEvent('peard:src-changed'); export const setupSeekedListener = singleton(() => { @@ -52,7 +52,7 @@ export const setupTimeChangedListener = singleton(() => { export const setupRepeatChangedListener = singleton(() => { const repeatObserver = new MutationObserver((mutations) => { - // provided by Pear Desktop + // provided by App window.ipcRenderer.send( 'peard:repeat-changed', ( @@ -69,7 +69,7 @@ export const setupRepeatChangedListener = singleton(() => { }); // Emit the initial value as well; as it's persistent between launches. - // provided by Pear Desktop + // provided by App window.ipcRenderer.send( 'peard:repeat-changed', document diff --git a/src/tray.ts b/src/tray.ts index 82de3cbf..6010d7f7 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -10,7 +10,7 @@ import { restart } from './providers/app-controls'; import { registerCallback, SongInfoEvent } from './providers/song-info'; import { getSongControls } from './providers/song-controls'; -import { t } from '@/i18n'; +import { APPLICATION_NAME, t } from '@/i18n'; import type { MenuTemplate } from './menu'; @@ -67,7 +67,11 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => { tray = new Tray(defaultTrayIcon); - tray.setToolTip(t('main.tray.tooltip.default')); + tray.setToolTip( + t('main.tray.tooltip.default', { + applicationName: APPLICATION_NAME, + }), + ); // MacOS only tray.setIgnoreDoubleClickEvents(true); @@ -138,6 +142,7 @@ export const setUpTray = (app: Electron.App, win: Electron.BrowserWindow) => { t('main.tray.tooltip.with-song-info', { artist: songInfo.artist, title: songInfo.title, + applicationName: APPLICATION_NAME, }), );