create locale language menu
[mkws-moved-to-github.git] / experiments / spclient / mkws.js
index 950df8a..12f8a2d 100644 (file)
@@ -46,7 +46,7 @@ var mkws_locale_lang = {
        "Displaying": "Viser",
        "to": "til",
        "of": "ud af",
-       "found": "fundet",
+       "found": "fandt",
 
        "dummy": "dummy"
     }
@@ -444,6 +444,9 @@ function mkws_html_all(data) {
     for (var k in data) {
        config[k] = data[k];
     }
+   
+    mkws_set_lang(mkws_config); 
+    mkws_html_lang(mkws_config); 
 
     // For some reason, doing this programmatically results in
     // document.search.query being undefined, hence the raw HTML.
@@ -482,6 +485,17 @@ function mkws_html_all(data) {
     domReady();
 }
 
+function mkws_set_lang(mkws_config)  {
+    var lang = jQuery.parseQuerystring().lang || mkws_config.lang || "";
+    if (!lang || !mkws_locale_lang[lang]) {
+       mkws_config.lang = ""
+    } else {
+       mkws_config.lang = lang;
+    }
+    
+    return mkws_config.lang;
+}
+
 function mkws_html_switch(config) {
     $("#mkwsSwitch").html($("<a/>", {
        href: '#',
@@ -567,9 +581,36 @@ function mkws_service_proxy_auth(auth_url) {
        });
 }
 
+/* create locale language menu */
+function mkws_html_lang(mkws_config) {
+    var lang_default = "en";
+    var lang = mkws_config.lang || lang_default;
+    var list = [lang_default];
+    
+    for (var k in mkws_locale_lang) {
+       list.push(k);
+    }
+
+    var data = "";    
+    for(var i = 0; i < list.length; i++) {
+       var l = list[i];
+       
+       if (data)
+           data += ' | ';
+           
+       if (lang == l) {
+           data += l;
+       } else {
+           data += ' <a href="/?lang=' + l + '">' + l + '</a> '
+       }
+    }
+    
+    $("#mkwsLang").html(data);
+}
+
 /* locale */
 function M(word) {
-    var lang = mkws_config.lang;
+    var lang = jQuery.parseQuerystring().lang || mkws_config.lang;
 
     if (!lang || !mkws_locale_lang[lang])
        return word;
@@ -577,5 +618,18 @@ function M(word) {
     return mkws_locale_lang[lang][word] ? mkws_locale_lang[lang][word] : word;
 }
 
+/* implement jQuery.parseQuerystring() for parsing URL parameters */
+jQuery.extend({
+    parseQuerystring: function() {
+    var nvpair = {};
+    var qs = window.location.search.replace('?', '');
+    var pairs = qs.split('&');
+    $.each(pairs, function(i, v){
+       var pair = v.split('=');
+       nvpair[pair[0]] = pair[1];
+    });
+    return nvpair;
+} });
+
 /* magic */
 $(document).ready(function() { mkws_html_all(mkws_config) });