scratch-l10n 3.18.357 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/PULL_REQUEST_TEMPLATE.md +4 -4
- package/.nvmrc +1 -1
- package/CHANGELOG.md +22 -0
- package/dist/l10n.js +237 -380
- package/dist/l10n.js.map +1 -1
- package/dist/localeData.js +225 -369
- package/dist/localeData.js.map +1 -1
- package/dist/supportedLocales.js +139 -289
- package/dist/supportedLocales.js.map +1 -1
- package/lib/progress-logger.mjs +42 -0
- package/lib/transifex.js +70 -22
- package/package.json +15 -15
- package/scripts/{build-data.js → build-data.mjs} +3 -3
- package/scripts/{tx-pull-editor.js → tx-pull-editor.mjs} +3 -3
- package/scripts/{tx-pull-www.js → tx-pull-www.mjs} +42 -26
- package/scripts/{tx-push-help.js → tx-push-help.mjs} +1 -1
- package/scripts/{validate-extension-inputs.js → validate-extension-inputs.mjs} +2 -2
- package/scripts/{validate-translations.js → validate-translations.mjs} +4 -4
- package/scripts/{validate-www.js → validate-www.mjs} +4 -4
- package/src/index.mjs +3 -0
- package/src/{locale-data.js → locale-data.mjs} +1 -1
- package/src/index.js +0 -3
- /package/lib/{validate.js → validate.mjs} +0 -0
- /package/src/{supported-locales.js → supported-locales.mjs} +0 -0
package/dist/supportedLocales.js
CHANGED
@@ -82,17 +82,17 @@ module.exports =
|
|
82
82
|
/******/
|
83
83
|
/******/
|
84
84
|
/******/ // Load entry module and return exports
|
85
|
-
/******/ return __webpack_require__(__webpack_require__.s = "./src/supported-locales.
|
85
|
+
/******/ return __webpack_require__(__webpack_require__.s = "./src/supported-locales.mjs");
|
86
86
|
/******/ })
|
87
87
|
/************************************************************************/
|
88
88
|
/******/ ({
|
89
89
|
|
90
|
-
/***/ "./src/supported-locales.
|
91
|
-
|
92
|
-
!*** ./src/supported-locales.
|
93
|
-
|
90
|
+
/***/ "./src/supported-locales.mjs":
|
91
|
+
/*!***********************************!*\
|
92
|
+
!*** ./src/supported-locales.mjs ***!
|
93
|
+
\***********************************/
|
94
94
|
/*! exports provided: default, customLocales, localeMap, isRtl */
|
95
|
-
/***/ (function(
|
95
|
+
/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) {
|
96
96
|
|
97
97
|
"use strict";
|
98
98
|
__webpack_require__.r(__webpack_exports__);
|
@@ -105,297 +105,147 @@ __webpack_require__.r(__webpack_exports__);
|
|
105
105
|
* @type {Object} Key Value pairs of locale code: Language name written in the language
|
106
106
|
*/
|
107
107
|
|
108
|
-
|
109
|
-
|
110
|
-
name: '
|
111
|
-
|
112
|
-
|
113
|
-
name: '
|
114
|
-
|
115
|
-
|
116
|
-
name: '
|
117
|
-
|
118
|
-
|
119
|
-
name: '
|
120
|
-
|
121
|
-
|
122
|
-
name: '
|
123
|
-
|
124
|
-
|
125
|
-
name: '
|
126
|
-
|
127
|
-
|
128
|
-
name: '
|
129
|
-
|
130
|
-
|
131
|
-
name: '
|
132
|
-
|
133
|
-
|
134
|
-
name: '
|
135
|
-
|
136
|
-
|
137
|
-
name: '
|
138
|
-
|
139
|
-
|
140
|
-
name: '
|
141
|
-
|
142
|
-
|
143
|
-
name: '
|
144
|
-
|
145
|
-
|
146
|
-
name: '
|
147
|
-
|
148
|
-
|
149
|
-
name: '
|
150
|
-
|
151
|
-
|
152
|
-
name: '
|
153
|
-
|
154
|
-
|
155
|
-
name: '
|
156
|
-
|
157
|
-
|
158
|
-
name: '
|
159
|
-
|
160
|
-
|
161
|
-
name: '
|
162
|
-
|
163
|
-
|
164
|
-
name: '
|
165
|
-
|
166
|
-
|
167
|
-
name: '
|
168
|
-
|
169
|
-
|
170
|
-
name: '
|
171
|
-
|
172
|
-
|
173
|
-
name: '
|
174
|
-
|
175
|
-
|
176
|
-
name: '
|
177
|
-
|
178
|
-
|
179
|
-
name: '
|
180
|
-
|
181
|
-
|
182
|
-
name: '
|
183
|
-
|
184
|
-
|
185
|
-
name: '
|
186
|
-
|
187
|
-
|
188
|
-
name: '
|
189
|
-
},
|
190
|
-
'ga': {
|
191
|
-
name: 'Gaeilge'
|
192
|
-
},
|
193
|
-
'gd': {
|
194
|
-
name: 'Gàidhlig'
|
195
|
-
},
|
196
|
-
'gl': {
|
197
|
-
name: 'Galego'
|
198
|
-
},
|
199
|
-
'ko': {
|
200
|
-
name: '한국어'
|
201
|
-
},
|
202
|
-
'ha': {
|
203
|
-
name: 'Hausa'
|
204
|
-
},
|
205
|
-
'hy': {
|
206
|
-
name: 'Հայերեն'
|
207
|
-
},
|
208
|
-
'he': {
|
209
|
-
name: 'עִבְרִית'
|
210
|
-
},
|
211
|
-
'hi': {
|
212
|
-
name: 'हिंदी'
|
213
|
-
},
|
214
|
-
'hr': {
|
215
|
-
name: 'Hrvatski'
|
216
|
-
},
|
217
|
-
'xh': {
|
218
|
-
name: 'isiXhosa'
|
219
|
-
},
|
220
|
-
'zu': {
|
221
|
-
name: 'isiZulu'
|
222
|
-
},
|
223
|
-
'is': {
|
224
|
-
name: 'Íslenska'
|
225
|
-
},
|
226
|
-
'it': {
|
227
|
-
name: 'Italiano'
|
228
|
-
},
|
229
|
-
'ka': {
|
230
|
-
name: 'ქართული ენა'
|
231
|
-
},
|
232
|
-
'kk': {
|
233
|
-
name: 'қазақша'
|
234
|
-
},
|
235
|
-
'qu': {
|
236
|
-
name: 'Kichwa'
|
237
|
-
},
|
238
|
-
'sw': {
|
239
|
-
name: 'Kiswahili'
|
240
|
-
},
|
241
|
-
'ht': {
|
242
|
-
name: 'Kreyòl ayisyen'
|
243
|
-
},
|
244
|
-
'ku': {
|
245
|
-
name: 'Kurdî'
|
246
|
-
},
|
247
|
-
'ckb': {
|
248
|
-
name: 'کوردیی ناوەندی'
|
249
|
-
},
|
250
|
-
'lv': {
|
251
|
-
name: 'Latviešu'
|
252
|
-
},
|
253
|
-
'lt': {
|
254
|
-
name: 'Lietuvių'
|
255
|
-
},
|
256
|
-
'hu': {
|
257
|
-
name: 'Magyar'
|
258
|
-
},
|
259
|
-
'mi': {
|
260
|
-
name: 'Māori'
|
261
|
-
},
|
262
|
-
'mn': {
|
263
|
-
name: 'Монгол хэл'
|
264
|
-
},
|
265
|
-
'nl': {
|
266
|
-
name: 'Nederlands'
|
267
|
-
},
|
268
|
-
'ja': {
|
269
|
-
name: '日本語'
|
270
|
-
},
|
271
|
-
'ja-Hira': {
|
272
|
-
name: 'にほんご'
|
273
|
-
},
|
274
|
-
'nb': {
|
275
|
-
name: 'Norsk Bokmål'
|
276
|
-
},
|
277
|
-
'nn': {
|
278
|
-
name: 'Norsk Nynorsk'
|
279
|
-
},
|
280
|
-
'oc': {
|
281
|
-
name: 'Occitan'
|
282
|
-
},
|
283
|
-
'or': {
|
284
|
-
name: 'ଓଡ଼ିଆ'
|
285
|
-
},
|
286
|
-
'uz': {
|
287
|
-
name: 'Oʻzbekcha'
|
288
|
-
},
|
289
|
-
'th': {
|
290
|
-
name: 'ไทย'
|
291
|
-
},
|
292
|
-
'km': {
|
293
|
-
name: 'ភាសាខ្មែរ'
|
294
|
-
},
|
295
|
-
'pl': {
|
296
|
-
name: 'Polski'
|
297
|
-
},
|
298
|
-
'pt': {
|
299
|
-
name: 'Português'
|
300
|
-
},
|
301
|
-
'pt-br': {
|
302
|
-
name: 'Português Brasileiro'
|
303
|
-
},
|
304
|
-
'rap': {
|
305
|
-
name: 'Rapa Nui'
|
306
|
-
},
|
307
|
-
'ro': {
|
308
|
-
name: 'Română'
|
309
|
-
},
|
310
|
-
'ru': {
|
311
|
-
name: 'Русский'
|
312
|
-
},
|
313
|
-
'nso': {
|
314
|
-
name: 'Sepedi'
|
315
|
-
},
|
316
|
-
'tn': {
|
317
|
-
name: 'Setswana'
|
318
|
-
},
|
319
|
-
'sk': {
|
320
|
-
name: 'Slovenčina'
|
321
|
-
},
|
322
|
-
'sl': {
|
323
|
-
name: 'Slovenščina'
|
324
|
-
},
|
325
|
-
'sr': {
|
326
|
-
name: 'Српски'
|
327
|
-
},
|
328
|
-
'fi': {
|
329
|
-
name: 'Suomi'
|
330
|
-
},
|
331
|
-
'sv': {
|
332
|
-
name: 'Svenska'
|
333
|
-
},
|
334
|
-
'vi': {
|
335
|
-
name: 'Tiếng Việt'
|
336
|
-
},
|
337
|
-
'tr': {
|
338
|
-
name: 'Türkçe'
|
339
|
-
},
|
340
|
-
'uk': {
|
341
|
-
name: 'Українська'
|
342
|
-
},
|
343
|
-
'zh-cn': {
|
344
|
-
name: '简体中文'
|
345
|
-
},
|
346
|
-
'zh-tw': {
|
347
|
-
name: '繁體中文'
|
348
|
-
}
|
108
|
+
const locales = {
|
109
|
+
'ab': {name: 'Аҧсшәа'},
|
110
|
+
'af': {name: 'Afrikaans'},
|
111
|
+
'ar': {name: 'العربية'},
|
112
|
+
'am': {name: 'አማርኛ'},
|
113
|
+
'an': {name: 'Aragonés'},
|
114
|
+
'ast': {name: 'Asturianu'},
|
115
|
+
'az': {name: 'Azeri'},
|
116
|
+
'id': {name: 'Bahasa Indonesia'},
|
117
|
+
'bn': {name: 'বাংলা'},
|
118
|
+
'be': {name: 'Беларуская'},
|
119
|
+
'bg': {name: 'Български'},
|
120
|
+
'ca': {name: 'Català'},
|
121
|
+
'cs': {name: 'Česky'},
|
122
|
+
'cy': {name: 'Cymraeg'},
|
123
|
+
'da': {name: 'Dansk'},
|
124
|
+
'de': {name: 'Deutsch'},
|
125
|
+
'et': {name: 'Eesti'},
|
126
|
+
'el': {name: 'Ελληνικά'},
|
127
|
+
'en': {name: 'English'},
|
128
|
+
'es': {name: 'Español (España)'},
|
129
|
+
'es-419': {name: 'Español Latinoamericano'},
|
130
|
+
'eo': {name: 'Esperanto'},
|
131
|
+
'eu': {name: 'Euskara'},
|
132
|
+
'fa': {name: 'فارسی'},
|
133
|
+
'fil': {name: 'Filipino'},
|
134
|
+
'fr': {name: 'Français'},
|
135
|
+
'fy': {name: 'Frysk'},
|
136
|
+
'ga': {name: 'Gaeilge'},
|
137
|
+
'gd': {name: 'Gàidhlig'},
|
138
|
+
'gl': {name: 'Galego'},
|
139
|
+
'ko': {name: '한국어'},
|
140
|
+
'ha': {name: 'Hausa'},
|
141
|
+
'hy': {name: 'Հայերեն'},
|
142
|
+
'he': {name: 'עִבְרִית'},
|
143
|
+
'hi': {name: 'हिंदी'},
|
144
|
+
'hr': {name: 'Hrvatski'},
|
145
|
+
'xh': {name: 'isiXhosa'},
|
146
|
+
'zu': {name: 'isiZulu'},
|
147
|
+
'is': {name: 'Íslenska'},
|
148
|
+
'it': {name: 'Italiano'},
|
149
|
+
'ka': {name: 'ქართული ენა'},
|
150
|
+
'kk': {name: 'қазақша'},
|
151
|
+
'qu': {name: 'Kichwa'},
|
152
|
+
'sw': {name: 'Kiswahili'},
|
153
|
+
'ht': {name: 'Kreyòl ayisyen'},
|
154
|
+
'ku': {name: 'Kurdî'},
|
155
|
+
'ckb': {name: 'کوردیی ناوەندی'},
|
156
|
+
'lv': {name: 'Latviešu'},
|
157
|
+
'lt': {name: 'Lietuvių'},
|
158
|
+
'hu': {name: 'Magyar'},
|
159
|
+
'mi': {name: 'Māori'},
|
160
|
+
'mn': {name: 'Монгол хэл'},
|
161
|
+
'nl': {name: 'Nederlands'},
|
162
|
+
'ja': {name: '日本語'},
|
163
|
+
'ja-Hira': {name: 'にほんご'},
|
164
|
+
'nb': {name: 'Norsk Bokmål'},
|
165
|
+
'nn': {name: 'Norsk Nynorsk'},
|
166
|
+
'oc': {name: 'Occitan'},
|
167
|
+
'or': {name: 'ଓଡ଼ିଆ'},
|
168
|
+
'uz': {name: 'Oʻzbekcha'},
|
169
|
+
'th': {name: 'ไทย'},
|
170
|
+
'km': {name: 'ភាសាខ្មែរ'},
|
171
|
+
'pl': {name: 'Polski'},
|
172
|
+
'pt': {name: 'Português'},
|
173
|
+
'pt-br': {name: 'Português Brasileiro'},
|
174
|
+
'rap': {name: 'Rapa Nui'},
|
175
|
+
'ro': {name: 'Română'},
|
176
|
+
'ru': {name: 'Русский'},
|
177
|
+
'nso': {name: 'Sepedi'},
|
178
|
+
'tn': {name: 'Setswana'},
|
179
|
+
'sk': {name: 'Slovenčina'},
|
180
|
+
'sl': {name: 'Slovenščina'},
|
181
|
+
'sr': {name: 'Српски'},
|
182
|
+
'fi': {name: 'Suomi'},
|
183
|
+
'sv': {name: 'Svenska'},
|
184
|
+
'vi': {name: 'Tiếng Việt'},
|
185
|
+
'tr': {name: 'Türkçe'},
|
186
|
+
'uk': {name: 'Українська'},
|
187
|
+
'zh-cn': {name: '简体中文'},
|
188
|
+
'zh-tw': {name: '繁體中文'}
|
349
189
|
};
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
190
|
+
|
191
|
+
const customLocales = {
|
192
|
+
'ab': {
|
193
|
+
locale: 'ab',
|
194
|
+
parentLocale: 'ru'
|
195
|
+
},
|
196
|
+
// Aragonese is not in the locale data, using es for Spain
|
197
|
+
'an': {
|
198
|
+
locale: 'an',
|
199
|
+
parentLocale: 'es'
|
200
|
+
},
|
201
|
+
// haitian creole is not in locale-langData
|
202
|
+
'ht': {
|
203
|
+
locale: 'ht',
|
204
|
+
parentLocale: 'fr'
|
205
|
+
},
|
206
|
+
'oc': {
|
207
|
+
locale: 'oc',
|
208
|
+
parentLocale: 'fr'
|
209
|
+
},
|
210
|
+
'rap': {
|
211
|
+
locale: 'rap',
|
212
|
+
parentLocale: 'es'
|
213
|
+
},
|
214
|
+
// TODO: replace zh-cn, zh-tw with zh-Hans and zh-Hant then customLocales is unnecessary
|
215
|
+
'zh-cn': {
|
216
|
+
locale: 'zh-cn',
|
217
|
+
parentLocale: 'zh'
|
218
|
+
},
|
219
|
+
'zh-tw': {
|
220
|
+
locale: 'zh-tw',
|
221
|
+
parentLocale: 'zh'
|
222
|
+
}
|
382
223
|
};
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
224
|
+
|
225
|
+
const localeMap = {
|
226
|
+
'aa-dj': 'aa_DJ',
|
227
|
+
'es-419': 'es_419',
|
228
|
+
// ja-Hira: no map - it's 'ja-Hira' on transifex
|
229
|
+
'pt-br': 'pt_BR',
|
230
|
+
'zh-cn': 'zh_CN',
|
231
|
+
'zh-tw': 'zh_TW'
|
390
232
|
};
|
391
233
|
|
392
234
|
// list of RTL locales supported, and a function to check whether a locale is RTL
|
393
|
-
|
394
|
-
|
395
|
-
|
235
|
+
const rtlLocales = [
|
236
|
+
'ar',
|
237
|
+
'ckb',
|
238
|
+
'fa',
|
239
|
+
'he'
|
240
|
+
];
|
241
|
+
|
242
|
+
const isRtl = locale => {
|
243
|
+
return rtlLocales.indexOf(locale) !== -1;
|
396
244
|
};
|
397
245
|
|
398
246
|
|
247
|
+
|
248
|
+
|
399
249
|
/***/ })
|
400
250
|
|
401
251
|
/******/ });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"supportedLocales.js","sources":["webpack:///webpack/bootstrap","webpack:///./src/supported-locales.
|
1
|
+
{"version":3,"file":"supportedLocales.js","sources":["webpack:///webpack/bootstrap","webpack:///./src/supported-locales.mjs"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/supported-locales.mjs\");\n","/**\n * Currently supported locales for the Scratch Project\n * @type {Object} Key Value pairs of locale code: Language name written in the language\n */\n\nconst locales = {\n 'ab': {name: 'Аҧсшәа'},\n 'af': {name: 'Afrikaans'},\n 'ar': {name: 'العربية'},\n 'am': {name: 'አማርኛ'},\n 'an': {name: 'Aragonés'},\n 'ast': {name: 'Asturianu'},\n 'az': {name: 'Azeri'},\n 'id': {name: 'Bahasa Indonesia'},\n 'bn': {name: 'বাংলা'},\n 'be': {name: 'Беларуская'},\n 'bg': {name: 'Български'},\n 'ca': {name: 'Català'},\n 'cs': {name: 'Česky'},\n 'cy': {name: 'Cymraeg'},\n 'da': {name: 'Dansk'},\n 'de': {name: 'Deutsch'},\n 'et': {name: 'Eesti'},\n 'el': {name: 'Ελληνικά'},\n 'en': {name: 'English'},\n 'es': {name: 'Español (España)'},\n 'es-419': {name: 'Español Latinoamericano'},\n 'eo': {name: 'Esperanto'},\n 'eu': {name: 'Euskara'},\n 'fa': {name: 'فارسی'},\n 'fil': {name: 'Filipino'},\n 'fr': {name: 'Français'},\n 'fy': {name: 'Frysk'},\n 'ga': {name: 'Gaeilge'},\n 'gd': {name: 'Gàidhlig'},\n 'gl': {name: 'Galego'},\n 'ko': {name: '한국어'},\n 'ha': {name: 'Hausa'},\n 'hy': {name: 'Հայերեն'},\n 'he': {name: 'עִבְרִית'},\n 'hi': {name: 'हिंदी'},\n 'hr': {name: 'Hrvatski'},\n 'xh': {name: 'isiXhosa'},\n 'zu': {name: 'isiZulu'},\n 'is': {name: 'Íslenska'},\n 'it': {name: 'Italiano'},\n 'ka': {name: 'ქართული ენა'},\n 'kk': {name: 'қазақша'},\n 'qu': {name: 'Kichwa'},\n 'sw': {name: 'Kiswahili'},\n 'ht': {name: 'Kreyòl ayisyen'},\n 'ku': {name: 'Kurdî'},\n 'ckb': {name: 'کوردیی ناوەندی'},\n 'lv': {name: 'Latviešu'},\n 'lt': {name: 'Lietuvių'},\n 'hu': {name: 'Magyar'},\n 'mi': {name: 'Māori'},\n 'mn': {name: 'Монгол хэл'},\n 'nl': {name: 'Nederlands'},\n 'ja': {name: '日本語'},\n 'ja-Hira': {name: 'にほんご'},\n 'nb': {name: 'Norsk Bokmål'},\n 'nn': {name: 'Norsk Nynorsk'},\n 'oc': {name: 'Occitan'},\n 'or': {name: 'ଓଡ଼ିଆ'},\n 'uz': {name: 'Oʻzbekcha'},\n 'th': {name: 'ไทย'},\n 'km': {name: 'ភាសាខ្មែរ'},\n 'pl': {name: 'Polski'},\n 'pt': {name: 'Português'},\n 'pt-br': {name: 'Português Brasileiro'},\n 'rap': {name: 'Rapa Nui'},\n 'ro': {name: 'Română'},\n 'ru': {name: 'Русский'},\n 'nso': {name: 'Sepedi'},\n 'tn': {name: 'Setswana'},\n 'sk': {name: 'Slovenčina'},\n 'sl': {name: 'Slovenščina'},\n 'sr': {name: 'Српски'},\n 'fi': {name: 'Suomi'},\n 'sv': {name: 'Svenska'},\n 'vi': {name: 'Tiếng Việt'},\n 'tr': {name: 'Türkçe'},\n 'uk': {name: 'Українська'},\n 'zh-cn': {name: '简体中文'},\n 'zh-tw': {name: '繁體中文'}\n};\n\nconst customLocales = {\n 'ab': {\n locale: 'ab',\n parentLocale: 'ru'\n },\n // Aragonese is not in the locale data, using es for Spain\n 'an': {\n locale: 'an',\n parentLocale: 'es'\n },\n // haitian creole is not in locale-langData\n 'ht': {\n locale: 'ht',\n parentLocale: 'fr'\n },\n 'oc': {\n locale: 'oc',\n parentLocale: 'fr'\n },\n 'rap': {\n locale: 'rap',\n parentLocale: 'es'\n },\n // TODO: replace zh-cn, zh-tw with zh-Hans and zh-Hant then customLocales is unnecessary\n 'zh-cn': {\n locale: 'zh-cn',\n parentLocale: 'zh'\n },\n 'zh-tw': {\n locale: 'zh-tw',\n parentLocale: 'zh'\n }\n};\n\nconst localeMap = {\n 'aa-dj': 'aa_DJ',\n 'es-419': 'es_419',\n // ja-Hira: no map - it's 'ja-Hira' on transifex\n 'pt-br': 'pt_BR',\n 'zh-cn': 'zh_CN',\n 'zh-tw': 'zh_TW'\n};\n\n// list of RTL locales supported, and a function to check whether a locale is RTL\nconst rtlLocales = [\n 'ar',\n 'ckb',\n 'fa',\n 'he'\n];\n\nconst isRtl = locale => {\n return rtlLocales.indexOf(locale) !== -1;\n};\n\nexport {locales as default, customLocales, localeMap, isRtl};\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;A","sourceRoot":""}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
/**
|
2
|
+
* Helper class to log progress.
|
3
|
+
*/
|
4
|
+
export class ProgressLogger {
|
5
|
+
/**
|
6
|
+
* @param {number} [total] Optional: expected total number of items to process.
|
7
|
+
*/
|
8
|
+
constructor (total) {
|
9
|
+
this.total = total;
|
10
|
+
this.completed = 0;
|
11
|
+
}
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Set the expected total number of items to process.
|
15
|
+
* @param {number} total Total number of items to process.
|
16
|
+
*/
|
17
|
+
setTotal (total) {
|
18
|
+
if (this.total !== total) {
|
19
|
+
this.total = total;
|
20
|
+
delete this.percent;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Increment the number of items processed and log progress.
|
26
|
+
* If a total is set, progress is logged as a percentage and only when the percentage changes.
|
27
|
+
* If no total is set, progress is logged as a count.
|
28
|
+
* @param {number} [count=1] Number of items processed.
|
29
|
+
*/
|
30
|
+
increment (count = 1) {
|
31
|
+
this.completed += count;
|
32
|
+
if (this.total) {
|
33
|
+
const percent = Math.floor(100 * this.completed / this.total);
|
34
|
+
if (percent !== this.percent) {
|
35
|
+
this.percent = percent;
|
36
|
+
console.info(`Progress: ${this.percent}% (${this.completed}/${this.total})`);
|
37
|
+
}
|
38
|
+
} else {
|
39
|
+
console.info(`Progress: ${this.completed} of unknown total`);
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|