From 9b4c7b6344468bedd7a9150f729e11766d5a7e3e Mon Sep 17 00:00:00 2001 From: ACertainCoder Date: Sat, 20 Dec 2025 22:02:35 +0100 Subject: [PATCH 1/2] Convert 3-letter country codes to 2-letter if necessary --- slideshowpure.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/slideshowpure.js b/slideshowpure.js index cfe3562..479aeb5 100644 --- a/slideshowpure.js +++ b/slideshowpure.js @@ -491,15 +491,9 @@ const LocalizationUtils = { try { const userId = window.ApiClient.getCurrentUserId(); if (userId) { - const userUrl = window.ApiClient.getUrl(`Users/${userId}`); - const userResponse = await fetch(userUrl, { - headers: ApiUtils.getAuthHeaders(), - }); - if (userResponse.ok) { - const userData = await userResponse.json(); - if (userData.Configuration?.AudioLanguagePreference) { - locale = userData.Configuration.AudioLanguagePreference.toLowerCase(); - } + const userData = await window.ApiClient.getUser(userId); + if (userData.Configuration?.AudioLanguagePreference) { + locale = userData.Configuration.AudioLanguagePreference.toLowerCase(); } } } catch (error) { @@ -539,6 +533,15 @@ const LocalizationUtils = { locale = navLang ? navLang.toLowerCase() : "en-us"; } + // Convert 3-letter country codes to 2-letter if necessary + if (locale.length === 3) { + const countriesData = await window.ApiClient.getCountries(); + const countryData = Object.values(countriesData).find(countryData => countryData.ThreeLetterISORegionName === locale.toUpperCase()); + if (countryData) { + locale = countryData.TwoLetterISORegionName.toLowerCase(); + } + } + this.cachedLocale = locale; return locale; }, @@ -599,7 +602,7 @@ const LocalizationUtils = { } const chunkText = await response.text(); - + let jsonMatch = chunkText.match(/JSON\.parse\(['"](.*?)['"]\)/); if (jsonMatch) { let jsonString = jsonMatch[1] @@ -614,7 +617,7 @@ const LocalizationUtils = { // Try direct extraction } } - + const jsonStart = chunkText.indexOf('{'); const jsonEnd = chunkText.lastIndexOf('}') + 1; if (jsonStart !== -1 && jsonEnd > jsonStart) { From 1a4d0ce0f744a984574b99b9907e9fd9e8030c0e Mon Sep 17 00:00:00 2001 From: ACertainCoder Date: Sat, 20 Dec 2025 22:15:35 +0100 Subject: [PATCH 2/2] Use getCurrentUser instead of getUser --- slideshowpure.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/slideshowpure.js b/slideshowpure.js index 479aeb5..3e309f7 100644 --- a/slideshowpure.js +++ b/slideshowpure.js @@ -489,12 +489,9 @@ const LocalizationUtils = { if (window.ApiClient && STATE.jellyfinData?.accessToken) { try { - const userId = window.ApiClient.getCurrentUserId(); - if (userId) { - const userData = await window.ApiClient.getUser(userId); - if (userData.Configuration?.AudioLanguagePreference) { - locale = userData.Configuration.AudioLanguagePreference.toLowerCase(); - } + const userData = window.ApiClient.getCurrentUser(); + if (userData.Configuration?.AudioLanguagePreference) { + locale = userData.Configuration.AudioLanguagePreference.toLowerCase(); } } catch (error) { console.warn("Could not fetch user language preference:", error);