Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4078245
jquery.i18n.language.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
jquery.i18n.language.js
View Options
/* global pluralRuleParser */
(
function
(
$
)
{
'use strict'
;
// jscs:disable
var
language
=
{
// CLDR plural rules generated using
// libs/CLDRPluralRuleParser/tools/PluralXML2JSON.html
pluralRules
:
{
ak
:
{
one
:
'n = 0..1'
},
am
:
{
one
:
'i = 0 or n = 1'
},
ar
:
{
zero
:
'n = 0'
,
one
:
'n = 1'
,
two
:
'n = 2'
,
few
:
'n % 100 = 3..10'
,
many
:
'n % 100 = 11..99'
},
ars
:
{
zero
:
'n = 0'
,
one
:
'n = 1'
,
two
:
'n = 2'
,
few
:
'n % 100 = 3..10'
,
many
:
'n % 100 = 11..99'
},
as
:
{
one
:
'i = 0 or n = 1'
},
be
:
{
one
:
'n % 10 = 1 and n % 100 != 11'
,
few
:
'n % 10 = 2..4 and n % 100 != 12..14'
,
many
:
'n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14'
},
bh
:
{
one
:
'n = 0..1'
},
bn
:
{
one
:
'i = 0 or n = 1'
},
br
:
{
one
:
'n % 10 = 1 and n % 100 != 11,71,91'
,
two
:
'n % 10 = 2 and n % 100 != 12,72,92'
,
few
:
'n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99'
,
many
:
'n != 0 and n % 1000000 = 0'
},
bs
:
{
one
:
'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
},
cs
:
{
one
:
'i = 1 and v = 0'
,
few
:
'i = 2..4 and v = 0'
,
many
:
'v != 0'
},
cy
:
{
zero
:
'n = 0'
,
one
:
'n = 1'
,
two
:
'n = 2'
,
few
:
'n = 3'
,
many
:
'n = 6'
},
da
:
{
one
:
'n = 1 or t != 0 and i = 0,1'
},
dsb
:
{
one
:
'v = 0 and i % 100 = 1 or f % 100 = 1'
,
two
:
'v = 0 and i % 100 = 2 or f % 100 = 2'
,
few
:
'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'
},
fa
:
{
one
:
'i = 0 or n = 1'
},
ff
:
{
one
:
'i = 0,1'
},
fil
:
{
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'
},
fr
:
{
one
:
'i = 0,1'
},
ga
:
{
one
:
'n = 1'
,
two
:
'n = 2'
,
few
:
'n = 3..6'
,
many
:
'n = 7..10'
},
gd
:
{
one
:
'n = 1,11'
,
two
:
'n = 2,12'
,
few
:
'n = 3..10,13..19'
},
gu
:
{
one
:
'i = 0 or n = 1'
},
guw
:
{
one
:
'n = 0..1'
},
gv
:
{
one
:
'v = 0 and i % 10 = 1'
,
two
:
'v = 0 and i % 10 = 2'
,
few
:
'v = 0 and i % 100 = 0,20,40,60,80'
,
many
:
'v != 0'
},
he
:
{
one
:
'i = 1 and v = 0'
,
two
:
'i = 2 and v = 0'
,
many
:
'v = 0 and n != 0..10 and n % 10 = 0'
},
hi
:
{
one
:
'i = 0 or n = 1'
},
hr
:
{
one
:
'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
},
hsb
:
{
one
:
'v = 0 and i % 100 = 1 or f % 100 = 1'
,
two
:
'v = 0 and i % 100 = 2 or f % 100 = 2'
,
few
:
'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'
},
hy
:
{
one
:
'i = 0,1'
},
is
:
{
one
:
't = 0 and i % 10 = 1 and i % 100 != 11 or t != 0'
},
iu
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
iw
:
{
one
:
'i = 1 and v = 0'
,
two
:
'i = 2 and v = 0'
,
many
:
'v = 0 and n != 0..10 and n % 10 = 0'
},
kab
:
{
one
:
'i = 0,1'
},
kn
:
{
one
:
'i = 0 or n = 1'
},
kw
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
lag
:
{
zero
:
'n = 0'
,
one
:
'i = 0,1 and n != 0'
},
ln
:
{
one
:
'n = 0..1'
},
lt
:
{
one
:
'n % 10 = 1 and n % 100 != 11..19'
,
few
:
'n % 10 = 2..9 and n % 100 != 11..19'
,
many
:
'f != 0'
},
lv
:
{
zero
:
'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19'
,
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'
},
mg
:
{
one
:
'n = 0..1'
},
mk
:
{
one
:
'v = 0 and i % 10 = 1 or f % 10 = 1'
},
mo
:
{
one
:
'i = 1 and v = 0'
,
few
:
'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
},
mr
:
{
one
:
'i = 0 or n = 1'
},
mt
:
{
one
:
'n = 1'
,
few
:
'n = 0 or n % 100 = 2..10'
,
many
:
'n % 100 = 11..19'
},
naq
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
nso
:
{
one
:
'n = 0..1'
},
pa
:
{
one
:
'n = 0..1'
},
pl
:
{
one
:
'i = 1 and v = 0'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14'
,
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'
},
prg
:
{
zero
:
'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19'
,
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'
},
pt
:
{
one
:
'i = 0..1'
},
ro
:
{
one
:
'i = 1 and v = 0'
,
few
:
'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'
},
ru
:
{
one
:
'v = 0 and i % 10 = 1 and i % 100 != 11'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14'
,
many
:
'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
},
se
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
sh
:
{
one
:
'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
},
shi
:
{
one
:
'i = 0 or n = 1'
,
few
:
'n = 2..10'
},
si
:
{
one
:
'n = 0,1 or i = 0 and f = 1'
},
sk
:
{
one
:
'i = 1 and v = 0'
,
few
:
'i = 2..4 and v = 0'
,
many
:
'v != 0'
},
sl
:
{
one
:
'v = 0 and i % 100 = 1'
,
two
:
'v = 0 and i % 100 = 2'
,
few
:
'v = 0 and i % 100 = 3..4 or v != 0'
},
sma
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
smi
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
smj
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
smn
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
sms
:
{
one
:
'n = 1'
,
two
:
'n = 2'
},
sr
:
{
one
:
'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'
},
ti
:
{
one
:
'n = 0..1'
},
tl
:
{
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'
},
tzm
:
{
one
:
'n = 0..1 or n = 11..99'
},
uk
:
{
one
:
'v = 0 and i % 10 = 1 and i % 100 != 11'
,
few
:
'v = 0 and i % 10 = 2..4 and i % 100 != 12..14'
,
many
:
'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'
},
wa
:
{
one
:
'n = 0..1'
},
zu
:
{
one
:
'i = 0 or n = 1'
}
},
// jscs:enable
/**
* Plural form transformations, needed for some languages.
*
* @param {integer} count
* Non-localized quantifier
* @param {Array} forms
* List of plural forms
* @return {string} Correct form for quantifier in this language
*/
convertPlural
:
function
(
count
,
forms
)
{
var
pluralRules
,
pluralFormIndex
,
index
,
explicitPluralPattern
=
/\d+=/i
,
formCount
,
form
;
if
(
!
forms
||
forms
.
length
===
0
)
{
return
''
;
}
// Handle for Explicit 0= & 1= values
for
(
index
=
0
;
index
<
forms
.
length
;
index
++
)
{
form
=
forms
[
index
];
if
(
explicitPluralPattern
.
test
(
form
)
)
{
formCount
=
parseInt
(
form
.
slice
(
0
,
form
.
indexOf
(
'='
)
),
10
);
if
(
formCount
===
count
)
{
return
(
form
.
slice
(
form
.
indexOf
(
'='
)
+
1
)
);
}
forms
[
index
]
=
undefined
;
}
}
forms
=
$
.
map
(
forms
,
function
(
form
)
{
if
(
form
!==
undefined
)
{
return
form
;
}
}
);
pluralRules
=
this
.
pluralRules
[
$
.
i18n
().
locale
];
if
(
!
pluralRules
)
{
// default fallback.
return
(
count
===
1
)
?
forms
[
0
]
:
forms
[
1
];
}
pluralFormIndex
=
this
.
getPluralForm
(
count
,
pluralRules
);
pluralFormIndex
=
Math
.
min
(
pluralFormIndex
,
forms
.
length
-
1
);
return
forms
[
pluralFormIndex
];
},
/**
* For the number, get the plural for index
*
* @param {integer} number
* @param {Object} pluralRules
* @return {integer} plural form index
*/
getPluralForm
:
function
(
number
,
pluralRules
)
{
var
i
,
pluralForms
=
[
'zero'
,
'one'
,
'two'
,
'few'
,
'many'
,
'other'
],
pluralFormIndex
=
0
;
for
(
i
=
0
;
i
<
pluralForms
.
length
;
i
++
)
{
if
(
pluralRules
[
pluralForms
[
i
]
]
)
{
if
(
pluralRuleParser
(
pluralRules
[
pluralForms
[
i
]
],
number
)
)
{
return
pluralFormIndex
;
}
pluralFormIndex
++
;
}
}
return
pluralFormIndex
;
},
/**
* Converts a number using digitTransformTable.
*
* @param {number} num Value to be converted
* @param {boolean} integer Convert the return value to an integer
* @return {string} The number converted into a String.
*/
convertNumber
:
function
(
num
,
integer
)
{
var
tmp
,
item
,
i
,
transformTable
,
numberString
,
convertedNumber
;
// Set the target Transform table:
transformTable
=
this
.
digitTransformTable
(
$
.
i18n
().
locale
);
numberString
=
String
(
num
);
convertedNumber
=
''
;
if
(
!
transformTable
)
{
return
num
;
}
// Check if the restore to Latin number flag is set:
if
(
integer
)
{
if
(
parseFloat
(
num
,
10
)
===
num
)
{
return
num
;
}
tmp
=
[];
for
(
item
in
transformTable
)
{
tmp
[
transformTable
[
item
]
]
=
item
;
}
transformTable
=
tmp
;
}
for
(
i
=
0
;
i
<
numberString
.
length
;
i
++
)
{
if
(
transformTable
[
numberString
[
i
]
]
)
{
convertedNumber
+=
transformTable
[
numberString
[
i
]
];
}
else
{
convertedNumber
+=
numberString
[
i
];
}
}
return
integer
?
parseFloat
(
convertedNumber
,
10
)
:
convertedNumber
;
},
/**
* Grammatical transformations, needed for inflected languages.
* Invoked by putting {{grammar:form|word}} in a message.
* Override this method for languages that need special grammar rules
* applied dynamically.
*
* @param {string} word
* @param {string} form
* @return {string}
*/
// eslint-disable-next-line no-unused-vars
convertGrammar
:
function
(
word
,
form
)
{
return
word
;
},
/**
* Provides an alternative text depending on specified gender. Usage
* {{gender:[gender|user object]|masculine|feminine|neutral}}. If second
* or third parameter are not specified, masculine is used.
*
* These details may be overriden per language.
*
* @param {string} gender
* male, female, or anything else for neutral.
* @param {Array} forms
* List of gender forms
*
* @return {string}
*/
gender
:
function
(
gender
,
forms
)
{
if
(
!
forms
||
forms
.
length
===
0
)
{
return
''
;
}
while
(
forms
.
length
<
2
)
{
forms
.
push
(
forms
[
forms
.
length
-
1
]
);
}
if
(
gender
===
'male'
)
{
return
forms
[
0
];
}
if
(
gender
===
'female'
)
{
return
forms
[
1
];
}
return
(
forms
.
length
===
3
)
?
forms
[
2
]
:
forms
[
0
];
},
/**
* Get the digit transform table for the given language
* See http://cldr.unicode.org/translation/numbering-systems
*
* @param {string} language
* @return {Array|boolean} List of digits in the passed language or false
* representation, or boolean false if there is no information.
*/
digitTransformTable
:
function
(
language
)
{
var
tables
=
{
ar
:
'٠١٢٣٤٥٦٧٨٩'
,
fa
:
'۰۱۲۳۴۵۶۷۸۹'
,
ml
:
'൦൧൨൩൪൫൬൭൮൯'
,
kn
:
'೦೧೨೩೪೫೬೭೮೯'
,
lo
:
'໐໑໒໓໔໕໖໗໘໙'
,
or
:
'୦୧୨୩୪୫୬୭୮୯'
,
kh
:
'០១២៣៤៥៦៧៨៩'
,
nqo
:
'߀߁߂߃߄߅߆߇߈߉'
,
// Note that the digits go right to left
pa
:
'੦੧੨੩੪੫੬੭੮੯'
,
gu
:
'૦૧૨૩૪૫૬૭૮૯'
,
hi
:
'०१२३४५६७८९'
,
my
:
'၀၁၂၃၄၅၆၇၈၉'
,
ta
:
'௦௧௨௩௪௫௬௭௮௯'
,
te
:
'౦౧౨౩౪౫౬౭౮౯'
,
th
:
'๐๑๒๓๔๕๖๗๘๙'
,
// FIXME use iso 639 codes
bo
:
'༠༡༢༣༤༥༦༧༨༩'
// FIXME use iso 639 codes
};
if
(
!
tables
[
language
]
)
{
return
false
;
}
return
tables
[
language
].
split
(
''
);
}
};
$
.
extend
(
$
.
i18n
.
languages
,
{
default
:
language
}
);
}(
jQuery
)
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Aug 18 2026, 03:57 (8 w, 6 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
02/3e/d9af8befa47c76b345f01377fc77
Default Alt Text
jquery.i18n.language.js (11 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment