From 08aa4418c30cfc18ccc69a0f0f9cb9e17be6c196 Mon Sep 17 00:00:00 2001
From: Pierre Schmitz $1
njejo se tekst pódał',
'cite_error_included_ref' => 'Kóńceca toflicka </ref>
felujo za toflicku <ref>
',
'cite_error_refs_without_references' => 'Toflicki <ref>
eksistěruju, ale toflicka <references/>
njejo se namakała',
- 'cite_error_group_refs_without_references' => 'Toflicki <ref>
eksistěruju za kupku z mjenim "$1", ale wótpowědujuca toflicka <references group="$1"/>
njejo se namakała abo zacynjacy </ref>
felujo',
+ 'cite_error_group_refs_without_references' => 'Toflicki <ref>
eksistěruju za kupku z mjenim "$1", ale wótpowědujuca toflicka <references group="$1"/>
njejo se namakała', # Fuzzy
'cite_error_references_group_mismatch' => 'Toflicka <ref>
w <references>
jo ze kupkowym atributom "$1" w konflikśe.',
'cite_error_references_missing_group' => 'Toflicka <ref>
, kótaraž jo w <references>
definěrowana, ma kupkowy atribut "$1", kótaryž njepokazujo se w pjerwjejšnem teksće.',
'cite_error_references_missing_key' => 'Toflicka <ref>
z mjenim "$1", kótaraž jo w <references>
definěrowana, njewužywa se w pjerwjejšnem teksće.',
'cite_error_references_no_key' => 'Toflicka <ref>
, kótaraž jo w <references>
definěrowana, njama mjenjowy atribut.',
'cite_error_empty_references_define' => 'Toflicka <ref>
, kótaraž jo w <references>
z mjenim "$1" definěrowana, njama wopśimjeśe.',
- 'cite_references_link_accessibility_label' => 'Górjej skócyś',
- 'cite_references_link_many_accessibility_label' => 'Górjej skócys do:',
);
/** Greek (Ελληνικά)
@@ -1072,9 +1070,7 @@ neniu teksto estis donita por ref-oj nomataj $1
',
* @author Crazymadlover
* @author Drini
* @author Erdemaslancan
- * @author Fitoschido
* @author Gustronico
- * @author Ihojose
* @author Locos epraix
* @author Manuelt15
* @author McDutchie
@@ -1108,15 +1104,13 @@ Define más en el mensaje $1
',
'cite_error_included_ref' => 'Etiqueta de apertura <ref>
sin su correspondiente cierre </ref>
',
'cite_error_refs_without_references' => 'Existen etiquetas <ref>
, pero no se encontró una etiqueta <references />
',
- 'cite_error_group_refs_without_references' => 'Existen etiquetas <ref>
para un grupo llamado «$1», pero no se encontró la etiqueta <references group="$1"/>
correspondiente, o falta la etiqueta </ref>
de cierre',
+ 'cite_error_group_refs_without_references' => 'Existen etiquetas <ref>
para un grupo llamado "$1", pero no se encontró una etiqueta <references group="$1"/>
', # Fuzzy
'cite_error_references_group_mismatch' => 'La etiqueta <ref>
en <references>
presenta el atributo de grupo "$1" en conflicto.',
'cite_error_references_missing_group' => 'La etiqueta <ref>
definida en <references>
pertenece al grupo "$1" no declarado en el texto precedente.',
'cite_error_references_missing_key' => 'La etiqueta <ref>
con nombre "$1" definida en <references>
no se utiliza en el texto precedente.',
'cite_error_references_no_key' => 'La etiqueta <ref>
definida en <references>
no tiene atributo de nombre.',
'cite_error_empty_references_define' => 'La etiqueta <ref>
definida en <references>
con nombre "$1" no tiene contenido.',
'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz',
- 'cite_references_link_accessibility_label' => 'Ir a',
- 'cite_references_link_many_accessibility_label' => 'Ir a:',
);
/** Estonian (eesti)
@@ -1186,7 +1180,7 @@ $messages['fa'] = array(
'cite_error_references_no_text' => 'برچسب نامجاز؛ متنی برای یادکردهای با نام
$1
وارد نشدهاست',
'cite_error_included_ref' => 'برچسب تمام کنندهٔ </ref>
بدون برچسب <ref>
',
'cite_error_refs_without_references' => 'برچسب <ref>
وجود دارد اما برچسب <references/>
پیدا نشد',
- 'cite_error_group_refs_without_references' => 'برچسب <ref>
برای گروهی به نام «$1» وجود دارد، اما برچسب متناظر با <references group="$1"/>
یافت نشد یا </ref>
بسته جا گذاشته شدهاست.',
+ 'cite_error_group_refs_without_references' => 'برچسب <ref>
برای گروهی به نام «$1» وجود دارد، اما برچسب <references group="$1"/>
متناظر پیدا نشد', # Fuzzy
'cite_error_references_group_mismatch' => 'برچسپ <ref>
درون <references>
در تضاد با ویژگیهای گروه «$1» است.',
'cite_error_references_missing_group' => 'برچسپ <ref>
در <references>
تعریف شده، ویژگیهای گروهی «$1» را دارد که درون متن قبل از آن ظاهر نمیشود.',
'cite_error_references_missing_key' => 'پرچسپ <ref>
که با نام «$1» درون <references>
تعریف شده، در متن قبل از آن استفاده نشدهاست.',
@@ -1194,8 +1188,6 @@ $messages['fa'] = array(
'cite_error_empty_references_define' => 'برچسپ <ref>
تعریف شده درون <references>
با نام «$1» محتوایی ندارد.',
'cite_reference_link_key_with_num' => '$1_$2',
'cite_reference_link_prefix' => 'cite_ref-',
- 'cite_references_link_accessibility_label' => 'پرش به بالا',
- 'cite_references_link_many_accessibility_label' => 'پرش به بالا به:',
);
/** Finnish (suomi)
@@ -1587,14 +1579,12 @@ Definuj dalše w zdźělence <ref>
; žadyn tekst za referency z mjenom $1
podaty.',
'cite_error_included_ref' => 'Kónčny </ref>
za tafličku <ref>
faluje',
'cite_error_refs_without_references' => 'Taflički <ref>
ekistuja, ale žana taflička code><references/> je so namakała',
- 'cite_error_group_refs_without_references' => 'Taflički <ref>
eksistuja za skupinu z mjenom "$1", ale njeje so wotpowědowaca taflička <references group="$1"/>
namakała abo začinjacy </ref>
faluje',
+ 'cite_error_group_refs_without_references' => 'Taflički <ref>
eksistuja za skupinu z mjenom "$1", ale njeje so wotpowědowaca taflička <references group="$1"/>
namakała', # Fuzzy
'cite_error_references_group_mismatch' => 'Taflička <ref>
w <references>
je ze skupinskim atributom "$1" w konflikće.',
'cite_error_references_missing_group' => 'Taflička <ref>
, kotraž je w <references>
definowana, ma skupinski atribut "$1", kotryž so w prjedawšim teksće njejewi.',
'cite_error_references_missing_key' => 'Taflička <ref>
z mjenom "$1", kotraž je w <references>
definowana, so w prjedawšim teksće njewužiwa.',
'cite_error_references_no_key' => 'Taflička <ref>
, kotraž je w <references>
definowana, mjenowy atribut nima.',
'cite_error_empty_references_define' => 'Taflička <ref>
, kotraž je w <references>
z mjenom "$1" definowana, wobsah nima.',
- 'cite_references_link_accessibility_label' => 'Horje skočić',
- 'cite_references_link_many_accessibility_label' => 'Horje skočić do:',
);
/** Haitian (Kreyòl ayisyen)
@@ -1744,38 +1734,38 @@ $messages['ig'] = array(
* @author Lam-ang
*/
$messages['ilo'] = array(
- 'cite-desc' => 'Aginayon kadagiti etiketa ti <ref>
;
-ti nagan ket saan a mabalin a nalaka a sibubukel. Agusar ti makaipalawag a titulo',
- 'cite_error_ref_no_key' => 'Imbalido nga etiketa ti <ref>
;
-dagita ref nga awan nagyanna ket masapul nga adda naganna',
- 'cite_error_ref_too_many_keys' => 'Imbalido nga etiketa ti <ref>
;
+ 'cite_error_ref_numeric_key' => 'Imbalido a <ref>
nga etiketa;
+ti nagan ket saan a mabalin a nalaka a sibubukel. Agusar ti agipalpalawag a titulo',
+ 'cite_error_ref_no_key' => 'Imbalido a <ref>
nga etiketa;
+dagita ref nga awan nagyanna ket masapul a managanan',
+ 'cite_error_ref_too_many_keys' => 'Imbalido a <ref>
nga etiketa;
imbalido a nag-nagan, a kas adu unay',
- 'cite_error_ref_no_input' => 'Imbalido nga etiketa ti <ref>
;
+ 'cite_error_ref_no_input' => 'Imbalido a <ref>
nga etiketa;
dagiti ref nga awan ti naganna ket masapul nga addaan ti nagyan',
- 'cite_error_references_invalid_parameters' => 'Imbalido nga etiketa ti <references>
;
-saan a maipalubos dagiti parametro.
+ 'cite_error_references_invalid_parameters' => 'Imbalido a <references>
nga etiketa
+awan dagiti parametro a maipalubos.
Usaren ti <references />
',
- 'cite_error_references_invalid_parameters_group' => 'Imbalido nga etiketa ti <references>
;
-maipalubos laeng ti parametro ti "grupo" .
+ 'cite_error_references_invalid_parameters_group' => 'Imbalido a <references>
nga etiketa;
+parametro a "grupo" ket ti maipalubos laeng.
Usaren ti <references />
, wenno<references group="..." />
',
- 'cite_error_references_no_backlink_label' => 'Naibusan kadagiti etiketa ti naisangayan a silpo ti likud.
-Ipalawag pay ti adu idiay mensahe ti <ref>
;
-awan ti testo a naited para kadagiti ref a nanaganan $1
',
- 'cite_error_included_ref' => 'Irikepen ti </ref>
napukaw para iti etiketa ti <ref>
',
- 'cite_error_refs_without_references' => 'Ti etiketa ti <ref>
ket addan, ngem awan ti etiketa ti <references/>
a nabirukan',
- 'cite_error_group_refs_without_references' => 'Adda dagiti etiketa ti <ref>
para iti grupo a nanaganan ti "$1", ngem awan ti kapada nga etiketa ti <references group="$1"/>
a nabirukan, wenno awan ti pangrikep ti </ref>
',
- 'cite_error_references_group_mismatch' => 'Ti etiketa ti <ref>
iday <references>
ket addan ti kasinnungat a gupit ti grupo ti "$1".',
- 'cite_error_references_missing_group' => 'Ti etiketa ti <ref>
a naipalawag idiay <references>
ket addaan ti gupit ti grupo ti "$1" a saan nga agparang iti napalabas a testo.',
- 'cite_error_references_missing_key' => 'Ti etiketa ti <ref>
nga addaan ti nagan ti "$1" a naipalawag idiay <references>
ket saan a nausar iti napalabas a testo.',
- 'cite_error_references_no_key' => 'Ti etiketa ti <ref>
a naipalawag idiay <references>
ket awan ti nainagan a gupit.',
- 'cite_error_empty_references_define' => 'Ti etiketa ti <ref>
a naipalawag idiay <references>
nga addaan ti nagan a "$1" ket awan ti nagyanna.',
- 'cite_references_link_accessibility_label' => 'Mapan iti ngato',
- 'cite_references_link_many_accessibility_label' => 'Mapan aginggana iti:',
+ 'cite_error_references_no_backlink_label' => 'Naibusan kadagiti nagrunaan a likud ti silpo nga etiketa.
+Ipalawag pay ti adu idiay <ref>
nga etiketa;
+awan ti testo a naited para dagiti ref a nanaganan $1
',
+ 'cite_error_included_ref' => 'Irikrikep ti </ref>
napukaw para iti <ref>
nga etiketa',
+ 'cite_error_refs_without_references' => 'Ti <ref>
nga etiketa ket addan, ngem awan ti <references/>
nga etiketa a nabirukan',
+ 'cite_error_group_refs_without_references' => 'Adda dagiti <ref>
para iti grupo a nanaganan ti "$1", ngem awan ti kapada a <references group="$1"/>
nga etiketa ti nabirukan, wenno pangrikep a </ref>
ket awan',
+ 'cite_error_references_group_mismatch' => 'Ti <ref>
nga etiketa iday <references>
ket addan ti nagsungat a gupit ti grupo "$1".',
+ 'cite_error_references_missing_group' => 'Ti <ref>
nga etiketa a naipalawag idiay <references>
ket addaan ti gupit ti grupo ti "$1" a saan nga agparang iti napalabas a testo.',
+ 'cite_error_references_missing_key' => 'Ti <ref>
nga etiketa nga addaan ti nagan ti "$1" a naipalawag idiay <references>
ket saan a nausar iti napalabas a testo.',
+ 'cite_error_references_no_key' => 'Ti <ref>
nga etiketa a naipalawag idiay <references>
ket awan ti nainagan a gupit.',
+ 'cite_error_empty_references_define' => 'Ti <ref>
nga etiketa a naipalawag idiay <references>
nga addaan ti nagan a "$1" ket awan ti nagyanna.',
+ 'cite_references_link_accessibility_label' => 'Lumagto ti ngato',
+ 'cite_references_link_many_accessibility_label' => 'Lumagto ti ngato iti:',
);
/** Ido (Ido)
@@ -1888,8 +1878,6 @@ $messages['ja'] = array(
'cite_error_references_missing_key' => '<references>
で定義されている <ref>
タグ (name="$1") は、先行するテキスト内で使用されていません。',
'cite_error_references_no_key' => '<references>
で定義されている <ref>
タグに name 属性がありません。',
'cite_error_empty_references_define' => '<references>
で定義されている <ref>
タグ (name="$1") に内容がありません。',
- 'cite_references_link_accessibility_label' => '元の位置に戻る',
- 'cite_references_link_many_accessibility_label' => '以下の位置に戻る:',
);
/** Jutish (jysk)
@@ -1983,7 +1971,7 @@ $messages['ka'] = array(
სქოლიოსათვის $1
არ არის მითითებული ტექსტი',
'cite_error_included_ref' => 'დამხურავი ტეგი </ref>
დაკარგულია',
'cite_error_refs_without_references' => 'არსებული ტეგისათვის <ref>
ვერ მოიძებნა შესაბამისი ტეგი <references/>
',
- 'cite_error_group_refs_without_references' => 'ჯგუფი „$1“ არსებული ტეგებისათვის <ref>
ვერ მოიძებნა შესაბამისი ტეგი <references group="$1"/>
, ან გამოტოვებულია დამხურავი ტეგი </ref>
',
+ 'cite_error_group_refs_without_references' => 'ჯგუფი „$1“ არსებული ტეგებისათვის <ref>
ვერ მოიძებნა შესაბამისი ტეგი <references group="$1"/>
', # Fuzzy
'cite_error_references_group_mismatch' => 'ტეგს <ref>
<references>
-ში გააჩნია ატრიბუტთა კონფლიქტური ჯგუფები „$1“.',
'cite_error_references_missing_group' => 'ტეგს <ref>
, განმარტებულს <references>
-ში, გააჩნია ჯგუფის ატრიბუტი „$1“, რომელიც ადრეულ ტექსტში არ მოიხსენიება.',
'cite_error_references_missing_key' => 'ტეგი <ref>
სახელად „$1“, გარკვეული <references>
-ში, არ გამოიყენება წინა ტექსტში.',
@@ -2207,15 +2195,6 @@ Doe kans d\'r mier insjtelle in \'t sysyeemberich <ref>
dae is gedefinieerd in <references>
mit de naam "$1" haet geinen inhawd.',
);
-/** لوری (لوری)
- * @author Mogoeilor
- */
-$messages['lrc'] = array(
- 'cite_error' => 'خطا جاگه:$1',
- 'cite_references_link_accessibility_label' => 'بالا پرسن',
- 'cite_references_link_many_accessibility_label' => 'پرستن د',
-);
-
/** Lithuanian (lietuvių)
* @author Garas
* @author Homo
@@ -2374,8 +2353,6 @@ $messages['ml'] = array(
'cite_error_empty_references_define' => ' <references>
ആവശ്യത്തിനായി "$1" എന്ന പേരിൽ നിർവചിക്കപ്പെട്ട <ref>
റ്റാഗിന് ഉള്ളടക്കമൊന്നുമില്ല.',
'cite_reference_link_prefix' => 'ഉദ്ധരിണി_അവലംബം-',
'cite_references_link_prefix' => 'ഉദ്ധരിണി_കുറിപ്പ്-',
- 'cite_references_link_accessibility_label' => 'മുകളിലേയ്ക്ക്',
- 'cite_references_link_many_accessibility_label' => 'മുകളിൽ ഇവിടേയ്ക്ക്:',
);
/** Mongolian (монгол)
@@ -2393,7 +2370,7 @@ $messages['mn'] = array(
* @author V.narsikar
*/
$messages['mr'] = array(
- 'cite-desc' => '<ref>
चुकीचा कोड; नाव हे पूर्णांकी संख्या असू शकत नाही, कृपया माहितीपूर्ण शीर्षक द्या',
'cite_error_ref_no_key' => '<ref>
चुकीचा कोड; रिकाम्या संदर्भांना नाव असणे गरजेचे आहे',
@@ -2406,17 +2383,14 @@ $messages['mr'] = array(
'cite_error_no_link_label_group' => '"$1" करिता नमूदकेलेल्या कस्टम लिंक खूणा संपल्या .
<ref>
चुकीचा कोड; $1
नावाने दिलेल्या संदर्भांमध्ये काहीही माहिती नाही',
- 'cite_error_included_ref' => '<ref>
ला बंद करणारी </ref>
ही खूणपताका गायब आहे.',
- 'cite_error_refs_without_references' => "या पानामधे \"<ref>
\" ही खूणपताका(संदर्भटॅग) आहे, परंतु <references/>
अथवा
संदर्भयादी
या पैकी एकही लावण्यात आलेले नाही.''' या पानात \"
संदर्भयादी
\" हा साचा कॉपीपेस्ट करावा''' ''कारण,त्याशिवाय पानाच्या तळाशी संदर्भांचे तपशील दिसणार नाहीत.''",
+ 'cite_error_included_ref' => '<ref>
ला बंद करणारी </ref>
ही खूण गायब आहे.',
+ 'cite_error_refs_without_references' => 'पानामधे <ref>
(संदर्भ) आहे, परंतु <references/>
(<ref>
खूणपताका उपलब्ध आहेत, पण संबंधीत <references group="$1"/>
खूण मिळाली नाही.',
- 'cite_error_references_group_mismatch' => '<references>
मधील खूणपताकेस<ref>
खूणांशी विसंवाद असणारे group attribute "$1" आहे.',
- 'cite_error_references_missing_group' => 'गट "$1" मधील <ref>
खूणपताका <references>
ह्या पूर्वी वापल्या गेलेल्या नाहीत.',
- 'cite_error_references_missing_key' => '<references>
ह्या मध्ये टाकलेला <ref>
"$1" ह्या नावाची खूणपताका ह्या पूर्वी वापरण्यात आलेली नाही.',
- 'cite_error_references_no_key' => '<ref>
खूणपताकेत नमूद गोष्टींना <references>
ला नाम-गुणधर्म नाहीत.',
- 'cite_error_empty_references_define' => '<ref>
खूणपताकेत नमूद गोष्टींना, <references>
ज्या "$1" ह्या नावाने संबोधल्या आहेत, त्यात माहिती नाही.',
- 'cite_references_link_accessibility_label' => 'वर उडी मारा',
- 'cite_references_link_many_accessibility_label' => 'ला वर उडी मारा:',
+ 'cite_error_references_group_mismatch' => 'tag in <references>
मधील <ref>
खूणांना खटका उडणारे group attribute "$1" आहे.',
+ 'cite_error_references_missing_group' => 'गट "$1" मधील <ref>
ट्याग <references>
ह्या पूर्वी वापल्या गेलेले नाही',
+ 'cite_error_references_missing_key' => '<references>
ह्या मध्ये सांगितलेला <ref>
"$1" ह्या नावाचा ट्याग ह्या पूर्वी वापरण्यात आलेला नाही.',
+ 'cite_error_references_no_key' => '<ref>
ट्याग मध्ये विशारद गोष्टींना <references>
ला नाम गुणधर्म नाहीत',
+ 'cite_error_empty_references_define' => '<ref>
ट्याग मध्ये विशारद गोष्टीं <references>
ज्या "$1" ह्या नावाने संबोधल्या आहेत त्यात माहिती नाही',
);
/** Malay (Bahasa Melayu)
@@ -2534,7 +2508,6 @@ $messages['nds-nl'] = array(
);
/** Dutch (Nederlands)
- * @author Flightmare
* @author Niels
* @author Romaine
* @author Siebrand
@@ -2571,8 +2544,6 @@ er is geen tekst opgegeven voor refs met de naam $1
',
'cite_error_references_missing_key' => 'De tag <ref>
met de naam "$1" gedefinieerd in <references>
wordt niet eerder in de tekst gebruikt.',
'cite_error_references_no_key' => 'De tag <ref>
die is gedefinieerd in <references>
heeft geen eigenschapsnaam.',
'cite_error_empty_references_define' => 'De tag <ref>
die is gedefinieerd in <references>
met de naam "$1" heeft geen inhoud.',
- 'cite_references_link_accessibility_label' => 'Omhoog',
- 'cite_references_link_many_accessibility_label' => 'Omhoog naar:',
);
/** Norwegian Nynorsk (norsk nynorsk)
@@ -2625,8 +2596,6 @@ pas de tèxte per las referéncias nomenadas $1
.',
'cite_error_references_missing_key' => 'La balisa <ref>
amb lo nom « $1 » definida dins <references>
es pas utilizada dins lo tèxte precedent.',
'cite_error_references_no_key' => 'La balisa <ref>
definida dins <references>
a pas de nom d’atribut.',
'cite_error_empty_references_define' => 'La balisa <ref>
definida dins <references>
amb lo nom « $1 » a pas de contengut.',
- 'cite_references_link_accessibility_label' => 'Anar',
- 'cite_references_link_many_accessibility_label' => 'Anar a :',
);
/** Oriya (ଓଡ଼ିଆ)
@@ -3420,16 +3389,12 @@ Definera fler i <ref>
குறிச்சொல்;
-$1
என்னும் பெயரில் உள்ள ref குறிச்சொல்லுக்கு உரையேதும் வழங்கப்படவில்லை',
- 'cite_error_refs_without_references' => '<ref>
குறிச்சொல் உள்ளது, ஆனால் <references/>
குறிச்சொல் காணப்படவில்லை',
);
/** Telugu (తెలుగు)
diff --git a/extensions/Cite/Cite.php b/extensions/Cite/Cite.php
index 045bb8cc..4b2f70ff 100644
--- a/extensions/Cite/Cite.php
+++ b/extensions/Cite/Cite.php
@@ -18,6 +18,8 @@ if ( ! defined( 'MEDIAWIKI' ) )
*/
$wgHooks['ParserFirstCallInit'][] = 'wfCite';
+$wgHooks['BeforePageDisplay'][] = 'wfCiteBeforePageDisplay';
+
$wgExtensionCredits['parserhook'][] = array(
'path' => __FILE__,
@@ -96,4 +98,22 @@ $wgResourceModules['ext.rtlcite'] = $citeResourceTemplate + array(
'position' => 'top',
);
+/**
+ * @param $out OutputPage
+ * @param $sk Skin
+ * @return bool
+ */
+function wfCiteBeforePageDisplay( $out, &$sk ) {
+ global $wgCiteEnablePopups;
+
+ $out->addModules( 'ext.cite' );
+ if ( $wgCiteEnablePopups ) {
+ $out->addModules( 'ext.cite.popups' );
+ }
+
+ /* RTL support quick-fix module */
+ $out->addModuleStyles( 'ext.rtlcite' );
+ return true;
+}
+
/**#@-*/
diff --git a/extensions/Cite/Cite_body.php b/extensions/Cite/Cite_body.php
index 08c60722..27432f47 100644
--- a/extensions/Cite/Cite_body.php
+++ b/extensions/Cite/Cite_body.php
@@ -155,7 +155,6 @@ class Cite {
* @return string
*/
function ref( $str, $argv, $parser ) {
- global $wgCiteEnablePopups;
if ( $this->mInCite ) {
return htmlspecialchars( "$str" );
} else {
@@ -163,12 +162,6 @@ class Cite {
$this->mInCite = true;
$ret = $this->guardedRef( $str, $argv, $parser );
$this->mInCite = false;
- $parserOutput = $parser->getOutput();
- $parserOutput->addModules( 'ext.cite' );
- if ( $wgCiteEnablePopups ) {
- $parserOutput->addModules( 'ext.cite.popups' );
- }
- $parserOutput->addModuleStyles( 'ext.rtlcite' );
return $ret;
}
}
diff --git a/extensions/Cite/SpecialCite.alias.php b/extensions/Cite/SpecialCite.alias.php
index cbcdafbb..8061afcc 100644
--- a/extensions/Cite/SpecialCite.alias.php
+++ b/extensions/Cite/SpecialCite.alias.php
@@ -74,7 +74,7 @@ $specialPageAliases['ce'] = array(
'Cite' => array( 'Дош' ),
);
-/** Czech (čeština) */
+/** Czech (česky) */
$specialPageAliases['cs'] = array(
'Cite' => array( 'Citovat' ),
);
diff --git a/extensions/Cite/SpecialCite.i18n.php b/extensions/Cite/SpecialCite.i18n.php
index 013fbe63..635025d4 100644
--- a/extensions/Cite/SpecialCite.i18n.php
+++ b/extensions/Cite/SpecialCite.i18n.php
@@ -1955,77 +1955,6 @@ $messages['frp'] = array(
'cite_submit' => 'Citar',
);
-/** Northern Frisian (Nordfriisk)
- * @author Murma174
- */
-$messages['frr'] = array(
- 'cite_article_desc' => 'Diar komt en nei [[Special:Cite|spezial-sidj]] tu, am sitiarin ianfacher tu maagin, an uk en ferwisang bi a werktjüügen',
- 'cite_article_link' => 'Detdiar sidj sitiare',
- 'tooltip-cite-article' => 'Hü detdiar sidj sitiaret wurd koon',
- 'cite' => 'Sitiare',
- 'cite_page' => 'Sidj:',
- 'cite_submit' => 'Sitiare',
- 'cite_text' => "__NOTOC__
-\\usepackage{url}
uun't iinfeerang) mä en smoker wääb-adres brükt woort, as det ferlicht neter so:
-
- @misc{ wiki:xxx,
- author = \"{{SITENAME}}\",
- title = \"{{FULLPAGENAME}} --- {{SITENAME}}{,} {{int:sitesubtitle}}\",
- year = \"{{CURRENTYEAR}}\",
- url = \"'''\\url{'''{{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}}'''}'''\",
- note = \"[Online; ufrepen
@@ -822,7 +822,6 @@ Gwasgwch botwm 'nôl' eich porwr er mwyn dychwelyd at y dudalen golygu.", /** Danish (dansk) * @author Aputtu * @author Byrial - * @author Christian List * @author Hylle * @author Kaare * @author Peter Alberti @@ -835,7 +834,7 @@ $messages['da'] = array( Som beskyttelse af wikien mod automatiseret spam, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen, for at kunne gemme din redigering ([[Special:Captcha/help|flere oplysninger]]):', 'captcha-badlogin' => 'For at beskytte wikien mod automatiseret adgangskodegætning, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):', 'captcha-createaccount' => 'For at beskytte wikien mod automatisk oprettelse af brugernavne, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):', - 'captcha-createaccount-fail' => 'Forkert eller manglende bekræftelseskode.', + 'captcha-createaccount-fail' => 'Forkert eller manglende kodeord.', 'captcha-create' => 'For at oprette en ny side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', 'captcha-sendemail' => 'For at beskytte wikien mod automatisk spamning, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):', 'captcha-sendemail-fail' => 'Forkert eller manglende bekræftelseskode.', @@ -1580,14 +1579,13 @@ $messages['gu'] = array( /** Hebrew (עברית) * @author Amire80 - * @author Guycn2 * @author Rotem Liss * @author Rotemliss * @author YaronSh */ $messages['he'] = array( 'captcha-edit' => 'כדי לערוך את הדף, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):', - 'captcha-desc' => 'מתן טכניקות CAPTCHA להגנה נגד ספאם וניחוש סיסמאות', + 'captcha-desc' => 'מתן טכניקות CAPTCHA להגנה נגד זיבול וניחוש ססמאות', 'captcha-label' => 'CAPTCHA', 'captcha-addurl' => 'עריכתכם כוללת קישורים חיצוניים חדשים. לשם הגנה מפני ספאם אוטומטי, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה כדי לשמור את עריכתכם ([[Special:Captcha/help|מידע נוסף]]):', @@ -1832,22 +1830,20 @@ Clicca le button 'retro' in tu navigator pro retornar al pagina de modification. * @author Ilham151096 * @author IvanLanin * @author Iwan Novirion - * @author Kenrick95 * @author Rex */ $messages['id'] = array( 'captcha-edit' => 'Untuk menyunting halaman ini, harap pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):', 'captcha-desc' => 'Menyediakan teknik captcha untuk melindungi terhadap spam dan penebakan sandi', 'captcha-label' => 'CAPTCHA', - 'captcha-addurl' => "Suntingan Anda menyertakan pranala luar baru. -Sebagai pelindungan terhadap ''spam'' otomatis, Anda harus mengetikkan hasil perhitungan sederhana berikut ini -([[Special:Captcha/help|info lengkap]]):", - 'captcha-badlogin' => 'Untuk melindungi wiki ini dari perengkahan kunci sandi otomatis, harap masukkan hasil perhitungan sederhana berikut dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):', - 'captcha-createaccount' => 'Untuk melindungi wiki ini dari pembuatan akun otomatis, kami meminta Anda untuk mengetikkan hasil perhitungan sederhana di bawah ini dalam kotak yang tersedia -([[Special:Captcha/help|info lengkap]]):', + 'captcha-addurl' => "Suntingan Anda menyertakan pranala luar baru. Sebagai pelindungan terhadap ''spam'' otomatis, Anda harus mengetikkan kata atau hasil perhitungan yang tertera berikut ini:', - 'email-blacklist' => ' #
+([[Special:Captcha/help|info lengkap]])", # Fuzzy + 'captcha-badlogin' => 'Untuk membantu pelindungan terhadap perengkahan kunci sandi otomatis, tolong masukkan kata atau hasil perhitungan sederhana berikut dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):', # Fuzzy + 'captcha-createaccount' => 'Sebagai pelindungan terhadap spam, Anda diharuskan untuk mengetikkan kata atau hasil perhitungan di bawah ini di kotak yang tersedia untuk dapat mendaftarkan pengguna baru:
+([[Special:Captcha/help|info lengkap]])', # Fuzzy 'captcha-createaccount-fail' => 'Kode konfirmasi salah atau belum diisi.', 'captcha-create' => 'Untuk menyunting halaman ini, silakan pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):', - 'captcha-sendemail' => 'Untuk melindungi wiki ini dari spam otomatis, kami meminta Anda untuk memecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|more info]]):', + 'captcha-sendemail' => 'Sebagai pelindungan terhadap spam, silakan pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|more info]]):', # Fuzzy 'captcha-sendemail-fail' => 'Kode konfirmasi salah atau belum diisi.', 'captcha-disabledinapi' => 'Tindakan ini membutuhkan captcha, sehingga tidak dapat dilakukan melalui API.', 'captchahelp-title' => 'Mengenai Captcha', @@ -2017,7 +2013,6 @@ $messages['ja'] = array( ); /** Jutish (jysk) - * @author Christian List * @author Huslåke * @author Ælsån */ @@ -2025,9 +2020,9 @@ $messages['jut'] = array( 'captcha-edit' => 'For at redigere denne side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', 'captcha-desc' => 'Semple captcha implementåsje', # Fuzzy 'captcha-addurl' => 'Din redigering tilføjer nye eksterne henvisninger til artiklen. Som beskyttelse mod automatiseret spam, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', # Fuzzy - 'captcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du give svaret på regnestykket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', + 'captcha-badlogin' => 'For at beskytte mod automatiserede gæt på kodeord, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', # Fuzzy 'captcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugernavne, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', # Fuzzy - 'captcha-createaccount-fail' => 'Forkert eller manglende bekræftelseskode.', + 'captcha-createaccount-fail' => 'Forkert eller manglende kodeord.', 'captcha-create' => 'For at oprette en ny side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):', 'captchahelp-title' => 'Captcha-hjælp', 'captchahelp-cookies-needed' => 'Din browser skal understøtte cookies, før dette kan gennemføres.', @@ -2213,9 +2208,9 @@ Bet öñdewine qaýtw barw üşin «Artqa» degen tüýmesin basıñız.', # Fuz $messages['km'] = array( 'captcha-edit' => 'ដើម្បីកែប្រែទំព័រនេះ សូមដោះស្រាយប្រមាណវិធីបូកខាងក្រោមនេះរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់សិន([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', 'captcha-desc' => 'ផ្ដល់បច្ចេកទេស CAPTCHA ដើម្បីការពារពីស្ប៉ាមនិងការការទាយពាក្យសំងាត់', - 'captcha-addurl' => 'កំណែរបស់អ្នកមានតំណភ្ជាប់ក្រៅថ្មី។ ដើម្បីជួយបង្ការស្ប៉ាមស្វ័យប្រវត្តិ សូមដោះស្រាយប្រមាណវិធីបូកខាងក្រោមនេះរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់សិនមុនពេលរក្សាទុកកំណែរបស់អ្នក([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', - 'captcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសម្ងាត់ដោយស្វ័យប្រវត្តិ សូមដោះស្រាយផលបូកខាងក្រោមរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', - 'captcha-createaccount' => 'ដើម្បីបង្ការការបង្កើតគណនីស្វ័យប្រវត្តិ សូមដោះស្រាយប្រមាណវិធីបូកខាងក្រោមនេះរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់សិន([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', + 'captcha-addurl' => 'កំណែរបស់អ្នកមានតំណភ្ជាប់ក្រៅថ្មី។ ដើម្បីជួយបង្ការស្ប៉ាមស្វ័យប្រវត្តិ សូមដោះស្រាយប្រមាណវិធីបូកខាងក្រោមនេះរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់សិន([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy + 'captcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសំងាត់ដោយស្វ័យប្រវត្តិ សូមដោះស្រាយផលបូកខាងក្រោមរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy + 'captcha-createaccount' => 'ដើម្បីបង្ការការបង្កើតគណនីស្វ័យប្រវត្តិ សូមដោះស្រាយប្រមាណវិធីបូកខាងក្រោមនេះរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់សិន([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy 'captcha-createaccount-fail' => 'កូដផ្ទៀងផ្ទាត់បាត់បង់ឬមិនត្រឹមត្រូវ។', 'captcha-create' => 'ដើម្បីបង្កើតទំព័រ សូមដោះស្រាយប្រមាណវិធីបូកខាងក្រោមនេះរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់សិន([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', 'captchahelp-title' => 'ជំនួយអំពី Captcha', @@ -2363,11 +2358,11 @@ Fir dës Wiki virun automatiséiertem Spam ze schütze froe mir Iech fir déi fo 'captcha-disabledinapi' => 'Dës Aktioun brauch e Captcha, dofir ka se net mat enger API gemaach ginn.', 'captchahelp-title' => 'Captcha-Hëllef', 'captchahelp-cookies-needed' => 'Dir musst Cookien an Ärem Browser erlabe fir dat dëst funktionéiert.', - 'captchahelp-text' => "Websäiten, déi et jiddwerengem erlaben Ännerunge virzehuelen, sou wéi op dëser Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen. Sou Spam-Linke kënne wuel geläscht ginn, mä se sinn trotzdem eng grouss Plo. + 'captchahelp-text' => "Websäiten, déi et jiddwerengem erlaben Ännerunge virzehuelen, sou wéi op dëser Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen. Esou Spam-Linke kënne wuel geläscht ginn, mä se sinn trotzdem eng grouss Plo. Heiansdo, besonnesch wann nei Internet-Linken op eng Säit derbäigesat ginn, weist dës Wiki Iech e Bild mat faarwegem oder verzerrtem Text a freet Iech fir déi gewise Wierder anzetipppen. Well dëst eng Aufgab ass déi schwéier ze automatiséieren ass, erlaabt dëst, datt Mënschen hir Ännerunge kënnen agi während déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn. -Leider kann dat zu Schwierigkeete féiere fir Persounen déi net sou gutt gesinn oder déi text-baséiert oder sprooch-baséiert Browser benotzen. +Leider kann dat zu Schwierigkeete féiere fir Persounen déi net esou gutt gesinn oder déi text-baséiert oder sprooch-baséiert Browser benotzen. Zu dësem Zäitpunkt hu mir leider keng audio-Alternativ zu eiser Verfügung. Kontaktéiert w.e.g. [[Special:ListAdmins|een Administrateur]] fir Hëllef wann dëst iech onerwaarter Weis vu legitimen Editen ofhält. @@ -2785,9 +2780,9 @@ Mit den „Trüch“-Knopp vun dien Browser kummst du trüch na dat Ännerfinste */ $messages['nds-nl'] = array( 'captcha-edit' => "Um disse zied te bewarken, mu'j eerst t antwoord op disse eenvoudige somme invullen ([[Special:Captcha/help|meer informasie]]):", - 'captcha-desc' => 'Biedt CAPTCHA-technieken um bescharming te biejen tegen spam en t raojen van wachtwoorden', + 'captcha-desc' => 'Biejt CAPTCHA-technieken um bescharming te biejen tegen moekpost en t raojen van wachtwoorden', 'captcha-addurl' => 'In joew bewarking staon nieje uutgaonde verwiezingen. -Vul ter de bescharming van disse wiki tegen automatiese moekbiedragen t antwoord op de somme in, in t invoerveld dat hieronder steet, um joew bewarking op te slaon:
+Vul ter de bescharming van disse wiki tegen automatiese moekpost t antwoord op de somme in, in t invoerveld dat hieronder steet, um joew bewarking op te slaon:
([[Special:Captcha/help|meer informasie]])', 'captcha-badlogin' => 'Vul ter de bescharming van disse wiki tegen t automaties kraken van wachtwoorden t antwoord op de somme in, in t invoerveld ([[Special:Captcha/help|meer informasie]]):', 'captcha-createaccount' => 'Vul ter bescharming van disse wiki tegen t automaties anmaken van gebrukers t antwoord op de somme in, in t invoerveld ([[Special:Captcha/help|meer informasie]]):', @@ -2915,10 +2910,9 @@ Trykk på «attende»-knappen for å kome tilbake til endringssida.', */ $messages['oc'] = array( 'captcha-edit' => "Per modificar aquesta pagina, vos cal efectuar lo calcul çaijós e n'inscriure lo resultat dins lo camp ([[Special:Captcha/help|Mai d’entresenhas]]) :", - 'captcha-desc' => 'Ofèrta de tecnicas CAPTCHA per protegir contra lo spam e la descobèrta dels senhals per ensages multiples', + 'captcha-desc' => 'Implementacion captcha simpla', # Fuzzy 'captcha-label' => 'CAPTCHA', - 'captcha-addurl' => "Vòstra modificacion inclutz de ligams extèrnes. -Per nos ajudar dins la proteccion contra lo corrièr indesirable automatizat, calculatz l'operacion simpla çaijós e inscrivissètz-ne lo resultat dins lo camp ([[Special:Captcha/help|mai d'informacions]]) :", + 'captcha-addurl' => "Vòstra modificacion inclutz de ligams URL novèla ; per empachar las connexions automatizadas, vos cal picar los mots que s’afichan dins l’imatge que seguís :
([[Special:Captcha/help|Qu'es aquò?]])", # Fuzzy 'captcha-badlogin' => "Per ensajar de contornar las temptativas de cracatge de senhals automatizadas per de robòts, recopiatz lo tèxte çaijós dins la bóstia de tèxte plaçada al dejós d'aqueste. ([[Special:Captcha/help|Mai d’entresenhas]])", # Fuzzy 'captcha-createaccount' => 'Coma proteccion contra las creacions de compte abusivas, entratz lo resultat de l’addicion dins la bóstia çaijós:
([[Special:Captcha/help|mai d’entresenhas]])', # Fuzzy @@ -3222,7 +3216,6 @@ Pressione o botão 'voltar' de seu navegador para retornar à página de ediçã * @author AlimanRuna */ $messages['qu'] = array( - 'captcha-badlogin' => 'Wikita kikinmanta millay ruraq yaykuna rima chamqaymanta amachanapaqqa, kay qatiq yapayta ruraspa yapasqata kahachapi yaykuchiy ([[Special:Captcha/help|astawan yachay]]):', 'captchahelp-title' => 'Captcha nisqamanta yanapay', ); @@ -4135,8 +4128,7 @@ Nhấn chuột vào nút “Back” của trình duyệt để trở lại trang */ $messages['vo'] = array( 'captcha-edit' => 'Ad redakön yegedi at, dunolös, begö! saedami dono e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):', - 'captcha-addurl' => 'Redakam olik keninükon yümis plödik nulik. -Ad jelön siti ta peneds badik itjäfidik, dunolös, begö! saedami balugik sököl, e penolös saedoti in bokil ad dakipön redakam ola ([[Special:Captcha/help|nüns pluik]]):', + 'captcha-addurl' => 'Redakam olik keninükon yümis plödik nulik. Ad jelön siti ta peneds itjäfidik, dunolös, begö! saedami sököl, e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):', # Fuzzy 'captcha-badlogin' => 'Ad jelön siti ta daget itjäfidik letavödas, dunolös, begö! saedami sököl e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):', # Fuzzy 'captcha-createaccount' => 'Ad jelön siti ta kalijafam itjäfidik, dunolös, begö! saedami sököl e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):', # Fuzzy 'captcha-createaccount-fail' => 'Kot fümükama paneveräton u paseleton.', diff --git a/extensions/ConfirmEdit/FancyCaptcha.i18n.php b/extensions/ConfirmEdit/FancyCaptcha.i18n.php index 2ac1c973..7f28d048 100644 --- a/extensions/ConfirmEdit/FancyCaptcha.i18n.php +++ b/extensions/ConfirmEdit/FancyCaptcha.i18n.php @@ -37,8 +37,7 @@ $messages['qqq'] = array( 'fancycaptcha-create' => '{{Related|ConfirmEdit-create}}', 'fancycaptcha-edit' => '{{Related|ConfirmEdit-edit}}', 'fancycaptcha-sendemail' => '{{Related|ConfirmEdit-sendemail}}', - 'fancycaptcha-reload-text' => 'Prompts a click to get a new FancyCaptcha image. -{{Identical|Refresh}}', + 'fancycaptcha-reload-text' => 'Prompts a click to get a new FancyCaptcha image.', ); /** Gheg Albanian (Gegë) @@ -273,7 +272,7 @@ $messages['cdo'] = array( * @author Умар */ $messages['ce'] = array( - 'fancycaptcha-addurl' => 'Хьан нисдар чохь керла арахьара хьажорагаш ю. Спамах лардала дехар до лахахь гура чохь гайтан дешнаш язъе ([[Special:Captcha/help|ма-дарра…]]):', + 'fancycaptcha-addurl' => 'Хьан нисдар чохь керла арахьара хьажоригаш ю. Спамах лардала дерхар до лахахь гура чохь гайтан дешнаш язъе ([[Special:Captcha/help|ма-дарра…]]):', # Fuzzy ); /** Sorani Kurdish (کوردی) @@ -283,19 +282,17 @@ $messages['ckb'] = array( 'fancycaptcha-createaccount' => 'بۆ یارمەتیدانی بەرگری لە دروستکردنی خۆکاری ھەژمار، تکایە ئەو وشانە لە خوارەوەدا دیارن لە بۆکسەکەدا بنووسە ([[Special:Captcha/help|زانیاریی زۆرتر]]):', # Fuzzy ); -/** Czech (čeština) +/** Czech (česky) * @author Mormegil - * @author Tchoř */ $messages['cs'] = array( 'fancycaptcha-desc' => 'Pokročilý generátor captcha pro rozšíření „Confirm Edit“', - 'fancycaptcha-addurl' => 'Vaše editace obsahuje nové odkazy formou URL. -Abychom wiki ochránili před automatizovaným spamováním, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', - 'fancycaptcha-badlogin' => 'Abychom wiki ochránili proti automatizovaným pokusům uhodnout heslo, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', - 'fancycaptcha-createaccount' => 'Abychom wiki ochránili proti automatizovanému zakládání účtů, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', + 'fancycaptcha-addurl' => 'Vaše editace obsahuje nové odkazy formou URL; v zájmu ochrany před automatickým spamováním musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])', # Fuzzy + 'fancycaptcha-badlogin' => 'V rámci ochrany proti automatickým pokusům uhodnout heslo musíte opsat text z následujícího obrázku. ([[Special:Captcha/help|Co tohle znamená?]])', # Fuzzy + 'fancycaptcha-createaccount' => 'V rámci ochrany před automatickým zakládáním účtů musíte pro provedení registrace opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])', # Fuzzy 'fancycaptcha-create' => 'Abyste mohli založit stránku, musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])', 'fancycaptcha-edit' => 'Abyste mohli editovat tuto stránku, musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])', - 'fancycaptcha-sendemail' => 'Abychom wiki ochránili proti automatizovanému spamování, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', + 'fancycaptcha-sendemail' => 'V rámci ochrany proti automatickému spamování musíte opsat níže zobrazená slova ([[Special:Captcha/help|více informací]]):', # Fuzzy 'fancycaptcha-reload-text' => 'Vygenerovat nový kód', ); @@ -329,7 +326,7 @@ Er mwyn arbed y wici rhag peiriannau sbam, byddwch gystal â theipio'r geiriau a $messages['da'] = array( 'fancycaptcha-addurl' => 'Din ændring tilføjer nye eksterne henvisninger. For at beskytte mod automatiseret spam, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', - 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', + 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte kodeord, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', 'fancycaptcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugerkonti, der bruges til spam, skal du indtaste ordet som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', 'fancycaptcha-create' => 'For at oprette en ny side, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):', 'fancycaptcha-edit' => 'For at redigere denne side, indtast da venligst ordene, der står i feltet nedenfor ([[Special:Captcha/help|mere information]]):', @@ -484,13 +481,13 @@ $messages['eu'] = array( */ $messages['fa'] = array( 'fancycaptcha-addurl' => 'ویرایش شما حاوی پیوند به بیرون جدیدی است. -برای جلوگیری از هرزنگاری خودکار ویکی، ما با احترام از شما میخواهیم واژهای را که در تصویر میبینید در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', +برای کمک به جلوگیری از هرزنگاری خودکار، لطفاً واژهای را که در تصویر میبینید در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', # Fuzzy 'fancycaptcha-badlogin' => 'برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً واژهای را که در تصویر میبینید را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'fancycaptcha-createaccount' => 'برای کمک به جلوگیری از ایجاد خودکار حساب کاربری، ما با احترام از شما میخواهید واژهای را که در تصویر میبینید را در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', + 'fancycaptcha-createaccount' => 'برای کمک به جلوگیری از ایجاد خودکار حساب کاربری، لطفاً واژهای را که در تصویر میبینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', # Fuzzy 'fancycaptcha-create' => 'برای ایجاد این صفحه، لطفاً واژهای را که در تصویر میبینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'fancycaptcha-edit' => 'برای ویرایش این صفحه، لطفاً واژهای را که در تصویر میبینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'fancycaptcha-sendemail' => 'برای کمک به محافظت در برابر هرزهنگاری خودکار، ما با احترام از شما میخواهیم واژههایی را که در جعبهٔ زیر نمایش داده میشوند وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'fancycaptcha-reload-text' => 'تازهکردن', + 'fancycaptcha-sendemail' => 'برای کمک به محافظت در برابر هرزهنگاری خودکار، لطفاً واژههایی را که در جعبهٔ زیر نمایش داده میشوند وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', # Fuzzy + 'fancycaptcha-reload-text' => 'تازه کردن', ); /** Finnish (suomi) @@ -597,19 +594,18 @@ Zum Schutz vor automatisiertem Spamming gib des Wort in s Fäld unten yy. Druck ); /** Gujarati (ગુજરાતી) - * @author Ashok modhvadia * @author Dsvyas * @author Sushant savla */ $messages['gu'] = array( - 'fancycaptcha-addurl' => 'તમે કરેલા ફેરફારોમાં નવી બાહ્ય કડીઓ સામેલ છે. -વિકિને સ્વચાલિત સ્પેમ/સ્પામ(spam)થી બચાવવા માટે અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો. -([[Special:Captcha/help|વધુ વિગત]]):', - 'fancycaptcha-badlogin' => 'આપોઆપ થતી ગુપ્તસંજ્ઞાની ચોરી (password cracking)થી વિકિને બચાવવા માટે અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો. ([[Special:Captcha/help|વધુ વિગત]]):', - 'fancycaptcha-createaccount' => 'આપોઆપ નવા ખાતા ખુલતા રોકવા અને વિકીને તેનાથી બચાવવા માટે. અમે તમને જણાવીએ છીએ કે કૃપયા નીચે દેખાતા શબ્દો ખાનામાં લખો. ([[Special:Captcha/help|વધુ માહિતી]]):', + 'fancycaptcha-addurl' => 'તમારા ફેરફારમાં નવી બાહ્ય કડીઓ શામિલ છે. +તમે કરેલા ફેરફારોમાં નવી બાહ્ય કડીઓ સામેલ છે. સ્વચાલિત સ્પેમ/સ્પામ(spam) થી બચવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો +([[Special:Captcha/help|more info]]):', # Fuzzy + 'fancycaptcha-badlogin' => 'આપોઆપ થતી ગુપ્તસંજ્ઞાની ચોરી (password cracking)થી બચાવવા માટે નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|more info]]):', # Fuzzy + 'fancycaptcha-createaccount' => 'આપોઆપ નવા ખાતા ખુલતા રોકવા માટે નીચે દેખાતા શબ્દો ખાનામાં લખો ([[Special:Captcha/help|વધુ માહિતી]]):', # Fuzzy 'fancycaptcha-create' => 'પાનું બનાવવા માટે નીચે દેખાતા શબ્દો ખાનામાં ટાઈપ કરો ([[Special:Captcha/help|વધુ માહિતી]]):', 'fancycaptcha-edit' => 'આ પાનામાં ફેરફાર કરવા માટે નીચે દેખાતા શબ્દો ખાનામાં ટાઈપ કરો ([[Special:Captcha/help|વધુ માહિતી]]):', - 'fancycaptcha-sendemail' => 'વિકિને આપોઆપ થતી સ્પૅમીંગથી બચાવવા માટે. અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|વધુ માહિતી]]):', + 'fancycaptcha-sendemail' => 'આપોઆપ થતી સ્પૅમીંગથી બચાવવા માટે નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|more info]]):', # Fuzzy ); /** Hebrew (עברית) @@ -715,13 +711,13 @@ $messages['id'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'fancycaptcha-addurl' => 'Dagiti inurnosmo ket aglaon kadagiti baro a silpo ti ruar. -Tapno masalakniban ti wiki kadagiti automatiko nga spam, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', - 'fancycaptcha-badlogin' => 'Tapno masalakniban kadagiti automatiko a panagsulbar ti kontrasenias, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', - 'fancycaptcha-createaccount' => 'Tapno makasalakniban ti wiki kadagiti automatiko a panagpartuat ti pakabilangan, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', + 'fancycaptcha-addurl' => 'Ti inurnos mo ket adda nagyan na a baro a panilpo ti ruar. +Tapno masalakniban kadagiti automatiko a spam, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy + 'fancycaptcha-badlogin' => 'Tapno masalakniban kadagiti automatiko a pinagsulbar ti kontrasenias, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy + 'fancycaptcha-createaccount' => 'Tapno makasalaknib kadagiti automatiko a pinagaramid ti pakabilangan, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy 'fancycaptcha-create' => 'Tapno makaaramid ti panid, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', 'fancycaptcha-edit' => 'Tapno makaurnos daytoy a panid, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', - 'fancycaptcha-sendemail' => 'Tapno makasalakniban ti wiki kadagiti automatiko a panag-spam, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', + 'fancycaptcha-sendemail' => 'Tapno makasalaknib kadagiti automatiko a pinagspam, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy 'fancycaptcha-reload-text' => 'Pasadiwaen', ); @@ -774,12 +770,11 @@ $messages['ja'] = array( ); /** Jutish (jysk) - * @author Christian List * @author Huslåke */ $messages['jut'] = array( 'fancycaptcha-addurl' => 'Din ændring tilføjer nye eksterne henvisninger. For at beskytte mod automatiseret spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):', # Fuzzy - 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du indtaste ordet som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', + 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte kodeord, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):', # Fuzzy 'fancycaptcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugernavne, der bruges til spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):', # Fuzzy 'fancycaptcha-create' => 'For at oprette en ny side, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):', 'fancycaptcha-edit' => 'or at redigere denne side @@ -803,12 +798,12 @@ $messages['jv'] = array( */ $messages['ka'] = array( 'fancycaptcha-addurl' => 'თქვენი ცვლილება შეიცავს ახალ გარე ბმულებს. -ვიკის ავტომატური სპამინგისგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', - 'fancycaptcha-badlogin' => 'ვიკის პაროლების ავტომატური გატეხვისგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', - 'fancycaptcha-createaccount' => 'ვიკის ანგარიშების ავტომატური რეგისტრაციისაგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ნაჩვენები სიმბოლოები ტექსტურ ველში ([[Special:Captcha/help|დეტალურად]]):', +ავტომატური სპამინგისგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', # Fuzzy + 'fancycaptcha-badlogin' => 'პაროლების ავტომატური გატეხვისგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', # Fuzzy + 'fancycaptcha-createaccount' => 'ანგარიშების ავტომატური რეგისტრაციისაგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ნაჩვენები სიმბოლოები ტექსტურ ველში ([[Special:Captcha/help|დეტალურად]]):', # Fuzzy 'fancycaptcha-create' => 'გვერდის შესაქმნელად, გთხოვთ, შეიყვანეთ ასოები, რომლებიც ნაჩვენებია ქვედა სურათზე ([[Special:Captcha/help|დეტალურად…]]):', 'fancycaptcha-edit' => 'გვერდის რედაქტირებისათვის, გთხოვთ, შეიყვანეთ ასოები, რომლებიც ნაჩვენებია ქვედა სურათზე ([[Special:Captcha/help|დეტალურად…]]):', - 'fancycaptcha-sendemail' => 'ვიკის ავტომატური სპამისაგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვევით ნაჩვენები სიტყვა ტექსტურ ველში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', + 'fancycaptcha-sendemail' => 'ავტომატური სპამისაგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ქვევით ნაჩვენები სიტყვა ტექსტურ ველში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', # Fuzzy ); /** Kara-Kalpak (Qaraqalpaqsha) @@ -873,9 +868,9 @@ tömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/h $messages['km'] = array( 'fancycaptcha-addurl' => 'កំណែប្រែរបស់អ្នកមានតំណភ្ជាប់ខាងក្រៅ។ -ដើម្បីការពារពីស្ប៉ាមស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', - 'fancycaptcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសម្ងាត់ដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', - 'fancycaptcha-createaccount' => 'ដើម្បីការពារការបង្កើតគណនីដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', +ដើម្បីការពារពីស្ប៉ាម(spam)ស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy + 'fancycaptcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសំងាត់ដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy + 'fancycaptcha-createaccount' => 'ដើម្បីការពារការបង្កើតគណនីដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy 'fancycaptcha-create' => 'ដើម្បីបង្កើតទំព័រនេះ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', 'fancycaptcha-edit' => 'ដើម្បីកែប្រែទំព័រនេះ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', ); @@ -1128,12 +1123,12 @@ As Schutz gegen automaatsch Spam, geev disse Bookstavenreeg in dat Feld ünnen i */ $messages['nds-nl'] = array( 'fancycaptcha-addurl' => "Joew bewarking bevat uutgaonde verwiezingen. -Um dit projekt te bescharmen tegen automatiese spam, mu'j t woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):", +Um dit projekt te bescharmen tegen ongewunste reklame, mu'j t woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-badlogin' => "Um disse webstee te beveiligen tegen t kraken van wachtwoorden, mu'j de woorden die'j hieronder zien effen invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-createaccount' => "Um disse wiki te bescharmen tegen t automaties anmaken van gebrukersprofielen mu'j t woord hieronder invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-create' => "Um n pagina an te maken, mö'j t woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):", - 'fancycaptcha-edit' => 'Vul de woorden die hieronder staon in um disse zied te bewarken ([[Special:Captcha/help|hulpe]]):', + 'fancycaptcha-edit' => "Joew bewarking bevat nieje uutgaonde verwiezingen. Um disse wiki te bescharmen tegen ongewunste reklame mö'j de woorden hieronder invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-sendemail' => 'Voer de woorden die hieronder staon in t invoerveld in as bescharming tegen automatiese ongewunste reklame ([[Special:Captcha/help|hulpe]]):', 'fancycaptcha-reload-text' => 'Verniejen', @@ -1287,14 +1282,6 @@ $messages['pt-br'] = array( 'fancycaptcha-reload-text' => 'Atualizar', ); -/** Quechua (Runa Simi) - * @author AlimanRuna - */ -$messages['qu'] = array( - 'fancycaptcha-create' => "P'anqata kamarinaykipaqqa kay qatiq kahachapi kaq rimakunata yaykuchiy ([[Special:Captcha/help|astawan yachay]]):", - 'fancycaptcha-edit' => "Kay p'anqata llamk'anaykipaqqa kay qatiq kahachapi kaq rimakunata yaykuchiy ([[Special:Captcha/help|astawan yachay]]):", -); - /** Romansh (rumantsch) * @author Kazu89 */ @@ -1757,10 +1744,10 @@ $messages['zh-hans'] = array( $messages['zh-hant'] = array( 'fancycaptcha-addurl' => '您的編輯內容中含有本網站以外的連結。 為防止不當程式大量破壞,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', - 'fancycaptcha-badlogin' => '為幫助wiki防範可自動破解密碼之不當程式,我們請您鍵入下面資訊框中的單詞([[Special:Captcha/help|相關資訊]]):', - 'fancycaptcha-createaccount' => '為幫助wiki防範可自動創建賬戶之不當程式,我們請您鍵入下面資訊框中的單詞([[Special:Captcha/help|相關資訊]]):', + 'fancycaptcha-badlogin' => '為防止不當程式破解密碼,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', # Fuzzy + 'fancycaptcha-createaccount' => '為防止不當程式大量建立帳戶,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', # Fuzzy 'fancycaptcha-create' => '為防止不當程式大量建立頁面,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', 'fancycaptcha-edit' => '如您想要編輯此頁面,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', - 'fancycaptcha-sendemail' => '為幫助wiki防範垃圾電郵,我們請您鍵入下面資訊框中的單詞([[Special:Captcha/help|相關資訊]]):', + 'fancycaptcha-sendemail' => '為防止不當程式進行破壞,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', # Fuzzy 'fancycaptcha-reload-text' => '重新整理', ); diff --git a/extensions/ConfirmEdit/FancyCaptcha.php b/extensions/ConfirmEdit/FancyCaptcha.php index cbabb4a0..46002e22 100644 --- a/extensions/ConfirmEdit/FancyCaptcha.php +++ b/extensions/ConfirmEdit/FancyCaptcha.php @@ -62,7 +62,6 @@ $wgAutoloadClasses['FancyCaptcha'] = $dir . '/FancyCaptcha.class.php'; $wgResourceModules['ext.confirmEdit.fancyCaptcha.styles'] = array( 'localBasePath' => $dir . '/resources', 'remoteExtPath' => 'ConfirmEdit/resources', - 'targets' => array( 'mobile', 'desktop' ), 'styles' => 'ext.confirmEdit.fancyCaptcha.css', ); @@ -73,15 +72,5 @@ $wgResourceModules['ext.confirmEdit.fancyCaptcha'] = array( 'dependencies' => 'mediawiki.api', ); -// FIXME: remove, add mobile target to ext.confirmEdit.fancyCaptcha and update -// MobileFrontend accordingly when bug 57629 is resolved -$wgResourceModules['ext.confirmEdit.fancyCaptchaMobile'] = array( - 'localBasePath' => $dir . '/resources', - 'remoteExtPath' => 'ConfirmEdit/resources', - 'scripts' => 'ext.confirmEdit.fancyCaptcha.js', - 'targets' => array( 'mobile', 'desktop' ), - 'dependencies' => 'mobile.startup', -); - $wgAutoloadClasses['ApiFancyCaptchaReload'] = $dir . '/ApiFancyCaptchaReload.php'; $wgAPIModules['fancycaptchareload'] = 'ApiFancyCaptchaReload'; diff --git a/extensions/ConfirmEdit/QuestyCaptcha.i18n.php b/extensions/ConfirmEdit/QuestyCaptcha.i18n.php index 949449fd..ddf2ab6a 100644 --- a/extensions/ConfirmEdit/QuestyCaptcha.i18n.php +++ b/extensions/ConfirmEdit/QuestyCaptcha.i18n.php @@ -793,7 +793,7 @@ Fir d'Wiki géint automatesche Spam-Ännerungen ze schützen, froe mir Iech d'Fr 'questycaptcha-edit' => "Fir dës Säit z'änneren, beäntwert w.e.g. déi Fro hei ënnedrënner ([[Special:Captcha/help|méi Informatiounen]]):", 'questycaptcha-sendemail' => 'Fir ze hëllefe dës Wiki géint automatiséierte Spam ze schütze, beäntwert w.e.g. déi Fro hei ënnendrënner ([[Special:Captcha/help|méi Informatiounen]]):', 'questycaptchahelp-text' => "Websäiten, déi et jiddwerengem erlaben Ännerunge virzehuelen, sou wéi dës Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen. -Sou Spam-Linke kënne wuel geläscht ginn, mä si sinn trotzdem eng grouss Plo. +Esou Spam-Linke kënne wuel geläscht ginn, mä si sinn trotzdem eng grouss Plo. Heiansdo, besonnesch wann nei Internet-Linken op eng Säit derbäigesat ginn, freet dës Wiki Iech eng Fro ze beäntwerten. Well dëst eng Aufgab ass déi schwéier z'automatiséieren ass, erlaabt dëst datt Mënschen hir Ännerunge kënnen agi während déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn. diff --git a/extensions/Gadgets/Gadgets.alias.php b/extensions/Gadgets/Gadgets.alias.php index 3b041c51..7f3307a5 100644 --- a/extensions/Gadgets/Gadgets.alias.php +++ b/extensions/Gadgets/Gadgets.alias.php @@ -59,7 +59,7 @@ $specialPageAliases['ce'] = array( 'Gadgets' => array( 'Гаджеташ' ), ); -/** Czech (čeština) */ +/** Czech (česky) */ $specialPageAliases['cs'] = array( 'Gadgets' => array( 'Udělátka' ), ); diff --git a/extensions/Gadgets/Gadgets.i18n.php b/extensions/Gadgets/Gadgets.i18n.php index 2a754600..2cef466a 100644 --- a/extensions/Gadgets/Gadgets.i18n.php +++ b/extensions/Gadgets/Gadgets.i18n.php @@ -634,15 +634,15 @@ Heu de tenir els permisos adequats en el wiki de destinació (incloent-hi els pe */ $messages['ce'] = array( 'gadgets-desc' => 'Атто бо декъашхошна харжам ба [[Special:Preferences#mw-prefsection-gadgets|гIирс нисбарца]] CSS- а JavaScript-хIоттончаш, лато лууш йерш', # Fuzzy - 'prefs-gadgets' => 'Гаджеташ', - 'gadgets-prefstext' => 'Лаххьа балийна леррина гаджеташ могӀам, шуьга шайга латалур йолуш хьай долахь долучу дакъан. -ХӀара гаджеташ дуккхачу хьолехь болх беш ю оцу JavaScript тӀехь, цундела аша латоеза JavaScript шай браузер чохь, цаьрга болх байта. -Диц маделаш, хӀара гаджеташ болх бяш яц хӀо гӀирс нисбо агӀон чохь. + 'prefs-gadgets' => 'Хlоттончаш', + 'gadgets-prefstext' => 'Лаххьа балийна леррина хlоттончаш могlам, шуьга шайга латалур йолуш хьай долахь долучу дакъан. +Хlара хlоттончаш дукхачу хьоляхь болх беш ю оцу JavaScript тlяхь, цундела аша латоеза JavaScript шай дуьнена машан гlирса чохь, цаьрга болх байта. +Диц маделаш, хlара хlоттончаш болх бяш яз хlо гlирс нисбо агlон чохь. -Ишта диц маде, хӀара гаджеташ юкъа йогуш яц кху MediaWiki гlирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю. +Ишта диц маде, хlара хlоттончаш юкъа йогуш яз кху MediaWiki гlирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю. Адманкуьйгалхошка шайг хийцало и хlоттончи могlам, хlокх могlам гlонца [[MediaWiki:Gadgets-definition|къастам бало]] а [[Special:Gadgets|церах лаьцна]].', - 'gadgets' => 'Гаджеташ', - 'gadgets-title' => 'Гаджеташ', + 'gadgets' => 'Хlоттончаш', + 'gadgets-title' => 'Хlоттончаш', 'gadgets-pagetext' => 'Гlирса хааман могlамаш, къастош йолу хlоттончи цlераш, хуьлаш йолу хIокху [[MediaWiki:Gadgets-definition|къастамца]]]]. ХIокху могIамо атто бо гIирсан хаамаш атта тIе кхочуш барца, цуьнах лаьцна хIоттош а йолш йолучу хIоттончи ишарца.', # Fuzzy 'gadgets-uses' => 'Лелош йу', @@ -1116,7 +1116,7 @@ $1', 'gadgets-export-text' => 'برای برونبری ابزار $1، بر دکمهٔ «{{int:gadgets-export-download}}» کلیک کنید، پروندهٔ بارگیریشده را ذخیره کنید، به ویژه:درونریزی در ویکی مقصد بروید و بارگذاریاش کنید. سپس این را به صفحهٔ مدیاویکی:Gadgets-definition بیفزایید:$2لازم است تا در ویکی مقصد دسترسیهای مناسب (شامل حق ویرایش پیغامهای سامانه) را داشته باشید و درونریزی از بارگذاریهای پرونده باید فعال شده باشد.', - 'gadgets-export-download' => 'دریافت', + 'gadgets-export-download' => 'بارگیری', ); /** Finnish (suomi) @@ -1380,7 +1380,6 @@ Special:Import નિયોજીત વિકિ પર Special:Import પર /** Hebrew (עברית) * @author Amire80 * @author Guycn1 - * @author Guycn2 * @author Rotem Liss * @author YaronSh */ @@ -1402,7 +1401,7 @@ $messages['he'] = array( $1', 'gadgets-required-skins' => 'זמין {{PLURAL:$2|בערכות העיצוב הבאות: $1|בערכת העיצוב $1}}', - 'gadgets-default' => 'מופעל לכולם כברירת מחדל.', + 'gadgets-default' => 'מופעל לכולם לפי בררת מחדל.', 'gadgets-export' => 'יצוא', 'gadgets-export-title' => "יצוא גאדג'טים", 'gadgets-not-found' => 'הגאדג׳ט "$1" לא נמצא.', @@ -1638,32 +1637,32 @@ Anda harus memeroleh izin pada wiki tujuan (termasuk hak menyunting pesan sistem * @author Lam-ang */ $messages['ilo'] = array( - 'gadgets-desc' => 'Agpalubos kadagiti agar-aramat nga agpili kadagiti naiduma a [[Special:Gadgets|CSS ken JavaScript a gadget]] iti [[Special:Preferences#mw-prefsection-gadgets|kakaykayatanda]]', - 'prefs-gadgets' => 'Dagiti gadget', - 'gadgets-prefstext' => 'Dita baba ket listaan kadagiti naipangruna a gadget a mabalinmo a pakabaelan iti pakabilangam. -Dagitoy a gadget ket naibatay iti JavaScript, isunga masapul a pakabaelan ti JavaScript idiay "pagbasabasam" tapno agbalin dagitoy. -Laglagipen a dagitoy a gadget ket awan ti pagbanaganna iti daytoy panid ti kakaykayatan. - -Laglagipen pay a dagitoy a naipangruna a gadget ket saan a paset ti sopwer ti MediaWiki, ken kadawyan a pinarang-ay ken tinartaripato babaen dagiti agar-aramat iti lokal a wiki. -Dagiti lokal nga administrador ket mabalinda nga urnosen dagiti [[MediaWiki:Gadgets-definition|panangipalplawag]] ken dagiti [[Special:Gadgets|deskripsion]] dagiti magun-od a gadget.', - 'gadgets' => 'Dagiti gadget', - 'gadgets-title' => 'Dagiti gadget', - 'gadgets-pagetext' => 'Dita baba ket listaan dagiti naipangruna a gadget a mabalin a pakabaelan dagiti agar-aramat iti bukodda a [[Special:Preferences#mw-prefsection-gadgets|panid ti kakaykayatan]], a kas naipalawag babaen dagiti [[MediaWiki:Gadgets-definition|pannakaipalawag]]. -Daytoy a nakabuklan ket mangted ti nalaka a panagserrek kadagiti panid ti mensahe ti sistema a mangipalawag ti tungngal maysa a deskripsion ken kodigo ti gadget.', + 'gadgets-desc' => 'Mabalin dagiti agar-aramat nga agpili iti [[Special:Gadgets|CSS ken JavaScript gadgets]] idiay [[Special:Preferences#mw-prefsection-gadgets|kaykayat da]]', + 'prefs-gadgets' => 'Gadgets', + 'gadgets-prefstext' => 'Adda dita baba ti listaan ti naipangruna a gadgets nga usaren idiay pakabilangam. +Dagitoy a gadgets ket naibasta iti JavaScript, masapul a pakabaelan ti JavaScript idiay "pagbasabasam" tapno agbalin da. +Saan a mabalin nga usaren dagitoy a gadgets ditoy kaykayat a panid. + +Dagitoy a gadgets ket saan a paset ti MediaWiki software, inaramid ken inayaywanan dagiti agar-aramat ti lokal a wiki. +Mabaliwan dagita administrador nga urnosen ti [[MediaWiki:Gadgets-definition|pinakailawag]] ken [[Special:Gadgets|deskripsion]] ti gadgets.', + 'gadgets' => 'Gadgets', + 'gadgets-title' => 'Gadgets', + 'gadgets-pagetext' => 'Dita baba ket adda listaan dagiti naipangruna a gadgets a dagiti agar-aramat ket mapagbalin da idiay [[Special:Preferences#mw-prefsection-gadgets|kaykayat da a panid]], a naipalawag iti [[MediaWiki:Gadgets-definition|dagiti pinakailawag]]. +Daytoy a pinakabuklan ket mangted ti nalaka a pinagserrek kadagit mensahe ti sistema a panid a nagpailawag iti deskripsion ti gadget ken kodigo.', 'gadgets-uses' => 'Usar', - 'gadgets-required-rights' => 'Masapul ti sumaganad a {{PLURAL:$2|karbengan|karkarbengan}}: + 'gadgets-required-rights' => 'Masapul dagiti sumaganad {{PLURAL:$2|a karbengan|dagiti karbengan}}: $1', - 'gadgets-required-skins' => 'Mabalin a magun-od {{PLURAL:$2|iti $1 a kudil|kadagiti sumaganad a kudil: $1}}.', - 'gadgets-default' => 'Pakabaelan a kasisigud para kadagiti amin.', + 'gadgets-required-skins' => 'Adda mabalin idiay {{PLURAL:$2|$1 a kudil|dagiti sumaganad a kudil: $1}}.', + 'gadgets-default' => 'Pakabaelan a kinasigud iti amin nga agar-aramat.', 'gadgets-export' => 'Agipan', 'gadgets-export-title' => 'Agipan ti gadget', 'gadgets-not-found' => 'Saan a nabirukan ti "$1" a gadget.', - 'gadgets-export-text' => 'Ti panag-ipan ti $1 a gadget, pinduten ti buton ti "{{int:gadgets-export-download}}", idulin ti naikarga a papeles, -mapan idiay Special:Import iti papanan a wiki ken ikarganto. Kalpasanna inayon dagiti sumaganad idiay panid ti MediaWiki:Gadgets-definition: + 'gadgets-export-text' => 'Ti pinag-ipan ti $1 a gadget, agtakla idiay "{{int:gadgets-export-download}}" a buton, idulin ti inkarga nga agpababa a papeles, +mapan idiay Special:Import ti papanan a wiki ken ikarga nga agpangato. Ken inayon dagiti sumaganad idiay MediaWiki:Gadgets-definition page:$2-Nasken nga addaanka ti maitunos a pammalubos iti papanan a wiki (mairaman ti karbengan a panag-urnos kadagiti mensahe ti sistema) ken nasken a napakabaelan ti panagikarga kadagiti papeles.', - 'gadgets-export-download' => 'Agikaraga', +Masapul nga addaan ka ti husto a pammalubos iti papanan a wiki (nairaman ti karbegnan a pinagbaliw dagiti mensahe ti sistema) ken naipabalin ti pinagala kadagiti naggapu a papeles a naikarga nga agpangato.', + 'gadgets-export-download' => 'Ikarga nga agpababa', ); /** Ido (Ido) @@ -1873,23 +1872,18 @@ $messages['kk-arab'] = array( */ $messages['kk-cyrl'] = array( 'prefs-gadgets' => 'Қажет құралдар', - 'gadgets-prefstext' => 'Төменде өз тіркелгіңізде қоса алатын арнаулы қажет құралдар тізімі берілген. -Осы қажет құралдар көбінесе JavaScript әмірлеріне негізделеді, сондықтан бұлар жұмыс істеуі үшін шолғышыңызда JavaScript қосылған болуы керек. -Бұл баптау бетіне осы қажет құралдар әсер етпейтінін ескеріңіз. + 'gadgets-prefstext' => 'Төменде өз тіркелгіңізде қоса алатын арнаулы қажет құралдар тізімі беріледі. +Осы қажет құралдар көбінесе JavaScript әмірлеріне негізделінеді, сондықтан бұлар жұмыс істеуі үшін шолғышыңызда JavaScript қосылған болуы керек. +Бұл баптау бетіне осы қажет құралдар әсер етпейтінің ескеріңіз. -Тағы да ескеріңіз: осы қажет құралдар MediaWiki бағдарламасының бөлігі емес және бұларды әдетте сіздің жергілікті уикиіңіздің қатысушылары дамытады және қоштайды. -Жергілікті [[Project:Әкімшілер|әкімшілер]] жетімді гаджеттерді [[MediaWiki:Gadgets-definition]] және [[special:Gadgets]] беттері арқылы +Тағы да ескеріңіз: осы қажет құралдар MediaWiki бағдарламасының бөлігі емес, және де бұларды жайшылықта жергілікті уикидің қатысушылары дамытады және қоштайды. +Жергілікті әкімшілер жетімді қажет нәрсе тізімін [[{{ns:mediawiki}}:Gadgets-definition]] және [[{{ns:special}}:Gadgets]] беттері арқылы өңдей алады.', # Fuzzy 'gadgets' => 'Қажет құралдар', 'gadgets-title' => 'Қажет құралдар', - 'gadgets-pagetext' => 'Төменде қатысушылар өзінің [[Special:Preferences#mw-prefsection-gadgets|баптауларынан]] қоса алатын арнаулы қажет құралдар тізімі берілген. [[MediaWiki:Gadgets-definition]] шолу беті арқылы әрбір қажет құралдың сипаттамасы мен әмірін анықтайтын жүйе хабар беттеріне жеңіл қатынай аласыз.', + 'gadgets-pagetext' => 'Төменде арнаулы қажет құралдар тізімі беріледі. [[{{ns:mediawiki}}:Gadgets-definition]] бетінде анықталған қажет құралдарды қатысушылар өзінің баптауында қоса алады. +Бұл шолу беті арқылы әрбір қажет құралдың сипаттамасы мен әмірін анықтайтын жүйе хабар беттеріне жеңіл қатынай аласыз.', # Fuzzy 'gadgets-uses' => 'Қолданыстағылар', - 'gadgets-required-rights' => 'Келесі {{PLURAL:$2|құқықты|құқықтарды}} қажет етеді: $1', - 'gadgets-default' => 'Әркімге автоматты түрде қосылады.', - 'gadgets-export' => 'Экспорттау', - 'gadgets-export-title' => 'Гаджетті экспорттау', - 'gadgets-not-found' => '"$1" гаджеті табылмады.', - 'gadgets-export-download' => 'Түсіру', ); /** Kazakh (Latin script) (qazaqşa (latın)) @@ -2057,7 +2051,7 @@ Ausserdeem sollt Dir wëssen, datt dës Gadgete generell net Deel vu MediaWiki s Lokal Wiki-Administrateure kënnen d'Lëscht von den disponibele Gadgeten op de Säiten [[MediaWiki:Gadgets-definition|Definitioune vun Gadgeten]] a [[Special:Gadgets|Beschreiwunge vu Gadgeten]] änneren.", 'gadgets' => 'Gadgeten', 'gadgets-title' => 'Gadgeten', - 'gadgets-pagetext' => "Ënnendrënner ass eng Lëscht vun de spezielle Gadgeten déi d'Benotzer op hire [[Special:Preferences#mw-prefsection-gadgets|Benotzer-Astellungen]] aschalte kënnen, sou wéi dat op [[MediaWiki:Gadgets-definition|definéiert]] ass. + 'gadgets-pagetext' => "Ënnendrënner ass eng Lëscht vun de spezielle Gadgeten déi d'Benotzer op hire [[Special:Preferences#mw-prefsection-gadgets|Benotzer-Astellungen]] aschalte kënnen, esou wéi dat op [[MediaWiki:Gadgets-definition|definéiert]] ass. Dës Iwwersiicht gëtt einfachen Zougang zu de Systemmessage-Säiten, déi all Gadget beschreiwen an zum Programméiercode vun dem Gadget.", 'gadgets-uses' => 'Benotzt', 'gadgets-required-rights' => "Erfuerdert {{PLURAL:$2|d'Recht|dës Rechter}}: $1.", @@ -2066,8 +2060,8 @@ Dës Iwwersiicht gëtt einfachen Zougang zu de Systemmessage-Säiten, déi all G 'gadgets-export' => 'Export', 'gadgets-export-title' => 'Export vu Gadgeten', 'gadgets-not-found' => 'Gadget "$1" net fonnt.', - 'gadgets-export-text' => 'Fir de Gadget $1 z\'exportéieren klickt w.e.g. op de(n) "{{int:gadgets-export-download}}"-Knäppchen, späichert den erofgelueden Fichier, gitt op Spezial:Import op der Zil-Wiki a luet en do erop. Duerno setzt der op d\'MediaWiki:Gadgets-Definitiouns Säit dëst derbäi:$2-Dir musst déi erfuerdert Rechter(inklusiv d\'Recht fir Systemmessagen z\'änneren) op der Zil-Wiki hunn an den Import vun eropgelueden Fichiere muss ageschalt sinn.', + 'gadgets-export-text' => 'Fir de Gadget $1 z\'exportéieren klickt w.e.g. op de(n) "{{int:gadgets-export-download}}"-Knäppchen, späichert den erofgelueden Fichier, gitt op Spezial:Import op der Zil-Wiki a lued en do erop. Duerno setzt der op d\'MediaWiki:Gadgets-Definitiouns Säit dëst derbäi:$2+Dir musst déi erfuerdert Rechter(inklusiv d\'Recht fir System-Messagen z\'änneren) op der Zil-Wiki hunn an den Import vun eropgelueden Fichiere muss ageschalt sinn.', 'gadgets-export-download' => 'Eroflueden', ); @@ -2119,9 +2113,6 @@ Doe mós de juuste rèchte höbben óppe doelwie, ouch óm bewirkinge aan systee */ $messages['lrc'] = array( 'prefs-gadgets' => 'چيا هنی', - 'gadgets' => 'گجت یا', - 'gadgets-title' => 'گجت یا', - 'gadgets-uses' => 'کاروردیا', 'gadgets-export' => 'وه صحرا ديئن', 'gadgets-export-download' => 'گرتن', ); @@ -2310,7 +2301,7 @@ $messages['mr'] = array( 'gadgets-title' => 'गॅजेट', 'gadgets-pagetext' => 'खाली तुम्ही तुमच्या सदस्यत्वासाठी [[Special:Preferences#mw-prefsection-gadgets|माझ्या पसंती]] पानावर वापरू शकत असलेल्या [[MediaWiki:Gadgets-definition|व्याख्या]]ने सांगितलेल्या गॅजेट्सची यादी दिलेली आहे. हे पान तुम्हाला प्रत्येक गॅजेट्सचा कोड व व्याख्या देणार्या पानासाठी सोपी संपर्क सुविधा पुरविते.', 'gadgets-uses' => 'उपयोग', - 'gadgets-required-rights' => 'खालील {{PLURAL:$2|अधिकार}} हवेच : + 'gadgets-required-rights' => 'खलील गोष्ठी साठी विनंती {{PLURAL:$2|right|rights}}: $1', 'gadgets-required-skins' => '{{PLURAL:$2|$1 skin|खालील देखाव्यांवर : $1}} उपलब्ध आहेत', @@ -2318,11 +2309,11 @@ $1', 'gadgets-export' => 'निर्यात करा', 'gadgets-export-title' => 'उपकरण निर्यात', 'gadgets-not-found' => 'उपकरण "$1" सापडत नाही.', - 'gadgets-export-text' => '$1 उपकरण-सुविधा निर्यात करण्याकरिता, "{{int:gadgets-export-download}}" कळीवर टिचकी मारा, उतरवलेली संचिका-फाईल जतन करा + 'gadgets-export-text' => '$1 उपकरण-सुविधा निर्यातकरण्या करिता, "{{int:gadgets-export-download}}" कलीवर टिचकी मारा, उतरवलेली संचिका-फाईल जतन करा डेस्टिनेशन विकिच्या विशेष:आयात पानावर जाऊन संचिका-फाईल चढवावी.नंतर खालील MediaWiki:Gadgets-definition पान चढवावे :$2तुमच्याकडे डेस्टिनेशन विकिवर (सिस्टीम मेसेजेस सुद्धा संपादीत करण्यासहीत ) सुयोग्य परवानग्या उपलब्ध असणे अत्यावश्यक आहे आणि चढवलेल्या संचिकाकरिता आयात सुविधा सक्षम असणे आवश्यक आहे.', - 'gadgets-export-download' => 'अधिभारण करा', + 'gadgets-export-download' => 'उतरवा', ); /** Malay (Bahasa Melayu) @@ -3188,7 +3179,6 @@ Ju duhet të keni leje të përshtatshme në wiki-n e destinuar (duke përfshir ); /** Serbian (Cyrillic script) (српски (ћирилица)) - * @author Milicevic01 * @author Millosh * @author Nikola Smolenski * @author Rancher @@ -3196,12 +3186,12 @@ Ju duhet të keni leje të përshtatshme në wiki-n e destinuar (duke përfshir */ $messages['sr-ec'] = array( 'gadgets-desc' => 'Омогућава корисницима да изаберу прилагођене [[Special:Gadgets|CSS и јаваскрипт гаџете]] у својим [[Special:Preferences#mw-prefsection-gadgets|подешавањима]]', - 'prefs-gadgets' => 'Геџети', + 'prefs-gadgets' => 'Гаџети', 'gadgets-prefstext' => 'Испод се налази списак посебних гаџета које можете да омогућите на свом налогу. Ове справице су углавном засноване на јаваскрипти, тако да она мора бити омогућена. Гаџети неће утицати на страницу за подешавање. -Они нису део софтвера Медијавики, већ се развијају и одржавају од стране корисника на вашем локалном викију. +Они нису део софтвера Медијавики, већ се развијају и одржавају од стране корисника ваше викије. Администратори могу да измене [[MediaWiki:Gadgets-definition|значења]] и [[Special:Gadgets|описе]] доступних гаџета.', 'gadgets' => 'Гаџети', 'gadgets-title' => 'Гаџети', @@ -3225,7 +3215,6 @@ $1', /** Serbian (Latin script) (srpski (latinica)) * @author Michaello - * @author Milicevic01 * @author Жељко Тодоровић */ $messages['sr-el'] = array( @@ -3235,7 +3224,7 @@ $messages['sr-el'] = array( Ove spravice su uglavnom zasnovane na javaskripti, tako da ona mora biti omogućena. Gadžeti neće uticati na stranicu za podešavanje. -Oni nisu deo softvera Medijaviki, već se razvijaju i održavaju od strane korisnika na vašem lokalnom vikiju. +Oni nisu deo softvera Medijaviki, već se razvijaju i održavaju od strane korisnika vaše vikije. Administratori mogu da izmene [[MediaWiki:Gadgets-definition|značenja]] i [[Special:Gadgets|opise]] dostupnih gadžeta.', 'gadgets' => 'gedžeti', 'gadgets-title' => 'gedžeti', diff --git a/extensions/ImageMap/ImageMap.i18n.php b/extensions/ImageMap/ImageMap.i18n.php index cf4e2655..1e07d69c 100644 --- a/extensions/ImageMap/ImageMap.i18n.php +++ b/extensions/ImageMap/ImageMap.i18n.php @@ -1,6 +1,6 @@ 'ГӀалат: нийса дац я ишта сурт дац кху чохь', - 'imagemap_no_link' => 'ГӀалат: $1 могӀанан чаккхехь нийса йоцу хьажораг ю', 'imagemap_invalid_title' => 'ГӀалат: могӀана $1 хьажориган корта нийса яц', 'imagemap_description' => 'Суьртах лаьцна', ); diff --git a/extensions/ImageMap/ImageMap.php b/extensions/ImageMap/ImageMap.php index b263bbb5..aa4cfa0d 100644 --- a/extensions/ImageMap/ImageMap.php +++ b/extensions/ImageMap/ImageMap.php @@ -1,20 +1,4 @@ diff --git a/extensions/InputBox/InputBox.i18n.php b/extensions/InputBox/InputBox.i18n.php index 0d05d036..1c8519f0 100644 --- a/extensions/InputBox/InputBox.i18n.php +++ b/extensions/InputBox/InputBox.i18n.php @@ -355,7 +355,6 @@ $messages['cdo'] = array( * @author Умар */ $messages['ce'] = array( - 'inputbox-error-no-type' => 'Ахьа язъечу меттиган тайп билгала йина яц.', 'tryexact' => 'Леррина лахар', 'searchfulltext' => 'Дуьззина йозанца лахар', 'createarticle' => 'Яззам кхоллар', @@ -950,14 +949,14 @@ $messages['ig'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'inputbox-desc' => 'Mangipalubos ti panangiraman kadagiti nasakbayan a naipalawag a porma ti HTML', - 'inputbox-error-no-type' => 'Saanmo pay a nainaganan no ania a kita ti partuaten a kahon ti pagikabilan.', - 'inputbox-error-bad-type' => 'Ti kita ti kahon a pigikabilan ti "$1" ket saan a mabigbigan. -Pangngaasi nga inaganam ti "agpartuat", "komento", "biruken", "biruken2", "wenno sibubukel a testo".', + 'inputbox-desc' => 'Pakabaelan na nga agikabil kadagiti napalasin a kinabuklan ti HTML', + 'inputbox-error-no-type' => 'Saan mo pay nga imbaga no ania a kita ti pagikabilan a kahon ti aramiden.', + 'inputbox-error-bad-type' => 'Ti kita ti pigikabilan a kahon "$1" ket saan a ma-ammoan. +Pangaasi ta ibagam nga "agaramid", "komentario", "biruken", "biruken2", "wenno sibubukel a testo".', 'tryexact' => 'Padasem to pudno a kapada', - 'searchfulltext' => 'Agbiruk ti napno a testo', - 'createarticle' => 'Agpartuat ti panid', - 'inputbox-ns-main' => 'Nangruna', + 'searchfulltext' => 'Agbiruk ti sibubukel a testo', + 'createarticle' => 'Agaramid ti panid', + 'inputbox-ns-main' => 'Dati', ); /** Ido (Ido) @@ -1125,7 +1124,7 @@ $messages['ko'] = array( 'inputbox-error-bad-type' => '"$1" 입력 상자 종류는 정의되어 있지 않습니다. "create", "comment", "search", "search2"나 "fulltext" 중 하나를 지정하세요.', 'tryexact' => '일치하는 항목 찾기', - 'searchfulltext' => '전체 글 검색', + 'searchfulltext' => '전체 글 찾기', 'createarticle' => '문서 만들기', 'inputbox-ns-main' => '문서', ); @@ -1349,7 +1348,7 @@ $messages['mn'] = array( */ $messages['mr'] = array( 'inputbox-desc' => 'पूर्वी लिहिलेले HTML अर्ज वापरण्याची परवानगी द्या', - 'inputbox-error-no-type' => 'कुठल्या प्रकारची पृष्ठपेटी तयार करायची ते तुम्ही स्पष्ट केलेले नाही.', + 'inputbox-error-no-type' => 'तुम्ही कुठल्या प्रकारची पृष्ठपेटी तयार करायची ते स्पष्ट केलेले नाही.', 'inputbox-error-bad-type' => 'तुम्ही दिलेला पृष्ठपेटीचा "$1" हा प्रकार ओळखीचा नाही. कृपया "create", "comment", "search" किंवा "search2" किंवा "fulltext".यातील एक निवडा.', 'tryexact' => 'दिलेलेच शब्द शोधा', diff --git a/extensions/Interwiki/Interwiki.i18n.php b/extensions/Interwiki/Interwiki.i18n.php index 8b9c85a0..a2619ff3 100644 --- a/extensions/Interwiki/Interwiki.i18n.php +++ b/extensions/Interwiki/Interwiki.i18n.php @@ -951,7 +951,6 @@ $messages['ce'] = array( 'interwiki_0' => 'яц', 'interwiki_edit' => 'Нисйé', 'interwiki_reasonfield' => 'Бахьан:', - 'interwiki_delquestion' => '«$1» дӀаяккхар', 'interwiki_addbutton' => 'Тlетоха', ); @@ -1087,8 +1086,8 @@ $messages['da'] = array( 'interwiki-legend-hide' => 'Skjul forklaring', 'interwiki_prefix' => 'Præfiks', 'interwiki-prefix-label' => 'Præfiks:', - 'interwiki_prefix_intro' => 'Interwiki præfiks som skal anvendes i[
wikitekst syntaks.', - 'interwiki_url_intro' => 'Skabelon til URL-adresser. Pladsholderen $1 vil blive erstattet af sidenavn af wikitekst, når den ovennævnte wikitekst syntaks bruges.', + 'interwiki_prefix_intro' => 'Interwiki præfiks som skal anvendes i[præfiks:sidenavn]] [
wikitext syntaks.', + 'interwiki_url_intro' => 'Skabelon til URL-adresser. Pladsholderen $1 vil blive erstattet af sidenavn af wikitext, når den ovennævnte wikitext syntaks bruges.', 'interwiki_local' => 'Videresend', 'interwiki-local-label' => 'Videresend:', 'interwiki_local_intro' => 'En HTTP-forespørgsel til den lokale wiki med denne interwiki præfiks i URL-adressen er:', @@ -1096,7 +1095,7 @@ $messages['da'] = array( 'interwiki_local_1_intro' => 'Omdirigeret til target URL i interwiki link definitioner (dvs. behandles som referencer i lokale sider).', 'interwiki_trans' => 'Transkluder', 'interwiki-trans-label' => 'Transkluder:', - 'interwiki_trans_intro' => 'Hvis wikitekst syntaksen[præfiks:sidenavn]] [
bruges, så:', + 'interwiki_trans_intro' => 'Hvis wikitext syntaksen[præfiks:sidenavn]] [
bruges, så:', 'interwiki_1' => 'ja', 'interwiki_0' => 'nej', 'interwiki_error' => 'Fejl: Interwikitabellen er tom eller noget andet gik galt.', @@ -1122,7 +1121,7 @@ Husk, at dette kan bryde eksisterende hyperlinks.', Det findes muligvis ikke.', 'interwiki-badprefix' => 'Det angivne interwikipræfiks "$1" indeholder ugyldige tegn.', 'right-interwiki' => 'Redigere interwikidata', - 'action-interwiki' => 'redigere interwikidata', + 'action-interwiki' => 'ændre dette interwiki-element', ); /** German (Deutsch) @@ -1536,22 +1535,10 @@ Võimalik, et seda pole olemas.', /** Basque (euskara) * @author An13sa * @author Kobazulo - * @author Theklan */ $messages['eu'] = array( - 'interwiki' => 'Ikusi eta aldatu interwikiak', - 'interwiki-title-norights' => 'Ikusi interwikiak', - 'interwiki-desc' => 'Interwiki taula ikusi eta aldatzeko [[Special:Interwiki|orrialde berezi]] bat gehitzen du', - 'interwiki_intro' => 'Hau interwiki taularen ikuspegi orokor bat da.', - 'interwiki-legend-show' => 'Erakutsi legenda', - 'interwiki-legend-hide' => 'Izkutatu legenda', 'interwiki_prefix' => 'Aurrizkia', 'interwiki-prefix-label' => 'Aurrizkia:', - 'interwiki_local' => 'Aurrera', - 'interwiki-local-label' => 'Aurrera:', - 'interwiki_trans' => 'Txertatu', - 'interwiki-trans-label' => 'Txertatu:', - 'interwiki_trans_intro' => '[præfiks:sidenavn]] {
wikitestu erako sintaxia erabiltzen bada, orduan:', 'interwiki_1' => 'bai', 'interwiki_0' => 'ez', 'interwiki_edit' => 'Aldatu', @@ -1560,8 +1547,6 @@ $messages['eu'] = array( 'interwiki_deleting' => '"$1" aurrizkia ezabatzen ari zara.', 'interwiki_addbutton' => 'Gehitu', 'interwiki_edittext' => 'Interwiki aurrizkia editatzen', - 'right-interwiki' => 'Interwiki datuak aldatu', - 'action-interwiki' => 'aldatu interwiki sarrera hau', ); /** Persian (فارسی) @@ -1760,13 +1745,6 @@ $messages['frp'] = array( 'action-interwiki' => 'changiér ceta entrâ entèrvouiqui', ); -/** Northern Frisian (Nordfriisk) - * @author Murma174 - */ -$messages['frr'] = array( - 'interwiki-title-norights' => 'Interwiki-dooten uunluke', -); - /** Friulian (furlan) * @author Klenje */ @@ -2385,7 +2363,6 @@ Memora que isto pote rumper ligamines existente.', Es possibile que illo non existe.', 'interwiki-badprefix' => 'Le prefixo interwiki specificate "$1" contine characteres invalide', 'interwiki-submit-empty' => 'Le prefixo e le URL non pote esser vacue.', - 'interwiki-submit-invalidurl' => 'Le protocollo del URL es invalide.', 'log-name-interwiki' => 'Registro del tabella interwiki', 'logentry-interwiki-iw_add' => '$1 {{GENDER:$2|addeva}} le prefixo "$4" ($5) (trans: $6; local: $7) al tabella interwiki', 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|modificava}} le prefixo "$4" ($5) (trans: $6; local: $7) in le tabella interwiki', @@ -2851,7 +2828,7 @@ $messages['ko'] = array( 'logentry-interwiki-iw_add' => '$1 사용자가 "$4" ($5) (틀 포함: $6, 로컬: $7) 접두어를 인터위키 테이블에 {{GENDER:$2|추가}}했습니다.', 'logentry-interwiki-iw_edit' => '$1 사용자가 인터위키 테이블의 "$4" ($5) (틀 포함: $6, 로컬: $7) 접두어를 {{GENDER:$2|수정}}했습니다.', 'logentry-interwiki-iw_delete' => '$1 사용자가 인터위키 테이블의 "$4" 접두어를 {{GENDER:$2|삭제}}했습니다.', - 'log-description-interwiki' => '[[Special:Interwiki|인터위키 테이블]]이 바뀐 기록입니다.', + 'log-description-interwiki' => '[[Special:Interwiki|인터위키]] 목록의 바뀐 내역입니다.', 'right-interwiki' => '인터위키 목록 고치기', 'action-interwiki' => '이 인터위키 접두어 바꾸기', ); @@ -3284,12 +3261,11 @@ $messages['mn'] = array( /** Marathi (मराठी) * @author Kaustubh - * @author V.narsikar */ $messages['mr'] = array( 'interwiki' => 'आंतरविकि डाटा पहा व संपादा', 'interwiki-title-norights' => 'अंतरविकि डाटा पहा', - 'interwiki-desc' => 'आंतरविकि सारणी पाहण्यासाठी व संपादण्यासाठी एक [[Special:Interwiki|विशेष पान]] वाढविते', + 'interwiki-desc' => 'आंतरविकि सारणी पाहण्यासाठी व संपादन्यासाठी एक [[Special:Interwiki|विशेष पान]] वाढविते', 'interwiki_intro' => 'आंतरविकि सारणी बद्दल अधिक माहीतीसाठी [http://www.mediawiki.org/wiki/Interwiki_table MediaWiki.org] पहा.', # Fuzzy 'interwiki_prefix' => 'उपपद (पूर्वप्रत्यय)', 'interwiki-prefix-label' => 'उपपद (पूर्वप्रत्यय):', # Fuzzy @@ -3304,11 +3280,11 @@ $messages['mr'] = array( 'interwiki_addbutton' => 'वाढवा', 'interwiki_added' => '"$1" उपपद आंतरविकि सारणी मध्ये वाढविण्यात आलेले आहे.', 'interwiki_addfailed' => '"$1" उपपद आंतरविकि सारणी मध्ये वाढवू शकलेलो नाही. कदाचित ते अगोदरच अस्तित्वात असण्याची शक्यता आहे.', - 'interwiki_edittext' => 'एक आंतरविकि उपपद संपादित आहे', - 'interwiki_editintro' => 'तुम्ही एक आंतरविकि उपपद संपादित आहात. + 'interwiki_edittext' => 'एक अंतरविकि उपपद संपादित आहे', + 'interwiki_editintro' => 'तुम्ही एक अंतरविकि उपपद संपादित आहात. लक्षात ठेवा की यामुळे अगोदर दिलेले दुवे तुटू शकतात.', - 'interwiki_edited' => 'आंतरविकि सारणीमध्ये "$1" उपपद यशस्वीरित्या बदलण्यात आलेले आहे.', - 'interwiki_editerror' => 'आंतरविकि सारणीमध्ये "$1" उपपद बदलू शकत नाही. + 'interwiki_edited' => 'अंतरविकि सारणीमध्ये "$1" उपपद यशस्वीरित्या बदलण्यात आलेले आहे.', + 'interwiki_editerror' => 'अंतरविकि सारणीमध्ये "$1" उपपद बदलू शकत नाही. कदाचित ते अस्तित्वात नसेल.', 'log-name-interwiki' => 'आंतरविकि सारणी नोंद', 'log-description-interwiki' => '[[Special:Interwiki|आंतरविकि सारणीत]] झालेल्या बदलांची ही सूची आहे.', @@ -4078,9 +4054,6 @@ Existe um [[Special:Log/interwiki|registro de modificações]] à tabela de inte 'interwiki-submit-empty' => 'O prefixo e o URL não podem estar vazios.', 'interwiki-submit-invalidurl' => 'O protocolo do URL é inválido.', 'log-name-interwiki' => 'Registro da tabela de interwikis', - 'logentry-interwiki-iw_add' => '$1 {{GENDER:$2|adicionou}} o prefixo "$4" ($5) (trans: $6; local: $7) à tabela de interwikis', - 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|modificou}} o prefixo "$4" ($5) (trans: $6; local: $7) na tabela de interwikis', - 'logentry-interwiki-iw_delete' => '$1 {{GENDER:$2|removeu}} o prefixo "$4" da tabela de interwikis', 'log-description-interwiki' => 'Este é um registro das alterações à [[Special:Interwiki|tabela de interwikis]].', 'right-interwiki' => 'Editar dados de interwiki', 'action-interwiki' => 'alterar esta entrada interwiki', @@ -4438,7 +4411,6 @@ Morda ne obstaja.', ); /** Serbian (Cyrillic script) (српски (ћирилица)) - * @author Milicevic01 * @author Rancher * @author Sasa Stefanovic * @author Жељко Тодоровић @@ -4480,14 +4452,13 @@ $messages['sr-ec'] = array( 'interwiki_editerror' => 'Префикс "$1" не може бити измењен у табели међувикија. Вероватно затшо што не постоји.', 'interwiki-badprefix' => 'Задати међувики префикс "$1" садржи недозвољене знакове', - 'log-name-interwiki' => 'Дневник табеле међувикија', + 'log-name-interwiki' => 'Историја табеле међувикија', 'log-description-interwiki' => 'Ово је историја измена [[Special:Interwiki|табеле међувикија]].', 'right-interwiki' => 'уређивање међувикија', ); /** Serbian (Latin script) (srpski (latinica)) * @author Michaello - * @author Milicevic01 * @author Жељко Тодоровић */ $messages['sr-el'] = array( @@ -4526,7 +4497,7 @@ Imajte na umu da može da ošteti postojeće međuviki veze.', 'interwiki_editerror' => 'Prefiks "$1" ne može biti izmenjen u tabeli međuvikija. Verovatno zatšo što ne postoji.', 'interwiki-badprefix' => 'Zadati međuviki prefiks "$1" sadrži nedozvoljene znakove', - 'log-name-interwiki' => 'Dnevnik tabele međuvikija', + 'log-name-interwiki' => 'Istorija tabele međuvikija', 'log-description-interwiki' => 'Ovo je istorija izmena [[Special:Interwiki|tabele međuvikija]].', 'right-interwiki' => 'Izmeni međuviki', ); @@ -4585,16 +4556,13 @@ $messages['sv'] = array( 'interwiki_prefix' => 'Prefix', 'interwiki-prefix-label' => 'Prefix:', 'interwiki_prefix_intro' => 'Interwiki-prefix avsedda att användas i{prefix:pagename}} [
-wikisyntax.', - 'interwiki_url_intro' => 'Mall för webbadresser. Platshållaren $1 kommer att ersättas av sidnamnet i wikitexten, när den ovannämnda wikitextsyntaxen används.', 'interwiki_local' => 'Vidarebefordra', 'interwiki-local-label' => 'Vidarebefordra:', 'interwiki_local_intro' => 'En HTTP-förfrågan till den lokala wikin med denna interwiki-prefix i webbadressen är:', 'interwiki_local_0_intro' => 'inte accepterad, vanligtvis blockerad av "sidan kunde inte hittas".', - 'interwiki_local_1_intro' => 'omdirigeras till måladressen som anges i definitionerna av interwiki-länken (d.v.s. behandlas som referenser i lokala sidor).', 'interwiki_trans' => 'Transkludera', 'interwiki-trans-label' => 'Transkludera:', 'interwiki_trans_intro' => 'Om wikitextsyntax[prefix:pagename]] {
används så:', - 'interwiki_trans_1_intro' => 'tillåt inkludering från utländska wikin, om interwiki-inkluderingar är allmänt tillåten på denna wiki.', 'interwiki_trans_0_intro' => 'tillåt inte det, leta istället efter en sida i mall-namnrymden.', 'interwiki_intro_footer' => 'Se [//www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] för mer information om interwikitabellen. Det finns en [[Special:Log/interwiki|logg över ändringar]] i interwikitabellen.', @@ -5233,7 +5201,7 @@ $messages['yue'] = array( */ $messages['zh-hans'] = array( 'interwiki' => '查看和编辑跨wiki数据', - 'interwiki-title-norights' => '查看跨wiki数据', + 'interwiki-title-norights' => '查看跨维基数据', 'interwiki-desc' => '新增[[Special:Interwiki|特殊页面]]以查看和编辑跨wiki表', 'interwiki_intro' => '这是跨wiki表的概览。', 'interwiki-legend-show' => '显示说明', @@ -5256,7 +5224,7 @@ $messages['zh-hans'] = array( 'interwiki_1' => '是', 'interwiki_0' => '否', 'interwiki_error' => '错误: 跨wiki表为空,或是发生其它错误。', - 'interwiki-cached' => '跨维基数据是缓存的。缓存不能被修改。', + 'interwiki-cached' => '跨wiki数据已缓存。缓存不能编辑。', 'interwiki_edit' => '编辑', 'interwiki_reasonfield' => '理由:', 'interwiki_delquestion' => '正在删除“$1”', @@ -5284,7 +5252,7 @@ $messages['zh-hans'] = array( 'logentry-interwiki-iw_edit' => '$1{{GENDER:$2|已修改}}跨wiki表中的前缀“$4”($5) (包含:$6;本地:$7)', 'logentry-interwiki-iw_delete' => '$1已从跨wiki表中{{GENDER:$2|删除}}前缀“$4”', 'log-description-interwiki' => '这是一个[[Special:Interwiki|跨wiki表]]的更改日志。', - 'right-interwiki' => '编辑跨wiki数据', + 'right-interwiki' => '编辑跨维基数据', 'action-interwiki' => '更改该跨维基条目', ); diff --git a/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php b/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php index 194bb1e3..c45af9e2 100644 --- a/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php +++ b/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php @@ -304,10 +304,9 @@ $messages['ksh'] = array( /** Luxembourgish (Lëtzebuergesch) * @author Robby - * @author Soued031 */ $messages['lb'] = array( - 'localisationupdate-desc' => 'hält déi lokaliséiert Messagen sou aktuell wéi méiglech.', + 'localisationupdate-desc' => 'hält déi lokaliséiert Messagen esou aktuell wéi méiglech.', ); /** Macedonian (македонски) diff --git a/extensions/Nuke/Nuke.alias.php b/extensions/Nuke/Nuke.alias.php index 973f92ee..0b27b4a5 100644 --- a/extensions/Nuke/Nuke.alias.php +++ b/extensions/Nuke/Nuke.alias.php @@ -201,7 +201,7 @@ $specialPageAliases['nl'] = array( /** Norwegian Nynorsk (norsk nynorsk) */ $specialPageAliases['nn'] = array( - 'Nuke' => array( 'Massesletting', 'Masseslett' ), + 'Nuke' => array( 'Massesletting' ), ); /** Polish (polski) */ diff --git a/extensions/Nuke/Nuke.i18n.php b/extensions/Nuke/Nuke.i18n.php index 71ee547a..f72d208d 100644 --- a/extensions/Nuke/Nuke.i18n.php +++ b/extensions/Nuke/Nuke.i18n.php @@ -456,7 +456,6 @@ Unesite korisničko ime ili IP adresu za izlistavanje stranica koje se brišu il /** Catalan (català) * @author Aleator - * @author Alvaro Vidal-Abarca * @author Paucabot * @author SMP * @author Toniher @@ -464,7 +463,7 @@ Unesite korisničko ime ili IP adresu za izlistavanje stranica koje se brišu il $messages['ca'] = array( 'nuke' => 'Eliminació massiva', 'nuke-desc' => "Dóna als administradors l'habilitat d'[[Special:Nuke|esborrar pàgines massivament]]", - 'nuke-nopages' => 'No hi ha pàgines noves de [[Special:Contributions/$1|{{GENDER:$1|$1}}]] als canvis recents.', + 'nuke-nopages' => 'No hi ha pàgines noves de [[Special:Contributions/$1|$1]] als canvis recents.', # Fuzzy 'nuke-list' => 'Les següents pàgines han estat creades recentment per [[Special:Contributions/$1|$1]]; feu un comentari i cliqueu el botó per a esborrar-les.', # Fuzzy 'nuke-defaultreason' => 'Esborrat massiu de pàgines creades per $1', # Fuzzy @@ -493,7 +492,6 @@ $messages['ce'] = array( 'nuke-userorip' => 'Декъашхочун цӀе, IP-адрес (еса йита мега):', 'nuke-maxpages' => 'АгӀонашан максимальни дукхалла:', 'nuke-editby' => 'Кхолийна {{GENDER:$1|декъашхочо}} [[Special:Contributions/$1|$1]]', - 'nuke-delete-more' => '[[Special:Nuke|Дуккха агӀонаш дӀаяхар]]', 'nuke-pattern' => 'Кеп агӀона цӀеран:', 'nuke-viewchanges' => 'ХӀоттина болу хийцам', 'nuke-namespace' => 'Къастае ана цӀераш:', @@ -513,11 +511,10 @@ $messages['ckb'] = array( 'right-nuke' => 'سڕینەوەی پەڕەکان بەکۆمەڵ', ); -/** Czech (čeština) +/** Czech (česky) * @author Danny B. * @author Jkjk * @author Li-sung - * @author Littledogboy * @author Matěj Grabovský * @author Mormegil */ @@ -530,8 +527,8 @@ $messages['cs'] = array( vyplňte komentář a všechny smažte kliknutím na tlačítko.', 'nuke-list-multiple' => 'Nedávno byly vytvořeny následující stránky; zadáním komentáře a stisknutím tlačítka je smažete.', - 'nuke-defaultreason' => 'Hromadné smazání stránek, které {{GENDER:$1|vytvořil|vytvořila}} [[Special:Contributions/$1|$1]]', - 'nuke-multiplepeople' => 'Hromadné smazání nedávno založených stránek', + 'nuke-defaultreason' => 'Hromadné odstranění stránek, které {{GENDER:$1|vytvořil|vytvořila}} [[Special:Contributions/$1|$1]]', + 'nuke-multiplepeople' => 'Hromadné odstranění nedávno založených stránek', 'nuke-tools' => 'Tento nástroj umožňuje hromadné smazání stránek nedávno vytvořených zadaným uživatelem nebo IP adresou. Zadejte uživatelské jméno nebo IP adresu, zobrazí se seznam stránek ke smazání; případně ponechte prázdné pro všechny uživatele.', 'nuke-submit-user' => 'Provést', @@ -868,7 +865,7 @@ $messages['fa'] = array( 'nuke-userorip' => 'نام کاربری، نشانی آیپی یا خالی:', 'nuke-maxpages' => 'حداکثر تعداد صفحهها:', 'nuke-editby' => 'ایجاد شده توسط [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', - 'nuke-deleted' => "صفحهٔ '''$1''' حذف شدهاست.", + 'nuke-deleted' => "صفحهٔ '''$1''' حذف شده است.", 'nuke-not-deleted' => "صفحهٔ [[:$1]] را '''نمیتوان''' حذف کرد.", 'nuke-delete-more' => '[[Special:Nuke|حذف صفحههای بیشتر]]', 'nuke-pattern' => 'الگو برای نام صفحه:', @@ -881,10 +878,8 @@ $messages['fa'] = array( * @author Beluga * @author Crt * @author Jaakonam - * @author Mies * @author Nike * @author Olli - * @author Pxos * @author Stryn */ $messages['fi'] = array( @@ -893,15 +888,15 @@ $messages['fi'] = array( 'nuke-desc' => 'Mahdollistaa ylläpitäjille sivujen [[Special:Nuke|massapoistamisen]].', 'nuke-nopages' => 'Ei käyttäjän [[Special:Contributions/$1|{{GENDER:$1|$1}}]] lisäämiä uusia sivuja tuoreissa muutoksissa.', 'nuke-list' => 'Käyttäjä [[Special:Contributions/$1|{{GENDER:$1|$1}}]] on äskettäin luonut seuraavat sivut. -Lisää kommentti ja poista sivut napsauttamalla painiketta.', - 'nuke-list-multiple' => 'Seuraavat sivut on luotu äskettäin. -Lisää kommentti ja poista sivut napsauttamalla painiketta.', +Lisää kommentti ja poista napsauttamalla painiketta.', + 'nuke-list-multiple' => 'Seuraavat sivut tehtiin äskettäin. +Lisää kommentti ja poista napsauttamalla painiketta.', 'nuke-defaultreason' => 'Käyttäjän [[Special:Contributions/$1|{{GENDER:$1|$1}}]] lisäämien sivujen massapoistaminen', 'nuke-multiplepeople' => 'Äskettäin lisättyjen sivujen massapoistaminen', 'nuke-tools' => 'Tämä työkalu mahdollistaa äskettäin lisättyjen sivujen massapoistamisen käyttäjänimen tai IP-osoitteen perusteella. Kirjoita käyttäjänimi tai IP-osoite, niin saat listan poistettavista sivuista, tai jätä kenttä tyhjäksi niin saat kaikkien käyttäjien tekemät sivut.', 'nuke-submit-user' => 'Siirry', - 'nuke-submit-delete' => 'Poista valitsemasi sivut', + 'nuke-submit-delete' => 'Poista valitut', 'right-nuke' => 'Massapoistaa sivuja', 'nuke-select' => 'Valinta: $1', 'nuke-userorip' => 'Käyttäjänimi tai IP-osoite (voi jättää myös tyhjäksi):', @@ -909,8 +904,8 @@ Kirjoita käyttäjänimi tai IP-osoite, niin saat listan poistettavista sivuista 'nuke-editby' => 'Luonut [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', 'nuke-deleted' => "Sivu '''$1''' on poistettu.", 'nuke-not-deleted' => "Sivua [[:$1]] '''ei voitu''' poistaa.", - 'nuke-delete-more' => '[[Special:Nuke|Poista enemmän sivuja]]', - 'nuke-pattern' => 'Malli sivun nimelle:', + 'nuke-delete-more' => '[[Special:Nuke|Poista lisää sivuja]]', + 'nuke-pattern' => 'Sivun nimien etuliite', 'nuke-nopages-global' => '[[Special:RecentChanges|Tuoreissa muutoksissa]] ei ole uusia sivuja.', 'nuke-viewchanges' => 'näytä muutokset', 'nuke-namespace' => 'Rajoita nimiavaruuteen:', @@ -988,39 +983,6 @@ Buchiér lo nom d’usanciér ou ben l’adrèce IP por avêr la lista de les p 'nuke-namespace' => 'Sè limitar a cet’èspâço de noms :', ); -/** Northern Frisian (Nordfriisk) - * @author Murma174 - */ -$messages['frr'] = array( - 'nuke' => 'Sidjen bonkerwiis strik', - 'action-nuke' => 'sidjen bonkerwiis tu striken', - 'nuke-desc' => 'Administratooren kön diarmä sidjen [[Special:Nuke|bonkerwiis strik]]', - 'nuke-nopages' => 'Bi a „leetst feranrangen“ san nian nei sidjen faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]].', - 'nuke-list' => 'Jodiar sidjen san faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]] skrewen wurden. -Skriiw ap, huaram dü jo strikst, an do trak üüb di knoop tu striken.', - 'nuke-list-multiple' => 'Jodiar sidjen san jüst skrewen wurden. -Skriiw ap, huaram dü jo strikst, an do trak üüb di knoop tu striken.', - 'nuke-defaultreason' => 'Sidjen faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]] bonkerwiis strik', - 'nuke-multiplepeople' => 'Jüst skrewen sidjen bonkerwiis strik', - 'nuke-tools' => 'Diarmä kön sidjen, diar faan en was IP of en wasen brüker skrewen wurden san, bonkerwiis stregen wurd. -Skriiw diar det IP-adres of di brükernööm iin, an do könst dü det list faan sidjen sä, diar stregen wurd kön. -Wan dü diar niks henskrafst, wurd aal a brükern uunwiset.', - 'nuke-submit-user' => 'Widjer', - 'nuke-submit-delete' => 'Enkelten strik', - 'right-nuke' => 'Sidjen bonkerwiis strik', - 'nuke-select' => 'Schük ütj: $1', - 'nuke-userorip' => 'Brükernööm, IP-adres of niks:', - 'nuke-maxpages' => 'Ei muar sidjen üs:', - 'nuke-editby' => 'Skrewen faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', - 'nuke-deleted' => "Sidj '''„$1“''' as stregen wurden.", - 'nuke-not-deleted' => "Sidj [[:$1]] '''küd ei''' stregen wurd.", - 'nuke-delete-more' => '[[Special:Nuke|Muar sidjen strik]]', - 'nuke-pattern' => 'Münster för di sidjnööm:', - 'nuke-nopages-global' => 'Diar san nian sidjen uun a [[Special:RecentChanges|leetst feranrangen]].', - 'nuke-viewchanges' => 'Feranrangen wise', - 'nuke-namespace' => 'Bluas uun di nöömrüm:', -); - /** Friulian (furlan) * @author Klenje */ @@ -1351,9 +1313,9 @@ $messages['ig'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'nuke' => 'Paga-adduan nga panagikkat', + 'nuke' => 'Paga-adduan nga pinag-ikkat', 'action-nuke' => 'ikkaten dagiti panid', - 'nuke-desc' => 'Ikkanna ti administrador ti abilidad iti [[Special:Nuke|adu a panagikkat]] kadagiti panid', + 'nuke-desc' => 'Ikkan na ti administrador ti abilidad nga [[Special:Nuke| paga-adduan nga pang-ikkat]] kadagit panid', 'nuke-nopages' => 'Awan dagiti baro a panid babaen ni [[Special:Contributions/$1|{{GENDER:$1|$1}}]] idiay kaudian abalbaliw.', 'nuke-list' => 'Dagiti sumaganad a panid ket kadamdamaan a pinartuat babaen ni [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; ikkam ti komentario ken pindutem ti buton tapno maikkatda.', @@ -1906,18 +1868,17 @@ $messages['ml'] = array( /** Marathi (मराठी) * @author Kaustubh - * @author V.narsikar */ $messages['mr'] = array( 'nuke' => 'एकदम खूप पाने वगळा', - 'nuke-desc' => 'प्रबंधकांना [[Special:Nuke|गठ्ठ्याने वगळण्याची(मास डिलीट)]] क्षमता देते', + 'nuke-desc' => 'प्रबंधकांना एकाचवेळी [[Special:Nuke|अनेक पाने वगळण्याची]] परवानगी देते', 'nuke-nopages' => '[[Special:Contributions/$1|$1]] कडून अलीकडील बदलांमध्ये नवीन पाने नाहीत.', # Fuzzy 'nuke-list' => 'खालील पाने ही [[Special:Contributions/$1|$1]] ने अलिकडे वाढविलेली आहेत; शेरा द्या व वगळण्यासाठी कळीवर टिचकी द्या.', # Fuzzy 'nuke-defaultreason' => '$1 ने नवीन वाढविलेली अनेक पाने एकावेळी वगळा', # Fuzzy 'nuke-tools' => 'हे उपकरण एखाद्या विशिष्ट सदस्य अथवा अंकपत्त्याद्वारे नवीन तयार करण्यात आलेल्या पानांना एकाचवेळी वगळण्याची संधी देते. सदस्य नाव अथवा अंकपत्ता दिल्यास वगळण्यासाठी पानांची यादी मिळेल:', # Fuzzy 'nuke-submit-user' => 'जा', 'nuke-submit-delete' => 'निवडलेले वगळा', - 'right-nuke' => 'गठ्ठ्याने पाने वगळा', + 'right-nuke' => 'खूप पाने एकत्र वगळा', ); /** Malay (Bahasa Melayu) @@ -2159,9 +2120,9 @@ $messages['nso'] = array( $messages['oc'] = array( 'nuke' => 'Supression en massa', 'nuke-desc' => 'Balha la possiblitat als administrators de [[Special:Nuke|suprimir en massa]] de paginas.', - 'nuke-nopages' => 'Cap de pagina novèla pas creada per [[Special:Contributions/$1|{{GENDER:$1|$1}}]] dins la lista dels darrièrs cambiaments.', - 'nuke-list' => 'Las paginas seguentas son estadas creadas recentament per [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; picatz un comentari e clicatz sul boton per los suprimir.', - 'nuke-defaultreason' => 'Supression en massa de las paginas apondudas per [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', + 'nuke-nopages' => 'Cap de pagina novèla creada per [[Special:Contributions/$1|$1]] dins la lista dels darrièrs cambiaments.', # Fuzzy + 'nuke-list' => 'Las paginas seguentas son estadas creadas recentament per [[Special:Contributions/$1|$1]]; Indicatz un comentari e clicatz sul boton per los suprimir.', # Fuzzy + 'nuke-defaultreason' => 'Supression en massa de las paginas apondudas per $1', # Fuzzy 'nuke-tools' => 'Aquesta aisina autoriza las supressions en massa de las paginas apondudas recentament per un utilizaire enregistrat o per una adreça IP. Indicatz l’adreça IP per obténer la lista de las paginas de suprimir, o daissar blanc per totes los utilizaires.', 'nuke-submit-user' => 'Validar', 'nuke-submit-delete' => 'Supression seleccionada', @@ -2949,7 +2910,6 @@ $messages['ug-latn'] = array( /** Ukrainian (українська) * @author AS - * @author Aced * @author Ahonc * @author Base * @author Dim Grits @@ -2973,7 +2933,7 @@ $messages['uk'] = array( 'nuke-submit-delete' => 'Вилучити обрані', 'right-nuke' => 'Масове вилучення сторінок', 'nuke-select' => 'Вибір: $1', - 'nuke-userorip' => "Ім'я користувача, IP-адреса (необов'язковий параметр):", + 'nuke-userorip' => "Ім'я користувача, IP-адреса (за бажанням):", 'nuke-maxpages' => 'Максимальна кількість сторінок:', 'nuke-editby' => 'Створено {{GENDER:$1|користувачем|користувачкою}} [[Special:Contributions/$1|$1]]', 'nuke-deleted' => "Сторінка '''$1''' була вилучена.", @@ -3054,15 +3014,14 @@ Hãy nhập tên thành viên hoặc địa chỉ IP để lấy danh sách các ); /** Volapük (Volapük) - * @author Malafaya * @author Smeira */ $messages['vo'] = array( 'nuke' => 'Moükön pademi', 'nuke-desc' => 'Gevon guvanes fägi ad moükön padamödotis', - 'nuke-nopages' => 'Pads nonik fa geban: [[Special:Contributions/$1|{{GENDER:$1|$1}}]] pejaföls binons su lised votükamas nulik.', - 'nuke-list' => 'Pads sököl pejafons brefabüo fa geban: [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; penolös küpeti e klikolös gnobi ad moükön onis.', - 'nuke-defaultreason' => 'Moükam masifik padas fa [[Special:Contributions/$1|{{GENDER:$1|$1}}]] pejafölas', + 'nuke-nopages' => 'Pads nonik fa geban: [[Special:Contributions/$1|$1]] pejaföls binons su lised votükamas nulik.', # Fuzzy + 'nuke-list' => 'Pads sököl pejafons brefabüo fa geban: [[Special:Contributions/$1|$1]]; penolös küpeti e klikolös gnobi ad moükön onis.', # Fuzzy + 'nuke-defaultreason' => 'Moükam padas fa geban: $1 pejafölas', # Fuzzy 'nuke-tools' => 'Stum at kanon moükön mödoti padas fa geban u ladet-IP semik brefabüo pejafölas. Penolös gebananemi u ladeti-IP ad dagetön lisedi padas moükovik:', # Fuzzy 'nuke-submit-user' => 'Ledunolöd', 'nuke-submit-delete' => 'Pevalöl ad pamoükön', @@ -3119,7 +3078,7 @@ $messages['zh-hans'] = array( 'right-nuke' => '删除大量页面', 'nuke-select' => '选择:$1', 'nuke-userorip' => '用户名、IP地址或空白:', - 'nuke-maxpages' => '最大页面数:', + 'nuke-maxpages' => '最多页面数:', 'nuke-editby' => '由[[Special:Contributions/$1|{{GENDER:$1|$1}}]]创建', 'nuke-deleted' => "已删除页面'''$1'''。", 'nuke-not-deleted' => "'''无法'''删除[[:$1]]页面。", diff --git a/extensions/ParserFunctions/ParserFunctions.i18n.magic.php b/extensions/ParserFunctions/ParserFunctions.i18n.magic.php index 01a25afb..5d26cb71 100644 --- a/extensions/ParserFunctions/ParserFunctions.i18n.magic.php +++ b/extensions/ParserFunctions/ParserFunctions.i18n.magic.php @@ -58,25 +58,25 @@ $magicWords['ar'] = array( /** Egyptian Spoken Arabic (مصرى) */ $magicWords['arz'] = array( - 'expr' => array( 0, 'تعبير' ), - 'if' => array( 0, 'لو' ), - 'ifeq' => array( 0, 'لومعادلة' ), - 'ifexpr' => array( 0, 'لوتعبير' ), - 'iferror' => array( 0, 'لوخطأ' ), - 'switch' => array( 0, 'تبديل' ), - 'default' => array( 0, '#افتراضي' ), - 'ifexist' => array( 0, 'لوموجود' ), - 'time' => array( 0, 'وقت' ), - 'timel' => array( 0, 'تيمل' ), - 'rel2abs' => array( 0, 'ريلتوآبس' ), - 'titleparts' => array( 0, 'أجزاء_العنوان' ), - 'len' => array( 0, 'لين' ), - 'pos' => array( 0, 'بوس' ), - 'rpos' => array( 0, 'آربوس' ), - 'sub' => array( 0, 'متفرع' ), - 'count' => array( 0, 'عدد' ), - 'replace' => array( 0, 'استبدال' ), - 'explode' => array( 0, 'انفجار' ), + 'expr' => array( 0, 'تعبير', 'expr' ), + 'if' => array( 0, 'لو', 'if' ), + 'ifeq' => array( 0, 'لومعادلة', 'ifeq' ), + 'ifexpr' => array( 0, 'لوتعبير', 'ifexpr' ), + 'iferror' => array( 0, 'لوخطأ', 'iferror' ), + 'switch' => array( 0, 'تبديل', 'switch' ), + 'default' => array( 0, '#افتراضي', '#default' ), + 'ifexist' => array( 0, 'لوموجود', 'ifexist' ), + 'time' => array( 0, 'وقت', 'time' ), + 'timel' => array( 0, 'تيمل', 'timel' ), + 'rel2abs' => array( 0, 'ريلتوآبس', 'rel2abs' ), + 'titleparts' => array( 0, 'أجزاء_العنوان', 'titleparts' ), + 'len' => array( 0, 'لين', 'len' ), + 'pos' => array( 0, 'بوس', 'pos' ), + 'rpos' => array( 0, 'آربوس', 'rpos' ), + 'sub' => array( 0, 'متفرع', 'sub' ), + 'count' => array( 0, 'عدد', 'count' ), + 'replace' => array( 0, 'استبدال', 'replace' ), + 'explode' => array( 0, 'انفجار', 'explode' ), ); /** South Azerbaijani (تورکجه) */ @@ -100,7 +100,7 @@ $magicWords['ce'] = array( 'replace' => array( 0, 'хийцарна', 'замена' ), ); -/** Czech (čeština) */ +/** Czech (česky) */ $magicWords['cs'] = array( 'expr' => array( 0, 'výraz' ), 'if' => array( 0, 'když' ), @@ -375,7 +375,7 @@ $magicWords['mk'] = array( $magicWords['ml'] = array( 'expr' => array( 0, 'ദ്യോതകം' ), 'if' => array( 0, 'എങ്കിൽ' ), - 'ifeq' => array( 0, 'സമമെങ്കിൽ' ), + 'ifeq' => array( 0, 'സമെമെങ്കിൽ' ), 'ifexpr' => array( 0, 'എക്സ്പ്രെഷനെങ്കിൽ' ), 'iferror' => array( 0, 'പിഴവെങ്കിൽ' ), 'switch' => array( 0, 'മാറ്റുക' ), @@ -580,22 +580,22 @@ $magicWords['uz'] = array( /** Vietnamese (Tiếng Việt) */ $magicWords['vi'] = array( - 'expr' => array( 0, 'công_thức', 'côngthức' ), + 'expr' => array( 0, 'côngthức' ), 'if' => array( 0, 'nếu' ), - 'ifeq' => array( 0, 'nếu_bằng', 'nếubằng' ), - 'ifexpr' => array( 0, 'nếu_công_thức', 'nếucôngthức' ), - 'iferror' => array( 0, 'nếu_lỗi', 'nếulỗi' ), - 'default' => array( 0, '#mặc_định', '#mặcđịnh' ), - 'ifexist' => array( 0, 'nếu_tồn_tại', 'nếutồntại' ), + 'ifeq' => array( 0, 'nếubằng' ), + 'ifexpr' => array( 0, 'nếucôngthức' ), + 'iferror' => array( 0, 'nếulỗi' ), + 'default' => array( 0, '#mặcđịnh' ), + 'ifexist' => array( 0, 'nếutồntại' ), 'time' => array( 0, 'giờ' ), - 'timel' => array( 0, 'giờ_địa_phương', 'giờđịaphương' ), - 'len' => array( 0, 'số_chữ', 'sốchữ', 'số_ký_tự', 'sốkýtự', 'số_kí_tự', 'sốkítự' ), - 'pos' => array( 0, 'vị_trí', 'vịtrí' ), - 'rpos' => array( 0, 'vị_trí_phải', 'vịtríphải' ), - 'sub' => array( 0, 'chuỗi_con', 'chuỗicon' ), + 'timel' => array( 0, 'giờđịaphương' ), + 'len' => array( 0, 'sốchữ', 'sốkýtự', 'sốkítự' ), + 'pos' => array( 0, 'vịtrí' ), + 'rpos' => array( 0, 'vịtríphải' ), + 'sub' => array( 0, 'chuỗicon' ), 'count' => array( 0, 'số' ), - 'replace' => array( 0, 'thay_thế', 'thaythế' ), - 'urldecode' => array( 0, 'giải_mã_url', 'giảimãurl' ), + 'replace' => array( 0, 'thaythế' ), + 'urldecode' => array( 0, 'giảimãurl' ), ); /** Yiddish (ייִדיש) */ diff --git a/extensions/ParserFunctions/ParserFunctions.i18n.php b/extensions/ParserFunctions/ParserFunctions.i18n.php index bc3d200d..e026b693 100644 --- a/extensions/ParserFunctions/ParserFunctions.i18n.php +++ b/extensions/ParserFunctions/ParserFunctions.i18n.php @@ -1233,33 +1233,6 @@ $messages['id'] = array( 'pfunc_string_too_long' => 'Kesalahan: String melebihi limit $1 karakter', ); -/** Iloko (Ilokano) - * @author Lam-ang - */ -$messages['ilo'] = array( - 'pfunc_desc' => 'Napasayaat a parser nga adda kadagiti lohikal nga annong', - 'pfunc_time_error' => 'Biddut: Imbalido nga oras.', - 'pfunc_time_too_long' => 'Biddut: Adu unay dagiti panagtawag ti #time.', - 'pfunc_time_too_big' => 'Biddut: Ti #time ket suportaranna laeng dagiti tawen aginggana iti 9999.', - 'pfunc_time_too_small' => 'Biddut: ti #time ket suportaranna laeng dagiti tawen manipud ti 0.', - 'pfunc_rel2abs_invalid_depth' => 'Biddut: Imbalido a kauneg iti dalan: "$1" (nagpadas a nangserrek ti nodo iti ngato ti ramut a nodo).', - 'pfunc_expr_stack_exhausted' => 'Biddut a panangiyebkas: Naibusen ti tuon.', - 'pfunc_expr_unexpected_number' => 'Biddut a panangiyebkas:Di nanamnama a bilang.', - 'pfunc_expr_preg_match_failure' => 'Biddut a panangiyebkas: Di nanamnama a pannakapaay ti preg_match.', - 'pfunc_expr_unrecognised_word' => 'Biddut a panangiyebkas: Di mabigbigan a balikas ti "$1".', - 'pfunc_expr_unexpected_operator' => 'Biddut a panangiyebkas: Di nanamnama nga operator ti $1.', - 'pfunc_expr_missing_operand' => 'Biddut a panangiyebkas: Napukaw nga operand para iti $1.', - 'pfunc_expr_unexpected_closing_bracket' => 'Biddut a panangiyebkas: Di nanamnama a pangrikep a braket.', - 'pfunc_expr_unrecognised_punctuation' => 'Biddut a panangiyebkas: Di nanamnama a karakter ti tuldek ti "$1".', - 'pfunc_expr_unclosed_bracket' => 'Biddut a panangiyebkas: Di narikpan a braket.', - 'pfunc_expr_division_by_zero' => 'Panagbingbingay babaen ti sero.', - 'pfunc_expr_invalid_argument' => 'Imbalido nga argumento para iti $1: < -1 wenno > 1.', - 'pfunc_expr_invalid_argument_ln' => 'Imbalido nga argumento para iti ln: <= 0.', - 'pfunc_expr_unknown_error' => 'Biddut a panangiyebkas: Di ammo a biddut ($1).', - 'pfunc_expr_not_a_number' => 'Iti $1: Ti resulta ket saan a bilang.', - 'pfunc_string_too_long' => 'Biddut: Ti kuerdas ket nasurokanna ti limitado ti karakter iti $1.', -); - /** Ido (Ido) * @author Malafaya */ @@ -1521,7 +1494,6 @@ $messages['lb'] = array( 'pfunc_time_error' => 'Feeler: ongëlteg Zäit', 'pfunc_time_too_long' => 'Feeler: ze dacks #time opgeruff', 'pfunc_time_too_big' => 'Feeler: #time ënnerstëtzt nëmme Jore bis 9999', - 'pfunc_time_too_small' => 'Feeler: #time ënnerstëtzt nëmme Jore vun 0 un.', 'pfunc_expr_stack_exhausted' => 'Expressiouns-Feeler: Stack iwwergelaf', 'pfunc_expr_unexpected_number' => 'Expressiouns-Feeler: Onerwarten Zuel', 'pfunc_expr_unrecognised_word' => 'Expressiouns-Feeler: Onerkantent Wuert "$1"', @@ -1926,7 +1898,6 @@ $messages['pms'] = array( 'pfunc_time_error' => 'Eror: temp nen bon', 'pfunc_time_too_long' => 'Eror: #time a ven ciamà tròpe vire', 'pfunc_time_too_big' => "Eror: #time a përmët mach j'agn fin al 9999.", - 'pfunc_time_too_small' => "Eror: #time a përmet j'agn mach da 0.", 'pfunc_rel2abs_invalid_depth' => 'Eror: profondità nen bon-a ant ël përcors: "$1" (a l\'é provasse a ciamé un grop dzora a la rèis)', 'pfunc_expr_stack_exhausted' => "Eror ëd l'espression: stach esaurìa", 'pfunc_expr_unexpected_number' => "Eror ëd l'espression: nùmer pa spetà", @@ -2408,7 +2379,6 @@ $messages['sv'] = array( 'pfunc_time_error' => 'Fel: ogiltig tid', 'pfunc_time_too_long' => 'Fel: för många anrop av #time', 'pfunc_time_too_big' => 'Fel: # tid stöder endast år fram till 9999', - 'pfunc_time_too_small' => 'Fel: #tid stödjer enbart år från 0.', 'pfunc_rel2abs_invalid_depth' => 'Fel: felaktig djup i sökväg: "$1" (försöker nå en nod ovanför rotnoden)', 'pfunc_expr_stack_exhausted' => 'Fel i uttryck: Stackutrymmet tog slut', 'pfunc_expr_unexpected_number' => 'Fel i uttryck: Oväntat tal', diff --git a/extensions/PdfHandler/PdfHandler.i18n.php b/extensions/PdfHandler/PdfHandler.i18n.php index 8f259998..06143e7b 100644 --- a/extensions/PdfHandler/PdfHandler.i18n.php +++ b/extensions/PdfHandler/PdfHandler.i18n.php @@ -672,7 +672,6 @@ $messages['lb'] = array( 'pdf-desc' => '"Programm" den et erméiglecht PDF-Fichieren als Bild ze kucken', 'pdf_no_metadata' => 'Meta-Informatiounen aus dem PDF Dokument kënnen net gelies ginn', 'pdf_page_error' => "D'Säitenzuel ass net an dem Beräich.", - 'exif-pdf-producer' => 'Ëmwandlungsprogramm', 'exif-pdf-version' => 'Versioun vum PDF-Format', 'exif-pdf-encrypted' => 'Verschlësselt', 'exif-pdf-pagesize' => 'Gréisst vun der Säit', @@ -687,13 +686,6 @@ $messages['li'] = array( 'pdf_page_error' => 'paginanómmer besteit neet', ); -/** لوری (لوری) - * @author Mogoeilor - */ -$messages['lrc'] = array( - 'exif-pdf-pagesize' => 'انازه بلگه', -); - /** Lithuanian (lietuvių) * @author Matasg */ @@ -734,12 +726,11 @@ $messages['ml'] = array( /** Marathi (मराठी) * @author Kaustubh * @author Sankalpdravid - * @author V.narsikar */ $messages['mr'] = array( 'pdf-desc' => 'चित्र मोडमध्ये पीडीएफ संचिका पाहण्यासाठी आवश्यक प्रणाली', 'pdf_no_metadata' => 'पीडीएफमधून मेटाडाटा घेऊ शकत नाही', - 'pdf_page_error' => 'पान क्रमांक आवाक्यात नाही', + 'pdf_page_error' => 'पान क्रमांक सीमेमध्ये नाही', ); /** Malay (Bahasa Melayu) diff --git a/extensions/Poem/Poem.i18n.php b/extensions/Poem/Poem.i18n.php index 7f5157f5..c58ce78d 100644 --- a/extensions/Poem/Poem.i18n.php +++ b/extensions/Poem/Poem.i18n.php @@ -310,7 +310,7 @@ $messages['id'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'poem-desc' => 'Agnayon ti etiketa ti{prefix:pagename}} <poem>
para iti panagporma ti daniw', + 'poem-desc' => 'Ikkan na iti<poem>
nga tag para ti pagporma ti daniw', ); /** Italian (italiano) diff --git a/extensions/Renameuser/README b/extensions/Renameuser/README index a344ebf6..e44aaafe 100644 --- a/extensions/Renameuser/README +++ b/extensions/Renameuser/README @@ -1,4 +1,4 @@ -This is the readme file for the MediaWiki Renameuser extension. +These is the readme file for the MediaWiki Renameuser extension. Extension page on mediawiki.org: https://www.mediawiki.org/wiki/Extension:Renameuser Latest version of the readme file: https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/Renameuser.git;a=blob;f=README diff --git a/extensions/Renameuser/Renameuser.alias.php b/extensions/Renameuser/Renameuser.alias.php index 6ac6f8cf..0523c045 100644 --- a/extensions/Renameuser/Renameuser.alias.php +++ b/extensions/Renameuser/Renameuser.alias.php @@ -64,7 +64,7 @@ $specialPageAliases['ce'] = array( 'Renameuser' => array( 'Декъашхочун_цӀе_хийца' ), ); -/** Czech (čeština) */ +/** Czech (česky) */ $specialPageAliases['cs'] = array( 'Renameuser' => array( 'Přejmenovat_uživatele' ), ); diff --git a/extensions/Renameuser/Renameuser.i18n.php b/extensions/Renameuser/Renameuser.i18n.php index 795390bc..c1411037 100644 --- a/extensions/Renameuser/Renameuser.i18n.php +++ b/extensions/Renameuser/Renameuser.i18n.php @@ -1022,7 +1022,6 @@ Zur Information folgt das Benutzernamenänderungs-Logbuch.', /** Zazaki (Zazaki) * @author Aspar * @author Erdemaslancan - * @author Gorizon * @author Mirzali * @author Xoser */ @@ -1037,7 +1036,7 @@ $messages['diq'] = array( 'renameusermove' => 'nameyê karberan u pelê werêaameyişan bıkırışi nameyo newe', 'renameusersuppress' => 'Name de newi re hetenayışo newe vıraştış', 'renameuserreserve' => 'nameyê karberi yo verini bloke bıker.', - 'renameuserwarnings' => 'İğtari:', + 'renameuserwarnings' => 'hişyariyi', 'renameuserconfirm' => 'bele karberi newe ra name bıker', 'renameusersubmit' => 'bierşawê/biruşnê', 'renameuser-submit-blocklog' => 'Rocekanê bloqandê karbari bıvin', @@ -2682,13 +2681,6 @@ $messages['li'] = array( Relevante regels oet 't logbook staon hieónger.", ); -/** لوری (لوری) - * @author Mogoeilor - */ -$messages['lrc'] = array( - 'renameuserreason' => 'دلیل:', -); - /** Lithuanian (lietuvių) * @author Eitvys200 * @author Homo @@ -2881,7 +2873,7 @@ $messages['mr'] = array( 'renameuserreserve' => 'जुने सदस्य खाते पुढील वापरासाठी अवरुद्ध करा', 'renameuserwarnings' => 'ताकीद:', 'renameuserconfirm' => 'होय, सदस्याचे नाव बदला', - 'renameusersubmit' => 'सादर करा', + 'renameusersubmit' => 'पाठवा', 'renameusererrordoesnotexist' => '"$1 " नावाचा सदस्य अस्तित्वात नाही.', 'renameusererrorexists' => '"$1 " नावाचा सदस्य अगोदरच अस्तित्वात आहे', 'renameusererrorinvalid' => '"$1 " हे नाव चुकीचे आहे.', @@ -4753,7 +4745,7 @@ $messages['vo'] = array( 'renameuser-desc' => "Votanemön gebani (gität: ''renameuser'' zesüdon)", 'renameuserold' => 'Gebananem anuik:', 'renameusernew' => 'Gebananem nulik:', - 'renameuserreason' => 'Kod:', + 'renameuserreason' => 'Kod votanemama:', # Fuzzy 'renameusermove' => 'Topätükön padi e bespikapadi gebana (e donapadis onsik) ad nem nulik', 'renameuserreserve' => 'Neletön gebananemi rigik (pos votanemam) ad pagebön ün fütür', 'renameuserwarnings' => 'Nuneds:', @@ -4844,7 +4836,6 @@ $messages['yo'] = array( ); /** Cantonese (粵語) - * @author Liuxinyu970226 */ $messages['yue'] = array( 'renameuser' => '改用戶名', diff --git a/extensions/Renameuser/RenameuserSQL.php b/extensions/Renameuser/RenameuserSQL.php index ca03ad3e..eeb879a0 100644 --- a/extensions/Renameuser/RenameuserSQL.php +++ b/extensions/Renameuser/RenameuserSQL.php @@ -221,7 +221,7 @@ class RenameuserSQL { } if ( count( $jobs ) > 0 ) { - JobQueueGroup::singleton()->push( $jobs, JobQueue::QOS_ATOMIC ); // don't commit yet + Job::safeBatchInsert( $jobs ); // don't commit yet } // Commit the transaction diff --git a/extensions/SpamBlacklist/SpamBlacklist.i18n.php b/extensions/SpamBlacklist/SpamBlacklist.i18n.php index 343586b7..af397dba 100644 --- a/extensions/SpamBlacklist/SpamBlacklist.i18n.php +++ b/extensions/SpamBlacklist/SpamBlacklist.i18n.php @@ -447,7 +447,6 @@ $messages['bjn'] = array( ); /** Bengali (বাংলা) - * @author Aftab1995 * @author Bellayet * @author Nasir8891 * @author Zaheen @@ -478,10 +477,6 @@ $messages['bn'] = array( 'spam-blacklisted-email-signup' => 'আপনার লেখা ইমেইল ঠিকানাটি কালোতালিকাভুক্ত।', 'spam-invalid-lines' => 'নিচের স্প্যাম কালোতালিকার {{PLURAL:$1|লাইন|লাইনগুলি}} অবৈধ রেগুলার {{PLURAL:$1|এক্সপ্রেশন|এক্সপ্রেশন}} ধারণ করছে এবং পাতাটি সংরক্ষণের আগে এগুলি ঠিক করা {{PLURAL:$1|প্রয়োজন|প্রয়োজন}}:', 'spam-blacklist-desc' => 'রেজেক্স-ভিত্তিক স্প্যামরোধী সরঞ্জাম: [[MediaWiki:Spam-blacklist]] এবং [[MediaWiki:Spam-whitelist]]', # Fuzzy - 'log-name-spamblacklist' => 'স্প্যাম কালোতালিকা লগ', - 'log-description-spamblacklist' => 'এই ঘটনাগুলি স্প্যাম কালোতালিকার হিট অনুসরণ।', - 'right-spamblacklistlog' => 'স্প্যাম কালোতালিকা লগ দেখুন', - 'action-spamblacklistlog' => 'স্প্যাম কালোতালিকা লগ দেখুন', ); /** Breton (brezhoneg) @@ -841,7 +836,6 @@ $messages['de-formal'] = array( /** Zazaki (Zazaki) * @author Aspar * @author Erdemaslancan - * @author Marmase * @author Olvörg */ $messages['diq'] = array( @@ -883,7 +877,7 @@ $messages['diq'] = array( 'spam-blacklisted-email-text' => 'Nıka adresa e-postayê to qande karberê bini ra mesac riştene listeyê siya dero.', 'spam-blacklisted-email-signup' => 'E-posta adresiyo ke deyayo karkerdışe cı newke groto siyaliste.', 'spam-invalid-lines' => 'na qerelisteya spami {{PLURAL:$1|satır|satıran}} {{PLURAL:$1|nemeqbulo|nemeqbuli}};', - 'spam-blacklist-desc' => "Regex-tabanın haleta anti-spami URL'ya perer u adresa e-posta qande karberande qeydınan geriyayo", + 'spam-blacklist-desc' => 'Regex-tabanlı anti-spam aracı: [[MediaWiki:Spam-blacklist]] ve [[MediaWiki:Spam-whitelist]]', # Fuzzy ); /** Lower Sorbian (dolnoserbski) @@ -1085,14 +1079,9 @@ $messages['et'] = array( # * Iga rida, mis ei ole tühi, on regulaaravaldise osa, mis vastab ainult e-posti aadressides sisalduvatele hostinimedele.', 'spam-blacklisted-email' => 'Musta nimekirja kantud e-posti aadress', 'spam-blacklisted-email-text' => 'Musta nimekirja sissekande tõttu on sinu e-posti aadressilt teistele kasutajatele e-kirjade saatmine praegu keelatud.', - 'spam-blacklisted-email-signup' => 'Selle e-posti aadressi kasutamine on praegu musta nimekirja sissekandega keelatud.', + 'spam-blacklisted-email-signup' => 'Selle e-posti aadressi kasutamine praegu musta nimekirja sissekandega keelatud.', 'spam-invalid-lines' => '{{PLURAL:$1|Järgmine rida|Järgmised read}} rämpspostituste mustas nimekirjas on {{PLURAL:$1|vigane regulaaravaldis|vigased regulaaravaldised}} ja {{PLURAL:$1|see|need}} tuleb enne lehekülje salvestamist parandada:', 'spam-blacklist-desc' => 'Regulaaravaldisel põhinev tööriist, mis võimaldab lisada musta nimekirja lehekülgedel toodud internetiaadresse ning registreeritud kasutajate e-posti aadresse.', - 'log-name-spamblacklist' => 'Rämpsu musta nimekirja logi', - 'log-description-spamblacklist' => 'Siin on loetletud rämpspostituse musta nimekirja tabamused.', - 'logentry-spamblacklist-hit' => '$1 püüdis lisada leheküljele $3 rämpspostituse mustas nimekirjas olevat linki $4.', - 'right-spamblacklistlog' => 'Vaadata rämpsu musta nimekirja', - 'action-spamblacklistlog' => 'vaadata rämpsu musta nimekirja', ); /** Persian (فارسی) @@ -1134,16 +1123,9 @@ $messages['fa'] = array( # * هر سطر از متن به عنوان یک دستور از نوع عبارت باقاعده در نظر گرفته میشود که فقط با نام میزبان در نشانی پست الکترونیکی مطابقت داده میشود', 'spam-blacklisted-email' => 'نشانی پست الکترونیکی موجود در لیست سیاه', 'spam-blacklisted-email-text' => 'نشانی پست الکترونیکی شما در حال حاضر در فهرست سیاه قرار دارد و نمیتوانید به دیگر کاربران نامه بفرستید.', - 'spam-blacklisted-email-signup' => 'نشانی رایانامه دادهشده در حال حاضر در فهرست سیاه است.', + 'spam-blacklisted-email-signup' => 'نشانی پست الکترونیکی داده شده در حال حاضر در فهرست سیاه است و قابل استفاده نیست.', 'spam-invalid-lines' => '{{PLURAL:$1|سطر|سطرهای}} زیر در فهرست سیاه هرزنگاری، عبارات باقاعدهٔ نامجاز {{PLURAL:$1|است|هستند}} و قبل از ذخیره کردن صفحه باید اصلاح {{PLURAL:$1|شود|شوند}}:', - 'spam-blacklist-desc' => 'Regex-based anti-spam tool allowing to blacklist URLs in pages and email addresses for registered users - -ابزار بر پایهٔ عبارت باقاعده ضدهرزنگاری اجازهٔ فهرست سیاهکردن نشانیهای اینترنتی در صفحهها و نشانیهای رایانامه برای کاربران ثبت نام کرده', - 'log-name-spamblacklist' => 'سیاههٔ فهرست سیاه هرزنگاری', - 'log-description-spamblacklist' => 'این رویدادها وقوع فهرست سیاه هزنگاری را دنبال میکند.', - 'logentry-spamblacklist-hit' => '$1 در $3 با تلاش در افزودن $4 باعث برخورد به فهرست سیاه هرزنامه شدهاست.', - 'right-spamblacklistlog' => 'دیدن یک سیاههٔ فهرست سیاه هرزنامه', - 'action-spamblacklistlog' => 'دیدن سیاههٔ فهرست سیاه هرزنامه', + 'spam-blacklist-desc' => 'ابزار ضد هرزنویسی مبتنی بر regular expressions: [[MediaWiki:Spam-blacklist]] و [[MediaWiki:Spam-whitelist]]', # Fuzzy ); /** Finnish (suomi) @@ -1737,12 +1719,7 @@ $messages['ilo'] = array( 'spam-blacklisted-email-text' => 'Ti e-suratmo a pagtaengan ket agdama a naiparit manipud ti panagipatulod kadagiti e-surat kadagiti sabsabali nga agar-aramat.', 'spam-blacklisted-email-signup' => 'Ti naited nga e-surat a pagatengan ket agdama a naiparit manipud ti panagusar.', 'spam-invalid-lines' => 'Ti sumaganad a spam blacklist {{PLURAL:$1| a linia ket|kadagiti linia ket}} imbalido a kadawyan {{PLURAL:$1|a nangisao|kadagiti panangisao}} ken {{PLURAL:$1|masapsapol|masapol}} a mapudnuan sakbay nga idulin ti panid:', - 'spam-blacklist-desc' => 'Naibatay ti regex a ramit ti kontra-spam a mangpalubos a mangiparit kadagiti URL kadagiti panid ken dagiti esurat a pagtaengan para kadagiti nakarehistro nga agar-aramat', - 'log-name-spamblacklist' => 'Listaan ti naiparit para iti spam', - 'log-description-spamblacklist' => 'Dagitoy a pasamak ket surotenna dagiti naiparit a listaan a napuntaan ti spam.', - 'logentry-spamblacklist-hit' => 'Ti $1 ket gapuanan ti pannakapunta ti naiparit a listaan ti spam iti $3 babaen ti panagpadas nga aginayon iti $4.', - 'right-spamblacklistlog' => 'Kitaen ti naiparit a listaan ti spam', - 'action-spamblacklistlog' => 'kitaen ti naiparit a listaan ti spam', + 'spam-blacklist-desc' => 'Naibantay ti regex kontra-spam a ramit: [[MediaWiki:Spam-blacklist]] ken [[MediaWiki:Spam-whitelist]]', # Fuzzy ); /** Icelandic (íslenska) @@ -2335,12 +2312,7 @@ $messages['ml'] = array( 'spam-blacklisted-email-text' => 'താങ്കളുടെ ഇമെയിൽ വിലാസം ഇപ്പോൾ മറ്റുള്ളവർക്ക് എഴുത്തയക്കാനാവാത്ത കരിമ്പട്ടികയിൽ ഉൾപ്പെട്ടിരിക്കുന്നു.', 'spam-blacklisted-email-signup' => 'നൽകിയ ഇമെയിൽ വിലാസം ഇപ്പോൾ കരിമ്പട്ടികയിൽ പെട്ടിരിക്കുന്ന ഒന്നാണ്.', 'spam-invalid-lines' => 'താഴെ കൊടുത്തിരിക്കുന്ന പാഴെഴുത്ത് കരിമ്പട്ടികയിലെ {{PLURAL:$1|വരി ഒരു|വരികൾ}} അസാധുവായ റെഗുലർ {{PLURAL:$1|എക്സ്പ്രെഷൻ|എക്സ്പ്രെഷനുകൾ}} ആണ്, താൾ സേവ് ചെയ്യുന്നതിനു മുമ്പ് {{PLURAL:$1|അത്|അവ}} ശരിയാക്കേണ്ടതുണ്ട്:', - 'spam-blacklist-desc' => 'അംഗത്വമെടുത്ത ഉപയോക്താക്കൾ യു.ആർ.എല്ലുകളും ഇമെയിൽ വിലാസങ്ങളും, താളുകളിൽ ചേർക്കുന്നത് കരിമ്പട്ടികയിൽ പെടുത്താനുള്ള റെജെക്സ്-അധിഷ്ഠിത പാഴെഴുത്ത് തടയൽ ഉപകരണം', - 'log-name-spamblacklist' => 'പാഴെഴുത്ത് കരിമ്പട്ടിക രേഖ', - 'log-description-spamblacklist' => 'പാഴെഴുത്ത് കരിമ്പട്ടികയെ ഉണർത്തിയ പ്രവൃത്തികളുടെ രേഖ.', - 'logentry-spamblacklist-hit' => '$3 എന്ന താളിൽ $4 എന്നത് ചേർക്കാൻ $1 നടത്തിയ ശ്രമം പാഴെഴുത്ത് കരിമ്പട്ടികയിൽ കുടുങ്ങിയിരിക്കുന്നു.', - 'right-spamblacklistlog' => 'പാഴെഴുത്ത് കരിമ്പട്ടിക രേഖ കാണുക', - 'action-spamblacklistlog' => 'പാഴെഴുത്ത് കരിമ്പട്ടിക രേഖ കാണുക', + 'spam-blacklist-desc' => 'റെജെക്സ്-അധിഷ്ഠിത പാഴെഴുത്ത് തടയൽ ഉപകരണം: [[MediaWiki:Spam-blacklist]] ഒപ്പം [[MediaWiki:Spam-whitelist]]', # Fuzzy ); /** Marathi (मराठी) @@ -2552,11 +2524,6 @@ $messages['nl'] = array( 'spam-blacklisted-email-signup' => 'Het opgegeven e-mailadres staat momenteel op de zwarte lijst.', 'spam-invalid-lines' => 'De volgende {{PLURAL:$1|regel|regels}} van de zwarte lijst {{PLURAL:$1|is een|zijn}} onjuiste reguliere {{PLURAL:$1|expressie|expressies}} en {{PLURAL:$1|moet|moeten}} verbeterd worden alvorens de pagina kan worden opgeslagen:', 'spam-blacklist-desc' => "Op reguliere expressies gebaseed antispamhulpprogramma dat het mogelijk maakt URL's in pagina's te blokkeren en e-mailadressen voor geblokkeerde gebruikers", - 'log-name-spamblacklist' => 'Logboek zwarte lijst', - 'log-description-spamblacklist' => 'Deze lijst bevat gebeurtenissen met betrekking tot de zwarte lijst.', - 'logentry-spamblacklist-hit' => '{{GENDER:$2|$1}} heeft geprobeerd $4 van de zwarte lijst toe te voegen op $3', # Fuzzy - 'right-spamblacklistlog' => 'Logboek zwarte lijst bekijken', - 'action-spamblacklistlog' => 'logboek zwarte lijst te bekijken', ); /** Nederlands (informeel) (Nederlands (informeel)) @@ -2742,12 +2709,7 @@ $messages['pms'] = array( 'spam-blacklisted-email-text' => "Soa adrëssa ëd pòsta eletrònica a l'é al moment an na lista nèira për mandé dij mëssagi a j'àutri utent.", 'spam-blacklisted-email-signup' => "L'adrëssa ëd pòsta eletrònica dàita a l'é al moment an na lista nèira për l'utilisassion.", 'spam-invalid-lines' => "{{PLURAL:$1|St'|Sti}} element dla lista nèira dla rumenta ëd reclam a {{PLURAL:$1|l'é|son}} {{PLURAL:$1|n'|dj'}}espression regolar nen {{PLURAL:$1|bon-a|bon-e}} e a l'{{PLURAL:$1|ha|han}} da manca d'esse coregiùe anans che salvé la pàgina:", - 'spam-blacklist-desc' => "Utiss contra la rumenta basà su dj'espression regolar ch'a permëtto ëd buté an sla lista nèira dj'adrësse an sl'Aragnà ant le pàgine e dj'adrësse ëd pòsta eletrònica për j'utent argistrà.", - 'log-name-spamblacklist' => 'Argistr dla lista nèira dla rumenta', - 'log-description-spamblacklist' => 'Costi eveniment a marco le rëspondense con la lista nèira dla rumenta.', - 'logentry-spamblacklist-hit' => "$1 a l'ha causà na rëspondensa con la lista nèira dla rumenta su $3 an sërcand ëd gionté $4.", - 'right-spamblacklistlog' => "Smon-e l'argistr dla lista nèira dla rumenta", - 'action-spamblacklistlog' => "vëdde l'argistr dla lista nèira dla rumenta", + 'spam-blacklist-desc' => 'Strument anti-spam basà an dzora a Regex: [[MediaWiki:Spam-blacklist]] e [[MediaWiki:Spam-whitelist]]', # Fuzzy ); /** Western Punjabi (پنجابی) @@ -2965,7 +2927,6 @@ $messages['roa-tara'] = array( * @author Express2000 * @author HalanTul * @author Kaganer - * @author NBS * @author Okras * @author Александр Сигачёв */ @@ -3011,11 +2972,6 @@ $messages['ru'] = array( 'spam-blacklisted-email-signup' => 'Указанный адрес электронной почты в настоящее время занесён в чёрный список и не может быть использован.', 'spam-invalid-lines' => '{{PLURAL:$1|Следующая строка чёрного списка ссылок содержит ошибочное регулярное выражение и должна быть исправлена|Следующие строки чёрного списка ссылок содержат ошибочные регулярные выражения и должны быть исправлены}} перед сохранением:', 'spam-blacklist-desc' => 'Основанный на регулярных выражениях анти-спам инструмент позволяет добавлять в чёрный список URL на страницах и адреса электронной почты для зарегистрированных пользователей', - 'log-name-spamblacklist' => 'Журнал спам-листа', - 'log-description-spamblacklist' => 'Это журнал, отслеживающий срабатывание спам-листа.', - 'logentry-spamblacklist-hit' => '$1 вызвал срабатывание спам-листа на странице $3 из-за попытки добавить $4.', - 'right-spamblacklistlog' => 'Просмотр журнала чёрного списка по спаму', - 'action-spamblacklistlog' => 'просмотр журнала чёрного списка по спаму', ); /** Rusyn (русиньскый) @@ -3345,9 +3301,7 @@ $messages['stq'] = array( ); /** Swedish (svenska) - * @author Ainali * @author Lejonel - * @author Lokal Profil * @author Skalman * @author WikiPhoenix */ @@ -3371,34 +3325,10 @@ $messages['sv'] = array( # * All text från ett #-tecken till radens slut är en kommentar # * Alla icke-tomma rader används som reguljära uttryck för att matcha domännamn i URL:er - #
-# E-postadresser som matchar den här listan kommer att hindras att registrera och skicka e-post -# Denna lista gäller endast denna wiki; se även den globala svartlistan. -# För dokumentation se https://www.mediawiki.org/wiki/Extension:SpamBlacklist -# -# Syntaxen är följande: -# * Allt från ett "#"-tecken till slutet av raden är en kommentar -# * Varje icke-tom rad är ett regex-fragment som endast kommer att matcha värdnamn i e-postadresser - #', - 'email-whitelist' => ' #
-# E-postadresser som matchar den här listan kommer *inte* att blockeras, även om de skulle ha blivit blockerade av svartlistan. -# -# Syntaxen är följande: -# * Allt från ett "#"-tecken till slutet av raden är en kommentar -# * Varje icke-tom rad är ett regex-fragment som endast kommer att matcha värdnamn i e-postadresser - #', 'spam-blacklisted-email' => 'Svartlistad e-postadress', - 'spam-blacklisted-email-text' => 'Din e-postadress är för närvarande svartlistad från att skicka e-post till andra användare.', - 'spam-blacklisted-email-signup' => 'Den angivna e-postadressen är förnärvarande svartlistad från användning.', 'spam-invalid-lines' => 'Följande {{PLURAL:$1|rad|rader}} i svarta listan för spam innehåller inte något giltigt reguljärt uttryck och måste rättas innan sidan sparas:', 'spam-blacklist-desc' => 'Antispamverktyg baserat på reguljära uttryck som gör det möjligt att svartlista webbadresser på sidor och e-postadresser för registrerade användare', - 'log-name-spamblacklist' => 'Svartlistningslogg för spam', - 'log-description-spamblacklist' => 'Dessa händelser spårar träffar is svartlistningsloggen för spam.', - 'logentry-spamblacklist-hit' => '$1 orsakade en träff i svartlistningsloggen för spam på $3 genom att försöka lägga till $4.', - 'right-spamblacklistlog' => 'Visa svartlistningslogg för spam', - 'action-spamblacklistlog' => 'visa svartlistningsloggen för spam', ); /** Tamil (தமிழ்) @@ -3873,10 +3803,8 @@ $messages['zh-hant'] = array( 'spam-blacklisted-email-text' => '您的電郵地址目前已列入黑名單以防止您發送電郵予其他用戶。', 'spam-blacklisted-email-signup' => '此電郵地址目前被禁止使用。', 'spam-invalid-lines' => '以下在灌水黑名單的{{PLURAL:$1|一行|多行}}有無效的表示式,請在儲存這頁前先將{{PLURAL:$1|它|它們}}修正:', - 'spam-blacklist-desc' => '基於正則表達式的反垃圾電郵工具,允許加入濫發電郵的URL和/或註冊用戶於此頁面', + 'spam-blacklist-desc' => '以正則表達式為本的防灌水工具:[[MediaWiki:Spam-blacklist]] 與 [[MediaWiki:Spam-whitelist]]', # Fuzzy 'log-name-spamblacklist' => '垃圾連結黑名單日誌', - 'log-description-spamblacklist' => '這些事件已被垃圾郵件黑名單觸發。', - 'logentry-spamblacklist-hit' => '$1於$3嘗試加入$4而觸發垃圾電郵黑名單。', 'right-spamblacklistlog' => '查閱垃圾電郵黑名單日誌', 'action-spamblacklistlog' => '查閱垃圾電郵黑名單日誌', ); diff --git a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php index b1c9851d..7318574d 100644 --- a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php +++ b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php @@ -28,6 +28,12 @@ class SyntaxHighlight_GeSHi { // Don't trim leading spaces away, just the linefeeds $text = preg_replace( '/^\n+/', '', $text ); + if( $wgUseTidy ) { + // HTML Tidy will convert tabs to spaces incorrectly (bug 30930). + // Preemptively replace the spaces in a more controlled fashion. + $text = self::tabsToSpaces( $text ); + } + // Validate language if( isset( $args['lang'] ) && $args['lang'] ) { $lang = $args['lang']; @@ -95,12 +101,6 @@ class SyntaxHighlight_GeSHi { if( $enclose === GESHI_HEADER_DIV ) { $out = str_replace( "\n", '', $out ); } - // HTML Tidy will convert tabs to spaces incorrectly (bug 30930). - // But the conversion from tab to space occurs while reading the input, - // before the conversion from to tab, so we can armor it that way. - if( $wgUseTidy ) { - $out = str_replace( "\t", ' ', $out ); - } // Register CSS $parser->getOutput()->addHeadItem( self::buildHeadItem( $geshi ), "source-{$lang}" ); @@ -488,4 +488,35 @@ class SyntaxHighlight_GeSHi { public static function hOldSpecialVersion_GeSHi( &$sp, &$extensionTypes ) { return self::hSpecialVersion_GeSHi( $extensionTypes ); } + + /** + * Convert tabs to spaces + * + * @param string $text + * @return string + */ + private static function tabsToSpaces( $text ) { + $lines = explode( "\n", $text ); + $lines = array_map( array( __CLASS__, 'tabsToSpacesLine' ), $lines ); + return implode( "\n", $lines ); + } + + /** + * Convert tabs to spaces for a single line + * + * @param $line + * @internal param string $text + * @return string + */ + private static function tabsToSpacesLine( $line ) { + $parts = explode( "\t", $line ); + $width = 8; // To match tidy's config & typical browser defaults + $out = $parts[0]; + foreach( array_slice( $parts, 1 ) as $chunk ) { + $spaces = $width - (strlen( $out ) % $width); + $out .= str_repeat( ' ', $spaces ); + $out .= $chunk; + } + return $out; + } } diff --git a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php index 9b940f3e..8555c4f9 100644 --- a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php +++ b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php @@ -688,11 +688,10 @@ $messages['ksh'] = array( /** Luxembourgish (Lëtzebuergesch) * @author Les Meloures * @author Robby - * @author Soued031 */ $messages['lb'] = array( 'syntaxhighlight-desc' => "Syntax-Ervirhiewung
<syntaxhighlight>
mat Hëllef vu [http://qbnz.com/highlighter/ 'GeSHi Highlighter']",
- 'syntaxhighlight-specify' => 'Déi gewënscht Sprooch muss sou definéiert ginn:',
+ 'syntaxhighlight-specify' => 'Déi gewënscht Sprooch muss esou definéiert ginn:',
'syntaxhighlight-supported' => "Ënnerstëtzte Sprooche fir d'Syntax faarweg ze markéieren",
'syntaxhighlight-err-loading' => '(Feeler beim Luede vun der Lëscht vun den ënnerstëtzte Sproochen)',
'syntaxhighlight-err-language' => 'Net valabel Sprooch.',
diff --git a/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php b/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php
index 4323d05c..60741577 100644
--- a/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php
+++ b/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php
@@ -41,7 +41,7 @@
//
/** The version of this GeSHi file */
-define('GESHI_VERSION', '1.0.8.11-wmf1'); // WMF fix for Haskell (bug 52509)
+define('GESHI_VERSION', '1.0.8.11');
// Define the root directory for the GeSHi code tree
if (!defined('GESHI_ROOT')) {
diff --git a/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php b/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php
index d3b494ed..adae1116 100644
--- a/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php
+++ b/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php
@@ -13,14 +13,6 @@
* -------
* 2005/08/27 (1.0.0)
* - First Release
- * 2013/09/28
- * - Single quotes dropped from QUOTEMARKS to resolve $1
',
'titleblacklist-forbidden-move' => "No es pot moure «$2» a «$3», perquè el títol «$3» està prohibit. Concorda amb l'entrada de la llista negra següent: $1
",
- 'titleblacklist-forbidden-upload' => "S'ha prohibit el nom de fitxer «$2» i se n'impedeix la creació. Concorda amb la següent línia de la llista negra: $1
",
+ 'titleblacklist-forbidden-upload' => "El nom de fitxer «$2» ha estat prohibit i se n'impedeix la creació. Concorda amb la següent línia de la llista negra: $1
",
'titleblacklist-forbidden-new-account' => "No es pot crear el nom d'usuari «$2». Coincideix amb la següent entrada de la llista negra: $1
",
'titleblacklist-invalid' => '{{PLURAL:$1|La línia següent|Les línies següents}} de la llista negra no {{PLURAL:$1|és vàlida|són vàlides}}; heu de corregir-{{PLURAL:$1|la|les}} abans de guardar:',
'titleblacklist-override' => 'Ignora la llista negra',
@@ -558,7 +557,6 @@ $messages['de-formal'] = array(
/** Zazaki (Zazaki)
* @author Aspar
* @author Erdemaslancan
- * @author Marmase
*/
$messages['diq'] = array(
'titleblacklist-desc' => 'serkaran re desturê vıraştışê pel u hesabê karberan dano, qey qedexekerdışi re yew [[MediaWiki:Titleblacklist|listeya risiyayan]] u [[MediaWiki:Titlewhitelist|listeya risıpiyan]] dano.',
@@ -575,8 +573,8 @@ malumatê ey na listeyasiya de zepê ya: $1
',
malumatê ey na listeyasiya de zêpê ya: $1
',
'titleblacklist-forbidden-new-account' => 'vıraştışê nameyê karberê"$2" i qedexe bı.
malumatê ey na listeyasiya de zêpê ya: $1
',
- 'titleblacklist-invalid' => 'Na ğırab lista dı {{PLURAL:$1|en asatır|ené satıri}} néravérené;
-Verdé qeyd kerdışi timar keré:',
+ 'titleblacklist-invalid' => 'nê {{PLURAL:$1|satır o ke|satır ê ke}} listeyasiyayi de qedexe yê;
+kerem kerê verqeydkerdışi de raşt kerê:',
'titleblacklist-override' => 'Tenilisti mehesebne',
'right-tboverride' => 'Siya listeya sernuşti nêravêrde ke',
'right-tboverride-account' => 'Tenilisteya naman dê karberan mehesebnê',
@@ -1376,15 +1374,14 @@ Hic titulus congruit cum expressione regulari: $1
',
/** Luxembourgish (Lëtzebuergesch)
* @author Robby
- * @author Soued031
*/
$messages['lb'] = array(
'titleblacklist-desc' => "Erlaabt den Administrateuren et d'Uleeë vu Säiten a Benotzerkonte mat spezifeschen Titelen iwwer eng [[MediaWiki:Titleblacklist|schwaarz Lëscht]] an eng [[MediaWiki:Titlewhitelist|wäiss Lëscht]] ze verbidden",
'titleblacklist' => '# Dëst ass een Titel deen op enger schwaarzer Lëscht steet. Titelen a Benotzernimm op déi dës Ausdréck passe kann net ugeluecht ginn
# Benotzt "#" fir Bemierkungen
-# Et gëtt tëscht groussen a klenge Buchstawen ënnerscheet',
+# Et gëtt tëschent groussen a klenge Buchstawen ënnerscheed',
'titlewhitelist' => "# Dëst ass d'''Whitelist'' vun den Titelen. Benotzt \"#\" fir Bemierkungen.
-# Et gëtt een Ënnerscheed tëscht groussen a klenge Buchstawe gemaach",
+# Et gëtt een Ënnerscheed tëschent groussen a klenge Buchstawe gemaach",
'titleblacklist-forbidden-edit' => 'Den Titel "$2" dàerf net ugeluecht ginn.
En ass op der schwaarzer Lëscht wéint folgendem Begrëff: $1
',
'titleblacklist-forbidden-move' => '"$2" kann net op "$3" geréckelt ginn, well den Titel "$3" net däerf ugeluecht ginn.
@@ -1392,7 +1389,7 @@ En entsprécht dëser Rubrik vun der schwaarzr Lëscht: $1
',
'titleblacklist-forbidden-upload' => 'De Fichiersnumm "$2" kann net benotzt ginn.
Hien ass identesch mat dësem Numm vun der schwaarzer Lëscht (black list): $1
',
'titleblacklist-forbidden-new-account' => 'De Benotzermumm "$2" gouf gespaart fir benotzt ze ginn.
-En ass sou op der \'\'schwaarzer Lëscht\'\': $1
',
+En ass esou op der \'\'schwaarzer Lëscht\'\': $1
',
'titleblacklist-invalid' => 'Dës {{PLURAL:$1|Linn|Linnen}} op der schwaarzer Lëscht vun den {{PLURAL:$1|Titelen ass|Titele sinn}} net valabel;
verbessert se virum späicheren:',
'titleblacklist-override' => 'Schwaarz Lëscht ignoréieren',
@@ -1501,10 +1498,9 @@ $messages['ml'] = array(
* @author Kaustubh
* @author Mahitgar
* @author Rahuldeshmukh101
- * @author V.narsikar
*/
$messages['mr'] = array(
- 'titleblacklist-desc' => '[[MediaWiki:Titleblacklist|ब्लॅकलीस्ट]] व [[MediaWiki:Titlewhitelist|व्हाईट लीस्ट]] ला अनुसरून पाने आणि सदस्य खात्यांना प्रतिबंधित करण्याची प्रचालकांना परवानगी द्या',
+ 'titleblacklist-desc' => '[[MediaWiki:Titleblacklist|ब्लॅकलीस्ट]] व [[MediaWiki:Titlewhitelist|व्हाईट लीस्ट]] ला अनुसरून पाने आणि सदस्य खात्यांना प्रतिबंधतीअ करण्याची प्रचालकांना परवानगी द्या',
'titleblacklist' => '# ही ब्लॉक केलेल्या शीर्षकांची यादी आहे. या यादीत असलेल्या शीर्षकांचे लेख लिहिता येणार नाहीत.
# शेरा देण्यासाठी "#" वापरा.',
'titlewhitelist' => '# ही वापरू शकत असलेल्या शीर्षकांची यादी आहे. शेरा देण्यासाठी "#" वापरा',
diff --git a/extensions/TitleBlacklist/TitleBlacklist.list.php b/extensions/TitleBlacklist/TitleBlacklist.list.php
index cec4dd89..d197a9c5 100644
--- a/extensions/TitleBlacklist/TitleBlacklist.list.php
+++ b/extensions/TitleBlacklist/TitleBlacklist.list.php
@@ -175,7 +175,7 @@ class TitleBlacklist {
}
$blacklist = $this->getBlacklist();
foreach ( $blacklist as $item ) {
- if ( $item->matches( $title->getFullText(), $action ) ) {
+ if ( $item->matches( $title, $action ) ) {
if ( $this->isWhitelisted( $title, $action ) ) {
return false;
}
@@ -199,7 +199,7 @@ class TitleBlacklist {
}
$whitelist = $this->getWhitelist();
foreach ( $whitelist as $item ) {
- if ( $item->matches( $title->getFullText(), $action ) ) {
+ if ( $item->matches( $title, $action ) ) {
return true;
}
}
@@ -343,7 +343,7 @@ class TitleBlacklistEntry {
* Check whether a user can perform the specified action
* on the specified Title
*
- * @param $title string to check
+ * @param $title Title to check
* @param $action %Action to check
* @return bool TRUE if the the regex matches the title, and is not overridden
* else false if it doesn't match (or was overridden)
@@ -357,17 +357,8 @@ class TitleBlacklistEntry {
return false;
}
- if ( isset( $this->mParams['antispoof'] ) && is_callable( 'AntiSpoof::checkUnicodeString' ) ) {
- list( $ok, $norm ) = AntiSpoof::checkUnicodeString( $title );
- if ( $ok == "OK" ) {
- list( $ver, $title ) = explode( ':', $norm, 2 );
- } else {
- wfDebugLog( 'TitleBlacklist', 'AntiSpoof could not normalize "' . $title . '".' );
- }
- }
-
wfSuppressWarnings();
- $match = preg_match( "/^(?:{$this->mRegex})$/us" . ( isset( $this->mParams['casesensitive'] ) ? '' : 'i' ), $title );
+ $match = preg_match( "/^(?:{$this->mRegex})$/us" . ( isset( $this->mParams['casesensitive'] ) ? '' : 'i' ), $title->getFullText() );
wfRestoreWarnings();
global $wgUser;
@@ -436,9 +427,6 @@ class TitleBlacklistEntry {
if ( preg_match( '/errmsg\s*=\s*(.+)/i', $opt, $matches ) ) {
$options['errmsg'] = $matches[1];
}
- if ( $opt2 == 'antispoof' ) {
- $options['antispoof'] = true;
- }
}
// Process magic words
preg_match_all( '/{{\s*([a-z]+)\s*:\s*(.+?)\s*}}/', $regex, $magicwords, PREG_SET_ORDER );
diff --git a/extensions/TitleBlacklist/TitleBlacklist.php b/extensions/TitleBlacklist/TitleBlacklist.php
index 2bb62b0a..68fb6778 100644
--- a/extensions/TitleBlacklist/TitleBlacklist.php
+++ b/extensions/TitleBlacklist/TitleBlacklist.php
@@ -76,10 +76,6 @@ $wgHooks['CentralAuthAutoCreate'][] = 'TitleBlacklistHooks::centralAuthAutoCreat
$wgHooks['EditFilter'][] = 'TitleBlacklistHooks::validateBlacklist';
$wgHooks['ArticleSaveComplete'][] = 'TitleBlacklistHooks::clearBlacklist';
$wgHooks['UserCreateForm'][] = 'TitleBlacklistHooks::addOverrideCheckbox';
-$wgHooks['UnitTestsList'][] = function( &$files ) {
- $files += glob( __DIR__ . '/tests/*Test.php' );
- return true;
-};
$wgResourceModules['mediawiki.api.titleblacklist'] = array(
'scripts' => 'mediawiki.api.titleblacklist.js',
diff --git a/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php b/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php
index 344e9996..1f8164e7 100644
--- a/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php
+++ b/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php
@@ -105,28 +105,6 @@ class ApiQueryTitleBlacklistTest extends ApiTestCase {
$listed[0]['titleblacklist']['line'],
'Correct blacklist line is returned'
);
- }
-
- /**
- * Tests integration with the AntiSpoof extension
- */
- function testAntiSpoofIntegration() {
- if ( !class_exists( 'AntiSpoof') ) {
- $this->markTestSkipped( "This test requires the AntiSpoof extension" );
- }
-
- $listed = $this->doApiRequest( array(
- 'action' => 'titleblacklist',
- 'tbtitle' => 'AVVVV',
- 'tbaction' => 'create',
- 'tbnooverride' => true,
- ) );
-
- $this->assertEquals(
- 'blacklisted',
- $listed[0]['titleblacklist']['result'],
- 'Spoofed title is blacklisted'
- );
}
}
diff --git a/extensions/TitleBlacklist/tests/testSource b/extensions/TitleBlacklist/tests/testSource
index 235cc671..f73d9dd7 100644
--- a/extensions/TitleBlacklist/tests/testSource
+++ b/extensions/TitleBlacklist/tests/testSource
@@ -2,4 +2,3 @@
.*[Ff]ail.*
.*[Nn]yancat.* if it does not already have it var cursorPos = context.fn.getCaretPosition(); var t = context.fn.getOffset( cursorPos[0] ); - if ( ! $.browser.msie && t && t.node.nodeName === '#text' && t.node.parentNode.nodeName.toLowerCase() === 'body' ) { - $( t.node ).wrap( '
' ); + if ( ! $.browser.msie && t && t.node.nodeName == '#text' && t.node.parentNode.nodeName.toLowerCase() == 'body' ) { + $( t.node ).wrap( "" ); context.fn.purgeOffsets(); context.fn.setSelection( { start: cursorPos[0], end: cursorPos[1] } ); } } - context.fn.updateHistory( event.data.scope === 'realchange' ); + context.fn.updateHistory( event.data.scope == 'realchange' ); return true; }, - cut: function ( event ) { + 'cut': function( event ) { setTimeout( function() { context.$content.find( 'br' ).each( function() { if ( $(this).parent().is( 'body' ) ) { @@ -125,7 +125,7 @@ context.evt = $.extend( context.evt, { }, 100 ); return true; }, - paste: function ( event ) { + 'paste': function( event ) { // Save the cursor position to restore it after all this voodoo var cursorPos = context.fn.getCaretPosition(); var oldLength = context.fn.getContents().length; @@ -138,7 +138,6 @@ context.evt = $.extend( context.evt, { } setTimeout( function() { - /*jshint eqnull:true */ // Kill stuff we know we don't want context.$content.find( 'script,style,img,input,select,textarea,hr,button,link,meta' ).remove(); var nodeToDelete = []; @@ -153,31 +152,30 @@ context.evt = $.extend( context.evt, { } if ( elementAtCursor == null || elementAtCursor.node == null ) { context.$content.prepend( '' ); - firstDirtyNode = context.$content.children()[0]; + firstDirtyNode = context.$content.children()[0]; } else { firstDirtyNode = elementAtCursor.node; } - // This is ugly but seems like the best way to handle the case where we select and replace all editor contents + //this is ugly but seems like the best way to handle the case where we select and replace all editor contents try { - /*jshint expr:true */ firstDirtyNode.parentNode; } catch ( err ) { context.$content.prepend( '' ); - firstDirtyNode = context.$content.children()[0]; + firstDirtyNode = context.$content.children()[0]; } while ( firstDirtyNode != null ) { //we're going to replace the contents of the entire parent node. - while ( firstDirtyNode.parentNode && firstDirtyNode.parentNode.nodeName !== 'BODY' && - !$( firstDirtyNode ).hasClass( 'wikiEditor' ) - ) { + while ( firstDirtyNode.parentNode && firstDirtyNode.parentNode.nodeName != 'BODY' + && ! $( firstDirtyNode ).hasClass( 'wikiEditor' ) + ) { firstDirtyNode = firstDirtyNode.parentNode; } //go back till we find the first pasted node - while ( firstDirtyNode.previousSibling != null && - !$( firstDirtyNode.previousSibling ).hasClass( 'wikiEditor' ) - ) { + while ( firstDirtyNode.previousSibling != null + && ! $( firstDirtyNode.previousSibling ).hasClass( 'wikiEditor' ) + ) { if ( $( firstDirtyNode.previousSibling ).hasClass( '#comment' ) ) { $( firstDirtyNode ).remove(); @@ -187,9 +185,9 @@ context.evt = $.extend( context.evt, { } if ( firstDirtyNode.previousSibling != null ) { - $lastDirtyNode = $( firstDirtyNode.previousSibling ); + $lastDirtyNode = $( firstDirtyNode.previousSibling ); } else { - $lastDirtyNode = $( firstDirtyNode ); + $lastDirtyNode = $( firstDirtyNode ); } var cc = makeContentCollector( $.browser, null ); @@ -220,7 +218,7 @@ context.evt = $.extend( context.evt, { } - if ( !pastedPretty && $.browser.msie && i === 0 ) { + if( !pastedPretty && $.browser.msie && i == 0 ) { continue; } $newElement = $( '' ); @@ -243,7 +241,7 @@ context.evt = $.extend( context.evt, { //anything without wikiEditor class was pasted. $selection = context.$content.find( ':not(.wikiEditor)' ); - if ( $selection.length === 0 ) { + if ( $selection.length == 0 ) { break; } else { firstDirtyNode = $selection.eq( 0 )[0]; @@ -262,7 +260,7 @@ context.evt = $.extend( context.evt, { }, 0 ); return true; }, - ready: function ( event ) { + 'ready': function( event ) { // Initialize our history queue if ( context.$content ) { context.history.push( { 'html': context.$content.html(), 'sel': context.fn.getCaretPosition() } ); @@ -277,11 +275,7 @@ context.evt = $.extend( context.evt, { * Internally used functions */ context.fn = $.extend( context.fn, { - /** - * @param {jQuery} $element - * @param mode - */ - highlightLine: function ( $element ) { + 'highlightLine': function( $element, mode ) { if ( !$element.is( 'p' ) ) { $element = $element.closest( 'p' ); } @@ -289,7 +283,7 @@ context.fn = $.extend( context.fn, { setTimeout( function() { $element.animate( { 'backgroundColor': 'white' }, 'slow' ); }, 100 ); setTimeout( function() { $element.css( 'backgroundColor', 'white' ); }, 1000 ); }, - htmlToText: function ( html ) { + 'htmlToText': function( html ) { // This function is slow for large inputs, so aggressively cache input/output pairs if ( html in context.htmlToTextMap ) { return context.htmlToTextMap[html]; @@ -300,15 +294,15 @@ context.fn = $.extend( context.fn, { // IE does overzealous whitespace collapsing for $( '' ).html( html ); // We also do conversion here, complicated cases are handled later
html = html
- .replace( /\r?\n/g, '' ) // IE7 inserts newlines before block elements
- .replace( / /g, ' ' ) // We inserted these to prevent IE from collapsing spaces
- .replace( /
]*\><\/p\>/gi, '
- .replace( /<\/p\>\s*
]*\>/gi, '\n' ) // Easy case for
conversion
- .replace( /
]*\>/gi, '\n' ) //
conversion
- .replace( /<\/p\>(\n*)
]*\>/gi, '$1\n' )
+ .replace( /\r?\n/g, "" ) // IE7 inserts newlines before block elements
+ .replace( / /g, " " ) // We inserted these to prevent IE from collapsing spaces
+ .replace( /\
]*\>\<\/p\>/gi, '
+ .replace( /\<\/p\>\s*\
]*\>/gi, "\n" ) // Easy case for
conversion
+ .replace( /\
]*\>/gi, "\n" ) //
conversion
+ .replace( /\<\/p\>(\n*)\
]*\>/gi, "$1\n" ) // Un-nest
tags - .replace( /
]*\>
]*\>/gi, '
' ) - .replace( /<\/p\><\/p\>/gi, '
' ); + .replace( /\]*\>
]*\>/gi, '
' ) + .replace( /\<\/p\><\/p\>/gi, '
' ); // Save leading and trailing whitespace now and restore it later. IE eats it all, and even Firefox // won't leave everything alone var leading = html.match( /^\s*/ )[0]; @@ -317,8 +311,8 @@ context.fn = $.extend( context.fn, { var $pre = $( '' + html + '' ); $pre.find( '.wikiEditor-noinclude' ).each( function() { $( this ).remove(); } ); // Convert tabs,
s and
s back
- $pre.find( '.wikiEditor-tab' ).each( function() { $( this ).text( '\t' ); } );
- $pre.find( 'br' ).each( function() { $( this ).replaceWith( '\n' ); } );
+ $pre.find( '.wikiEditor-tab' ).each( function() { $( this ).text( "\t" ); } );
+ $pre.find( 'br' ).each( function() { $( this ).replaceWith( "\n" ); } );
// Converting
s is wrong if there's nothing before them, so check that. // .find( '* + p' ) isn't good enough because textnodes aren't considered $pre.find( 'p' ).each( function() { @@ -329,21 +323,21 @@ context.fn = $.extend( context.fn, { // Check for preceding text var t = new context.fn.rawTraverser( this.firstChild, this, $pre.get( 0 ), true ).prev(); - while ( t && t.node.nodeName !== '#text' && t.node.nodeName !== 'BR' && t.node.nodeName !== 'P' ) { + while ( t && t.node.nodeName != '#text' && t.node.nodeName != 'BR' && t.node.nodeName != 'P' ) { t = t.prev(); } if ( t ) { - text = '\n' + text; + text = "\n" + text; } // Check for following text t = new context.fn.rawTraverser( this.lastChild, this, $pre.get( 0 ), true ).next(); - while ( t && t.node.nodeName !== '#text' && t.node.nodeName !== 'BR' && t.node.nodeName !== 'P' ) { + while ( t && t.node.nodeName != '#text' && t.node.nodeName != 'BR' && t.node.nodeName != 'P' ) { t = t.next(); } - if ( t && !t.inP && t.node.nodeName === '#text' && t.node.nodeValue.charAt( 0 ) !== '\n' && - t.node.nodeValue.charAt( 0 ) !== '\r' ) { - text += '\n'; + if ( t && !t.inP && t.node.nodeName == '#text' && t.node.nodeValue.charAt( 0 ) != '\n' + && t.node.nodeValue.charAt( 0 ) != '\r' ) { + text += "\n"; } $( this ).text( text ); } ); @@ -363,8 +357,8 @@ context.fn = $.extend( context.fn, { * @param strict If true, the element the selection starts in cannot match (default: false) * @return jQuery object or null if unknown */ - beforeSelection: function ( classname, strict ) { - if ( typeof classname === 'undefined' ) { + 'beforeSelection': function( classname, strict ) { + if ( typeof classname == 'undefined' ) { classname = ''; } var e = null, offset = null; @@ -387,7 +381,7 @@ context.fn = $.extend( context.fn, { // When the cursor is on an empty line, Opera gives us a bogus range object with // startContainer=endContainer=body and startOffset=endOffset=1 var body = context.$iframe[0].contentWindow.document.body; - if ( $.browser.opera && e === body && offset === 1 ) { + if ( $.browser.opera && e == body && offset == 1 ) { return null; } } @@ -406,14 +400,14 @@ context.fn = $.extend( context.fn, { return null; } var seekPos = context.fn.htmlToText( range2.htmlText ).length; - offset = context.fn.getOffset( seekPos ); + var offset = context.fn.getOffset( seekPos ); e = offset ? offset.node : null; offset = offset ? offset.offset : null; if ( !e ) { return null; } } - if ( e.nodeName !== '#text' ) { + if ( e.nodeName != '#text' ) { // The selection is not in a textnode, but between two non-text nodes // (usually inside the
between twoin IE // This seems to convince IE while not affecting display if ( !context.$content ) { @@ -886,7 +880,7 @@ context.fn = $.extend( context.fn, { * Gets the currently selected text in the content * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead */ - getSelection: function () { + 'getSelection': function() { var retval; if ( context.$iframe[0].contentWindow.getSelection ) { // Firefox and Opera @@ -921,7 +915,7 @@ context.fn = $.extend( context.fn, { * selection is empty. * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead */ - encapsulateSelection: function ( options ) { + 'encapsulateSelection': function( options ) { var selText = $(this).textSelection( 'getSelection' ); var selTextArr; var collapseToEnd = false; @@ -1133,7 +1127,7 @@ context.fn = $.extend( context.fn, { * Gets the position (in resolution of bytes not nessecarily characters) in a textarea * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead */ - getCaretPosition: function ( options ) { + 'getCaretPosition': function( options ) { var startPos = null, endPos = null; if ( context.$iframe[0].contentWindow.getSelection ) { var selection = context.$iframe[0].contentWindow.getSelection(); @@ -1270,7 +1264,7 @@ context.fn = $.extend( context.fn, { * @param startContainer Element in iframe to start selection in. If not set, start is a character offset * @param endContainer Element in iframe to end selection in. If not set, end is a character offset */ - setSelection: function ( options ) { + 'setSelection': function( options ) { var sc = options.startContainer, ec = options.endContainer; sc = sc && sc.jquery ? sc[0] : sc; ec = ec && ec.jquery ? ec[0] : ec; @@ -1357,7 +1351,7 @@ context.fn = $.extend( context.fn, { * Scroll a textarea to the current cursor position. You can set the cursor position with setSelection() * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead */ - scrollToCaretPosition: function ( options ) { + 'scrollToCaretPosition': function( options ) { context.fn.scrollToTop( context.fn.getElementAtCursor(), true ); }, /** @@ -1367,7 +1361,7 @@ context.fn = $.extend( context.fn, { * @param $element jQuery object containing an element in the iframe * @param force If true, scroll the element even if it's already visible */ - scrollToTop: function ( $element, force ) { + 'scrollToTop': function( $element, force ) { var html = context.$content.closest( 'html' ), body = context.$content.closest( 'body' ), parentHtml = $( 'html' ), diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.js b/extensions/WikiEditor/modules/jquery.wikiEditor.js index 460203ff..def8b69e 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.js @@ -8,8 +8,7 @@ * $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'toolbar', { ... config ... } ); * */ -/*jshint onevar:false, boss:true */ -( function ( $, mw ) { +( function ( $ ) { /** * Global static object for wikiEditor that provides generally useful functionality to all modules and contexts. @@ -114,7 +113,7 @@ $.wikiEditor = { isRequired: function ( module, requirement ) { if ( typeof module.req !== 'undefined' ) { for ( var req in module.req ) { - if ( module.req[req] === requirement ) { + if ( module.req[req] == requirement ) { return true; } } @@ -133,10 +132,9 @@ $.wikiEditor = { * with the key 'bar'. */ autoMsg: function ( object, property ) { - var i, p; // Accept array of possible properties, of which the first one found will be used - if ( typeof property === 'object' ) { - for ( i in property ) { + if ( typeof property == 'object' ) { + for ( var i in property ) { if ( property[i] in object || property[i] + 'Msg' in object ) { property = property[i]; break; @@ -146,11 +144,11 @@ $.wikiEditor = { if ( property in object ) { return object[property]; } else if ( property + 'Msg' in object ) { - p = object[property + 'Msg']; + var p = object[property + 'Msg']; if ( $.isArray( p ) && p.length >= 2 ) { - return mw.message.apply( mw.message, p ).plain(); + return mediaWiki.message.apply( mediaWiki.message, p ).plain(); } else { - return mw.message( p ).plain(); + return mediaWiki.message( p ).plain(); } } else { return ''; @@ -183,7 +181,7 @@ $.wikiEditor = { var src = $.wikiEditor.autoLang( icon, lang ); path = path || $.wikiEditor.imgPath; // Prepend path if src is not absolute - if ( src.substr( 0, 7 ) !== 'http://' && src.substr( 0, 8 ) !== 'https://' && src[0] !== '/' ) { + if ( src.substr( 0, 7 ) != 'http://' && src.substr( 0, 8 ) != 'https://' && src[0] != '/' ) { src = path + src; } return src + '?' + mw.loader.version( 'jquery.wikiEditor' ); @@ -199,9 +197,9 @@ $.wikiEditor = { */ autoIconOrOffset: function ( icon, offset, path, lang ) { lang = lang || mw.config.get( 'wgUserLanguage' ); - if ( typeof offset === 'object' && lang in offset ) { + if ( typeof offset == 'object' && lang in offset ) { return offset[lang]; - } else if ( typeof icon === 'object' && lang in icon ) { + } else if ( typeof icon == 'object' && lang in icon ) { return $.wikiEditor.autoIcon( icon, undefined, lang ); } else { return $.wikiEditor.autoLang( offset, lang ); @@ -225,7 +223,7 @@ if ( !$.wikiEditor.isSupported() ) { // where we left off var context = $(this).data( 'wikiEditor-context' ); // On first call, we need to set things up, but on all following calls we can skip right to the API handling -if ( !context || typeof context === 'undefined' ) { +if ( !context || typeof context == 'undefined' ) { // Star filling the context with useful data - any jQuery selections, as usual should be named with a preceding $ context = { @@ -278,14 +276,14 @@ if ( !context || typeof context === 'undefined' ) { 'addModule': function ( context, data ) { var module, call, modules = {}; - if ( typeof data === 'string' ) { + if ( typeof data == 'string' ) { modules[data] = {}; - } else if ( typeof data === 'object' ) { + } else if ( typeof data == 'object' ) { modules = data; } for ( module in modules ) { // Check for the existance of an available / supported module with a matching name and a create function - if ( typeof module === 'string' && typeof $.wikiEditor.modules[module] !== 'undefined' && + if ( typeof module == 'string' && typeof $.wikiEditor.modules[module] !== 'undefined' && $.wikiEditor.isSupported( $.wikiEditor.modules[module] ) ) { // Extend the context's core API with this module's own API calls @@ -328,11 +326,11 @@ if ( !context || typeof context === 'undefined' ) { */ trigger: function ( name, event ) { // Event is an optional argument, but from here on out, at least the type field should be dependable - if ( typeof event === 'undefined' ) { + if ( typeof event == 'undefined' ) { event = { 'type': 'custom' }; } // Ensure there's a place for extra information to live - if ( typeof event.data === 'undefined' ) { + if ( typeof event.data == 'undefined' ) { event.data = {}; } @@ -395,7 +393,7 @@ if ( !context || typeof context === 'undefined' ) { // Return the newly appended tab return $( '
./configure --with-mysql
.
-If you installed PHP from a Debian or Ubuntu package, then you also need install the php5-mysql module.',
+If you compiled PHP yourself, reconfigure it with a database client enabled, for example, using ./configure --with-mysqli
.
+If you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the php5-mysql
package.',
'config-outdated-sqlite' => "'''Warning:''' you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
'config-no-fts3' => "'''Warning:''' SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
'config-register-globals' => "'''Warning: PHP's [http://php.net/register_globals register_globals]
option is enabled.'''
@@ -243,7 +242,7 @@ That includes raw user data (email addresses, hashed passwords) as well as delet
Consider putting the database somewhere else altogether, for example in /var/lib/mediawiki/yourwiki
.",
'config-oracle-def-ts' => 'Default tablespace:',
'config-oracle-temp-ts' => 'Temporary tablespace:',
- 'config-type-mysql' => 'MySQL',
+ 'config-type-mysql' => 'MySQL (or compatible)',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
@@ -252,10 +251,10 @@ Consider putting the database somewhere else altogether, for example in /v
$1
If you do not see the database system you are trying to use listed below, then follow the instructions linked above to enable support.',
- 'config-support-mysql' => '* $1 is the primary target for MediaWiki and is best supported ([http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])',
- 'config-support-postgres' => '* $1 is a popular open source database system as an alternative to MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). There may be some minor outstanding bugs, and it is not recommended for use in a production environment.',
- 'config-support-sqlite' => '* $1 is a lightweight database system which is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
- 'config-support-oracle' => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+ 'config-dbsupport-mysql' => '* [{{int:version-db-mysql-url}} MySQL] is the primary target for MediaWiki and is best supported. MediaWiki also works with [{{int:version-db-mariadb-url}} MariaDB] and [{{int:version-db-percona-url}} Percona Server], which are MySQL compatible. ([http://www.php.net/manual/en/mysqli.installation.php How to compile PHP with MySQL support])',
+ 'config-dbsupport-postgres' => '* [{{int:version-db-postgres-url}} PostgreSQL] is a popular open source database system as an alternative to MySQL. There may be some minor outstanding bugs, and it is not recommended for use in a production environment. ([http://www.php.net/manual/en/pgsql.installation.php How to compile PHP with PostgreSQL support])',
+ 'config-dbsupport-sqlite' => '* [{{int:version-db-sqlite-url}} SQLite] is a lightweight database system that is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
+ 'config-dbsupport-oracle' => '* [{{int:version-db-oracle-url}} Oracle] is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
'config-header-mysql' => 'MySQL settings',
'config-header-postgres' => 'PostgreSQL settings',
'config-header-sqlite' => 'SQLite settings',
@@ -640,7 +639,7 @@ See also:
* {{msg-mw|config-env-php}}',
'config-unicode-pure-php-warning' => 'PECL is the name of a group producing standard pieces of software for PHP, and intl is the name of their library handling some aspects of internationalization.',
'config-unicode-update-warning' => "ICU is a body producing standard software tools for support of Unicode and other internationalization aspects. This message warns the system administrator installing MediaWiki that the server's software is not up-to-date and MediaWiki will have problems handling some characters.",
- 'config-no-db' => '{{doc-important|Do not translate "./configure --with-mysql
" and "php5-mysql
".}}
+ 'config-no-db' => '{{doc-important|Do not translate "./configure --with-mysqli
" and "php5-mysql
".}}
Parameters:
* $1 is comma separated list of database types supported by MediaWiki.',
'config-outdated-sqlite' => 'Used as warning. Parameters:
@@ -704,12 +703,12 @@ Message shown when PHP parameter suhosin.get.max_value_length
is be
* $2 - error message',
'config-sqlite-dir-help' => '{{doc-important|Do not translate .htaccess
and /var/lib/mediawiki/yourwiki
.}}
Used in help box.',
- 'config-type-mysql' => '{{optional}}',
+ 'config-type-mysql' => '"Or compatible" refers to several database systems that are compatible with MySQL, as explained in {{msg-mw|config-dbsupport-mysql}}, and thus also work with this choice of database type.',
'config-type-postgres' => '{{optional}}',
'config-type-sqlite' => '{{optional}}',
'config-type-oracle' => '{{optional}}',
'config-support-info' => 'Parameters:
-* $1 - a list of DBMSs that MediaWiki supports, composed with other config-type-* and config-support-* messages.',
+* $1 - a list of DBMSs that MediaWiki supports, composed with config-dbsupport-* messages.',
'config-support-mysql' => 'Parameters:
* $1 - a link to the MySQL home page having the anchor text "MySQL".',
'config-support-postgres' => 'Parameters:
@@ -718,6 +717,10 @@ Used in help box.',
* $1 - a link to the SQLite home page having the anchor text "SQLite".',
'config-support-oracle' => 'Parameters:
* $1 - a link to the Oracle home page, the anchor text of which is "Oracle".',
+ 'config-dbsupport-mysql' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-postgres' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-sqlite' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-oracle' => 'Used in {{msg-mw|config-support-info}}.',
'config-invalid-db-server-oracle' => 'Used as error message. Parameters:
* $1 - database server name
See also:
diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php
index 36c41910..62bb2ec4 100644
--- a/includes/installer/Installer.php
+++ b/includes/installer/Installer.php
@@ -1411,7 +1411,7 @@ abstract class Installer {
$wgVersion = "1.22";
$wgResourceModules = array();
- require_once( $file );
+ require_once $file ;
$e = array_values( $wgExtensionCredits );
if( $e ) {
$ext = array_values( $e[0] );
diff --git a/includes/installer/LocalSettingsGenerator.php b/includes/installer/LocalSettingsGenerator.php
index 5c803d3e..53939826 100644
--- a/includes/installer/LocalSettingsGenerator.php
+++ b/includes/installer/LocalSettingsGenerator.php
@@ -145,7 +145,12 @@ class LocalSettingsGenerator {
$ip = $this->installer->getVar( 'IP' );
foreach ( $this->extensions as $ext) {
- $path = str_replace( $ip, '$IP', $extensions[$ext]['path'] );
+ $path = str_replace( $ip, '', $extensions[$ext]['path'] );
+ $prefix = '';
+ if ( $path !== $extensions[$ext]['path'] ) {
+ $prefix = '$IP';
+ }
+ $path = $prefix . self::escapePhpString( $path );
$localSettings .= "require_once \"$path\";\n";
}
}
diff --git a/includes/installer/OracleInstaller.php b/includes/installer/OracleInstaller.php
index 77575100..8ce74f42 100644
--- a/includes/installer/OracleInstaller.php
+++ b/includes/installer/OracleInstaller.php
@@ -91,12 +91,12 @@ class OracleInstaller extends DatabaseInstaller {
public function submitConnectForm() {
// Get variables from the request
- $newValues = $this->setVarsFromRequest(
+ $newValues = $this->setVarsFromRequest( array(
'wgDBserver',
'wgDBprefix',
'wgDBuser',
'wgDBpassword'
- );
+ ) );
$this->parent->setVar( 'wgDBname', $this->getVar( 'wgDBuser' ) );
// Validate them
diff --git a/includes/installer/WebInstaller.php b/includes/installer/WebInstaller.php
index 95765259..1f8ee00a 100644
--- a/includes/installer/WebInstaller.php
+++ b/includes/installer/WebInstaller.php
@@ -917,7 +917,7 @@ class WebInstaller extends Installer {
}
if ( isset( $params['rawtext'] ) ) {
$labelText = $params['rawtext'];
- } else if ( isset( $params['label'] ) ) {
+ } elseif ( isset( $params['label'] ) ) {
$labelText = $this->parse( wfMessage( $params['label'] )->text() );
} else {
$labelText = "";
diff --git a/includes/installer/WebInstallerPage.php b/includes/installer/WebInstallerPage.php
index 7e8a3631..ad399133 100644
--- a/includes/installer/WebInstallerPage.php
+++ b/includes/installer/WebInstallerPage.php
@@ -480,12 +480,11 @@ class WebInstaller_DBConnect extends WebInstallerPage {
$settings = '';
$defaultType = $this->getVar( 'wgDBtype' );
- // Messages: config-support-mysql, config-support-postgres, config-support-oracle,
- // config-support-sqlite
+ // Messages: config-dbsupport-mysql, config-dbsupport-postgres, config-dbsupport-oracle,
+ // config-dbsupport-sqlite
$dbSupport = '';
foreach ( $this->parent->getDBTypes() as $type ) {
- $link = DatabaseBase::factory( $type )->getSoftwareLink();
- $dbSupport .= wfMessage( "config-support-$type", $link )->plain() . "\n";
+ $dbSupport .= wfMessage( "config-dbsupport-$type" )->plain() . "\n";
}
$this->addHTML( $this->parent->getInfoBox(
wfMessage( 'config-support-info', trim( $dbSupport ) )->text() ) );
@@ -951,7 +950,7 @@ class WebInstaller_Options extends WebInstallerPage {
/* Force a recache, so we load extensions descriptions */
global $wgLang;
$lc = Language::getLocalisationCache();
- $lc->initialisedLangs = array();
+ $lc->setInitialisedLanguages( array() );
$lc->getItem( $wgLang->mCode, '' );
LinkCache::singleton()->useDatabase( false );
@@ -1184,10 +1183,14 @@ class WebInstaller_Options extends WebInstallerPage {
$this->setVar( 'wgRightsIcon', '' );
}
- $extsAvailable = array_map( function($e) { if( isset($e['name']) ) return $e['name']; }, $this->parent->findExtensions() );
+ $extsAvailable = array_map(
+ function( $e ) {
+ if( isset( $e['name'] ) ) {
+ return $e['name'];
+ }
+ }, $this->parent->findExtensions() );
$extsToInstall = array();
foreach ( $extsAvailable as $key => $ext ) {
- var_dump("config_ext-$ext");
if ( $this->parent->request->getCheck( 'config_ext-' . $ext ) ) {
$extsToInstall[] = $extsAvailable[ $key ];
}
diff --git a/includes/parser/LinkHolderArray.php b/includes/parser/LinkHolderArray.php
index 27ff9e7d..f1a0b258 100644
--- a/includes/parser/LinkHolderArray.php
+++ b/includes/parser/LinkHolderArray.php
@@ -281,7 +281,7 @@ class LinkHolderArray {
$linkCache = LinkCache::singleton();
$output = $this->parent->getOutput();
- if( $linkCache->useDatabase() ) {
+ if ( $linkCache->useDatabase() ) {
wfProfileIn( __METHOD__ . '-check' );
$dbr = wfGetDB( DB_SLAVE );
$threshold = $this->parent->getOptions()->getStubThreshold();
diff --git a/includes/specials/SpecialUploadStash.php b/includes/specials/SpecialUploadStash.php
index 87b64428..1373df1a 100644
--- a/includes/specials/SpecialUploadStash.php
+++ b/includes/specials/SpecialUploadStash.php
@@ -308,6 +308,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
header( "Content-Type: $contentType", true );
header( 'Content-Transfer-Encoding: binary', true );
header( 'Expires: Sun, 17-Jan-2038 19:14:07 GMT', true );
+ // Bug 53032 - It shouldn't be a problem here, but let's be safe and not cache
+ header( 'Cache-Control: private' );
header( "Content-Length: $size", true );
}
diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php
index 4afa279e..55dc6efd 100644
--- a/includes/specials/SpecialWatchlist.php
+++ b/includes/specials/SpecialWatchlist.php
@@ -299,6 +299,22 @@ class SpecialWatchlist extends SpecialPage {
}
}
+ // Log entries with DELETED_ACTION must not show up unless the user has
+ // the necessary rights.
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = LogPage::DELETED_ACTION;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $conds[] = $dbr->makeList( array(
+ 'rc_type != ' . RC_LOG,
+ $dbr->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+ ), LIST_OR );
+ }
+
ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
wfRunHooks( 'SpecialWatchlistQuery', array( &$conds, &$tables, &$join_conds, &$fields, $values ) );
diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php
index 2260241d..916ad6c1 100644
--- a/includes/upload/UploadBase.php
+++ b/includes/upload/UploadBase.php
@@ -250,7 +250,7 @@ abstract class UploadBase {
/**
* @param string $srcPath the source path
- * @return string the real path if it was a virtual URL
+ * @return string|bool the real path if it was a virtual URL Returns false on failure
*/
function getRealPath( $srcPath ) {
wfProfileIn( __METHOD__ );
@@ -259,12 +259,15 @@ abstract class UploadBase {
// @todo just make uploads work with storage paths
// UploadFromStash loads files via virtual URLs
$tmpFile = $repo->getLocalCopy( $srcPath );
- $tmpFile->bind( $this ); // keep alive with $this
- wfProfileOut( __METHOD__ );
- return $tmpFile->getPath();
+ if ( $tmpFile ) {
+ $tmpFile->bind( $this ); // keep alive with $this
+ }
+ $path = $tmpFile ? $tmpFile->getPath() : false;
+ } else {
+ $path = $srcPath;
}
wfProfileOut( __METHOD__ );
- return $srcPath;
+ return $path;
}
/**
@@ -475,9 +478,10 @@ abstract class UploadBase {
return array( 'uploadscripted' );
}
if ( $this->mFinalExtension == 'svg' || $mime == 'image/svg+xml' ) {
- if ( $this->detectScriptInSvg( $this->mTempPath ) ) {
+ $svgStatus = $this->detectScriptInSvg( $this->mTempPath );
+ if ( $svgStatus !== false ) {
wfProfileOut( __METHOD__ );
- return array( 'uploadscripted' );
+ return $svgStatus;
}
}
}
@@ -1158,8 +1162,33 @@ abstract class UploadBase {
* @return bool
*/
protected function detectScriptInSvg( $filename ) {
- $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ) );
- return $check->filterMatch;
+ $check = new XmlTypeCheck(
+ $filename,
+ array( $this, 'checkSvgScriptCallback' ),
+ true,
+ array( 'processing_instruction_handler' => 'UploadBase::checkSvgPICallback' )
+ );
+ if ( $check->wellFormed !== true ) {
+ // Invalid xml (bug 58553)
+ return array( 'uploadinvalidxml' );
+ } elseif ( $check->filterMatch ) {
+ return array( 'uploadscripted' );
+ }
+ return false;
+ }
+
+ /**
+ * Callback to filter SVG Processing Instructions.
+ * @param $target string processing instruction name
+ * @param $data string processing instruction attribute and value
+ * @return bool (true if the filter identified something bad)
+ */
+ public static function checkSvgPICallback( $target, $data ) {
+ // Don't allow external stylesheets (bug 57550)
+ if ( preg_match( '/xml-stylesheet/i', $target) ) {
+ return true;
+ }
+ return false;
}
/**
diff --git a/languages/Language.php b/languages/Language.php
index c24dc180..11d91036 100644
--- a/languages/Language.php
+++ b/languages/Language.php
@@ -3633,17 +3633,10 @@ class Language {
*/
function convertPlural( $count, $forms ) {
// Handle explicit n=pluralform cases
- foreach ( $forms as $index => $form ) {
- if ( preg_match( '/^\d+=/i', $form ) ) {
- $pos = strpos( $form, '=' );
- if ( substr( $form, 0, $pos ) === (string)$count ) {
- return substr( $form, $pos + 1 );
- }
- unset( $forms[$index] );
- }
+ $forms = $this->handleExplicitPluralForms( $count, $forms );
+ if ( is_string( $forms ) ) {
+ return $forms;
}
-
- $forms = array_values( $forms );
if ( !count( $forms ) ) {
return '';
}
@@ -3653,6 +3646,34 @@ class Language {
return $forms[$pluralForm];
}
+ /**
+ * Handles explicit plural forms for Language::convertPlural()
+ *
+ * In {{PLURAL:$1|0=nothing|one|many}}, 0=nothing will be returned if $1 equals zero.
+ * If an explicitly defined plural form matches the $count, then
+ * string value returned, otherwise array returned for further consideration
+ * by CLDR rules or overridden convertPlural().
+ *
+ * @since 1.22.1
+ *
+ * @param int $count non-localized number
+ * @param array $forms different plural forms
+ *
+ * @return array|string
+ */
+ protected function handleExplicitPluralForms( $count, array $forms ) {
+ foreach ( $forms as $index => $form ) {
+ if ( preg_match( '/\d+=/i', $form ) ) {
+ $pos = strpos( $form, '=' );
+ if ( substr( $form, 0, $pos ) === (string) $count ) {
+ return substr( $form, $pos + 1 );
+ }
+ unset( $forms[$index] );
+ }
+ }
+ return array_values( $forms );
+ }
+
/**
* Checks that convertPlural was given an array and pads it to requested
* amount of forms by copying the last one.
diff --git a/languages/classes/LanguageBe_tarask.php b/languages/classes/LanguageBe_tarask.php
index 6497b50c..05b9550f 100644
--- a/languages/classes/LanguageBe_tarask.php
+++ b/languages/classes/LanguageBe_tarask.php
@@ -31,50 +31,6 @@
* @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
*/
class LanguageBe_tarask extends Language {
- /**
- * Plural form transformations
- *
- * $wordform1 - singular form (for 1, 21, 31, 41...)
- * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- */
-
- /**
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms instead of 3
- // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-
/**
* The Belarusian language uses apostrophe sign,
* but the characters used for this could be both U+0027 and U+2019.
diff --git a/languages/classes/LanguageGv.php b/languages/classes/LanguageGv.php
deleted file mode 100644
index ba8a53ce..00000000
--- a/languages/classes/LanguageGv.php
+++ /dev/null
@@ -1,55 +0,0 @@
-preConvertPlural( $forms, 4 );
-
- if ( $count > 0 && ( $count % 20 ) === 0 ) {
- return $forms[0];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[1];
- case 2: return $forms[2];
- default: return $forms[3];
- }
- }
- }
-
-}
diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php
deleted file mode 100644
index 910bc100..00000000
--- a/languages/classes/LanguageHr.php
+++ /dev/null
@@ -1,56 +0,0 @@
-preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
diff --git a/languages/classes/LanguageKsh.php b/languages/classes/LanguageKsh.php
index 09c57279..d25ce714 100644
--- a/languages/classes/LanguageKsh.php
+++ b/languages/classes/LanguageKsh.php
@@ -189,6 +189,10 @@ class LanguageKsh extends Language {
* @return string
*/
function convertPlural( $count, $forms ) {
+ $forms = $this->handleExplicitPluralForms( $count, $forms );
+ if ( is_string( $forms ) ) {
+ return $forms;
+ }
if ( !count( $forms ) ) {
return '';
}
diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php
index 11b42cf9..d3ac1d22 100644
--- a/languages/classes/LanguageRu.php
+++ b/languages/classes/LanguageRu.php
@@ -44,8 +44,9 @@ class LanguageRu extends Language {
return $wgGrammarForms['ru'][$case][$word];
}
- # These rules are not perfect, but they are currently only used for Wikimedia site names so it doesn't
- # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+ # These rules are not perfect, but they are currently only used for Wikimedia
+ # site names so it doesn't matter if they are wrong sometimes.
+ # Just add a special case for your site name if necessary.
# substr doesn't support Unicode and mb_substr has issues,
# so break it to characters using preg_match_all and then use array_slice and join
@@ -102,58 +103,6 @@ class LanguageRu extends Language {
return $word;
}
- /**
- * Plural form transformations
- *
- * $forms[0] - singular form (for 1, 21, 31, 41...)
- * $forms[1] - paucal form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $forms[2] - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- *
- * Examples:
- * message with number
- * "Сделано $1 {{PLURAL:$1|изменение|изменения|изменений}}"
- * ("$1 change[s] were made)
- * message without number
- * "Действие не может быть выполнено по {{PLURAL:$1|следующей причине|следующим причинам}}:"
- * ("The action cannot be performed for the following reason[s]")
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count === 1
- // plural for $count !== 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count === 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) {
- return $forms[2];
- }
-
- switch ( $count % 10 ) {
- case 1:
- return $forms[0];
- case 2:
- case 3:
- case 4:
- return $forms[1];
- default:
- return $forms[2];
- }
- }
-
/**
* Four-digit number should be without group commas (spaces)
* See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей
diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php
index 6f0ff4b5..76cd8229 100644
--- a/languages/classes/LanguageSr.php
+++ b/languages/classes/LanguageSr.php
@@ -22,8 +22,6 @@
*/
require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageSr_ec.php';
-require_once __DIR__ . '/LanguageSr_el.php';
/**
* There are two levels of conversion for Serbian: the script level
@@ -166,14 +164,16 @@ class SrConverter extends LanguageConverter {
// regexp for roman numbers
$roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
- $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/';
+ $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
+ . $roman . '$|' . $breaks . $roman . $breaks . '/';
$matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE );
$m = array_shift( $matches );
$this->loadTables();
if ( !isset( $this->mTables[$toVariant] ) ) {
- throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
+ throw new MWException( "Broken variant table: "
+ . implode( ',', array_keys( $this->mTables ) ) );
}
$ret = $this->mTables[$toVariant]->replace( $m[0] );
$mstart = $m[1] + strlen( $m[0] );
@@ -218,7 +218,7 @@ class SrConverter extends LanguageConverter {
*
* @ingroup Language
*/
-class LanguageSr extends LanguageSr_ec {
+class LanguageSr extends Language {
function __construct() {
global $wgHooks;
@@ -238,40 +238,4 @@ class LanguageSr extends LanguageSr_ec {
$this->mConverter = new SrConverter( $this, 'sr', $variants, $variantfallbacks, $flags );
$wgHooks['PageContentSaveComplete'][] = $this->mConverter;
}
-
- /**
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
}
diff --git a/languages/classes/LanguageSr_ec.php b/languages/classes/LanguageSr_ec.php
deleted file mode 100644
index cb9e8191..00000000
--- a/languages/classes/LanguageSr_ec.php
+++ /dev/null
@@ -1,54 +0,0 @@
-preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
diff --git a/languages/classes/LanguageSr_el.php b/languages/classes/LanguageSr_el.php
deleted file mode 100644
index 99d12935..00000000
--- a/languages/classes/LanguageSr_el.php
+++ /dev/null
@@ -1,54 +0,0 @@
-preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php
index 4ad272ba..08041a92 100644
--- a/languages/classes/LanguageUk.php
+++ b/languages/classes/LanguageUk.php
@@ -86,41 +86,6 @@ class LanguageUk extends Language {
return $word;
}
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-
/**
* Ukrainian numeric format is "12 345,67" but "1234,56"
*
diff --git a/languages/data/plurals-mediawiki.xml b/languages/data/plurals-mediawiki.xml
index 70d45a3c..aafc393b 100644
--- a/languages/data/plurals-mediawiki.xml
+++ b/languages/data/plurals-mediawiki.xml
@@ -2,42 +2,44 @@
-
-
- n is 1
- n is 2
- n is not 0 AND n is not 10 AND n mod 10 is 0
-
+
- n mod 100 is 1
- n mod 100 is 2
- n mod 100 in 3..4
+ n % 100 = 1 @integer 1, 101, 201, 301, …
+ n % 100 = 2 @integer 2, 102, 202, 302, …
+ n % 100 = 3..4 @integer 3~4, 103~104, …
+ @integer 5, 6, 7, 8, 9, 10, 105, 206, 307, …
-
+
+
- n mod 10 is 1 and n mod 100 is not 11
- n mod 10 in 2..4 and n mod 100 not in 12..14
- n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14
-
+ n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …
+ n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …
+ n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …
+
- n mod 10 is 1
- n mod 10 is 2
- n mod 10 in 3..4
+ n % 10 = 1 @integer 1, 11, 21, 31, …
+ n % 10 = 2 @integer 2, 12, 22, 32, …
+ n % 10 = 3..4 @integer 3~4, 13~14, 23~24, …
+ @integer 5, 6, 7, 8, 9, 10, 15, 105, 206, 307, …
- n in 0..1
+ n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
- n mod 10 is 1 and n mod 100 is not 11
- n mod 10 is 2 and n mod 100 is not 12
- n is 0 or n mod 100 is 0 or n mod 100 in 10..19
+ n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, …
+ n % 10 = 2 and n % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 92, 102, 122, …
+ n = 0 or n % 100 = 0 or n % 100 = 10..19 @integer 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 111,112, …
+ @integer 3, 4, 5, 6, 7, 8, 9, 20, 103, 104, …
+
+
+ v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …
+ v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …
+ @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
diff --git a/languages/data/plurals.xml b/languages/data/plurals.xml
index d5a1cfe2..fd4eaf6b 100644
--- a/languages/data/plurals.xml
+++ b/languages/data/plurals.xml
@@ -1,119 +1,200 @@
+
-
-
-
+
+
+
+
-
- n is 0
- n is 1
- n is 2
- n mod 100 in 3..10
- n mod 100 in 11..99
-
-
- n is 1
- n is 2
- n is not 0 AND n mod 10 is 0
-
-
- n is 1
-
-
- n in 0..1
-
-
- n within 0..2 and n is not 2
+ n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000
+ n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …
+ n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …
+ @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 1 and v = 0 @integer 1
+ i = 2 and v = 0 @integer 2
+ v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …
+ @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 0,1 @integer 0, 1 @decimal 0.0~1.5
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
- n is 0
- n mod 10 is 1 and n mod 100 is not 11
+ n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ 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 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …
+ @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …
- n is 1
- n is 2
-
-
- n is 1
- n is 2
- n in 3..6
- n in 7..10
-
-
- n is 1
- n is 0 OR n is not 1 AND n mod 100 in 1..19
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000
+ @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000
+ n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000
+ n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000
+ @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 1 and v = 0 @integer 1
+ v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ @integer 20~35, 100, 1000, 10000, 100000, 1000000, …
- n mod 10 is 1 and n mod 100 not in 11..19
- n mod 10 in 2..9 and n mod 100 not in 11..19
+ n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …
+ n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …
+ f != 0 @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …
+ @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
-
- n mod 10 is 1 and n mod 100 is not 11
- n mod 10 in 2..4 and n mod 100 not in 12..14
- n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14
-
+
+ n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …
+ n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …
+ n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …
- n is 1
- n in 2..4
+ i = 1 and v = 0 @integer 1
+ i = 2..4 and v = 0 @integer 2~4
+ v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …
- n is 1
- n mod 10 in 2..4 and n mod 100 not in 12..14
- n is not 1 and n mod 10 in 0..1 or n mod 10 in 5..9 or n mod 100 in 12..14
-
-
+ i = 1 and v = 0 @integer 1
+ v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …
+ 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 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …
+ @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
- n mod 100 is 1
- n mod 100 is 2
- n mod 100 in 3..4
-
-
- n is 1
- n is 0 or n mod 100 in 2..10
- n mod 100 in 11..19
-
-
- n mod 10 is 1 and n is not 11
-
-
- n is 0
- n is 1
- n is 2
- n is 3
- n is 6
+ v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …
+ v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …
+ v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …
+
+
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …
+ n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …
+ @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …
+ @integer 0, 2~10, 12~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000
+ n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000
+ n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000
+ @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
- n is 0
- n within 0..2 and n is not 0 and n is not 2
+ n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000
+ i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
- n within 0..1
- n in 2..10
+ i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04
+ n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00
+ @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
-
- n mod 10 is 1 and n mod 100 not in 11,71,91
- n mod 10 is 2 and n mod 100 not in 12,72,92
- n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99
- n is not 0 and n mod 1000000 is 0
+
+ n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …
+ n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …
+ n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …
+ n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …
+ @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …
- n is 0
- n is 1
+ n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000
+ n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
- n in 0..1 or n in 11..99
+ n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0
+ @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
- n mod 10 in 1..2 or n mod 20 is 0
+ n % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 1.0, 11.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 101.0, 1001.0, …
+ n % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, … @decimal 2.0, 12.0, 22.0, 32.0, 42.0, 52.0, 62.0, 72.0, 102.0, 1002.0, …
+ n % 100 = 0,20,40,60 @integer 0, 20, 40, 60, 100, 120, 140, 160, 1000, 10000, 100000, 1000000, … @decimal 0.0, 20.0, 40.0, 60.0, 100.0, 120.0, 140.0, 160.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+ @integer 3~10, 13~19, 23, 103, 1003, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.1, 1000.1, …
- n in 1,11
- n in 2,12
- n in 3..10,13..19
+ n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000
+ n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000
+ n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00
+ @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 0..1 and v = 0 @integer 0, 1
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 1 and v = 0 @integer 1
+ @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000
+ @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6
+ @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 1 and v = 0 @integer 1
+ @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …
+ @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000
+ @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …
+ v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …
+ @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …
+ v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …
+ @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
+
+
+ v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …
+ v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …
+ v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …
+ @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php
index ffbc88ab..dca9779d 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
@@ -2352,6 +2352,7 @@ You should check that file's deletion history before proceeding to re-upload it.
'php-uploaddisabledtext' => 'File uploads are disabled in PHP.
Please check the file_uploads setting.',
'uploadscripted' => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
+'uploadinvalidxml' => 'The XML in the uploaded file could not be parsed.',
'uploadvirus' => 'The file contains a virus!
Details: $1',
'uploadjava' => 'The file is a ZIP file that contains a Java .class file.
@@ -4857,6 +4858,13 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
'version-software' => 'Installed software',
'version-software-product' => 'Product',
'version-software-version' => 'Version',
+'version-db-mysql-url' => 'http://www.mysql.com/', # do not translate or duplicate this message to other languages
+'version-db-mariadb-url' => 'http://mariadb.org/', # do not translate or duplicate this message to other languages
+'version-db-percona-url' => 'http://www.percona.com/software/percona-server', # do not translate or duplicate this message to other languages
+'version-db-postgres-url' => 'http://www.postgresql.org/', # do not translate or duplicate this message to other languages
+'version-db-oracle-url' => 'http://www.oracle.com/database/', # do not translate or duplicate this message to other languages
+'version-db-sqlite-url' => 'http://www.sqlite.org/', # do not translate or duplicate this message to other languages
+'version-db-mssql-url' => 'http://www.microsoft.com/sql/', # do not translate or duplicate this message to other languages
'version-entrypoints' => 'Entry point URLs',
'version-entrypoints-header-entrypoint' => 'Entry point',
'version-entrypoints-header-url' => 'URL',
diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php
index cdb8a914..e770db61 100644
--- a/languages/messages/MessagesQqq.php
+++ b/languages/messages/MessagesQqq.php
@@ -4064,6 +4064,7 @@ See also:
* {{msg-mw|zip-wrong-format}}
* {{msg-mw|uploadjava}}
* {{msg-mw|uploadvirus}}',
+'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
'uploadvirus' => 'Error message displayed when uploaded file contains a virus.
Parameters:
@@ -9922,6 +9923,20 @@ Used at the end of {{msg-mw|version-poweredby-credits}} on [[Special:Version]].'
This message is followed by the list of installed software (MediaWiki, PHP and MySQL).',
'version-software-product' => 'Shown in [[Special:Version]]',
'version-software-version' => '{{Identical|Version}}',
+'version-db-mysql-url' => '{{notranslate}}
+URL of the website for [[wikipedia:MySQL|MySQL]].',
+'version-db-mariadb-url' => '{{notranslate}}
+URL of the website for [[wikipedia:MariaDB|MariaDB]].',
+'version-db-percona-url' => '{{notranslate}}
+URL of the website for Percona Server.',
+'version-db-postgres-url' => '{{notranslate}}
+URL of the website for [[wikipedia:PostgreSQL|PostgreSQL]].',
+'version-db-oracle-url' => '{{notranslate}}
+URL of the website for [[wikipedia:Oracle Database|Oracle Database]].',
+'version-db-sqlite-url' => '{{notranslate}}
+URL of the website for [[wikipedia:SQLite|SQLite]].',
+'version-db-mssql-url' => '{{notranslate}}
+URL of the website for [[wikipedia:Microsoft SQL Server|Microsoft SQL Server]].',
'version-entrypoints' => 'Header on [[Special:Version]] above a table that lists the URLs of various entry points in this MediaWiki installation. Entry points are the "places" where the wiki\'s content and information can be accessed in various ways, for instance the standard index.php which shows normal pages, histories etc.',
'version-entrypoints-header-entrypoint' => 'Header for the first column in the entry points table on [[Special:Version]].
See also {{msg-mw|Version-entrypoints}}',
diff --git a/languages/utils/CLDRPluralRuleEvaluator.php b/languages/utils/CLDRPluralRuleEvaluator.php
index d3a863b4..afe88a5b 100644
--- a/languages/utils/CLDRPluralRuleEvaluator.php
+++ b/languages/utils/CLDRPluralRuleEvaluator.php
@@ -2,7 +2,8 @@
/**
* Parse and evaluate a plural rule.
*
- * http://unicode.org/reports/tr35/#Language_Plural_Rules
+ * UTS #35 Revision 33
+ * http://www.unicode.org/reports/tr35/tr35-33/tr35-numbers.html#Language_Plural_Rules
*
* @author Niklas Laxstrom, Tim Starling
*
@@ -63,8 +64,42 @@ class CLDRPluralRuleEvaluator {
/**
* Evaluate a compiled set of rules returned by compile(). Do not allow
* the user to edit the compiled form, or else PHP errors may result.
+ *
+ * @param string The number to be evaluated against the rules, in English, or it
+ * may be a type convertible to string.
+ * @param array The associative array of plural rules in pluralform => rule format.
+ * @return int The index of the plural form which passed the evaluation
*/
public static function evaluateCompiled( $number, array $rules ) {
+ // Calculate the values of the operand symbols
+ $number = strval( $number );
+ if ( !preg_match( '/^ -? ( ([0-9]+) (?: \. ([0-9]+) )? )$/x', $number, $m ) ) {
+ wfDebug( __METHOD__.': invalid number input, returning "other"' );
+ return count( $rules );
+ }
+ if ( !isset( $m[3] ) ) {
+ $operandSymbols = array(
+ 'n' => intval( $m[1] ),
+ 'i' => intval( $m[1] ),
+ 'v' => 0,
+ 'w' => 0,
+ 'f' => 0,
+ 't' => 0
+ );
+ } else {
+ $absValStr = $m[1];
+ $intStr = $m[2];
+ $fracStr = $m[3];
+ $operandSymbols = array(
+ 'n' => floatval( $absValStr ),
+ 'i' => intval( $intStr ),
+ 'v' => strlen( $fracStr ),
+ 'w' => strlen( rtrim( $fracStr, '0' ) ),
+ 'f' => intval( $fracStr ),
+ 't' => intval( rtrim( $fracStr, '0' ) ),
+ );
+ }
+
// The compiled form is RPN, with tokens strictly delimited by
// spaces, so this is a simple RPN evaluator.
foreach ( $rules as $i => $rule ) {
@@ -73,8 +108,8 @@ class CLDRPluralRuleEvaluator {
$nine = ord( '9' );
foreach ( StringUtils::explode( ' ', $rule ) as $token ) {
$ord = ord( $token );
- if ( $token === 'n' ) {
- $stack[] = $number;
+ if ( isset( $operandSymbols[$token] ) ) {
+ $stack[] = $operandSymbols[$token];
} elseif ( $ord >= $zero && $ord <= $nine ) {
$stack[] = intval( $token );
} else {
@@ -88,8 +123,8 @@ class CLDRPluralRuleEvaluator {
return $i;
}
}
- // None of the provided rules match. The number belongs to caregory
- // 'other' which comes last.
+ // None of the provided rules match. The number belongs to category
+ // 'other', which comes last.
return count( $rules );
}
@@ -227,8 +262,39 @@ class CLDRPluralRuleEvaluator_Range {
* Helper class for converting rules to reverse polish notation (RPN).
*/
class CLDRPluralRuleConverter {
- public $rule, $pos, $end;
+ /**
+ * The input string
+ *
+ * @var string
+ */
+ public $rule;
+
+ /**
+ * The current position
+ *
+ * @var int
+ */
+ public $pos;
+
+ /**
+ * The past-the-end position
+ *
+ * @var int
+ */
+ public $end;
+
+ /**
+ * The operator stack
+ *
+ * @var array
+ */
public $operators = array();
+
+ /**
+ * The operand stack
+ *
+ * @var array
+ */
public $operands = array();
/**
@@ -257,14 +323,19 @@ class CLDRPluralRuleConverter {
/**
* Same for digits. Note that the grammar given in UTS #35 doesn't allow
- * negative numbers or decimals.
+ * negative numbers or decimal separators.
*/
const NUMBER_CLASS = '0123456789';
+ /**
+ * A character list of symbolic operands.
+ */
+ const OPERAND_SYMBOLS = 'nivwft';
+
/**
* An anchored regular expression which matches a word at the current offset.
*/
- const WORD_REGEX = '/[a-zA-Z]+/A';
+ const WORD_REGEX = '/[a-zA-Z@]+/A';
/**
* Convert a rule to RPN. This is the only public entry point.
@@ -365,17 +436,19 @@ class CLDRPluralRuleConverter {
return $token;
}
- // Comma
- if ( $this->rule[$this->pos] === ',' ) {
- $token = $this->newOperator( ',', $this->pos, 1 );
- $this->pos ++;
+ // Two-character operators
+ $op2 = substr( $this->rule, $this->pos, 2 );
+ if ( $op2 === '..' || $op2 === '!=' ) {
+ $token = $this->newOperator( $op2, $this->pos, 2 );
+ $this->pos += 2;
return $token;
}
- // Dot dot
- if ( substr( $this->rule, $this->pos, 2 ) === '..' ) {
- $token = $this->newOperator( '..', $this->pos, 2 );
- $this->pos += 2;
+ // Single-character operators
+ $op1 = $this->rule[$this->pos];
+ if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
+ $token = $this->newOperator( $op1, $this->pos, 1 );
+ $this->pos ++;
return $token;
}
@@ -414,13 +487,21 @@ class CLDRPluralRuleConverter {
return $token;
}
- // The special numerical keyword "n"
- if ( $word1 === 'n' ) {
- $token = $this->newNumber( 'n', $this->pos );
+ // The single-character operand symbols
+ if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
+ $token = $this->newNumber( $word1, $this->pos );
$this->pos ++;
return $token;
}
+ // Samples
+ if ( $word1 === '@integer' || $word1 === '@decimal' ) {
+ // Samples are like comments, they have no effect on rule evaluation.
+ // They run from the first sample indicator to the end of the string.
+ $this->pos = $this->end;
+ return false;
+ }
+
$this->error( 'unrecognised word' );
}
@@ -551,8 +632,28 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
'r' => 'range',
);
+ /**
+ * Map for converting the new operators introduced in Rev 33 to the old forms
+ */
+ static $aliasMap = array(
+ '%' => 'mod',
+ '!=' => 'not-in',
+ '=' => 'in'
+ );
+
+ /**
+ * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
+ *
+ * @param CLDRPluralRuleConverter $parser The parser
+ * @param string $name The operator name
+ * @param int $pos The position
+ * @param int $pos The length
+ */
function __construct( $parser, $name, $pos, $length ) {
parent::__construct( $parser, $pos, $length );
+ if ( isset( self::$aliasMap[$name] ) ) {
+ $name = self::$aliasMap[$name];
+ }
$this->name = $name;
}
diff --git a/maintenance/fixExtLinksProtocolRelative.php b/maintenance/fixExtLinksProtocolRelative.php
index 55fbd9a3..02d65ed1 100644
--- a/maintenance/fixExtLinksProtocolRelative.php
+++ b/maintenance/fixExtLinksProtocolRelative.php
@@ -66,11 +66,13 @@ class FixExtLinksProtocolRelative extends LoggedUpdateMaintenance {
$db->insert( 'externallinks',
array(
array(
+ 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ),
'el_from' => $row->el_from,
'el_to' => $row->el_to,
'el_index' => "http:{$row->el_index}",
),
array(
+ 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ),
'el_from' => $row->el_from,
'el_to' => $row->el_to,
'el_index' => "https:{$row->el_index}",
diff --git a/maintenance/language/messageTypes.inc b/maintenance/language/messageTypes.inc
index 8676d741..0b9b7cb8 100644
--- a/maintenance/language/messageTypes.inc
+++ b/maintenance/language/messageTypes.inc
@@ -245,6 +245,13 @@ $wgIgnoredMessages = array(
'tags-summary',
'comparepages-summary',
'resettokens-summary',
+ 'version-db-mysql-url',
+ 'version-db-mariadb-url',
+ 'version-db-percona-url',
+ 'version-db-postgres-url',
+ 'version-db-oracle-url',
+ 'version-db-sqlite-url',
+ 'version-db-mssql-url',
'version-entrypoints-index-php',
'version-entrypoints-api-php',
'version-entrypoints-load-php',
diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc
index 5e8e9744..de163a61 100644
--- a/maintenance/language/messages.inc
+++ b/maintenance/language/messages.inc
@@ -3706,6 +3706,13 @@ $wgMessageStructure = array(
'version-software',
'version-software-product',
'version-software-version',
+ 'version-db-mysql-url',
+ 'version-db-mariadb-url',
+ 'version-db-percona-url',
+ 'version-db-postgres-url',
+ 'version-db-oracle-url',
+ 'version-db-sqlite-url',
+ 'version-db-mssql-url',
'version-entrypoints',
'version-entrypoints-header-entrypoint',
'version-entrypoints-header-url',
diff --git a/resources/mediawiki.libs/CLDRPluralRuleParser.js b/resources/mediawiki.libs/CLDRPluralRuleParser.js
index 441bc91f..3def37c5 100644
--- a/resources/mediawiki.libs/CLDRPluralRuleParser.js
+++ b/resources/mediawiki.libs/CLDRPluralRuleParser.js
@@ -1,7 +1,7 @@
-/* This is cldrpluralparser 1.0, ported to MediaWiki ResourceLoader */
+/* This is CLDRPluralRuleParser v1.1, ported to MediaWiki ResourceLoader */
/**
-* cldrpluralparser.js
+* CLDRPluralRuleParser.js
* A parser engine for CLDR plural rules.
*
* Copyright 2012 GPLV3+, Santhosh Thottingal
@@ -13,59 +13,83 @@
* @author Amir Aharoni
*/
+( function ( mw ) {
/**
* Evaluates a plural rule in CLDR syntax for a number
- * @param rule
- * @param number
- * @return true|false|null
+ * @param {string} rule
+ * @param {integer} number
+ * @return {boolean} true if evaluation passed, false if evaluation failed.
*/
-( function( mw ) {
function pluralRuleParser(rule, number) {
/*
Syntax: see http://unicode.org/reports/tr35/#Language_Plural_Rules
-----------------------------------------------------------------
-
condition = and_condition ('or' and_condition)*
+ ('@integer' samples)?
+ ('@decimal' samples)?
and_condition = relation ('and' relation)*
- relation = is_relation | in_relation | within_relation | 'n'
+ relation = is_relation | in_relation | within_relation
is_relation = expr 'is' ('not')? value
- in_relation = expr ('not')? 'in' range_list
+ in_relation = expr (('not')? 'in' | '=' | '!=') range_list
within_relation = expr ('not')? 'within' range_list
- expr = 'n' ('mod' value)?
+ expr = operand (('mod' | '%') value)?
+ operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
range_list = (range | value) (',' range_list)*
value = digit+
digit = 0|1|2|3|4|5|6|7|8|9
range = value'..'value
-
+ samples = sampleRange (',' sampleRange)* (',' ('…'|'...'))?
+ sampleRange = decimalValue '~' decimalValue
+ decimalValue = value ('.' value)?
*/
+
+ // we don't evaluate the samples section of the rule. Ignore it.
+ rule = rule.split('@')[0].trim();
+
+ if (!rule.length) {
+ // empty rule or 'other' rule.
+ return true;
+ }
// Indicates current position in the rule as we parse through it.
// Shared among all parsing functions below.
- var pos = 0;
-
- var whitespace = makeRegexParser(/^\s+/);
- var digits = makeRegexParser(/^\d+/);
-
- var _n_ = makeStringParser('n');
- var _is_ = makeStringParser('is');
- var _mod_ = makeStringParser('mod');
- var _not_ = makeStringParser('not');
- var _in_ = makeStringParser('in');
- var _within_ = makeStringParser('within');
- var _range_ = makeStringParser('..');
- var _comma_ = makeStringParser(',');
- var _or_ = makeStringParser('or');
- var _and_ = makeStringParser('and');
+ var pos = 0,
+ operand,
+ expression,
+ relation,
+ result,
+ whitespace = makeRegexParser(/^\s+/),
+ value = makeRegexParser(/^\d+/),
+ _n_ = makeStringParser('n'),
+ _i_ = makeStringParser('i'),
+ _f_ = makeStringParser('f'),
+ _t_ = makeStringParser('t'),
+ _v_ = makeStringParser('v'),
+ _w_ = makeStringParser('w'),
+ _is_ = makeStringParser('is'),
+ _isnot_ = makeStringParser('is not'),
+ _isnot_sign_ = makeStringParser('!='),
+ _equal_ = makeStringParser('='),
+ _mod_ = makeStringParser('mod'),
+ _percent_ = makeStringParser('%'),
+ _not_ = makeStringParser('not'),
+ _in_ = makeStringParser('in'),
+ _within_ = makeStringParser('within'),
+ _range_ = makeStringParser('..'),
+ _comma_ = makeStringParser(','),
+ _or_ = makeStringParser('or'),
+ _and_ = makeStringParser('and');
function debug() {
- /* console.log.apply(console, arguments);*/
+ // console.log.apply(console, arguments);
}
debug('pluralRuleParser', rule, number);
// Try parsers until one works, if none work return null
+
function choice(parserSyntax) {
- return function () {
+ return function() {
for (var i = 0; i < parserSyntax.length; i++) {
var result = parserSyntax[i]();
if (result !== null) {
@@ -79,6 +103,7 @@ function pluralRuleParser(rule, number) {
// Try several parserSyntax-es in a row.
// All must succeed; otherwise, return null.
// This is the only eager one.
+
function sequence(parserSyntax) {
var originalPos = pos;
var result = [];
@@ -95,8 +120,9 @@ function pluralRuleParser(rule, number) {
// Run the same parser over and over until it fails.
// Must succeed a minimum of n times; otherwise, return null.
+
function nOrMore(n, p) {
- return function () {
+ return function() {
var originalPos = pos;
var result = [];
var parsed = p();
@@ -113,21 +139,21 @@ function pluralRuleParser(rule, number) {
}
// Helpers -- just make parserSyntax out of simpler JS builtin types
-
function makeStringParser(s) {
var len = s.length;
- return function () {
+ return function() {
var result = null;
if (rule.substr(pos, len) === s) {
result = s;
pos += len;
}
+
return result;
};
}
function makeRegexParser(regex) {
- return function () {
+ return function() {
var matches = rule.substr(pos).match(regex);
if (matches === null) {
return null;
@@ -137,62 +163,166 @@ function pluralRuleParser(rule, number) {
};
}
+ /*
+ * integer digits of n.
+ */
+ function i() {
+ var result = _i_();
+ if (result === null) {
+ debug(' -- failed i', parseInt(number, 10));
+ return result;
+ }
+ result = parseInt(number, 10);
+ debug(' -- passed i ', result);
+ return result;
+ }
+
+ /*
+ * absolute value of the source number (integer and decimals).
+ */
function n() {
var result = _n_();
if (result === null) {
- debug(" -- failed n");
+ debug(' -- failed n ', number);
return result;
}
- result = parseInt(number, 10);
- debug(" -- passed n ", result);
+ result = parseFloat(number, 10);
+ debug(' -- passed n ', result);
+ return result;
+ }
+
+ /*
+ * visible fractional digits in n, with trailing zeros.
+ */
+ function f() {
+ var result = _f_();
+ if (result === null) {
+ debug(' -- failed f ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1] || 0;
+ debug(' -- passed f ', result);
+ return result;
+ }
+
+ /*
+ * visible fractional digits in n, without trailing zeros.
+ */
+ function t() {
+ var result = _t_();
+ if (result === null) {
+ debug(' -- failed t ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].replace(/0$/, '') || 0;
+ debug(' -- passed t ', result);
+ return result;
+ }
+
+ /*
+ * number of visible fraction digits in n, with trailing zeros.
+ */
+ function v() {
+ var result = _v_();
+ if (result === null) {
+ debug(' -- failed v ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].length || 0;
+ debug(' -- passed v ', result);
+ return result;
+ }
+
+ /*
+ * number of visible fraction digits in n, without trailing zeros.
+ */
+ function w() {
+ var result = _w_();
+ if (result === null) {
+ debug(' -- failed w ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].replace(/0$/, '').length || 0;
+ debug(' -- passed w ', result);
return result;
}
- var expression = choice([mod, n]);
+ // operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
+ operand = choice([n, i, f, t, v, w]);
+
+ // expr = operand (('mod' | '%') value)?
+ expression = choice([mod, operand]);
function mod() {
- var result = sequence([n, whitespace, _mod_, whitespace, digits]);
+ var result = sequence([operand, whitespace, choice([_mod_, _percent_]), whitespace, value]);
if (result === null) {
- debug(" -- failed mod");
+ debug(' -- failed mod');
return null;
}
- debug(" -- passed mod");
+ debug(' -- passed ' + parseInt(result[0], 10) + ' ' + result[2] + ' ' + parseInt(result[4], 10));
return parseInt(result[0], 10) % parseInt(result[4], 10);
}
function not() {
var result = sequence([whitespace, _not_]);
if (result === null) {
- debug(" -- failed not");
+ debug(' -- failed not');
return null;
- } else {
- return result[1];
}
+
+ return result[1];
}
+ // is_relation = expr 'is' ('not')? value
function is() {
- var result = sequence([expression, whitespace, _is_, nOrMore(0, not), whitespace, digits]);
+ var result = sequence([expression, whitespace, choice([_is_]), whitespace, value]);
if (result !== null) {
- debug(" -- passed is");
- if (result[3][0] === 'not') {
- return result[0] !== parseInt(result[5], 10);
- } else {
- return result[0] === parseInt(result[5], 10);
+ debug(' -- passed is : ' + result[0] + ' == ' + parseInt(result[4], 10));
+ return result[0] === parseInt(result[4], 10);
+ }
+ debug(' -- failed is');
+ return null;
+ }
+
+ // is_relation = expr 'is' ('not')? value
+ function isnot() {
+ var result = sequence([expression, whitespace, choice([_isnot_, _isnot_sign_]), whitespace, value]);
+ if (result !== null) {
+ debug(' -- passed isnot: ' + result[0] + ' != ' + parseInt(result[4], 10));
+ return result[0] !== parseInt(result[4], 10);
+ }
+ debug(' -- failed isnot');
+ return null;
+ }
+
+ function not_in() {
+ var result = sequence([expression, whitespace, _isnot_sign_, whitespace, rangeList]);
+ if (result !== null) {
+ debug(' -- passed not_in: ' + result[0] + ' != ' + result[4]);
+ var range_list = result[4];
+ for (var i = 0; i < range_list.length; i++) {
+ if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
+ return false;
+ }
}
+ return true;
}
- debug(" -- failed is");
+ debug(' -- failed not_in');
return null;
}
+ // range_list = (range | value) (',' range_list)*
function rangeList() {
- // range_list = (range | value) (',' range_list)*
- var result = sequence([choice([range, digits]), nOrMore(0, rangeTail)]);
+ var result = sequence([choice([range, value]), nOrMore(0, rangeTail)]);
var resultList = [];
if (result !== null) {
- resultList = resultList.concat(result[0], result[1][0]);
+ resultList = resultList.concat(result[0]);
+ if (result[1][0]) {
+ resultList = resultList.concat(result[1][0]);
+ }
return resultList;
}
- debug(" -- failed rangeList");
+ debug(' -- failed rangeList');
return null;
}
@@ -202,111 +332,141 @@ function pluralRuleParser(rule, number) {
if (result !== null) {
return result[1];
}
- debug(" -- failed rangeTail");
+ debug(' -- failed rangeTail');
return null;
}
+ // range = value'..'value
+
function range() {
var i;
- var result = sequence([digits, _range_, digits]);
+ var result = sequence([value, _range_, value]);
if (result !== null) {
- debug(" -- passed range");
+ debug(' -- passed range');
var array = [];
var left = parseInt(result[0], 10);
var right = parseInt(result[2], 10);
- for ( i = left; i <= right; i++) {
+ for (i = left; i <= right; i++) {
array.push(i);
}
return array;
}
- debug(" -- failed range");
+ debug(' -- failed range');
return null;
}
function _in() {
// in_relation = expr ('not')? 'in' range_list
- var result = sequence([expression, nOrMore(0, not), whitespace, _in_, whitespace, rangeList]);
+ var result = sequence([expression, nOrMore(0, not), whitespace, choice([_in_, _equal_]), whitespace, rangeList]);
if (result !== null) {
- debug(" -- passed _in");
+ debug(' -- passed _in:' + result);
var range_list = result[5];
for (var i = 0; i < range_list.length; i++) {
- if (parseInt(range_list[i], 10) === result[0]) {
+ if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
return (result[1][0] !== 'not');
}
}
return (result[1][0] === 'not');
}
- debug(" -- failed _in ");
+ debug(' -- failed _in ');
return null;
}
+ /*
+ * The difference between in and within is that in only includes integers in the specified range,
+ * while within includes all values.
+ */
+
function within() {
- var result = sequence([expression, whitespace, _within_, whitespace, rangeList]);
+ // within_relation = expr ('not')? 'within' range_list
+ var result = sequence([expression, nOrMore(0, not), whitespace, _within_, whitespace, rangeList]);
if (result !== null) {
- debug(" -- passed within ");
- var range_list = result[4];
- return (parseInt( range_list[0],10 )<= result[0] && result[0] <= parseInt( range_list[1], 10));
+ debug(' -- passed within');
+ var range_list = result[5];
+ if ((result[0] >= parseInt(range_list[0], 10)) &&
+ (result[0] < parseInt(range_list[range_list.length - 1], 10))) {
+ return (result[1][0] !== 'not');
+ }
+ return (result[1][0] === 'not');
}
- debug(" -- failed within ");
+ debug(' -- failed within ');
return null;
}
+ // relation = is_relation | in_relation | within_relation
+ relation = choice([is, not_in, isnot, _in, within]);
- var relation = choice([is, _in, within]);
-
+ // and_condition = relation ('and' relation)*
function and() {
- var result = sequence([relation, whitespace, _and_, whitespace, condition]);
+ var result = sequence([relation, nOrMore(0, andTail)]);
if (result) {
- debug(" -- passed and");
- return result[0] && result[4];
+ if (!result[0]) {
+ return false;
+ }
+ for (var i = 0; i < result[1].length; i++) {
+ if (!result[1][i]) {
+ return false;
+ }
+ }
+ return true;
}
- debug(" -- failed and");
+ debug(' -- failed and');
return null;
}
- function or() {
- var result = sequence([relation, whitespace, _or_, whitespace, condition]);
- if (result) {
- debug(" -- passed or");
- return result[0] || result[4];
+ // ('and' relation)*
+ function andTail() {
+ var result = sequence([whitespace, _and_, whitespace, relation]);
+ if (result !== null) {
+ debug(' -- passed andTail' + result);
+ return result[3];
}
- debug(" -- failed or");
+ debug(' -- failed andTail');
return null;
- }
- var condition = choice([and, or, relation]);
+ }
+ // ('or' and_condition)*
+ function orTail() {
+ var result = sequence([whitespace, _or_, whitespace, and]);
+ if (result !== null) {
+ debug(' -- passed orTail: ' + result[3]);
+ return result[3];
+ }
+ debug(' -- failed orTail');
+ return null;
- function isInt(n) {
- return parseFloat(n) % 1 === 0;
}
+ // condition = and_condition ('or' and_condition)*
+ function condition() {
+ var result = sequence([and, nOrMore(0, orTail)]);
+ if (result) {
+ for (var i = 0; i < result[1].length; i++) {
+ if (result[1][i]) {
+ return true;
+ }
+ }
+ return result[0];
- function start() {
- if (!isInt(number)) {
- return false;
}
- var result = condition();
- return result;
+ return false;
}
-
- var result = start();
-
+ result = condition();
/*
* For success, the pos must have gotten to the end of the rule
* and returned a non-null.
* n.b. This is part of language infrastructure, so we do not throw an internationalizable message.
*/
- if (result === null || pos !== rule.length) {
- // throw new Error("Parse error at position " + pos.toString() + " in input: " + rule + " result is " + result);
+ if (result === null) {
+ throw new Error('Parse error at position ' + pos.toString() + ' for rule: ' + rule);
}
- return result;
-}
+ if (pos !== rule.length) {
+ debug('Warning: Rule not parsed completely. Parser stopped at ' + rule.substr(0, pos) + ' for rule: ' + rule);
+ }
-/* For module loaders, e.g. NodeJS, NPM */
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = pluralRuleParser;
+ return result;
}
/* pluralRuleParser ends here */
diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt
index 02a66b51..9658e8f8 100644
--- a/tests/parser/parserTests.txt
+++ b/tests/parser/parserTests.txt
@@ -11574,6 +11574,17 @@ Bug 3244: HTML attribute safety (extension; unsafe)
!! end
+!! test
+Opera -o-link CSS
+!! input
+X
+!! result
+X
+
+!! end
+
# More MSIE fun discovered by Tom Gilder
!! test
@@ -11612,6 +11623,70 @@ MSIE CSS safety test: comment in expression
!! end
+!! test
+CSS safety test: vertical tab
+!! input
+A
+!! result
+A
+
+!! end
+
+!! test
+MSIE CSS safety test: Fullwidth
+!! input
+A
+B
+!! result
+A
+B
+
+!! end
+
+!! test
+MSIE CSS safety test: IPA extensions
+!! input
+A
+B
+!! result
+A
+B
+
+!! end
+
+!! test
+MSIE CSS safety test: sup/sub script
+!! input
+A
+B
+C
+!! result
+A
+B
+C
+
+!! end
+
+!! test
+MSIE CSS safety test: Repetition markers
+!! input
+A
+B
+C
+D
+E
+F
+G
+!! result
+A
+B
+C
+D
+E
+F
+G
+
+!! end
!! test
Table attribute legitimate extension
diff --git a/tests/phpunit/includes/ArticleTablesTest.php b/tests/phpunit/includes/ArticleTablesTest.php
index 0f159ae4..469d1d19 100644
--- a/tests/phpunit/includes/ArticleTablesTest.php
+++ b/tests/phpunit/includes/ArticleTablesTest.php
@@ -20,7 +20,7 @@ class ArticleTablesTest extends MediaWikiLangTestCase {
$templates1 = $title->getTemplateLinksFrom();
$wgLang = Language::factory( 'de' );
- $page->mPreparedEdit = false; // In order to force the rerendering of the same wikitext
+ $page = WikiPage::factory( $title ); // In order to force the rerendering of the same wikitext
// We need an edit, a purge is not enough to regenerate the tables
$page->doEditContent( new WikitextContent( '{{:{{int:history}}}}' ), 'Test code for bug 14404', EDIT_UPDATE, false, $user );
diff --git a/tests/phpunit/languages/LanguageBe_taraskTest.php b/tests/phpunit/languages/LanguageBe_taraskTest.php
index d5822f4a..dbdb5889 100644
--- a/tests/phpunit/languages/LanguageBe_taraskTest.php
+++ b/tests/phpunit/languages/LanguageBe_taraskTest.php
@@ -79,12 +79,13 @@ class LanguageBe_taraskTest extends LanguageClassesTestCase {
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePluralTwoForms() {
return array(
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 11 ),
array( 'other', 91 ),
diff --git a/tests/phpunit/languages/LanguageBsTest.php b/tests/phpunit/languages/LanguageBsTest.php
index fb965b89..7aca2ab1 100644
--- a/tests/phpunit/languages/LanguageBsTest.php
+++ b/tests/phpunit/languages/LanguageBsTest.php
@@ -5,14 +5,14 @@
* @file
*/
-/** Tests for MediaWiki languages/LanguageBs.php */
+/** Tests for Croatian (hrvatski) */
class LanguageBsTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
@@ -26,17 +26,17 @@ class LanguageBsTest extends LanguageClassesTestCase {
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 11 ),
- array( 'many', 20 ),
+ array( 'other', 5 ),
+ array( 'other', 11 ),
+ array( 'other', 20 ),
array( 'one', 21 ),
array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
);
}
}
diff --git a/tests/phpunit/languages/LanguageGvTest.php b/tests/phpunit/languages/LanguageGvTest.php
index a0def628..fc58022a 100644
--- a/tests/phpunit/languages/LanguageGvTest.php
+++ b/tests/phpunit/languages/LanguageGvTest.php
@@ -1,20 +1,19 @@
assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
@@ -23,21 +22,23 @@ class LanguageGvTest extends LanguageClassesTestCase {
* @covers Language::getPluralRuleType
*/
public function testGetPluralRuleType( $result, $value ) {
- $this->markTestSkipped( "This test won't work since convertPlural for gv doesn't seem to actually follow our plural rules." );
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
public static function providePlural() {
return array(
- array( 'Form 4', 0 ),
- array( 'Form 2', 1 ),
- array( 'Form 3', 2 ),
- array( 'Form 4', 3 ),
- array( 'Form 1', 20 ),
- array( 'Form 2', 21 ),
- array( 'Form 3', 22 ),
- array( 'Form 4', 23 ),
- array( 'Form 4', 50 ),
+ array( 'few', 0 ),
+ array( 'one', 1 ),
+ array( 'two', 2 ),
+ array( 'other', 3 ),
+ array( 'few', 20 ),
+ array( 'one', 21 ),
+ array( 'two', 22 ),
+ array( 'other', 23 ),
+ array( 'other', 50 ),
+ array( 'few', 60 ),
+ array( 'other', 80 ),
+ array( 'few', 100 )
);
}
}
diff --git a/tests/phpunit/languages/LanguageHrTest.php b/tests/phpunit/languages/LanguageHrTest.php
index 6ce4aff9..644c5255 100644
--- a/tests/phpunit/languages/LanguageHrTest.php
+++ b/tests/phpunit/languages/LanguageHrTest.php
@@ -12,7 +12,7 @@ class LanguageHrTest extends LanguageClassesTestCase {
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
@@ -26,17 +26,17 @@ class LanguageHrTest extends LanguageClassesTestCase {
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 11 ),
- array( 'many', 20 ),
+ array( 'other', 5 ),
+ array( 'other', 11 ),
+ array( 'other', 20 ),
array( 'one', 21 ),
array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
);
}
}
diff --git a/tests/phpunit/languages/LanguageHyTest.php b/tests/phpunit/languages/LanguageHyTest.php
index 896522b0..92e0ef94 100644
--- a/tests/phpunit/languages/LanguageHyTest.php
+++ b/tests/phpunit/languages/LanguageHyTest.php
@@ -5,7 +5,7 @@
* @file
*/
-/** Tests for MediaWiki languages/LanguageHy.php */
+/** Tests for Armenian (Հայերեն) */
class LanguageHyTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
@@ -21,13 +21,12 @@ class LanguageHyTest extends LanguageClassesTestCase {
* @covers Language::getPluralRuleType
*/
public function testGetPluralRuleType( $result, $value ) {
- // This fails for 0, but I'm not sure why. Some voodoo going on here.
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
public static function providePlural() {
return array(
- array( 'other', 0 ),
+ array( 'one', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
array( 'other', 200 ),
diff --git a/tests/phpunit/languages/LanguageLvTest.php b/tests/phpunit/languages/LanguageLvTest.php
index c4d8a6f0..7120cfe3 100644
--- a/tests/phpunit/languages/LanguageLvTest.php
+++ b/tests/phpunit/languages/LanguageLvTest.php
@@ -5,7 +5,7 @@
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageLv.php */
+/** Tests for Latvian */
class LanguageLvTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
@@ -28,13 +28,17 @@ class LanguageLvTest extends LanguageClassesTestCase {
return array(
array( 'zero', 0 ),
array( 'one', 1 ),
- array( 'other', 11 ),
+ array( 'zero', 11 ),
array( 'one', 21 ),
- array( 'other', 411 ),
+ array( 'zero', 411 ),
+ array( 'other', 2 ),
+ array( 'other', 9 ),
+ array( 'zero', 12 ),
array( 'other', 12.345 ),
- array( 'other', 20 ),
+ array( 'zero', 20 ),
+ array( 'other', 22 ),
array( 'one', 31 ),
- array( 'other', 200 ),
+ array( 'zero', 200 ),
);
}
}
diff --git a/tests/phpunit/languages/LanguageMkTest.php b/tests/phpunit/languages/LanguageMkTest.php
index 7d47b375..ed155263 100644
--- a/tests/phpunit/languages/LanguageMkTest.php
+++ b/tests/phpunit/languages/LanguageMkTest.php
@@ -5,7 +5,7 @@
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageMk.php */
+/** Tests for македонски/Macedonian */
class LanguageMkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
@@ -28,7 +28,7 @@ class LanguageMkTest extends LanguageClassesTestCase {
return array(
array( 'other', 0 ),
array( 'one', 1 ),
- array( 'other', 11 ),
+ array( 'one', 11 ),
array( 'one', 21 ),
array( 'one', 411 ),
array( 'other', 12.345 ),
diff --git a/tests/phpunit/languages/LanguageRuTest.php b/tests/phpunit/languages/LanguageRuTest.php
index e938be79..e17c7085 100644
--- a/tests/phpunit/languages/LanguageRuTest.php
+++ b/tests/phpunit/languages/LanguageRuTest.php
@@ -13,10 +13,21 @@ class LanguageRuTest extends LanguageClassesTestCase {
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'many', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
+ /**
+ * Test explicit plural forms - n=FormN forms
+ * @covers Language::convertPlural
+ */
+ public function testExplicitPlural() {
+ $forms = array( 'one','many', 'other', '12=dozen' );
+ $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
+ $forms = array( 'one', 'many', '100=hundred', 'other', '12=dozen' );
+ $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
+ }
+
/**
* @dataProvider providePlural
* @covers Language::getPluralRuleType
@@ -31,10 +42,10 @@ class LanguageRuTest extends LanguageClassesTestCase {
array( 'many', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
- array( 'few', 2 ),
- array( 'few', 3 ),
- array( 'few', 4 ),
- array( 'few', 334 ),
+ array( 'other', 2 ),
+ array( 'other', 3 ),
+ array( 'other', 4 ),
+ array( 'other', 334 ),
array( 'many', 5 ),
array( 'many', 15 ),
array( 'many', 120 ),
@@ -46,7 +57,7 @@ class LanguageRuTest extends LanguageClassesTestCase {
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
diff --git a/tests/phpunit/languages/LanguageSgsTest.php b/tests/phpunit/languages/LanguageSgsTest.php
index bf6a14b1..fa49a4dd 100644
--- a/tests/phpunit/languages/LanguageSgsTest.php
+++ b/tests/phpunit/languages/LanguageSgsTest.php
@@ -5,7 +5,7 @@
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageSgs.php */
+/** Tests for Samogitian */
class LanguageSgsTest extends LanguageClassesTestCase {
/**
* @dataProvider providePluralAllForms
diff --git a/tests/phpunit/languages/LanguageShTest.php b/tests/phpunit/languages/LanguageShTest.php
index 6d2e25a6..1b390872 100644
--- a/tests/phpunit/languages/LanguageShTest.php
+++ b/tests/phpunit/languages/LanguageShTest.php
@@ -5,14 +5,14 @@
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageSh.php */
+/** Tests for srpskohrvatski / српскохрватски / Serbocroatian */
class LanguageShTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
@@ -26,17 +26,17 @@ class LanguageShTest extends LanguageClassesTestCase {
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 10 ),
- array( 'many', 11 ),
- array( 'many', 12 ),
+ array( 'other', 5 ),
+ array( 'other', 10 ),
+ array( 'other', 11 ),
+ array( 'other', 12 ),
array( 'one', 101 ),
array( 'few', 102 ),
- array( 'many', 111 ),
+ array( 'other', 111 ),
);
}
}
diff --git a/tests/phpunit/languages/LanguageSrTest.php b/tests/phpunit/languages/LanguageSrTest.php
index ab4d4aba..d6fedb57 100644
--- a/tests/phpunit/languages/LanguageSrTest.php
+++ b/tests/phpunit/languages/LanguageSrTest.php
@@ -130,7 +130,7 @@ class LanguageSrTest extends LanguageClassesTestCase {
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
@@ -145,16 +145,16 @@ class LanguageSrTest extends LanguageClassesTestCase {
public static function providePlural() {
return array(
array( 'one', 1 ),
- array( 'many', 11 ),
+ array( 'other', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
array( 'few', 2 ),
array( 'few', 3 ),
array( 'few', 4 ),
array( 'few', 334 ),
- array( 'many', 5 ),
- array( 'many', 15 ),
- array( 'many', 120 ),
+ array( 'other', 5 ),
+ array( 'other', 15 ),
+ array( 'other', 120 ),
);
}
@@ -171,8 +171,9 @@ class LanguageSrTest extends LanguageClassesTestCase {
return array(
array( 'one', 1 ),
array( 'other', 11 ),
- array( 'other', 91 ),
- array( 'other', 121 ),
+ array( 'other', 4 ),
+ array( 'one', 91 ),
+ array( 'one', 121 ),
);
}
diff --git a/tests/phpunit/languages/LanguageUkTest.php b/tests/phpunit/languages/LanguageUkTest.php
index 0783fcf6..9051bcff 100644
--- a/tests/phpunit/languages/LanguageUkTest.php
+++ b/tests/phpunit/languages/LanguageUkTest.php
@@ -6,7 +6,7 @@
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageUk.php */
+/** Tests for Ukrainian */
class LanguageUkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
@@ -17,6 +17,17 @@ class LanguageUkTest extends LanguageClassesTestCase {
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
+ /**
+ * Test explicit plural forms - n=FormN forms
+ * @covers Language::convertPlural
+ */
+ public function testExplicitPlural() {
+ $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+ $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
+ $forms = array( 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' );
+ $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
+ }
+
/**
* @dataProvider providePlural
* @covers Language::getPluralRuleType
@@ -46,7 +57,7 @@ class LanguageUkTest extends LanguageClassesTestCase {
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
diff --git a/tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php b/tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
index 3bf74146..bd3809d7 100644
--- a/tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
+++ b/tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
@@ -78,6 +78,56 @@ class CLDRPluralRuleEvaluatorTest extends MediaWikiTestCase {
array( 0, 'n in 3..10,13..19', 13, 'scottish rule - ranges with comma' ),
array( 0, '5 mod 3 is n', 2, 'n as result of mod - no need to pass' ),
+
+ # Revision 33 new operand examples
+ # expected, rule, number, comment
+ array( 0, 'i is 1', '1.00', 'new operand i' ),
+ array( 0, 'v is 2', '1.00', 'new operand v' ),
+ array( 0, 'w is 0', '1.00', 'new operand w' ),
+ array( 0, 'f is 0', '1.00', 'new operand f' ),
+ array( 0, 't is 0', '1.00', 'new operand t' ),
+
+ array( 0, 'i is 1', '1.30', 'new operand i' ),
+ array( 0, 'v is 2', '1.30', 'new operand v' ),
+ array( 0, 'w is 1', '1.30', 'new operand w' ),
+ array( 0, 'f is 30', '1.30', 'new operand f' ),
+ array( 0, 't is 3', '1.30', 'new operand t' ),
+
+ array( 0, 'i is 1', '1.03', 'new operand i' ),
+ array( 0, 'v is 2', '1.03', 'new operand v' ),
+ array( 0, 'w is 2', '1.03', 'new operand w' ),
+ array( 0, 'f is 3', '1.03', 'new operand f' ),
+ array( 0, 't is 3', '1.03', 'new operand t' ),
+
+ # Revision 33 new operator aliases
+ # expected, rule, number, comment
+ array( 0, 'n % 3 is 1', 7, 'new % operator' ),
+ array( 0, 'n = 1,3,5', 3, 'new = operator' ),
+ array( 1, 'n != 1,3,5', 5, 'new != operator' ),
+
+ # Revision 33 samples
+ # expected, rule, number, comment
+ array( 0, 'n in 1,3,5@integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …', 3, 'samples' ),
+
+ # Revision 33 some test cases from CLDR
+ array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.1', 'pt one' ),
+ array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.01', 'pt one' ),
+ array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.10', 'pt one' ),
+ array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.010', 'pt one' ),
+ array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.100', 'pt one' ),
+ array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.0', 'pt other' ),
+ array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.2', 'pt other' ),
+ array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '10.0', 'pt other' ),
+ array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '100.0', 'pt other' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '2', 'bs few' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '4', 'bs few' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '22', 'bs few' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '102', 'bs few' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.2', 'bs few' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.4', 'bs few' ),
+ array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.2', 'bs few' ),
+ array( 1, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.0', 'bs other' ),
+
);
return $tests;
--
cgit v1.2.3-54-g00ecf