Skip to content

Instantly share code, notes, and snippets.

@pablosbrain
Last active June 20, 2018 12:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pablosbrain/ce903c93059a46ee621e70bd12c83368 to your computer and use it in GitHub Desktop.
Save pablosbrain/ce903c93059a46ee621e70bd12c83368 to your computer and use it in GitHub Desktop.
Detect browser language and location
// Primary functions
// setLocation(newLocationCodeString);
// setLanguage(newLanguageCodeString);
// Primary variables will default to en-US, browser values will then override defaults, and user set cookies will then override browser defaults.
// current_language
// current_location
var current_language = null;
var current_location = null;
var browser_language_default = "en";
var browser_location_default = "US";
var browser_language_cookie_key = "browser_language_code";
var browser_location_cookie_key = "browser_language_locale";
var browser_cookie_life_days = 7;
var browser_language_code = window.navigator.languages ? window.navigator.languages[0] : null;
browser_language_code = browser_language_code || window.navigator.language || window.navigator.browserLanguage || window.navigator.userLanguage;
console.log("var browser_language_code", browser_language_code);
var browser_language_code_split = browser_language_code.split(/[^A-Za-z]/);
console.log("var browser_language_code_split", browser_language_code_split);
var browser_language = (browser_language_code_split.length >= 1) ? browser_language_code_split[0] : browser_language_default;
var browser_location = (browser_language_code_split.length >= 2) ? browser_language_code_split[1] : browser_location_default;
console.log("var browser_language", browser_language);
console.log("var browser_location", browser_location);
function getCookie(name) {
var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
return v ? v[2] : null;
}
function setCookie(name, value, days) {
var d = new Date;
d.setTime(d.getTime() + 24*60*60*1000*days);
document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString();
}
function deleteCookie(name) {
setCookie(name, '', -1);
}
function setLanguage(new_language_code) {
new_language_code = String(new_language_code).toLowerCase();
setCookie(browser_language_cookie_key, new_language_code, browser_cookie_life_days);
current_language = new_language_code;
console.log("var current_language", current_language);
}
function setLocation(new_location_code) {
new_location_code = String(new_location_code).toUpperCase();
setCookie(browser_location_cookie_key, new_location_code, browser_cookie_life_days);
current_location = new_location_code;
console.log("var current_location", current_location);
}
// check for cookie
current_language = getCookie(browser_language_cookie_key);
if(current_language == null){ // if no cookie, set default
setLanguage(browser_language);
}else{ // reset cookie if exists to extend life
setLanguage(current_language);
}
current_location = getCookie(browser_location_cookie_key);
if(current_location == null){
setLocation(browser_location);
}else{ // reset cookie if exists to extend life
setLocation(current_location);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment