Skip to content

Instantly share code, notes, and snippets.

@sickOscar
Last active October 19, 2015 23:24
Show Gist options
  • Save sickOscar/8b2d60c263b0882f1c3f to your computer and use it in GitHub Desktop.
Save sickOscar/8b2d60c263b0882f1c3f to your computer and use it in GitHub Desktop.
WPML - browser-redirect.js - Fix
/*globals wpml_browser_redirect_params */
jQuery(document).ready(function () {
if (jQuery.cookie !== undefined) {
// Check if cookie are enabled
jQuery.cookie('wpml_browser_redirect_test', '1');
var cookie_enabled = jQuery.cookie('wpml_browser_redirect_test') === '1';
jQuery.removeCookie('wpml_browser_redirect_test');
if (cookie_enabled) {
var cookie_params = wpml_browser_redirect_params.cookie;
var cookie_name = cookie_params.name;
// Check if we already did a redirect
if (!jQuery.cookie(cookie_name)) {
// Get page language and browser language
var pageLanguage = wpml_browser_redirect_params.pageLanguage, browserLanguage = 'en';
jQuery.ajax({
async: false, data: {icl_ajx_action: 'get_browser_language'},
success: function (ret) {
browserLanguage = decodeURI(ret).trim();
}
});
// Build cookie options
var cookie_options = {
expires: cookie_params.expiration / 24,
path: cookie_params.path ? cookie_params.path : '/',
domain: cookie_params.domain ? cookie_params.domain : ''
};
// Set the cookie so that the check is made only on the first visit
jQuery.cookie(cookie_name, browserLanguage, cookie_options);
if (!jQuery.cookie(cookie_name)) {
// fix per lavorare in locale
jQuery.cookie(cookie_name, browserLanguage);
}
// Compare page language and browser language
if (pageLanguage !== browserLanguage) {
var redirectUrl;
// First try to find the redirect url from parameters passed to javascript
var languageUrls = wpml_browser_redirect_params.languageUrls;
if (languageUrls[browserLanguage] !== undefined) {
redirectUrl = languageUrls[browserLanguage];
} else if (languageUrls[browserLanguage.substr(0, 2)] !== undefined) {
redirectUrl = languageUrls[browserLanguage.substr(0, 2)];
} else if (languageUrls[browserLanguage.substr(3, 2)] !== undefined) {
redirectUrl = languageUrls[browserLanguage.substr(3, 2)];
}
// Finally do the redirect
if (redirectUrl !== undefined) {
window.location = redirectUrl;
}
}
}
}
}
});
@sickOscar
Copy link
Author

Edits are from line 36 to 39

Working locally on custom virtual host may create problems settings cookies because of the domain name. These lines set a new cookie in case of failure of the previous request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment