From d9e360e5755746582bcf58137cfaa882a0323ae7 Mon Sep 17 00:00:00 2001 From: gconsidine Date: Thu, 28 Sep 2017 14:46:56 -0400 Subject: [PATCH] Add check if navigator.languages exists to use --- awx/ui/client/src/app.start.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/app.start.js b/awx/ui/client/src/app.start.js index f715f14082..44f8113567 100644 --- a/awx/ui/client/src/app.start.js +++ b/awx/ui/client/src/app.start.js @@ -28,7 +28,7 @@ function bootstrap (callback) { * @returns {object=} - Locale data if it exists. */ function fetchLocaleStrings (callback) { - const code = normalizeLocaleCode(navigator.language || navigator.userLanguage); + const code = getNormalizedLocaleCode(); if (isDefaultLocale(code) || !isSupportedLocale(code)) { callback({ code }); @@ -49,14 +49,29 @@ function fetchLocaleStrings (callback) { request.fail(() => callback({ code: DEFAULT_LOCALE })); } -function normalizeLocaleCode (code) { +/** + * Grabs the language off of navigator for browser compatibility. + * If the language isn't set, then it falls back to the DEFAULT_LOCALE. The + * locale code is normalized to be lowercase and 2 characters in length. + */ +function getNormalizedLocaleCode () { + let code; + + if (navigator.languages && navigator.languages[0]) { + [code] = navigator.languages; + } else if (navigator.language) { + code = navigator.language; + } else { + code = navigator.userLanguage; + } + try { code = code.split('-')[0].toLowerCase(); } catch (error) { code = DEFAULT_LOCALE; } - return code; + return code.substring(0, 2); } function isSupportedLocale (code) {