From 4d824eb789b75e73d529314e1f03a4b803be553e Mon Sep 17 00:00:00 2001 From: Grigory Date: Wed, 22 Nov 2023 00:27:21 +0500 Subject: [PATCH 1/5] Update spicetifyWrapper.js --- jsHelper/spicetifyWrapper.js | 57 ++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/jsHelper/spicetifyWrapper.js b/jsHelper/spicetifyWrapper.js index f6fa35fa7b..b69e022afd 100644 --- a/jsHelper/spicetifyWrapper.js +++ b/jsHelper/spicetifyWrapper.js @@ -436,7 +436,60 @@ window.Spicetify = { Locale: modules.find(m => m?._dictionary) }); - if (Spicetify.Locale) Spicetify.Locale._supportedLocales = cache.find(m => typeof m?.ja === "string"); + if (Spicetify.Locale) { + Spicetify.Locale._supportedLocales = cache.find(m => typeof m?.ja === "string"); + } else { + const localeModule = modules.find(m => m?.getTranslations); + if (localeModule) { + const createUrlLocale = functionModules.find(m => m.toString().match(/"string"==typeof\s+(\w+)&&\(\1=new\s+Intl\.Locale\(\1\)\)/)); + Spicetify.Locale = { + get _relativeTimeFormat() { + return localeModule._relativeTimeFormat; + }, + get _dateTimeFormats() { + return localeModule._dateTimeFormats; + }, + get _locale() { + return localeModule._localeForTranslation.baseName; + }, + get _urlLocale() { + return localeModule._localeForURLPath; + }, + _supportedLocales: cache.find(m => typeof m?.ja === "string"), + get _dictionary() { + return localeModule.translations; + }, + formatRelativeTime: (date, options) => localeModule.formatRelativeDate(date, options), + formatNumber: (number, options) => localeModule.formatNumber(number, options), + formatNumberCompact: (number, options) => localeModule.formatNumberCompact(number, options), + get: (key, children) => localeModule.get(key, ...children), + getDateTimeFormat: options => localeModule.getDateTimeFormat(options), + getDictionary: () => localeModule.getTranslations(), + getLocale: () => localeModule._localeForTranslation.baseName, + getSmartlingLocale: () => localeModule.getLocaleForSmartling(), + getUrlLocale: () => localeModule.getLocaleForURLPath(), + getRelativeTimeFormat: () => localeModule.getRelativeTimeFormat(), + getSeparator: () => localeModule.getSeparator(), + setLocale: locale => + localeModule.initialize({ + localeForTranslation: locale, + localeForFormatting: localeModule._localeForFormatting.baseName, + translations: localeModule._translations + }), + setUrlLocale: locale => { + if (createUrlLocale) localeModule._localeForURLPath = createUrlLocale(locale); + }, + setDictionary: dictionary => + localeModule.initialize({ + localeForTranslation: localeModule._localeForTranslation.baseName, + localeForFormatting: localeModule._localeForFormatting.baseName, + translations: dictionary + }), + toLocaleLowerCase: text => localeModule.toLocaleLowerCase(text), + toLocaleUpperCase: text => localeModule.toLocaleUpperCase(text) + }; + } + } Object.defineProperty(Spicetify, "Queue", { get() { @@ -1656,7 +1709,7 @@ Spicetify._cloneSidebarItem = function (list, isLibX = false) { let appProper = manifest.name; if (typeof appProper === "object") { - appProper = appProper[Spicetify.Locale.getLocale()] || appProper["en"]; + appProper = appProper[Spicetify.Locale?.getLocale()] || appProper["en"]; } if (!appProper) { appProper = app[0].toUpperCase() + app.slice(1); From 682fa14c97f35e8f5105d0db2eed605bc4406333 Mon Sep 17 00:00:00 2001 From: Grigory Date: Wed, 22 Nov 2023 14:05:28 +0500 Subject: [PATCH 2/5] Update spicetifyWrapper.js --- jsHelper/spicetifyWrapper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsHelper/spicetifyWrapper.js b/jsHelper/spicetifyWrapper.js index b69e022afd..7ec428244c 100644 --- a/jsHelper/spicetifyWrapper.js +++ b/jsHelper/spicetifyWrapper.js @@ -462,7 +462,7 @@ window.Spicetify = { formatRelativeTime: (date, options) => localeModule.formatRelativeDate(date, options), formatNumber: (number, options) => localeModule.formatNumber(number, options), formatNumberCompact: (number, options) => localeModule.formatNumberCompact(number, options), - get: (key, children) => localeModule.get(key, ...children), + get: (key, children) => localeModule.get(key, children), getDateTimeFormat: options => localeModule.getDateTimeFormat(options), getDictionary: () => localeModule.getTranslations(), getLocale: () => localeModule._localeForTranslation.baseName, From bb29076e4757ec013c595d46017514b2d57e2a25 Mon Sep 17 00:00:00 2001 From: Grigory Date: Wed, 22 Nov 2023 14:10:46 +0500 Subject: [PATCH 3/5] Update spicetifyWrapper.js --- jsHelper/spicetifyWrapper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsHelper/spicetifyWrapper.js b/jsHelper/spicetifyWrapper.js index 7ec428244c..b8c99fee13 100644 --- a/jsHelper/spicetifyWrapper.js +++ b/jsHelper/spicetifyWrapper.js @@ -457,7 +457,7 @@ window.Spicetify = { }, _supportedLocales: cache.find(m => typeof m?.ja === "string"), get _dictionary() { - return localeModule.translations; + return localeModule._translations; }, formatRelativeTime: (date, options) => localeModule.formatRelativeDate(date, options), formatNumber: (number, options) => localeModule.formatNumber(number, options), From ba9826563580f4c3aea1549b60e6aaca110925f5 Mon Sep 17 00:00:00 2001 From: ririxi Date: Wed, 22 Nov 2023 14:30:03 +0100 Subject: [PATCH 4/5] style: cleanup changes a little --- jsHelper/spicetifyWrapper.js | 107 ++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/jsHelper/spicetifyWrapper.js b/jsHelper/spicetifyWrapper.js index b8c99fee13..1e16b8348e 100644 --- a/jsHelper/spicetifyWrapper.js +++ b/jsHelper/spicetifyWrapper.js @@ -436,61 +436,62 @@ window.Spicetify = { Locale: modules.find(m => m?._dictionary) }); - if (Spicetify.Locale) { - Spicetify.Locale._supportedLocales = cache.find(m => typeof m?.ja === "string"); - } else { - const localeModule = modules.find(m => m?.getTranslations); - if (localeModule) { - const createUrlLocale = functionModules.find(m => m.toString().match(/"string"==typeof\s+(\w+)&&\(\1=new\s+Intl\.Locale\(\1\)\)/)); - Spicetify.Locale = { - get _relativeTimeFormat() { - return localeModule._relativeTimeFormat; - }, - get _dateTimeFormats() { - return localeModule._dateTimeFormats; - }, - get _locale() { - return localeModule._localeForTranslation.baseName; - }, - get _urlLocale() { - return localeModule._localeForURLPath; - }, - _supportedLocales: cache.find(m => typeof m?.ja === "string"), - get _dictionary() { - return localeModule._translations; - }, - formatRelativeTime: (date, options) => localeModule.formatRelativeDate(date, options), - formatNumber: (number, options) => localeModule.formatNumber(number, options), - formatNumberCompact: (number, options) => localeModule.formatNumberCompact(number, options), - get: (key, children) => localeModule.get(key, children), - getDateTimeFormat: options => localeModule.getDateTimeFormat(options), - getDictionary: () => localeModule.getTranslations(), - getLocale: () => localeModule._localeForTranslation.baseName, - getSmartlingLocale: () => localeModule.getLocaleForSmartling(), - getUrlLocale: () => localeModule.getLocaleForURLPath(), - getRelativeTimeFormat: () => localeModule.getRelativeTimeFormat(), - getSeparator: () => localeModule.getSeparator(), - setLocale: locale => - localeModule.initialize({ - localeForTranslation: locale, - localeForFormatting: localeModule._localeForFormatting.baseName, - translations: localeModule._translations - }), - setUrlLocale: locale => { - if (createUrlLocale) localeModule._localeForURLPath = createUrlLocale(locale); - }, - setDictionary: dictionary => - localeModule.initialize({ - localeForTranslation: localeModule._localeForTranslation.baseName, - localeForFormatting: localeModule._localeForFormatting.baseName, - translations: dictionary - }), - toLocaleLowerCase: text => localeModule.toLocaleLowerCase(text), - toLocaleUpperCase: text => localeModule.toLocaleUpperCase(text) - }; - } + const localeModule = modules.find(m => m?.getTranslations); + if (localeModule) { + const createUrlLocale = functionModules.find( + m => m.toString().includes("has") && m.toString().includes("baseName") && m.toString().includes("language") + ); + Spicetify.Locale = { + get _relativeTimeFormat() { + return localeModule._relativeTimeFormat; + }, + get _dateTimeFormats() { + return localeModule._dateTimeFormats; + }, + get _locale() { + return localeModule._localeForTranslation.baseName; + }, + get _urlLocale() { + return localeModule._localeForURLPath; + }, + get _dictionary() { + return localeModule._translations; + }, + formatRelativeTime: (date, options) => localeModule.formatRelativeDate(date, options), + formatNumber: (number, options) => localeModule.formatNumber(number, options), + formatNumberCompact: (number, options) => localeModule.formatNumberCompact(number, options), + get: (key, children) => localeModule.get(key, children), + getDateTimeFormat: options => localeModule.getDateTimeFormat(options), + getDictionary: () => localeModule.getTranslations(), + getLocale: () => localeModule._localeForTranslation.baseName, + getSmartlingLocale: () => localeModule.getLocaleForSmartling(), + getUrlLocale: () => localeModule.getLocaleForURLPath(), + getRelativeTimeFormat: () => localeModule.getRelativeTimeFormat(), + getSeparator: () => localeModule.getSeparator(), + setLocale: locale => { + localeModule.initialize({ + localeForTranslation: locale, + localeForFormatting: localeModule._localeForFormatting.baseName, + translations: localeModule._translations + }); + }, + setUrlLocale: locale => { + if (createUrlLocale) localeModule._localeForURLPath = createUrlLocale(locale); + }, + setDictionary: dictionary => { + localeModule.initialize({ + localeForTranslation: localeModule._localeForTranslation.baseName, + localeForFormatting: localeModule._localeForFormatting.baseName, + translations: dictionary + }); + }, + toLocaleLowerCase: text => localeModule.toLocaleLowerCase(text), + toLocaleUpperCase: text => localeModule.toLocaleUpperCase(text) + }; } + if (Spicetify.Locale) Spicetify.Locale._supportedLocales = cache.find(m => typeof m?.ja === "string"); + Object.defineProperty(Spicetify, "Queue", { get() { return Spicetify.Player.origin?._queue?._state ?? Spicetify.Player.origin?._queue?._queue; From dd57064c0ae3df02b83d55b2347388b32fd8f45b Mon Sep 17 00:00:00 2001 From: ririxi Date: Wed, 22 Nov 2023 14:41:46 +0100 Subject: [PATCH 5/5] fix: add return statements to `setLocale` & `setDictionary` --- jsHelper/spicetifyWrapper.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsHelper/spicetifyWrapper.js b/jsHelper/spicetifyWrapper.js index 1e16b8348e..616a46d9b9 100644 --- a/jsHelper/spicetifyWrapper.js +++ b/jsHelper/spicetifyWrapper.js @@ -469,7 +469,7 @@ window.Spicetify = { getRelativeTimeFormat: () => localeModule.getRelativeTimeFormat(), getSeparator: () => localeModule.getSeparator(), setLocale: locale => { - localeModule.initialize({ + return localeModule.initialize({ localeForTranslation: locale, localeForFormatting: localeModule._localeForFormatting.baseName, translations: localeModule._translations @@ -479,7 +479,7 @@ window.Spicetify = { if (createUrlLocale) localeModule._localeForURLPath = createUrlLocale(locale); }, setDictionary: dictionary => { - localeModule.initialize({ + return localeModule.initialize({ localeForTranslation: localeModule._localeForTranslation.baseName, localeForFormatting: localeModule._localeForFormatting.baseName, translations: dictionary