From 92a021e1479b8a4f062a105a12b88c01850130f3 Mon Sep 17 00:00:00 2001 From: umherirrender Date: Fri, 12 Jul 2013 20:36:31 +0200 Subject: [PATCH] TypeError: window.navigator.userLanguage is undefined This can happen, when the user deletes the pref User languages from the browser. Change-Id: Ieaf783fbae113724704e2cce2e166e56935e8ce1 --- resources/js/ext.uls.init.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/resources/js/ext.uls.init.js b/resources/js/ext.uls.init.js index 543875eb..96f6963d 100644 --- a/resources/js/ext.uls.init.js +++ b/resources/js/ext.uls.init.js @@ -75,8 +75,18 @@ return $.parseJSON( previousLanguages ).slice( -5 ); }; + /** + * Returns the browser's user interface language or the system language. + * The caller should check the validity of the returned language code. + * + * @return {string} Language code or empty string. + */ mw.uls.getBrowserLanguage = function () { - return ( window.navigator.language || window.navigator.userLanguage ).split( '-' )[0]; + // language is the standard property. + // userLanguage is only for IE and returns system locale. + // Empty string is a fallback in case both are undefined + // to avoid runtime error with split(). + return ( window.navigator.language || window.navigator.userLanguage || '' ).split( '-' )[0]; }; /*jshint camelcase:false*/