Browse Source

Changes the implementation to store the language in local storage. Adds new languages.

j8
hristoterezov 10 years ago
parent
commit
f16a1cdf44

+ 1
- 1
index.html View File

19
     <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
19
     <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
20
     <script src="libs/toastr.js?v=1"></script><!-- notifications lib -->
20
     <script src="libs/toastr.js?v=1"></script><!-- notifications lib -->
21
     <script src="interface_config.js?v=5"></script>
21
     <script src="interface_config.js?v=5"></script>
22
-    <script src="libs/app.bundle.js?v=18"></script>
22
+    <script src="libs/app.bundle.js?v=19"></script>
23
     <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
23
     <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
24
     <link rel="stylesheet" href="css/font.css?v=6"/>
24
     <link rel="stylesheet" href="css/font.css?v=6"/>
25
     <link rel="stylesheet" href="css/toastr.css?v=1">
25
     <link rel="stylesheet" href="css/toastr.css?v=1">

+ 2
- 1
lang/languages.json View File

1
 {
1
 {
2
     "en": "English",
2
     "en": "English",
3
-    "bg": "Bulgarian"
3
+    "bg": "Bulgarian",
4
+    "de": "German"
4
 }
5
 }

+ 46
- 5
libs/app.bundle.js View File

4530
             APP.xmpp.addToPresence("displayName", displayName, true);
4530
             APP.xmpp.addToPresence("displayName", displayName, true);
4531
         }
4531
         }
4532
 
4532
 
4533
-        APP.translation.setLanguage($("#languages_selectbox").val());
4533
+        var language = $("#languages_selectbox").val();
4534
+        APP.translation.setLanguage(language);
4535
+        Settings.setLanguage(language);
4534
 
4536
 
4535
         APP.xmpp.addToPresence("email", newEmail);
4537
         APP.xmpp.addToPresence("email", newEmail);
4536
         var email = Settings.setEmail(newEmail);
4538
         var email = Settings.setEmail(newEmail);
9298
 var email = '';
9300
 var email = '';
9299
 var displayName = '';
9301
 var displayName = '';
9300
 var userId;
9302
 var userId;
9303
+var language = null;
9301
 
9304
 
9302
 
9305
 
9303
 function supportsLocalStorage() {
9306
 function supportsLocalStorage() {
9325
     userId = window.localStorage.jitsiMeetId || '';
9328
     userId = window.localStorage.jitsiMeetId || '';
9326
     email = window.localStorage.email || '';
9329
     email = window.localStorage.email || '';
9327
     displayName = window.localStorage.displayname || '';
9330
     displayName = window.localStorage.displayname || '';
9331
+    language = window.localStorage.language;
9328
 } else {
9332
 } else {
9329
     console.log("local storage is not supported");
9333
     console.log("local storage is not supported");
9330
     userId = generateUniqueId();
9334
     userId = generateUniqueId();
9347
         return {
9351
         return {
9348
             email: email,
9352
             email: email,
9349
             displayName: displayName,
9353
             displayName: displayName,
9350
-            uid: userId
9354
+            uid: userId,
9355
+            language: language
9351
         };
9356
         };
9357
+    },
9358
+    setLanguage: function (lang) {
9359
+        language = lang;
9360
+        window.localStorage.language = lang;
9352
     }
9361
     }
9353
 };
9362
 };
9354
 
9363
 
11594
 },{"../../service/RTC/StreamEventTypes.js":82,"../../service/xmpp/XMPPEvents":88,"./LocalStatsCollector.js":43,"./RTPStatsCollector.js":44,"events":89}],46:[function(require,module,exports){
11603
 },{"../../service/RTC/StreamEventTypes.js":82,"../../service/xmpp/XMPPEvents":88,"./LocalStatsCollector.js":43,"./RTPStatsCollector.js":44,"events":89}],46:[function(require,module,exports){
11595
 var i18n = require("i18next-client");
11604
 var i18n = require("i18next-client");
11596
 var languages = require("../../service/translation/languages");
11605
 var languages = require("../../service/translation/languages");
11606
+var Settings = require("../settings/Settings");
11597
 var DEFAULT_LANG = languages.EN;
11607
 var DEFAULT_LANG = languages.EN;
11598
 var initialized = false;
11608
 var initialized = false;
11599
 var waitingForInit = [];
11609
 var waitingForInit = [];
11617
     },
11627
     },
11618
     lngWhitelist : languages.getLanguages(),
11628
     lngWhitelist : languages.getLanguages(),
11619
     fallbackOnNull: true,
11629
     fallbackOnNull: true,
11630
+    fallbackOnEmpty: true,
11620
     useDataAttrOptions: true,
11631
     useDataAttrOptions: true,
11621
     app: interfaceConfig.APP_NAME,
11632
     app: interfaceConfig.APP_NAME,
11622
     getAsync: true,
11633
     getAsync: true,
11669
     waitingForInit = [];
11680
     waitingForInit = [];
11670
 }
11681
 }
11671
 
11682
 
11683
+function checkForParameter() {
11684
+    var query = window.location.search.substring(1);
11685
+    var vars = query.split("&");
11686
+    for (var i=0;i<vars.length;i++) {
11687
+        var pair = vars[i].split("=");
11688
+        if(pair[0] == "lang")
11689
+        {
11690
+            return pair[1];
11691
+        }
11692
+    }
11693
+    return null;
11694
+}
11695
+
11672
 module.exports = {
11696
 module.exports = {
11673
     init: function (lang) {
11697
     init: function (lang) {
11674
         initialized = false;
11698
         initialized = false;
11675
         var options = defaultOptions;
11699
         var options = defaultOptions;
11676
-        if(lang)
11700
+
11701
+
11702
+        if(!lang)
11703
+        {
11704
+            lang = checkForParameter();
11705
+            if(!lang)
11706
+            {
11707
+                var settings = Settings.getSettings();
11708
+                if(settings)
11709
+                    lang = settings.language;
11710
+            }
11711
+        }
11712
+
11713
+        if(lang) {
11677
             options.lng = lang;
11714
             options.lng = lang;
11715
+        }
11716
+
11678
         i18n.init(options, initCompleted);
11717
         i18n.init(options, initCompleted);
11679
     },
11718
     },
11680
     translateString: function (key, cb, options) {
11719
     translateString: function (key, cb, options) {
11722
     }
11761
     }
11723
 };
11762
 };
11724
 
11763
 
11725
-},{"../../service/translation/languages":87,"i18next-client":61}],47:[function(require,module,exports){
11764
+},{"../../service/translation/languages":87,"../settings/Settings":37,"i18next-client":61}],47:[function(require,module,exports){
11726
 /* jshint -W117 */
11765
 /* jshint -W117 */
11727
 var TraceablePeerConnection = require("./TraceablePeerConnection");
11766
 var TraceablePeerConnection = require("./TraceablePeerConnection");
11728
 var SDPDiffer = require("./SDPDiffer");
11767
 var SDPDiffer = require("./SDPDiffer");
25376
         }
25415
         }
25377
         return languages;
25416
         return languages;
25378
     },
25417
     },
25379
-    EN: "en"
25418
+    EN: "en",
25419
+    BG: "bg",
25420
+    DE: "de"
25380
 }
25421
 }
25381
 },{}],88:[function(require,module,exports){
25422
 },{}],88:[function(require,module,exports){
25382
 var XMPPEvents = {
25423
 var XMPPEvents = {

+ 3
- 1
modules/UI/side_pannels/settings/SettingsMenu.js View File

47
             APP.xmpp.addToPresence("displayName", displayName, true);
47
             APP.xmpp.addToPresence("displayName", displayName, true);
48
         }
48
         }
49
 
49
 
50
-        APP.translation.setLanguage($("#languages_selectbox").val());
50
+        var language = $("#languages_selectbox").val();
51
+        APP.translation.setLanguage(language);
52
+        Settings.setLanguage(language);
51
 
53
 
52
         APP.xmpp.addToPresence("email", newEmail);
54
         APP.xmpp.addToPresence("email", newEmail);
53
         var email = Settings.setEmail(newEmail);
55
         var email = Settings.setEmail(newEmail);

+ 8
- 1
modules/settings/Settings.js View File

1
 var email = '';
1
 var email = '';
2
 var displayName = '';
2
 var displayName = '';
3
 var userId;
3
 var userId;
4
+var language = null;
4
 
5
 
5
 
6
 
6
 function supportsLocalStorage() {
7
 function supportsLocalStorage() {
28
     userId = window.localStorage.jitsiMeetId || '';
29
     userId = window.localStorage.jitsiMeetId || '';
29
     email = window.localStorage.email || '';
30
     email = window.localStorage.email || '';
30
     displayName = window.localStorage.displayname || '';
31
     displayName = window.localStorage.displayname || '';
32
+    language = window.localStorage.language;
31
 } else {
33
 } else {
32
     console.log("local storage is not supported");
34
     console.log("local storage is not supported");
33
     userId = generateUniqueId();
35
     userId = generateUniqueId();
50
         return {
52
         return {
51
             email: email,
53
             email: email,
52
             displayName: displayName,
54
             displayName: displayName,
53
-            uid: userId
55
+            uid: userId,
56
+            language: language
54
         };
57
         };
58
+    },
59
+    setLanguage: function (lang) {
60
+        language = lang;
61
+        window.localStorage.language = lang;
55
     }
62
     }
56
 };
63
 };
57
 
64
 

+ 31
- 1
modules/translation/translation.js View File

1
 var i18n = require("i18next-client");
1
 var i18n = require("i18next-client");
2
 var languages = require("../../service/translation/languages");
2
 var languages = require("../../service/translation/languages");
3
+var Settings = require("../settings/Settings");
3
 var DEFAULT_LANG = languages.EN;
4
 var DEFAULT_LANG = languages.EN;
4
 var initialized = false;
5
 var initialized = false;
5
 var waitingForInit = [];
6
 var waitingForInit = [];
23
     },
24
     },
24
     lngWhitelist : languages.getLanguages(),
25
     lngWhitelist : languages.getLanguages(),
25
     fallbackOnNull: true,
26
     fallbackOnNull: true,
27
+    fallbackOnEmpty: true,
26
     useDataAttrOptions: true,
28
     useDataAttrOptions: true,
27
     app: interfaceConfig.APP_NAME,
29
     app: interfaceConfig.APP_NAME,
28
     getAsync: true,
30
     getAsync: true,
75
     waitingForInit = [];
77
     waitingForInit = [];
76
 }
78
 }
77
 
79
 
80
+function checkForParameter() {
81
+    var query = window.location.search.substring(1);
82
+    var vars = query.split("&");
83
+    for (var i=0;i<vars.length;i++) {
84
+        var pair = vars[i].split("=");
85
+        if(pair[0] == "lang")
86
+        {
87
+            return pair[1];
88
+        }
89
+    }
90
+    return null;
91
+}
92
+
78
 module.exports = {
93
 module.exports = {
79
     init: function (lang) {
94
     init: function (lang) {
80
         initialized = false;
95
         initialized = false;
81
         var options = defaultOptions;
96
         var options = defaultOptions;
82
-        if(lang)
97
+
98
+
99
+        if(!lang)
100
+        {
101
+            lang = checkForParameter();
102
+            if(!lang)
103
+            {
104
+                var settings = Settings.getSettings();
105
+                if(settings)
106
+                    lang = settings.language;
107
+            }
108
+        }
109
+
110
+        if(lang) {
83
             options.lng = lang;
111
             options.lng = lang;
112
+        }
113
+
84
         i18n.init(options, initCompleted);
114
         i18n.init(options, initCompleted);
85
     },
115
     },
86
     translateString: function (key, cb, options) {
116
     translateString: function (key, cb, options) {

+ 3
- 1
service/translation/languages.js View File

8
         }
8
         }
9
         return languages;
9
         return languages;
10
     },
10
     },
11
-    EN: "en"
11
+    EN: "en",
12
+    BG: "bg",
13
+    DE: "de"
12
 }
14
 }

Loading…
Cancel
Save