Skip to content

Commit

Permalink
Merge pull request #5650 from tordans/locale-via-url
Browse files Browse the repository at this point in the history
Allow locale and language being set via URL param
  • Loading branch information
bhousel committed Dec 23, 2018
2 parents 9502c04 + 5009ede commit f8e4dc2
Showing 1 changed file with 22 additions and 16 deletions.
38 changes: 22 additions & 16 deletions modules/util/detect.js
Expand Up @@ -9,7 +9,8 @@ export function utilDetect(force) {
detected = {};

var ua = navigator.userAgent,
m = null;
m = null,
q = utilStringQs(window.location.hash.substring(1));

m = ua.match(/(edge)\/?\s*(\.?\d+(\.\d+)*)/i); // Edge
if (m !== null) {
Expand Down Expand Up @@ -59,24 +60,30 @@ export function utilDetect(force) {
// Added due to incomplete svg style support. See #715
detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 );

detected.locale = (navigator.language || navigator.userLanguage || 'en-US');
detected.language = detected.locale.split('-')[0];
// Set locale based on url param (format 'en-US') or browser lang (default)
if (q.hasOwnProperty('locale')) {
detected.locale = q.locale;
detected.language = q.locale.split('-')[0];
} else {
detected.locale = (navigator.language || navigator.userLanguage || 'en-US');
detected.language = detected.locale.split('-')[0];

// Search `navigator.languages` for a better locale.. Prefer the first language,
// unless the second language is a culture-specific version of the first one, see #3842
if (navigator.languages && navigator.languages.length > 0) {
var code0 = navigator.languages[0],
parts0 = code0.split('-');
// Search `navigator.languages` for a better locale. Prefer the first language,
// unless the second language is a culture-specific version of the first one, see #3842
if (navigator.languages && navigator.languages.length > 0) {
var code0 = navigator.languages[0],
parts0 = code0.split('-');

detected.locale = code0;
detected.language = parts0[0];
detected.locale = code0;
detected.language = parts0[0];

if (navigator.languages.length > 1 && parts0.length === 1) {
var code1 = navigator.languages[1],
parts1 = code1.split('-');
if (navigator.languages.length > 1 && parts0.length === 1) {
var code1 = navigator.languages[1],
parts1 = code1.split('-');

if (parts1[0] === parts0[0]) {
detected.locale = code1;
if (parts1[0] === parts0[0]) {
detected.locale = code1;
}
}
}
}
Expand All @@ -90,7 +97,6 @@ export function utilDetect(force) {
}

// detect text direction
var q = utilStringQs(window.location.hash.substring(1));
var lang = dataLocales[detected.locale];
if ((lang && lang.rtl) || (q.rtl === 'true')) {
detected.textDirection = 'rtl';
Expand Down

0 comments on commit f8e4dc2

Please sign in to comment.