Add language selection, based on tornoz's work
authorRaphaël Jakse <raphael.jakse@gmail.com>
Sun, 3 Apr 2016 15:23:13 +0000 (17:23 +0200)
committerRaphaël Jakse <raphael.jakse@gmail.com>
Sun, 3 Apr 2016 15:23:13 +0000 (17:23 +0200)
index.html
trivabble.css
trivabble.js

index 0f70ac89f8f67fee9401bacf69860f1187c0d078..34c69c312d04dcd5340d1532b63364220fa9e74e 100644 (file)
         <script src="alert.js"></script>
         <script src="touch2click.js"></script>
         <script src="trivabble.js"></script>
-        <script>
-            (function () {
-                var script = document.createElement("script");
-                script.src = "l10n/js/" + libD.lang + ".js";
-                script.onerror = trivabble.l10nError;
-                document.getElementsByTagName("head")[0].appendChild(script);
-            })();
-        </script>
     </head>
     <body>
         <div id="menu">
                 <p><label><input type="checkbox" id="tiles-sound" checked="checked" /><span data-l10n="text-content">Sound of the tiles</span></label></p>
                 <p><label><input type="checkbox" id="msg-sound" checked="checked" /><span data-l10n="text-content">Sound of messages</span></label></p>
             </div>
+
+            <div id="lang-selection">
+                <label>
+                    <span data-l10n="text-content">Interface language: </span>
+                    <select id="select-lang">
+                        <option value="en">English</option>
+                        <option value="fr">Français</option>
+                        <option value="br">Brezhoneg</option>
+                    </select>
+                </label>
+            </div>
         </div>
 
         <div id="content">
index 35b72f5bfc249b86ea9330bf0bfad7e94d5fd242..3234c823b26f218be35395ff20841a5e05992c9d 100644 (file)
@@ -375,6 +375,10 @@ td.blink {
     font-size:small
 }
 
+#lang-selection {
+    font-size:small;
+}
+
 #prefs-sound input, #prefs-sound label {
     vertical-align:middle
 }
index c8f8c4484efce2ece07485d3b3bafe6fef9f8116..7dbfb209a6f674b05968e1042a2f289e035c85c2 100644 (file)
         trivabble.run();
     };
 
+    function langSelectionChange(e) {
+        localStorage.trivabbleLang = e.target.value;
+        location.reload();
+    }
+
     function initGlobals() {
         board         = document.getElementById("board");
         rack          = document.getElementById("rack");
         startGame(localStorage.trivabbleGameNumber);
     }
 
+    function initLang() {
+        var lang = localStorage.trivabbleLang || libD.lang;
+        libD.lang = lang;
+
+        var langSel = document.getElementById("select-lang");
+        langSel.value = lang;
+        langSel.onchange = langSelectionChange;
+
+        var script = document.createElement("script");
+        script.src = "l10n/js/" + lang + ".js";
+        script.onerror = trivabble.l10nError;
+        document.getElementsByTagName("head")[0].appendChild(script);
+    }
+
     trivabble.run = function () {
         initGlobals();
         initEvents();
     };
 
     trivabble.l10nError = trivabble.run;
+
+    window.addEventListener("DOMContentLoaded", initLang);
 }());