diff options
author | Dmitrii Selivanov <selivano.d@gmail.com> | 2022-07-20 01:04:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-20 01:04:45 +0300 |
commit | fe64c63f91c8e74f05a7a78d358e7dbccbeff67d (patch) | |
tree | 41716ade7e81ecddcb59d6b2a99a8cddc90752db | |
parent | 1e81b0abbb1f7bf115eb4620a778d172ee4f2b72 (diff) | |
parent | 2cd383dd129868595896a2bcc013d78604c2dac8 (diff) |
Merge pull request #593 from cyrildtm/fixUserLocalesUndefined
Restructure userLocales logic
-rw-r--r-- | Extensions/UserScript/Return Youtube Dislike.user.js | 36 | ||||
-rw-r--r-- | Extensions/combined/src/utils.js | 46 |
2 files changed, 44 insertions, 38 deletions
diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 906b350..934b2d5 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -461,32 +461,38 @@ function roundDown(num) { } function numberFormat(numberState) { - let userLocales; - try { - userLocales = new URL( - Array.from(document.querySelectorAll("head > link[rel='search']")) - ?.find((n) => n?.getAttribute("href")?.includes("?locale=")) - ?.getAttribute("href") - )?.searchParams?.get("locale"); - } catch { - userLocales = document.documentElement.lang; - } - let numberDisplay; if (extConfig.numberDisplayRoundDown === false) { numberDisplay = numberState; } else { numberDisplay = roundDown(numberState); } - return getNumberFormatter(extConfig.numberDisplayFormat, userLocales).format( + return getNumberFormatter(extConfig.numberDisplayFormat).format( numberDisplay ); } -function getNumberFormatter(optionSelect, userLocales) { +function getNumberFormatter(optionSelect) { + let userLocales; + if (document.documentElement.lang) { + userLocales = document.documentElement.lang; + } else if (navigator.language) { + userLocales = navigator.language; + } else { + try { + userLocales = new URL( + Array.from(document.querySelectorAll("head > link[rel='search']")) + ?.find((n) => n?.getAttribute("href")?.includes("?locale=")) + ?.getAttribute("href") + )?.searchParams?.get("locale"); + } catch { + cLog('Cannot find browser locale. Use en as default for number formatting.'); + userLocales = 'en'; + } + } + let formatterNotation; let formatterCompactDisplay; - switch (optionSelect) { case "compactLong": formatterNotation = "compact"; @@ -503,7 +509,7 @@ function getNumberFormatter(optionSelect, userLocales) { } const formatter = Intl.NumberFormat( - document.documentElement.lang || userLocales || navigator.language, + userLocales, { notation: formatterNotation, compactDisplay: formatterCompactDisplay, diff --git a/Extensions/combined/src/utils.js b/Extensions/combined/src/utils.js index a3fe790..53a84d0 100644 --- a/Extensions/combined/src/utils.js +++ b/Extensions/combined/src/utils.js @@ -9,15 +9,6 @@ function roundDown(num) { } function numberFormat(numberState) { - let userLocales; - try { - userLocales = new URL( - Array.from(document.querySelectorAll("head > link[rel='search']")) - ?.find((n) => n?.getAttribute("href")?.includes("?locale=")) - ?.getAttribute("href") - )?.searchParams?.get("locale"); - } catch {} - let numberDisplay; if (extConfig.numberDisplayRoundDown === false) { numberDisplay = numberState; @@ -29,22 +20,27 @@ function numberFormat(numberState) { ); } -function localize(localeString) { - return chrome.i18n.getMessage(localeString); -} - function getNumberFormatter(optionSelect) { - let formatterNotation; - let formatterCompactDisplay; let userLocales; - try { - userLocales = new URL( - Array.from(document.querySelectorAll("head > link[rel='search']")) - ?.find((n) => n?.getAttribute("href")?.includes("?locale=")) - ?.getAttribute("href") - )?.searchParams?.get("locale"); - } catch {} + if (document.documentElement.lang) { + userLocales = document.documentElement.lang; + } else if (navigator.language) { + userLocales = navigator.language; + } else { + try { + userLocales = new URL( + Array.from(document.querySelectorAll("head > link[rel='search']")) + ?.find((n) => n?.getAttribute("href")?.includes("?locale=")) + ?.getAttribute("href") + )?.searchParams?.get("locale"); + } catch { + cLog('Cannot find browser locale. Use en as default for number formatting.'); + userLocales = 'en'; + } + } + let formatterNotation; + let formatterCompactDisplay; switch (optionSelect) { case "compactLong": formatterNotation = "compact"; @@ -61,7 +57,7 @@ function getNumberFormatter(optionSelect) { } const formatter = Intl.NumberFormat( - document.documentElement.lang || userLocales || navigator.language, + userLocales, { notation: formatterNotation, compactDisplay: formatterCompactDisplay, @@ -70,6 +66,10 @@ function getNumberFormatter(optionSelect) { return formatter; } +function localize(localeString) { + return chrome.i18n.getMessage(localeString); +} + function getBrowser() { if (typeof chrome !== "undefined" && typeof chrome.runtime !== "undefined") { return chrome; |