Last active
July 10, 2021 13:37
-
-
Save ksol/62b489572944ca70b4ba to your computer and use it in GitHub Desktop.
Language detection in javascript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.navigator.language // -> "fr" | |
window.navigator.languages // -> ["fr-FR", "fr", "en-US", "en", "es", "de"] | |
window.navigator.userLanguage // -> undefined | |
window.navigator.browserLanguage // -> undefined | |
window.navigator.systemLanguage // -> undefined |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.navigator.language // -> "fr" | |
window.navigator.languages // -> [ "fr", "fr-FR", "en-US", "en" ] | |
window.navigator.userLanguage // -> undefined | |
window.navigator.browserLanguage // -> undefined | |
window.navigator.systemLanguage // -> undefined |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.navigator.language // -> undefined | |
window.navigator.languages // -> undefined | |
window.navigator.userLanguage // -> 'en-us' | |
window.navigator.browserLanguage // -> 'en-us' | |
window.navigator.systemLanguage // -> 'en-us' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.navigator.language // -> undefined | |
window.navigator.languages // -> undefined | |
window.navigator.userLanguage // -> 'en-US' | |
window.navigator.browserLanguage // -> 'en-US' | |
window.navigator.systemLanguage // -> 'en-US' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.navigator.language // -> 'en-US' | |
window.navigator.languages // -> undefined | |
window.navigator.userLanguage // -> 'en-US' | |
window.navigator.browserLanguage // -> 'en-US' | |
window.navigator.systemLanguage // -> 'en-US' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
window.navigator.language // -> "fr-fr" | |
window.navigator.languages // -> undefined | |
window.navigator.userLanguage // -> undefined | |
window.navigator.browserLanguage // -> undefined | |
window.navigator.systemLanguage // -> undefined |
chrome_65 is still
window.navigator.language // -> "fr"
window.navigator.languages // -> ["fr-FR", "fr", "en-US", "en", "es", "de"]
window.navigator.userLanguage // -> undefined
window.navigator.browserLanguage // -> undefined
window.navigator.systemLanguage // -> undefined
Direct in JS
let lg = {
a: navigator.language,
b: navigator.languages,
c: navigator.userLanguage,
d: navigator.browserLanguage,
e: navigator.systemLanguage
}, language = {
detected: lg.a || lg.c || lg.d || lg.e || lg.b[0],
available: lg.b || [lg.a] || [lg.c] || [lg.d] || [lg.e]
}
Direct in Browser
let lg = {
a: window.navigator.language,
b: window.navigator.languages,
c: window.navigator.userLanguage,
d: window.navigator.browserLanguage,
e: window.navigator.systemLanguage
}, language = {
detected: lg.a || lg.c || lg.d || lg.e || lg.b[0],
available: lg.b || [lg.a] || [lg.c] || [lg.d] || [lg.e]
}
Sample of return in Chrome
{ detected: "pt-BR", available: ["pt-BR", "pt", "en-US", "en"] }
Sample of return in Safari 10
{ detected: "pt-BR", available: ["pt-BR"] }
+info: https://github.com/alailsonribeiro/locales/tree/master/language
error TS2339: Property 'systemLanguage' does not exist on type 'Navigator'
To avoid errors this Typescript error you have to change the last 3 lines of code:
let language = {
a: window.navigator.language,
b: window.navigator.languages,
c: window.navigator['userLanguage'],
d: window.navigator['browserLanguage'],
e: window.navigator['systemLanguage'],
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Safari 10: