Completed
Push — master ( be0721...cced22 )
by Matthew
02:48
created

web/static/js/vendor/jquery.i18n/jquery.i18n.language.js   A

Complexity

Total Complexity 33
Complexity/F 4.13

Size

Lines of Code 833
Function Count 8

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 0
wmc 33
nc 32
mnd 3
bc 29
fnc 8
dl 0
loc 833
rs 9.3999
bpm 3.625
cpm 4.125
noi 2
c 0
b 0
f 0
1
/*global pluralRuleParser */
2
( function ( $ ) {
3
	'use strict';
4
5
	// jscs:disable
6
	var language = {
7
		// CLDR plural rules generated using
8
		// libs/CLDRPluralRuleParser/tools/PluralXML2JSON.html
9
		'pluralRules': {
10
			'af': {
11
				'one': 'n = 1'
12
			},
13
			'ak': {
14
				'one': 'n = 0..1'
15
			},
16
			'am': {
17
				'one': 'i = 0 or n = 1'
18
			},
19
			'ar': {
20
				'zero': 'n = 0',
21
				'one': 'n = 1',
22
				'two': 'n = 2',
23
				'few': 'n % 100 = 3..10',
24
				'many': 'n % 100 = 11..99'
25
			},
26
			'ars': {
27
				'zero': 'n = 0',
28
				'one': 'n = 1',
29
				'two': 'n = 2',
30
				'few': 'n % 100 = 3..10',
31
				'many': 'n % 100 = 11..99'
32
			},
33
			'as': {
34
				'one': 'i = 0 or n = 1'
35
			},
36
			'asa': {
37
				'one': 'n = 1'
38
			},
39
			'ast': {
40
				'one': 'i = 1 and v = 0'
41
			},
42
			'az': {
43
				'one': 'n = 1'
44
			},
45
			'be': {
46
				'one': 'n % 10 = 1 and n % 100 != 11',
47
				'few': 'n % 10 = 2..4 and n % 100 != 12..14',
48
				'many': 'n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14'
49
			},
50
			'bem': {
51
				'one': 'n = 1'
52
			},
53
			'bez': {
54
				'one': 'n = 1'
55
			},
56
			'bg': {
57
				'one': 'n = 1'
58
			},
59
			'bh': {
60
				'one': 'n = 0..1'
61
			},
62
			'bm': {},
63
			'bn': {
64
				'one': 'i = 0 or n = 1'
65
			},
66
			'bo': {},
67
			'br': {
68
				'one': 'n % 10 = 1 and n % 100 != 11,71,91',
69
				'two': 'n % 10 = 2 and n % 100 != 12,72,92',
70
				'few': 'n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99',
71
				'many': 'n != 0 and n % 1000000 = 0'
72
			},
73
			'brx': {
74
				'one': 'n = 1'
75
			},
76
			'bs': {
77
				'one': 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
78
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
79
			},
80
			'ca': {
81
				'one': 'i = 1 and v = 0'
82
			},
83
			'ce': {
84
				'one': 'n = 1'
85
			},
86
			'cgg': {
87
				'one': 'n = 1'
88
			},
89
			'chr': {
90
				'one': 'n = 1'
91
			},
92
			'ckb': {
93
				'one': 'n = 1'
94
			},
95
			'cs': {
96
				'one': 'i = 1 and v = 0',
97
				'few': 'i = 2..4 and v = 0',
98
				'many': 'v != 0'
99
			},
100
			'cy': {
101
				'zero': 'n = 0',
102
				'one': 'n = 1',
103
				'two': 'n = 2',
104
				'few': 'n = 3',
105
				'many': 'n = 6'
106
			},
107
			'da': {
108
				'one': 'n = 1 or t != 0 and i = 0,1'
109
			},
110
			'de': {
111
				'one': 'i = 1 and v = 0'
112
			},
113
			'dsb': {
114
				'one': 'v = 0 and i % 100 = 1 or f % 100 = 1',
115
				'two': 'v = 0 and i % 100 = 2 or f % 100 = 2',
116
				'few': 'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'
117
			},
118
			'dv': {
119
				'one': 'n = 1'
120
			},
121
			'dz': {},
122
			'ee': {
123
				'one': 'n = 1'
124
			},
125
			'el': {
126
				'one': 'n = 1'
127
			},
128
			'en': {
129
				'one': 'i = 1 and v = 0'
130
			},
131
			'eo': {
132
				'one': 'n = 1'
133
			},
134
			'es': {
135
				'one': 'n = 1'
136
			},
137
			'et': {
138
				'one': 'i = 1 and v = 0'
139
			},
140
			'eu': {
141
				'one': 'n = 1'
142
			},
143
			'fa': {
144
				'one': 'i = 0 or n = 1'
145
			},
146
			'ff': {
147
				'one': 'i = 0,1'
148
			},
149
			'fi': {
150
				'one': 'i = 1 and v = 0'
151
			},
152
			'fil': {
153
				'one': 'v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9'
154
			},
155
			'fo': {
156
				'one': 'n = 1'
157
			},
158
			'fr': {
159
				'one': 'i = 0,1'
160
			},
161
			'fur': {
162
				'one': 'n = 1'
163
			},
164
			'fy': {
165
				'one': 'i = 1 and v = 0'
166
			},
167
			'ga': {
168
				'one': 'n = 1',
169
				'two': 'n = 2',
170
				'few': 'n = 3..6',
171
				'many': 'n = 7..10'
172
			},
173
			'gd': {
174
				'one': 'n = 1,11',
175
				'two': 'n = 2,12',
176
				'few': 'n = 3..10,13..19'
177
			},
178
			'gl': {
179
				'one': 'i = 1 and v = 0'
180
			},
181
			'gsw': {
182
				'one': 'n = 1'
183
			},
184
			'gu': {
185
				'one': 'i = 0 or n = 1'
186
			},
187
			'guw': {
188
				'one': 'n = 0..1'
189
			},
190
			'gv': {
191
				'one': 'v = 0 and i % 10 = 1',
192
				'two': 'v = 0 and i % 10 = 2',
193
				'few': 'v = 0 and i % 100 = 0,20,40,60,80',
194
				'many': 'v != 0'
195
			},
196
			'ha': {
197
				'one': 'n = 1'
198
			},
199
			'haw': {
200
				'one': 'n = 1'
201
			},
202
			'he': {
203
				'one': 'i = 1 and v = 0',
204
				'two': 'i = 2 and v = 0',
205
				'many': 'v = 0 and n != 0..10 and n % 10 = 0'
206
			},
207
			'hi': {
208
				'one': 'i = 0 or n = 1'
209
			},
210
			'hr': {
211
				'one': 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
212
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
213
			},
214
			'hsb': {
215
				'one': 'v = 0 and i % 100 = 1 or f % 100 = 1',
216
				'two': 'v = 0 and i % 100 = 2 or f % 100 = 2',
217
				'few': 'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'
218
			},
219
			'hu': {
220
				'one': 'n = 1'
221
			},
222
			'hy': {
223
				'one': 'i = 0,1'
224
			},
225
			'id': {},
226
			'ig': {},
227
			'ii': {},
228
			'in': {},
229
			'is': {
230
				'one': 't = 0 and i % 10 = 1 and i % 100 != 11 or t != 0'
231
			},
232
			'it': {
233
				'one': 'i = 1 and v = 0'
234
			},
235
			'iu': {
236
				'one': 'n = 1',
237
				'two': 'n = 2'
238
			},
239
			'iw': {
240
				'one': 'i = 1 and v = 0',
241
				'two': 'i = 2 and v = 0',
242
				'many': 'v = 0 and n != 0..10 and n % 10 = 0'
243
			},
244
			'ja': {},
245
			'jbo': {},
246
			'jgo': {
247
				'one': 'n = 1'
248
			},
249
			'ji': {
250
				'one': 'i = 1 and v = 0'
251
			},
252
			'jmc': {
253
				'one': 'n = 1'
254
			},
255
			'jv': {},
256
			'jw': {},
257
			'ka': {
258
				'one': 'n = 1'
259
			},
260
			'kab': {
261
				'one': 'i = 0,1'
262
			},
263
			'kaj': {
264
				'one': 'n = 1'
265
			},
266
			'kcg': {
267
				'one': 'n = 1'
268
			},
269
			'kde': {},
270
			'kea': {},
271
			'kk': {
272
				'one': 'n = 1'
273
			},
274
			'kkj': {
275
				'one': 'n = 1'
276
			},
277
			'kl': {
278
				'one': 'n = 1'
279
			},
280
			'km': {},
281
			'kn': {
282
				'one': 'i = 0 or n = 1'
283
			},
284
			'ko': {},
285
			'ks': {
286
				'one': 'n = 1'
287
			},
288
			'ksb': {
289
				'one': 'n = 1'
290
			},
291
			'ksh': {
292
				'zero': 'n = 0',
293
				'one': 'n = 1'
294
			},
295
			'ku': {
296
				'one': 'n = 1'
297
			},
298
			'kw': {
299
				'one': 'n = 1',
300
				'two': 'n = 2'
301
			},
302
			'ky': {
303
				'one': 'n = 1'
304
			},
305
			'lag': {
306
				'zero': 'n = 0',
307
				'one': 'i = 0,1 and n != 0'
308
			},
309
			'lb': {
310
				'one': 'n = 1'
311
			},
312
			'lg': {
313
				'one': 'n = 1'
314
			},
315
			'lkt': {},
316
			'ln': {
317
				'one': 'n = 0..1'
318
			},
319
			'lo': {},
320
			'lt': {
321
				'one': 'n % 10 = 1 and n % 100 != 11..19',
322
				'few': 'n % 10 = 2..9 and n % 100 != 11..19',
323
				'many': 'f != 0'
324
			},
325
			'lv': {
326
				'zero': 'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19',
327
				'one': 'n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1'
328
			},
329
			'mas': {
330
				'one': 'n = 1'
331
			},
332
			'mg': {
333
				'one': 'n = 0..1'
334
			},
335
			'mgo': {
336
				'one': 'n = 1'
337
			},
338
			'mk': {
339
				'one': 'v = 0 and i % 10 = 1 or f % 10 = 1'
340
			},
341
			'ml': {
342
				'one': 'n = 1'
343
			},
344
			'mn': {
345
				'one': 'n = 1'
346
			},
347
			'mo': {
348
				'one': 'i = 1 and v = 0',
349
				'few': 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
350
			},
351
			'mr': {
352
				'one': 'i = 0 or n = 1'
353
			},
354
			'ms': {},
355
			'mt': {
356
				'one': 'n = 1',
357
				'few': 'n = 0 or n % 100 = 2..10',
358
				'many': 'n % 100 = 11..19'
359
			},
360
			'my': {},
361
			'nah': {
362
				'one': 'n = 1'
363
			},
364
			'naq': {
365
				'one': 'n = 1',
366
				'two': 'n = 2'
367
			},
368
			'nb': {
369
				'one': 'n = 1'
370
			},
371
			'nd': {
372
				'one': 'n = 1'
373
			},
374
			'ne': {
375
				'one': 'n = 1'
376
			},
377
			'nl': {
378
				'one': 'i = 1 and v = 0'
379
			},
380
			'nn': {
381
				'one': 'n = 1'
382
			},
383
			'nnh': {
384
				'one': 'n = 1'
385
			},
386
			'no': {
387
				'one': 'n = 1'
388
			},
389
			'nqo': {},
390
			'nr': {
391
				'one': 'n = 1'
392
			},
393
			'nso': {
394
				'one': 'n = 0..1'
395
			},
396
			'ny': {
397
				'one': 'n = 1'
398
			},
399
			'nyn': {
400
				'one': 'n = 1'
401
			},
402
			'om': {
403
				'one': 'n = 1'
404
			},
405
			'or': {
406
				'one': 'n = 1'
407
			},
408
			'os': {
409
				'one': 'n = 1'
410
			},
411
			'pa': {
412
				'one': 'n = 0..1'
413
			},
414
			'pap': {
415
				'one': 'n = 1'
416
			},
417
			'pl': {
418
				'one': 'i = 1 and v = 0',
419
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
420
				'many': 'v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14'
421
			},
422
			'prg': {
423
				'zero': 'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19',
424
				'one': 'n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1'
425
			},
426
			'ps': {
427
				'one': 'n = 1'
428
			},
429
			'pt': {
430
				'one': 'n = 0..2 and n != 2'
431
			},
432
			'pt-PT': {
433
				'one': 'n = 1 and v = 0'
434
			},
435
			'rm': {
436
				'one': 'n = 1'
437
			},
438
			'ro': {
439
				'one': 'i = 1 and v = 0',
440
				'few': 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
441
			},
442
			'rof': {
443
				'one': 'n = 1'
444
			},
445
			'root': {},
446
			'ru': {
447
				'one': 'v = 0 and i % 10 = 1 and i % 100 != 11',
448
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
449
				'many': 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
450
			},
451
			'rwk': {
452
				'one': 'n = 1'
453
			},
454
			'sah': {},
455
			'saq': {
456
				'one': 'n = 1'
457
			},
458
			'sdh': {
459
				'one': 'n = 1'
460
			},
461
			'se': {
462
				'one': 'n = 1',
463
				'two': 'n = 2'
464
			},
465
			'seh': {
466
				'one': 'n = 1'
467
			},
468
			'ses': {},
469
			'sg': {},
470
			'sh': {
471
				'one': 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
472
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
473
			},
474
			'shi': {
475
				'one': 'i = 0 or n = 1',
476
				'few': 'n = 2..10'
477
			},
478
			'si': {
479
				'one': 'n = 0,1 or i = 0 and f = 1'
480
			},
481
			'sk': {
482
				'one': 'i = 1 and v = 0',
483
				'few': 'i = 2..4 and v = 0',
484
				'many': 'v != 0'
485
			},
486
			'sl': {
487
				'one': 'v = 0 and i % 100 = 1',
488
				'two': 'v = 0 and i % 100 = 2',
489
				'few': 'v = 0 and i % 100 = 3..4 or v != 0'
490
			},
491
			'sma': {
492
				'one': 'n = 1',
493
				'two': 'n = 2'
494
			},
495
			'smi': {
496
				'one': 'n = 1',
497
				'two': 'n = 2'
498
			},
499
			'smj': {
500
				'one': 'n = 1',
501
				'two': 'n = 2'
502
			},
503
			'smn': {
504
				'one': 'n = 1',
505
				'two': 'n = 2'
506
			},
507
			'sms': {
508
				'one': 'n = 1',
509
				'two': 'n = 2'
510
			},
511
			'sn': {
512
				'one': 'n = 1'
513
			},
514
			'so': {
515
				'one': 'n = 1'
516
			},
517
			'sq': {
518
				'one': 'n = 1'
519
			},
520
			'sr': {
521
				'one': 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',
522
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
523
			},
524
			'ss': {
525
				'one': 'n = 1'
526
			},
527
			'ssy': {
528
				'one': 'n = 1'
529
			},
530
			'st': {
531
				'one': 'n = 1'
532
			},
533
			'sv': {
534
				'one': 'i = 1 and v = 0'
535
			},
536
			'sw': {
537
				'one': 'i = 1 and v = 0'
538
			},
539
			'syr': {
540
				'one': 'n = 1'
541
			},
542
			'ta': {
543
				'one': 'n = 1'
544
			},
545
			'te': {
546
				'one': 'n = 1'
547
			},
548
			'teo': {
549
				'one': 'n = 1'
550
			},
551
			'th': {},
552
			'ti': {
553
				'one': 'n = 0..1'
554
			},
555
			'tig': {
556
				'one': 'n = 1'
557
			},
558
			'tk': {
559
				'one': 'n = 1'
560
			},
561
			'tl': {
562
				'one': 'v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9'
563
			},
564
			'tn': {
565
				'one': 'n = 1'
566
			},
567
			'to': {},
568
			'tr': {
569
				'one': 'n = 1'
570
			},
571
			'ts': {
572
				'one': 'n = 1'
573
			},
574
			'tzm': {
575
				'one': 'n = 0..1 or n = 11..99'
576
			},
577
			'ug': {
578
				'one': 'n = 1'
579
			},
580
			'uk': {
581
				'one': 'v = 0 and i % 10 = 1 and i % 100 != 11',
582
				'few': 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',
583
				'many': 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
584
			},
585
			'ur': {
586
				'one': 'i = 1 and v = 0'
587
			},
588
			'uz': {
589
				'one': 'n = 1'
590
			},
591
			've': {
592
				'one': 'n = 1'
593
			},
594
			'vi': {},
595
			'vo': {
596
				'one': 'n = 1'
597
			},
598
			'vun': {
599
				'one': 'n = 1'
600
			},
601
			'wa': {
602
				'one': 'n = 0..1'
603
			},
604
			'wae': {
605
				'one': 'n = 1'
606
			},
607
			'wo': {},
608
			'xh': {
609
				'one': 'n = 1'
610
			},
611
			'xog': {
612
				'one': 'n = 1'
613
			},
614
			'yi': {
615
				'one': 'i = 1 and v = 0'
616
			},
617
			'yo': {},
618
			'yue': {},
619
			'zh': {},
620
			'zu': {
621
				'one': 'i = 0 or n = 1'
622
			}
623
		},
624
		// jscs:enable
625
626
		/**
627
		 * Plural form transformations, needed for some languages.
628
		 *
629
		 * @param {integer} count
630
		 *            Non-localized quantifier
631
		 * @param {Array} forms
632
		 *            List of plural forms
633
		 * @return {string} Correct form for quantifier in this language
634
		 */
635
		convertPlural: function ( count, forms ) {
636
			var pluralRules,
637
				pluralFormIndex,
638
				index,
639
				explicitPluralPattern = new RegExp( '\\d+=', 'i' ),
640
				formCount,
641
				form;
642
643
			if ( !forms || forms.length === 0 ) {
644
				return '';
645
			}
646
647
			// Handle for Explicit 0= & 1= values
648
			for ( index = 0; index < forms.length; index++ ) {
649
				form = forms[ index ];
650
				if ( explicitPluralPattern.test( form ) ) {
651
					formCount = parseInt( form.slice( 0, form.indexOf( '=' ) ), 10 );
652
					if ( formCount === count ) {
653
						return ( form.slice( form.indexOf( '=' ) + 1 ) );
654
					}
655
					forms[ index ] = undefined;
656
				}
657
			}
658
659
			forms = $.map( forms, function ( form ) {
660
				if ( form !== undefined ) {
661
					return form;
662
				}
663
			} );
664
665
			pluralRules = this.pluralRules[ $.i18n().locale ];
666
667
			if ( !pluralRules ) {
668
				// default fallback.
669
				return ( count === 1 ) ? forms[ 0 ] : forms[ 1 ];
670
			}
671
672
			pluralFormIndex = this.getPluralForm( count, pluralRules );
673
			pluralFormIndex = Math.min( pluralFormIndex, forms.length - 1 );
674
675
			return forms[ pluralFormIndex ];
676
		},
677
678
		/**
679
		 * For the number, get the plural for index
680
		 *
681
		 * @param {integer} number
682
		 * @param {Object} pluralRules
683
		 * @return {integer} plural form index
684
		 */
685
		getPluralForm: function ( number, pluralRules ) {
686
			var i,
687
				pluralForms = [ 'zero', 'one', 'two', 'few', 'many', 'other' ],
688
				pluralFormIndex = 0;
689
690
			for ( i = 0; i < pluralForms.length; i++ ) {
691
				if ( pluralRules[ pluralForms[ i ] ] ) {
692
					if ( pluralRuleParser( pluralRules[ pluralForms[ i ] ], number ) ) {
693
						return pluralFormIndex;
694
					}
695
696
					pluralFormIndex++;
697
				}
698
			}
699
700
			return pluralFormIndex;
701
		},
702
703
		/**
704
		 * Converts a number using digitTransformTable.
705
		 *
706
		 * @param {number} num Value to be converted
707
		 * @param {boolean} integer Convert the return value to an integer
708
		 */
709
		convertNumber: function ( num, integer ) {
710
			var tmp, item, i,
711
				transformTable, numberString, convertedNumber;
712
713
			// Set the target Transform table:
714
			transformTable = this.digitTransformTable( $.i18n().locale );
715
			numberString = String( num );
716
			convertedNumber = '';
717
718
			if ( !transformTable ) {
719
				return num;
720
			}
721
722
			// Check if the restore to Latin number flag is set:
723
			if ( integer ) {
724
				if ( parseFloat( num, 10 ) === num ) {
725
					return num;
726
				}
727
728
				tmp = [];
729
730
				for ( item in transformTable ) {
731
					tmp[ transformTable[ item ] ] = item;
732
				}
733
734
				transformTable = tmp;
735
			}
736
737
			for ( i = 0; i < numberString.length; i++ ) {
738
				if ( transformTable[ numberString[ i ] ] ) {
739
					convertedNumber += transformTable[ numberString[ i ] ];
740
				} else {
741
					convertedNumber += numberString[ i ];
742
				}
743
			}
744
745
			return integer ? parseFloat( convertedNumber, 10 ) : convertedNumber;
746
		},
747
748
		/**
749
		 * Grammatical transformations, needed for inflected languages.
750
		 * Invoked by putting {{grammar:form|word}} in a message.
751
		 * Override this method for languages that need special grammar rules
752
		 * applied dynamically.
753
		 *
754
		 * @param {string} word
755
		 * @param {string} form
756
		 * @return {string}
757
		 */
758
		convertGrammar: function ( word, form ) { /*jshint unused: false */
759
			return word;
760
		},
761
762
		/**
763
		 * Provides an alternative text depending on specified gender. Usage
764
		 * {{gender:[gender|user object]|masculine|feminine|neutral}}. If second
765
		 * or third parameter are not specified, masculine is used.
766
		 *
767
		 * These details may be overriden per language.
768
		 *
769
		 * @param {string} gender
770
		 *      male, female, or anything else for neutral.
771
		 * @param {Array} forms
772
		 *      List of gender forms
773
		 *
774
		 * @return {string}
775
		 */
776
		gender: function ( gender, forms ) {
777
			if ( !forms || forms.length === 0 ) {
778
				return '';
779
			}
780
781
			while ( forms.length < 2 ) {
782
				forms.push( forms[ forms.length - 1 ] );
783
			}
784
785
			if ( gender === 'male' ) {
786
				return forms[ 0 ];
787
			}
788
789
			if ( gender === 'female' ) {
790
				return forms[ 1 ];
791
			}
792
793
			return ( forms.length === 3 ) ? forms[ 2 ] : forms[ 0 ];
794
		},
795
796
		/**
797
		 * Get the digit transform table for the given language
798
		 * See http://cldr.unicode.org/translation/numbering-systems
799
		 *
800
		 * @param {string} language
801
		 * @return {Array|boolean} List of digits in the passed language or false
802
		 * representation, or boolean false if there is no information.
803
		 */
804
		digitTransformTable: function ( language ) {
805
			var tables = {
806
				ar: '٠١٢٣٤٥٦٧٨٩',
807
				fa: '۰۱۲۳۴۵۶۷۸۹',
808
				ml: '൦൧൨൩൪൫൬൭൮൯',
809
				kn: '೦೧೨೩೪೫೬೭೮೯',
810
				lo: '໐໑໒໓໔໕໖໗໘໙',
811
				or: '୦୧୨୩୪୫୬୭୮୯',
812
				kh: '០១២៣៤៥៦៧៨៩',
813
				pa: '੦੧੨੩੪੫੬੭੮੯',
814
				gu: '૦૧૨૩૪૫૬૭૮૯',
815
				hi: '०१२३४५६७८९',
816
				my: '၀၁၂၃၄၅၆၇၈၉',
817
				ta: '௦௧௨௩௪௫௬௭௮௯',
818
				te: '౦౧౨౩౪౫౬౭౮౯',
819
				th: '๐๑๒๓๔๕๖๗๘๙', // FIXME use iso 639 codes
820
				bo: '༠༡༢༣༤༥༦༧༨༩' // FIXME use iso 639 codes
821
			};
822
823
			if ( !tables[ language ] ) {
824
				return false;
825
			}
826
827
			return tables[ language ].split( '' );
828
		}
829
	};
830
831
	$.extend( $.i18n.languages, {
832
		'default': language
833
	} );
834
}( jQuery ) );
835