From 602235a5c0d1983287504e7c588df3dee06e2fcf Mon Sep 17 00:00:00 2001 From: Szymon Tondowski Date: Sat, 20 Jan 2024 15:41:33 +0100 Subject: [PATCH] Improved language detection for Google Chrome (#42) * Better detection of language for chrome * Condition restored to simpler form --- CHANGELOG.md | 5 ++++- package.json | 2 +- src/utils/lang.ts | 29 ++++++++++++++++++++--------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f124cc3dd..9d4ab1bae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog -## Version 3.0.4 +## Version 3.0.5 +- **Fix**: Better detection of language for Chrome + +## Version 3.0.4 (20.01.2024) - **Fix**: Simplifying the game process restoration (changing the game language in settings always resets the game mode to daily) - **Fix**: Polish characters can be typed only in Polish mode diff --git a/package.json b/package.json index 9b4c37480..15b450efd 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "literalnie" ], "private": true, - "version": "3.0.4", + "version": "3.0.5", "type": "module", "scripts": { "dev": "vite", diff --git a/src/utils/lang.ts b/src/utils/lang.ts index 40008889f..ee545235c 100644 --- a/src/utils/lang.ts +++ b/src/utils/lang.ts @@ -9,16 +9,27 @@ export const getLangFromUrl = () => { export const getLangFromBrowser = () => { const { language: browserLanguage, languages: browserLanguages } = navigator; - const langFromBrowser = SUPPORTED_LANGS.find(lang => browserLanguage === lang) - || SUPPORTED_LANGS.find(lang => { - const { languages: langLanguages } = SUPPORTED_DICTIONARY_BY_LANG[lang]; + const exactlangFromBrowser = SUPPORTED_LANGS.find(lang => { + const { languages: langLanguages } = SUPPORTED_DICTIONARY_BY_LANG[lang]; - const isThisLanguageSupported = langLanguages.some( - oneOfBrowserLanguages => browserLanguages.includes(oneOfBrowserLanguages) - ); + const isThisExactLanguage = langLanguages.includes(browserLanguage); - return isThisLanguageSupported; - }); + return isThisExactLanguage; + }); - return langFromBrowser; + if (exactlangFromBrowser) { + return exactlangFromBrowser; + } + + const supportedLangFromBrowser = SUPPORTED_LANGS.find(lang => { + const { languages: langLanguages } = SUPPORTED_DICTIONARY_BY_LANG[lang]; + + const isThisLanguageSupported = langLanguages.some( + oneOfBrowserLanguages => browserLanguages.includes(oneOfBrowserLanguages) + ); + + return isThisLanguageSupported; + }); + + return supportedLangFromBrowser; }