ソースを参照

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

j8
hristoterezov 10年前
コミット
f16a1cdf44

+ 1
- 1
index.html ファイルの表示

@@ -19,7 +19,7 @@
19 19
     <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
20 20
     <script src="libs/toastr.js?v=1"></script><!-- notifications lib -->
21 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 23
     <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
24 24
     <link rel="stylesheet" href="css/font.css?v=6"/>
25 25
     <link rel="stylesheet" href="css/toastr.css?v=1">

+ 2
- 1
lang/languages.json ファイルの表示

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

+ 46
- 5
libs/app.bundle.js ファイルの表示

@@ -4530,7 +4530,9 @@ var SettingsMenu = {
4530 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 4537
         APP.xmpp.addToPresence("email", newEmail);
4536 4538
         var email = Settings.setEmail(newEmail);
@@ -9298,6 +9300,7 @@ module.exports = KeyboardShortcut;
9298 9300
 var email = '';
9299 9301
 var displayName = '';
9300 9302
 var userId;
9303
+var language = null;
9301 9304
 
9302 9305
 
9303 9306
 function supportsLocalStorage() {
@@ -9325,6 +9328,7 @@ if (supportsLocalStorage()) {
9325 9328
     userId = window.localStorage.jitsiMeetId || '';
9326 9329
     email = window.localStorage.email || '';
9327 9330
     displayName = window.localStorage.displayname || '';
9331
+    language = window.localStorage.language;
9328 9332
 } else {
9329 9333
     console.log("local storage is not supported");
9330 9334
     userId = generateUniqueId();
@@ -9347,8 +9351,13 @@ var Settings =
9347 9351
         return {
9348 9352
             email: email,
9349 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,6 +11603,7 @@ module.exports = statistics;
11594 11603
 },{"../../service/RTC/StreamEventTypes.js":82,"../../service/xmpp/XMPPEvents":88,"./LocalStatsCollector.js":43,"./RTPStatsCollector.js":44,"events":89}],46:[function(require,module,exports){
11595 11604
 var i18n = require("i18next-client");
11596 11605
 var languages = require("../../service/translation/languages");
11606
+var Settings = require("../settings/Settings");
11597 11607
 var DEFAULT_LANG = languages.EN;
11598 11608
 var initialized = false;
11599 11609
 var waitingForInit = [];
@@ -11617,6 +11627,7 @@ var defaultOptions = {
11617 11627
     },
11618 11628
     lngWhitelist : languages.getLanguages(),
11619 11629
     fallbackOnNull: true,
11630
+    fallbackOnEmpty: true,
11620 11631
     useDataAttrOptions: true,
11621 11632
     app: interfaceConfig.APP_NAME,
11622 11633
     getAsync: true,
@@ -11669,12 +11680,40 @@ function initCompleted(t)
11669 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 11696
 module.exports = {
11673 11697
     init: function (lang) {
11674 11698
         initialized = false;
11675 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 11714
             options.lng = lang;
11715
+        }
11716
+
11678 11717
         i18n.init(options, initCompleted);
11679 11718
     },
11680 11719
     translateString: function (key, cb, options) {
@@ -11722,7 +11761,7 @@ module.exports = {
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 11765
 /* jshint -W117 */
11727 11766
 var TraceablePeerConnection = require("./TraceablePeerConnection");
11728 11767
 var SDPDiffer = require("./SDPDiffer");
@@ -25376,7 +25415,9 @@ module.exports = {
25376 25415
         }
25377 25416
         return languages;
25378 25417
     },
25379
-    EN: "en"
25418
+    EN: "en",
25419
+    BG: "bg",
25420
+    DE: "de"
25380 25421
 }
25381 25422
 },{}],88:[function(require,module,exports){
25382 25423
 var XMPPEvents = {

+ 3
- 1
modules/UI/side_pannels/settings/SettingsMenu.js ファイルの表示

@@ -47,7 +47,9 @@ var SettingsMenu = {
47 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 54
         APP.xmpp.addToPresence("email", newEmail);
53 55
         var email = Settings.setEmail(newEmail);

+ 8
- 1
modules/settings/Settings.js ファイルの表示

@@ -1,6 +1,7 @@
1 1
 var email = '';
2 2
 var displayName = '';
3 3
 var userId;
4
+var language = null;
4 5
 
5 6
 
6 7
 function supportsLocalStorage() {
@@ -28,6 +29,7 @@ if (supportsLocalStorage()) {
28 29
     userId = window.localStorage.jitsiMeetId || '';
29 30
     email = window.localStorage.email || '';
30 31
     displayName = window.localStorage.displayname || '';
32
+    language = window.localStorage.language;
31 33
 } else {
32 34
     console.log("local storage is not supported");
33 35
     userId = generateUniqueId();
@@ -50,8 +52,13 @@ var Settings =
50 52
         return {
51 53
             email: email,
52 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 ファイルの表示

@@ -1,5 +1,6 @@
1 1
 var i18n = require("i18next-client");
2 2
 var languages = require("../../service/translation/languages");
3
+var Settings = require("../settings/Settings");
3 4
 var DEFAULT_LANG = languages.EN;
4 5
 var initialized = false;
5 6
 var waitingForInit = [];
@@ -23,6 +24,7 @@ var defaultOptions = {
23 24
     },
24 25
     lngWhitelist : languages.getLanguages(),
25 26
     fallbackOnNull: true,
27
+    fallbackOnEmpty: true,
26 28
     useDataAttrOptions: true,
27 29
     app: interfaceConfig.APP_NAME,
28 30
     getAsync: true,
@@ -75,12 +77,40 @@ function initCompleted(t)
75 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 93
 module.exports = {
79 94
     init: function (lang) {
80 95
         initialized = false;
81 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 111
             options.lng = lang;
112
+        }
113
+
84 114
         i18n.init(options, initCompleted);
85 115
     },
86 116
     translateString: function (key, cb, options) {

+ 3
- 1
service/translation/languages.js ファイルの表示

@@ -8,5 +8,7 @@ module.exports = {
8 8
         }
9 9
         return languages;
10 10
     },
11
-    EN: "en"
11
+    EN: "en",
12
+    BG: "bg",
13
+    DE: "de"
12 14
 }

読み込み中…
キャンセル
保存