r56883 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r56882‎ | r56883 | r56884 >
Date:17:31, 24 September 2009
Author:brion
Status:ok
Tags:
Comment:
Bring ProofreadPage up to date with trunk r56882 -- SQL issues resolved
Modified paths:
  • /branches/wmf-deployment/extensions/ProofreadPage (modified) (history)
  • /branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.i18n.php (modified) (history)
  • /branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.php (modified) (history)
  • /branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.sql (added) (history)
  • /branches/wmf-deployment/extensions/ProofreadPage/SpecialProofreadPages.php (added) (history)
  • /branches/wmf-deployment/extensions/ProofreadPage/proofread.js (modified) (history)
  • /branches/wmf-deployment/extensions/ProofreadPage/proofread_index.js (modified) (history)

Diff [purge]

Index: branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.i18n.php
@@ -8,6 +8,7 @@
99 $messages = array();
1010
1111 $messages['en'] = array(
 12+ 'indexpages' => 'List of index pages',
1213 'proofreadpage_desc' => 'Allow easy comparison of text to the original scan',
1314 'proofreadpage_namespace' => 'Page',
1415 'proofreadpage_index_namespace' => 'Index',
@@ -16,6 +17,14 @@
1718 'proofreadpage_index_expected' => 'Error: index expected',
1819 'proofreadpage_nosuch_index' => 'Error: no such index',
1920 'proofreadpage_nosuch_file' => 'Error: no such file',
 21+ 'proofreadpage_badpage' => 'Wrong Format',
 22+ 'proofreadpage_badpagetext' => 'The format of the page you attempted to save is incorrect.',
 23+ 'proofreadpage_indexdupe' => 'Duplicate link',
 24+ 'proofreadpage_indexdupetext' => 'Pages cannot be listed more than once on an index page.',
 25+ 'proofreadpage_nologin' => 'Not logged in',
 26+ 'proofreadpage_nologintext' => 'You must be [[Special:UserLogin|logged in]] to modify the proofreading status of pages.',
 27+ 'proofreadpage_notallowed' => 'Change not allowed',
 28+ 'proofreadpage_notallowedtext' => 'You are not allowed to change the proofreading status of this page.',
2029 'proofreadpage_number_expected' => 'Error: numeric value expected',
2130 'proofreadpage_interval_too_large'=> 'Error: interval too large',
2231 'proofreadpage_invalid_interval' => 'Error: invalid interval',
@@ -30,6 +39,11 @@
3140 'proofreadpage_quality2_category' => 'Problematic',
3241 'proofreadpage_quality3_category' => 'Proofread',
3342 'proofreadpage_quality4_category' => 'Validated',
 43+ 'proofreadpage_quality0_message' => 'This page does not need to be proofread',
 44+ 'proofreadpage_quality1_message' => 'This page has not been proofread',
 45+ 'proofreadpage_quality2_message' => 'There was a problem when proofreading this page',
 46+ 'proofreadpage_quality3_message' => 'This page has been proofread',
 47+ 'proofreadpage_quality4_message' => 'This page has been validated',
3448 'proofreadpage_index_listofpages' => 'List of pages',
3549 'proofreadpage_image_message' => 'Link to the index page',
3650 'proofreadpage_page_status' => 'Page status',
@@ -44,28 +58,41 @@
4559 Remarks||10',
4660 'proofreadpage_default_header' => '<div class="pagetext">',
4761 'proofreadpage_default_footer' => '<references/></div>',
 62+ 'proofreadpage_quality_message' => "<table style=\"line-height:40%;\" border=0 cellpadding=0 cellspacing=0 ><tr>
 63+<td align=center >&nbsp;</td>
 64+<td align=center class='quality4' width=\"$5\"></td>
 65+<td align=center class='quality3' width=\"$4\"></td>
 66+<td align=center class='quality2' width=\"$3\"></td>
 67+<td align=center class='quality1' width=\"$2\"></td>
 68+<td align=center class='quality0' width=\"$1\"></td>
 69+<td ><span id=pr_index style=\"visibility:hidden;\">$7</span></td>
 70+</tr></table>",
 71+ 'proofreadpage_pages' => "{{PLURAL:$1|page|pages}}",
4872 );
4973
5074 /** Message documentation (Message documentation)
5175 * @author Aleator
5276 * @author IAlex
5377 * @author Jon Harald Søby
 78+ * @author McDutchie
5479 * @author Mormegil
5580 * @author Purodha
 81+ * @author Siebrand
5682 * @author Yknok29
5783 */
5884 $messages['qqq'] = array(
 85+ 'indexpages' => 'Title of [[Special:IndexPages]]',
5986 'proofreadpage_desc' => 'Short description of the Proofreadpage extension, shown in [[Special:Version]]. Do not translate or change links.',
6087 'proofreadpage_namespace' => '{{Identical|Page}}',
6188 'proofreadpage_index_namespace' => '{{Identical|Index}}',
62 - 'proofreadpage_image' => '그림',
6389 'proofreadpage_index' => '{{Identical|Index}}',
 90+ 'proofreadpage_indexdupe' => 'Meaning: "This is a duplicate link"',
 91+ 'proofreadpage_notallowed' => '"Making a change is not allowed" would be the verbose way to paraphrase the message.',
6492 'proofreadpage_nextpage' => '{{Identical|Next page}}',
6593 'proofreadpage_prevpage' => '{{Identical|Previous page}}',
6694 'proofreadpage_toggleheaders' => 'Tooltip at right "+" button, at Wikisources, at namespace "Page".',
6795 'proofreadpage_quality0_category' => '{{Identical|Empty}}',
6896 'proofreadpage_js_attributes' => 'Names of the variables on index pages, separated by spaces.',
69 - 'proofreadpage_index_attributes' => '도서 정보',
7097 );
7198
7299 /** Afrikaans (Afrikaans)
@@ -125,8 +152,11 @@
126153
127154 /** Arabic (العربية)
128155 * @author Meno25
 156+ * @author Orango
 157+ * @author OsamaK
129158 */
130159 $messages['ar'] = array(
 160+ 'indexpages' => 'قائمة صفحات الفهرس',
131161 'proofreadpage_desc' => 'يسمح بمقارنة سهلة للنص مع المسح الأصلي',
132162 'proofreadpage_namespace' => 'صفحة',
133163 'proofreadpage_index_namespace' => 'فهرس',
@@ -135,6 +165,14 @@
136166 'proofreadpage_index_expected' => 'خطأ: فهرس تم توقعه',
137167 'proofreadpage_nosuch_index' => 'خطأ: لا فهرس كهذا',
138168 'proofreadpage_nosuch_file' => 'خطأ: لا ملف كهذا',
 169+ 'proofreadpage_badpage' => 'تنسيق خاطئ',
 170+ 'proofreadpage_badpagetext' => 'تنسيق الصفحة التي تحاول حفظها غير صحيح.',
 171+ 'proofreadpage_indexdupe' => 'رابط نظير',
 172+ 'proofreadpage_indexdupetext' => 'لا يمكن سرد الصفحة أكثر من في صفحة الفهرس.',
 173+ 'proofreadpage_nologin' => 'غير مسجل الدخول',
 174+ 'proofreadpage_nologintext' => 'يجب أن تكون [[Special:UserLogin|مُسجلًا الدخول]] لتعدّل حالة تدقيق الصفحات.',
 175+ 'proofreadpage_notallowed' => 'التغيير غير مسموح به',
 176+ 'proofreadpage_notallowedtext' => 'لا يسمح لك بتغيير حالة تدقيق هذه الصفحة.',
139177 'proofreadpage_number_expected' => 'خطأ: قيمة عددية تم توقعها',
140178 'proofreadpage_interval_too_large' => 'خطأ: الفترة كبيرة جدا',
141179 'proofreadpage_invalid_interval' => 'خطأ: فترة غير صحيحة',
@@ -145,10 +183,15 @@
146184 'proofreadpage_footer' => 'ذيل (غير مضمن):',
147185 'proofreadpage_toggleheaders' => 'تغيير رؤية أقسام noinclude',
148186 'proofreadpage_quality0_category' => 'بدون نص',
149 - 'proofreadpage_quality1_category' => 'ليس مثبت قراءة',
 187+ 'proofreadpage_quality1_category' => 'ليست مُدقّقة',
150188 'proofreadpage_quality2_category' => 'به مشاكل',
151 - 'proofreadpage_quality3_category' => 'مثبت قراءة',
152 - 'proofreadpage_quality4_category' => 'مصحح',
 189+ 'proofreadpage_quality3_category' => 'مُدقّقة',
 190+ 'proofreadpage_quality4_category' => 'مُصحّحة',
 191+ 'proofreadpage_quality0_message' => 'لا تحتاج هذه الصفحة إلى تدقيق',
 192+ 'proofreadpage_quality1_message' => 'لم تدقّق هذه الصفحة',
 193+ 'proofreadpage_quality2_message' => 'ثمة مشكلة عند تدقيق هذه الصفحة',
 194+ 'proofreadpage_quality3_message' => 'دُقّقت هذه الصفحة',
 195+ 'proofreadpage_quality4_message' => 'صُحّحت هذه الصفحة',
153196 'proofreadpage_index_listofpages' => 'قائمة الصفحات',
154197 'proofreadpage_image_message' => 'وصلة إلى صفحة الفهرس',
155198 'proofreadpage_page_status' => 'حالة الصفحة',
@@ -161,8 +204,19 @@
162205 الصورة|صورة الغلاف
163206 الصفحات||20
164207 الملاحظات||10',
 208+ 'proofreadpage_pages' => '{{PLURAL:$1|صفحة|صفحات}}',
165209 );
166210
 211+/** Aramaic (ܐܪܡܝܐ)
 212+ * @author Basharh
 213+ */
 214+$messages['arc'] = array(
 215+ 'proofreadpage_namespace' => 'ܦܐܬܐ',
 216+ 'proofreadpage_image' => 'ܨܘܪܬܐ',
 217+ 'proofreadpage_indexdupe' => 'ܐܣܘܪܐ ܥܦܝܦܐ',
 218+ 'proofreadpage_nologin' => 'ܠܐ ܥܠܝܠܐ',
 219+);
 220+
167221 /** Araucanian (Mapudungun)
168222 * @author Remember the dot
169223 */
@@ -296,6 +350,7 @@
297351 * @author Red Winged Duck
298352 */
299353 $messages['be-tarask'] = array(
 354+ 'indexpages' => 'Сьпіс індэксных старонак',
300355 'proofreadpage_desc' => 'Дазваляе ў зручным выглядзе параўноўваць тэкст і адсканаваны арыгінал',
301356 'proofreadpage_namespace' => 'Старонка',
302357 'proofreadpage_index_namespace' => 'Індэкс',
@@ -304,6 +359,14 @@
305360 'proofreadpage_index_expected' => 'Памылка: чакаецца індэкс',
306361 'proofreadpage_nosuch_index' => 'Памылка: няма такога індэксу',
307362 'proofreadpage_nosuch_file' => 'Памылка: няма такога файла',
 363+ 'proofreadpage_badpage' => 'Няслушны фармат',
 364+ 'proofreadpage_badpagetext' => 'Няслушны фармат старонкі, якую Вы спрабуеце захаваць.',
 365+ 'proofreadpage_indexdupe' => 'Спасылка-дублікат',
 366+ 'proofreadpage_indexdupetext' => 'Старонкі ня могуць быць ў сьпісе на індэкснай старонцы болей аднаго разу.',
 367+ 'proofreadpage_nologin' => 'Вы не ўвайшлі ў сыстэму',
 368+ 'proofreadpage_nologintext' => 'Вы павінны [[Special:UserLogin|ўвайсьці ў сыстэму]], каб зьмяняць статус праверкі старонкі.',
 369+ 'proofreadpage_notallowed' => 'Зьмена не дазволеная',
 370+ 'proofreadpage_notallowedtext' => 'Вам не дазволена зьмяняць статус праверкі гэтай старонкі.',
308371 'proofreadpage_number_expected' => 'Памылка: чакаецца лічбавае значэньне',
309372 'proofreadpage_interval_too_large' => 'Памылка: занадта вялікі інтэрвал',
310373 'proofreadpage_invalid_interval' => 'Памылка: няслушны інтэрвал',
@@ -318,6 +381,11 @@
319382 'proofreadpage_quality2_category' => 'Праблематычная',
320383 'proofreadpage_quality3_category' => 'Вычытаная',
321384 'proofreadpage_quality4_category' => 'Правераная',
 385+ 'proofreadpage_quality0_message' => 'Гэта старонка не патрабуе вычыткі',
 386+ 'proofreadpage_quality1_message' => 'Гэта старонка не была вычытаная',
 387+ 'proofreadpage_quality2_message' => 'Узьнікла праблема ў вычытцы гэтай старонкі',
 388+ 'proofreadpage_quality3_message' => 'Гэта старонка была вычытаная',
 389+ 'proofreadpage_quality4_message' => 'Гэта старонка была правераная',
322390 'proofreadpage_index_listofpages' => 'Сьпіс старонак',
323391 'proofreadpage_image_message' => 'Спасылка на старонку індэксу',
324392 'proofreadpage_page_status' => 'Статус старонкі',
@@ -330,6 +398,7 @@
331399 Выява|Выява вокладкі
332400 Старонак||20
333401 Заўвагаў||10',
 402+ 'proofreadpage_pages' => '{{PLURAL:$1|старонка|старонкі|старонак}}',
334403 );
335404
336405 /** Bulgarian (Български)
@@ -372,6 +441,8 @@
373442 'proofreadpage_index_namespace' => 'সূচী',
374443 'proofreadpage_image' => 'চিত্র',
375444 'proofreadpage_index' => 'সূচী',
 445+ 'proofreadpage_badpage' => 'ভুল বিন্যাস',
 446+ 'proofreadpage_nologin' => 'লগইন করা হয়নি',
376447 'proofreadpage_nextpage' => 'পরবর্তী পাতা',
377448 'proofreadpage_prevpage' => 'পূর্ববর্তী পাতা',
378449 'proofreadpage_header' => 'শিরোনাম (noinclude):',
@@ -405,7 +476,7 @@
406477 'proofreadpage_index' => 'Meneger',
407478 'proofreadpage_nextpage' => "Pajenn war-lerc'h",
408479 'proofreadpage_prevpage' => 'Pajenn a-raok',
409 - 'proofreadpage_quality1_category' => 'Da reizhañ',
 480+ 'proofreadpage_quality1_category' => 'Da wiriañ',
410481 'proofreadpage_quality2_category' => 'Kudennek',
411482 'proofreadpage_quality3_category' => 'Reizhet',
412483 'proofreadpage_quality4_category' => 'Gwiriekaet',
@@ -427,6 +498,7 @@
428499 * @author CERminator
429500 */
430501 $messages['bs'] = array(
 502+ 'indexpages' => 'Spisak stranica indeksa',
431503 'proofreadpage_desc' => 'Omogućuje jednostavnu usporedbu teksta sa originalnim',
432504 'proofreadpage_namespace' => 'Stranica',
433505 'proofreadpage_index_namespace' => 'Indeks',
@@ -435,6 +507,14 @@
436508 'proofreadpage_index_expected' => 'Greška: očekivan indeks',
437509 'proofreadpage_nosuch_index' => 'Greška: nema takvog indeksa',
438510 'proofreadpage_nosuch_file' => 'Greška: nema takve datoteke',
 511+ 'proofreadpage_badpage' => 'Pogrešan Format',
 512+ 'proofreadpage_badpagetext' => 'Format stranice koju pokušavate spremiti nije validan.',
 513+ 'proofreadpage_indexdupe' => 'Duplicirani link',
 514+ 'proofreadpage_indexdupetext' => 'Stranice ne mogu biti prikazane više od jednog puta na stranici indeksa.',
 515+ 'proofreadpage_nologin' => 'Niste prijavljeni',
 516+ 'proofreadpage_nologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da biste mogli mijenati status lektorisanja stranica.',
 517+ 'proofreadpage_notallowed' => 'Izmjene nisu dopuštene',
 518+ 'proofreadpage_notallowedtext' => 'Nije Vam dopušteno da mijenjate status lektorisanja ove stranice.',
439519 'proofreadpage_number_expected' => 'Greška: očekivana brojna vrijednost',
440520 'proofreadpage_interval_too_large' => 'Greška: interval je prevelik',
441521 'proofreadpage_invalid_interval' => 'Greška: nevaljan interval',
@@ -449,6 +529,11 @@
450530 'proofreadpage_quality2_category' => 'Problematično',
451531 'proofreadpage_quality3_category' => 'Provjereno',
452532 'proofreadpage_quality4_category' => 'Provjereno',
 533+ 'proofreadpage_quality0_message' => 'Ova stranica ne treba biti lektorisana',
 534+ 'proofreadpage_quality1_message' => 'Ova stranica nije bila lektorisana',
 535+ 'proofreadpage_quality2_message' => 'Dogodio se problem pri lektorisanju ove stranice',
 536+ 'proofreadpage_quality3_message' => 'Ova stranice je bila lektorisana',
 537+ 'proofreadpage_quality4_message' => 'Ova stranice je bila provjerena',
453538 'proofreadpage_index_listofpages' => 'Spisak stranica',
454539 'proofreadpage_image_message' => 'Link na stranicu indeksa',
455540 'proofreadpage_page_status' => 'Status stranice',
@@ -461,6 +546,7 @@
462547 Slika|Naslovna slika
463548 Stranica||20
464549 Napomene||10',
 550+ 'proofreadpage_pages' => '{{PLURAL:$1|stranica|stranice|stranica}}',
465551 );
466552
467553 /** Catalan (Català)
@@ -470,11 +556,26 @@
471557 * @author SMP
472558 */
473559 $messages['ca'] = array(
 560+ 'indexpages' => "Llista de pàgines d'índex",
474561 'proofreadpage_desc' => "Permetre una fàcil comparació d'un text amb l'escanejat original",
475562 'proofreadpage_namespace' => 'Pàgina',
476563 'proofreadpage_index_namespace' => 'Index',
477564 'proofreadpage_image' => 'imatge',
478565 'proofreadpage_index' => 'Índex',
 566+ 'proofreadpage_index_expected' => "Error: s'esperava un índex",
 567+ 'proofreadpage_nosuch_index' => "Error: no existeix l'índex",
 568+ 'proofreadpage_nosuch_file' => 'Error: no existeix el fitxer',
 569+ 'proofreadpage_badpage' => 'Format erroni',
 570+ 'proofreadpage_badpagetext' => 'El format de la pàgina que heu intentat desar és incorrecte.',
 571+ 'proofreadpage_indexdupe' => 'Enllaç duplicat',
 572+ 'proofreadpage_indexdupetext' => "Les pàgines no es poden llistar més d'una vegada a una pàgina d'índex.",
 573+ 'proofreadpage_nologin' => 'No heu iniciat la sessió',
 574+ 'proofreadpage_nologintext' => "Heu d'estar [[Special:UserLogin|registrat]] per a modificar l'estat de revisió de les pàgines.",
 575+ 'proofreadpage_notallowed' => 'Canvi no permès',
 576+ 'proofreadpage_notallowedtext' => "No esteu autoritzat per a canviar l'estat de revisió d'aquesta pàgina.",
 577+ 'proofreadpage_number_expected' => "Error: s'esperava un valor numèric",
 578+ 'proofreadpage_interval_too_large' => 'Error: interval massa ampli',
 579+ 'proofreadpage_invalid_interval' => 'Error: interval no vàlid',
479580 'proofreadpage_nextpage' => 'Pàgina següent',
480581 'proofreadpage_prevpage' => 'Pàgina anterior',
481582 'proofreadpage_header' => 'Capçalera (noinclude):',
@@ -486,6 +587,10 @@
487588 'proofreadpage_quality2_category' => 'Problemàtica',
488589 'proofreadpage_quality3_category' => 'Revisada',
489590 'proofreadpage_quality4_category' => 'Validada',
 591+ 'proofreadpage_quality0_message' => 'Aquesta pàgina no necessita ser revisada.',
 592+ 'proofreadpage_quality2_message' => "Hi ha un problema amb la revisió d'aquesta pàgina.",
 593+ 'proofreadpage_quality3_message' => 'Aquesta pàgina ha estat revisada.',
 594+ 'proofreadpage_quality4_message' => 'Aquesta pàgina ha estat validada',
490595 'proofreadpage_index_listofpages' => 'Llista de pàgines',
491596 'proofreadpage_image_message' => "Enllaç a la pàgina d'índex",
492597 'proofreadpage_page_status' => 'Status de la pàgina',
@@ -500,6 +605,7 @@
501606 Imatge
502607 Pàgines||20
503608 Sumari||15",
 609+ 'proofreadpage_pages' => '{{PLURAL:$1|pàgina|pàgines}}',
504610 );
505611
506612 /** Cebuano (Cebuano)
@@ -515,6 +621,7 @@
516622 * @author Mormegil
517623 */
518624 $messages['cs'] = array(
 625+ 'indexpages' => 'Seznam indexových stránek',
519626 'proofreadpage_desc' => 'Umožňuje jednoduché porovnání textu s předlohou',
520627 'proofreadpage_namespace' => 'Stránka',
521628 'proofreadpage_index_namespace' => 'Index',
@@ -523,6 +630,14 @@
524631 'proofreadpage_index_expected' => 'Chyba: očekáván index',
525632 'proofreadpage_nosuch_index' => 'Chyba: takový index neexistuje',
526633 'proofreadpage_nosuch_file' => 'Chyba: takový soubor neexistuje',
 634+ 'proofreadpage_badpage' => 'Nesprávný formát',
 635+ 'proofreadpage_badpagetext' => 'Formát stránky, kterou jste se pokusili uložit, není správný.',
 636+ 'proofreadpage_indexdupe' => 'Duplicitní odkaz',
 637+ 'proofreadpage_indexdupetext' => 'Stránky mohou být v indexu uvedeny maximálně jednou.',
 638+ 'proofreadpage_nologin' => 'Nejste přihlášeni',
 639+ 'proofreadpage_nologintext' => 'Pokud chcete změnit stav zkontrolování stránky, musíte se [[Special:UserLogin|přihlásit]].',
 640+ 'proofreadpage_notallowed' => 'Změna není povolena',
 641+ 'proofreadpage_notallowedtext' => 'Nemáte povoleno měnit stav zkontrolování této stránky.',
527642 'proofreadpage_number_expected' => 'Chyba: očekávána číselná hodnota',
528643 'proofreadpage_interval_too_large' => 'Chyba: příliš velký interval',
529644 'proofreadpage_invalid_interval' => 'Chyba: nesprávný interval',
@@ -548,6 +663,7 @@
549664 Obrázek|Obálka
550665 Stran||20
551666 Poznámky||10',
 667+ 'proofreadpage_pages' => '{{PLURAL:$1|stránka|stránky|stránek}}',
552668 );
553669
554670 /** Danish (Dansk)
@@ -562,9 +678,11 @@
563679 /** German (Deutsch)
564680 * @author Metalhead64
565681 * @author Raimond Spekking
 682+ * @author Tbleher
566683 * @author ThomasV
567684 */
568685 $messages['de'] = array(
 686+ 'indexpages' => 'Liste von Indexseiten',
569687 'proofreadpage_desc' => 'Ermöglicht das bequeme Vergleichen von Text mit dem Originalscan',
570688 'proofreadpage_namespace' => 'Seite',
571689 'proofreadpage_index_namespace' => 'Index',
@@ -573,6 +691,14 @@
574692 'proofreadpage_index_expected' => 'Fehler: Index erwartet',
575693 'proofreadpage_nosuch_index' => 'Fehler: Kein entsprechender Index',
576694 'proofreadpage_nosuch_file' => 'Fehler: Keine entsprechende Datei',
 695+ 'proofreadpage_badpage' => 'Falsches Format',
 696+ 'proofreadpage_badpagetext' => 'Das Format der Seite, die du versuchst zu speichern, ist falsch.',
 697+ 'proofreadpage_indexdupe' => 'Doppelter Link',
 698+ 'proofreadpage_indexdupetext' => 'Seiten können nicht mehr als einmal auf einer Indexseite aufgelistet werden.',
 699+ 'proofreadpage_nologin' => 'Nicht angemeldet',
 700+ 'proofreadpage_nologintext' => 'Du musst [[Special:UserLogin|angemeldet sein]], um den Korrekturlesungsstatus von Seiten zu ändern.',
 701+ 'proofreadpage_notallowed' => 'Änderung nicht erlaubt',
 702+ 'proofreadpage_notallowedtext' => 'Du bist nicht berechtigt, den Korrekturlesungsstatus dieser Seite zu ändern.',
577703 'proofreadpage_number_expected' => 'Fehler: Numerischer Wert erwartet',
578704 'proofreadpage_interval_too_large' => 'Fehler: Intervall zu groß',
579705 'proofreadpage_invalid_interval' => 'Fehler: ungültiges Intervall',
@@ -587,6 +713,11 @@
588714 'proofreadpage_quality2_category' => 'Korrekturproblem',
589715 'proofreadpage_quality3_category' => 'Korrigiert',
590716 'proofreadpage_quality4_category' => 'Fertig',
 717+ 'proofreadpage_quality0_message' => 'Diese Seite muss nicht korrekturgelesen werden.',
 718+ 'proofreadpage_quality1_message' => 'Diese Seite wurde noch nicht korrekturgelesen.',
 719+ 'proofreadpage_quality2_message' => 'Dieser Text wurde korrekturgelesen, enthält aber noch Problemfälle. Nähere Informationen zu den Problemen finden sich möglicherweise auf der Diskussionsseite.',
 720+ 'proofreadpage_quality3_message' => 'Dieser Text wurde anhand der angegebenen Quelle einmal korrekturgelesen. Die Schreibweise sollte dem Originaltext folgen. Es ist noch ein weiterer Korrekturdurchgang nötig.',
 721+ 'proofreadpage_quality4_message' => 'Fertig. Dieser Text wurde zweimal anhand der Quelle korrekturgelesen. Die Schreibweise folgt dem Originaltext.',
591722 'proofreadpage_index_listofpages' => 'Seitenliste',
592723 'proofreadpage_image_message' => 'Link zur Indexseite',
593724 'proofreadpage_page_status' => 'Seitenstatus',
@@ -599,12 +730,23 @@
600731 Bild|Titelbild
601732 Seiten||20
602733 Bemerkungen||10',
 734+ 'proofreadpage_pages' => '{{PLURAL:$1|Seite|Seiten}}',
603735 );
604736
 737+/** German (formal address) (Deutsch (Sie-Form))
 738+ * @author Imre
 739+ */
 740+$messages['de-formal'] = array(
 741+ 'proofreadpage_badpagetext' => 'Das Format der Seite, die Sie versuchen zu speichern, ist falsch.',
 742+ 'proofreadpage_nologintext' => 'Sie müssen [[Special:UserLogin|angemeldet sein]], um den Korrekturlesungsstatus von Seiten zu ändern.',
 743+ 'proofreadpage_notallowedtext' => 'Sie sind nicht berechtigt, den Korrekturlesungsstatus dieser Seite zu ändern.',
 744+);
 745+
605746 /** Lower Sorbian (Dolnoserbski)
606747 * @author Michawiki
607748 */
608749 $messages['dsb'] = array(
 750+ 'indexpages' => 'Lisćina indeksowych bokow',
609751 'proofreadpage_desc' => 'Zmóžnja lažke pśirownowanje teksta z originalnym skanom',
610752 'proofreadpage_namespace' => 'Bok',
611753 'proofreadpage_index_namespace' => 'Indeks',
@@ -613,6 +755,14 @@
614756 'proofreadpage_index_expected' => 'Zmólka: indeks wócakowany',
615757 'proofreadpage_nosuch_index' => 'Zmólka: taki indeks njejo',
616758 'proofreadpage_nosuch_file' => 'Zmólka: taka dataja njejo',
 759+ 'proofreadpage_badpage' => 'Wopacny format',
 760+ 'proofreadpage_badpagetext' => 'Format boka, kótaryž sy wopytał składowaś, jo wopaki.',
 761+ 'proofreadpage_indexdupe' => 'Dwójny wótkaz',
 762+ 'proofreadpage_indexdupetext' => 'Boki njedaju se wěcej ako jaden raz na indeksowem boku nalicyś.',
 763+ 'proofreadpage_nologin' => 'Njejsy se pśizjawił',
 764+ 'proofreadpage_nologintext' => 'Musyš [[Special:UserLogin|pśizjawjony]] byś, aby status kontrolnego cytanja bokow změnił.',
 765+ 'proofreadpage_notallowed' => 'Změna njedowólona',
 766+ 'proofreadpage_notallowedtext' => 'Njesmějoš status kontrolnego cytanja toś togo boka změniś.',
617767 'proofreadpage_number_expected' => 'Zmólka: numeriska gódnota wócakowana',
618768 'proofreadpage_interval_too_large' => 'Zmólka: interwal pśewjeliki',
619769 'proofreadpage_invalid_interval' => 'Zmólka: njepłaśiwy interwal',
@@ -627,6 +777,11 @@
628778 'proofreadpage_quality2_category' => 'Problematiski',
629779 'proofreadpage_quality3_category' => 'Pśekontrolěrowany',
630780 'proofreadpage_quality4_category' => 'Wobwěsćony',
 781+ 'proofreadpage_quality0_message' => 'Toś ten bok jo se skorigěrował',
 782+ 'proofreadpage_quality1_message' => 'Toś ten bok njejo se skorigěrował',
 783+ 'proofreadpage_quality2_message' => 'Pśi korigěrowanju toś togo boka jo se problem nastał',
 784+ 'proofreadpage_quality3_message' => 'Toś ten bok jo se skorigěrował',
 785+ 'proofreadpage_quality4_message' => 'Toś ten bok jo se pśekontrolěrował',
631786 'proofreadpage_index_listofpages' => 'Lisćina bokow',
632787 'proofreadpage_image_message' => 'Wótkaz k indeksowemu bokoju',
633788 'proofreadpage_page_status' => 'Bokowy status',
@@ -639,6 +794,7 @@
640795 Wobraz|Titelowy wobraz
641796 Boki||20
642797 Pśispomnjeśa||10',
 798+ 'proofreadpage_pages' => '{{PLURAL:$1|bok|boka|boki|bokow}}',
643799 );
644800
645801 /** Ewe (Eʋegbe) */
@@ -655,13 +811,26 @@
656812 * @author ZaDiak
657813 */
658814 $messages['el'] = array(
 815+ 'indexpages' => 'Κατάλογος σελίδων ευρετηρίου',
659816 'proofreadpage_desc' => 'Επίτρεψε εύκολη σύγκριση κειμένου με την πρωτότυπη σάρωση',
660817 'proofreadpage_namespace' => 'Σελίδα',
661818 'proofreadpage_index_namespace' => 'Ευρετήριο',
662819 'proofreadpage_image' => 'εικόνα',
663820 'proofreadpage_index' => 'Ευρετήριο',
 821+ 'proofreadpage_index_expected' => 'Σφάλμα: αναμενόταν δείκτης',
 822+ 'proofreadpage_nosuch_index' => 'Σφάλμα: δεν υπάρχει αυτός ο δείκτης',
664823 'proofreadpage_nosuch_file' => 'Σφάλμα: δεν υπάρχει αυτό το αρχείο',
 824+ 'proofreadpage_badpage' => 'Λάθος Φορμά',
 825+ 'proofreadpage_badpagetext' => 'Η μορφοποίηση της σελίδας που αποπειραθήκατε να αποθηκεύσετε είναι λανθασμένη.',
 826+ 'proofreadpage_indexdupe' => 'Διπλότυπος σύνδεσμος',
 827+ 'proofreadpage_indexdupetext' => 'Οι σελίδες δεν μπορούν περιλαμβάνονται στο ευρετήριο περισσότερες από μία φορές.',
 828+ 'proofreadpage_nologin' => 'Δεν έχετε συνδεθεί',
 829+ 'proofreadpage_nologintext' => 'Πρέπει να είστε [[Special:UserLogin|συνδεδεμένος]] για να αλλάξετε την κατάσταση επαλήθευσης σελίδων.',
 830+ 'proofreadpage_notallowed' => 'Αλλαγή δεν επιτρέπεται',
 831+ 'proofreadpage_notallowedtext' => 'Δεν επιτρέπεται να αλλάξετε την κατάσταση διόρθωσης κειμένου αυτής της σελίδας.',
 832+ 'proofreadpage_number_expected' => 'Σφάλμα: αναμενόταν αριθμητικό μέγεθος',
665833 'proofreadpage_interval_too_large' => 'Σφάλμα: υπερβολικά μεγάλο διάστημα',
 834+ 'proofreadpage_invalid_interval' => 'Σφάλμα: άκυρο διάστημα',
666835 'proofreadpage_nextpage' => 'Επόμενη σελίδα',
667836 'proofreadpage_prevpage' => 'Προηγούμενη σελίδα',
668837 'proofreadpage_header' => 'Επικεφαλίδα (noinclude):',
@@ -673,6 +842,11 @@
674843 'proofreadpage_quality2_category' => 'Προβληματική',
675844 'proofreadpage_quality3_category' => 'Έχει γίνει proofreading',
676845 'proofreadpage_quality4_category' => 'Εγκρίθηκε',
 846+ 'proofreadpage_quality0_message' => 'Αυτή η σελίδα δεν χρειάζεται να ελεγχθεί για πιθανά λάθη',
 847+ 'proofreadpage_quality1_message' => 'Αυτή η σελίδα δεν έχει ελεγχθεί ακόμη για πιθανά λάθη',
 848+ 'proofreadpage_quality2_message' => 'Υπήρξε ένα πρόβλημα στον έλεγχο για πιθανά λάθη αυτής της σελίδας',
 849+ 'proofreadpage_quality3_message' => 'Η σελίδα αυτή έχει ελεγθεί για πιθανά λάθη',
 850+ 'proofreadpage_quality4_message' => 'Αυτή η σελίδα έχει εγκριθεί',
677851 'proofreadpage_index_listofpages' => 'Κατάλογος σελίδων',
678852 'proofreadpage_image_message' => 'Σύνδεσμος προς τη σελίδα ευρετηρίου',
679853 'proofreadpage_page_status' => 'Κατάσταση σελίδας',
@@ -692,12 +866,14 @@
693867 Σελίδες||20
694868
695869 Σχόλια||10',
 870+ 'proofreadpage_pages' => '{{PLURAL:$1|σελίδα|σελίδες}}',
696871 );
697872
698873 /** Esperanto (Esperanto)
699874 * @author Yekrats
700875 */
701876 $messages['eo'] = array(
 877+ 'indexpages' => 'Listo de indeksaj paĝoj',
702878 'proofreadpage_desc' => 'Permesas facilan komparon de teksto al la originala skanitaĵo.',
703879 'proofreadpage_namespace' => 'Paĝo',
704880 'proofreadpage_index_namespace' => 'Indekso',
@@ -705,8 +881,17 @@
706882 'proofreadpage_index' => 'Indekso',
707883 'proofreadpage_index_expected' => 'Eraro: indekso atentita',
708884 'proofreadpage_nosuch_index' => 'Eraro: nenia indekso',
 885+ 'proofreadpage_nosuch_file' => 'Eraro: nenia dosiero',
 886+ 'proofreadpage_badpage' => 'Malbona Formato',
 887+ 'proofreadpage_badpagetext' => 'La formato de la paĝo kiun vi provis konservi estas malĝusta.',
 888+ 'proofreadpage_indexdupe' => 'Duplikata ligilo',
 889+ 'proofreadpage_nologin' => 'Ne ensalutita',
 890+ 'proofreadpage_nologintext' => 'Vi devas [[Special:UserLogin|ensaluti]] por modifi la provlegan statuson de paĝojn.',
 891+ 'proofreadpage_notallowed' => 'Ŝanĝo ne permesiĝis',
 892+ 'proofreadpage_notallowedtext' => 'Vi ne estas permesata ŝanĝi la pruvlegadan statuson de ĉi tiu paĝo.',
709893 'proofreadpage_number_expected' => 'Eraro: numera valuto atentita',
710894 'proofreadpage_interval_too_large' => 'Eraro: intervalo tro granda',
 895+ 'proofreadpage_invalid_interval' => 'Eraro: malvalida intervalo',
711896 'proofreadpage_nextpage' => 'Sekva paĝo',
712897 'proofreadpage_prevpage' => 'Antaŭa paĝo',
713898 'proofreadpage_header' => 'Supra titolo (ne inkluzivu):',
@@ -718,6 +903,11 @@
719904 'proofreadpage_quality2_category' => 'Problema',
720905 'proofreadpage_quality3_category' => 'Provlegita',
721906 'proofreadpage_quality4_category' => 'Validigita',
 907+ 'proofreadpage_quality0_message' => 'La paĝo ne bezonas esti provlegata',
 908+ 'proofreadpage_quality1_message' => 'Ĉi tiu paĝo ne estis pruvlegita',
 909+ 'proofreadpage_quality2_message' => 'Estis problemo pruvlegante ĉi tiun paĝon',
 910+ 'proofreadpage_quality3_message' => 'Ĉi tiu paĝo estis pruvlegita',
 911+ 'proofreadpage_quality4_message' => 'Ĉi tiu paĝo estis validigita',
722912 'proofreadpage_index_listofpages' => 'Listo de paĝoj',
723913 'proofreadpage_image_message' => 'Ligilo al la indekspaĝo',
724914 'proofreadpage_page_status' => 'Statuso de paĝo',
@@ -730,20 +920,38 @@
731921 Bildo|Bildo de kovrilo
732922 Paĝoj||20
733923 Rimarkoj||10',
 924+ 'proofreadpage_pages' => '{{PLURAL:$1|paĝo|paĝoj}}',
734925 );
735926
736927 /** Spanish (Español)
737928 * @author Aleator
 929+ * @author Barcex
738930 * @author Crazymadlover
 931+ * @author Locos epraix
739932 * @author Remember the dot
740933 * @author Sanbec
741934 */
742935 $messages['es'] = array(
 936+ 'indexpages' => 'Lista de páginas indexadas',
743937 'proofreadpage_desc' => 'Permitir una fácil comparación de un texto con el escaneado original',
744938 'proofreadpage_namespace' => 'Página',
745939 'proofreadpage_index_namespace' => 'Índice',
746940 'proofreadpage_image' => 'imagen',
747941 'proofreadpage_index' => 'Índice',
 942+ 'proofreadpage_index_expected' => 'Error: se esperaba un índice',
 943+ 'proofreadpage_nosuch_index' => 'Error: no hay tal índice',
 944+ 'proofreadpage_nosuch_file' => 'Error: no existe el archivo',
 945+ 'proofreadpage_badpage' => 'Formato erróneo',
 946+ 'proofreadpage_badpagetext' => 'El formato de la página que intestaste grabar es incorrecto.',
 947+ 'proofreadpage_indexdupe' => 'Vínculo duplicado',
 948+ 'proofreadpage_indexdupetext' => 'Las páginas no pueden ser listadas más de una vez en una página índice.',
 949+ 'proofreadpage_nologin' => 'No ha iniciado sesión',
 950+ 'proofreadpage_nologintext' => 'Debes haber [[Special:UserLogin|iniciado sesión]]para modificar el status de corrección de las páginas.',
 951+ 'proofreadpage_notallowed' => 'Cambio no permitido',
 952+ 'proofreadpage_notallowedtext' => 'No estás permitido de cambiar el estatus corregido de esta página.',
 953+ 'proofreadpage_number_expected' => 'Error: se esperaba un valor numérico',
 954+ 'proofreadpage_interval_too_large' => 'Error: intervalo demasiado grande',
 955+ 'proofreadpage_invalid_interval' => 'Error: intervalo inválido',
748956 'proofreadpage_nextpage' => 'Página siguiente',
749957 'proofreadpage_prevpage' => 'Página anterior',
750958 'proofreadpage_header' => 'Encabezado (noinclude):',
@@ -755,6 +963,11 @@
756964 'proofreadpage_quality2_category' => 'Problemática',
757965 'proofreadpage_quality3_category' => 'Corregido',
758966 'proofreadpage_quality4_category' => 'Validada',
 967+ 'proofreadpage_quality0_message' => 'Esta página no necesita ser corregida',
 968+ 'proofreadpage_quality1_message' => 'Esta página no ha sido corregida',
 969+ 'proofreadpage_quality2_message' => 'Hubo un problema cuando se corregía esta página',
 970+ 'proofreadpage_quality3_message' => 'Esta página ha sido corregida',
 971+ 'proofreadpage_quality4_message' => 'Esta página ha sido validada',
759972 'proofreadpage_index_listofpages' => 'Lista de páginas',
760973 'proofreadpage_image_message' => 'Enlace a la página de índice',
761974 'proofreadpage_page_status' => 'Estatus de página',
@@ -767,8 +980,39 @@
768981 Imagen|Imagen de cubierta
769982 Páginas||20
770983 Comentarios||10',
 984+ 'proofreadpage_pages' => '{{PLURAL:$1|página|páginas}}',
771985 );
772986
 987+/** Estonian (Eesti)
 988+ * @author Avjoska
 989+ */
 990+$messages['et'] = array(
 991+ 'proofreadpage_namespace' => 'Lehekülg',
 992+ 'proofreadpage_image' => 'pilt',
 993+ 'proofreadpage_nologin' => 'Ei ole sisse logitud',
 994+ 'proofreadpage_notallowed' => 'Muudatus ei ole lubatud',
 995+ 'proofreadpage_nextpage' => 'Järgmine lehekülg',
 996+ 'proofreadpage_prevpage' => 'Eelmine lehekülg',
 997+ 'proofreadpage_quality0_category' => 'Ilma tekstita',
 998+ 'proofreadpage_quality1_category' => 'Korrigeerimata',
 999+ 'proofreadpage_quality2_category' => 'Problemaatiline',
 1000+ 'proofreadpage_quality3_category' => 'Korrigeeritud',
 1001+ 'proofreadpage_quality0_message' => 'See lehekülg ei vaja korrigeerimist',
 1002+ 'proofreadpage_quality1_message' => 'Seda lehekülge ei ole korrigeeritud',
 1003+ 'proofreadpage_quality3_message' => 'See lehekülg on korrigeeritud',
 1004+ 'proofreadpage_index_listofpages' => 'Lehekülgede loend',
 1005+ 'proofreadpage_page_status' => 'Lehekülje staatus',
 1006+ 'proofreadpage_js_attributes' => 'Autor Pealkiri Aasta Väljaandja',
 1007+ 'proofreadpage_index_attributes' => 'Autor
 1008+Pealkiri
 1009+Aasta|Väljaandmise aasta
 1010+Väljaandja
 1011+Päritolu
 1012+Pilt|Kaanepilt
 1013+Lehekülgi||20
 1014+Märkused||10',
 1015+);
 1016+
7731017 /** Basque (Euskara)
7741018 * @author An13sa
7751019 */
@@ -777,6 +1021,7 @@
7781022 'proofreadpage_index_namespace' => 'Aurkibidea',
7791023 'proofreadpage_image' => 'irudi',
7801024 'proofreadpage_index' => 'Aurkibidea',
 1025+ 'proofreadpage_badpage' => 'Formatu Okerra',
7811026 'proofreadpage_nextpage' => 'Hurrengo orria',
7821027 'proofreadpage_prevpage' => 'Aurreko orria',
7831028 'proofreadpage_index_listofpages' => 'Orri zerrenda',
@@ -836,11 +1081,26 @@
8371082 * @author Str4nd
8381083 */
8391084 $messages['fi'] = array(
 1085+ 'indexpages' => 'Luettelo hakemistosivuista',
8401086 'proofreadpage_desc' => 'Mahdollistaa helpon vertailun tekstin ja alkuperäisen skannauksen välillä.',
8411087 'proofreadpage_namespace' => 'Sivu',
8421088 'proofreadpage_index_namespace' => 'Hakemisto',
8431089 'proofreadpage_image' => 'kuva',
8441090 'proofreadpage_index' => 'Hakemisto',
 1091+ 'proofreadpage_index_expected' => 'Virhe: täsmennysosiota odotetaan',
 1092+ 'proofreadpage_nosuch_index' => 'Virhe: Kyseistä indeksiä ei ole',
 1093+ 'proofreadpage_nosuch_file' => 'Virhe: tiedostoa ei löydy',
 1094+ 'proofreadpage_badpage' => 'Väärä muoto',
 1095+ 'proofreadpage_badpagetext' => 'Sivu, jota yritit tallentaa on virheellisessä muodossa.',
 1096+ 'proofreadpage_indexdupe' => 'Kaksoiskappalelinkki',
 1097+ 'proofreadpage_indexdupetext' => 'Sivuja ei voida luetella useammin kuin kerran hakemistosivulla.',
 1098+ 'proofreadpage_nologin' => 'Et ole kirjautunut sisään',
 1099+ 'proofreadpage_nologintext' => 'Sinun täytyy olla [[Special:UserLogin|kirjautunut sisään]] muuttaaksesi sivun oikolukutilaa.',
 1100+ 'proofreadpage_notallowed' => 'Muutos ei ole sallittu',
 1101+ 'proofreadpage_notallowedtext' => 'Sinulla ei ole oikeuksia muuttaa tämän sivun oikoluku-tilaa.',
 1102+ 'proofreadpage_number_expected' => 'Virhe: odotettiin numeerista arvoa',
 1103+ 'proofreadpage_interval_too_large' => 'Virhe: Väli liian suuri',
 1104+ 'proofreadpage_invalid_interval' => 'Virhe: Väli ei toimi',
8451105 'proofreadpage_nextpage' => 'Seuraava sivu',
8461106 'proofreadpage_prevpage' => 'Edellinen sivu',
8471107 'proofreadpage_header' => 'Ylätunniste (ei sisällytetä):',
@@ -852,6 +1112,11 @@
8531113 'proofreadpage_quality2_category' => 'Ongelmallinen',
8541114 'proofreadpage_quality3_category' => 'Korjausluettu',
8551115 'proofreadpage_quality4_category' => 'Hyväksytty',
 1116+ 'proofreadpage_quality0_message' => 'Tätä sivua ei tarvitse oikolukea',
 1117+ 'proofreadpage_quality1_message' => 'Tätä sivua ei ole oikoluettu',
 1118+ 'proofreadpage_quality2_message' => 'Tämän sivun oikoluvussa oli ongelmia',
 1119+ 'proofreadpage_quality3_message' => 'Tämä sivu on oikoluettu',
 1120+ 'proofreadpage_quality4_message' => 'Tämä sivu on vahvistettu',
8561121 'proofreadpage_index_listofpages' => 'Sivuluettelo',
8571122 'proofreadpage_image_message' => 'Linkki hakemistosivuun',
8581123 'proofreadpage_page_status' => 'Sivun tila',
@@ -864,9 +1129,11 @@
8651130 Kuva|Kansikuva
8661131 Sivuja||20
8671132 Huomautuksia||10',
 1133+ 'proofreadpage_pages' => '{{PLURAL:$1|sivu|sivua}}',
8681134 );
8691135
8701136 /** French (Français)
 1137+ * @author Crochet.david
8711138 * @author Dereckson
8721139 * @author Grondin
8731140 * @author IAlex
@@ -874,6 +1141,7 @@
8751142 * @author Verdy p
8761143 */
8771144 $messages['fr'] = array(
 1145+ 'indexpages' => "Liste des pages d'index",
8781146 'proofreadpage_desc' => 'Permet une comparaison facile entre le texte et sa numérisation originale',
8791147 'proofreadpage_namespace' => 'Page',
8801148 'proofreadpage_index_namespace' => 'Index',
@@ -882,6 +1150,14 @@
8831151 'proofreadpage_index_expected' => 'Erreur : un index est attendu',
8841152 'proofreadpage_nosuch_index' => "Erreur : l'index n'a pas été trouvé",
8851153 'proofreadpage_nosuch_file' => "Erreur : le fichier n'a pas été trouvé",
 1154+ 'proofreadpage_badpage' => 'Mauvais format',
 1155+ 'proofreadpage_badpagetext' => 'Le format de la page que vous essayez de publier est incorrect.',
 1156+ 'proofreadpage_indexdupe' => 'Lien en double',
 1157+ 'proofreadpage_indexdupetext' => "Les pages ne peuvent pas être listées plus d'une fois sur une page d'index.",
 1158+ 'proofreadpage_nologin' => 'Non connecté',
 1159+ 'proofreadpage_nologintext' => 'Vous devez être [[Special:UserLogin|connecté]] pour modifier le statut de correction des pages.',
 1160+ 'proofreadpage_notallowed' => 'Modification non autorisée',
 1161+ 'proofreadpage_notallowedtext' => "Vous n'êtes pas autorisé à modifier le statut de correction de cette page.",
8861162 'proofreadpage_number_expected' => 'Erreur : une valeur numérique est attendue',
8871163 'proofreadpage_interval_too_large' => 'Erreur : intervalle trop grand',
8881164 'proofreadpage_invalid_interval' => 'Erreur : intervalle invalide',
@@ -896,6 +1172,11 @@
8971173 'proofreadpage_quality2_category' => 'Problématique',
8981174 'proofreadpage_quality3_category' => 'Corrigée',
8991175 'proofreadpage_quality4_category' => 'Validée',
 1176+ 'proofreadpage_quality0_message' => 'Cette page n’est pas destinée à être corrigée.',
 1177+ 'proofreadpage_quality1_message' => 'Cette page n’a pas encore été corrigée.',
 1178+ 'proofreadpage_quality2_message' => 'Cette page n’a pas pu être corrigée, à cause d’un problème décrit en page de discussion.',
 1179+ 'proofreadpage_quality3_message' => 'Cette page a été corrigée et est conforme au fac-similé.',
 1180+ 'proofreadpage_quality4_message' => 'Cette page a été validée par deux contributeurs.',
9001181 'proofreadpage_index_listofpages' => 'Liste des pages',
9011182 'proofreadpage_image_message' => 'Lien vers la page d’index',
9021183 'proofreadpage_page_status' => 'État de la page',
@@ -908,6 +1189,7 @@
9091190 Image|Image en couverture
9101191 Pages||20
9111192 Remarques||10',
 1193+ 'proofreadpage_pages' => '{{PLURAL:$1|page|pages}}',
9121194 );
9131195
9141196 /** Franco-Provençal (Arpetan)
@@ -985,6 +1267,7 @@
9861268 * @author Xosé
9871269 */
9881270 $messages['gl'] = array(
 1271+ 'indexpages' => 'Lista de páxinas índice',
9891272 'proofreadpage_desc' => 'Permite a comparación sinxela do texto coa dixitalización orixinal',
9901273 'proofreadpage_namespace' => 'Páxina',
9911274 'proofreadpage_index_namespace' => 'Índice',
@@ -993,6 +1276,14 @@
9941277 'proofreadpage_index_expected' => 'Erro: agardábase un índice',
9951278 'proofreadpage_nosuch_index' => 'Erro: non existe tal índice',
9961279 'proofreadpage_nosuch_file' => 'Erro: non existe tal ficheiro',
 1280+ 'proofreadpage_badpage' => 'Formato incorrecto',
 1281+ 'proofreadpage_badpagetext' => 'O formato da páxina que intentou gardar é incorrecto.',
 1282+ 'proofreadpage_indexdupe' => 'Ligazón duplicada',
 1283+ 'proofreadpage_indexdupetext' => 'Non se poden listar as páxinas máis dunha vez nunha páxina índice.',
 1284+ 'proofreadpage_nologin' => 'Non accedeu ao sistema',
 1285+ 'proofreadpage_nologintext' => 'Debe [[Special:UserLogin|acceder ao sistema]] para modificar o estado de corrección das páxinas.',
 1286+ 'proofreadpage_notallowed' => 'Cambio non autorizado',
 1287+ 'proofreadpage_notallowedtext' => 'Non ten os permisos necesarios para cambiar o estado de corrección desta páxina.',
9971288 'proofreadpage_number_expected' => 'Erro: agardábase un valor numérico',
9981289 'proofreadpage_interval_too_large' => 'Erro: intervalo moi grande',
9991290 'proofreadpage_invalid_interval' => 'Erro: intervalo inválido',
@@ -1003,12 +1294,17 @@
10041295 'proofreadpage_footer' => 'Pé de páxina (noinclude):',
10051296 'proofreadpage_toggleheaders' => 'alternar a visibilidade das seccións noinclude',
10061297 'proofreadpage_quality0_category' => 'Sen texto',
1007 - 'proofreadpage_quality1_category' => 'Non corrixir',
 1298+ 'proofreadpage_quality1_category' => 'Non corrixido',
10081299 'proofreadpage_quality2_category' => 'Problemático',
1009 - 'proofreadpage_quality3_category' => 'Corrixir',
 1300+ 'proofreadpage_quality3_category' => 'Corrixido',
10101301 'proofreadpage_quality4_category' => 'Validado',
 1302+ 'proofreadpage_quality0_message' => 'Esta páxina non necesita corrección',
 1303+ 'proofreadpage_quality1_message' => 'Esta páxina non foi corrixida',
 1304+ 'proofreadpage_quality2_message' => 'Houbo un problema ao corrixir esta páxina',
 1305+ 'proofreadpage_quality3_message' => 'Esta páxina foi corrixida',
 1306+ 'proofreadpage_quality4_message' => 'Esta páxina foi validada',
10111307 'proofreadpage_index_listofpages' => 'Lista de páxinas',
1012 - 'proofreadpage_image_message' => 'Ligazón á páxina do índice',
 1308+ 'proofreadpage_image_message' => 'Ligazón á páxina índice',
10131309 'proofreadpage_page_status' => 'Estado da páxina',
10141310 'proofreadpage_js_attributes' => 'Autor Título Ano Editor',
10151311 'proofreadpage_index_attributes' => 'Autor
@@ -1019,6 +1315,7 @@
10201316 Imaxe|Imaxe da cuberta
10211317 Páxinas||20
10221318 Comentarios||10',
 1319+ 'proofreadpage_pages' => '{{PLURAL:$1|páxina|páxinas}}',
10231320 );
10241321
10251322 /** Ancient Greek (Ἀρχαία ἑλληνικὴ)
@@ -1043,6 +1340,7 @@
10441341 * @author J. 'mach' wust
10451342 */
10461343 $messages['gsw'] = array(
 1344+ 'indexpages' => 'Lischte vu Indexsyte',
10471345 'proofreadpage_desc' => 'Macht e eifache Verglyych vu Täxt mit em Originalscan megli',
10481346 'proofreadpage_namespace' => 'Syte',
10491347 'proofreadpage_index_namespace' => 'Index',
@@ -1051,6 +1349,14 @@
10521350 'proofreadpage_index_expected' => 'Fähler: Index erwartet',
10531351 'proofreadpage_nosuch_index' => 'Fähler: Kei sonige Index',
10541352 'proofreadpage_nosuch_file' => 'Fähler: Kei sonigi Datei',
 1353+ 'proofreadpage_badpage' => 'Falsch Format',
 1354+ 'proofreadpage_badpagetext' => 'S Format vu dr Syte, wu du versuecht hesch z spychere, isch falsch.',
 1355+ 'proofreadpage_indexdupe' => 'Gleich (Link) dupliziere',
 1356+ 'proofreadpage_indexdupetext' => 'Syte chenne nit meh wie eimol ufglischtet wäre uf ere Indexsyte',
 1357+ 'proofreadpage_nologin' => 'Nit aagmäldet',
 1358+ 'proofreadpage_nologintext' => 'Du muesch [[Special:UserLogin|aagmäldet syy]] go dr Korrekturläsigs-Status vu Syte ändere.',
 1359+ 'proofreadpage_notallowed' => 'Änderig nit erlaubt',
 1360+ 'proofreadpage_notallowedtext' => 'Du derfsch dr Korrektur-Läsigs-Status vu däre Syte nit ändere.',
10551361 'proofreadpage_number_expected' => 'Fähler: Numerische Wärt erwartet',
10561362 'proofreadpage_interval_too_large' => 'Fähler: Intervall z groß',
10571363 'proofreadpage_invalid_interval' => 'Fähler: nit giltig Intervall',
@@ -1065,6 +1371,11 @@
10661372 'proofreadpage_quality2_category' => 'Korrekturprobläm',
10671373 'proofreadpage_quality3_category' => 'Korrigiert',
10681374 'proofreadpage_quality4_category' => 'Fertig',
 1375+ 'proofreadpage_quality0_message' => 'Die Syte brucht nit Korrektur gläse wäre.',
 1376+ 'proofreadpage_quality1_message' => 'Die Syte isch nit Korrektur gläse wore',
 1377+ 'proofreadpage_quality2_message' => 'S het e Probläm gee bim Korrektur läse vu däre Syte',
 1378+ 'proofreadpage_quality3_message' => 'Die Syte isch Korrektur gläse wore',
 1379+ 'proofreadpage_quality4_message' => 'Die Syte isch validiert wore',
10691380 'proofreadpage_index_listofpages' => 'Sytelischt',
10701381 'proofreadpage_image_message' => 'Gleich zue dr Indexsyte',
10711382 'proofreadpage_page_status' => 'Sytestatus',
@@ -1077,6 +1388,7 @@
10781389 Bild|Titelbild
10791390 Syte||20
10801391 Aamerkige||10',
 1392+ 'proofreadpage_pages' => '{{PLURAL:$1|Syte|Syte}}',
10811393 );
10821394
10831395 /** Manx (Gaelg)
@@ -1101,9 +1413,11 @@
11021414
11031415 /** Hebrew (עברית)
11041416 * @author Rotem Liss
 1417+ * @author Rotemliss
11051418 * @author YaronSh
11061419 */
11071420 $messages['he'] = array(
 1421+ 'indexpages' => 'רשימת דפי אינדקס',
11081422 'proofreadpage_desc' => 'השוואה קלה של טקסט לסריקה המקורית שלו',
11091423 'proofreadpage_namespace' => 'דף',
11101424 'proofreadpage_index_namespace' => 'אינדקס',
@@ -1112,6 +1426,14 @@
11131427 'proofreadpage_index_expected' => 'שגיאה: נדרש אינדקס',
11141428 'proofreadpage_nosuch_index' => 'שגיאה: אין אינדקס כזה',
11151429 'proofreadpage_nosuch_file' => 'שגיאה: אין קובץ כזה',
 1430+ 'proofreadpage_badpage' => 'מבנה שגוי',
 1431+ 'proofreadpage_badpagetext' => 'מבנה הדף אותו ניסיתם לשמור אינו נכון.',
 1432+ 'proofreadpage_indexdupe' => 'קישור כפול',
 1433+ 'proofreadpage_indexdupetext' => 'לא ניתן להציג את הדפים יותר מפעם אחת בדף אינדקס.',
 1434+ 'proofreadpage_nologin' => 'לא נכנסתם לאתר',
 1435+ 'proofreadpage_nologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי לשנות את מצב ההגהה של דפים.',
 1436+ 'proofreadpage_notallowed' => 'לא ניתן לבצע השינוי',
 1437+ 'proofreadpage_notallowedtext' => 'אינכם מורשים לשנות את מצב ההגהה של דף זה.',
11161438 'proofreadpage_number_expected' => 'שגיאה: נדרש ערך מספרי',
11171439 'proofreadpage_interval_too_large' => 'שגיאה: המרווח גדול מדי',
11181440 'proofreadpage_invalid_interval' => 'שגיאה: מרווח בלתי תקין',
@@ -1126,6 +1448,11 @@
11271449 'proofreadpage_quality2_category' => 'בעייתי',
11281450 'proofreadpage_quality3_category' => 'בוצעה הגהה',
11291451 'proofreadpage_quality4_category' => 'מאומת',
 1452+ 'proofreadpage_quality0_message' => 'לדף זה לא נדרשת בדיקת הגהה',
 1453+ 'proofreadpage_quality1_message' => 'דף זה לא עבר בדיקת הגהה',
 1454+ 'proofreadpage_quality2_message' => 'הייתה בעיה בעת ביצוע בדיקת הגהה לדף זה',
 1455+ 'proofreadpage_quality3_message' => 'דף זה עבר הגהה',
 1456+ 'proofreadpage_quality4_message' => 'דף זה עבר אימות',
11301457 'proofreadpage_index_listofpages' => 'רשימת דפים',
11311458 'proofreadpage_image_message' => 'קישור לדף האינדקס',
11321459 'proofreadpage_page_status' => 'מצב הדף',
@@ -1138,6 +1465,7 @@
11391466 תמונה|תמונת עטיפה
11401467 דפים||20
11411468 הערות||10',
 1469+ 'proofreadpage_pages' => '{{PLURAL:$1|דף|דפים}}',
11421470 );
11431471
11441472 /** Hindi (हिन्दी)
@@ -1177,25 +1505,47 @@
11781506 * @author Dalibor Bosits
11791507 * @author Dnik
11801508 * @author SpeedyGonsales
 1509+ * @author Suradnik13
11811510 */
11821511 $messages['hr'] = array(
 1512+ 'indexpages' => 'Popis sadržaja stranica',
11831513 'proofreadpage_desc' => 'Omogućava jednostavnu usporedbu teksta i izvornog skena',
11841514 'proofreadpage_namespace' => 'Stranica',
1185 - 'proofreadpage_index_namespace' => 'Indeks',
 1515+ 'proofreadpage_index_namespace' => 'Sadržaj',
11861516 'proofreadpage_image' => 'slika',
1187 - 'proofreadpage_index' => 'Sadržaj (indeks)',
 1517+ 'proofreadpage_index' => 'Sadržaj',
 1518+ 'proofreadpage_index_expected' => 'Progreška: očekivan je sadržaj',
 1519+ 'proofreadpage_nosuch_index' => 'Pogreška: nema takvog sadržaja',
 1520+ 'proofreadpage_nosuch_file' => 'Pogreška: nema takve datoteke',
 1521+ 'proofreadpage_badpage' => 'Pogrešan format',
 1522+ 'proofreadpage_badpagetext' => 'Format stranice koju ste pokušali spremiti je neispravan.',
 1523+ 'proofreadpage_indexdupe' => 'Duplicirana poveznica',
 1524+ 'proofreadpage_indexdupetext' => 'Stranice ne mogu biti iszlistane više od jednom na stranici sadržaja.',
 1525+ 'proofreadpage_nologin' => 'Niste prijavljeni',
 1526+ 'proofreadpage_nologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] za izmjenu statusa provjerenosti na stranicama.',
 1527+ 'proofreadpage_notallowed' => 'Izmjena nije dozvoljena',
 1528+ 'proofreadpage_notallowedtext' => 'Nije Vam dozvoljeno mijenjati status ispravljenosti ove stranice.',
 1529+ 'proofreadpage_number_expected' => 'Pogreška: očekivana je brojčana vrijednost',
 1530+ 'proofreadpage_interval_too_large' => 'Pogreška: interval je prevelik',
 1531+ 'proofreadpage_invalid_interval' => 'Pogreška: interval nije valjan',
11881532 'proofreadpage_nextpage' => 'Slijedeća stranica',
11891533 'proofreadpage_prevpage' => 'Prethodna stranica',
11901534 'proofreadpage_header' => "Zaglavlje (''noinclude''):",
11911535 'proofreadpage_body' => 'Tijelo stranice (bit će uključeno):',
11921536 'proofreadpage_footer' => "Podnožje (''footer noinclude''):",
11931537 'proofreadpage_toggleheaders' => "promijeni vidljivost ''noinclude'' odlomaka",
1194 - 'proofreadpage_quality1_category' => 'Nepregledano',
1195 - 'proofreadpage_quality2_category' => 'Nedovršeno',
1196 - 'proofreadpage_quality3_category' => 'Pregledano',
1197 - 'proofreadpage_quality4_category' => 'Dobro',
 1538+ 'proofreadpage_quality0_category' => 'Bez teksta',
 1539+ 'proofreadpage_quality1_category' => 'Nije ispravljeno',
 1540+ 'proofreadpage_quality2_category' => 'Problematično',
 1541+ 'proofreadpage_quality3_category' => 'Ispravljeno',
 1542+ 'proofreadpage_quality4_category' => 'Potvrđeno',
 1543+ 'proofreadpage_quality0_message' => 'Ovu stranicu nije potrebno ispravljati',
 1544+ 'proofreadpage_quality1_message' => 'Ova stranica nije ispravljena',
 1545+ 'proofreadpage_quality2_message' => 'Došlo je do problema prilikom ispravljanja ove stranice',
 1546+ 'proofreadpage_quality3_message' => 'Ova stranica je ispravljena',
 1547+ 'proofreadpage_quality4_message' => 'Ova stranica je potvrđena',
11981548 'proofreadpage_index_listofpages' => 'Popis stranica',
1199 - 'proofreadpage_image_message' => 'Poveznica na sadržaj (kazalo)',
 1549+ 'proofreadpage_image_message' => 'Poveznica na stranicu sa sadržajem',
12001550 'proofreadpage_page_status' => 'Status stranice',
12011551 'proofreadpage_js_attributes' => 'Autor Naslov Godina Izdavač',
12021552 'proofreadpage_index_attributes' => 'Autor
@@ -1206,6 +1556,7 @@
12071557 Slika|Naslovnica
12081558 Stranica||20
12091559 Napomene||10',
 1560+ 'proofreadpage_pages' => '{{PLURAL:$1|stranica|stranice}}',
12101561 );
12111562
12121563 /** Upper Sorbian (Hornjoserbsce)
@@ -1213,6 +1564,7 @@
12141565 * @author Michawiki
12151566 */
12161567 $messages['hsb'] = array(
 1568+ 'indexpages' => 'Lisćina indeksowych stronow',
12171569 'proofreadpage_desc' => 'Lochke přirunanje teksta z originalnym skanom dowolić',
12181570 'proofreadpage_namespace' => 'Strona',
12191571 'proofreadpage_index_namespace' => 'Indeks',
@@ -1221,6 +1573,14 @@
12221574 'proofreadpage_index_expected' => 'Zmylk: indeks wočakowany',
12231575 'proofreadpage_nosuch_index' => 'Zmylk: tajki indeks njeje',
12241576 'proofreadpage_nosuch_file' => 'Zmylk: tajka dataja njeje',
 1577+ 'proofreadpage_badpage' => 'Wopačny format',
 1578+ 'proofreadpage_badpagetext' => 'Format strony, kotruž sy spytał składować, je wopak.',
 1579+ 'proofreadpage_indexdupe' => 'Dwójny wotkaz',
 1580+ 'proofreadpage_indexdupetext' => 'Strony njedadźa so wjace hač jedyn raz na indeksowej stronje nalistować.',
 1581+ 'proofreadpage_nologin' => 'Njejsy so přizjewił',
 1582+ 'proofreadpage_nologintext' => 'Dyrbiš [[Special:UserLogin|přizjewjeny]] być, zo by status kontrolneho čitanja stronow změnił.',
 1583+ 'proofreadpage_notallowed' => 'Změna njedowolena',
 1584+ 'proofreadpage_notallowedtext' => 'Njesměš status kontrolneho čitanja tutej strony změnić.',
12251585 'proofreadpage_number_expected' => 'Zmylk: numeriska hódnota wočakowana',
12261586 'proofreadpage_interval_too_large' => 'Zmylk: interwal přewulki',
12271587 'proofreadpage_invalid_interval' => 'Zmylk: njepłaćiwy interwal',
@@ -1235,6 +1595,11 @@
12361596 'proofreadpage_quality2_category' => 'Njedospołny',
12371597 'proofreadpage_quality3_category' => 'Skorigowany',
12381598 'proofreadpage_quality4_category' => 'Hotowy',
 1599+ 'proofreadpage_quality0_message' => 'Tuta strona njetrjeba so skorigować',
 1600+ 'proofreadpage_quality1_message' => 'Tut strona njeje so skorigowała',
 1601+ 'proofreadpage_quality2_message' => 'Při korigowanju tuteje strony je problem wustupił',
 1602+ 'proofreadpage_quality3_message' => 'Tuta strona je so skorigowała',
 1603+ 'proofreadpage_quality4_message' => 'Tuta strona je so přepruwowała',
12391604 'proofreadpage_index_listofpages' => 'Lisćina stronow',
12401605 'proofreadpage_image_message' => 'Wotkaz k indeksowej stronje',
12411606 'proofreadpage_page_status' => 'Status strony',
@@ -1247,6 +1612,7 @@
12481613 Wobraz|Wobraz titloweje strony
12491614 Strony||20
12501615 Přispomnjenki||10',
 1616+ 'proofreadpage_pages' => '{{PLURAL:$1|strona|stronje|strony|stronow}}',
12511617 );
12521618
12531619 /** Hungarian (Magyar)
@@ -1329,6 +1695,7 @@
13301696 * @author McDutchie
13311697 */
13321698 $messages['ia'] = array(
 1699+ 'indexpages' => 'Lista de paginas indice',
13331700 'proofreadpage_desc' => 'Facilita le comparation inter un texto e su scan original',
13341701 'proofreadpage_namespace' => 'Pagina',
13351702 'proofreadpage_index_namespace' => 'Indice',
@@ -1336,20 +1703,34 @@
13371704 'proofreadpage_index' => 'Indice',
13381705 'proofreadpage_index_expected' => 'Error: indice expectate',
13391706 'proofreadpage_nosuch_index' => 'Error: non existe tal indice',
 1707+ 'proofreadpage_nosuch_file' => 'Error: non existe tal file',
 1708+ 'proofreadpage_badpage' => 'Formato incorrecte',
 1709+ 'proofreadpage_badpagetext' => 'Le formato del pagina que tu tentava immagazinar es incorrecte.',
 1710+ 'proofreadpage_indexdupe' => 'Ligamine duplicate',
 1711+ 'proofreadpage_indexdupetext' => 'Paginas non pote figurar plus de un vice in un pagina de indice.',
 1712+ 'proofreadpage_nologin' => 'Non identificate',
 1713+ 'proofreadpage_nologintext' => 'Tu debe [[Special:UserLogin|aperir un session]] pro modificar le stato de correction de paginas.',
 1714+ 'proofreadpage_notallowed' => 'Cambio non permittite',
 1715+ 'proofreadpage_notallowedtext' => 'Tu non ha le permission de cambiar le stato de correction de iste pagina.',
13401716 'proofreadpage_number_expected' => 'Error: valor numeric expectate',
13411717 'proofreadpage_interval_too_large' => 'Error: intervallo troppo grande',
13421718 'proofreadpage_invalid_interval' => 'Error: intervallo invalide',
13431719 'proofreadpage_nextpage' => 'Pagina sequente',
13441720 'proofreadpage_prevpage' => 'Pagina precedente',
13451721 'proofreadpage_header' => 'Capite (noinclude):',
1346 - 'proofreadpage_body' => 'Corpore del pagina (a esser transcludite):',
 1722+ 'proofreadpage_body' => 'Corpore del pagina (pro esser transcludite):',
13471723 'proofreadpage_footer' => 'Pede (noinclude):',
1348 - 'proofreadpage_toggleheaders' => 'activar/disactivar le visibilitate del sectiones noinclude',
 1724+ 'proofreadpage_toggleheaders' => 'cambiar le visibilitate del sectiones noinclude',
13491725 'proofreadpage_quality0_category' => 'Sin texto',
13501726 'proofreadpage_quality1_category' => 'Non corrigite',
13511727 'proofreadpage_quality2_category' => 'Problematic',
13521728 'proofreadpage_quality3_category' => 'Corrigite',
13531729 'proofreadpage_quality4_category' => 'Validate',
 1730+ 'proofreadpage_quality0_message' => 'Iste pagina non ha besonio de esser corrigite',
 1731+ 'proofreadpage_quality1_message' => 'Iste pagina non ha essite corrigite',
 1732+ 'proofreadpage_quality2_message' => 'Il habeva un problema durante le correction de iste pagina',
 1733+ 'proofreadpage_quality3_message' => 'Iste pagina ha essite corrigite',
 1734+ 'proofreadpage_quality4_message' => 'Iste pagina ha essite validate',
13541735 'proofreadpage_index_listofpages' => 'Lista de paginas',
13551736 'proofreadpage_image_message' => 'Ligamine verso le pagina de indice',
13561737 'proofreadpage_page_status' => 'Stato del pagina',
@@ -1362,27 +1743,50 @@
13631744 Imagine|Imagine de copertura
13641745 Paginas||20
13651746 Notas||10',
 1747+ 'proofreadpage_pages' => '{{PLURAL:$1|pagina|paginas}}',
13661748 );
13671749
13681750 /** Indonesian (Bahasa Indonesia)
 1751+ * @author Irwangatot
13691752 * @author IvanLanin
13701753 */
13711754 $messages['id'] = array(
 1755+ 'indexpages' => 'Daftar dari halaman indek',
13721756 'proofreadpage_desc' => 'Memungkinkan perbandingan mudah teks dengan hasil pemindaian orisinal',
13731757 'proofreadpage_namespace' => 'Halaman',
13741758 'proofreadpage_index_namespace' => 'Indeks',
13751759 'proofreadpage_image' => 'gambar',
13761760 'proofreadpage_index' => 'Indeks',
 1761+ 'proofreadpage_index_expected' => 'Kesalahan : diperlukan indeks',
 1762+ 'proofreadpage_nosuch_index' => 'Kesalahan: tidak ada indeks',
 1763+ 'proofreadpage_nosuch_file' => 'Kesalahan: tidak ada file',
 1764+ 'proofreadpage_badpage' => 'Kesalahan Format',
 1765+ 'proofreadpage_badpagetext' => 'Format halaman yang akan anda simpan, salah.',
 1766+ 'proofreadpage_indexdupe' => 'Gandakan pranala',
 1767+ 'proofreadpage_indexdupetext' => 'Halaman tidak dapat di daftarkan lebih dari sekali di halaman indek.',
 1768+ 'proofreadpage_nologin' => 'Belum masuk log',
 1769+ 'proofreadpage_nologintext' => 'Anda harus [[Special:UserLogin|masuk log]] untuk mengubah status koreksi halaman.',
 1770+ 'proofreadpage_notallowed' => 'Perubahan tidak diperbolehkan',
 1771+ 'proofreadpage_notallowedtext' => 'Anda tidak diperbolehkan untuk mengubah status koreksi di halaman ini.',
 1772+ 'proofreadpage_number_expected' => 'Kesalahan: nilai angka diharapkan',
 1773+ 'proofreadpage_interval_too_large' => 'Kesalahan:Interval terlalu besar',
 1774+ 'proofreadpage_invalid_interval' => 'Kesalahan: Interval tidak sah',
13771775 'proofreadpage_nextpage' => 'Halaman selanjutnya',
13781776 'proofreadpage_prevpage' => 'Halaman sebelumnya',
13791777 'proofreadpage_header' => 'Kepala (noinclude):',
13801778 'proofreadpage_body' => 'Badan halaman (untuk ditransklusikan):',
13811779 'proofreadpage_footer' => 'Kaki (noinclude):',
13821780 'proofreadpage_toggleheaders' => 'ganti keterlihatan bagian noinclude',
 1781+ 'proofreadpage_quality0_category' => 'Tanpa teks',
13831782 'proofreadpage_quality1_category' => 'Belum diuji-baca',
13841783 'proofreadpage_quality2_category' => 'Bermasalah',
13851784 'proofreadpage_quality3_category' => 'Diuji-baca',
13861785 'proofreadpage_quality4_category' => 'Divalidasi',
 1786+ 'proofreadpage_quality0_message' => 'Halaman ini tidak perlu dikoreksi',
 1787+ 'proofreadpage_quality1_message' => 'Halaman ini belum dikoreksi',
 1788+ 'proofreadpage_quality2_message' => 'Ada masalah ketika mengoreksi halaman ini',
 1789+ 'proofreadpage_quality3_message' => 'Halaman ini telah dikoreksi',
 1790+ 'proofreadpage_quality4_message' => 'Halaman ini telah divalidasi',
13871791 'proofreadpage_index_listofpages' => 'Daftar halaman',
13881792 'proofreadpage_image_message' => 'Pranala ke halaman indeks',
13891793 'proofreadpage_page_status' => 'Status halaman',
@@ -1395,6 +1799,7 @@
13961800 Gambar|Gambar sampul
13971801 Halaman||20
13981802 Catatan||10',
 1803+ 'proofreadpage_pages' => '{{PLURAL:$1|halaman|halaman}}',
13991804 );
14001805
14011806 /** Ido (Ido)
@@ -1424,9 +1829,11 @@
14251830
14261831 /** Italian (Italiano)
14271832 * @author BrokenArrow
 1833+ * @author Darth Kule
14281834 * @author Stefano-c
14291835 */
14301836 $messages['it'] = array(
 1837+ 'indexpages' => 'Elenco delle pagine di indice',
14311838 'proofreadpage_desc' => 'Consente un facile confronto tra un testo e la sua scansione originale',
14321839 'proofreadpage_namespace' => 'Pagina',
14331840 'proofreadpage_index_namespace' => 'Indice',
@@ -1434,8 +1841,18 @@
14351842 'proofreadpage_index' => 'Indice',
14361843 'proofreadpage_index_expected' => 'Errore: previsto indice',
14371844 'proofreadpage_nosuch_index' => 'Errore: indice non presente',
 1845+ 'proofreadpage_nosuch_file' => 'Errore: file non presente',
 1846+ 'proofreadpage_badpage' => 'Formato errato',
 1847+ 'proofreadpage_badpagetext' => 'Il formato della pagina che si è tentato di salvare non è corretto.',
 1848+ 'proofreadpage_indexdupe' => 'Collegamento duplicato',
 1849+ 'proofreadpage_indexdupetext' => 'Le pagine non possono essere elencate più di una volta su una pagina di indice.',
 1850+ 'proofreadpage_nologin' => 'Accesso non effettuato',
 1851+ 'proofreadpage_nologintext' => "Per modificare lo stato di correttezza delle pagine è necessario [[Special:UserLogin|effettuare l'accesso]].",
 1852+ 'proofreadpage_notallowed' => 'Modifica non consentita',
 1853+ 'proofreadpage_notallowedtext' => 'Non si è autorizzati a modificare lo stato di correttezza di questa pagina.',
14381854 'proofreadpage_number_expected' => 'Errore: previsto valore numerico',
14391855 'proofreadpage_interval_too_large' => 'Errore: intervallo troppo ampio',
 1856+ 'proofreadpage_invalid_interval' => 'Errore: intervallo non valido',
14401857 'proofreadpage_nextpage' => 'Pagina successiva',
14411858 'proofreadpage_prevpage' => 'Pagina precedente',
14421859 'proofreadpage_header' => 'Intestazione (non inclusa):',
@@ -1447,6 +1864,7 @@
14481865 'proofreadpage_quality2_category' => 'Da rivedere',
14491866 'proofreadpage_quality3_category' => 'Corretta',
14501867 'proofreadpage_quality4_category' => 'Verificata',
 1868+ 'proofreadpage_quality4_message' => 'Questa pagina è stata convalidata',
14511869 'proofreadpage_index_listofpages' => 'Lista delle pagine',
14521870 'proofreadpage_image_message' => 'Collegamento alla pagina indice',
14531871 'proofreadpage_page_status' => 'Status della pagina',
@@ -1459,13 +1877,16 @@
14601878 Immagine|Immagine di copertina
14611879 Pagine||20
14621880 Note||10',
 1881+ 'proofreadpage_pages' => '{{PLURAL:$1|pagina|pagine}}',
14631882 );
14641883
14651884 /** Japanese (日本語)
14661885 * @author Fryed-peach
14671886 * @author JtFuruhata
 1887+ * @author 青子守歌
14681888 */
14691889 $messages['ja'] = array(
 1890+ 'indexpages' => '文献概要ページの一覧',
14701891 'proofreadpage_desc' => 'オリジナルのスキャン画像とテキストとの比較を容易にする',
14711892 'proofreadpage_namespace' => 'ページ',
14721893 'proofreadpage_index_namespace' => '文献概要',
@@ -1474,20 +1895,33 @@
14751896 'proofreadpage_index_expected' => 'エラー: 文献概要があるべきです',
14761897 'proofreadpage_nosuch_index' => 'エラー: そのような文献概要はありません',
14771898 'proofreadpage_nosuch_file' => 'エラー: そのようなファイルはありません',
 1899+ 'proofreadpage_badpage' => '不正な形式',
 1900+ 'proofreadpage_badpagetext' => '保存しようとしたページの形式が正しくありません。',
 1901+ 'proofreadpage_indexdupe' => '重複したリンク',
 1902+ 'proofreadpage_indexdupetext' => '文献概要ページ上にページを複数回載せることはできません。',
 1903+ 'proofreadpage_nologin' => 'ログインしていない',
 1904+ 'proofreadpage_nologintext' => 'ページの校正状況を修正するためには[[Special:UserLogin|ログイン]]しなければなりません。',
 1905+ 'proofreadpage_notallowed' => '変更が許可されていません',
 1906+ 'proofreadpage_notallowedtext' => 'あなたにはこのページの校正状況を変更することが許可されていません。',
14781907 'proofreadpage_number_expected' => 'エラー: 数値がくるべきです',
14791908 'proofreadpage_interval_too_large' => 'エラー: 間隔が大きすぎます',
14801909 'proofreadpage_invalid_interval' => 'エラー: 間隔が無効です',
14811910 'proofreadpage_nextpage' => '次のページ',
14821911 'proofreadpage_prevpage' => '前のページ',
1483 - 'proofreadpage_header' => 'ヘッダ(埋め込み対象外):',
1484 - 'proofreadpage_body' => 'ページ本体(埋め込み参照の対象):',
1485 - 'proofreadpage_footer' => 'フッタ(埋め込み対象外):',
 1912+ 'proofreadpage_header' => 'ヘッダ(埋め込み対象外):',
 1913+ 'proofreadpage_body' => 'ページ本体(埋め込み参照の対象):',
 1914+ 'proofreadpage_footer' => 'フッタ(埋め込み対象外):',
14861915 'proofreadpage_toggleheaders' => '埋め込み対象外項目の表示切替',
14871916 'proofreadpage_quality0_category' => '文章なし',
14881917 'proofreadpage_quality1_category' => '未校正',
14891918 'proofreadpage_quality2_category' => '問題あり',
14901919 'proofreadpage_quality3_category' => '校正済',
14911920 'proofreadpage_quality4_category' => '検証済',
 1921+ 'proofreadpage_quality0_message' => 'このページは校正する必要がありません',
 1922+ 'proofreadpage_quality1_message' => 'このページはまだ校正されていません',
 1923+ 'proofreadpage_quality2_message' => 'このページを校正するときに問題が発生しました',
 1924+ 'proofreadpage_quality3_message' => 'このページは校正済みです',
 1925+ 'proofreadpage_quality4_message' => 'このページは検証済みです',
14921926 'proofreadpage_index_listofpages' => 'ページの一覧',
14931927 'proofreadpage_image_message' => '文献概要ページへ',
14941928 'proofreadpage_page_status' => '校正状況',
@@ -1500,6 +1934,7 @@
15011935 画像|表紙画像
15021936 ページ||20
15031937 注釈||10',
 1938+ 'proofreadpage_pages' => '{{PLURAL:$1|ページ|ページ}}',
15041939 );
15051940
15061941 /** Jutish (Jysk)
@@ -1598,16 +2033,20 @@
15992034 * @author Lovekhmer
16002035 * @author Thearith
16012036 * @author គីមស៊្រុន
 2037+ * @author វ័ណថារិទ្ធ
16022038 */
16032039 $messages['km'] = array(
16042040 'proofreadpage_namespace' => 'ទំព័រ',
16052041 'proofreadpage_index_namespace' => 'លិបិក្រម',
16062042 'proofreadpage_image' => 'រូបភាព',
16072043 'proofreadpage_index' => 'លិបិក្រម',
 2044+ 'proofreadpage_badpage' => 'ទម្រង់​/ប្រភេទ មិនត្រឹមត្រូវ​​',
 2045+ 'proofreadpage_indexdupe' => 'ចម្លងស្ទួន តំណ​ភ្ជាប់',
16082046 'proofreadpage_nextpage' => 'ទំព័របន្ទាប់',
16092047 'proofreadpage_prevpage' => 'ទំព័រមុន',
16102048 'proofreadpage_header' => 'បឋមកថា(មិនរួមបញ្ចូល)៖',
16112049 'proofreadpage_footer' => 'បាតកថា(មិនរួមបញ្ចូល)៖',
 2050+ 'proofreadpage_quality0_category' => 'ដោយ​មិន​មាន​អក្សរ​',
16122051 'proofreadpage_quality1_category' => 'មិន​មើលកែ',
16132052 'proofreadpage_quality2_category' => 'មានបញ្ហា',
16142053 'proofreadpage_quality3_category' => 'មើលកែ',
@@ -1628,38 +2067,47 @@
16292068
16302069 /** Korean (한국어)
16312070 * @author Ilovesabbath
 2071+ * @author Klutzy
16322072 * @author Kwj2772
 2073+ * @author Pakman
 2074+ * @author ToePeu
16332075 * @author Yknok29
16342076 */
16352077 $messages['ko'] = array(
16362078 'proofreadpage_desc' => '최초 스캔과 텍스트를 쉽게 비교할 수 있게 함',
1637 - 'proofreadpage_namespace' => '쪽',
1638 - 'proofreadpage_index_namespace' => '목록',
 2079+ 'proofreadpage_namespace' => '문서',
 2080+ 'proofreadpage_index_namespace' => '목차',
16392081 'proofreadpage_image' => '그림',
1640 - 'proofreadpage_index' => '목록',
 2082+ 'proofreadpage_index' => '목차',
 2083+ 'proofreadpage_badpage' => '잘못된 형식',
 2084+ 'proofreadpage_nologin' => ' 로그인된 상태가 아닙니다.',
 2085+ 'proofreadpage_nologintext' => '주시문서를 보려면 [[특별:로그인|로그인]]해야 합니다. 70‰',
 2086+ 'proofreadpage_notallowed' => '이 문서는 변경이 불가능합니다. 60‰',
 2087+ 'proofreadpage_notallowedtext' => '주시문서 변경이 불가능합니다. 60‰',
16412088 'proofreadpage_nextpage' => '다음 페이지',
16422089 'proofreadpage_prevpage' => '이전 페이지',
16432090 'proofreadpage_header' => '머리말 (표시안함):',
16442091 'proofreadpage_body' => '본문 (트랜스클루전):',
16452092 'proofreadpage_footer' => '꼬리말 (표시안함):',
16462093 'proofreadpage_toggleheaders' => '표시안함 부분의 표시 여부 선택',
1647 - 'proofreadpage_quality0_category' => '텍스트 없음',
 2094+ 'proofreadpage_quality0_category' => '비었음',
16482095 'proofreadpage_quality1_category' => '교정 안됨',
16492096 'proofreadpage_quality2_category' => '문제 있음',
16502097 'proofreadpage_quality3_category' => '교정',
16512098 'proofreadpage_quality4_category' => '확인됨',
 2099+ 'proofreadpage_quality0_message' => '이 페이지는 교정이 필요없습니다. 50.00‰',
16522100 'proofreadpage_index_listofpages' => '문서 목록',
1653 - 'proofreadpage_image_message' => '목록 페이지로 연결됩니다.',
 2101+ 'proofreadpage_image_message' => '목차 페이지로',
16542102 'proofreadpage_page_status' => '문서 상태',
1655 - 'proofreadpage_js_attributes' => '작가 제목 연도 출판사',
 2103+ 'proofreadpage_js_attributes' => '저자 제목 출판년도 출판사',
16562104 'proofreadpage_index_attributes' => '저자
16572105 제목
1658 -연도|출판연도
 2106+연도|출판년도
16592107 출판사
16602108 출처
1661 -그림|책 표지
 2109+그림|표지 그림
16622110 쪽수||20
1663 -비평||10',
 2111+주석||10',
16642112 );
16652113
16662114 /** Kinaray-a (Kinaray-a)
@@ -1673,6 +2121,7 @@
16742122 * @author Purodha
16752123 */
16762124 $messages['ksh'] = array(
 2125+ 'indexpages' => 'Leß met de Indäx_Sigge',
16772126 'proofreadpage_desc' => 'Määt et müjjelesch, bequem der Täx mem enjeskännte Ojinaal ze verjliische.',
16782127 'proofreadpage_namespace' => 'Sigg',
16792128 'proofreadpage_index_namespace' => 'Enhallt',
@@ -1681,6 +2130,14 @@
16822131 'proofreadpage_index_expected' => 'Fähler: Ene Indäx weet jebruch',
16832132 'proofreadpage_nosuch_index' => 'Fähler: Esu ene Indäx jidd_et nit',
16842133 'proofreadpage_nosuch_file' => 'Fähler: esu en Dattei ham_mer nit',
 2134+ 'proofreadpage_badpage' => 'Verhiehrt Fommaat',
 2135+ 'proofreadpage_badpagetext' => 'Dat Fommaat vun dä Sigg, di De jrahdt afzeshpeischere versöhk häß, eß verkiehert.',
 2136+ 'proofreadpage_indexdupe' => 'Dubbelte Lengk',
 2137+ 'proofreadpage_indexdupetext' => 'Sigge künne nit mieh wi eijmohl en en Indäx_Sigg opdouche.',
 2138+ 'proofreadpage_nologin' => 'Nit enjelogk',
 2139+ 'proofreadpage_nologintext' => 'Do möötß ald [[Special:UserLogin|enjelogg]] sin, öm dä {{int:proofreadpage_page_status}} hee ze ändere.',
 2140+ 'proofreadpage_notallowed' => 'Dat Ändere es nit zohjelohße',
 2141+ 'proofreadpage_notallowedtext' => 'Do häs nit et Rääsch, heh dä {{int:proofreadpage_page_status}} ze ändere.',
16852142 'proofreadpage_number_expected' => 'Fähler: En Zahl weet jebruch',
16862143 'proofreadpage_interval_too_large' => 'Fähler: Dä Affschtand es zoh jruuß',
16872144 'proofreadpage_invalid_interval' => 'Fähler: Dä Afshtand es nit jöltesch',
@@ -1695,6 +2152,11 @@
16962153 'proofreadpage_quality2_category' => 'Problemscher',
16972154 'proofreadpage_quality3_category' => 'Nohjelässe',
16982155 'proofreadpage_quality4_category' => 'Fäädesch jepröhf',
 2156+ 'proofreadpage_quality0_message' => 'Heh di Sigg moß nit jeääjejelässe wääde',
 2157+ 'proofreadpage_quality1_message' => 'Heh di Sigg woodt nit jeääjejelässe',
 2158+ 'proofreadpage_quality2_message' => 'Beim Jeääjelässe för heh di Sigg eß jät opjevalle',
 2159+ 'proofreadpage_quality3_message' => 'Heh di Sigg woodt jeääjejelässe',
 2160+ 'proofreadpage_quality4_message' => 'Heh di Sigg es jeääjejelässe un joot',
16992161 'proofreadpage_index_listofpages' => 'SiggeLeß',
17002162 'proofreadpage_image_message' => 'Lengk op en Index-Sigg',
17012163 'proofreadpage_page_status' => 'Siggestattus',
@@ -1707,6 +2169,7 @@
17082170 Beld|Beld om Ömschlach
17092171 Sigge||20
17102172 Aanmerkunge||10',
 2173+ 'proofreadpage_pages' => '{{PLURAL:$1|Ei&nbsp;Sigg|$2&nbsp;Sigge|Kei&nbsp;Sigg}}',
17112174 );
17122175
17132176 /** Cornish (Kernewek)
@@ -1727,6 +2190,7 @@
17282191 * @author Robby
17292192 */
17302193 $messages['lb'] = array(
 2194+ 'indexpages' => 'Lëscht vun Index-Säiten',
17312195 'proofreadpage_desc' => 'Erlaabt et op eng einfach Manéier den Text mat der Originalscan ze vergLäichen',
17322196 'proofreadpage_namespace' => 'Säit',
17332197 'proofreadpage_index_namespace' => 'Index',
@@ -1734,8 +2198,18 @@
17352199 'proofreadpage_index' => 'Index',
17362200 'proofreadpage_index_expected' => 'Feeler: Index erwaart',
17372201 'proofreadpage_nosuch_index' => 'Feeler: et gëtt keen esou een Index',
 2202+ 'proofreadpage_nosuch_file' => 'Feeler: de Fichier gëtt et net',
 2203+ 'proofreadpage_badpage' => 'Falsche Format',
 2204+ 'proofreadpage_badpagetext' => "De Format vun der Säit déi Dir versicht hutt z'änneren ass net korrekt.",
 2205+ 'proofreadpage_indexdupe' => 'Duebele Link',
 2206+ 'proofreadpage_indexdupetext' => 'Säite kënnen net méi wéi eemol op eng Index-Säit gesat ginn.',
 2207+ 'proofreadpage_nologin' => 'Net ageloggt',
 2208+ 'proofreadpage_nologintext' => "Dir musst [[Special:UserLogin|ageloggt]] si fir de Status vum Iwwerliese vu Säiten z'änneren.",
 2209+ 'proofreadpage_notallowed' => 'Ännerung net erlaabt',
 2210+ 'proofreadpage_notallowedtext' => "Dir sidd net berechtigt de Status vum Iwwerliese vun dëser Säit z'änneren.",
17382211 'proofreadpage_number_expected' => 'Feeler: et gof en numerische Wert erwaart',
17392212 'proofreadpage_interval_too_large' => 'Feeler: Intervall ze ze grouss',
 2213+ 'proofreadpage_invalid_interval' => 'Feeler: net valabelen Intervall',
17402214 'proofreadpage_nextpage' => 'Nächst Säit',
17412215 'proofreadpage_prevpage' => 'Säit virdrun',
17422216 'proofreadpage_header' => 'Entête (noinclude):',
@@ -1747,6 +2221,11 @@
17482222 'proofreadpage_quality2_category' => 'Problematesch',
17492223 'proofreadpage_quality3_category' => 'Verbessert',
17502224 'proofreadpage_quality4_category' => 'Validéiert',
 2225+ 'proofreadpage_quality0_message' => 'Dës Säit brauch net iwwerliest ze ginn',
 2226+ 'proofreadpage_quality1_message' => 'Dës Säit gouf net iwwerliest',
 2227+ 'proofreadpage_quality2_message' => 'Et gouf e Problem beim iwwereliese vun dëser Säit',
 2228+ 'proofreadpage_quality3_message' => 'Dës Säit gouf iwwerliest',
 2229+ 'proofreadpage_quality4_message' => 'Dës Säit gouf validéiert',
17512230 'proofreadpage_index_listofpages' => 'Säitelëscht',
17522231 'proofreadpage_image_message' => "Link op d'Indexsäit",
17532232 'proofreadpage_page_status' => 'Status vun der Säit',
@@ -1759,6 +2238,7 @@
17602239 Bild|Titelbild
17612240 Säiten||20
17622241 Bemierkungen||10',
 2242+ 'proofreadpage_pages' => '{{PLURAL:$1|Säit|Säiten}}',
17632243 );
17642244
17652245 /** Lingua Franca Nova (Lingua Franca Nova)
@@ -1806,11 +2286,46 @@
18072287 * @author Matasg
18082288 */
18092289 $messages['lt'] = array(
 2290+ 'indexpages' => 'Indeksuotų puslapių sąrašas',
 2291+ 'proofreadpage_desc' => 'Galima lengvai palyginti tekstą su originaliu',
18102292 'proofreadpage_namespace' => 'Puslapis',
 2293+ 'proofreadpage_index_namespace' => 'Indeksas',
18112294 'proofreadpage_image' => 'paveikslėlis',
 2295+ 'proofreadpage_index' => 'Indeksas',
 2296+ 'proofreadpage_index_expected' => 'Klaida: indeksas laukiamas',
 2297+ 'proofreadpage_nosuch_index' => 'Klaida: nėra tokio indekso',
 2298+ 'proofreadpage_nosuch_file' => 'Klaida: nėra tokio failo',
 2299+ 'proofreadpage_badpage' => 'Neteisingas formatas',
 2300+ 'proofreadpage_badpagetext' => 'Puslapio, kurį bandėte išsaugoti, formatas yra neteisingas.',
 2301+ 'proofreadpage_indexdupe' => 'Dublikuoti nuorodą',
 2302+ 'proofreadpage_indexdupetext' => 'Puslapiai negali būti pateikiami daugiau kaip kartą pagrindiniame puslapyje.',
 2303+ 'proofreadpage_nologin' => 'Neprisijungta',
 2304+ 'proofreadpage_nologintext' => 'Jūs turite būti [[Special:UserLogin|prisijungęs]], norėdamas keisti puslapių statusą.',
 2305+ 'proofreadpage_notallowed' => 'Keisti neleidžiama',
 2306+ 'proofreadpage_notallowedtext' => 'Jums neleidžiama pakeisti šio puslapio statuso.',
 2307+ 'proofreadpage_number_expected' => 'Klaida: tikėtasi skaitinės vertės',
 2308+ 'proofreadpage_interval_too_large' => 'Klaida: intervalas per didelis',
 2309+ 'proofreadpage_invalid_interval' => 'Klaida: neteisingas intervalas',
18122310 'proofreadpage_nextpage' => 'Kitas puslapis',
18132311 'proofreadpage_prevpage' => 'Ankstesnis puslapis',
 2312+ 'proofreadpage_header' => 'Antraštė (neįskaitoma):',
 2313+ 'proofreadpage_body' => 'Puslapio pagrindas (perkeliamas):',
 2314+ 'proofreadpage_footer' => 'Poraštė (neįskaitoma):',
 2315+ 'proofreadpage_toggleheaders' => 'įjungti neįskaitytų sekcijų matomumą',
 2316+ 'proofreadpage_quality0_category' => 'Be teksto',
 2317+ 'proofreadpage_quality1_category' => 'Neperžiūrėtas',
 2318+ 'proofreadpage_quality2_category' => 'Problemiškas',
 2319+ 'proofreadpage_quality3_category' => 'Peržiūrėtas',
 2320+ 'proofreadpage_quality4_category' => 'Patvirtintas',
 2321+ 'proofreadpage_quality0_message' => 'Šis puslapis neturi būti peržiūrėtas',
 2322+ 'proofreadpage_quality1_message' => 'Šis puslapis nebuvo peržiūrėtas',
 2323+ 'proofreadpage_quality2_message' => 'Iškilo problema kai buvo peržiūrimas šis puslapis',
 2324+ 'proofreadpage_quality3_message' => 'Šis puslapis buvo peržiūrėtas',
 2325+ 'proofreadpage_quality4_message' => 'Šis puslapis buvo patvirtintas',
 2326+ 'proofreadpage_index_listofpages' => 'Puslapių sąrašas',
 2327+ 'proofreadpage_image_message' => 'Nuoroda į pagrindinį puslapį',
18142328 'proofreadpage_page_status' => 'Puslapio statusas',
 2329+ 'proofreadpage_js_attributes' => 'Autorius Pavadinimas Metai Publikuotojas',
18152330 'proofreadpage_index_attributes' => 'Autorius
18162331 Pavadinimas
18172332 Metai|Išleidimo metai
@@ -1846,20 +2361,59 @@
18472362 );
18482363
18492364 /** Macedonian (Македонски)
 2365+ * @author Bjankuloski06
18502366 * @author Brest
18512367 */
18522368 $messages['mk'] = array(
 2369+ 'indexpages' => 'Листа на индексни страници',
 2370+ 'proofreadpage_desc' => 'Овозможува едноставна споредба на текстот со скенираниот оригинал',
18532371 'proofreadpage_namespace' => 'Страница',
18542372 'proofreadpage_index_namespace' => 'Индекс',
18552373 'proofreadpage_image' => 'слика',
18562374 'proofreadpage_index' => 'Индекс',
 2375+ 'proofreadpage_index_expected' => 'Грешка: се очекува индекс',
 2376+ 'proofreadpage_nosuch_index' => 'Грешка: нема таков индекс',
 2377+ 'proofreadpage_nosuch_file' => 'Грешка: нема таква податотека',
 2378+ 'proofreadpage_badpage' => 'Погрешен формат',
 2379+ 'proofreadpage_badpagetext' => 'Форматот на страницата што сакате да ја зачувате е погрешен.',
 2380+ 'proofreadpage_indexdupe' => 'Дупликат врска',
 2381+ 'proofreadpage_indexdupetext' => 'Страниците не можат да се наведуваат на индексот повеќе од еднаш по страница',
 2382+ 'proofreadpage_nologin' => 'Не сте најавени',
 2383+ 'proofreadpage_nologintext' => 'Морате да бидете [[Special:UserLogin|најавени]] за да можете да го менувате статусот на коректурата на страници.',
 2384+ 'proofreadpage_notallowed' => 'Менувањето не е дозволено',
 2385+ 'proofreadpage_notallowedtext' => 'Не ви е дозволено да го менувате статусот на коректурата на оваа страница.',
 2386+ 'proofreadpage_number_expected' => 'Грешка: се очекува бројчена вредност',
 2387+ 'proofreadpage_interval_too_large' => 'Грешка: растојанието е преголемо',
 2388+ 'proofreadpage_invalid_interval' => 'Грешка: погрешно растојание',
18572389 'proofreadpage_nextpage' => 'Следна страница',
18582390 'proofreadpage_prevpage' => 'Претходна страница',
18592391 'proofreadpage_header' => 'Заглавие (без вклучување):',
18602392 'proofreadpage_body' => 'Содржина на страница (се трансклудира):',
 2393+ 'proofreadpage_footer' => 'Долна колон цифра (noinclude):',
 2394+ 'proofreadpage_toggleheaders' => 'превклучи ја видливоста на noinclude пасусите',
 2395+ 'proofreadpage_quality0_category' => 'Без текст',
 2396+ 'proofreadpage_quality1_category' => 'Непрегледана',
 2397+ 'proofreadpage_quality2_category' => 'Проблематично',
 2398+ 'proofreadpage_quality3_category' => 'Прегледано',
 2399+ 'proofreadpage_quality4_category' => 'Потврдено',
 2400+ 'proofreadpage_quality0_message' => 'Оваа страница нема потреба од преглед',
 2401+ 'proofreadpage_quality1_message' => 'Оваа страница е непрегледана',
 2402+ 'proofreadpage_quality2_message' => 'Се јави проблем при прегледувањето на оваа страница',
 2403+ 'proofreadpage_quality3_message' => 'Оваа страница е прегледана',
 2404+ 'proofreadpage_quality4_message' => 'Оваа страница е потврдена',
18612405 'proofreadpage_index_listofpages' => 'Листа на страници',
18622406 'proofreadpage_image_message' => 'Врска до индекс страницата',
18632407 'proofreadpage_page_status' => 'Статус на страница',
 2408+ 'proofreadpage_js_attributes' => 'Автор Наслов Година Издавач',
 2409+ 'proofreadpage_index_attributes' => 'Автор
 2410+Наслов
 2411+Година|Година на издавање
 2412+Издавач
 2413+Извор
 2414+Слика|Корица
 2415+Страници||20
 2416+Белешки||10',
 2417+ 'proofreadpage_pages' => '{{PLURAL:$1|страница|страници}}',
18642418 );
18652419
18662420 /** Malayalam (മലയാളം)
@@ -2029,10 +2583,12 @@
20302584 );
20312585
20322586 /** Dutch (Nederlands)
 2587+ * @author McDutchie
20332588 * @author SPQRobin
20342589 * @author Siebrand
20352590 */
20362591 $messages['nl'] = array(
 2592+ 'indexpages' => "Lijst van index-pagina's",
20372593 'proofreadpage_desc' => 'Maakt het mogelijk teksten eenvoudig te vergelijken met de oorspronkelijke scan',
20382594 'proofreadpage_namespace' => 'Pagina',
20392595 'proofreadpage_index_namespace' => 'Index',
@@ -2041,6 +2597,14 @@
20422598 'proofreadpage_index_expected' => 'Fout: er werd een index verwacht',
20432599 'proofreadpage_nosuch_index' => 'Fout: de index bestaat niet',
20442600 'proofreadpage_nosuch_file' => 'Fout: het aangegeven bestand bestaat niet',
 2601+ 'proofreadpage_badpage' => 'Verkeerde formaat',
 2602+ 'proofreadpage_badpagetext' => 'Het formaat van de pagina die u probeerde op te slaan is onjuist.',
 2603+ 'proofreadpage_indexdupe' => 'Dubbele verwijzing',
 2604+ 'proofreadpage_indexdupetext' => "Pagina's kunnen niet meer dan één keer op een indexpagina weergegeven worden.",
 2605+ 'proofreadpage_nologin' => 'Niet aangemeld',
 2606+ 'proofreadpage_nologintext' => "U moet [[Special:UserLogin|aanmelden]] om de proefleesstatus van pagina's te kunnen wijzigen.",
 2607+ 'proofreadpage_notallowed' => 'Wijzigen is niet toegestaan',
 2608+ 'proofreadpage_notallowedtext' => 'U mag de proefleesstatus van deze pagina niet wijzigen.',
20452609 'proofreadpage_number_expected' => 'Fout: er werd een numerieke waarde verwacht',
20462610 'proofreadpage_interval_too_large' => 'Fout: het interval is te groot',
20472611 'proofreadpage_invalid_interval' => 'Fout: er is een ongeldige interval opgegeven',
@@ -2055,6 +2619,11 @@
20562620 'proofreadpage_quality2_category' => 'Onvolledig',
20572621 'proofreadpage_quality3_category' => 'Proefgelezen',
20582622 'proofreadpage_quality4_category' => 'Gecontroleerd',
 2623+ 'proofreadpage_quality0_message' => 'Deze pagina hoeft niet te worden proefgelezen',
 2624+ 'proofreadpage_quality1_message' => 'Deze pagina is niet proefgelezen',
 2625+ 'proofreadpage_quality2_message' => 'Er was een probleem bij het proeflezen van deze pagina',
 2626+ 'proofreadpage_quality3_message' => 'Deze pagina is proefgelezen',
 2627+ 'proofreadpage_quality4_message' => 'Deze pagina is gecontroleerd',
20592628 'proofreadpage_index_listofpages' => 'Paginalijst',
20602629 'proofreadpage_image_message' => 'Verwijziging naar de indexpagina',
20612630 'proofreadpage_page_status' => 'Paginastatus',
@@ -2067,6 +2636,7 @@
20682637 Afbeelding|Omslag
20692638 Pagina's||20
20702639 Opmerkingen||10",
 2640+ 'proofreadpage_pages' => '{{PLURAL:$1|pagina|pagina\'s}}',
20712641 );
20722642
20732643 /** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
@@ -2082,8 +2652,10 @@
20832653 'proofreadpage_index' => 'Indeks',
20842654 'proofreadpage_index_expected' => 'Feil: Indeks forventa',
20852655 'proofreadpage_nosuch_index' => 'Feil: ingen slik indeks',
 2656+ 'proofreadpage_nosuch_file' => 'Feil: inga slik fil',
20862657 'proofreadpage_number_expected' => 'Feil: Talverdi forventa',
20872658 'proofreadpage_interval_too_large' => 'Feil: for stort intervall',
 2659+ 'proofreadpage_invalid_interval' => 'Feil: ugyldig intervall',
20882660 'proofreadpage_nextpage' => 'Neste side',
20892661 'proofreadpage_prevpage' => 'Førre side',
20902662 'proofreadpage_header' => 'Hovudseksjon (ikkje inkludert):',
@@ -2113,6 +2685,7 @@
21142686 * @author Jon Harald Søby
21152687 * @author Laaknor
21162688 * @author Nghtwlkr
 2689+ * @author Simny
21172690 */
21182691 $messages['no'] = array(
21192692 'proofreadpage_desc' => 'Tillat lett sammenligning av tekst med originalskanningen',
@@ -2123,6 +2696,10 @@
21242697 'proofreadpage_index_expected' => 'Feil: Indeks forventet',
21252698 'proofreadpage_nosuch_index' => 'Feil: ingen slik indeks',
21262699 'proofreadpage_nosuch_file' => 'Feil: ingen slik fil',
 2700+ 'proofreadpage_badpage' => 'Feil format',
 2701+ 'proofreadpage_nologin' => 'Ikke innlogget',
 2702+ 'proofreadpage_nologintext' => 'Du må være [[Special:UserLogin|innlogget]] for å kunne forandre status på korrekturlesningen på sider.',
 2703+ 'proofreadpage_notallowed' => 'Å gjøre en forandring er ikke lov',
21272704 'proofreadpage_number_expected' => 'Feil: Numerisk verdi forventet',
21282705 'proofreadpage_interval_too_large' => 'Feil: Intervall for stort',
21292706 'proofreadpage_invalid_interval' => 'Feil: ugyldig intervall',
@@ -2137,6 +2714,11 @@
21382715 'proofreadpage_quality2_category' => 'Ufullstendig',
21392716 'proofreadpage_quality3_category' => 'Korrekturlest',
21402717 'proofreadpage_quality4_category' => 'Validert',
 2718+ 'proofreadpage_quality0_message' => 'Denne siden trenger ikke korrekturleses',
 2719+ 'proofreadpage_quality1_message' => 'Denne siden er ikke korrekturlest',
 2720+ 'proofreadpage_quality2_message' => 'Det oppsto et problem når denne siden skulle korrekturleses',
 2721+ 'proofreadpage_quality3_message' => 'Denne siden er korrekturlest',
 2722+ 'proofreadpage_quality4_message' => 'Denne siden er godkjent',
21412723 'proofreadpage_index_listofpages' => 'Liste over sider',
21422724 'proofreadpage_image_message' => 'Lenke til indekssiden',
21432725 'proofreadpage_page_status' => 'Sidestatus',
@@ -2164,6 +2746,7 @@
21652747 * @author Cedric31
21662748 */
21672749 $messages['oc'] = array(
 2750+ 'indexpages' => "Lista de las paginas d'indèx",
21682751 'proofreadpage_desc' => 'Permet una comparason aisida entre lo tèxte e la numerizacion originala',
21692752 'proofreadpage_namespace' => 'Pagina',
21702753 'proofreadpage_index_namespace' => 'Indèx',
@@ -2172,6 +2755,14 @@
21732756 'proofreadpage_index_expected' => 'Error : un indèx es esperat',
21742757 'proofreadpage_nosuch_index' => "Error : l'indèx es pas estat trobat",
21752758 'proofreadpage_nosuch_file' => 'Error : lo fichièr es pas estat trobat',
 2759+ 'proofreadpage_badpage' => 'Format marrit',
 2760+ 'proofreadpage_badpagetext' => "Lo format de la pagina qu'ensajatz de publicar es incorrècte.",
 2761+ 'proofreadpage_indexdupe' => 'Ligam en doble',
 2762+ 'proofreadpage_indexdupetext' => "Las paginas pòdon pas èsser listadas mai d'un còp sus una pagina d'indèx.",
 2763+ 'proofreadpage_nologin' => 'Pas connectat',
 2764+ 'proofreadpage_nologintext' => "Vos cal èsser [[Special:UserLogin|connectat]] per modificar l'estatut de correccion de las paginas.",
 2765+ 'proofreadpage_notallowed' => 'Cambiament pas autorizat.',
 2766+ 'proofreadpage_notallowedtext' => "Sètz pas autorizat(ada) a modificar l'estatut de correccion d'aquesta pagina.",
21762767 'proofreadpage_number_expected' => 'Error : una valor numerica es esperada',
21772768 'proofreadpage_interval_too_large' => 'Error : interval tròp grand',
21782769 'proofreadpage_invalid_interval' => 'Error : interval invalid',
@@ -2180,12 +2771,17 @@
21812772 'proofreadpage_header' => 'Entèsta (noinclude) :',
21822773 'proofreadpage_body' => 'Contengut (transclusion) :',
21832774 'proofreadpage_footer' => 'Pè de pagina (noinclude) :',
2184 - 'proofreadpage_toggleheaders' => 'amagar/mostrar las seccions noinclude',
 2775+ 'proofreadpage_toggleheaders' => 'amagar/far veire las seccions noinclude',
21852776 'proofreadpage_quality0_category' => 'Sens tèxte',
21862777 'proofreadpage_quality1_category' => 'Pagina pas corregida',
21872778 'proofreadpage_quality2_category' => 'Pagina amb problèma',
21882779 'proofreadpage_quality3_category' => 'Pagina corregida',
21892780 'proofreadpage_quality4_category' => 'Pagina validada',
 2781+ 'proofreadpage_quality0_message' => 'Aquesta pagina a pas besonh d’èsser relegida',
 2782+ 'proofreadpage_quality1_message' => 'Aquesta pagina es pas estada relegida',
 2783+ 'proofreadpage_quality2_message' => "I a agut un problèma al moment de la relectura d'aquesta pagina",
 2784+ 'proofreadpage_quality3_message' => 'Aquesta pagina es estada relegida',
 2785+ 'proofreadpage_quality4_message' => 'Aquesta pagina es estada validada',
21902786 'proofreadpage_index_listofpages' => 'Lista de las paginas',
21912787 'proofreadpage_image_message' => "Ligam cap a l'indèx",
21922788 'proofreadpage_page_status' => 'Estat de la pagina',
@@ -2198,6 +2794,7 @@
21992795 Imatge|Imatge en cobertura
22002796 Paginas||20
22012797 Comentaris||10',
 2798+ 'proofreadpage_pages' => '{{PLURAL:$1|pagina|paginas}}',
22022799 );
22032800
22042801 /** Ossetic (Иронау)
@@ -2215,12 +2812,17 @@
22162813 */
22172814 $messages['pdc'] = array(
22182815 'proofreadpage_namespace' => 'Blatt',
 2816+ 'proofreadpage_image' => 'Bild',
 2817+ 'proofreadpage_nextpage' => 'Neegscht Blatt',
 2818+ 'proofreadpage_prevpage' => 'Letscht Blatt',
 2819+ 'proofreadpage_index_listofpages' => 'Lischt vun Bledder',
22192820 );
22202821
22212822 /** Polish (Polski)
22222823 * @author Sp5uhe
22232824 */
22242825 $messages['pl'] = array(
 2826+ 'indexpages' => 'Spis stron indeksów',
22252827 'proofreadpage_desc' => 'Umożliwia łatwe porównanie treści ze skanem oryginału',
22262828 'proofreadpage_namespace' => 'Strona',
22272829 'proofreadpage_index_namespace' => 'Indeks',
@@ -2229,6 +2831,14 @@
22302832 'proofreadpage_index_expected' => 'Błąd – oczekiwano indeksu',
22312833 'proofreadpage_nosuch_index' => 'Błąd – nie ma takiego indeksu',
22322834 'proofreadpage_nosuch_file' => 'Błąd – nie ma takiego pliku',
 2835+ 'proofreadpage_badpage' => 'Zły format',
 2836+ 'proofreadpage_badpagetext' => 'Format strony którą próbujesz zapisać jest nieprawidłowy.',
 2837+ 'proofreadpage_indexdupe' => 'Zdublowany link',
 2838+ 'proofreadpage_indexdupetext' => 'Strony nie mogą być wymienione więcej niż jeden raz na stronie indeksu.',
 2839+ 'proofreadpage_nologin' => 'Niezalogowany',
 2840+ 'proofreadpage_nologintext' => 'Musisz [[Special:UserLogin|zalogować się]], aby zmienić status proofreading strony.',
 2841+ 'proofreadpage_notallowed' => 'Zmiana niedozwolona',
 2842+ 'proofreadpage_notallowedtext' => 'Zmiana statusu proofreeding tej strony przez Ciebie jest niedozwolona.',
22332843 'proofreadpage_number_expected' => 'Błąd – oczekiwano liczby',
22342844 'proofreadpage_interval_too_large' => 'Błąd – zbyt duży odstęp',
22352845 'proofreadpage_invalid_interval' => 'Błąd – nieprawidłowy odstęp',
@@ -2243,6 +2853,11 @@
22442854 'proofreadpage_quality2_category' => 'Problemy',
22452855 'proofreadpage_quality3_category' => 'Skorygowana',
22462856 'proofreadpage_quality4_category' => 'Uwierzytelniona',
 2857+ 'proofreadpage_quality0_message' => 'Ta strona nie wymaga korekty',
 2858+ 'proofreadpage_quality1_message' => 'Ta strona nie została skorygowana',
 2859+ 'proofreadpage_quality2_message' => 'Wystąpił problem przy korekcie tej stronie',
 2860+ 'proofreadpage_quality3_message' => 'Ta strona została skorygowana',
 2861+ 'proofreadpage_quality4_message' => 'Ta strona została zatwierdzona',
22472862 'proofreadpage_index_listofpages' => 'Spis stron',
22482863 'proofreadpage_image_message' => 'Link do strony indeksowej',
22492864 'proofreadpage_page_status' => 'Status strony',
@@ -2255,6 +2870,7 @@
22562871 Ilustracja|Okładka
22572872 Strony||20
22582873 Uwagi||10',
 2874+ 'proofreadpage_pages' => '{{PLURAL:$1|strona|strony|stron}}',
22592875 );
22602876
22612877 /** Piedmontese (Piemontèis)
@@ -2300,6 +2916,7 @@
23012917
23022918 /** Portuguese (Português)
23032919 * @author 555
 2920+ * @author Giro720
23042921 * @author Malafaya
23052922 * @author Waldir
23062923 */
@@ -2311,8 +2928,10 @@
23122929 'proofreadpage_index' => 'Índice',
23132930 'proofreadpage_index_expected' => 'Erro: índice esperado',
23142931 'proofreadpage_nosuch_index' => 'Erro: índice não existe',
 2932+ 'proofreadpage_nologin' => 'Não se encontra autenticado',
23152933 'proofreadpage_number_expected' => 'Erro: valor numérico esperado',
23162934 'proofreadpage_interval_too_large' => 'Erro: intervalo demasiado grande',
 2935+ 'proofreadpage_invalid_interval' => 'Erro: intervalo inválido',
23172936 'proofreadpage_nextpage' => 'Próxima página',
23182937 'proofreadpage_prevpage' => 'Página anterior',
23192938 'proofreadpage_header' => 'Cabeçalho (em modo noinclude):',
@@ -2324,6 +2943,7 @@
23252944 'proofreadpage_quality2_category' => 'Problemáticas',
23262945 'proofreadpage_quality3_category' => 'Revistas e corrigidas',
23272946 'proofreadpage_quality4_category' => 'Validadas',
 2947+ 'proofreadpage_quality4_message' => 'Esta página foi validada',
23282948 'proofreadpage_index_listofpages' => 'Lista de páginas',
23292949 'proofreadpage_image_message' => 'Link para a página de índice',
23302950 'proofreadpage_page_status' => 'Estado da página',
@@ -2340,6 +2960,7 @@
23412961
23422962 /** Brazilian Portuguese (Português do Brasil)
23432963 * @author Eduardo.mps
 2964+ * @author Luckas Blade
23442965 */
23452966 $messages['pt-br'] = array(
23462967 'proofreadpage_desc' => 'Permite a comparação fácil de um texto com a sua digitalização original',
@@ -2347,6 +2968,7 @@
23482969 'proofreadpage_index_namespace' => 'Índice',
23492970 'proofreadpage_image' => 'imagem',
23502971 'proofreadpage_index' => 'Índice',
 2972+ 'proofreadpage_notallowed' => 'Alteração não permitida',
23512973 'proofreadpage_nextpage' => 'Próxima página',
23522974 'proofreadpage_prevpage' => 'Página anterior',
23532975 'proofreadpage_header' => 'Cabeçalho (em modo noinclude):',
@@ -2396,16 +3018,33 @@
23973019 );
23983020
23993021 /** Romanian (Română)
 3022+ * @author Firilacroco
24003023 * @author KlaudiuMihaila
24013024 * @author Mihai
24023025 */
24033026 $messages['ro'] = array(
 3027+ 'indexpages' => 'Lista paginilor index',
24043028 'proofreadpage_namespace' => 'Pagină',
24053029 'proofreadpage_index_namespace' => 'Index',
24063030 'proofreadpage_image' => 'imagine',
24073031 'proofreadpage_index' => 'Index',
 3032+ 'proofreadpage_index_expected' => 'Eroare: index aşteptat',
 3033+ 'proofreadpage_nosuch_index' => 'Eroare: index inexistent',
 3034+ 'proofreadpage_nosuch_file' => 'Eroare: fişier inexistent',
 3035+ 'proofreadpage_badpage' => 'Format greşit',
 3036+ 'proofreadpage_badpagetext' => 'Formatul paginii în care se doreşte salvarea este incorect.',
 3037+ 'proofreadpage_indexdupe' => 'Legătură duplicat',
 3038+ 'proofreadpage_indexdupetext' => 'Paginile nu pot fi afişate de mai multe ori într-o pagină index.',
 3039+ 'proofreadpage_nologin' => 'Nu sunteţi autentificat',
 3040+ 'proofreadpage_notallowed' => 'Schimbare nepermisă',
 3041+ 'proofreadpage_number_expected' => 'Eroare: valoare numerică aşteptată',
 3042+ 'proofreadpage_interval_too_large' => 'Eroare: interval prea mare',
 3043+ 'proofreadpage_invalid_interval' => 'Eroare: interval incorect',
24083044 'proofreadpage_nextpage' => 'Pagina următoare',
24093045 'proofreadpage_prevpage' => 'Pagina anterioară',
 3046+ 'proofreadpage_quality0_category' => 'Fără text',
 3047+ 'proofreadpage_quality2_category' => 'Problematic',
 3048+ 'proofreadpage_quality4_category' => 'Validat',
24103049 'proofreadpage_index_listofpages' => 'Lista paginilor',
24113050 'proofreadpage_image_message' => 'Legătură către pagina index',
24123051 'proofreadpage_page_status' => 'Pagina status',
@@ -2437,9 +3076,11 @@
24383077 /** Russian (Русский)
24393078 * @author Ferrer
24403079 * @author Innv
 3080+ * @author Lockal
24413081 * @author Александр Сигачёв
24423082 */
24433083 $messages['ru'] = array(
 3084+ 'indexpages' => 'Список индексных страниц',
24443085 'proofreadpage_desc' => 'Позволяет в удобном виде сравнивать текст и отсканированное изображение оригинала',
24453086 'proofreadpage_namespace' => 'Страница',
24463087 'proofreadpage_index_namespace' => 'Индекс',
@@ -2448,6 +3089,14 @@
24493090 'proofreadpage_index_expected' => 'Ошибка. Индекс не обнаружен.',
24503091 'proofreadpage_nosuch_index' => 'Ошибка. Нет такого индекса.',
24513092 'proofreadpage_nosuch_file' => 'Ошибка: нет такого файла',
 3093+ 'proofreadpage_badpage' => 'Неправильный формат',
 3094+ 'proofreadpage_badpagetext' => 'Ошибочный формат записываемой страницы.',
 3095+ 'proofreadpage_indexdupe' => 'Ссылка-дубликат',
 3096+ 'proofreadpage_indexdupetext' => 'Страницы не могут быть перечислены на индексной странице более одного раза.',
 3097+ 'proofreadpage_nologin' => 'Не выполнен вход',
 3098+ 'proofreadpage_nologintext' => 'Вы должны [[Special:UserLogin|представиться системе]] для изменения статуса вычитки страниц.',
 3099+ 'proofreadpage_notallowed' => 'Изменение не допускается',
 3100+ 'proofreadpage_notallowedtext' => 'Вы не можете изменить статус вычитки этой страницы.',
24523101 'proofreadpage_number_expected' => 'Ошибка. Ожидается числовое значение.',
24533102 'proofreadpage_interval_too_large' => 'Ошибка. Слишком большой промежуток.',
24543103 'proofreadpage_invalid_interval' => 'Ошибка: неправильный интервал',
@@ -2462,6 +3111,11 @@
24633112 'proofreadpage_quality2_category' => 'Проблемная',
24643113 'proofreadpage_quality3_category' => 'Вычитана',
24653114 'proofreadpage_quality4_category' => 'Проверена',
 3115+ 'proofreadpage_quality0_message' => 'Эта страница не требует вычитки',
 3116+ 'proofreadpage_quality1_message' => 'Эта страница не была вычитана',
 3117+ 'proofreadpage_quality2_message' => 'Есть проблемы при вычитке этой страницы',
 3118+ 'proofreadpage_quality3_message' => 'Эта страница была вычитана',
 3119+ 'proofreadpage_quality4_message' => 'Эта страница выверена',
24663120 'proofreadpage_index_listofpages' => 'Список страниц',
24673121 'proofreadpage_image_message' => 'Ссылка на страницу индекса',
24683122 'proofreadpage_page_status' => 'Статус страницы',
@@ -2473,13 +3127,15 @@
24743128 Источник
24753129 Изображение|Изображение обложки
24763130 Страниц||20
2477 -Примечаний||10',
 3131+Примечания||10',
 3132+ 'proofreadpage_pages' => '{{PLURAL:$1|страница|страницы|страниц}}',
24783133 );
24793134
24803135 /** Yakut (Саха тыла)
24813136 * @author HalanTul
24823137 */
24833138 $messages['sah'] = array(
 3139+ 'indexpages' => 'Индекс сирэйдэрин тиһигэ',
24843140 'proofreadpage_desc' => 'Оригинаалы уонна скаанердаммыт ойууну тэҥнээн көрөр кыаҕы биэрэр',
24853141 'proofreadpage_namespace' => 'Сирэй',
24863142 'proofreadpage_index_namespace' => 'Индекс',
@@ -2488,6 +3144,14 @@
24893145 'proofreadpage_index_expected' => 'Алҕас: Индекс көстүбэтэ',
24903146 'proofreadpage_nosuch_index' => 'Алҕас: Маннык индекс суох',
24913147 'proofreadpage_nosuch_file' => 'Алҕас: маннык билэ суох',
 3148+ 'proofreadpage_badpage' => 'Сыыһа формаат',
 3149+ 'proofreadpage_badpagetext' => 'Суруллар сирэй атын формааттаах.',
 3150+ 'proofreadpage_indexdupe' => 'Хос сигэ',
 3151+ 'proofreadpage_indexdupetext' => 'Сирэй индекс сирэйигэр хаста да суруллубат.',
 3152+ 'proofreadpage_nologin' => 'Киирии сатаммата (сатамматах)',
 3153+ 'proofreadpage_nologintext' => 'Сирэйи бэрэбиэркэлээһин туругун уларытарга [[Special:UserLogin|бэлиэтэммит ааккын этиэхтээххин]].',
 3154+ 'proofreadpage_notallowed' => 'Уларытар сатаммат',
 3155+ 'proofreadpage_notallowedtext' => 'Бу сирэйи бэрэбиэркэлээһин туругун уларытар кыаҕыҥ суох.',
24923156 'proofreadpage_number_expected' => 'Алҕас: Чыыһыла наада',
24933157 'proofreadpage_interval_too_large' => 'Алҕас: наһаа улахан кээмэйи эппиккин',
24943158 'proofreadpage_invalid_interval' => 'Алҕас: сыыһа интервал',
@@ -2502,6 +3166,11 @@
25033167 'proofreadpage_quality2_category' => 'Моһоллоох',
25043168 'proofreadpage_quality3_category' => 'Ааҕыллыбыт',
25053169 'proofreadpage_quality4_category' => 'Бэрэбиэркэлэммит',
 3170+ 'proofreadpage_quality0_message' => 'Бу сирэй бэрэбиэркэлэнэрэ ирдэммэт',
 3171+ 'proofreadpage_quality1_message' => 'Бу сирэй тургутуллубатах',
 3172+ 'proofreadpage_quality2_message' => 'Бу сирэйи тургутарга туох эрэ моһол үөскээбит',
 3173+ 'proofreadpage_quality3_message' => 'Бу сирэй тургутуллубут',
 3174+ 'proofreadpage_quality4_message' => 'Бу сирэй бэрэбиэкэлэммит (выверка)',
25063175 'proofreadpage_index_listofpages' => 'Сирэйдэр испииһэктэрэ',
25073176 'proofreadpage_image_message' => 'Индекс сирэйигэр ыйынньык',
25083177 'proofreadpage_page_status' => 'Сирэй статуһа',
@@ -2514,6 +3183,7 @@
25153184 Ойуу|Таһын ойуута
25163185 Сирэйин ахсаана||20
25173186 Хос быһаарыылара||10',
 3187+ 'proofreadpage_pages' => '{{PLURAL:$1|сирэй|сирэйдээх}}',
25183188 );
25193189
25203190 /** Sardinian (Sardu)
@@ -2528,6 +3198,7 @@
25293199 * @author Helix84
25303200 */
25313201 $messages['sk'] = array(
 3202+ 'indexpages' => 'Zoznam indexových stránok',
25323203 'proofreadpage_desc' => 'Umožňuje jednoduché porovnanie textu s originálnym skenom',
25333204 'proofreadpage_namespace' => 'Stránka',
25343205 'proofreadpage_index_namespace' => 'Index',
@@ -2536,6 +3207,14 @@
25373208 'proofreadpage_index_expected' => 'Chyba: očakával sa index',
25383209 'proofreadpage_nosuch_index' => 'Chyba: taký index neexistuje',
25393210 'proofreadpage_nosuch_file' => 'Chyba: Taký súbor neexistuje',
 3211+ 'proofreadpage_badpage' => 'Nesprávny formát',
 3212+ 'proofreadpage_badpagetext' => 'Formát stránky, ktorú ste sa pokúsili uložiť nie je správny.',
 3213+ 'proofreadpage_indexdupe' => 'Duplicitný odkaz',
 3214+ 'proofreadpage_indexdupetext' => 'Stránky nemožno na indexovej stránke uviesť viac ako raz.',
 3215+ 'proofreadpage_nologin' => 'Nie ste prihlásený',
 3216+ 'proofreadpage_nologintext' => 'Ak chcete meniť stav skontrolovania stránky, musíte sa [[Special:UserLogin|prihlásiť]].',
 3217+ 'proofreadpage_notallowed' => 'Zmena nie je dovolená',
 3218+ 'proofreadpage_notallowedtext' => 'Nemáte dovolené zmeniť stav skontrolovania tejto stránky.',
25403219 'proofreadpage_number_expected' => 'Chyba: očakávala sa číselná hodnota',
25413220 'proofreadpage_interval_too_large' => 'Chyba: interval je príliš veľký',
25423221 'proofreadpage_invalid_interval' => 'Chyba: neplatný interval',
@@ -2550,6 +3229,11 @@
25513230 'proofreadpage_quality2_category' => 'Problematické',
25523231 'proofreadpage_quality3_category' => 'Skontrolované',
25533232 'proofreadpage_quality4_category' => 'Overené',
 3233+ 'proofreadpage_quality0_message' => 'Túto stránku netreba kontrolovať',
 3234+ 'proofreadpage_quality1_message' => 'Táto stránka nebola skontrolovaná',
 3235+ 'proofreadpage_quality2_message' => 'Nastal problém pri kontrolovaní tejto stránky',
 3236+ 'proofreadpage_quality3_message' => 'Táto stránka bola skontrolovaná',
 3237+ 'proofreadpage_quality4_message' => 'Táto stránka bola overená',
25543238 'proofreadpage_index_listofpages' => 'Zoznam stránok',
25553239 'proofreadpage_image_message' => 'Odkaz na stránku index',
25563240 'proofreadpage_page_status' => 'Stav stránky',
@@ -2562,6 +3246,7 @@
25633247 Obrázok|Obálka
25643248 Strán||20
25653249 Poznámky||10',
 3250+ 'proofreadpage_pages' => '{{PLURAL:$1|stránka|stránky|stránok}}',
25663251 );
25673252
25683253 /** Slovenian (Slovenščina) */
@@ -2573,7 +3258,7 @@
25743259 'proofreadpage_quality4_category' => 'Potrjeno',
25753260 );
25763261
2577 -/** Serbian Cyrillic ekavian (ћирилица)
 3262+/** Serbian Cyrillic ekavian (Српски (ћирилица))
25783263 * @author Millosh
25793264 * @author Sasa Stefanovic
25803265 * @author Михајло Анђелковић
@@ -2590,7 +3275,7 @@
25913276 'proofreadpage_body' => 'Тело стране (за укључивање):',
25923277 'proofreadpage_footer' => 'Подножје (без укључивања):',
25933278 'proofreadpage_toggleheaders' => 'управљање видљивошћу делова који се не укључују',
2594 - 'proofreadpage_quality0_category' => 'Празно',
 3279+ 'proofreadpage_quality0_category' => 'Без текста',
25953280 'proofreadpage_quality1_category' => 'Непрегледано',
25963281 'proofreadpage_quality2_category' => 'Проблематично',
25973282 'proofreadpage_quality3_category' => 'Прегледано',
@@ -2609,6 +3294,40 @@
26103295 примедбе||10',
26113296 );
26123297
 3298+/** Serbian Latin ekavian (Srpski (latinica))
 3299+ * @author Michaello
 3300+ */
 3301+$messages['sr-el'] = array(
 3302+ 'proofreadpage_desc' => 'Omogući lako upoređivanje teksta i originalnog skena.',
 3303+ 'proofreadpage_namespace' => 'Strana',
 3304+ 'proofreadpage_index_namespace' => 'indeks',
 3305+ 'proofreadpage_image' => 'slika',
 3306+ 'proofreadpage_index' => 'indeks',
 3307+ 'proofreadpage_nextpage' => 'Sledeća strana',
 3308+ 'proofreadpage_prevpage' => 'Prethodna strana',
 3309+ 'proofreadpage_header' => 'Zaglavlje (bez uključivanja):',
 3310+ 'proofreadpage_body' => 'Telo strane (za uključivanje):',
 3311+ 'proofreadpage_footer' => 'Podnožje (bez uključivanja):',
 3312+ 'proofreadpage_toggleheaders' => 'upravljanje vidljivošću delova koji se ne uključuju',
 3313+ 'proofreadpage_quality0_category' => 'Bez teksta',
 3314+ 'proofreadpage_quality1_category' => 'Nepregledano',
 3315+ 'proofreadpage_quality2_category' => 'Problematično',
 3316+ 'proofreadpage_quality3_category' => 'Pregledano',
 3317+ 'proofreadpage_quality4_category' => 'Overeno',
 3318+ 'proofreadpage_index_listofpages' => 'Spisak strana',
 3319+ 'proofreadpage_image_message' => 'Veza ka indeksu strane.',
 3320+ 'proofreadpage_page_status' => 'Status strane',
 3321+ 'proofreadpage_js_attributes' => 'autor naslov godina izdavač',
 3322+ 'proofreadpage_index_attributes' => 'autor
 3323+naslov
 3324+godina|godina publikacije
 3325+izdavač
 3326+izvor
 3327+slika|naslovna strana
 3328+strana||20
 3329+primedbe||10',
 3330+);
 3331+
26133332 /** Seeltersk (Seeltersk)
26143333 * @author Pyt
26153334 */
@@ -2667,16 +3386,33 @@
26683387 );
26693388
26703389 /** Swedish (Svenska)
 3390+ * @author Fluff
26713391 * @author Lejonel
26723392 * @author M.M.S.
26733393 * @author Najami
 3394+ * @author Rotsee
26743395 */
26753396 $messages['sv'] = array(
 3397+ 'indexpages' => 'Sidor med innehållsförteckningar',
26763398 'proofreadpage_desc' => 'Ger möjlighet att korrekturläsa texter mot scannade original',
26773399 'proofreadpage_namespace' => 'Sida',
26783400 'proofreadpage_index_namespace' => 'Index',
26793401 'proofreadpage_image' => 'bild',
26803402 'proofreadpage_index' => 'Indexsida',
 3403+ 'proofreadpage_index_expected' => 'Fel: index förväntades',
 3404+ 'proofreadpage_nosuch_index' => 'Fel: index saknas',
 3405+ 'proofreadpage_nosuch_file' => 'Fel: fil saknas',
 3406+ 'proofreadpage_badpage' => 'Fel format',
 3407+ 'proofreadpage_badpagetext' => 'Sidan du försöker spara har ett felaktigt format.',
 3408+ 'proofreadpage_indexdupe' => 'Dubblett av länk',
 3409+ 'proofreadpage_indexdupetext' => 'Sidor kan inte listas mer än en gång på en index-sida.',
 3410+ 'proofreadpage_nologin' => 'Ej inloggad',
 3411+ 'proofreadpage_nologintext' => 'Du måste vara [[Special:UserLogin|inloggad]] för att förändra status på korrekturläsningen av sidor.',
 3412+ 'proofreadpage_notallowed' => 'Förändring är inte tillåten',
 3413+ 'proofreadpage_notallowedtext' => 'Du har inte rättigheter att ändra status på korrekturläsningen av den här sidan.',
 3414+ 'proofreadpage_number_expected' => 'Fel: ett numeriskt värde förväntades',
 3415+ 'proofreadpage_interval_too_large' => 'Fel: ett för stort intervall',
 3416+ 'proofreadpage_invalid_interval' => 'Fel: ogiltigt intervall',
26813417 'proofreadpage_nextpage' => 'Nästa sida',
26823418 'proofreadpage_prevpage' => 'Föregående sida',
26833419 'proofreadpage_header' => 'Sidhuvud (inkluderas ej):',
@@ -2688,6 +3424,11 @@
26893425 'proofreadpage_quality2_category' => 'Ofullständigt',
26903426 'proofreadpage_quality3_category' => 'Korrekturläst',
26913427 'proofreadpage_quality4_category' => 'Validerat',
 3428+ 'proofreadpage_quality0_message' => 'Den här sidan behöver inte korrekturläsas',
 3429+ 'proofreadpage_quality1_message' => 'Den här sidan har inte korrekturlästs',
 3430+ 'proofreadpage_quality2_message' => 'Ett problem uppstod när den här sidan skulle korrekturläsas',
 3431+ 'proofreadpage_quality3_message' => 'Den här sidan har korrekturlästs',
 3432+ 'proofreadpage_quality4_message' => 'Den här sidan har godkänts',
26923433 'proofreadpage_index_listofpages' => 'Lista över sidor',
26933434 'proofreadpage_image_message' => 'Länk till indexsidan',
26943435 'proofreadpage_page_status' => 'Sidans status',
@@ -2700,6 +3441,7 @@
27013442 Bild|Omslagsbild
27023443 Sidor||20
27033444 Anmärkningar||10',
 3445+ 'proofreadpage_pages' => '{{PLURAL:$1|sida|sidor}}',
27043446 );
27053447
27063448 /** Silesian (Ślůnski)
@@ -2713,6 +3455,7 @@
27143456 );
27153457
27163458 /** Telugu (తెలుగు)
 3459+ * @author Kiranmayee
27173460 * @author Mpradeep
27183461 * @author Veeven
27193462 */
@@ -2721,10 +3464,12 @@
27223465 'proofreadpage_index_namespace' => 'సూచిక',
27233466 'proofreadpage_image' => 'బొమ్మ',
27243467 'proofreadpage_index' => 'సూచిక',
 3468+ 'proofreadpage_nologin' => 'ప్రవేశించలేదు',
27253469 'proofreadpage_nextpage' => 'తర్వాతి పేజీ',
27263470 'proofreadpage_prevpage' => 'గత పేజీ',
27273471 'proofreadpage_header' => 'శీర్షిక (కలుపకు):',
27283472 'proofreadpage_footer' => 'పాదము (కలుపకు):',
 3473+ 'proofreadpage_quality0_category' => 'పాఠ్యం లేకుండా',
27293474 'proofreadpage_quality2_category' => 'సమస్యాత్మకం',
27303475 'proofreadpage_quality4_category' => 'సరిచూడబడింది',
27313476 'proofreadpage_index_listofpages' => 'పేజీల జాబితా',
@@ -2857,6 +3602,7 @@
28583603 * @author Suelnur
28593604 */
28603605 $messages['tr'] = array(
 3606+ 'indexpages' => 'Endeks sayfalarının listesi',
28613607 'proofreadpage_desc' => 'Orijinal taramayla metnin kolayca karşılaştırılmasına izin verir',
28623608 'proofreadpage_namespace' => 'Sayfa',
28633609 'proofreadpage_index_namespace' => 'Endeks',
@@ -2865,6 +3611,14 @@
28663612 'proofreadpage_index_expected' => 'Hata: dizin bekleniyordu',
28673613 'proofreadpage_nosuch_index' => 'Hata: böyle bir dizin yok',
28683614 'proofreadpage_nosuch_file' => 'Hata: Böyle bir dosya yok',
 3615+ 'proofreadpage_badpage' => 'Yanlış Biçim',
 3616+ 'proofreadpage_badpagetext' => 'Kaydetmeye çalıştığınız sayfanın biçimi yanlış.',
 3617+ 'proofreadpage_indexdupe' => 'Yinelenen bağlantı',
 3618+ 'proofreadpage_indexdupetext' => 'Bir dizin sayfasında, sayfalar birden fazla listelenemez.',
 3619+ 'proofreadpage_nologin' => 'Giriş yapılmamış',
 3620+ 'proofreadpage_nologintext' => 'Sayfaların düzeltme durumunu değiştirmek için [[Special:UserLogin|giriş yapmış]] olmalısınız.',
 3621+ 'proofreadpage_notallowed' => 'Değişikliğe izin verilmiyor',
 3622+ 'proofreadpage_notallowedtext' => 'Bu sayfanın düzeltme durumunu değiştirmenize izin verilmiyor.',
28693623 'proofreadpage_number_expected' => 'Hata: sayısal değer bekleniyordu',
28703624 'proofreadpage_interval_too_large' => 'Hata: aralık çok büyük',
28713625 'proofreadpage_invalid_interval' => 'Hata: geçersiz aralık',
@@ -2879,6 +3633,11 @@
28803634 'proofreadpage_quality2_category' => 'Sorunlu',
28813635 'proofreadpage_quality3_category' => 'Düzelt',
28823636 'proofreadpage_quality4_category' => 'Doğrulanmış',
 3637+ 'proofreadpage_quality0_message' => 'Bu sayfada düzeltme yapılması gerekmez',
 3638+ 'proofreadpage_quality1_message' => 'Bu sayfada düzeltme yapılmadı',
 3639+ 'proofreadpage_quality2_message' => 'Bu sayfada düzeltme yapılırken bir sorun oluştu',
 3640+ 'proofreadpage_quality3_message' => 'Bu sayfada düzeltme yapıldı',
 3641+ 'proofreadpage_quality4_message' => 'Bu sayfa doğrulanmış',
28833642 'proofreadpage_index_listofpages' => 'Sayfalar listesi',
28843643 'proofreadpage_image_message' => 'Endeks sayfasına bağlantı',
28853644 'proofreadpage_page_status' => 'Sayfa durumu',
@@ -2891,6 +3650,7 @@
28923651 Resim|Kapak resmi
28933652 Sayfalar||20
28943653 Açıklamalar||10',
 3654+ 'proofreadpage_pages' => '{{PLURAL:$1|sayfa|sayfa}}',
28953655 );
28963656
28973657 /** Tsonga (Xitsonga)
@@ -2947,6 +3707,7 @@
29483708 * @author Candalua
29493709 */
29503710 $messages['vec'] = array(
 3711+ 'indexpages' => 'Elenco de le pagine de indice',
29513712 'proofreadpage_desc' => 'Parméte un façile confronto tra un testo e la so scansion original',
29523713 'proofreadpage_namespace' => 'Pagina',
29533714 'proofreadpage_index_namespace' => 'Indice',
@@ -2955,6 +3716,9 @@
29563717 'proofreadpage_index_expected' => 'Eròr: indice mancante',
29573718 'proofreadpage_nosuch_index' => "Eròr: sto indice no'l xe presente",
29583719 'proofreadpage_nosuch_file' => 'Eròr: file mia catà',
 3720+ 'proofreadpage_badpage' => 'Formato sbalià',
 3721+ 'proofreadpage_indexdupe' => 'Colegamento dopio',
 3722+ 'proofreadpage_notallowed' => 'Canbiamento mia parmesso',
29593723 'proofreadpage_number_expected' => 'Eròr: me spetavo un valor numerico',
29603724 'proofreadpage_interval_too_large' => 'Eròr: intervalo massa grando',
29613725 'proofreadpage_invalid_interval' => 'Eròr: intervalo mia valido',
@@ -2969,6 +3733,7 @@
29703734 'proofreadpage_quality2_category' => 'Da rivédar',
29713735 'proofreadpage_quality3_category' => 'Corèta',
29723736 'proofreadpage_quality4_category' => 'Verificà',
 3737+ 'proofreadpage_quality4_message' => 'Sta pagina la xe stà validà',
29733738 'proofreadpage_index_listofpages' => 'Lista de le pagine',
29743739 'proofreadpage_image_message' => 'Colegamento a la pagina indice',
29753740 'proofreadpage_page_status' => 'Status de la pagina',
@@ -2981,6 +3746,7 @@
29823747 Imagine|Imagine de copertina
29833748 Pagine||20
29843749 Note||10',
 3750+ 'proofreadpage_pages' => '{{PLURAL:$1|pagina|pagine}}',
29853751 );
29863752
29873753 /** Veps (Vepsan kel')
@@ -2992,15 +3758,22 @@
29933759 'proofreadpage_index_namespace' => 'Indeks',
29943760 'proofreadpage_image' => 'kuva',
29953761 'proofreadpage_index' => 'Indeks',
 3762+ 'proofreadpage_nosuch_index' => 'Petuz: ei ole mugošt indeksad',
 3763+ 'proofreadpage_nosuch_file' => 'Petuz: ei ole mugošt failad',
 3764+ 'proofreadpage_badpage' => 'Vär format',
 3765+ 'proofreadpage_indexdupe' => 'Kaksitadud kosketuz',
 3766+ 'proofreadpage_invalid_interval' => 'Petuz: vär interval',
29963767 'proofreadpage_nextpage' => "Jäl'ghine lehtpol'",
29973768 'proofreadpage_prevpage' => "Edeline lehtpol'",
29983769 'proofreadpage_header' => 'Pälkirjutez (ei ele mülütadud)',
29993770 'proofreadpage_body' => 'Lehtpolen tüvi (mülütadas):',
 3771+ 'proofreadpage_quality0_category' => 'Tekstata',
30003772 'proofreadpage_quality1_category' => 'Ei ole lugetud kodvaks',
30013773 'proofreadpage_quality2_category' => 'Problematine',
30023774 'proofreadpage_quality3_category' => 'Om lugetud kodvaks',
30033775 'proofreadpage_quality4_category' => 'Kodvdud da hüvästadud',
30043776 'proofreadpage_index_listofpages' => 'Lehtpoliden nimikirjutez',
 3777+ 'proofreadpage_page_status' => 'Lehtpolen status',
30053778 'proofreadpage_index_attributes' => "Avtor
30063779 Pälkirjutez
30073780 Voz'|Pästandvoz'
@@ -3016,6 +3789,7 @@
30173790 * @author Vinhtantran
30183791 */
30193792 $messages['vi'] = array(
 3793+ 'indexpages' => 'Danh sách các trang chỉ mục',
30203794 'proofreadpage_desc' => 'So sánh văn bản với hình quét gốc',
30213795 'proofreadpage_namespace' => 'Trang',
30223796 'proofreadpage_index_namespace' => 'Chỉ mục',
@@ -3023,8 +3797,18 @@
30243798 'proofreadpage_index' => 'Chỉ mục',
30253799 'proofreadpage_index_expected' => 'Lỗi: cần chỉ mục',
30263800 'proofreadpage_nosuch_index' => 'Lỗi: không có chỉ mục như vậy',
 3801+ 'proofreadpage_nosuch_file' => 'Lỗi: không có tập tin như vậy',
 3802+ 'proofreadpage_badpage' => 'Định dạng sai',
 3803+ 'proofreadpage_badpagetext' => 'Định dạng của trang bạn đang cố lưu là không đúng.',
 3804+ 'proofreadpage_indexdupe' => 'Liên kết lặp lại',
 3805+ 'proofreadpage_indexdupetext' => 'Không thể liệt kê trang quá một lần tại một trang chỉ mục.',
 3806+ 'proofreadpage_nologin' => 'Chưa đăng nhập',
 3807+ 'proofreadpage_nologintext' => 'Bạn phải [[Special:UserLogin|đăng nhập]] để sửa đổi tình trạng duyệt bài của trang.',
 3808+ 'proofreadpage_notallowed' => 'Không được phép thay đổi',
 3809+ 'proofreadpage_notallowedtext' => 'Bạn không được phép thay đổi tình trạng duyệt bài của trang này.',
30273810 'proofreadpage_number_expected' => 'Lỗi: cần giá trị số',
30283811 'proofreadpage_interval_too_large' => 'Lỗi: khoảng thời gian quá lớn',
 3812+ 'proofreadpage_invalid_interval' => 'Lỗi: khoảng thời gian không hợp lệ',
30293813 'proofreadpage_nextpage' => 'Trang trước',
30303814 'proofreadpage_prevpage' => 'Trang sau',
30313815 'proofreadpage_header' => 'Phần đầu (noinclude):',
@@ -3036,18 +3820,24 @@
30373821 'proofreadpage_quality2_category' => 'Có vấn đề',
30383822 'proofreadpage_quality3_category' => 'Hiệu đính',
30393823 'proofreadpage_quality4_category' => 'Phê chuẩn',
 3824+ 'proofreadpage_quality0_message' => 'Trang này không cần phải duyệt lại',
 3825+ 'proofreadpage_quality1_message' => 'Trang này chưa được duyệt lại',
 3826+ 'proofreadpage_quality2_message' => 'Có vấn đề khi duyệt lại trang này',
 3827+ 'proofreadpage_quality3_message' => 'Trang này đã được duyệt lại',
 3828+ 'proofreadpage_quality4_message' => 'Trang này đã được thông qua',
30403829 'proofreadpage_index_listofpages' => 'Danh sách các trang',
30413830 'proofreadpage_image_message' => 'Liên kết trang chỉ mục',
30423831 'proofreadpage_page_status' => 'Tình trạng của trang',
30433832 'proofreadpage_js_attributes' => 'Tác giả Tựa đề Năm Nhà xuất bản',
3044 - 'proofreadpage_index_attributes' => 'Author|Tác giả
3045 -Title|Tên
3046 -Year|Năm xuất bản
3047 -Publisher|Nhà xuất bản
3048 -Source|Nguồn
3049 -Image|Hình bìa
3050 -Pages|Các trang|20
3051 -Remarks|Ghi chú|10',
 3833+ 'proofreadpage_index_attributes' => 'Tác giả
 3834+Tựa đề
 3835+Năm|Năm xuất bản
 3836+Nhà xuất bản
 3837+Nguồn
 3838+Hình|Hình bìa
 3839+Các trang||20
 3840+Ghi chú||10',
 3841+ 'proofreadpage_pages' => '{{PLURAL:$1|trang|trang}}',
30523842 );
30533843
30543844 /** Volapük (Volapük)
@@ -3104,19 +3894,26 @@
31053895 備註||10',
31063896 );
31073897
3108 -/** Simplified Chinese (‪中文(简体)‬) */
 3898+/** Simplified Chinese (‪中文(简体)‬)
 3899+ * @author Liangent
 3900+ */
31093901 $messages['zh-hans'] = array(
3110 - 'proofreadpage_desc' => '容许简易地去比较原扫瞄和文字',
 3902+ 'proofreadpage_desc' => '容许简易地比较原扫描和文字',
31113903 'proofreadpage_namespace' => '页面',
31123904 'proofreadpage_index_namespace' => '索引',
31133905 'proofreadpage_image' => '图像',
31143906 'proofreadpage_index' => '索引',
 3907+ 'proofreadpage_badpage' => '错误的格式',
 3908+ 'proofreadpage_indexdupe' => '重复链接',
 3909+ 'proofreadpage_nologin' => '没有登录',
 3910+ 'proofreadpage_notallowed' => '更改不允许',
31153911 'proofreadpage_nextpage' => '下一页',
31163912 'proofreadpage_prevpage' => '上一页',
3117 - 'proofreadpage_header' => '首 (不包含):',
3118 - 'proofreadpage_body' => '页身 (包含):',
3119 - 'proofreadpage_footer' => '尾 (不包含):',
 3913+ 'proofreadpage_header' => '首 (不包含):',
 3914+ 'proofreadpage_body' => '页身 (包含):',
 3915+ 'proofreadpage_footer' => '尾 (不包含):',
31203916 'proofreadpage_toggleheaders' => '调整不包含段落之可见性',
 3917+ 'proofreadpage_quality0_category' => '没有文字',
31213918 'proofreadpage_quality1_category' => '未校对',
31223919 'proofreadpage_quality2_category' => '有问题',
31233920 'proofreadpage_quality3_category' => '已校对',
@@ -3135,23 +3932,28 @@
31363933 备注||10',
31373934 );
31383935
3139 -/** Traditional Chinese (‪中文(繁體)‬) */
 3936+/** Traditional Chinese (‪中文(繁體)‬)
 3937+ * @author Wrightbus
 3938+ */
31403939 $messages['zh-hant'] = array(
31413940 'proofreadpage_desc' => '容許簡易地去比較原掃瞄和文字',
31423941 'proofreadpage_namespace' => '頁面',
31433942 'proofreadpage_index_namespace' => '索引',
31443943 'proofreadpage_image' => '圖像',
31453944 'proofreadpage_index' => '索引',
 3945+ 'proofreadpage_badpage' => '格式錯誤',
 3946+ 'proofreadpage_nologin' => '未登入',
31463947 'proofreadpage_nextpage' => '下一頁',
31473948 'proofreadpage_prevpage' => '上一頁',
3148 - 'proofreadpage_header' => '首 (不包含):',
3149 - 'proofreadpage_body' => '頁身 (包含):',
3150 - 'proofreadpage_footer' => '尾 (不包含):',
 3949+ 'proofreadpage_header' => '首 (不包含):',
 3950+ 'proofreadpage_body' => '頁身 (包含):',
 3951+ 'proofreadpage_footer' => '尾 (不包含):',
31513952 'proofreadpage_toggleheaders' => '調整不包含段落之可見性',
31523953 'proofreadpage_quality1_category' => '未校對',
31533954 'proofreadpage_quality2_category' => '有問題',
31543955 'proofreadpage_quality3_category' => '已校對',
31553956 'proofreadpage_quality4_category' => '已認證',
 3957+ 'proofreadpage_quality1_message' => '本頁面尚未進行校對',
31563958 'proofreadpage_index_listofpages' => '頁面清單',
31573959 'proofreadpage_image_message' => '連到索引頁的連結',
31583960 'proofreadpage_page_status' => '頁面狀態',
Index: branches/wmf-deployment/extensions/ProofreadPage/proofread_index.js
@@ -45,6 +45,9 @@
4646 value = findparam(params,param_name);
4747 value = value.replace(/\{\{!\}\}/g,'|');
4848
 49+ if( (m[0]=="Header") && (value=="") ) value = prp_default_header;
 50+ if( (m[0]=="Footer") && (value=="") ) value = prp_default_footer;
 51+
4952 if(m[2]) size=m[2]; else size="1";
5053 if(size=="1") {
5154 str = str + '<td><input name="'+param_name+'" size=60 value="'+value+'"/></td></tr>';
@@ -52,7 +55,6 @@
5356 else{
5457 str = str +'<td><textarea name="'+param_name+'" cols=60 rows='+size+'>'+value+'</textarea></td></tr>';
5558 }
56 -
5759 }
5860 str = str +'</table>';
5961 container.innerHTML = str;
Index: branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.php
@@ -1,5 +1,10 @@
22 <?php
33
 4+/*
 5+ todo :
 6+ - check unicity of the index page : when index is saved too
 7+*/
 8+
49 if ( !defined( 'MEDIAWIKI' ) ) {
510 die( "ProofreadPage extension\n" );
611 }
@@ -9,16 +14,30 @@
1015 $wgExtensionMessagesFiles['ProofreadPage'] = dirname( __FILE__ ) . '/ProofreadPage.i18n.php';
1116
1217 $wgHooks['BeforePageDisplay'][] = 'pr_beforePageDisplay';
13 -$wgHooks['GetLinkColours'][] = 'pr_getLinkColours';
 18+$wgHooks['GetLinkColours'][] = 'pr_getLinkColoursHook';
1419 $wgHooks['ImageOpenShowImageInlineBefore'][] = 'pr_imageMessage';
15 -$wgHooks['ArticleSaveComplete'][] = 'pr_articleSave';
 20+$wgHooks['EditPage::attemptSave'][] = 'pr_attemptSave';
 21+$wgHooks['ArticleSaveComplete'][] = 'pr_articleSaveComplete';
 22+$wgHooks['ArticleDelete'][] = 'pr_articleDelete';
1623 $wgHooks['EditFormPreloadText'][] = 'pr_preloadText';
 24+$wgHooks['ArticlePurge'][] = 'pr_articlePurge';
 25+$wgHooks['SpecialMovepageAfterMove'][] = 'pr_movePage';
 26+$wgHooks['LoadExtensionSchemaUpdates'][] = 'pr_schema_update';
 27+$wgHooks['OutputPageBeforeHTML'][] = 'pr_OutputPageBeforeHTML';
 28+$wgHooks['EditPage::importFormData'][] = 'pr_formData';
1729
 30+
 31+# special page
 32+$wgAutoloadClasses['ProofreadPages'] = $dir . 'SpecialProofreadPages.php';
 33+$wgSpecialPages['IndexPages'] = 'ProofreadPages';
 34+$wgSpecialPageGroups['IndexPages'] = 'pages';
 35+
 36+
1837 # Allows for extracting text from djvu files. To enable, set to 'djvutxt' or similar
1938 $wgDjvutxt = null;
2039
2140 # Bump the version number every time you change proofread.js
22 -$wgProofreadPageVersion = 21;
 41+$wgProofreadPageVersion = 24;
2342
2443 # Max width of zoomable image
2544 $wgProofreadPageMaxWidth = 2048;
@@ -34,23 +53,59 @@
3554 );
3655
3756 $wgExtensionFunctions[] = "pr_main";
 57+
 58+
 59+function pr_schema_update() {
 60+ global $wgExtNewTables;
 61+ $base = dirname(__FILE__);
 62+ $wgExtNewTables[] = array( 'pr_index', "$base/ProofreadPage.sql" );
 63+ return true;
 64+}
 65+
 66+
 67+
3868 function pr_main() {
3969 global $wgParser;
 70+ global $pr_page_namespace, $pr_index_namespace;
4071 $wgParser->setHook( "pagelist", "pr_renderPageList" );
4172 $wgParser->setHook( "pages", "pr_renderPages" );
 73+ $wgParser->setHook( "pagequality", "pr_pageQuality" );
 74+ $pr_page_namespace = null;
 75+ $pr_index_namespace = null;
4276 }
4377
4478
 79+/*
 80+ * accessor functions for page and index namespaces
 81+ */
 82+function pr_page_ns() {
 83+ global $pr_page_namespace;
 84+ if( is_null($pr_page_namespace) ) {
 85+ wfLoadExtensionMessages( 'ProofreadPage' );
 86+ $pr_page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
 87+ }
 88+ return $pr_page_namespace;
 89+}
 90+
 91+function pr_index_ns() {
 92+ global $pr_index_namespace;
 93+ if( is_null($pr_index_namespace) ) {
 94+ wfLoadExtensionMessages( 'ProofreadPage' );
 95+ $pr_index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 96+ }
 97+ return $pr_index_namespace;
 98+}
 99+
 100+
 101+
45102 /**
46103 * Query the database to find if the current page is referred in an Index page.
47104 */
48105 function pr_load_index( $title ) {
49106
50 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
51 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
52 -
 107+ $page_namespace = pr_page_ns();
 108+ $index_namespace = pr_index_ns();
53109 $title->pr_index_title = NULL;
54 -
55110 $dbr = wfGetDB( DB_SLAVE );
56111 $result = $dbr->select(
57112 array( 'page', 'pagelinks' ),
@@ -74,7 +129,6 @@
75130 if ( $title->pr_index_title ) return;
76131
77132 /*check if we are a page of a multipage file*/
78 -
79133 if ( preg_match( "/^$page_namespace:(.*?)(\/([0-9]*)|)$/", $title->getPrefixedText(), $m ) ) {
80134 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
81135 }
@@ -85,49 +139,38 @@
86140 // if it is multipage, we use the page order of the file
87141 if ( $image && $image->exists() && $image->isMultiPage() ) {
88142
89 - $pagenr = 1;
90 - $parts = explode( '/', $title->getText() );
91 - if ( count( $parts ) > 1 ) {
92 - $pagenr = intval( array_pop( $parts ) );
93 - }
94 - $count = $image->pageCount();
95 - if ( $pagenr < 1 || $pagenr > $count || $count <= 1 ) {
96 - return $err;
97 - }
98143 $name = $image->getTitle()->getText();
99144 $index_name = "$index_namespace:$name";
100 - $prev_name = "$page_namespace:$name/" . ( $pagenr - 1 );
101 - $next_name = "$page_namespace:$name/" . ( $pagenr + 1 );
102 - $prev_url = ( $pagenr == 1 ) ? '' : Title::newFromText( $prev_name )->getFullURL();
103 - $next_url = ( $pagenr == $count ) ? '' : Title::newFromText( $next_name )->getFullURL();
104145
105 - $title->pr_page_num = "$pagenr";
106 -
107146 if ( !$title->pr_index_title ) {
108147 // there is no index, or the page is not listed in the index : use canonical index
109148 $title->pr_index_title = $index_name;
110149 }
111150 }
112 -
113 -
114151 }
115152
116153
117154 /**
118155 * return the URLs of the index, previous and next pages.
119156 */
120 -function pr_navigation( $image ) {
121 - global $wgTitle;
122 - $index_title = Title::newFromText( $wgTitle->pr_index_title );
 157+function pr_navigation( $title ) {
123158
124 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
125 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
126 - $err = array( '', '', '', array() );
 159+ $page_namespace = pr_page_ns();
 160+ $default_header = wfMsgGetKey( 'proofreadpage_default_header', true, true, false );
 161+ $default_footer = wfMsgGetKey( 'proofreadpage_default_footer', true, true, false );
127162
 163+ $err = array( '', '', '', '', '' );
 164+ $index_title = Title::newFromText( $title->pr_index_title );
 165+ if ( !$index_title ) {
 166+ return $err;
 167+ }
 168+
 169+ $imageTitle = Title::makeTitleSafe( NS_IMAGE, $index_title->getText() );
 170+ $image = wfFindFile( $imageTitle );
128171 // if multipage, we use the page order, but we should read pagenum from the index
129172 if ( $image && $image->exists() && $image->isMultiPage() ) {
130173 $pagenr = 1;
131 - $parts = explode( '/', $wgTitle->getText() );
 174+ $parts = explode( '/', $title->getText() );
132175 if ( count( $parts ) > 1 ) {
133176 $pagenr = intval( array_pop( $parts ) );
134177 }
@@ -136,59 +179,57 @@
137180 return $err;
138181 }
139182 $name = $image->getTitle()->getText();
140 - $index_name = "$index_namespace:$name";
141183 $prev_name = "$page_namespace:$name/" . ( $pagenr - 1 );
142184 $next_name = "$page_namespace:$name/" . ( $pagenr + 1 );
143185 $prev_url = ( $pagenr == 1 ) ? '' : Title::newFromText( $prev_name )->getFullURL();
144186 $next_url = ( $pagenr == $count ) ? '' : Title::newFromText( $next_name )->getFullURL();
145187
146 - if ( !$index_title ) {
147 - // there is no index, or the page is not listed in the index : use canonical index
148 - $index_title = Title::newFromText( $index_name );
149 - }
150188 } else {
151189 $prev_url = '';
152190 $next_url = '';
153191 }
154192
155 - if ( !$index_title ) {
156 - return array( '', $prev_url, $next_url, array() ) ;
157 - }
158 -
159193 $index_url = $index_title->getFullURL();
160194
161195 if ( !$index_title->exists() ) {
162 - return array( $index_url, $prev_url, $next_url, array() );
 196+ return array( $index_url, $prev_url, $next_url, $default_header, $default_footer );
163197 }
164198
165199 //if the index page exists, find current page number, previous and next pages
166 - list( $links, $params, $attributes ) = pr_parse_index($index_title);
 200+ list( $text_links, $links, $params, $attributes ) = pr_parse_index($index_title);
167201
168 - if($params){
169 - list($pagenum, $links, $mode) = pr_pageNumber($wgTitle->pr_page_num,$params);
 202+ if( $links==null ) {
 203+ list($pagenum, $links, $mode) = pr_pageNumber($pagenr,$params);
170204 $attributes["pagenum"] = $pagenum;
171 - }
172 - else{
 205+ } else {
173206 for( $i=0; $i<count( $links[1] ); $i++) {
174 - $a_title = Title::newFromText( $links[1][$i] );
 207+ $a_title = Title::newFromText( $page_namespace.":".$links[1][$i] );
175208 if(!$a_title) continue;
176 - if( $a_title->getPrefixedText() == $wgTitle->getPrefixedText() ) {
 209+ if( $a_title->getPrefixedText() == $title->getPrefixedText() ) {
177210 $attributes["pagenum"] = $links[3][$i];
178211 break;
179212 }
180213 }
181214 if( ($i>0) && ($i<count($links[1])) ){
182 - $prev_title = Title::newFromText( $links[1][$i-1] );
 215+ $prev_title = Title::newFromText( $page_namespace.":".$links[1][$i-1] );
183216 }
184217 if( ($i>=0) && ($i+1<count($links[1])) ){
185 - $next_title = Title::newFromText( $links[1][$i+1] );
 218+ $next_title = Title::newFromText( $page_namespace.":".$links[1][$i+1] );
186219 }
187220 if($prev_title) $prev_url = $prev_title->getFullURL();
188221 if($next_title) $next_url = $next_title->getFullURL();
189222 }
190223
191 - return array( $index_url, $prev_url, $next_url, $attributes );
 224+ // Header and Footer
 225+ $header = $attributes['header'] ? $attributes['header'] : $default_header;
 226+ $footer = $attributes['footer'] ? $attributes['footer'] : $default_footer;
 227+ foreach ( $attributes as $key => $val ) {
 228+ $header = str_replace( "{{{{$key}}}}", $val, $header );
 229+ $footer = str_replace( "{{{{$key}}}}", $val, $footer );
 230+ }
192231
 232+ return array( $index_url, $prev_url, $next_url, $header, $footer );
 233+
193234 }
194235
195236
@@ -198,19 +239,22 @@
199240 * it will return either a list of links or a list
200241 * of parameters to pagelist, and a list of attributes.
201242 */
202 -function pr_parse_index($index_title){
 243+function pr_parse_index( $index_title ){
203244
204245 $err = array( false, false, array() );
205 -
206 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
207 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
208 -
209246 if ( !$index_title ) return $err;
210247 if ( !$index_title->exists() ) return $err;
211248
212249 $rev = Revision::newFromTitle( $index_title );
213250 $text = $rev->getText();
 251+ return pr_parse_index_text( $text );
 252+}
214253
 254+
 255+function pr_parse_index_text( $text ){
 256+ global $wgParser;
 257+
 258+ $page_namespace = pr_page_ns();
215259 //check if it is using pagelist
216260 preg_match_all( "/<pagelist([^<]*?)\/>/is", $text, $m, PREG_PATTERN_ORDER );
217261 if( $m[1] ) {
@@ -222,10 +266,24 @@
223267 $links = null;
224268 } else {
225269 $params = null;
226 - $tag_pattern = "/\[\[($page_namespace:.*?)(\|(.*?)|)\]\]/i";
 270+ $tag_pattern = "/\[\[$page_namespace:(.*?)(\|(.*?)|)\]\]/i";
227271 preg_match_all( $tag_pattern, $text, $links, PREG_PATTERN_ORDER );
228272 }
229273
 274+ //links in ns-0. Only if mOptions exist
 275+ if( $wgParser->mOptions ) {
 276+ # We use Parser::replaceVariables to expand templates
 277+ # However this method has a side effect on wgParser->mOutput->mTemplates,
 278+ # To avoid this, we instanciate a temporary ParserOutput object
 279+ $saved_output = $wgParser->mOutput;
 280+ $wgParser->mOutput = new ParserOutput;
 281+ $rtext = $wgParser->replaceVariables( $text );
 282+ $wgParser->mOutput = $saved_output;
 283+ $text_links_pattern = "/\[\[([^:\|]*?)(\|(.*?)|)\]\]/i";
 284+ preg_match_all( $text_links_pattern, $rtext, $text_links, PREG_PATTERN_ORDER );
 285+ }
 286+ else $text_links = null;
 287+
230288 //read attributes
231289 $attributes = array();
232290 $var_names = explode(" ", wfMsgForContent('proofreadpage_js_attributes') );
@@ -239,7 +297,7 @@
240298 $attributes[$var] = '';
241299 }
242300 }
243 - return array( $links, $params, $attributes );
 301+ return array( $text_links, $links, $params, $attributes );
244302
245303 }
246304
@@ -250,7 +308,6 @@
251309 function pr_beforePageDisplay( &$out ) {
252310 global $wgTitle, $wgJsMimeType, $wgScriptPath, $wgRequest, $wgProofreadPageVersion;
253311
254 - wfLoadExtensionMessages( 'ProofreadPage' );
255312 $action = $wgRequest->getVal( 'action' );
256313 $isEdit = ( $action == 'submit' || $action == 'edit' ) ? 1 : 0;
257314 if ( !isset( $wgTitle ) || ( !$out->isArticle() && !$isEdit ) || isset( $out->proofreadPageDone ) ) {
@@ -258,16 +315,13 @@
259316 }
260317 $out->proofreadPageDone = true;
261318
262 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
 319+ $page_namespace = pr_page_ns();
263320 if ( preg_match( "/^$page_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) {
264 - if ( !isset( $wgTitle->pr_index_title ) ) {
265 - pr_load_index( $wgTitle );
266 - }
267321 pr_preparePage( $out, $m, $isEdit );
268322 return true;
269323 }
270324
271 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 325+ $index_namespace = pr_index_ns();
272326 if ( $isEdit && ( preg_match( "/^$index_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) ) {
273327 pr_prepareIndex( $out );
274328 return true;
@@ -288,15 +342,21 @@
289343 );
290344 $out->addScript( "<script type=\"{$wgJsMimeType}\">
291345 var prp_index_attributes = \"" . Xml::escapeJsString( wfMsgForContent( 'proofreadpage_index_attributes' ) ) . "\";
 346+var prp_default_header = \"" . Xml::escapeJsString( wfMsgGetKey( 'proofreadpage_default_header', true, true, false ) ) . "\";
 347+var prp_default_footer = \"" . Xml::escapeJsString( wfMsgGetKey( 'proofreadpage_default_footer', true, true, false ) ) . "\";
292348 </script>\n"
293349 );
294 -
295350 }
296351
297352
298353 function pr_preparePage( $out, $m, $isEdit ) {
299354 global $wgJsMimeType, $wgScriptPath, $wgRequest, $wgProofreadPageVersion, $wgProofreadPageMaxWidth;
 355+ global $wgTitle;
300356
 357+ if ( !isset( $wgTitle->pr_index_title ) ) {
 358+ pr_load_index( $wgTitle );
 359+ }
 360+
301361 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
302362 if ( !$imageTitle ) {
303363 return true;
@@ -329,7 +389,7 @@
330390 $thumbURL = '';
331391 }
332392
333 - list( $index_url, $prev_url, $next_url, $attributes ) = pr_navigation( $image );
 393+ list( $index_url, $prev_url, $next_url, $header, $footer ) = pr_navigation( $wgTitle );
334394
335395 $jsFile = htmlspecialchars( "$wgScriptPath/extensions/ProofreadPage/proofread.js?$wgProofreadPageVersion" );
336396
@@ -342,18 +402,9 @@
343403 'proofreadPageIndexURL' => $index_url,
344404 'proofreadPagePrevURL' => $prev_url,
345405 'proofreadPageNextURL' => $next_url,
346 - ) + $attributes;
347 -
348 - // Header and Footer
349 - $header = $attributes['header'] ? $attributes['header'] : wfMsgGetKey( 'proofreadpage_default_header', true, false, false );
350 - $footer = $attributes['footer'] ? $attributes['footer'] : wfMsgGetKey( 'proofreadpage_default_footer', true, false, false );
351 - foreach ( $attributes as $key => $val ) {
352 - $header = str_replace( "{{{{$key}}}}", $val, $header );
353 - $footer = str_replace( "{{{{$key}}}}", $val, $footer );
354 - }
355 - $jsVars['proofreadPageHeader'] = $header;
356 - $jsVars['proofreadPageFooter'] = $footer;
357 -
 406+ 'proofreadPageHeader' => $header,
 407+ 'proofreadPageFooter' => $footer,
 408+ );
358409 $varScript = Skin::makeVariablesScript( $jsVars );
359410
360411 $out->addScript( <<<EOT
@@ -386,35 +437,37 @@
387438
388439
389440 /**
390 - * Return the quality colour codes to pages linked from an index page
391 - * Update page counts in pr_index table
 441+ * Hook function
392442 */
393 -function pr_getLinkColours( $page_ids, &$colours ) {
 443+function pr_getLinkColoursHook( $page_ids, &$colours ) {
394444 global $wgTitle;
395445
396446 if ( !isset( $wgTitle ) ) {
397447 return true;
398448 }
399 - wfLoadExtensionMessages( 'ProofreadPage' );
400449
401450 // abort if we are not an index page
402 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
403 - if ( !preg_match( "/^$index_namespace:(.*?)$/", $wgTitle->getPrefixedText() ) ) {
 451+ $index_namespace = pr_index_ns();
 452+ if ( !preg_match( "/^$index_namespace:(.*?)$/", $wgTitle->getPrefixedText(), $m ) ) {
404453 return true;
405454 }
 455+ pr_getLinkColours( $page_ids, $colours );
 456+ return true;
 457+}
 458+
406459
407 - // counters
408 - $n = $n0 = $n1 = $n2 = $n3 = $n4 = 0;
 460+/**
 461+ * Return the quality colour codes to pages linked from an index page
 462+ */
 463+function pr_getLinkColours( $page_ids, &$colours ) {
409464
 465+ $page_namespace = pr_page_ns();
410466 $dbr = wfGetDB( DB_SLAVE );
411467 $catlinks = $dbr->tableName( 'categorylinks' );
412468 foreach ( $page_ids as $id => $pdbk ) {
413469 // consider only link in page namespace
414 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
415470 if ( preg_match( "/^$page_namespace:(.*?)$/", $pdbk ) ) {
416471 $colours[$pdbk] = 'quality1';
417 - $n++;
418 -
419472 if ( !isset( $query ) ) {
420473 $query = "SELECT cl_from, cl_to FROM $catlinks WHERE cl_from IN(";
421474 } else {
@@ -433,44 +486,35 @@
434487 switch( $x->cl_to ) {
435488 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality0_category' ) ):
436489 $colours[$pdbk] = 'quality0';
437 - $n0++;
438490 break;
439491 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality1_category' ) ):
440492 $colours[$pdbk] = 'quality1';
441 - $n1++;
442493 break;
443494 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality2_category' ) ):
444495 $colours[$pdbk] = 'quality2';
445 - $n2++;
446496 break;
447497 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality3_category' ) ):
448498 $colours[$pdbk] = 'quality3';
449 - $n3++;
450499 break;
451500 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality4_category' ) ):
452501 $colours[$pdbk] = 'quality4';
453 - $n4++;
454502 break;
455503 }
456504 }
457505 }
458 -
459 - return true;
460506 }
461507
462508 function pr_imageMessage( &$imgpage , &$wgOut ) {
463509 global $wgUser;
464 - $sk = $wgUser->getSkin();
465510
 511+ $index_namespace = pr_index_ns();
466512 $image = $imgpage->img;
467513 if ( !$image->isMultiPage() ) {
468514 return true;
469515 }
470516
471 - wfLoadExtensionMessages( 'ProofreadPage' );
472 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 517+ $sk = $wgUser->getSkin();
473518 $name = $image->getTitle()->getText();
474 -
475519 $link = $sk->makeKnownLink( "$index_namespace:$name", wfMsg( 'proofreadpage_image_message' ) );
476520 $wgOut->addHTML( "{$link}" );
477521
@@ -480,6 +524,7 @@
481525
482526 // credit : http://www.mediawiki.org/wiki/Extension:RomanNumbers
483527 function toRoman( $num ) {
 528+
484529 if ( $num < 0 || $num > 9999 ) {
485530 return - 1;
486531 }
@@ -511,6 +556,7 @@
512557
513558
514559 function pr_pageNumber( $i, $args ) {
 560+
515561 $mode = 'normal'; // default
516562 $offset = 0;
517563 $links = true;
@@ -562,14 +608,35 @@
563609
564610
565611 /*
 612+ * add the pagequality category.
 613+ * todo : display whether page has been proofread by the user or by someone else
 614+ */
 615+function pr_pageQuality( $input, $args ) {
 616+ global $wgUser, $wgTitle, $wgParser;
 617+
 618+ $page_namespace = pr_page_ns();
 619+ if ( !preg_match( "/^$page_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText() ) ) {
 620+ return "";
 621+ }
 622+ $q = $args['level'];
 623+ if( ! in_array( $q, array('0','1','2','3','4') ) ) {
 624+ return "";
 625+ }
 626+ $message = "<div id=\"pagequality\" width=100% class=quality$q>".wfMsgForContent( "proofreadpage_quality{$q}_message" )."</div>";
 627+ $out = "__NOEDITSECTION__[[Category:".wfMsgForContent( "proofreadpage_quality{$q}_category" )."]]";
 628+ return $wgParser->recursiveTagParse( $out . $message);
 629+}
 630+
 631+
 632+/*
566633 * Parser hook for index pages
567634 * Display a list of coloured links to pages
568635 */
569636 function pr_renderPageList( $input, $args ) {
570 - global $wgUser, $wgTitle;
571 - wfLoadExtensionMessages( 'ProofreadPage' );
 637+ global $wgUser, $wgTitle, $wgParser;
572638
573 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 639+ $page_namespace = pr_page_ns();
 640+ $index_namespace = pr_index_ns();
574641 if ( !preg_match( "/^$index_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) {
575642 return "";
576643 }
@@ -585,17 +652,10 @@
586653 }
587654
588655 $return = "";
 656+
589657 $name = $imageTitle->getDBkey();
590658 $count = $image->pageCount();
591 - $dbr = wfGetDB( DB_SLAVE );
592 - $pagetable = $dbr->tableName( 'page' );
593659
594 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
595 - $page_ns_index = MWNamespace::getCanonicalIndex( strtolower( $page_namespace ) );
596 - if ( $page_ns_index == NULL ) {
597 - $page_ns_index = NS_MAIN;
598 - }
599 -
600660 $from = $args['from'];
601661 $to = $args['to'];
602662 if( !$from ) $from = 1;
@@ -608,31 +668,6 @@
609669 return '<strong class="error">' . wfMsgForContent( 'proofreadpage_invalid_interval' ) . '</strong>';
610670 }
611671
612 - for ( $i = $from - 1; $i < $to; $i++ ) {
613 - if ( !isset( $query ) ) {
614 - $query = "SELECT page_id, page_title, page_namespace";
615 - $query .= " FROM $pagetable WHERE (page_namespace=" . intval( $page_ns_index ) . " AND page_title IN(";
616 - } else {
617 - $query .= ', ';
618 - }
619 - $link_name = "$name" . '/' . ( $i + 1 ) ;
620 - $query .= $dbr->addQuotes( $link_name );
621 - }
622 - $query .= '))';
623 - $res = $dbr->query( $query, __METHOD__ );
624 -
625 - $colours = array();
626 - $linkcolour_ids = array();
627 - while ( $s = $dbr->fetchObject( $res ) ) {
628 - $title = Title::makeTitle( $s->page_namespace, $s->page_title );
629 - $pdbk = $title->getPrefixedDBkey();
630 - $colours[$pdbk] = 'known';
631 - $linkcolour_ids[$s->page_id] = $pdbk;
632 - }
633 - pr_getLinkColours( $linkcolour_ids, $colours );
634 -
635 - $sk = $wgUser->getSkin();
636 -
637672 for ( $i = $from; $i < $to + 1; $i++ ) {
638673 $pdbk = "$page_namespace:$name" . '/' . $i ;
639674 list( $view, $links, $mode ) = pr_pageNumber( $i, $args );
@@ -652,14 +687,10 @@
653688 if ( $links == false ) {
654689 $return .= $view . " ";
655690 } else {
656 - if ( !isset( $colours[$pdbk] ) ) {
657 - $link = $sk->makeBrokenLinkObj( $title, $view );
658 - } else {
659 - $link = $sk->makeColouredLinkObj( $title, $colours[$pdbk], $view );
660 - }
661 - $return .= "{$link} ";
 691+ $return .= "[[".$title->getPrefixedText()."|$view]] ";
662692 }
663693 }
 694+ $return = $wgParser->recursiveTagParse($return);
664695 return $return;
665696 }
666697
@@ -668,21 +699,17 @@
669700
670701 /*
671702 * Parser hook that includes a list of pages.
672 - * It needs 3 parameters : index, from, to
673 - *
674 - * todo : handle LST...
 703+ * parameters : index, from, to, header
675704 */
676705 function pr_renderPages( $input, $args ) {
677706 global $wgParser, $wgTitle;
678707
679 - wfLoadExtensionMessages( 'ProofreadPage' );
680 -
681 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
682 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
683 -
 708+ $page_namespace = pr_page_ns();
 709+ $index_namespace = pr_index_ns();
684710 $index = $args['index'];
685711 $from = $args['from'];
686712 $to = $args['to'];
 713+ $header = $args['header'];
687714
688715 if( ! $index ) {
689716 return '<strong class="error">' . wfMsgForContent( 'proofreadpage_index_expected' ) . '</strong>';
@@ -692,8 +719,9 @@
693720 return '<strong class="error">' . wfMsgForContent( 'proofreadpage_nosuch_index' ) . '</strong>';
694721 }
695722
696 - $out = '<span id="pr_index" class="hiddenStructure"><a href="'.$index_title->escapeFullUrl().'">'.$index_namespace.'</a> </span>';
697 - list( $links, $params, $attributes ) = pr_parse_index( $index_title );
 723+ $out = '';
 724+
 725+ list( $text_links, $links, $params, $attributes ) = pr_parse_index( $index_title );
698726
699727 if( $links==null ) {
700728 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $index );
@@ -722,50 +750,258 @@
723751 for( $i=$from; $i<=$to;$i++ ) {
724752 $text = "$page_namespace:$index/" . $i;
725753 list($pagenum, $links, $mode) = pr_pageNumber($i,$params);
726 - $input = "{{:MediaWiki:Proofreadpage_pagenum_template|page=".$text."|num=$pagenum}}";
727 - $out.= $wgParser->recursiveTagParse($input);
728 - $input = "{{:".$text."}}";
729 - $out.= $wgParser->recursiveTagParse($input);
 754+ $out.= "<span>{{:MediaWiki:Proofreadpage_pagenum_template|page=".$text."|num=$pagenum}}</span>";
 755+ if( $args["$i"] != null){
 756+ $out.= "{{#lst:".$text."|".$args["$i"]."}}";
 757+ } else if($i == $from && $args["fromsection"]){
 758+ $out.= "{{#lst:".$text."|".$args["fromsection"]."}}";
 759+ } else if($i == $to && $args["tosection"]){
 760+ $out.= "{{#lst:".$text."|".$args["tosection"]."}}";
 761+ } else {
 762+ $out.= "{{:".$text."}}";
 763+ }
 764+ if( $i == $from ) $from_pagenum = $pagenum;
 765+ if( $i == $to ) $to_pagenum = $pagenum;
730766 }
731767 }
732768 else {
733 - $adding = false;
734 - for( $i=0; $i<count( $links[1] ); $i++) {
 769+ if($from) {
 770+ $adding = false;
 771+ } else {
 772+ $adding = true;
 773+ $from_pagenum = $links[3][0];
 774+ }
 775+ for( $i=0; $i < count( $links[1] ); $i++) {
735776 $text = $links[1][$i];
736777 $pagenum = $links[3][$i];
737 - if($text == $page_namespace.":".$from ) $adding = true;
 778+ if($text == $from ) {
 779+ $adding = true;
 780+ $from_pagenum = $pagenum;
 781+ }
738782 if($adding){
739 - $input = "{{:MediaWiki:Proofreadpage_pagenum_template|page=".$text."|num=$pagenum}}";
740 - $out.= $wgParser->recursiveTagParse($input);
741 - $input= "{{:".$text."}}";
742 - $out.= $wgParser->recursiveTagParse($input);
 783+ $out.= "<span>{{:MediaWiki:Proofreadpage_pagenum_template|page="
 784+ .$page_namespace.":".$text."|num=$pagenum}}</span>";
 785+ if($text == $from && $args["fromsection"]){
 786+ $out.= "{{#lst:".$page_namespace.":".$text."|".$args["fromsection"]."}}";
 787+ } else if($text == $to && $args["tosection"]){
 788+ $out.= "{{#lst:".$page_namespace.":".$text."|".$args["tosection"]."}}";
 789+ } else {
 790+ $out.= "{{:".$page_namespace.":".$text."}}";
 791+ }
743792 }
744 - if($text == $page_namespace.":".$to ) $adding = false;
 793+ if($text == $to ) {
 794+ $adding = false;
 795+ $to_pagenum = $pagenum;
 796+ }
745797 }
 798+ if( !$to ) {
 799+ $to_pagenum = $links[3][ count( $links[1] ) - 1 ];
 800+ }
746801 }
 802+
 803+ if( $header ) {
 804+ $h_out = '{{:MediaWiki:Proofreadpage_header_template';
 805+ $h_out .= "|value=$header";
 806+ //find next and previous pages in list
 807+ for( $i=1; $i < count( $text_links[1] ); $i++) {
 808+ if( $text_links[1][$i] == $wgTitle->getPrefixedText() ) {
 809+ $current = $text_links[0][$i];
 810+ break;
 811+ }
 812+ }
 813+ if( ( $i > 1 ) && ( $i < count( $text_links[1] ) ) ) {
 814+ $prev = $text_links[0][$i-1];
 815+ }
 816+ if( ( $i >= 1 ) && ( $i + 1 < count( $text_links[1] ) ) ) {
 817+ $next = $text_links[0][$i+1];
 818+ }
 819+ if( $current ) $h_out .= "|current=$current";
 820+ if( $prev ) $h_out .= "|prev=$prev";
 821+ if( $next ) $h_out .= "|next=$next";
 822+ if( $from_pagenum ) $h_out .= "|from=$from_pagenum";
 823+ if( $to_pagenum ) $h_out .= "|to=$to_pagenum";
 824+ foreach ( $attributes as $key => $val ) {
 825+ $h_out .= "|$key=$val";
 826+ }
 827+ $h_out .= '}}';
 828+ $out = $h_out . $out;
 829+ }
 830+
 831+ $out = $wgParser->recursiveTagParse($out);
747832 return $out;
748833 }
749834
 835+/*
 836+ * Try to parse a page.
 837+ * Return quality status of the page and username of the proofreader
 838+ * Return -1 if the page cannot be parsed
 839+ */
 840+function pr_parse_page( $text ) {
 841+ global $wgTitle, $wgUser;
750842
 843+ $username = $wgUser->getName();
 844+ $page_regexp = "/^<noinclude>(.*?)<\/noinclude>(.*?)<noinclude>(.*?)<\/noinclude>$/s";
 845+ if( !preg_match( $page_regexp, $text, $m ) ) {
 846+ pr_load_index( $wgTitle );
 847+ list( $index_url, $prev_url, $next_url, $header, $footer ) = pr_navigation( $wgTitle );
 848+ $new_text = "<noinclude><pagequality level=\"1\" user=\"$username\" />"
 849+ ."$header\n\n\n</noinclude>$text<noinclude>\n$footer</noinclude>";
 850+ return array( -1, null, $new_text );
 851+ }
751852
 853+ $header_regexp = "/^<pagequality level=\"(0|1|2|3|4)\" user=\"(.*?)\" \/>/";
 854+ $header = $m[1];
 855+ $body = $m[2];
 856+ $footer = $m[3];
 857+ if( !preg_match( $header_regexp, $header, $m2 ) ) {
 858+ $new_text = "<noinclude><pagequality level=\"1\" user=\"$username\" />"
 859+ ."$header\n\n\n</noinclude>$body<noinclude>\n$footer</noinclude>";
 860+ return array( -1, null, $new_text );
 861+ }
752862
753 -/* update coloured links in index pages */
754 -function pr_articleSave( $article ) {
 863+ return array( intval($m2[1]), $m2[2], null );
 864+}
755865
756 - wfLoadExtensionMessages( 'ProofreadPage' );
757 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
758 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
759866
 867+
 868+function pr_formData( $editpage, $request ) {
 869+ global $wgTitle;
 870+
 871+ $page_namespace = pr_page_ns();
 872+ //abort if we are not a page
 873+ if ( ! preg_match( "/^$page_namespace:(.*)$/", $wgTitle->getPrefixedText() ) ) {
 874+ return true;
 875+ }
 876+ if ( ! $request->wasPosted() ) {
 877+ return true;
 878+ }
 879+ $editpage->quality = $request->getVal( 'quality' );
 880+ $editpage->username = $editpage->safeUnicodeInput( $request, 'wpProofreader' );
 881+ $editpage->header = $editpage->safeUnicodeInput( $request, 'wpHeaderTextbox' );
 882+ $editpage->footer = $editpage->safeUnicodeInput( $request, 'wpFooterTextbox' );
 883+
 884+ //we want to keep ordinary spaces at the end of the main textbox
 885+ $text = rtrim( $request->getText( 'wpTextbox1' ), "\t\n\r\0\x0B");
 886+ $editpage->textbox1 = $request->getBool( 'safemode' )
 887+ ? $editpage->unmakesafe( $text )
 888+ : $text;
 889+
 890+ if( in_array( $editpage->quality , array( "0", "1", "2", "3", "4" ) ) ) {
 891+ //format the page
 892+ $text = "<noinclude><pagequality level=\"".$editpage->quality."\" user=\"".$editpage->username."\" />"
 893+ .$editpage->header."\n\n\n</noinclude>"
 894+ .$editpage->textbox1
 895+ ."\n<noinclude>\n".$editpage->footer."</noinclude>";
 896+ $editpage->textbox1 = $text;
 897+ } else {
 898+ //replace deprecated template
 899+ $text = $editpage->textbox1;
 900+ $text = preg_replace( "/\{\{PageQuality\|(0|1|2|3|4)(|\|(.*?))\}\}/is", "<pagequality level=\"\\1\" user=\"\\3\" />", $text );
 901+ $editpage->textbox1 = $text;
 902+ }
 903+ return true;
 904+}
 905+
 906+
 907+/*
 908+ * Check the format of pages in "Page" namespace.
 909+ */
 910+function pr_attemptSave( $editpage ) {
 911+ global $wgOut, $wgUser;
 912+
 913+ $page_namespace = pr_page_ns();
 914+ $index_namespace = pr_index_ns();
 915+ $title = $editpage->mTitle;
 916+
 917+ //check that pages listed on an index are unique.
 918+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 919+ $text = $editpage->textbox1;
 920+ list( $text_links, $links, $params, $attributes ) = pr_parse_index_text($text);
 921+ if( $links!=null && count($links[1]) != count( array_unique($links[1]))) {
 922+ $wgOut->showErrorPage( 'proofreadpage_indexdupe', 'proofreadpage_indexdupetext' );
 923+ return false;
 924+ };
 925+ return true;
 926+ }
 927+
 928+ //abort if we are not a page
 929+ if ( ! preg_match( "/^$page_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 930+ return true;
 931+ }
 932+
 933+ $text = $editpage->textbox1;
 934+ //parse the page
 935+ list( $q , $username, $ptext ) = pr_parse_page( $text );
 936+ if( $q == -1 ) {
 937+ $editpage->textbox1 = $ptext;
 938+ return true;
 939+ }
 940+
 941+ //read previous revision, so that I know how much I need to add to pr_index
 942+ $rev = Revision::newFromTitle( $title );
 943+ if( $rev ) {
 944+ $old_text = $rev->getText();
 945+ list( $old_q , $old_username, $old_ptext ) = pr_parse_page( $old_text );
 946+ } else {
 947+ if($q == 4) {
 948+ $wgOut->showErrorPage( 'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
 949+ return false;
 950+ }
 951+ $old_q = -1;
 952+ }
 953+
 954+ //check usernames
 955+ if( $old_q != -1 ) {
 956+ if( ($old_q != $q) && $wgUser->isAnon() ) {
 957+ $wgOut->showErrorPage( 'proofreadpage_nologin', 'proofreadpage_nologintext' );
 958+ return false;
 959+ }
 960+ if ( ( ($old_username != $username) || ($old_q != $q) ) && ($wgUser->getName() != $username) ) {
 961+ $wgOut->showErrorPage( 'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
 962+ return false;
 963+ }
 964+ if( ( ($q == 4) && ($old_q < 3) ) || ( ($q == 4) && ($old_q == 3) && ($old_username == $username) ) ) {
 965+ $wgOut->showErrorPage( 'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
 966+ return false;
 967+ }
 968+ }
 969+
 970+ $editpage->mArticle->new_q = $q;
 971+ $editpage->mArticle->old_q = $old_q;
 972+
 973+ return true;
 974+
 975+}
 976+
 977+
 978+/*
 979+ * if I delete a page, I need to update the index table
 980+ * if I delete an index page too...
 981+ */
 982+function pr_articleDelete( $article ) {
 983+
 984+ $page_namespace = pr_page_ns();
 985+ $index_namespace = pr_index_ns();
760986 $title = $article->mTitle;
761987
 988+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 989+ $id = $article->getID();
 990+ $dbw = wfGetDB( DB_MASTER );
 991+ $pr_index = $dbw->tableName( 'pr_index' );
 992+ $dbw->query ("DELETE FROM $pr_index WHERE pr_page_id=$id");
 993+ $dbw->commit();
 994+ return true;
 995+ }
 996+
762997 if ( preg_match( "/^$page_namespace:(.*)$/", $title->getPrefixedText() ) ) {
763 - if ( !isset( $title->pr_index_title ) ) {
764 - pr_load_index( $title );
765 - }
766 - if ( $title->pr_index_title ) {
767 - $index_title = Title::makeTitleSafe( $index_namespace, $title->pr_index_title );
 998+ pr_load_index( $title );
 999+ if( $title->pr_index_title ) {
 1000+ $index_title = Title::newFromText( $title->pr_index_title );
7681001 $index_title->invalidateCache();
 1002+ $index = new Article( $index_title );
 1003+ if( $index ) pr_update_pr_index( $index, $title->getDBKey() );
7691004 }
 1005+ return true;
7701006 }
7711007
7721008 return true;
@@ -773,11 +1009,90 @@
7741010 }
7751011
7761012
 1013+function pr_articleSaveComplete( $article ) {
 1014+
 1015+ $page_namespace = pr_page_ns();
 1016+ $index_namespace = pr_index_ns();
 1017+ $title = $article->mTitle;
 1018+
 1019+ //if it's an index, update pr_index table
 1020+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText(), $m ) ) {
 1021+ pr_update_pr_index( $article );
 1022+ return true;
 1023+ }
 1024+
 1025+ //return if it is not a page
 1026+ if ( ! preg_match( "/^$page_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 1027+ return true;
 1028+ }
 1029+
 1030+ $dbw = wfGetDB( DB_MASTER );
 1031+
 1032+ /* check if there is an index */
 1033+ if ( !isset( $title->pr_index_title ) ) {
 1034+ pr_load_index( $title );
 1035+ }
 1036+ if( ! $title->pr_index_title ) {
 1037+ return true;
 1038+ }
 1039+
 1040+ /*
 1041+ * invalidate the cache of the index page
 1042+ */
 1043+ if ( $title->pr_index_title ) {
 1044+ $index_title = Title::newFromText( $title->pr_index_title );
 1045+ $index_title->invalidateCache();
 1046+ }
 1047+
 1048+ /*
 1049+ * update pr_index iteratively
 1050+ */
 1051+ $index = new Article( $index_title );
 1052+ $index_id = $index->getID();
 1053+ $dbr = wfGetDB( DB_SLAVE );
 1054+ $pr_index = $dbr->tableName( 'pr_index' );
 1055+ $query = "SELECT * FROM $pr_index WHERE pr_page_id=".$index_id;
 1056+ $res = $dbr->query( $query, __METHOD__ );
 1057+ if( $x = $dbr->fetchObject( $res ) ) {
 1058+ $n = $x->pr_count ;
 1059+ $n0 = $x->pr_q0 ;
 1060+ $n1 = $x->pr_q1 ;
 1061+ $n2 = $x->pr_q2 ;
 1062+ $n3 = $x->pr_q3 ;
 1063+ $n4 = $x->pr_q4 ;
 1064+
 1065+ switch( $article->new_q ) {
 1066+ case 0: $n0 = $n0 + 1; break;
 1067+ case 1: $n1 = $n1 + 1; break;
 1068+ case 2: $n2 = $n2 + 1; break;
 1069+ case 3: $n3 = $n3 + 1; break;
 1070+ case 4: $n4 = $n4 + 1; break;
 1071+ }
 1072+
 1073+ switch( $article->old_q ) {
 1074+ case 0: $n0 = $n0 - 1; break;
 1075+ case 1: $n1 = $n1 - 1; break;
 1076+ case 2: $n2 = $n2 - 1; break;
 1077+ case 3: $n3 = $n3 - 1; break;
 1078+ case 4: $n4 = $n4 - 1; break;
 1079+ }
 1080+
 1081+ $query = "REPLACE INTO $pr_index (pr_page_id, pr_count, pr_q0, pr_q1, pr_q2, pr_q3, pr_q4) VALUES ({$index_id},$n,$n0,$n1,$n2,$n3,$n4)";
 1082+ $dbw->query ( $query );
 1083+ $dbw->commit();
 1084+
 1085+ }
 1086+ $dbr->freeResult( $res );
 1087+
 1088+ return true;
 1089+}
 1090+
 1091+
 1092+/* preload Djvu Text */
7771093 function pr_preloadText( $textbox1, $mTitle ) {
7781094 global $wgDjvuTxt;
7791095
780 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
781 -
 1096+ $page_namespace = pr_page_ns();
7821097 if ( $wgDjvuTxt && preg_match( "/^$page_namespace:(.*?)\/([0-9]*)$/", $mTitle->getPrefixedText(), $m ) ) {
7831098 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
7841099 if ( !$imageTitle ) {
@@ -785,14 +1100,221 @@
7861101 }
7871102
7881103 $image = wfFindFile( $imageTitle );
789 - if ( $image && $image->exists() && $image->getMimeType() == 'image/vnd.djvu' ) {
790 - $text = $image->handler->getPageText($image, $m[2]);
791 - if ( $text ) {
792 - $text = preg_replace( "/(\\\\n)/", "\n", $text );
793 - $text = preg_replace( "/(\\\\\d*)/", "", $text );
794 - $textbox1 = $text;
 1104+ if ( $image && $image->exists() ) {
 1105+ $mime = $image->getMimeType();
 1106+ if( $mime == 'image/vnd.djvu' /*|| $mime == 'application/pdf'*/ ) {
 1107+ $text = $image->handler->getPageText($image, $m[2]);
 1108+ if ( $text ) {
 1109+ $text = preg_replace( "/(\\\\n)/", "\n", $text );
 1110+ $text = preg_replace( "/(\\\\\d*)/", "", $text );
 1111+ $textbox1 = $text;
 1112+ }
7951113 }
7961114 }
7971115 }
7981116 return true;
7991117 }
 1118+
 1119+
 1120+
 1121+function pr_movePage( $form, $ot, $nt ) {
 1122+
 1123+ $page_namespace = pr_page_ns();
 1124+ if ( preg_match( "/^$page_namespace:(.*)$/", $ot->getPrefixedText() ) ) {
 1125+ pr_load_index( $ot );
 1126+ if( $ot->pr_index_title ) {
 1127+ $index_title = Title::newFromText( $ot->pr_index_title );
 1128+ $index_title->invalidateCache();
 1129+ $index = new Article( $index_title );
 1130+ if( $index ) pr_update_pr_index( $index );
 1131+ }
 1132+ return true;
 1133+ }
 1134+
 1135+ if ( preg_match( "/^$page_namespace:(.*)$/", $nt->getPrefixedText() ) ) {
 1136+ pr_load_index( $nt );
 1137+ if( $nt->pr_index_title && ($nt->pr_index_title!=$ot->pr_index_title) ) {
 1138+ $index_title = Title::newFromText( $nt->pr_index_title );
 1139+ $index_title->invalidateCache();
 1140+ $index = new Article( $index_title );
 1141+ if( $index ) pr_update_pr_index( $index );
 1142+ }
 1143+ return true;
 1144+ }
 1145+ return true;
 1146+}
 1147+
 1148+
 1149+/*
 1150+ * When an index page is created or purged, recompute pr_index values
 1151+ */
 1152+function pr_articlePurge( $article ) {
 1153+
 1154+ $index_namespace = pr_index_ns();
 1155+ $title = $article->mTitle;
 1156+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 1157+ pr_update_pr_index( $article );
 1158+ return true;
 1159+ }
 1160+ return true;
 1161+}
 1162+
 1163+
 1164+
 1165+function pr_query_count( $dbr, $query, $cat ){
 1166+ $q = $dbr->strencode( str_replace( ' ' , '_' , wfMsgForContent( $cat ) ) );
 1167+ $res = $dbr->query( str_replace( '###', $q, $query) , __METHOD__ );
 1168+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1169+ $row = $dbr->fetchObject( $res );
 1170+ $n = $row->count;
 1171+ $dbr->freeResult( $res );
 1172+ return $n;
 1173+ }
 1174+ return 0;
 1175+}
 1176+
 1177+
 1178+/*
 1179+ * update the pr_index entry of an article
 1180+ */
 1181+function pr_update_pr_index( $index, $deletedpage=null ) {
 1182+
 1183+ $page_namespace = pr_page_ns();
 1184+ $index_namespace = pr_index_ns();
 1185+ $page_ns_index = MWNamespace::getCanonicalIndex( strtolower( $page_namespace ) );
 1186+ if ( $page_ns_index == NULL ) {
 1187+ return;
 1188+ }
 1189+
 1190+ $index_title = $index->mTitle;
 1191+ $index_id = $index->getID();
 1192+ $dbr = wfGetDB( DB_SLAVE );
 1193+
 1194+ //read the list of pages
 1195+ $pages = array();
 1196+ list( $text_links, $links, $params, $attributes ) = pr_parse_index( $index_title );
 1197+ if( $links==null ) {
 1198+ $imageTitle = Title::makeTitleSafe( NS_IMAGE, $index_title->getText() );
 1199+ if ( $imageTitle ) {
 1200+ $image = wfFindFile( $imageTitle );
 1201+ if ( $image && $image->isMultiPage() && $image->pageCount() ) {
 1202+ $n = $image->pageCount();
 1203+ for ( $i = 1; $i <= $n; $i++ ) {
 1204+ $page = $dbr->strencode( $index_title->getDBKey().'/'.$i );
 1205+ if($page != $deletedpage) array_push( $pages, $page );
 1206+ }
 1207+ }
 1208+ }
 1209+ } else {
 1210+ $n = count($links[1]);
 1211+ for ( $i = 0; $i < $n; $i++ ) {
 1212+ $page = $dbr->strencode( str_replace( ' ' , '_' , $links[1][$i] ) );
 1213+ if($page != $deletedpage) array_push( $pages, $page );
 1214+ }
 1215+ }
 1216+
 1217+ $catlinks = $dbr->tableName( 'categorylinks' );
 1218+ $page = $dbr->tableName( 'page' );
 1219+ $pagelist = "'".implode( "', '", $pages)."'";
 1220+
 1221+ $query = "SELECT COUNT(page_id) AS count FROM $page WHERE page_namespace=$page_ns_index AND page_title IN ( $pagelist )" ;
 1222+ $res = $dbr->query( $query , __METHOD__ );
 1223+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1224+ $row = $dbr->fetchObject( $res );
 1225+ $total = $row->count;
 1226+ $dbr->freeResult( $res );
 1227+ } else {
 1228+ return;
 1229+ }
 1230+
 1231+ # proofreading status of pages
 1232+ $query = "SELECT COUNT(page_id) AS count FROM $page LEFT JOIN $catlinks ON cl_from=page_id WHERE cl_to='###' AND page_namespace=$page_ns_index AND page_title IN ( $pagelist )" ;
 1233+ $n0 = pr_query_count( $dbr, $query, 'proofreadpage_quality0_category' );
 1234+ $n2 = pr_query_count( $dbr, $query, 'proofreadpage_quality2_category' );
 1235+ $n3 = pr_query_count( $dbr, $query, 'proofreadpage_quality3_category' );
 1236+ $n4 = pr_query_count( $dbr, $query, 'proofreadpage_quality4_category' );
 1237+ $n1 = $total - $n0 - $n2 - $n3 - $n4;
 1238+
 1239+ $dbw = wfGetDB( DB_MASTER );
 1240+ $pr_index = $dbw->tableName( 'pr_index' );
 1241+ $query = "REPLACE INTO $pr_index (pr_page_id, pr_count, pr_q0, pr_q1, pr_q2, pr_q3, pr_q4) VALUES ({$index_id},$n,$n0,$n1,$n2,$n3,$n4)";
 1242+ $dbw->query ( $query );
 1243+ $dbw->commit();
 1244+}
 1245+
 1246+
 1247+
 1248+
 1249+/*
 1250+ * In ns-0, display the proofreading status of transcluded pages
 1251+ */
 1252+function pr_OutputPageBeforeHTML( $out, $text ) {
 1253+ global $wgTitle, $wgUser;
 1254+
 1255+ if($wgTitle->getNamespace() != NS_MAIN){
 1256+ return true;
 1257+ }
 1258+
 1259+ $id = $wgTitle->mArticleID;
 1260+ if($id == -1) {
 1261+ return true;
 1262+ }
 1263+
 1264+ $page_namespace = pr_page_ns();
 1265+ $index_namespace = pr_index_ns();
 1266+ $page_ns_index = MWNamespace::getCanonicalIndex( strtolower( $page_namespace ) );
 1267+ $index_ns_index = MWNamespace::getCanonicalIndex( strtolower( $index_namespace ) );
 1268+ if( $page_ns_index==null || $index_ns_index == null){
 1269+ return true;
 1270+ }
 1271+
 1272+ $dbr = wfGetDB( DB_SLAVE );
 1273+ $pr_index = $dbr->tableName( 'pr_index' );
 1274+ $page = $dbr->tableName( 'page' );
 1275+ $pagelinks = $dbr->tableName( 'pagelinks' );
 1276+ $templatelinks = $dbr->tableName( 'templatelinks' );
 1277+ $catlinks = $dbr->tableName( 'categorylinks' );
 1278+
 1279+ # count transclusions from page namespace
 1280+ $query = "SELECT COUNT(page_id) AS count FROM $templatelinks LEFT JOIN $page ON page_title=tl_title AND page_namespace=tl_namespace WHERE tl_from=$id AND tl_namespace=$page_ns_index";
 1281+ $res = $dbr->query( $query , __METHOD__ );
 1282+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1283+ $row = $dbr->fetchObject( $res );
 1284+ $n = $row->count;
 1285+ $dbr->freeResult( $res );
 1286+ }
 1287+ if($n == 0) {
 1288+ return true;
 1289+ }
 1290+
 1291+ # find the proofreading status of transclusions
 1292+ $query = "SELECT COUNT(page_id) AS count FROM $templatelinks LEFT JOIN $page ON page_title=tl_title AND page_namespace=tl_namespace LEFT JOIN $catlinks ON cl_from=page_id WHERE tl_from=$id AND tl_namespace=$page_ns_index AND cl_to='###'";
 1293+ $n0 = pr_query_count( $dbr, $query, 'proofreadpage_quality0_category' );
 1294+ $n2 = pr_query_count( $dbr, $query, 'proofreadpage_quality2_category' );
 1295+ $n3 = pr_query_count( $dbr, $query, 'proofreadpage_quality3_category' );
 1296+ $n4 = pr_query_count( $dbr, $query, 'proofreadpage_quality4_category' );
 1297+ # quality1 is the default value
 1298+ $n1 = $n - $n0 - $n2 - $n3 - $n4;
 1299+
 1300+ # find the index page
 1301+ $indexlink="";
 1302+ $query1 = "SELECT tl_title AS title FROM $templatelinks WHERE tl_from=$id AND tl_namespace=$page_ns_index LIMIT 1";
 1303+ $res = $dbr->query( $query1 , __METHOD__ );
 1304+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1305+ $row = $dbr->fetchObject( $res );
 1306+ $title = $dbr->strencode( $row->title );
 1307+ $dbr->freeResult( $res );
 1308+ $query2 = "SELECT page_title AS title FROM $pagelinks LEFT JOIN $page ON page_id=pl_from WHERE pl_title=\"$title\" AND pl_namespace=$page_ns_index AND page_namespace=$index_ns_index LIMIT 1";
 1309+ $res2 = $dbr->query( $query2 , __METHOD__ );
 1310+ if( $res2 && $dbr->numRows( $res2 ) > 0 ) {
 1311+ $row = $dbr->fetchObject( $res2 );
 1312+ $indextitle = $row->title;
 1313+ $dbr->freeResult( $res2 );
 1314+ $sk = $wgUser->getSkin();
 1315+ $indexlink = $sk->makeKnownLink( "$index_namespace:$indextitle", "[index]" );
 1316+ }
 1317+ }
 1318+ $output = wfMsgForContent( 'proofreadpage_quality_message', $n0*100/$n, $n1*100/$n, $n2*100/$n, $n3*100/$n, $n4*100/$n, $n, $indexlink );
 1319+ $out->setSubtitle($output);
 1320+ return true;
 1321+};
Index: branches/wmf-deployment/extensions/ProofreadPage/SpecialProofreadPages.php
@@ -0,0 +1,116 @@
 2+<?php
 3+/**
 4+ * @file
 5+ * @ingroup SpecialPage
 6+ */
 7+
 8+
 9+if ( !defined( 'MEDIAWIKI' ) ) die( 1 );
 10+global $wgHooks, $IP;
 11+require_once "$IP/includes/QueryPage.php";
 12+
 13+
 14+class ProofreadPages extends SpecialPage {
 15+
 16+ function ProofreadPages() {
 17+ SpecialPage::SpecialPage( 'IndexPages' );
 18+ }
 19+
 20+ function execute( $parameters ) {
 21+ $this->setHeaders();
 22+ list( $limit, $offset ) = wfCheckLimits();
 23+
 24+ $cnl = new ProofreadPagesQuery();
 25+ $cnl->doQuery( $offset, $limit );
 26+ }
 27+}
 28+
 29+
 30+
 31+class ProofreadPagesQuery extends QueryPage {
 32+
 33+ function getName() {
 34+ return 'IndexPages';
 35+ }
 36+
 37+ function isExpensive() {
 38+ return false;
 39+ }
 40+
 41+ function isSyndicated() {
 42+ return false;
 43+ }
 44+
 45+ function getSQL() {
 46+ $dbr = wfGetDB( DB_SLAVE );
 47+ $page = $dbr->tableName( 'page' );
 48+ $pr_index = $dbr->tableName( 'pr_index' );
 49+
 50+ return
 51+ "SELECT pr_page_id as title,
 52+ page_title as title,
 53+ pr_count,
 54+ pr_q0,
 55+ pr_q1,
 56+ pr_q2,
 57+ pr_q3,
 58+ pr_q4
 59+ FROM $pr_index
 60+ LEFT JOIN $page ON page_id = pr_page_id";
 61+ }
 62+
 63+ function getOrder() {
 64+ return ' ORDER BY 2*pr_q4+pr_q3 ' .
 65+ ($this->sortDescending() ? 'DESC' : '');
 66+ }
 67+
 68+ function sortDescending() {
 69+ return true;
 70+ }
 71+
 72+ function formatResult( $skin, $result ) {
 73+ global $wgLang, $wgContLang;
 74+
 75+ $index_namespace = pr_index_ns();
 76+ $title = Title::newFromText( $index_namespace.":".$result->title );
 77+
 78+ if ( !$title ) {
 79+ return '<!-- Invalid title ' . htmlspecialchars( $index_namespace.":".$result->title ). '-->';
 80+ }
 81+ $plink = $this->isCached()
 82+ ? $skin->link( $title , htmlspecialchars( $title->getText() ) )
 83+ : $skin->linkKnown( $title , htmlspecialchars( $title->getText() ) );
 84+
 85+ if ( !$title->exists() ) {
 86+ return "<s>{$plink}</s>";
 87+ }
 88+
 89+ $size = $result->pr_count;
 90+ $q0 = $result->pr_q0;
 91+ $q1 = $result->pr_q1;
 92+ $q2 = $result->pr_q2;
 93+ $q3 = $result->pr_q3;
 94+ $q4 = $result->pr_q4;
 95+
 96+ $pages = wfMsg( 'proofreadpage_pages', $size );
 97+
 98+ $output = "<table style=\"line-height:70%;\" border=0 cellpadding=5 cellspacing=0 >
 99+<tr valign=\"bottom\">
 100+<td>{$plink}</td>
 101+<td> [$size $pages] </td>
 102+<td>
 103+<table style=\"line-height:70%;\" border=0 cellpadding=0 cellspacing=0 >
 104+<tr>
 105+<td width=\"2\">&nbsp;</td>
 106+<td align=center class='quality4' width=\"$q4\"></td>
 107+<td align=center class='quality3' width=\"$q3\"></td>
 108+<td align=center class='quality2' width=\"$q2\"></td>
 109+<td align=center class='quality1' width=\"$q1\"></td>
 110+<td align=center class='quality0' width=\"$q0\"></td>
 111+</tr></table>
 112+</td>
 113+</tr></table>";
 114+
 115+ return $output;
 116+ }
 117+}
Property changes on: branches/wmf-deployment/extensions/ProofreadPage/SpecialProofreadPages.php
___________________________________________________________________
Name: svn:eol-style
1118 + native
Index: branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.sql
@@ -0,0 +1,15 @@
 2+-- Table for the ProofreadPage extension.
 3+-- Holds a count of the number of pages at each quality level
 4+CREATE TABLE IF NOT EXISTS /*$wgDBprefix*/pr_index (
 5+ -- Foreign key to page.page_id
 6+ pr_page_id integer NOT NULL,
 7+ -- number of pages in index
 8+ pr_count integer NOT NULL default '0',
 9+ -- number of pages in each quality level
 10+ pr_q0 integer NOT NULL default '0',
 11+ pr_q1 integer NOT NULL default '0',
 12+ pr_q2 integer NOT NULL default '0',
 13+ pr_q3 integer NOT NULL default '0',
 14+ pr_q4 integer NOT NULL default '0',
 15+ PRIMARY KEY (pr_page_id)
 16+) /*$wgDBTableOptions*/;
Property changes on: branches/wmf-deployment/extensions/ProofreadPage/ProofreadPage.sql
___________________________________________________________________
Name: svn:eol-style
117 + native
Index: branches/wmf-deployment/extensions/ProofreadPage/proofread.js
@@ -114,8 +114,10 @@
115115 //find the PageQuality template
116116 //we do this separately from header detection,
117117 //because the template might not be in the header
118 - var reg = /\{\{PageQuality\|(0|1|2|3|4|25%|50%|75%|100%)(\|(.*?|))\}\}/g;
 118+ var reg = /<pagequality level=\"(0|1|2|3|4)\" user=\"(.*?)\" \/>/g;
119119 var m4 = reg.exec(pageHeader);
 120+ var old_reg = /\{\{PageQuality\|(0|1|2|3|4)(\|(.*?|))\}\}/g;
 121+ var old_m4 = old_reg.exec(pageHeader);
120122 if( m4 ) {
121123 switch( m4[1] ) {
122124 case "0": self.proofreadpage_quality = 0; break;
@@ -123,22 +125,28 @@
124126 case "2": self.proofreadpage_quality = 2; break;
125127 case "3": self.proofreadpage_quality = 3; break;
126128 case "4": self.proofreadpage_quality = 4; break;
127 - //keep this for backward compatibility
128 - case "100%": self.proofreadpage_quality = 4; break;
129 - case "75%": self.proofreadpage_quality = 3; break;
130 - case "50%": self.proofreadpage_quality = 1; break;
131 - case "25%": self.proofreadpage_quality = 2; break;
132129 default: self.proofreadpage_quality = 1;
133130 }
134 - self.proofreadpage_username = m4[3];
 131+ self.proofreadpage_username = m4[2];
135132 pageHeader = pageHeader.replace(reg,'');
136133 }
 134+ else if (old_m4 ) {
 135+ switch( old_m4[1] ) {
 136+ case "0": self.proofreadpage_quality = 0; break;
 137+ case "1": self.proofreadpage_quality = 1; break;
 138+ case "2": self.proofreadpage_quality = 2; break;
 139+ case "3": self.proofreadpage_quality = 3; break;
 140+ case "4": self.proofreadpage_quality = 4; break;
 141+ default: self.proofreadpage_quality = 1;
 142+ }
 143+ self.proofreadpage_username = old_m4[3];
 144+ pageHeader = pageHeader.replace(old_reg,'');
 145+ }
137146 else {
138147 self.proofreadpage_quality = 1;
139148 self.proofreadpage_username = "";
140149 }
141150
142 -
143151 //escape & character
144152 pageBody = pageBody.split("&").join("&amp;")
145153 pageHeader = pageHeader.split("&").join("&amp;")
@@ -148,28 +156,16 @@
149157 + '<div id="prp_header" style="display:none;">'
150158 + '<span style="color:gray;font-size:80%;line-height:100%;">'
151159 + escapeQuotesHTML(proofreadPageMessageHeader) + '</span>'
152 - + '<textarea name="headerTextbox" rows="2" cols="80">' + pageHeader + '</textarea><br/>'
 160+ + '<textarea name="wpHeaderTextbox" rows="2" cols="80">' + pageHeader + '</textarea><br/>'
153161 + '<span style="color:gray;font-size:80%;line-height:100%;">'
154162 + escapeQuotesHTML(proofreadPageMessagePageBody) + '</span></div>'
155163 + '<textarea name="wpTextbox1" id="wpTextbox1" style="height:' + ( self.DisplayHeight - 6 ) + 'px;">' + pageBody + '</textarea>'
156164 + '<div id="prp_footer" style="display:none;">'
157165 + '<span style="color:gray;font-size:80%;line-height:100%;">'
158166 + escapeQuotesHTML(proofreadPageMessageFooter) + '</span><br/>'
159 - + '<textarea name="footerTextbox" rows="2" cols="80">'+pageFooter+'</textarea></div>';
 167+ + '<textarea name="wpFooterTextbox" rows="2" cols="80">'+pageFooter+'</textarea></div>';
160168
161169
162 - var saveButton = document.getElementById("wpSave");
163 - var previewButton = document.getElementById("wpPreview");
164 - var diffButton = document.getElementById("wpDiff")
165 - if(saveButton){
166 - saveButton.onclick = pr_fill_form;
167 - previewButton.onclick = pr_fill_form;
168 - diffButton.onclick = pr_fill_form;
169 - }
170 - else {
171 - //make the text area readonly
172 - container.firstChild.nextSibling.setAttribute("readonly","readonly");
173 - }
174170 }
175171
176172
@@ -566,7 +562,7 @@
567563
568564 var t_row = document.createElement("tr");
569565 t_row.setAttribute("valign","top");
570 - cell_left.style.cssText = "width:50%; padding-right:0.5em;";
 566+ cell_left.style.cssText = "width:50%; padding-right:0.5em;vertical-align:top;";
571567 cell_right.setAttribute("rowspan","3");
572568 t_row.appendChild(cell_left);
573569 t_row.appendChild(cell_right);
@@ -585,20 +581,20 @@
586582 self.pr_horiz = horizontal_layout;
587583
588584 //get the size of the window
589 - var width, height;
590 - if (parseInt(navigator.appVersion)>3) {
591 - if (navigator.appName.indexOf("Microsoft")!=-1) {
592 - height = document.body.clientHeight;
593 - width = document.body.offsetWidth;
594 - }
595 - else{
596 - height = window.innerHeight;
597 - width = window.innerWidth;
598 - }
 585+ var width = 0, height = 0;
 586+ if( typeof( window.innerWidth ) == 'number' ) {
 587+ //Non-IE
 588+ width = window.innerWidth;
 589+ height = window.innerHeight;
 590+ } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
 591+ //IE 6+ in 'standards compliant mode'
 592+ width = document.documentElement.clientWidth;
 593+ height = document.documentElement.clientHeight;
 594+ } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
 595+ //IE 4 compatible
 596+ width = document.body.clientWidth;
 597+ height = document.body.clientHeight;
599598 }
600 - else {
601 - width = 800; height = 600;
602 - }
603599
604600 //fill the image container
605601 if(!proofreadPageIsEdit) {
@@ -764,31 +760,7 @@
765761
766762
767763
768 -function pr_fill_form() {
769 - var form = document.getElementById("editform");
770 - var header = form.elements["headerTextbox"];
771 - var footer = form.elements["footerTextbox"];
772 - //if( ( self.proofreadpage_quality == 0 ) && ( form.elements["wpTextbox1"].value != "" ) ) {
773 - // self.proofreadpage_quality = 1;
774 - // form.elements["wpSummary"].value="/* " + proofreadPageMessageQuality1 + " */ ";
775 - //}
776 - if(header){
777 - var h = header.value.replace(/(\s*(\r?\n|\r))+$/, '');
778 - if(h) h = "<noinclude>{{PageQuality|"+self.proofreadpage_quality+"|"+self.proofreadpage_username+"}}"+h+"\n\n\n</noinclude>";
779 - var f = footer.value;
780 - if(f) f = "<noinclude>\n"+f+"</noinclude>";
781 - var ph = header.parentNode;
782 - ph.removeChild(header);
783 - var pf = footer.parentNode;
784 - pf.removeChild(footer);
785 - form.elements["wpTextbox1"].value = h+form.elements["wpTextbox1"].value+f;
786 - form.elements["wpTextbox1"].setAttribute('readonly',"readonly");
787 - }
788 -}
789764
790 -
791 -
792 -
793765 function pr_init() {
794766
795767 if( document.getElementById("pr_container")) return;
@@ -850,17 +822,6 @@
851823
852824 function pr_add_quality(form,value){
853825
854 - var tbv = form.elements["wpTextbox1"].value;
855 - if( /*( ( value == 0 ) && ( tbv != "" ) ) ||*/ ( ( value >= 3 ) && ( tbv == "" ) ) ) {
856 - switch( self.proofreadpage_quality ) {
857 - case 4: document.editform.quality[4].checked = true; break;
858 - case 3: document.editform.quality[3].checked = true; break;
859 - case 1: document.editform.quality[2].checked = true; break;
860 - case 2: document.editform.quality[1].checked = true; break;
861 - case 0: document.editform.quality[0].checked = true; break;
862 - }
863 - return;
864 - }
865826 self.proofreadpage_quality = value;
866827 self.proofreadpage_username = wgUserName;
867828 var text="";
@@ -872,23 +833,27 @@
873834 case 4: text = proofreadPageMessageQuality4; break;
874835 }
875836 form.elements["wpSummary"].value="/* " + text + " */ ";
 837+ form.elements["wpProofreader"].value=self.proofreadpage_username;
876838
877839 }
878840
879841
880842 function pr_add_quality_buttons(){
881843
882 - if( self.proofreadpage_no_quality_buttons ) return;
883844 var ig = document.getElementById("wpWatchthis");
 845+ if(!wgUserName) ig = document.getElementById("wpSummary");
884846 if( !ig ) return;
885847 var f = document.createElement("span");
886848 f.innerHTML =
887 -' <span class="quality0"> <input type="radio" name="quality" onclick="pr_add_quality(this.form,0)"> </span>'
888 -+'<span class="quality2"> <input type="radio" name="quality" onclick="pr_add_quality(this.form,2)"> </span>'
889 -+'<span class="quality1"> <input type="radio" name="quality" onclick="pr_add_quality(this.form,1)"> </span>'
890 -+'<span class="quality3"> <input type="radio" name="quality" onclick="pr_add_quality(this.form,3)"> </span>'
891 -+'<span class="quality4"> <input type="radio" name="quality" onclick="pr_add_quality(this.form,4)"> </span>';
 849+' <input type="hidden" name="wpProofreader" value="'+self.proofreadpage_username+'">'
 850++'<span class="quality0"> <input type="radio" name="quality" value=0 onclick="pr_add_quality(this.form,0)"> </span>'
 851++'<span class="quality2"> <input type="radio" name="quality" value=2 onclick="pr_add_quality(this.form,2)"> </span>'
 852++'<span class="quality1"> <input type="radio" name="quality" value=1 onclick="pr_add_quality(this.form,1)"> </span>'
 853++'<span class="quality3"> <input type="radio" name="quality" value=3 onclick="pr_add_quality(this.form,3)"> </span>'
 854++'<span class="quality4"> <input type="radio" name="quality" value=4 onclick="pr_add_quality(this.form,4)"> </span>';
892855 f.innerHTML = f.innerHTML + '&nbsp;' + escapeQuotesHTML(proofreadPageMessageStatus);
 856+
 857+ if(!wgUserName) f.style.cssText = 'display:none';
893858 ig.parentNode.insertBefore(f,ig.nextSibling.nextSibling.nextSibling);
894859
895860 if( ! ( ( self.proofreadpage_quality == 4 ) || ( ( self.proofreadpage_quality == 3 ) && ( self.proofreadpage_username != wgUserName ) ) ) ) {
Property changes on: branches/wmf-deployment/extensions/ProofreadPage
___________________________________________________________________
Name: svn:mergeinfo
896861 + /branches/REL1_15/phase3/extensions/ProofreadPage:51646
/trunk/extensions/ProofreadPage:56207,56209,56296,56333,56355,56763-56882
/trunk/phase3/extensions/ProofreadPage:56213,56215-56216,56218,56325,56334-56336,56338,56340,56343,56345,56347,56350

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r56882Localization update for he.rotem15:10, 24 September 2009

Status & tagging log