r56763 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r56762‎ | r56763 | r56764 >
Date:16:33, 22 September 2009
Author:brion
Status:ok
Tags:
Comment:
Bring ProofreadPage up to date with trunk r56762 -- ThomasV has fixed the SQL escaping bugs that delayed the initial update.
This version adds a special page w/ index data (Special:IndexPages) and a DB table (pr_index) storing various fun data, which will need to be deployed.
Includes support for extracting text from DjVu files (currently hardcoded to DjVu as we haven't generalized the interface yet)
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 hakemiston sivuista',
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 on oltava [[Special:UserLogin|kirjautunut sisään]] muuttaaksesi sivun oikoluku-tilaa.',
 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|דף&nbsp;אחד|$2&nbsp;דפים}}',
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' => 'ページ',
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,6 +3820,11 @@
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',
@@ -3048,6 +3837,7 @@
30493838 Image|Hình bìa
30503839 Pages|Các trang|20
30513840 Remarks|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 = 23;
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,18 @@
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+ $rtext = $wgParser->replaceVariables( $text );
 277+ $text_links_pattern = "/\[\[([^:\|]*?)(\|(.*?)|)\]\]/i";
 278+ preg_match_all( $text_links_pattern, $rtext, $text_links, PREG_PATTERN_ORDER );
 279+ }
 280+ else $text_links = null;
 281+
230282 //read attributes
231283 $attributes = array();
232284 $var_names = explode(" ", wfMsgForContent('proofreadpage_js_attributes') );
@@ -239,7 +291,7 @@
240292 $attributes[$var] = '';
241293 }
242294 }
243 - return array( $links, $params, $attributes );
 295+ return array( $text_links, $links, $params, $attributes );
244296
245297 }
246298
@@ -250,7 +302,6 @@
251303 function pr_beforePageDisplay( &$out ) {
252304 global $wgTitle, $wgJsMimeType, $wgScriptPath, $wgRequest, $wgProofreadPageVersion;
253305
254 - wfLoadExtensionMessages( 'ProofreadPage' );
255306 $action = $wgRequest->getVal( 'action' );
256307 $isEdit = ( $action == 'submit' || $action == 'edit' ) ? 1 : 0;
257308 if ( !isset( $wgTitle ) || ( !$out->isArticle() && !$isEdit ) || isset( $out->proofreadPageDone ) ) {
@@ -258,16 +309,13 @@
259310 }
260311 $out->proofreadPageDone = true;
261312
262 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
 313+ $page_namespace = pr_page_ns();
263314 if ( preg_match( "/^$page_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) {
264 - if ( !isset( $wgTitle->pr_index_title ) ) {
265 - pr_load_index( $wgTitle );
266 - }
267315 pr_preparePage( $out, $m, $isEdit );
268316 return true;
269317 }
270318
271 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 319+ $index_namespace = pr_index_ns();
272320 if ( $isEdit && ( preg_match( "/^$index_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) ) {
273321 pr_prepareIndex( $out );
274322 return true;
@@ -288,15 +336,21 @@
289337 );
290338 $out->addScript( "<script type=\"{$wgJsMimeType}\">
291339 var prp_index_attributes = \"" . Xml::escapeJsString( wfMsgForContent( 'proofreadpage_index_attributes' ) ) . "\";
 340+var prp_default_header = \"" . Xml::escapeJsString( wfMsgGetKey( 'proofreadpage_default_header', true, true, false ) ) . "\";
 341+var prp_default_footer = \"" . Xml::escapeJsString( wfMsgGetKey( 'proofreadpage_default_footer', true, true, false ) ) . "\";
292342 </script>\n"
293343 );
294 -
295344 }
296345
297346
298347 function pr_preparePage( $out, $m, $isEdit ) {
299348 global $wgJsMimeType, $wgScriptPath, $wgRequest, $wgProofreadPageVersion, $wgProofreadPageMaxWidth;
 349+ global $wgTitle;
300350
 351+ if ( !isset( $wgTitle->pr_index_title ) ) {
 352+ pr_load_index( $wgTitle );
 353+ }
 354+
301355 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
302356 if ( !$imageTitle ) {
303357 return true;
@@ -329,7 +383,7 @@
330384 $thumbURL = '';
331385 }
332386
333 - list( $index_url, $prev_url, $next_url, $attributes ) = pr_navigation( $image );
 387+ list( $index_url, $prev_url, $next_url, $header, $footer ) = pr_navigation( $wgTitle );
334388
335389 $jsFile = htmlspecialchars( "$wgScriptPath/extensions/ProofreadPage/proofread.js?$wgProofreadPageVersion" );
336390
@@ -342,18 +396,9 @@
343397 'proofreadPageIndexURL' => $index_url,
344398 'proofreadPagePrevURL' => $prev_url,
345399 '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 -
 400+ 'proofreadPageHeader' => $header,
 401+ 'proofreadPageFooter' => $footer,
 402+ );
358403 $varScript = Skin::makeVariablesScript( $jsVars );
359404
360405 $out->addScript( <<<EOT
@@ -386,35 +431,37 @@
387432
388433
389434 /**
390 - * Return the quality colour codes to pages linked from an index page
391 - * Update page counts in pr_index table
 435+ * Hook function
392436 */
393 -function pr_getLinkColours( $page_ids, &$colours ) {
 437+function pr_getLinkColoursHook( $page_ids, &$colours ) {
394438 global $wgTitle;
395439
396440 if ( !isset( $wgTitle ) ) {
397441 return true;
398442 }
399 - wfLoadExtensionMessages( 'ProofreadPage' );
400443
401444 // 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() ) ) {
 445+ $index_namespace = pr_index_ns();
 446+ if ( !preg_match( "/^$index_namespace:(.*?)$/", $wgTitle->getPrefixedText(), $m ) ) {
404447 return true;
405448 }
 449+ pr_getLinkColours( $page_ids, $colours );
 450+ return true;
 451+}
 452+
406453
407 - // counters
408 - $n = $n0 = $n1 = $n2 = $n3 = $n4 = 0;
 454+/**
 455+ * Return the quality colour codes to pages linked from an index page
 456+ */
 457+function pr_getLinkColours( $page_ids, &$colours ) {
409458
 459+ $page_namespace = pr_page_ns();
410460 $dbr = wfGetDB( DB_SLAVE );
411461 $catlinks = $dbr->tableName( 'categorylinks' );
412462 foreach ( $page_ids as $id => $pdbk ) {
413463 // consider only link in page namespace
414 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
415464 if ( preg_match( "/^$page_namespace:(.*?)$/", $pdbk ) ) {
416465 $colours[$pdbk] = 'quality1';
417 - $n++;
418 -
419466 if ( !isset( $query ) ) {
420467 $query = "SELECT cl_from, cl_to FROM $catlinks WHERE cl_from IN(";
421468 } else {
@@ -433,44 +480,35 @@
434481 switch( $x->cl_to ) {
435482 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality0_category' ) ):
436483 $colours[$pdbk] = 'quality0';
437 - $n0++;
438484 break;
439485 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality1_category' ) ):
440486 $colours[$pdbk] = 'quality1';
441 - $n1++;
442487 break;
443488 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality2_category' ) ):
444489 $colours[$pdbk] = 'quality2';
445 - $n2++;
446490 break;
447491 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality3_category' ) ):
448492 $colours[$pdbk] = 'quality3';
449 - $n3++;
450493 break;
451494 case str_replace( ' ' , '_' , wfMsgForContent( 'proofreadpage_quality4_category' ) ):
452495 $colours[$pdbk] = 'quality4';
453 - $n4++;
454496 break;
455497 }
456498 }
457499 }
458 -
459 - return true;
460500 }
461501
462502 function pr_imageMessage( &$imgpage , &$wgOut ) {
463503 global $wgUser;
464 - $sk = $wgUser->getSkin();
465504
 505+ $index_namespace = pr_index_ns();
466506 $image = $imgpage->img;
467507 if ( !$image->isMultiPage() ) {
468508 return true;
469509 }
470510
471 - wfLoadExtensionMessages( 'ProofreadPage' );
472 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 511+ $sk = $wgUser->getSkin();
473512 $name = $image->getTitle()->getText();
474 -
475513 $link = $sk->makeKnownLink( "$index_namespace:$name", wfMsg( 'proofreadpage_image_message' ) );
476514 $wgOut->addHTML( "{$link}" );
477515
@@ -480,6 +518,7 @@
481519
482520 // credit : http://www.mediawiki.org/wiki/Extension:RomanNumbers
483521 function toRoman( $num ) {
 522+
484523 if ( $num < 0 || $num > 9999 ) {
485524 return - 1;
486525 }
@@ -511,6 +550,7 @@
512551
513552
514553 function pr_pageNumber( $i, $args ) {
 554+
515555 $mode = 'normal'; // default
516556 $offset = 0;
517557 $links = true;
@@ -562,14 +602,35 @@
563603
564604
565605 /*
 606+ * add the pagequality category.
 607+ * todo : display whether page has been proofread by the user or by someone else
 608+ */
 609+function pr_pageQuality( $input, $args ) {
 610+ global $wgUser, $wgTitle, $wgParser;
 611+
 612+ $page_namespace = pr_page_ns();
 613+ if ( !preg_match( "/^$page_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText() ) ) {
 614+ return "";
 615+ }
 616+ $q = $args['level'];
 617+ if( ! in_array( $q, array('0','1','2','3','4') ) ) {
 618+ return "";
 619+ }
 620+ $message = "<div id=\"pagequality\" width=100% class=quality$q><div id=\"pagequality_content\">".wfMsgForContent( "proofreadpage_quality{$q}_message" )."</div></div>";
 621+ $out = "__NOEDITSECTION__[[Category:".wfMsgForContent( "proofreadpage_quality{$q}_category" )."]]";
 622+ return $wgParser->recursiveTagParse( $out . $message);
 623+}
 624+
 625+
 626+/*
566627 * Parser hook for index pages
567628 * Display a list of coloured links to pages
568629 */
569630 function pr_renderPageList( $input, $args ) {
570 - global $wgUser, $wgTitle;
571 - wfLoadExtensionMessages( 'ProofreadPage' );
 631+ global $wgUser, $wgTitle, $wgParser;
572632
573 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
 633+ $page_namespace = pr_page_ns();
 634+ $index_namespace = pr_index_ns();
574635 if ( !preg_match( "/^$index_namespace:(.*?)(\/([0-9]*)|)$/", $wgTitle->getPrefixedText(), $m ) ) {
575636 return "";
576637 }
@@ -587,15 +648,7 @@
588649 $return = "";
589650 $name = $imageTitle->getDBkey();
590651 $count = $image->pageCount();
591 - $dbr = wfGetDB( DB_SLAVE );
592 - $pagetable = $dbr->tableName( 'page' );
593652
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 -
600653 $from = $args['from'];
601654 $to = $args['to'];
602655 if( !$from ) $from = 1;
@@ -608,31 +661,6 @@
609662 return '<strong class="error">' . wfMsgForContent( 'proofreadpage_invalid_interval' ) . '</strong>';
610663 }
611664
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 -
637665 for ( $i = $from; $i < $to + 1; $i++ ) {
638666 $pdbk = "$page_namespace:$name" . '/' . $i ;
639667 list( $view, $links, $mode ) = pr_pageNumber( $i, $args );
@@ -652,14 +680,10 @@
653681 if ( $links == false ) {
654682 $return .= $view . " ";
655683 } 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} ";
 684+ $return .= "[[".$title->getPrefixedText()."|$view]] ";
662685 }
663686 }
 687+ $return = $wgParser->recursiveTagParse($return);
664688 return $return;
665689 }
666690
@@ -668,21 +692,17 @@
669693
670694 /*
671695 * Parser hook that includes a list of pages.
672 - * It needs 3 parameters : index, from, to
673 - *
674 - * todo : handle LST...
 696+ * parameters : index, from, to, header
675697 */
676698 function pr_renderPages( $input, $args ) {
677699 global $wgParser, $wgTitle;
678700
679 - wfLoadExtensionMessages( 'ProofreadPage' );
680 -
681 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_index_namespace' ), '/' );
682 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
683 -
 701+ $page_namespace = pr_page_ns();
 702+ $index_namespace = pr_index_ns();
684703 $index = $args['index'];
685704 $from = $args['from'];
686705 $to = $args['to'];
 706+ $header = $args['header'];
687707
688708 if( ! $index ) {
689709 return '<strong class="error">' . wfMsgForContent( 'proofreadpage_index_expected' ) . '</strong>';
@@ -692,8 +712,8 @@
693713 return '<strong class="error">' . wfMsgForContent( 'proofreadpage_nosuch_index' ) . '</strong>';
694714 }
695715
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 );
 716+ $out = '';
 717+ list( $text_links, $links, $params, $attributes ) = pr_parse_index( $index_title );
698718
699719 if( $links==null ) {
700720 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $index );
@@ -722,50 +742,258 @@
723743 for( $i=$from; $i<=$to;$i++ ) {
724744 $text = "$page_namespace:$index/" . $i;
725745 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);
 746+ $out.= "<span>{{:MediaWiki:Proofreadpage_pagenum_template|page=".$text."|num=$pagenum}}</span>";
 747+ if( $args["$i"] != null){
 748+ $out.= "{{#lst:".$text."|".$args["$i"]."}}";
 749+ } else if($i == $from && $args["fromsection"]){
 750+ $out.= "{{#lst:".$text."|".$args["fromsection"]."}}";
 751+ } else if($i == $to && $args["tosection"]){
 752+ $out.= "{{#lst:".$text."|".$args["tosection"]."}}";
 753+ } else {
 754+ $out.= "{{:".$text."}}";
 755+ }
 756+ if( $i == $from ) $from_pagenum = $pagenum;
 757+ if( $i == $to ) $to_pagenum = $pagenum;
730758 }
731759 }
732760 else {
733 - $adding = false;
734 - for( $i=0; $i<count( $links[1] ); $i++) {
 761+ if($from) {
 762+ $adding = false;
 763+ } else {
 764+ $adding = true;
 765+ $from_pagenum = $links[3][0];
 766+ }
 767+ for( $i=0; $i < count( $links[1] ); $i++) {
735768 $text = $links[1][$i];
736769 $pagenum = $links[3][$i];
737 - if($text == $page_namespace.":".$from ) $adding = true;
 770+ if($text == $from ) {
 771+ $adding = true;
 772+ $from_pagenum = $pagenum;
 773+ }
738774 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);
 775+ $out.= "<span>{{:MediaWiki:Proofreadpage_pagenum_template|page="
 776+ .$page_namespace.":".$text."|num=$pagenum}}</span>";
 777+ if($text == $from && $args["fromsection"]){
 778+ $out.= "{{#lst:".$page_namespace.":".$text."|".$args["fromsection"]."}}";
 779+ } else if($text == $to && $args["tosection"]){
 780+ $out.= "{{#lst:".$page_namespace.":".$text."|".$args["tosection"]."}}";
 781+ } else {
 782+ $out.= "{{:".$page_namespace.":".$text."}}";
 783+ }
743784 }
744 - if($text == $page_namespace.":".$to ) $adding = false;
 785+ if($text == $to ) {
 786+ $adding = false;
 787+ $to_pagenum = $pagenum;
 788+ }
745789 }
 790+ if( !$to ) {
 791+ $to_pagenum = $links[3][ count( $links[1] ) - 1 ];
 792+ }
746793 }
 794+
 795+ if( $header ) {
 796+ $h_out = '{{:MediaWiki:Proofreadpage_header_template';
 797+ $h_out .= "|value=$header";
 798+ //find next and previous pages in list
 799+ for( $i=1; $i < count( $text_links[1] ); $i++) {
 800+ if( $text_links[1][$i] == $wgTitle->getPrefixedText() ) {
 801+ $current = $text_links[0][$i];
 802+ break;
 803+ }
 804+ }
 805+ if( ( $i > 1 ) && ( $i < count( $text_links[1] ) ) ) {
 806+ $prev = $text_links[0][$i-1];
 807+ }
 808+ if( ( $i >= 1 ) && ( $i + 1 < count( $text_links[1] ) ) ) {
 809+ $next = $text_links[0][$i+1];
 810+ }
 811+ if( $current ) $h_out .= "|current=$current";
 812+ if( $prev ) $h_out .= "|prev=$prev";
 813+ if( $next ) $h_out .= "|next=$next";
 814+ if( $from_pagenum ) $h_out .= "|from=$from_pagenum";
 815+ if( $to_pagenum ) $h_out .= "|to=$to_pagenum";
 816+ foreach ( $attributes as $key => $val ) {
 817+ $h_out .= "|$key=$val";
 818+ }
 819+ $h_out .= '}}';
 820+ $out = $h_out . $out;
 821+ }
 822+
 823+ $out = $wgParser->recursiveTagParse($out);
747824 return $out;
748825 }
749826
 827+/*
 828+ * Try to parse a page.
 829+ * Return quality status of the page and username of the proofreader
 830+ * Return -1 if the page cannot be parsed
 831+ */
 832+function pr_parse_page( $text ) {
 833+ global $wgTitle, $wgUser;
750834
 835+ $username = $wgUser->getName();
 836+ $page_regexp = "/^<noinclude>(.*?)<\/noinclude>(.*?)<noinclude>(.*?)<\/noinclude>$/s";
 837+ if( !preg_match( $page_regexp, $text, $m ) ) {
 838+ pr_load_index( $wgTitle );
 839+ list( $index_url, $prev_url, $next_url, $header, $footer ) = pr_navigation( $wgTitle );
 840+ $new_text = "<noinclude><pagequality level=\"1\" user=\"$username\" />"
 841+ ."$header\n\n\n</noinclude>$text<noinclude>\n$footer</noinclude>";
 842+ return array( -1, null, $new_text );
 843+ }
751844
 845+ $header_regexp = "/^<pagequality level=\"(0|1|2|3|4)\" user=\"(.*?)\" \/>/";
 846+ $header = $m[1];
 847+ $body = $m[2];
 848+ $footer = $m[3];
 849+ if( !preg_match( $header_regexp, $header, $m2 ) ) {
 850+ $new_text = "<noinclude><pagequality level=\"1\" user=\"$username\" />"
 851+ ."$header\n\n\n</noinclude>$body<noinclude>\n$footer</noinclude>";
 852+ return array( -1, null, $new_text );
 853+ }
752854
753 -/* update coloured links in index pages */
754 -function pr_articleSave( $article ) {
 855+ return array( intval($m2[1]), $m2[2], null );
 856+}
755857
756 - wfLoadExtensionMessages( 'ProofreadPage' );
757 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
758 - $index_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
759858
 859+
 860+function pr_formData( $editpage, $request ) {
 861+ global $wgTitle;
 862+
 863+ $page_namespace = pr_page_ns();
 864+ //abort if we are not a page
 865+ if ( ! preg_match( "/^$page_namespace:(.*)$/", $wgTitle->getPrefixedText() ) ) {
 866+ return true;
 867+ }
 868+ if ( ! $request->wasPosted() ) {
 869+ return true;
 870+ }
 871+ $editpage->quality = $request->getVal( 'quality' );
 872+ $editpage->username = $editpage->safeUnicodeInput( $request, 'wpProofreader' );
 873+ $editpage->header = $editpage->safeUnicodeInput( $request, 'wpHeaderTextbox' );
 874+ $editpage->footer = $editpage->safeUnicodeInput( $request, 'wpFooterTextbox' );
 875+
 876+ //we want to keep ordinary spaces at the end of the main textbox
 877+ $text = rtrim( $request->getText( 'wpTextbox1' ), "\t\n\r\0\x0B");
 878+ $editpage->textbox1 = $request->getBool( 'safemode' )
 879+ ? $editpage->unmakesafe( $text )
 880+ : $text;
 881+
 882+ if( $editpage->quality != null ) {
 883+ //format the page
 884+ $text = "<noinclude><pagequality level=\"".$editpage->quality."\" user=\"".$editpage->username."\" />"
 885+ .$editpage->header."\n\n\n</noinclude>"
 886+ .$editpage->textbox1
 887+ ."\n<noinclude>\n".$editpage->footer."</noinclude>";
 888+ $editpage->textbox1 = $text;
 889+ } else {
 890+ //replace deprecated template
 891+ $text = $editpage->textbox1;
 892+ $text = preg_replace( "/\{\{PageQuality\|(0|1|2|3|4)(|\|(.*?))\}\}/is", "<pagequality level=\"\\1\" user=\"\\3\" />", $text );
 893+ $editpage->textbox1 = $text;
 894+ }
 895+ return true;
 896+}
 897+
 898+
 899+/*
 900+ * Check the format of pages in "Page" namespace.
 901+ */
 902+function pr_attemptSave( $editpage ) {
 903+ global $wgOut, $wgUser;
 904+
 905+ $page_namespace = pr_page_ns();
 906+ $index_namespace = pr_index_ns();
 907+ $title = $editpage->mTitle;
 908+
 909+ //check that pages listed on an index are unique.
 910+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 911+ $text = $editpage->textbox1;
 912+ list( $text_links, $links, $params, $attributes ) = pr_parse_index_text($text);
 913+ if( $links!=null && count($links[1]) != count( array_unique($links[1]))) {
 914+ $wgOut->showErrorPage( 'proofreadpage_indexdupe', 'proofreadpage_indexdupetext' );
 915+ return false;
 916+ };
 917+ return true;
 918+ }
 919+
 920+ //abort if we are not a page
 921+ if ( ! preg_match( "/^$page_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 922+ return true;
 923+ }
 924+
 925+ $text = $editpage->textbox1;
 926+ //parse the page
 927+ list( $q , $username, $ptext ) = pr_parse_page( $text );
 928+ if( $q == -1 ) {
 929+ $editpage->textbox1 = $ptext;
 930+ return true;
 931+ }
 932+
 933+ //read previous revision, so that I know how much I need to add to pr_index
 934+ $rev = Revision::newFromTitle( $title );
 935+ if( $rev ) {
 936+ $old_text = $rev->getText();
 937+ list( $old_q , $old_username, $old_ptext ) = pr_parse_page( $old_text );
 938+ } else {
 939+ if($q == 4) {
 940+ $wgOut->showErrorPage( 'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
 941+ return false;
 942+ }
 943+ $old_q = -1;
 944+ }
 945+
 946+ //check usernames
 947+ if( $old_q != -1 ) {
 948+ if( ($old_q != $q) && $wgUser->isAnon() ) {
 949+ $wgOut->showErrorPage( 'proofreadpage_nologin', 'proofreadpage_nologintext' );
 950+ return false;
 951+ }
 952+ if ( ( ($old_username != $username) || ($old_q != $q) ) && ($wgUser->getName() != $username) ) {
 953+ $wgOut->showErrorPage( 'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
 954+ return false;
 955+ }
 956+ if( ( ($q == 4) && ($old_q < 3) ) || ( ($q == 4) && ($old_q == 3) && ($old_username == $username) ) ) {
 957+ $wgOut->showErrorPage( 'proofreadpage_notallowed', 'proofreadpage_notallowedtext' );
 958+ return false;
 959+ }
 960+ }
 961+
 962+ $editpage->mArticle->new_q = $q;
 963+ $editpage->mArticle->old_q = $old_q;
 964+
 965+ return true;
 966+
 967+}
 968+
 969+
 970+/*
 971+ * if I delete a page, I need to update the index table
 972+ * if I delete an index page too...
 973+ */
 974+function pr_articleDelete( $article ) {
 975+
 976+ $page_namespace = pr_page_ns();
 977+ $index_namespace = pr_index_ns();
760978 $title = $article->mTitle;
761979
 980+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 981+ $id = $article->getID();
 982+ $dbw = wfGetDB( DB_MASTER );
 983+ $pr_index = $dbw->tableName( 'pr_index' );
 984+ $dbw->query ("DELETE FROM $pr_index WHERE pr_page_id=$id");
 985+ $dbw->commit();
 986+ return true;
 987+ }
 988+
762989 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 );
 990+ pr_load_index( $title );
 991+ if( $title->pr_index_title ) {
 992+ $index_title = Title::newFromText( $title->pr_index_title );
768993 $index_title->invalidateCache();
 994+ $index = new Article( $index_title );
 995+ if( $index ) pr_update_pr_index( $index, $title->getDBKey() );
769996 }
 997+ return true;
770998 }
771999
7721000 return true;
@@ -773,11 +1001,90 @@
7741002 }
7751003
7761004
 1005+function pr_articleSaveComplete( $article ) {
 1006+
 1007+ $page_namespace = pr_page_ns();
 1008+ $index_namespace = pr_index_ns();
 1009+ $title = $article->mTitle;
 1010+
 1011+ //if it's an index, update pr_index table
 1012+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText(), $m ) ) {
 1013+ pr_update_pr_index( $article );
 1014+ return true;
 1015+ }
 1016+
 1017+ //return if it is not a page
 1018+ if ( ! preg_match( "/^$page_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 1019+ return true;
 1020+ }
 1021+
 1022+ $dbw = wfGetDB( DB_MASTER );
 1023+
 1024+ /* check if there is an index */
 1025+ if ( !isset( $title->pr_index_title ) ) {
 1026+ pr_load_index( $title );
 1027+ }
 1028+ if( ! $title->pr_index_title ) {
 1029+ return true;
 1030+ }
 1031+
 1032+ /*
 1033+ * invalidate the cache of the index page
 1034+ */
 1035+ if ( $title->pr_index_title ) {
 1036+ $index_title = Title::newFromText( $title->pr_index_title );
 1037+ $index_title->invalidateCache();
 1038+ }
 1039+
 1040+ /*
 1041+ * update pr_index iteratively
 1042+ */
 1043+ $index = new Article( $index_title );
 1044+ $index_id = $index->getID();
 1045+ $dbr = wfGetDB( DB_SLAVE );
 1046+ $pr_index = $dbr->tableName( 'pr_index' );
 1047+ $query = "SELECT * FROM $pr_index WHERE pr_page_id=".$index_id;
 1048+ $res = $dbr->query( $query, __METHOD__ );
 1049+ if( $x = $dbr->fetchObject( $res ) ) {
 1050+ $n = $x->pr_count ;
 1051+ $n0 = $x->pr_q0 ;
 1052+ $n1 = $x->pr_q1 ;
 1053+ $n2 = $x->pr_q2 ;
 1054+ $n3 = $x->pr_q3 ;
 1055+ $n4 = $x->pr_q4 ;
 1056+
 1057+ switch( $article->new_q ) {
 1058+ case 0: $n0 = $n0 + 1; break;
 1059+ case 1: $n1 = $n1 + 1; break;
 1060+ case 2: $n2 = $n2 + 1; break;
 1061+ case 3: $n3 = $n3 + 1; break;
 1062+ case 4: $n4 = $n4 + 1; break;
 1063+ }
 1064+
 1065+ switch( $article->old_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+ $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)";
 1074+ $dbw->query ( $query );
 1075+ $dbw->commit();
 1076+
 1077+ }
 1078+ $dbr->freeResult( $res );
 1079+
 1080+ return true;
 1081+}
 1082+
 1083+
 1084+/* preload Djvu Text */
7771085 function pr_preloadText( $textbox1, $mTitle ) {
7781086 global $wgDjvuTxt;
7791087
780 - $page_namespace = preg_quote( wfMsgForContent( 'proofreadpage_namespace' ), '/' );
781 -
 1088+ $page_namespace = pr_page_ns();
7821089 if ( $wgDjvuTxt && preg_match( "/^$page_namespace:(.*?)\/([0-9]*)$/", $mTitle->getPrefixedText(), $m ) ) {
7831090 $imageTitle = Title::makeTitleSafe( NS_IMAGE, $m[1] );
7841091 if ( !$imageTitle ) {
@@ -785,14 +1092,215 @@
7861093 }
7871094
7881095 $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;
 1096+ if ( $image && $image->exists() ) {
 1097+ $mime = $image->getMimeType();
 1098+ if( $mime == 'image/vnd.djvu' /*|| $mime == 'application/pdf'*/ ) {
 1099+ $text = $image->handler->getPageText($image, $m[2]);
 1100+ if ( $text ) {
 1101+ $text = preg_replace( "/(\\\\n)/", "\n", $text );
 1102+ $text = preg_replace( "/(\\\\\d*)/", "", $text );
 1103+ $textbox1 = $text;
 1104+ }
7951105 }
7961106 }
7971107 }
7981108 return true;
7991109 }
 1110+
 1111+
 1112+
 1113+function pr_movePage( $form, $ot, $nt ) {
 1114+
 1115+ $page_namespace = pr_page_ns();
 1116+ if ( preg_match( "/^$page_namespace:(.*)$/", $ot->getPrefixedText() ) ) {
 1117+ pr_load_index( $ot );
 1118+ if( $ot->pr_index_title ) {
 1119+ $index_title = Title::newFromText( $ot->pr_index_title );
 1120+ $index_title->invalidateCache();
 1121+ $index = new Article( $index_title );
 1122+ if( $index ) pr_update_pr_index( $index );
 1123+ }
 1124+ return true;
 1125+ }
 1126+
 1127+ if ( preg_match( "/^$page_namespace:(.*)$/", $nt->getPrefixedText() ) ) {
 1128+ pr_load_index( $nt );
 1129+ if( $nt->pr_index_title && ($nt->pr_index_title!=$ot->pr_index_title) ) {
 1130+ $index_title = Title::newFromText( $nt->pr_index_title );
 1131+ $index_title->invalidateCache();
 1132+ $index = new Article( $index_title );
 1133+ if( $index ) pr_update_pr_index( $index );
 1134+ }
 1135+ return true;
 1136+ }
 1137+ return true;
 1138+}
 1139+
 1140+
 1141+/*
 1142+ * When an index page is created or purged, recompute pr_index values
 1143+ */
 1144+function pr_articlePurge( $article ) {
 1145+
 1146+ $index_namespace = pr_index_ns();
 1147+ $title = $article->mTitle;
 1148+ if ( preg_match( "/^$index_namespace:(.*)$/", $title->getPrefixedText() ) ) {
 1149+ pr_update_pr_index( $article );
 1150+ return true;
 1151+ }
 1152+ return true;
 1153+}
 1154+
 1155+
 1156+
 1157+function pr_query_count( $dbr, $query, $cat ){
 1158+ $q = $dbr->strencode( str_replace( ' ' , '_' , wfMsgForContent( $cat ) ) );
 1159+ $res = $dbr->query( str_replace( '###', $q, $query) , __METHOD__ );
 1160+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1161+ $row = $dbr->fetchObject( $res );
 1162+ $n = $row->count;
 1163+ $dbr->freeResult( $res );
 1164+ return $n;
 1165+ }
 1166+ return 0;
 1167+}
 1168+
 1169+
 1170+/*
 1171+ * update the pr_index entry of an article
 1172+ */
 1173+function pr_update_pr_index( $index, $deletedpage=null ) {
 1174+
 1175+ $page_namespace = pr_page_ns();
 1176+ $index_namespace = pr_index_ns();
 1177+ $page_ns_index = MWNamespace::getCanonicalIndex( strtolower( $page_namespace ) );
 1178+ if ( $page_ns_index == NULL ) {
 1179+ return;
 1180+ }
 1181+
 1182+ $index_title = $index->mTitle;
 1183+ $index_id = $index->getID();
 1184+ $dbr = wfGetDB( DB_SLAVE );
 1185+
 1186+ //read the list of pages
 1187+ $pages = array();
 1188+ list( $text_links, $links, $params, $attributes ) = pr_parse_index( $index_title );
 1189+ if( $links==null ) {
 1190+ $imageTitle = Title::makeTitleSafe( NS_IMAGE, $index_title->getText() );
 1191+ if ( $imageTitle ) {
 1192+ $image = wfFindFile( $imageTitle );
 1193+ if ( $image && $image->isMultiPage() && $image->pageCount() ) {
 1194+ $n = $image->pageCount();
 1195+ for ( $i = 1; $i <= $n; $i++ ) {
 1196+ $page = $index_title->getDBKey().'/'.$i;
 1197+ if($page != $deletedpage) array_push( $pages, $page );
 1198+ }
 1199+ }
 1200+ }
 1201+ } else {
 1202+ $n = count($links[1]);
 1203+ for ( $i = 0; $i < $n; $i++ ) {
 1204+ $page = $dbr->strencode( str_replace( ' ' , '_' , $links[1][$i] ) );
 1205+ if($page != $deletedpage) array_push( $pages, $page );
 1206+ }
 1207+ }
 1208+
 1209+ $catlinks = $dbr->tableName( 'categorylinks' );
 1210+ $page = $dbr->tableName( 'page' );
 1211+ $pagelist = "'".implode( "', '", $pages)."'";
 1212+
 1213+ $query = "SELECT COUNT(page_id) AS count FROM $page WHERE page_namespace=$page_ns_index AND page_title IN ( $pagelist )" ;
 1214+ $res = $dbr->query( $query , __METHOD__ );
 1215+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1216+ $row = $dbr->fetchObject( $res );
 1217+ $total = $row->count;
 1218+ $dbr->freeResult( $res );
 1219+ } else {
 1220+ return;
 1221+ }
 1222+
 1223+ # proofreading status of pages
 1224+ $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 )" ;
 1225+ $n0 = pr_query_count( $dbr, $query, 'proofreadpage_quality0_category' );
 1226+ $n2 = pr_query_count( $dbr, $query, 'proofreadpage_quality2_category' );
 1227+ $n3 = pr_query_count( $dbr, $query, 'proofreadpage_quality3_category' );
 1228+ $n4 = pr_query_count( $dbr, $query, 'proofreadpage_quality4_category' );
 1229+ $n1 = $total - $n0 - $n2 - $n3 - $n4;
 1230+
 1231+ $dbw = wfGetDB( DB_MASTER );
 1232+ $pr_index = $dbw->tableName( 'pr_index' );
 1233+ $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)";
 1234+ $dbw->query ( $query );
 1235+ $dbw->commit();
 1236+}
 1237+
 1238+
 1239+
 1240+
 1241+/*
 1242+ * In ns-0, display the proofreading status of transcluded pages
 1243+ */
 1244+function pr_OutputPageBeforeHTML( $out, $text ) {
 1245+ global $wgTitle, $wgUser;
 1246+
 1247+ if($wgTitle->getNamespace() != NS_MAIN){
 1248+ return true;
 1249+ }
 1250+
 1251+ $id = $wgTitle->mArticleID;
 1252+ if($id == -1) {
 1253+ return true;
 1254+ }
 1255+
 1256+ $page_namespace = pr_page_ns();
 1257+ $index_namespace = pr_index_ns();
 1258+ $page_ns_index = MWNamespace::getCanonicalIndex( strtolower( $page_namespace ) );
 1259+ $index_ns_index = MWNamespace::getCanonicalIndex( strtolower( $index_namespace ) );
 1260+ if( $page_ns_index==null || $index_ns_index == null){
 1261+ return true;
 1262+ }
 1263+
 1264+ $dbr = wfGetDB( DB_SLAVE );
 1265+ $pr_index = $dbr->tableName( 'pr_index' );
 1266+ $page = $dbr->tableName( 'page' );
 1267+ $pagelinks = $dbr->tableName( 'pagelinks' );
 1268+ $templatelinks = $dbr->tableName( 'templatelinks' );
 1269+ $catlinks = $dbr->tableName( 'categorylinks' );
 1270+
 1271+ # count transclusions from page namespace
 1272+ $query = "SELECT COUNT(page_id) AS count FROM $templatelinks LEFT JOIN $page ON page_title=tl_title where tl_from=$id and tl_namespace=$page_ns_index";
 1273+ $res = $dbr->query( $query , __METHOD__ );
 1274+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1275+ $row = $dbr->fetchObject( $res );
 1276+ $n = $row->count;
 1277+ $dbr->freeResult( $res );
 1278+ }
 1279+ if($n == 0) {
 1280+ return true;
 1281+ }
 1282+
 1283+ # find the proofreading status of transclusions
 1284+ $query = "SELECT COUNT(page_id) AS count FROM $templatelinks LEFT JOIN $page ON page_title=tl_title LEFT JOIN $catlinks ON cl_from=page_id where tl_from=$id and tl_namespace=$page_ns_index AND cl_to='###'";
 1285+ $n0 = pr_query_count( $dbr, $query, 'proofreadpage_quality0_category' );
 1286+ $n2 = pr_query_count( $dbr, $query, 'proofreadpage_quality2_category' );
 1287+ $n3 = pr_query_count( $dbr, $query, 'proofreadpage_quality3_category' );
 1288+ $n4 = pr_query_count( $dbr, $query, 'proofreadpage_quality4_category' );
 1289+ # quality1 is the default value
 1290+ $n1 = $n - $n0 - $n2 - $n3 - $n4;
 1291+
 1292+ # find the index page
 1293+ $indexquery = "SELECT DISTINCT p2.page_title AS title FROM $templatelinks LEFT JOIN $page AS p1 ON page_title=tl_title LEFT JOIN $pagelinks ON pl_title=page_title LEFT JOIN $page AS p2 ON p2.page_id=pl_from WHERE tl_from=$id AND tl_namespace=$page_ns_index AND pl_title=p1.page_title AND p2.page_namespace=$index_ns_index";
 1294+ $res = $dbr->query( $indexquery , __METHOD__ );
 1295+ if( $res && $dbr->numRows( $res ) > 0 ) {
 1296+ $row = $dbr->fetchObject( $res );
 1297+ $title = $row->title;
 1298+ $dbr->freeResult( $res );
 1299+ $sk = $wgUser->getSkin();
 1300+ $indexlink = $sk->makeKnownLink( "$index_namespace:$title", "[index]" );
 1301+ } else {
 1302+ $indexlink="";
 1303+ }
 1304+ $output = wfMsgForContent( 'proofreadpage_quality_message', $n0*100/$n, $n1*100/$n, $n2*100/$n, $n3*100/$n, $n4*100/$n, $n, $indexlink );
 1305+ $out->setSubtitle($output);
 1306+ return true;
 1307+};
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
@@ -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:56151-56762
/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
r56762wgDBTableOptionsthomasv16:24, 22 September 2009

Status & tagging log