From 23352d5f8a99d1457e64b76a958ca12dc789065d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ale=C5=A1=20Smodi=C5=A1?= <aless@guru.si>
Date: Thu, 24 Sep 2015 17:40:10 +0200
Subject: Make browser autodetection a little more resilient.

---
 js/codeq/core.js | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

(limited to 'js/codeq')

diff --git a/js/codeq/core.js b/js/codeq/core.js
index 148cdeb..441c257 100644
--- a/js/codeq/core.js
+++ b/js/codeq/core.js
@@ -199,6 +199,7 @@
 
         'log': log,
 
+        'availableLangs': [], // filled at boot from 'supportedLangs'
         'supportedLangs': {
             'en': 'English',
             'sl': 'Slovenščina'
@@ -371,12 +372,20 @@
 
     $(document).ready(function () {
         // set the language
-        var lang = navigator.language || navigator.browserLanguage;
-        if (typeof lang === 'string') {
-            lang = lang.split('-')[0]; // truncate the language variant, in eg. en-US
-            if (lang in codeq.supportedLangs) codeq.lang = lang;
+        var navigatorLang = navigator.language || navigator.browserLanguage, // language reported by browser
+            lang = null, // the translation language that will be chosen
+            key;
+        if (typeof navigatorLang === 'string') {
+            navigatorLang = navigatorLang.split('-')[0]; // truncate the language variant, in eg. en-US
         }
-        codeq.setLang(lang); // initial language setting
+        else navigatorLang = 'en';
+        for (key in codeq.supportedLangs) {
+            if (!codeq.supportedLangs.hasOwnProperty(key)) continue;
+            if (key === navigatorLang) lang = key; // we support the browser's language
+            codeq.availableLangs.push(key);
+        }
+
+        codeq.setLang(lang || 'en'); // initial language setting
 
         // go to login
         codeq.globalStateMachine.transition('login');
-- 
cgit v1.2.1