3 <title>Test Plural Conversions (should match php)
</title>
4 <script type=
"text/javascript" src=
"../mv_embed.js"></script>
7 border:solid thin black;
10 <script type=
"text/javascript" >
11 var scriptLoaderURID = 't15';
12 //for just setting one or two to test at a time for debug
13 //var langKeyDebug = ['sl']; //pl
14 var langKeyDebug = [ 'az', 'da', 'pt', 'fr', 'lv', 'en'];
15 //var langKeyDebug = ['en','az', 'da', 'pt', 'fr', 'lv', 'ga','hr','cy','mk','mt','pl','sl'];
17 //longlangKey is every language we have a much more verbose test
19 //no plurals, there are no rules
20 'az','fa','hu','ja','ko','my to','tr','vi','yo','zh',
21 'bo','dz','id','jv ka','km','kn','ms','th',
28 'few' =
> array( 'mod' =
> 100, 'is'=
>'
3-
10' ),
30 'many' =
> array( 'mod' =
> 100, 'is'=
>'
11-
99')
37 'da','de','el','en','eo','es','et','fi','fo','gl',
38 'he','iw','it','nb','nl','nn','no','pt_PT','sv',
39 'af','bg','bn','ca','eu','fur','fy','gu','ha',
40 'is','ku','lb','ml','mr','nah','ne','om','or',
41 'pa','pap','ps','so','sq','sw','ta','te','tk',
47 'pt','am','bh','fil','tl','guw','hi','ln','mg','nso','ti','wa',
50 'one' =
> array( 'is'=
>'
0-
2', 'not' =
> 2)
56 //n mod
10 is
1 and n mod
100 is not
11
58 array( 'mod' =
> 10, 'is' =
> 1 ),
60 array( 'mod' =
> 100, 'not' =
> 11)
69 'ga','se','sma','smi','smj','smn','sms',
74 //n is
0 OR n is not
1 AND n mod
100 in
1.
.19
81 array( 'mod' =
> 100, 'is'=
>'
1-
19')
90 //n mod
10 is
1 and n mod
100 not in
11.
.19
92 array( 'mod'=
>10, 'is'=
> 1 ),
93 array( 'mod'=
> 100, 'not'=
> '
11-
19')
95 //n mod
10 in
2.
.9 and n mod
100 not in
11.
.19
97 array( 'mod'=
> 10, 'is'=
> '
2-
9' ),
98 array( 'mod'=
> 100, 'not' =
> '
11-
19')
105 //n mod
10 is
1 and n mod
100 is not
11
107 array( 'mod' =
> 10, 'is' =
> 1),
108 array( 'mod' =
> 100, 'not' =
> 11)
110 //n mod
10 in
2.
.4 and n mod
100 not in
12.
.14
112 array( 'mod' =
> 10, 'is' =
> '
2-
4'),
113 array( 'mod' =
> 100, 'not' =
> '
12-
14')
115 //n mod
10 is
0 or n mod
10 in
5.
.9 or n mod
100 in
11.
.14
118 array( 'mod'=
> 10, 'is' =
> 0),
119 array( 'mod'=
> 10, 'is' =
> '
5-
9'),
120 array( 'mod'=
> 100, 'is' =
> '
11-
14')
124 'hr','ru','sr','uk','be','bs','sh',
131 array( 'mod' =
> 10, 'is' =
> '
2-
4'),
132 //and n mod
100 not in
12.
.14
133 array( 'mod' =
> 100, 'not'=
> '
12-
14'),
134 //and n mod
100 not in
22.
.24
135 array( 'mod' =
> 100, 'in' =
> '
22-
24')
141 'one' =
> array( 'mod'=
>100, 'is' =
> 1 ),
142 'two' =
> array( 'mod'=
>100, 'is' =
> 2 ),
143 'few' =
> array( 'mod'=
>100, 'is' =
> '
3-
4')
150 //n is
0 or n mod
100 in
2.
.10
154 array( 'mod' =
> 100, 'is' =
> '
2-
10')
156 //n mod
100 in
11.
.19
157 'many' =
> array( 'mod'=
>100, 'is' =
> '
11-
19')
162 'one' =
> array('mod' =
> 10, 'is' =
> '
1')
177 js2AddOnloadHook( function(){
178 //do mauall script loaders calls to test multiple languages:
179 function doLangTable( langSet ){
180 //build table output:
182 'undelete_short' : [
0,
1,
2,
5,
21,
30 ],
183 //category-subcat-count' has two params:
184 'category-subcat-count' : [
196 //do a manual call to the script-lodaer:
197 function doProcLangKey(langKey){
198 $j.getScript('../../../mwScriptLoader.php?class=mw.testLang&urid='+ scriptLoaderURID +'&uselang='+langKey, function(){
200 o+='
<tr><td colspan=
"6" height=
"20" style=
"font-size:large"><b>Lang:' + langKey + '
</b></td></tr>';
201 //now for each langage msg:
202 $j.each(msgTestSet, function(mKey, mTestSet){
203 //output table names:
206 '
<td width=
"14%">Msg key
</td>'+
207 '
<td width=
"34%">Msg text
</td>'+
208 '
<td width=
"24%">Msg Transform JS
</td>'+
209 '
<td width=
"24%">Msg Transform Mw
</td>'+
212 //for each number value
213 for(var i in mTestSet){
214 var numVal = mTestSet[i];
215 var numKey = (typeof numVal== 'object')? numVal.join( '_' ).replace('/ /', '_') : numVal;
216 var tkey = mKey + '_' + numKey + '_' + langKey;
218 '
<td>' + numVal + '
</td>' +
219 '
<td>' + mKey + '
</td>' +
220 '
<td>' + mw.lang.gMsgNoTrans( mKey ) + '
</td>' +
221 '
<td id=
"' + tkey + '_js">' + mw.lang.gM( mKey, numVal ) + '
</td>';
223 if( mKey.substr(
0,
5) == 'test_' ){
224 o+='
<td> (test msg)
</td>';
226 o+='
<td id=
"' + tkey + '">loading...
</td>';
228 //get transform from mw (& compare and highlight)
229 function doPopWmMsg(mKey, numVal, numKey){
230 //set the local tkey:
231 var tkey = mKey + '_' + numKey + '_' + langKey;
233 $j('#score_card').html('Running Tests
<span id=
"perc_done">0</sapn>% done');
234 var msgparam = (typeof numVal== 'object')? numVal.join( '|' ) : numVal;
239 'text' : '{{int:' + mKey + '|' + msgparam + '}}'
241 'url' : '../../../api.php'
242 }, function( data ) {
244 if(data.parse && data.parse.text && data.parse.text['*']){
245 $j(t).html( data.parse.text['*'] );
246 var js_txt = $j.trim( $j(t + '_js').text().replace('\n', '') );
247 var php_txt = $j.trim( $j(t + ' p').text())
248 //just get the part in the
<p> to compare with js version
249 if( js_txt != php_txt ){
250 var cat = $j.trim( $j(t + ' p').text() );
251 var dog = $j.trim( $j(t + '_js').text() );
255 $j(t).css('color', 'red');
258 $j(t).css('color', 'green');
261 var perc = ( failTest + passTest ) / testCount
263 $j('#perc_done').html( Math.round(perc*
1000)/
1000 + '%');
265 var failHtlm = (failTest ==
0)?failTest: '
<span style=
"color:red">'+ failTest+'
</span>';
266 $j('#score_card').html(
267 'Passed:
<span style=
"color:green">' + passTest + '
</span> Failed:' + failHtlm );
269 //done with this lang... call outer function if we have lang keys left to proccess:
270 if(langSet.length!=
0)
271 doProcLangKey( langSet.pop() );
278 //pop off an anonymous function call
279 doPopWmMsg(mKey, numVal, numKey);
284 o+='
<tr><td colspan=
"6" height=
"20"> </td></tr>';
286 //put the output into the page:
287 $j('#table_out').append( o );
290 doProcLangKey( langSet.pop() );
292 //by default run the
"debug" set:
293 doLangTable( langKeyDebug );
299 <h3>Test Javascript plural msg transformations
</h3>
300 <div id=
"score_card" style=
"font-size:large"></div>
301 <table id=
"table_out"></table>