Bladeren bron

[RN] Add builtin translations

master
Lyubo Marinov 7 jaren geleden
bovenliggende
commit
e1f967869a

+ 66
- 81
react/features/base/i18n/BuiltinLanguages.native.js Bestand weergeven

@@ -1,144 +1,129 @@
1
+// @flow
2
+
1 3
 import i18next from 'i18next';
2 4
 
3 5
 /**
4
- * Collection of builtin languages.
6
+ * The builtin languages.
5 7
  */
6
-const languages = [
8
+const _LANGUAGES = {
7 9
 
8 10
     // Bulgarian
9
-    {
10
-        name: 'bg',
11
-        mainResource: require('../../../../lang/main-bg'),
12
-        langResource: require('../../../../lang/languages-bg')
11
+    'bg': {
12
+        languages: require('../../../../lang/languages-bg'),
13
+        main: require('../../../../lang/main-bg')
13 14
     },
14 15
 
15 16
     // German
16
-    {
17
-        name: 'de',
18
-        mainResource: require('../../../../lang/main-de'),
19
-        langResource: require('../../../../lang/languages-de')
17
+    'de': {
18
+        languages: require('../../../../lang/languages-de'),
19
+        main: require('../../../../lang/main-de')
20 20
     },
21 21
 
22 22
     // Esperanto
23
-    {
24
-        name: 'eo',
25
-        mainResource: require('../../../../lang/main-eo'),
26
-        langResource: require('../../../../lang/languages-eo')
23
+    'eo': {
24
+        languages: require('../../../../lang/languages-eo'),
25
+        main: require('../../../../lang/main-eo')
27 26
     },
28 27
 
29 28
     // Spanish
30
-    {
31
-        name: 'es',
32
-        mainResource: require('../../../../lang/main-es'),
33
-        langResource: require('../../../../lang/languages-es')
29
+    'es': {
30
+        languages: require('../../../../lang/languages-es'),
31
+        main: require('../../../../lang/main-es')
34 32
     },
35 33
 
36 34
     // French
37
-    {
38
-        name: 'fr',
39
-        mainResource: require('../../../../lang/main-fr'),
40
-        langResource: require('../../../../lang/languages-fr')
35
+    'fr': {
36
+        languages: require('../../../../lang/languages-fr'),
37
+        main: require('../../../../lang/main-fr')
41 38
     },
42 39
 
43 40
     // Armenian
44
-    {
45
-        name: 'hy',
46
-        mainResource: require('../../../../lang/main-hy'),
47
-        langResource: require('../../../../lang/languages-hy')
41
+    'hy': {
42
+        languages: require('../../../../lang/languages-hy'),
43
+        main: require('../../../../lang/main-hy')
48 44
     },
49 45
 
50 46
     // Italian
51
-    {
52
-        name: 'it',
53
-        mainResource: require('../../../../lang/main-it'),
54
-        langResource: require('../../../../lang/languages-it')
47
+    'it': {
48
+        languages: require('../../../../lang/languages-it'),
49
+        main: require('../../../../lang/main-it')
55 50
     },
56 51
 
57 52
     // Norwegian Bokmal
58
-    {
59
-        name: 'nb',
60
-        mainResource: require('../../../../lang/main-nb'),
61
-        langResource: require('../../../../lang/languages-nb')
53
+    'nb': {
54
+        languages: require('../../../../lang/languages-nb'),
55
+        main: require('../../../../lang/main-nb')
62 56
     },
63 57
 
64 58
     // Occitan
65
-    {
66
-        name: 'oc',
67
-        mainResource: require('../../../../lang/main-oc'),
68
-        langResource: require('../../../../lang/languages-oc')
59
+    'oc': {
60
+        languages: require('../../../../lang/languages-oc'),
61
+        main: require('../../../../lang/main-oc')
69 62
     },
70 63
 
71 64
     // Polish
72
-    {
73
-        name: 'pl',
74
-        mainResource: require('../../../../lang/main-pl'),
75
-        langResource: require('../../../../lang/languages-pl')
65
+    'pl': {
66
+        languages: require('../../../../lang/languages-pl'),
67
+        main: require('../../../../lang/main-pl')
76 68
     },
77 69
 
78 70
     // Portuguese (Brazil)
79
-    {
80
-        name: 'ptBR',
81
-        mainResource: require('../../../../lang/main-ptBR'),
82
-        langResource: require('../../../../lang/languages-ptBR')
71
+    'ptBR': {
72
+        languages: require('../../../../lang/languages-ptBR'),
73
+        main: require('../../../../lang/main-ptBR')
83 74
     },
84 75
 
85 76
     // Russian
86
-    {
87
-        name: 'ru',
88
-        mainResource: require('../../../../lang/main-ru'),
89
-        langResource: require('../../../../lang/languages-ru')
77
+    'ru': {
78
+        languages: require('../../../../lang/languages-ru'),
79
+        main: require('../../../../lang/main-ru')
90 80
     },
91 81
 
92 82
     // Slovak
93
-    {
94
-        name: 'sk',
95
-        mainResource: require('../../../../lang/main-sk'),
96
-        langResource: require('../../../../lang/languages-sk')
83
+    'sk': {
84
+        languages: require('../../../../lang/languages-sk'),
85
+        main: require('../../../../lang/main-sk')
97 86
     },
98 87
 
99 88
     // Slovenian
100
-    {
101
-        name: 'sl',
102
-        mainResource: require('../../../../lang/main-sl'),
103
-        langResource: require('../../../../lang/languages-sl')
89
+    'sl': {
90
+        languages: require('../../../../lang/languages-sl'),
91
+        main: require('../../../../lang/main-sl')
104 92
     },
105 93
 
106 94
     // Swedish
107
-    {
108
-        name: 'sv',
109
-        mainResource: require('../../../../lang/main-sv'),
110
-        langResource: require('../../../../lang/languages-sv')
95
+    'sv': {
96
+        languages: require('../../../../lang/languages-sv'),
97
+        main: require('../../../../lang/main-sv')
111 98
     },
112 99
 
113 100
     // Turkish
114
-    {
115
-        name: 'tr',
116
-        mainResource: require('../../../../lang/main-tr'),
117
-        langResource: require('../../../../lang/languages-tr')
101
+    'tr': {
102
+        languages: require('../../../../lang/languages-tr'),
103
+        main: require('../../../../lang/main-tr')
118 104
     },
119 105
 
120 106
     // Chinese (China)
121
-    {
122
-        name: 'zhCN',
123
-        mainResource: require('../../../../lang/main-zhCN'),
124
-        langResource: require('../../../../lang/languages-zhCN')
107
+    'zhCN': {
108
+        languages: require('../../../../lang/languages-zhCN'),
109
+        main: require('../../../../lang/main-zhCN')
125 110
     }
126
-];
111
+};
112
+
113
+// Register all builtin languages with the i18n library.
114
+for (const name in _LANGUAGES) { // eslint-disable-line guard-for-in
115
+    const { languages, main } = _LANGUAGES[name];
127 116
 
128
-/**
129
- * Registers all builtin languages with the i18n library.
130
- */
131
-for (const language of languages) {
132 117
     i18next.addResourceBundle(
133
-        language.name,
134
-        'main',
135
-        language.mainResource,
118
+        name,
119
+        'languages',
120
+        languages,
136 121
         /* deep */ true,
137 122
         /* overwrite */ true);
138 123
     i18next.addResourceBundle(
139
-        language.name,
140
-        'languages',
141
-        language.langResource,
124
+        name,
125
+        'main',
126
+        main,
142 127
         /* deep */ true,
143 128
         /* overwrite */ true);
144 129
 }

+ 8
- 8
react/features/base/i18n/i18next.js Bestand weergeven

@@ -1,4 +1,4 @@
1
-/* @flow */
1
+// @flow
2 2
 
3 3
 import i18next from 'i18next';
4 4
 import I18nextXHRBackend from 'i18next-xhr-backend';
@@ -70,21 +70,21 @@ i18next
70 70
 // Add default language which is preloaded from the source code.
71 71
 i18next.addResourceBundle(
72 72
     DEFAULT_LANGUAGE,
73
-    'main',
74
-    MAIN_RESOURCES,
73
+    'languages',
74
+    LANGUAGES_RESOURCES,
75 75
     /* deep */ true,
76 76
     /* overwrite */ true);
77 77
 i18next.addResourceBundle(
78 78
     DEFAULT_LANGUAGE,
79
-    'languages',
80
-    LANGUAGES_RESOURCES,
79
+    'main',
80
+    MAIN_RESOURCES,
81 81
     /* deep */ true,
82 82
     /* overwrite */ true);
83 83
 
84 84
 // Add builtin languages.
85
-// XXX: Note we are using require here, because we want the side-effects of
86
-// the import, but imports can only be placed at the top, and it would be
87
-// too early, since i18next is not yet initialized at that point.
85
+// XXX: Note we are using require here, because we want the side-effects of the
86
+// import, but imports can only be placed at the top, and it would be too early,
87
+// since i18next is not yet initialized at that point.
88 88
 require('./BuiltinLanguages');
89 89
 
90 90
 export default i18next;

+ 0
- 33
react/features/base/react/functions.js Bestand weergeven

@@ -1,33 +0,0 @@
1
-/* @flow */
2
-
3
-/* eslint-disable flowtype/space-before-type-colon */
4
-
5
-/**
6
- * Prevents further propagation of the events to be handler by a specific event
7
- * handler/listener in the capturing and bubbling phases.
8
- *
9
- * @param {Function} eventHandler - The event handler/listener which handles
10
- * events that need to be stopped from propagating.
11
- * @returns {Function} An event handler/listener to be used in place of the
12
- * specified eventHandler in order to stop the events from propagating.
13
- */
14
-export function stopEventPropagation<T>(eventHandler: (ev: Event) => T)
15
-        : (ev: Event) => T {
16
-
17
-/* eslint-enable flowtype/space-before-type-colon */
18
-
19
-    return (ev: Event): T => {
20
-        const r = eventHandler(ev);
21
-
22
-        // React Native does not propagate the press event so, for the sake of
23
-        // cross-platform compatibility, stop the propagation on Web as well.
24
-        // Additionally, use feature checking in order to deal with browser
25
-        // differences.
26
-        if (ev && ev.stopPropagation) {
27
-            ev.stopPropagation();
28
-            ev.preventDefault && ev.preventDefault();
29
-        }
30
-
31
-        return r;
32
-    };
33
-}

+ 0
- 0
react/features/base/react/functions.web.js Bestand weergeven


+ 33
- 32
react/features/recent-list/functions.js Bestand weergeven

@@ -2,17 +2,17 @@
2 2
 
3 3
 import moment from 'moment';
4 4
 
5
-import { RECENT_URL_STORAGE } from './constants';
6
-
7 5
 import { i18next } from '../base/i18n';
8 6
 import { parseURIString } from '../base/util';
9 7
 
8
+import { RECENT_URL_STORAGE } from './constants';
9
+
10 10
 /**
11
- * MomentJS uses static language bundle loading, so in order to support
12
- * dynamic language selection in the app we need to load all bundles that we
13
- * support in the app.
14
- * FIXME: If we decide to support MomentJS in other features as well
15
- * we may need to move this import and the lenient matcher to the i18n feature.
11
+ * MomentJS uses static language bundle loading, so in order to support dynamic
12
+ * language selection in the app we need to load all bundles that we support in
13
+ * the app.
14
+ * FIXME: If we decide to support MomentJS in other features as well we may need
15
+ * to move this import and the lenient matcher to the i18n feature.
16 16
  */
17 17
 require('moment/locale/bg');
18 18
 require('moment/locale/de');
@@ -23,8 +23,7 @@ require('moment/locale/hy-am');
23 23
 require('moment/locale/it');
24 24
 require('moment/locale/nb');
25 25
 
26
-// OC is not available. Please submit OC translation
27
-// to the MomentJS project.
26
+// OC is not available. Please submit OC translation to the MomentJS project.
28 27
 
29 28
 require('moment/locale/pl');
30 29
 require('moment/locale/pt');
@@ -50,9 +49,9 @@ export function getRecentRooms(): Promise<Array<Object>> {
50 49
                 const recentRoomDS = [];
51 50
 
52 51
                 if (recentURLs) {
53
-                    // we init the locale on every list render, so then it
54
-                    // changes immediately if a language change happens
55
-                    // in the app.
52
+                    // We init the locale on every list render, so then it
53
+                    // changes immediately if a language change happens in the
54
+                    // app.
56 55
                     const locale = _getSupportedLocale();
57 56
 
58 57
                     for (const e of JSON.parse(recentURLs)) {
@@ -114,8 +113,8 @@ export function updateRecentURLs(recentURLs: Array<Object>) {
114 113
  *
115 114
  * @param {number} dateTimeStamp - The UTC timestamp to be converted to String.
116 115
  * @param {string} locale - The locale to init the formatter with. Note: This
117
- * locale must be supported by the formatter so ensure this prerequisite
118
- * before invoking the function.
116
+ * locale must be supported by the formatter so ensure this prerequisite before
117
+ * invoking the function.
119 118
  * @private
120 119
  * @returns {string}
121 120
  */
@@ -137,8 +136,8 @@ function _getDateString(dateTimeStamp: number, locale: string) {
137 136
  *
138 137
  * @param {number} duration - The duration in MS.
139 138
  * @param {string} locale - The locale to init the formatter with. Note: This
140
- * locale must be supported by the formatter so ensure this prerequisite
141
- * before invoking the function.
139
+ * locale must be supported by the formatter so ensure this prerequisite before
140
+ * invoking the function.
142 141
  * @private
143 142
  * @returns {string}
144 143
  */
@@ -165,8 +164,8 @@ function _getInitials(room: string) {
165 164
  * @private
166 165
  * @param {Date | number} dateToFormat - The date or duration to format.
167 166
  * @param {string} locale - The locale to init the formatter with. Note: This
168
- * locale must be supported by the formatter so ensure this prerequisite
169
- * before invoking the function.
167
+ * locale must be supported by the formatter so ensure this prerequisite before
168
+ * invoking the function.
170 169
  * @returns {Object}
171 170
  */
172 171
 function _getLocalizedFormatter(dateToFormat: Date | number, locale: string) {
@@ -184,20 +183,22 @@ function _getLocalizedFormatter(dateToFormat: Date | number, locale: string) {
184 183
  * @returns {string}
185 184
  */
186 185
 function _getSupportedLocale() {
187
-    const i18nLocale = i18next.language.toLowerCase();
188
-    const localeRegexp = new RegExp('^([a-z]{2,2})(-)*([a-z]{2,2})*$');
189
-    const localeResult = localeRegexp.exec(i18nLocale);
190
-
191
-    if (localeResult) {
192
-        const currentLocaleRegexp = new RegExp(
193
-            `^${localeResult[1]}(-)*${`(${localeResult[3]})*` || ''}`
194
-        );
195
-
196
-        return moment.locales().find(
197
-            lang => currentLocaleRegexp.exec(lang)
198
-        ) || 'en';
186
+    const i18nLocale = i18next.language;
187
+    let supportedLocale;
188
+
189
+    if (i18nLocale) {
190
+        const localeRegexp = new RegExp('^([a-z]{2,2})(-)*([a-z]{2,2})*$');
191
+        const localeResult = localeRegexp.exec(i18nLocale.toLowerCase());
192
+
193
+        if (localeResult) {
194
+            const currentLocaleRegexp
195
+                = new RegExp(
196
+                    `^${localeResult[1]}(-)*${`(${localeResult[3]})*` || ''}`);
197
+
198
+            supportedLocale
199
+                = moment.locales().find(lang => currentLocaleRegexp.exec(lang));
200
+        }
199 201
     }
200 202
 
201
-    // default fallback
202
-    return 'en';
203
+    return supportedLocale || 'en';
203 204
 }

Laden…
Annuleren
Opslaan