r76061 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r76060‎ | r76061 | r76062 >
Date:23:36, 4 November 2010
Author:jeroendedauw
Status:deferred
Tags:
Comment:
Tag for version 0.5.
Modified paths:
  • /tags/extensions/ApprovedRevs/REL_0_5 (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.alias.php (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.css (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.hooks.php (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.i18n.php (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.php (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.sql (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs_body.php (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/README (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/SpecialApprovedRevs.php (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/maintenance (added) (history)
  • /tags/extensions/ApprovedRevs/REL_0_5/maintenance/approveAllPages.php (added) (history)

Diff [purge]

Index: tags/extensions/ApprovedRevs/REL_0_5/maintenance/approveAllPages.php
@@ -0,0 +1,72 @@
 2+<?php
 3+
 4+/**
 5+ * This script approves the current revision of all pages that are in an
 6+ * approvable namespace, and do not already have an approved revision.
 7+ *
 8+ * Usage:
 9+ * no parameters
 10+ *
 11+ * This program is free software; you can redistribute it and/or modify
 12+ * it under the terms of the GNU General Public License as published by
 13+ * the Free Software Foundation; either version 2 of the License, or
 14+ * (at your option) any later version.
 15+ *
 16+ * This program is distributed in the hope that it will be useful,
 17+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
 18+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 19+ * GNU General Public License for more details.
 20+ *
 21+ * You should have received a copy of the GNU General Public License along
 22+ * with this program; if not, write to the Free Software Foundation, Inc.,
 23+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 24+ * http://www.gnu.org/copyleft/gpl.html
 25+ *
 26+ * @author Jeroen De Dauw
 27+ * @author Yaron Koren
 28+ * @ingroup Maintenance
 29+ */
 30+
 31+require_once( dirname( __FILE__ ) . '/../../../maintenance/Maintenance.php' );
 32+
 33+class ApproveAllPages extends Maintenance {
 34+
 35+ public function __construct() {
 36+ parent::__construct();
 37+
 38+ $this->mDescription = "Approve the current revision of all pages that do not yet have an approved revision.";
 39+ }
 40+
 41+ public function execute() {
 42+ global $wgTitle;
 43+
 44+ $dbr = wfGetDB( DB_SLAVE );
 45+
 46+ $pages = $dbr->select(
 47+ 'page',
 48+ array(
 49+ 'page_id',
 50+ 'page_latest'
 51+ )
 52+ );
 53+
 54+ while ( $page = $pages->fetchObject() ) {
 55+ $title = Title::newFromID( $page->page_id );
 56+ // some extensions, like Semantic Forms, need $wgTitle
 57+ // set as well
 58+ $wgTitle = $title;
 59+ if ( ApprovedRevs::pageIsApprovable( $title ) &&
 60+ ! ApprovedRevs::hasApprovedRevision( $title ) ) {
 61+ ApprovedRevs::setApprovedRevID( $title, $page->page_latest, true );
 62+ $this->output( wfTimestamp( TS_DB ) . ' Approved the last revision of page "' . $title->getFullText() . '".' );
 63+ }
 64+ }
 65+
 66+
 67+ $this->output( "\n Finished setting all current revisions to approved. \n" );
 68+ }
 69+
 70+}
 71+
 72+$maintClass = "ApproveAllPages";
 73+require_once( DO_MAINTENANCE );
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/maintenance/approveAllPages.php
___________________________________________________________________
Added: svn:eol-style
174 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs_body.php
@@ -0,0 +1,207 @@
 2+<?php
 3+/**
 4+ * Main class for the Approved Revs extension.
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+ *
 9+ * @author Yaron Koren
 10+ */
 11+
 12+class ApprovedRevs {
 13+ /**
 14+ * Gets the approved revision ID for this page, or null if there isn't
 15+ * one.
 16+ */
 17+ public static function getApprovedRevID( $title ) {
 18+ if ( ! self::pageIsApprovable( $title ) ) {
 19+ return null;
 20+ }
 21+ $dbr = wfGetDB( DB_SLAVE );
 22+ $page_id = $title->getArticleId();
 23+ $rev_id = $dbr->selectField( 'approved_revs', 'rev_id', array( 'page_id' => $page_id ) );
 24+ return $rev_id;
 25+ }
 26+
 27+ /**
 28+ * Returns whether or not this page has a revision ID.
 29+ */
 30+ public static function hasApprovedRevision( $title ) {
 31+ $revision_id = self::getApprovedRevID( $title );
 32+ return ( ! empty( $revision_id ) );
 33+ }
 34+
 35+ /**
 36+ * Returns the content of the approved revision of this page, or null
 37+ * if there isn't one.
 38+ */
 39+ public static function getApprovedContent( $title ) {
 40+ $revision_id = ApprovedRevs::getApprovedRevID( $title );
 41+ if ( empty( $revision_id ) ) {
 42+ return null;
 43+ }
 44+ $article = new Article( $title, $revision_id );
 45+ return( $article->getContent() );
 46+ }
 47+
 48+ /**
 49+ * Helper function - returns whether the user is currently requesting
 50+ * a page via the simple URL for it - not specfying a version number,
 51+ * not editing the page, etc.
 52+ */
 53+ public static function isDefaultPageRequest() {
 54+ // this first test seems to no longer work with MW 1.16
 55+ /*
 56+ if ( $title->mArticleID > -1 ) {
 57+ return true;
 58+ }
 59+ */
 60+ global $wgRequest;
 61+ if ( $wgRequest->getCheck( 'oldid' ) ) {
 62+ return false;
 63+ }
 64+ // check if it's an action other than viewing
 65+ global $wgRequest;
 66+ if ( $wgRequest->getCheck( 'action' ) &&
 67+ $wgRequest->getVal( 'action' ) != 'view' &&
 68+ $wgRequest->getVal( 'action' ) != 'purge' &&
 69+ $wgRequest->getVal( 'action' ) != 'render' ) {
 70+ return false;
 71+ }
 72+ return true;
 73+ }
 74+
 75+ /**
 76+ * Returns whether this page can be approved - either because it's in
 77+ * a supported namespace, or because it's been specially marked as
 78+ * approvable. Also stores the boolean answer as a field in the page
 79+ * object, to speed up processing if it's called more than once.
 80+ */
 81+ public static function pageIsApprovable( $title ) {
 82+ // if this function was already called for this page, the
 83+ // value should have been stored as a field in the $title object
 84+ if ( isset( $title->isApprovable ) ) {
 85+ return $title->isApprovable;
 86+ }
 87+
 88+ // check the namespace
 89+ global $egApprovedRevsNamespaces;
 90+ if ( in_array( $title->getNamespace(), $egApprovedRevsNamespaces ) ) {
 91+ $title->isApprovable = true;
 92+ return true;
 93+ }
 94+
 95+ // it's not in an included namespace, so check for the page
 96+ // property - for some reason, calling the standard
 97+ // getProperty() function doesn't work, so we just do a DB
 98+ // query on the page_props table
 99+ $dbr = wfGetDB( DB_SLAVE );
 100+ $res = $dbr->select( 'page_props', 'COUNT(*)',
 101+ array(
 102+ 'pp_page' => $title->getArticleID(),
 103+ 'pp_propname' => 'approvedrevs',
 104+ 'pp_value' => 'y'
 105+ )
 106+ );
 107+ $row = $dbr->fetchRow( $res );
 108+ $isApprovable = ( $row[0] == '1' );
 109+ $title->isApprovable = $isApprovable;
 110+ return $isApprovable;
 111+ }
 112+
 113+ public static function saveApprovedRevIDInDB( $title, $rev_id ) {
 114+ $dbr = wfGetDB( DB_MASTER );
 115+ $page_id = $title->getArticleId();
 116+ $old_rev_id = $dbr->selectField( 'approved_revs', 'rev_id', array( 'page_id' => $page_id ) );
 117+ if ( $old_rev_id ) {
 118+ $dbr->update( 'approved_revs', array( 'rev_id' => $rev_id ), array( 'page_id' => $page_id ) );
 119+ } else {
 120+ $dbr->insert( 'approved_revs', array( 'page_id' => $page_id, 'rev_id' => $rev_id ) );
 121+ }
 122+ }
 123+
 124+ /**
 125+ * Sets a certain revision as the approved one for this page in the
 126+ * approved_revs DB table; calls a "links update" on this revision
 127+ * so that category information can be stored correctly, as well as
 128+ * info for extensions such as Semantic MediaWiki; and logs the action.
 129+ */
 130+ public static function setApprovedRevID( $title, $rev_id, $is_latest = false ) {
 131+ self::saveApprovedRevIDInDB( $title, $rev_id );
 132+ // if the revision being approved is definitely the latest
 133+ // one, there's no need to call the parser on it
 134+ if ( !$is_latest ) {
 135+ $parser = new Parser();
 136+ $parser->setTitle( $title );
 137+ $article = new Article( $title, $rev_id );
 138+ $text = $article->getContent();
 139+ $options = new ParserOptions();
 140+ $parser->parse( $text, $title, $options, true, true, $rev_id );
 141+ $u = new LinksUpdate( $title, $parser->getOutput() );
 142+ $u->doUpdate();
 143+ }
 144+
 145+ $log = new LogPage( 'approval' );
 146+ $rev_url = $title->getFullURL( array( 'old_id' => $rev_id ) );
 147+ $rev_link = Xml::element(
 148+ 'a',
 149+ array( 'href' => $rev_url ),
 150+ $rev_id
 151+ );
 152+ $logParams = array( $rev_link );
 153+ $log->addEntry(
 154+ 'approve',
 155+ $title,
 156+ '',
 157+ $logParams
 158+ );
 159+
 160+ wfRunHooks( 'ApprovedRevsRevisionApproved', array( $parser, $title, $rev_id ) );
 161+ }
 162+
 163+ public static function deleteRevisionApproval( $title ) {
 164+ $dbr = wfGetDB( DB_MASTER );
 165+ $page_id = $title->getArticleId();
 166+ $dbr->delete( 'approved_revs', array( 'page_id' => $page_id ) );
 167+ }
 168+
 169+ /**
 170+ * Unsets the approved revision for this page in the approved_revs DB
 171+ * table; calls a "links update" on this page so that category
 172+ * information can be stored correctly, as well as info for
 173+ * extensions such as Semantic MediaWiki; and logs the action.
 174+ */
 175+ public static function unsetApproval( $title ) {
 176+ self::deleteRevisionApproval( $title );
 177+
 178+ $parser = new Parser();
 179+ $parser->setTitle( $title );
 180+ $article = new Article( $title );
 181+ $text = $article->getContent();
 182+ $options = new ParserOptions();
 183+ $parser->parse( $text, $title, $options );
 184+ $u = new LinksUpdate( $title, $parser->getOutput() );
 185+ $u->doUpdate();
 186+
 187+ $log = new LogPage( 'approval' );
 188+ $log->addEntry(
 189+ 'unapprove',
 190+ $title,
 191+ ''
 192+ );
 193+
 194+ wfRunHooks( 'ApprovedRevsRevisionUnapproved', array( $parser, $title ) );
 195+ }
 196+
 197+ public static function addCSS() {
 198+ global $wgOut, $egApprovedRevsScriptPath;
 199+ $link = array(
 200+ 'rel' => 'stylesheet',
 201+ 'type' => 'text/css',
 202+ 'media' => "screen",
 203+ 'href' => "$egApprovedRevsScriptPath/ApprovedRevs.css"
 204+ );
 205+ $wgOut->addLink( $link );
 206+ }
 207+
 208+}
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs_body.php
___________________________________________________________________
Added: svn:eol-style
1209 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.i18n.php
@@ -0,0 +1,1066 @@
 2+<?php
 3+/**
 4+ * Internationalization file for the Approved Revs extension.
 5+ *
 6+ * @file
 7+ * @ingroup Extensions
 8+*/
 9+
 10+$messages = array();
 11+
 12+/** English
 13+ * @author Yaron Koren
 14+ */
 15+$messages['en'] = array(
 16+ // user messages
 17+ 'approvedrevs-desc' => 'Set a single revision of a page as approved',
 18+ 'approvedrevs-logname' => 'Revision approval log',
 19+ 'approvedrevs-logdesc' => 'This is the log of revisions that have been approved.',
 20+ 'approvedrevs-approve' => 'approve',
 21+ 'approvedrevs-unapprove' => 'unapprove',
 22+ 'approvedrevs-approvesuccess' => 'This revision of the page has been set as the approved version.',
 23+ 'approvedrevs-unapprovesuccess' => 'There is no longer an approved version for this page.
 24+Instead, the most recent revision will be shown.',
 25+ 'approvedrevs-unapprovesuccess2' => 'There is no longer an approved version for this page.
 26+Instead, a blank page will be shown.',
 27+ 'approvedrevs-approveaction' => 'set $2 as the approved revision for "[[$1]]"',
 28+ 'approvedrevs-unapproveaction' => 'unset approved revision for "[[$1]]"',
 29+ 'approvedrevs-notlatest' => 'This is the approved revision of this page; it is not the most recent.',
 30+ 'approvedrevs-approvedandlatest' => 'This is the approved revision of this page, as well as being the most recent.',
 31+ 'approvedrevs-viewlatest' => 'View most recent revision.',
 32+ 'approvedrevs-blankpageshown' => 'No revision has been approved for this page.',
 33+ 'approvedrevs-editwarning' => 'Please note that you are now editing the latest revision of this page, which is not the approved one shown by default.',
 34+ 'approvedrevs' => 'Approved revisions',
 35+ 'approvedrevs-approvedpages' => 'All pages with an approved revision',
 36+ 'approvedrevs-notlatestpages' => 'Pages whose approved revision is not their latest',
 37+ 'approvedrevs-unapprovedpages' => 'Unapproved pages',
 38+ 'approvedrevs-view' => 'View:',
 39+ 'approvedrevs-revisionnumber' => 'revision $1',
 40+ 'approvedrevs-approvedby' => 'approved by $1 on $2',
 41+ 'approvedrevs-difffromlatest' => 'diff from latest',
 42+ 'right-approverevisions' => 'Set a certain revision of a wiki page as approved',
 43+ 'right-viewlinktolatest' => 'View explanatory text at the top of pages that have an approved revision',
 44+);
 45+
 46+/** Message documentation (Message documentation)
 47+ * @author EugeneZelenko
 48+ */
 49+$messages['qqq'] = array(
 50+ 'approvedrevs-approve' => '{{Identical|Approve}}',
 51+ 'approvedrevs-view' => '{{Identical|View}}',
 52+ 'approvedrevs-revisionnumber' => '{{Identical|Revision}}',
 53+);
 54+
 55+/** Afrikaans (Afrikaans)
 56+ * @author Naudefj
 57+ */
 58+$messages['af'] = array(
 59+ 'approvedrevs-approve' => 'keur goed',
 60+ 'approvedrevs-viewlatest' => 'Wys mees onlangse hersiening.',
 61+ 'approvedrevs-approvedpages' => 'Goedgekeurde bladsye',
 62+ 'approvedrevs-view' => 'Weergawe:',
 63+ 'approvedrevs-revisionnumber' => 'weergawe $1',
 64+);
 65+
 66+/** Arabic (العربية)
 67+ * @author Moemin05
 68+ */
 69+$messages['ar'] = array(
 70+ 'approvedrevs-approve' => 'موافقة',
 71+ 'approvedrevs-unapprove' => 'إزالة موافقة',
 72+ 'approvedrevs-approvedpages' => 'صفحات تمّت الموافقة عليها',
 73+);
 74+
 75+/** Aramaic (ܐܪܡܝܐ)
 76+ * @author Basharh
 77+ */
 78+$messages['arc'] = array(
 79+ 'approvedrevs-approve' => 'ܩܘܒܠܐ',
 80+ 'approvedrevs-unapprove' => 'ܠܐ ܩܘܒܠܐ',
 81+ 'approvedrevs-approvedpages' => 'ܕܦ̈ܐ ܩܒܝܠ̈ܐ',
 82+ 'approvedrevs-unapprovedpages' => 'ܕܦ̈ܐ ܠܐ ܩܒܝܠ̈ܐ',
 83+);
 84+
 85+/** Bashkir (Башҡорт)
 86+ * @author Assele
 87+ */
 88+$messages['ba'] = array(
 89+ 'approvedrevs-desc' => 'Биттең бер өлгөһөн раҫланған тип билдәләү',
 90+ 'approvedrevs-logname' => 'Өлгөләрҙе раҫлау яҙмалары журналы',
 91+ 'approvedrevs-logdesc' => 'Был — биттәрҙең раҫланған өлгөләре журналы.',
 92+ 'approvedrevs-approve' => 'раҫларға',
 93+ 'approvedrevs-unapprove' => 'раҫлауҙы алырға',
 94+ 'approvedrevs-approvesuccess' => 'Биттең был өлгөһө раҫланған тип билдәләнде.',
 95+ 'approvedrevs-unapprovesuccess' => 'Был биттең раҫланған өлгөһө юҡ.
 96+Уның урынына һуңғы өлгө күрһәтеләсәк.',
 97+ 'approvedrevs-unapprovesuccess2' => 'Был биттең башҡа раҫланған өлгөһө юҡ.
 98+Уның урынына буш бит күрһәтеләсәк.',
 99+ 'approvedrevs-approveaction' => '$2 өлгөһөн "[[$1]]" битенең раҫланған өлгөһө тип билдәләргә',
 100+ 'approvedrevs-unapproveaction' => '"[[$1]]" битенең раҫланған өлгөһөнөң раҫланыуын алырға',
 101+ 'approvedrevs-notlatest' => 'Был — биттең раҫланған өлгөһө. Яңыраҡ өлгөләр бар.',
 102+ 'approvedrevs-approvedandlatest' => 'Был — биттең раҫланған өлгөһө, ул — шулай уҡ биттең яңы өлгөһө.',
 103+ 'approvedrevs-viewlatest' => 'Һуңғы өлгөнө ҡарарға.',
 104+ 'approvedrevs-blankpageshown' => 'Был бит өсөн раҫланған өлгөләр юҡ.',
 105+ 'approvedrevs-editwarning' => 'Зинһар, иғтибар итегеҙ, һеҙ хәҙер был биттең һуңғы өлгөһөн мөхәррирләйһегеҙ, әммә ул күрһәтелмәй, сөнки ул раҫланмаған.',
 106+ 'approvedrevs-approvedpages' => 'Раҫланған биттәр',
 107+ 'approvedrevs-notlatestpages' => 'Был — биттең раҫланған өлгөһө. Яңыраҡ өлгөләр бар.',
 108+ 'approvedrevs-unapprovedpages' => 'Раҫланмаған биттәр',
 109+ 'right-approverevisions' => 'Вики-биттәрҙең ҡайһы бер өлгөләрен раҫланған тип билдәләү',
 110+ 'right-viewlinktolatest' => 'Раҫланған өлгөләре булған биттәрҙең өҫкө өлөшөндә аңлатманы ҡарау',
 111+);
 112+
 113+/** Belarusian (Taraškievica orthography) (Беларуская (тарашкевіца))
 114+ * @author EugeneZelenko
 115+ * @author Jim-by
 116+ * @author Wizardist
 117+ */
 118+$messages['be-tarask'] = array(
 119+ 'approvedrevs-desc' => 'Зацьвердзіць адну вэрсію старонкі',
 120+ 'approvedrevs-logname' => 'Журнал зацьверджаньня вэрсіяў',
 121+ 'approvedrevs-logdesc' => 'Гэта журнал зацьверджаных вэрсіяў.',
 122+ 'approvedrevs-approve' => 'зацьвердзіць',
 123+ 'approvedrevs-unapprove' => 'адхіліць',
 124+ 'approvedrevs-approvesuccess' => 'Гэтая вэрсія старонкі была зацьверджаная.',
 125+ 'approvedrevs-unapprovesuccess' => 'Болей не існуе зацьверджанай вэрсіі гэтай старонкі.
 126+Замест яе будзе паказаная апошняя вэрсія.',
 127+ 'approvedrevs-unapprovesuccess2' => 'Болей не існуе зацьверджанай вэрсіі гэтай старонкі.
 128+Замест яе будзе паказаная пустая старонка.',
 129+ 'approvedrevs-approveaction' => 'зацьвердзіць $2 як зацьверджаную вэрсію старонкі «[[$1]]»',
 130+ 'approvedrevs-unapproveaction' => 'зьняць зацьверджаньне з вэрсіі старонкі «[[$1]]»',
 131+ 'approvedrevs-notlatest' => 'Гэта зацьверджаная вэрсія гэтай старонкі; гэта не апошняя вэрсія.',
 132+ 'approvedrevs-approvedandlatest' => 'Гэта зацьверджаная вэрсія гэтай старонкі, адначасова яна зьяўляецца апошняй вэрсіяй.',
 133+ 'approvedrevs-viewlatest' => 'Паказаць апошнюю вэрсію.',
 134+ 'approvedrevs-blankpageshown' => 'Для гэтай старонкі няма зацьверджанай вэрсіі.',
 135+ 'approvedrevs-editwarning' => 'Калі ласка, памятайце, што зараз Вы рэдагуеце апошнюю вэрсію гэтай старонкі, якая яшчэ не зьяўляецца зацьверджанай і не паказваецца па змоўчваньні.',
 136+ 'approvedrevs' => 'Зацьверджаныя вэрсіі',
 137+ 'approvedrevs-approvedpages' => 'Зацьверджаныя старонкі',
 138+ 'approvedrevs-notlatestpages' => 'Старонкі, зацьверджаныя вэрсіі якіх не зьяўляюцца апошнімі',
 139+ 'approvedrevs-unapprovedpages' => 'Незацьверджаныя старонкі',
 140+ 'approvedrevs-view' => 'Прагляд:',
 141+ 'approvedrevs-revisionnumber' => 'вэрсія $1',
 142+ 'right-approverevisions' => 'зацьверджаньне вызначаных вэрсіяў вікі-старонак',
 143+ 'right-viewlinktolatest' => 'прагляд тлумачальнага тэксту ў версе старонак, якія маюць зацьверджаныя вэрсіі',
 144+);
 145+
 146+/** Breton (Brezhoneg)
 147+ * @author Fulup
 148+ * @author Y-M D
 149+ */
 150+$messages['br'] = array(
 151+ 'approvedrevs-desc' => 'Na verkañ nemet un adweladenn eus ur bajenn evel aprouet',
 152+ 'approvedrevs-logname' => 'Marilh aprouadennoù an adweladennoù',
 153+ 'approvedrevs-logdesc' => 'Hemañ eo Marilh an adweladennoù bet aprouet.',
 154+ 'approvedrevs-approve' => 'aprouiñ',
 155+ 'approvedrevs-unapprove' => 'dizaprouiñ',
 156+ 'approvedrevs-approvesuccess' => 'An adweladenn-mañ eus ar bajenn eo zo bet merket evel ar stumm aprouet.',
 157+ 'approvedrevs-unapprovesuccess' => "N'eus stumm aprouet ebet ken eus ar bajenn-mañ.
 158+En e lec'h e vo lakaet an adweladenn nevesañ.",
 159+ 'approvedrevs-unapprovesuccess2' => "N'eus stumm aprouet ebet ken eus ar bajenn-mañ.
 160+En e lec'h e vo lakaet ur bajenn wenn.",
 161+ 'approvedrevs-approveaction' => 'en deus merket $2 evel adweladenn aprouet "[[$1]]"',
 162+ 'approvedrevs-unapproveaction' => 'en deus nullet merkadur un adweladenn aprouet evit "[[$1]]"',
 163+ 'approvedrevs-notlatest' => "Homañ eo an adweladenn aprouet evit ar bajenn-mañ; n'eo ket ar stumm nevesañ.",
 164+ 'approvedrevs-approvedandlatest' => "Homañ eo an adweladenn aprouet evit ar bajenn-mañ; bez' eo ivez ar stumm nevesañ.",
 165+ 'approvedrevs-viewlatest' => 'Gwelet an adweladenn diwezhañ.',
 166+ 'approvedrevs-blankpageshown' => "N'eus bet aprouet adweladenn ebet evit ar bajenn-mañ.",
 167+ 'approvedrevs-editwarning' => "Taolit evezh emaoc'h o tegas kemmoù e stumm diwezhañ ar bajenn-mañ; n'eo ket hemañ ar stumm aprouet zo lakaet war wel dre ziouer.",
 168+ 'approvedrevs-approvedpages' => 'Pajennoù aprouet',
 169+ 'approvedrevs-notlatestpages' => "Homañ eo an adweladenn aprouet evit ar bajenn-mañ; n'eo ket ar stumm nevesañ.",
 170+ 'approvedrevs-unapprovedpages' => "Pajennoù n'int ket bet aprouet",
 171+ 'right-approverevisions' => 'Merkañ un adweladenn bennak eus ur bajenn wiki evel aprouet',
 172+ 'right-viewlinktolatest' => 'Gwelet an destenn displegañ e penn uhelañ ar pajennoù zo bet aprouet un adweladenn anezho',
 173+);
 174+
 175+/** Bosnian (Bosanski)
 176+ * @author CERminator
 177+ * @author Palapa
 178+ */
 179+$messages['bs'] = array(
 180+ 'approvedrevs-desc' => 'Postavljanje jedne revizije stranice kao odobrene',
 181+ 'approvedrevs-logname' => 'Zapisnik odobravanje revizija',
 182+ 'approvedrevs-logdesc' => 'Ovo je zapis revizija koje su odobrene.',
 183+ 'approvedrevs-approve' => 'odobri',
 184+ 'approvedrevs-unapprove' => 'neodobreno',
 185+ 'approvedrevs-approvesuccess' => 'Ova revizija stranice je postavljena kao odobrena verzija.',
 186+ 'approvedrevs-unapprovesuccess' => 'Više ne postoji odobrena verzija ove stranice.
 187+Umjesto toga, zadnja revizija će biti prikazana.',
 188+ 'approvedrevs-unapprovesuccess2' => 'Više ne postoji odobrena verzija ove stranice.
 189+Umjesto toga, bit će prikazana prazna stranica.',
 190+ 'approvedrevs-approveaction' => 'postavi $2 kao odobrenu reviziju za "[[$1]]"',
 191+ 'approvedrevs-unapproveaction' => 'ukloni odobrenu reviziju za "[[$1]]"',
 192+ 'approvedrevs-notlatest' => 'Ovo je odobrena verzija ove stranice; to nije najnovija verzija.',
 193+ 'approvedrevs-approvedandlatest' => 'Ovo je odobrena verzija ove stranice, a ujedno i najnovija.',
 194+ 'approvedrevs-viewlatest' => 'Pogledaj zadnju reviziju.',
 195+ 'approvedrevs-blankpageshown' => 'Nijedna revizija nije odobrena za ovu stranicu.',
 196+ 'approvedrevs-editwarning' => 'Molimo vas da imate u vidu da sada uređujete posljednju reviziju ove stranice, koja nije odobrena što je prikazano po postavkama.',
 197+ 'approvedrevs-approvedpages' => 'Odobrene stranice',
 198+ 'approvedrevs-notlatestpages' => 'Ovo je odobrena verzija ove stranice; to nije najnovija verzija.',
 199+ 'approvedrevs-unapprovedpages' => 'Neodobrene stranice',
 200+ 'right-approverevisions' => 'Postavi određenu reviziju wiki stranice kao odobrenu',
 201+ 'right-viewlinktolatest' => 'Vidi tekst objašnjenja na vrhu stranica koje imaju odobrenu reviziju',
 202+);
 203+
 204+/** Czech (Česky) */
 205+$messages['cs'] = array(
 206+ 'approvedrevs-approve' => 'schválit',
 207+);
 208+
 209+/** German (Deutsch)
 210+ * @author Kghbln
 211+ */
 212+$messages['de'] = array(
 213+ 'approvedrevs-desc' => 'Ermöglicht es, stets eine bestimmte Version einer Seite als bestätigte Version anzuzeigen',
 214+ 'approvedrevs-logname' => 'Versionsbestätigungs-Logbuch',
 215+ 'approvedrevs-logdesc' => 'In diesem Logbuch werden die Versionsbestätigungen von Seiten protokolliert.',
 216+ 'approvedrevs-approve' => 'bestätigen',
 217+ 'approvedrevs-unapprove' => 'ablehnen',
 218+ 'approvedrevs-approvesuccess' => 'Diese Version der Seite wurde als bestätigte Version festgelegt.',
 219+ 'approvedrevs-unapprovesuccess' => 'Nunmehr gibt es keine bestätigte Version dieser Seite.
 220+Stattdessen wird die neueste Version angezeigt.',
 221+ 'approvedrevs-unapprovesuccess2' => 'Nunmehr gibt es keine bestätigte Version dieser Seite.
 222+Stattdessen wird eine leere Seite angezeigt.',
 223+ 'approvedrevs-approveaction' => '$2 als bestätigte Version für „[[$1]]“ festlegen',
 224+ 'approvedrevs-unapproveaction' => 'bestätigte Version für „[[$1]]“ zurücknehmen',
 225+ 'approvedrevs-notlatest' => 'Dies ist die bestätigte Version dieser Seite, allerdings nicht die neueste Version.',
 226+ 'approvedrevs-approvedandlatest' => 'Dies ist die bestätigte sowie die neueste Version dieser Seite.',
 227+ 'approvedrevs-viewlatest' => 'Die neueste Version ansehen.',
 228+ 'approvedrevs-blankpageshown' => 'Keine Version dieser Seite wurde bislang bestätigt.',
 229+ 'approvedrevs-editwarning' => 'Beachte bitte, dass du gerade die neueste Version dieser Seite bearbeitest. Sie entspricht nicht der bestätigten Version, die standardmäßig angezeigt wird.',
 230+ 'approvedrevs' => 'Bestätigte Versionen',
 231+ 'approvedrevs-approvedpages' => 'Bestätigte Seiten',
 232+ 'approvedrevs-notlatestpages' => 'Seiten, deren bestätigte Version nicht die Neueste ist',
 233+ 'approvedrevs-unapprovedpages' => 'Nicht bestätigte Seiten',
 234+ 'approvedrevs-view' => 'Ansehen:',
 235+ 'approvedrevs-revisionnumber' => 'Version $1',
 236+ 'right-approverevisions' => 'Eine bestimmte Version einer Wikiseite als bestätigt festlegen',
 237+ 'right-viewlinktolatest' => 'Erläuternde Hinweise im Kopf der Seiten anzeigen, die eine bestätigte Version haben.',
 238+);
 239+
 240+/** German (formal address) (Deutsch (Sie-Form))
 241+ * @author Kghbln
 242+ */
 243+$messages['de-formal'] = array(
 244+ 'approvedrevs-editwarning' => 'Beachten Sie bitte, dass Sie gerade die neueste Version dieser Seite bearbeiten. Sie entspricht nicht der bestätigten Version, die standardmäßig angezeigt wird.',
 245+);
 246+
 247+/** Lower Sorbian (Dolnoserbski)
 248+ * @author Michawiki
 249+ */
 250+$messages['dsb'] = array(
 251+ 'approvedrevs-desc' => 'Wěstu wersiju boka ako pśizwólonu nastajiś',
 252+ 'approvedrevs-logname' => 'Protokol pśizwólonych wersijow',
 253+ 'approvedrevs-logdesc' => 'To jo protokol wersijow, kótarež su se pśizwólili.',
 254+ 'approvedrevs-approve' => 'pśizwóliś',
 255+ 'approvedrevs-unapprove' => 'zakazaś',
 256+ 'approvedrevs-approvesuccess' => 'Toś ta wersija boka jo se ako pśizwólona wersija nastajiła.',
 257+ 'approvedrevs-unapprovesuccess' => 'Njejo wěcej pśizwólona wersija za toś ten bok.
 258+Město togo nejnowša wersija se pokažo.',
 259+ 'approvedrevs-approveaction' => '$2 ako pśizwólonu wersiju za "[[$1]]" nastajiś',
 260+ 'approvedrevs-unapproveaction' => 'Pśizwólonu wersiju za "[[$1]]" anulěrowaś',
 261+ 'approvedrevs-notlatest' => 'To jo pśizwólona wersija toś togo boka; njejo nejnowša.',
 262+ 'approvedrevs-approvedandlatest' => 'To jo pśizwólona wersija toś togo boka a teke nejnowša.',
 263+ 'approvedrevs-viewlatest' => 'Nejnowšu wersiju pokazaś',
 264+ 'approvedrevs-approvedpages' => 'Pśizwólone boki',
 265+ 'approvedrevs-notlatestpages' => 'To jo pśizwólona wersija toś togo boka; njejo nejnowša.',
 266+ 'right-approverevisions' => 'Wěstu wersiju wikiboka ako pśizwólonu nastajiś',
 267+ 'right-viewlinktolatest' => 'Tekst wujasnjenja górjejce na bokach pokazaś, kótarež maju pśizwólonu wersiju',
 268+);
 269+
 270+/** Greek (Ελληνικά)
 271+ * @author Περίεργος
 272+ */
 273+$messages['el'] = array(
 274+ 'approvedrevs-desc' => 'Καθορίζει μια ενιαία αναθεώρηση μιας σελίδας όπως έχει εγκριθεί',
 275+ 'approvedrevs-logname' => 'Ημερολόγιο καταγραφής της αποδοχής των αναθεωρήσεων',
 276+ 'approvedrevs-logdesc' => 'Αυτό είναι το ημερολόγιο των αναθεωρήσεων που έχουν εγκριθεί.',
 277+ 'approvedrevs-approve' => 'έγκριση',
 278+ 'approvedrevs-unapprove' => 'μη έγκριση',
 279+ 'approvedrevs-approvesuccess' => 'Αυτή η αναθεώρηση της σελίδας έχει οριστεί ως η εγκεκριμένη έκδοση.',
 280+ 'approvedrevs-unapprovesuccess' => 'Δεν υπάρχει πλέον μια εγκεκριμένη έκδοση για αυτή τη σελίδα.
 281+Σε αντικατάσταση, θα εμφανιστεί η πιο πρόσφατη αναθεώρηση.',
 282+ 'approvedrevs-notlatest' => 'Αυτή είναι η εγκεκριμένη αναθεώρηση αυτής της σελίδας· δεν είναι η πιο πρόσφατη.',
 283+ 'approvedrevs-approvedandlatest' => 'Αυτή είναι η εγκεκριμένη αναθεώρηση αυτής της σελίδας, καθώς και η πιο πρόσφατη.',
 284+ 'approvedrevs-viewlatest' => 'Δείτε την πιο πρόσφατη αναθεώρηση.',
 285+ 'approvedrevs-approvedpages' => 'Εγκεκριμένες σελίδες',
 286+ 'approvedrevs-notlatestpages' => 'Αυτή είναι η εγκεκριμένη αναθεώρηση αυτής της σελίδας· δεν είναι η πιο πρόσφατη.',
 287+ 'right-viewlinktolatest' => 'Προβολή επεξηγηματικού κειμένου στο επάνω μέρος των σελίδων που έχουν εγκεκριμένη αναθεώρηση',
 288+);
 289+
 290+/** Esperanto (Esperanto)
 291+ * @author Yekrats
 292+ */
 293+$messages['eo'] = array(
 294+ 'approvedrevs-logname' => 'Protokolo pri aprobado de revizioj',
 295+ 'approvedrevs-logdesc' => 'Jen protokolo de revizioj aprobitaj.',
 296+ 'approvedrevs-approve' => 'aprobi',
 297+ 'approvedrevs-unapprove' => 'malaprobi',
 298+ 'approvedrevs-approvesuccess' => 'Ĉi tiu revizio de la paĝo estis aprobita kiel la aprobita versio.',
 299+ 'approvedrevs-unapprovesuccess' => 'Ne plu estas aprobita versio por ĉi tiu paĝo.
 300+Anstataŭe, la plej lasta revizio estos montrita.',
 301+ 'approvedrevs-unapprovesuccess2' => 'Ne plu estas aprobita verzio de ĉi tiu paĝo.
 302+Anstataŭe, nula paĝo estos montrita.',
 303+ 'approvedrevs-approveaction' => 'Establi $2 kiel la aprobita revizio por "[[$1]]"',
 304+ 'approvedrevs-unapproveaction' => 'malestabli apbrobitan revizion por "[[$1]]"',
 305+ 'approvedrevs-notlatest' => 'Jen la aprobita revizio de ĉi tiu paĝo; ĝi ne estas la plej lastatempa.',
 306+ 'approvedrevs-approvedandlatest' => 'Jen la aprobita revizio de ĉi tiu paĝo, kaj ankaŭ estis la plej lastatempa.',
 307+ 'approvedrevs-approvedpages' => 'Aprobitaj paĝoj',
 308+ 'approvedrevs-notlatestpages' => 'Jen la aprobita revizio de ĉi tiu paĝo; ĝi ne estas la plej lastatempa.',
 309+ 'approvedrevs-unapprovedpages' => 'Malaprobitaj paĝoj',
 310+);
 311+
 312+/** Spanish (Español)
 313+ * @author Crazymadlover
 314+ * @author Locos epraix
 315+ * @author Translationista
 316+ */
 317+$messages['es'] = array(
 318+ 'approvedrevs-desc' => 'Establecer una revisión única de una página como aprovada',
 319+ 'approvedrevs-logname' => 'Registro de revisiones aprobadas',
 320+ 'approvedrevs-logdesc' => 'Este es el registro de las revisiones que han sido aprobadas.',
 321+ 'approvedrevs-approve' => 'aprobar',
 322+ 'approvedrevs-unapprove' => 'desaprobar',
 323+ 'approvedrevs-approvesuccess' => 'Esta revisión de la página ha sido establecida como la versión aprobada.',
 324+ 'approvedrevs-unapprovesuccess' => 'Ya no hay una versión aprobada para esta página.
 325+En su lugar, se muestra la revisión más reciente.',
 326+ 'approvedrevs-unapprovesuccess2' => 'Ya no hay una versión aprobada para esta página.
 327+En su lugar, se mostrará una página en blanco.',
 328+ 'approvedrevs-approveaction' => 'establecer $2 como la revisión aprobada para para "[[$1]]"',
 329+ 'approvedrevs-unapproveaction' => 'desestablecer la revisión aprobada para "[[$1]]"',
 330+ 'approvedrevs-notlatest' => 'Esta es la revisión aprobada de esta página, no es la más reciente.',
 331+ 'approvedrevs-approvedandlatest' => 'Esta es la revisión aprobada de esta página, siendo también la más reciente.',
 332+ 'approvedrevs-viewlatest' => 'Ver revisión más reciente.',
 333+ 'approvedrevs-blankpageshown' => 'No se ha aprobado una revisión de esta página.',
 334+ 'approvedrevs-editwarning' => 'Tenga en cuenta que ahora está editando la última revisión de esta página, que no es la aprobada, que es la que se muestra de forma predeterminada.',
 335+ 'approvedrevs-approvedpages' => 'Páginas aprobadas',
 336+ 'approvedrevs-notlatestpages' => 'Esta es la revisión aprobada de esta página, no es la más reciente.',
 337+ 'approvedrevs-unapprovedpages' => 'Páginas reprobadas',
 338+ 'right-approverevisions' => 'Establecer una cierta revisión de una página wiki como aprobada',
 339+ 'right-viewlinktolatest' => 'Ver texto explicativo en la parte superior de las páginas que tienen una revisión aprobada',
 340+);
 341+
 342+/** Finnish (Suomi)
 343+ * @author Centerlink
 344+ * @author Crt
 345+ * @author Nike
 346+ */
 347+$messages['fi'] = array(
 348+ 'approvedrevs-desc' => 'Aseta yksittäinen sivuversio hyväksytyksi',
 349+ 'approvedrevs-logname' => 'Versiohyväksynnän loki',
 350+ 'approvedrevs-logdesc' => 'Tämä on hyväksyttyjen versioiden loki.',
 351+ 'approvedrevs-approve' => 'hyväksy',
 352+ 'approvedrevs-unapprove' => 'älä hyväksy',
 353+ 'approvedrevs-approvesuccess' => 'Tämä sivuversio on asetettu hyväksytyksi versioksi.',
 354+ 'approvedrevs-unapprovesuccess' => 'Tästä sivusta ei ole enää hyväksyttyä versiota.
 355+Sen sijaan, viimeisin versio näytetään.',
 356+ 'approvedrevs-notlatest' => 'Tämä on tämän sivun hyväksytty versio; se ei ole viimeisin.',
 357+ 'approvedrevs-approvedandlatest' => 'Tämä on tämän sivun hyväksytty ja samalla viimeisin versio.',
 358+ 'approvedrevs-viewlatest' => 'Näytä viimeisin versio.',
 359+ 'approvedrevs-approvedpages' => 'Hyväksytyt sivut',
 360+ 'approvedrevs-notlatestpages' => 'Tämä on tämän sivun hyväksytty versio; se ei ole viimeisin.',
 361+ 'right-approverevisions' => 'Asettaa wikisivun tietty versio hyväksytyksi',
 362+ 'right-viewlinktolatest' => 'Nähdä selittävä teksti niiden sivujen yläosassa, joilla on hyväksytty versio',
 363+);
 364+
 365+/** French (Français)
 366+ * @author Peter17
 367+ */
 368+$messages['fr'] = array(
 369+ 'approvedrevs-desc' => 'Marquer une seule révision d’une page comme approuvée',
 370+ 'approvedrevs-logname' => 'Journal des approbations de révisions',
 371+ 'approvedrevs-logdesc' => 'Ceci est le journal des révisions qui ont été marquées comme approuvées.',
 372+ 'approvedrevs-approve' => 'approuver',
 373+ 'approvedrevs-unapprove' => 'désapprouver',
 374+ 'approvedrevs-approvesuccess' => 'Cette révision de la page a été marquée comme étant la version approuvée.',
 375+ 'approvedrevs-unapprovesuccess' => 'Il n’y a plus de version approuvée de cette page.
 376+À la place, la révision la plus récente sera affichée.',
 377+ 'approvedrevs-unapprovesuccess2' => 'Il n’y a plus de version approuvée de cette page.
 378+À la place, une page vide sera affichée.',
 379+ 'approvedrevs-approveaction' => 'a marqué $2 comme la révision approuvée de « [[$1]] »',
 380+ 'approvedrevs-unapproveaction' => 'a annulé le marquage d’une révision approuvée pour « [[$1]] »',
 381+ 'approvedrevs-notlatest' => 'Ceci est la révision approuvée de cette page. Ce n’est pas la plus récente.',
 382+ 'approvedrevs-approvedandlatest' => 'Ceci est la révision approuvée de la page, et aussi la plus récente.',
 383+ 'approvedrevs-viewlatest' => 'Voir la révision la plus récente.',
 384+ 'approvedrevs-blankpageshown' => 'Aucune version n’a été approuvée pour cette page.',
 385+ 'approvedrevs-editwarning' => "Veuillez noter que vous modifiez actuellement la dernière version de cette page, qui n'est pas celle approuvée affichée par défaut.",
 386+ 'approvedrevs-approvedpages' => 'Pages approuvées',
 387+ 'approvedrevs-notlatestpages' => 'Ceci est la révision approuvée de cette page. Ce n’est pas la plus récente.',
 388+ 'approvedrevs-unapprovedpages' => 'Pages non approuvées',
 389+ 'right-approverevisions' => 'Marquer une révision précise d’une page comme approuvée',
 390+ 'right-viewlinktolatest' => 'Voir le texte explicatif en haut des pages qui ont une révision approuvée',
 391+);
 392+
 393+/** Franco-Provençal (Arpetan)
 394+ * @author ChrisPtDe
 395+ */
 396+$messages['frp'] = array(
 397+ 'approvedrevs-logname' => 'Jornal de les aprobacions de vèrsions',
 398+ 'approvedrevs-approve' => 'aprovar',
 399+ 'approvedrevs-unapprove' => 'dèsaprovar',
 400+ 'approvedrevs-approveaction' => 'at marcâ $2 coment la vèrsion aprovâ de « [[$1]] »',
 401+ 'approvedrevs-unapproveaction' => 'at anulâ lo marcâjo d’una vèrsion aprovâ por « [[$1]] »',
 402+ 'approvedrevs-viewlatest' => 'Vêre la vèrsion la ples novèla.',
 403+ 'approvedrevs-approvedpages' => 'Pâges aprovâs',
 404+ 'approvedrevs-unapprovedpages' => 'Pâges pas aprovâs',
 405+);
 406+
 407+/** Galician (Galego)
 408+ * @author Toliño
 409+ */
 410+$messages['gl'] = array(
 411+ 'approvedrevs-desc' => 'Marcar como aprobada unha única revisión dunha páxina',
 412+ 'approvedrevs-logname' => 'Rexistro de aprobación de revisións',
 413+ 'approvedrevs-logdesc' => 'Este é o rexistro das revisións aprobadas.',
 414+ 'approvedrevs-approve' => 'aprobar',
 415+ 'approvedrevs-unapprove' => 'desaprobar',
 416+ 'approvedrevs-approvesuccess' => 'Esta é a revisión aprobada da páxina.',
 417+ 'approvedrevs-unapprovesuccess' => 'Esta páxina xa non ten ningunha versión aprobada.
 418+No canto dela, móstrase a revisión máis recente.',
 419+ 'approvedrevs-unapprovesuccess2' => 'Esta páxina xa non ten ningunha versión aprobada.
 420+No canto dela, móstrase unha páxina en branco.',
 421+ 'approvedrevs-approveaction' => 'marcou $2 como a revisión aprobada de "[[$1]]"',
 422+ 'approvedrevs-unapproveaction' => 'anulou unha revisión aprobada de "[[$1]]"',
 423+ 'approvedrevs-notlatest' => 'Esta é a revisión aprobada da páxina, pero non é a máis recente.',
 424+ 'approvedrevs-approvedandlatest' => 'Esta é a revisión aprobada da páxina, e tamén a máis recente.',
 425+ 'approvedrevs-viewlatest' => 'Ollar a revisión máis recente.',
 426+ 'approvedrevs-blankpageshown' => 'Esta páxina non ten ningunha revisión aprobada.',
 427+ 'approvedrevs-editwarning' => 'Teña en conta que está a editar a última revisión desta páxina, e non a aprobada que se mostra por defecto.',
 428+ 'approvedrevs-approvedpages' => 'Páxinas aprobadas',
 429+ 'approvedrevs-notlatestpages' => 'Esta é a revisión aprobada da páxina, pero non é a máis recente.',
 430+ 'approvedrevs-unapprovedpages' => 'Páxinas suspendidas',
 431+ 'right-approverevisions' => 'Marcar como aprobada unha revisión específica dunha páxina do wiki',
 432+ 'right-viewlinktolatest' => 'Ollar o texto explicativo ao comezo das páxinas que posúen unha revisión aprobada',
 433+);
 434+
 435+/** Swiss German (Alemannisch)
 436+ * @author Als-Holder
 437+ */
 438+$messages['gsw'] = array(
 439+ 'approvedrevs-desc' => 'E Version vun eree Syte as „aagluegt“ markiere',
 440+ 'approvedrevs-logname' => 'Versions-Markierigs-Logbuech',
 441+ 'approvedrevs-logdesc' => 'Des isch s Logbuech vu dr aagluegte Version',
 442+ 'approvedrevs-approve' => "As ''aagluegt'' markiere",
 443+ 'approvedrevs-unapprove' => 'nit frejgee',
 444+ 'approvedrevs-approvesuccess' => 'Die Version vu dr Syte isch as „aagluegti Version“ gsetzt wore.',
 445+ 'approvedrevs-unapprovesuccess' => 'S git kei bstetigti Version me vu däre Syte.
 446+Statt däm wird di nejscht Version aazeigt.',
 447+ 'approvedrevs-unapprovesuccess2' => 'S git kei bstetigti Version me vu däre Syte.
 448+Statt däm wird e lääri Syte aazeigt.',
 449+ 'approvedrevs-approveaction' => '$2 as aaglugti Version fir „[[$1]]“ setze',
 450+ 'approvedrevs-unapproveaction' => 'd Markierig as aagluegti Version fir „[[$1]]“ uuseneh',
 451+ 'approvedrevs-notlatest' => 'Des isch di aagluegt Version vu däre Syte; s isch nit di nejscht Version.',
 452+ 'approvedrevs-approvedandlatest' => 'Des isch di aagluegt Version vu däre Syte un au di nejscht.',
 453+ 'approvedrevs-viewlatest' => 'Di nejscht Version aaluege.',
 454+ 'approvedrevs-blankpageshown' => 'Kei Version vu däre Syte isch bishär bstetigt wore.',
 455+ 'approvedrevs-editwarning' => 'Bitte gib Acht, ass Du grad an dr nejschte Version vu däre Syte schaffsch. Des isch nit di bstetigt Version, wu standardmäßig aazeigt wird.',
 456+ 'approvedrevs' => 'Aagluegti Versione',
 457+ 'approvedrevs-approvedpages' => 'Aagluegti Syte',
 458+ 'approvedrevs-notlatestpages' => 'Syte, wu di aagluegt Version nit di nejscht isch',
 459+ 'approvedrevs-unapprovedpages' => 'Nit bstetigti Syte',
 460+ 'approvedrevs-view' => 'Aaluege:',
 461+ 'approvedrevs-revisionnumber' => 'Version $1',
 462+ 'right-approverevisions' => 'E sicheri Version vun ere Wikisyte as aagluegt markiere',
 463+ 'right-viewlinktolatest' => 'Dr Erklerigstext aaluege obe uf Syte, wu s e aagluegti Version git',
 464+);
 465+
 466+/** Upper Sorbian (Hornjoserbsce)
 467+ * @author Michawiki
 468+ */
 469+$messages['hsb'] = array(
 470+ 'approvedrevs-desc' => 'Jednotliwu wersiju strony jako schwalenu stajić',
 471+ 'approvedrevs-logname' => 'Protokol schwalenja wersijow',
 472+ 'approvedrevs-logdesc' => 'To je protokol wersije, kotrež buchu schwalene.',
 473+ 'approvedrevs-approve' => 'schwalić',
 474+ 'approvedrevs-unapprove' => 'zakazać',
 475+ 'approvedrevs-approvesuccess' => 'Tuta wersija strony je so jako schwalena wersija stajiła.',
 476+ 'approvedrevs-unapprovesuccess' => 'Schwalena wersija za tutu stronu wjace njeje.
 477+Město toho so najnowša wersija pokaza.',
 478+ 'approvedrevs-approveaction' => 'je $2 jako schwalenu wersiju za "[[$1]]" nastajił',
 479+ 'approvedrevs-unapproveaction' => 'je status schwalena wersija za "[[$1]]" wotstronił',
 480+ 'approvedrevs-notlatest' => 'To je schwalena wersija tuteje strony; njeje najnowša.',
 481+ 'approvedrevs-approvedandlatest' => 'To je schwalena wersija tuteje strony, kotraž je tež najnowša.',
 482+ 'approvedrevs-viewlatest' => 'Najnowšu wersiju pokazać',
 483+ 'approvedrevs-approvedpages' => 'Schwalene wersije',
 484+ 'approvedrevs-notlatestpages' => 'To je schwalena wersija tuteje strony; njeje najnowša.',
 485+ 'right-approverevisions' => 'Wěstu wersiju wikistrony jako schwalenu nastajić',
 486+ 'right-viewlinktolatest' => 'Rozłožowacy tekst horjeka na stronach pokazać, kotrež maja schwalenu wersiju.',
 487+);
 488+
 489+/** Hungarian (Magyar)
 490+ * @author Misibacsi
 491+ */
 492+$messages['hu'] = array(
 493+ 'approvedrevs-approve' => 'elfogadás',
 494+ 'approvedrevs-approvedpages' => 'Ellenőrzött lapok',
 495+);
 496+
 497+/** Interlingua (Interlingua)
 498+ * @author McDutchie
 499+ */
 500+$messages['ia'] = array(
 501+ 'approvedrevs-desc' => 'Marcar un sol version de un pagina como approbate',
 502+ 'approvedrevs-logname' => 'Registro de approbation de versiones',
 503+ 'approvedrevs-logdesc' => 'Isto es le registro del versiones que ha essite approbate.',
 504+ 'approvedrevs-approve' => 'approbar',
 505+ 'approvedrevs-unapprove' => 'disapprobar',
 506+ 'approvedrevs-approvesuccess' => 'Iste version del pagina ha essite marcate como le version approbate.',
 507+ 'approvedrevs-unapprovesuccess' => 'Il non ha plus un version approbate de iste pagina.
 508+In loco de illo, le version le plus recente essera monstrate.',
 509+ 'approvedrevs-unapprovesuccess2' => 'Il non ha plus un version approbate de iste pagina.
 510+In loco de illo, un pagina vacue essera monstrate.',
 511+ 'approvedrevs-approveaction' => 'marcava $2 como le version approbate de "[[$1]]"',
 512+ 'approvedrevs-unapproveaction' => 'dismarcava le version approbate de "[[$1]]"',
 513+ 'approvedrevs-notlatest' => 'Isto es le version approbate de iste pagina; non es le plus recente.',
 514+ 'approvedrevs-approvedandlatest' => 'Isto es le version approbate de iste pagina, e tamben le plus recente.',
 515+ 'approvedrevs-viewlatest' => 'Vider le version le plus recente.',
 516+ 'approvedrevs-blankpageshown' => 'Nulle version de iste pagina ha essite approbate.',
 517+ 'approvedrevs-editwarning' => 'Nota ben que tu modifica ora le ultime version de iste pagina, le qual non es le version approbate que es monstrate normalmente.',
 518+ 'approvedrevs' => 'Versiones approbate',
 519+ 'approvedrevs-approvedpages' => 'Paginas approbate',
 520+ 'approvedrevs-notlatestpages' => 'Paginas del quales le version approbate non es lor ultime',
 521+ 'approvedrevs-unapprovedpages' => 'Paginas non approbate',
 522+ 'approvedrevs-view' => 'Vider:',
 523+ 'approvedrevs-revisionnumber' => 'version $1',
 524+ 'right-approverevisions' => 'Marcar un certe version de un pagina wiki como approbate',
 525+ 'right-viewlinktolatest' => 'Vider le texto explicative in alto del paginas que ha un version approbate',
 526+);
 527+
 528+/** Indonesian (Bahasa Indonesia)
 529+ * @author Farras
 530+ */
 531+$messages['id'] = array(
 532+ 'approvedrevs-desc' => 'Tetapkan revisi tunggal halaman ini sebagai disetujui',
 533+ 'approvedrevs-logname' => 'Log penyetujuan revisi',
 534+ 'approvedrevs-logdesc' => 'Ini adalah log revisi yang telah disetujui.',
 535+ 'approvedrevs-approve' => 'setujui',
 536+ 'approvedrevs-unapprove' => 'tidak setujui',
 537+ 'approvedrevs-approvesuccess' => 'Revisi halaman ini telah ditetapkan sebagai revisi disetujui.',
 538+ 'approvedrevs-unapprovesuccess' => 'Tidak ada lagi versi disetujui untuk halaman ini.
 539+Revisi terkini akan ditampilkan.',
 540+ 'approvedrevs-unapprovesuccess2' => 'Tidak ada lagi versi disetujui untuk halaman ini.
 541+Halaman kosong akan ditampilkan.',
 542+ 'approvedrevs-approveaction' => 'tetapkan $2 sebagai revisi disetujui untuk "[[$1]]"',
 543+ 'approvedrevs-unapproveaction' => 'jangan tetapkan revisi disetujui untuk "[[$1]]"',
 544+ 'approvedrevs-notlatest' => 'Ini adalah revisi disetujui dari halaman ini; bukan revisi terkini.',
 545+ 'approvedrevs-approvedandlatest' => 'Ini adalah revisi disetujui dari halaman ini, juga revisi terkini.',
 546+ 'approvedrevs-viewlatest' => 'Lihat revisi terkini.',
 547+ 'approvedrevs-blankpageshown' => 'Tidak ada revisi yang disetujui untuk halaman ini.',
 548+ 'approvedrevs-approvedpages' => 'Halaman yang disetujui',
 549+ 'approvedrevs-notlatestpages' => 'Ini adalah revisi disetujui dari halaman ini; bukan revisi terkini.',
 550+ 'approvedrevs-unapprovedpages' => 'Halaman tidak disetujui',
 551+ 'right-approverevisions' => 'Tetapkan revisi tertentu dari halaman wiki sebagai disetujui',
 552+ 'right-viewlinktolatest' => 'Lihat penjelasan di atas halaman yang memiliki revisi disetujui',
 553+);
 554+
 555+/** Igbo (Igbo)
 556+ * @author Ukabia
 557+ */
 558+$messages['ig'] = array(
 559+ 'approvedrevs-approve' => 'kwé',
 560+ 'approvedrevs-unapprove' => 'ékwèkwàlà',
 561+ 'approvedrevs-approvedpages' => 'Ihü hé kwèrè',
 562+);
 563+
 564+/** Japanese (日本語)
 565+ * @author W.CC
 566+ * @author 青子守歌
 567+ */
 568+$messages['ja'] = array(
 569+ 'approvedrevs-desc' => 'ページから版を1つだけ選んで、承認済みに設定する',
 570+ 'approvedrevs-logname' => '版承認の記録',
 571+ 'approvedrevs-logdesc' => '以下は、承認された版の記録です。',
 572+ 'approvedrevs-approve' => '承認',
 573+ 'approvedrevs-unapprove' => '非承認',
 574+ 'approvedrevs-approvesuccess' => 'この版は承認済みの版として設定されました。',
 575+ 'approvedrevs-unapprovesuccess' => 'このページには承認済みの版がなくなりました。
 576+代わりに、最新版が表示されます。',
 577+ 'approvedrevs-unapprovesuccess2' => 'このページには承認済みの版がなくなりました。
 578+代わりに、空白のページが表示されます。',
 579+ 'approvedrevs-approveaction' => '$2を「[[$1]]」の承認済み版として設定',
 580+ 'approvedrevs-unapproveaction' => '「[[$1]]」の承認版を取り消し',
 581+ 'approvedrevs-notlatest' => 'これは、このページの承認済み版です。最新版ではありません。',
 582+ 'approvedrevs-approvedandlatest' => 'これは、このページの承認済み版で、また、最新版です。',
 583+ 'approvedrevs-viewlatest' => '最新版を閲覧する。',
 584+ 'approvedrevs-blankpageshown' => 'このページには、承認済みの版がありません。',
 585+ 'approvedrevs-editwarning' => '現在編集中のものは、このページの最新版であり、既定で表示されている承認済みの版ではありません。',
 586+ 'approvedrevs' => '承認済み版',
 587+ 'approvedrevs-approvedpages' => '承認されたページ',
 588+ 'approvedrevs-notlatestpages' => '承認済み版が、最新版でないページ',
 589+ 'approvedrevs-unapprovedpages' => '未承認ページ',
 590+ 'approvedrevs-view' => '表示:',
 591+ 'approvedrevs-revisionnumber' => '版$1',
 592+ 'right-approverevisions' => 'ウィキページの特定の版を承認済みに設定',
 593+ 'right-viewlinktolatest' => '承認済みの版があるページの冒頭に説明文を表示',
 594+);
 595+
 596+/** Luxembourgish (Lëtzebuergesch)
 597+ * @author Les Meloures
 598+ * @author Robby
 599+ */
 600+$messages['lb'] = array(
 601+ 'approvedrevs-desc' => 'Eng eenzel Versioun vun enger Säit als nogekuckt markéieren',
 602+ 'approvedrevs-logname' => 'Logbuch vun den nogekuckte Säiten déi fräigi sinn',
 603+ 'approvedrevs-logdesc' => "Dëst ass d'Logbuch vun de Versiounen déi nogekuckt sinn.",
 604+ 'approvedrevs-approve' => 'zoustëmmen',
 605+ 'approvedrevs-unapprove' => 'Zoustëmmung zréckzéien',
 606+ 'approvedrevs-approvesuccess' => 'Dës Versioun vun der Säit gouf als nogekuckte Versioun fräiginn.',
 607+ 'approvedrevs-unapprovesuccess' => 'Et gëtt vun dëser Säit keng nogekuckte Versioun méi.
 608+Dofir gëtt déi rezentst Versioun gewisen.',
 609+ 'approvedrevs-unapprovesuccess2' => 'Et gëtt vun dëser Säit keng nogekuckte Versioun méi.
 610+Aplaz, gëtt eng eidel Säit gewisen.',
 611+ 'approvedrevs-approveaction' => '$2 als nogekuckt Versioun fir "[[$1]]" festleeën',
 612+ 'approvedrevs-unapproveaction' => 'nogekuckt Versioun fir "[[$1]]" zréckzéien',
 613+ 'approvedrevs-notlatest' => 'Dëst ass déi nogekuckte Versioun vun dëser Säit; et ass net déi rezentst.',
 614+ 'approvedrevs-approvedandlatest' => 'Dëst ass esouwuel déi nogekuckt wéi och déi rezentst Versioun vun dëser Säit.',
 615+ 'approvedrevs-viewlatest' => 'Déi rezentst Versioun weisen.',
 616+ 'approvedrevs-blankpageshown' => 'Keng Versioun vun dëser Säit gouf nogekuckt.',
 617+ 'approvedrevs-editwarning' => 'Informatioun: Dir ännert déi lescht Versioun vun dëser Säit, déi net déi nogekuckten ass déi standardméisseg gewise gëtt.',
 618+ 'approvedrevs' => 'Nogekuckte Versiounen',
 619+ 'approvedrevs-approvedpages' => 'Nogekuckte Säiten',
 620+ 'approvedrevs-notlatestpages' => 'Säiten deenen hir nogekuckte Versioun net déi rezentst ass',
 621+ 'approvedrevs-unapprovedpages' => 'Net nogekuckte Säiten',
 622+ 'approvedrevs-view' => 'Weisen:',
 623+ 'approvedrevs-revisionnumber' => 'Versioun $1',
 624+ 'right-approverevisions' => 'Eng bestëmmte Versioun vun enger Säit als nogekuckt markéieren',
 625+ 'right-viewlinktolatest' => 'Kuckt den Erklärungstext uewen op de Säiten déi nogekuckt Versiounen hunn',
 626+);
 627+
 628+/** Macedonian (Македонски)
 629+ * @author Bjankuloski06
 630+ */
 631+$messages['mk'] = array(
 632+ 'approvedrevs-desc' => 'Поставање на една единствена ревизија на страницата како одобрена',
 633+ 'approvedrevs-logname' => 'Дневник на одобрени ревизии',
 634+ 'approvedrevs-logdesc' => 'Ова е дневникот на одобрени ревизии.',
 635+ 'approvedrevs-approve' => 'одобри',
 636+ 'approvedrevs-unapprove' => 'неодобрена',
 637+ 'approvedrevs-approvesuccess' => 'Оваа ревизија на страницата е поставена како одобрена.',
 638+ 'approvedrevs-unapprovesuccess' => 'Оваа страница повеќе нема одобрена верзија.
 639+Наместо тоа ќе се прикажува најновата верзија.',
 640+ 'approvedrevs-unapprovesuccess2' => 'Оваа страница повеќе нема одобрена верзија.
 641+Наместо тоа ќе се прикажува празна страница.',
 642+ 'approvedrevs-approveaction' => 'постави ја $2 за одобрена верзија на „[[$1]]“',
 643+ 'approvedrevs-unapproveaction' => 'отстрани одобрена верзија на „[[$1]]“',
 644+ 'approvedrevs-notlatest' => 'Ова е одобрената ревизија на страницава, но не е најновата.',
 645+ 'approvedrevs-approvedandlatest' => 'Ова е одобрената ревизија на страницава, а воедно и најновата.',
 646+ 'approvedrevs-viewlatest' => 'Види најнова ревизија.',
 647+ 'approvedrevs-blankpageshown' => 'Нема одобрена ревизија за страницава.',
 648+ 'approvedrevs-editwarning' => 'Имајте предвид дека сега ја уредувате најновата верзија на страницава, која не е одобрената што се прикажува по основно.',
 649+ 'approvedrevs' => 'Одобрени ревизии',
 650+ 'approvedrevs-approvedpages' => 'Одобрени страници',
 651+ 'approvedrevs-notlatestpages' => 'Страници чиишто одобрени ревизии не се најновите',
 652+ 'approvedrevs-unapprovedpages' => 'Неодобрени страници',
 653+ 'approvedrevs-view' => 'Преглед:',
 654+ 'approvedrevs-revisionnumber' => 'ревизија $1',
 655+ 'right-approverevisions' => 'Поставете извесна ревизија на вики-страница како одобрена',
 656+ 'right-viewlinktolatest' => 'Погледајте го објаснувањето на врвот од страниците што имаат одобрена верзија',
 657+);
 658+
 659+/** Malayalam (മലയാളം)
 660+ * @author Praveenp
 661+ */
 662+$messages['ml'] = array(
 663+ 'approvedrevs-desc' => 'ഒരു താളിന്റെ ഒരൊറ്റ നാൾപ്പതിപ്പ് അംഗീകരിച്ചതായി സജ്ജീകരിക്കുക',
 664+ 'approvedrevs-logname' => 'നാൾപ്പതിപ്പ് അംഗീകരണ രേഖ',
 665+ 'approvedrevs-logdesc' => 'ഇത് നാൾപ്പതിപ്പുകൾ അംഗീകരിച്ചതിന്റെ രേഖയാണ്.',
 666+ 'approvedrevs-approve' => 'അംഗീകരിക്കുക',
 667+ 'approvedrevs-unapprove' => 'അംഗീകാരം നീക്കുക',
 668+ 'approvedrevs-approvesuccess' => 'താളിന്റെ ഈ നാൾപ്പതിപ്പ് അംഗീകരിച്ച പതിപ്പായി സജ്ജീകരിച്ചിരിക്കുന്നു.',
 669+ 'approvedrevs-unapprovesuccess' => 'ഈ താളിൽ അംഗീകരിച്ച പതിപ്പ് ഇല്ല.
 670+പകരം, ഏറ്റവും പുതിയ നാൾപ്പതിപ്പ് പ്രദർശിപ്പിക്കുന്നു.',
 671+ 'approvedrevs-unapprovesuccess2' => 'ഈ താളിന് അംഗീകരിച്ച പതിപ്പ് ഇല്ല.
 672+പകരം, ശൂന്യമായ താൾ പ്രദർശിപ്പിക്കുന്നു.',
 673+ 'approvedrevs-approveaction' => '"[[$1]]" താളിന്റെ അംഗീകരിച്ച പതിപ്പായി $2 സജ്ജീകരിക്കുക',
 674+ 'approvedrevs-unapproveaction' => '"[[$1]]" എന്നതിന്റെ അംഗീകൃത നാൾപ്പതിപ്പ് സജ്ജീകരണം നീക്കുക',
 675+ 'approvedrevs-notlatest' => 'ഇത് ഈ താളിന്റെ അംഗീകരിച്ച നാൾപ്പതിപ്പ് ആണ്; ഇത് ഏറ്റവും പുതിയത് അല്ല.',
 676+ 'approvedrevs-approvedandlatest' => 'ഇത് ഈ താളിന്റെ അംഗീകരിച്ച പതിപ്പ് ആണ്, അതേ പോലെ ഏറ്റവും പുതിയതുമാണ്.',
 677+ 'approvedrevs-viewlatest' => 'ഏറ്റവും പുതിയ നാൾപ്പതിപ്പ് കാണുക.',
 678+ 'approvedrevs-blankpageshown' => 'ഈ താളിന്റെ ഒരു നാൾപ്പതിപ്പും അംഗീകരിച്ചിട്ടില്ല.',
 679+ 'approvedrevs-editwarning' => 'ഈ താളിന്റെ ഏറ്റവും പുതിയ നാൾപ്പതിപ്പ് അല്ല താങ്കൾ തിരുത്തുന്നതെന്ന് ശ്രദ്ധിക്കുക, അത് സ്വതേ പ്രദർശിപ്പിച്ചിരിക്കുന്ന പതിപ്പ് അല്ല.',
 680+ 'approvedrevs-approvedpages' => 'അംഗീകരിച്ച താളുകൾ',
 681+ 'approvedrevs-notlatestpages' => 'ഇത് ഈ താളിന്റെ അംഗീകരിച്ച നാൾപ്പതിപ്പ് ആണ്; ഇത് ഏറ്റവും പുതിയത് അല്ല.',
 682+ 'approvedrevs-unapprovedpages' => 'അംഗീകരിച്ചിട്ടില്ലാത്ത താളുകൾ',
 683+ 'right-approverevisions' => 'വിക്കി താളിന്റെ ഒരു പ്രത്യേക നാൾപ്പതിപ്പ് അംഗീകരിച്ചതായി സജ്ജീകരിക്കുക',
 684+ 'right-viewlinktolatest' => 'അംഗീകരിച്ച നാൾപ്പതിപ്പുള്ള താളുകളുടെ മുകളിലായി ഒരു വിശദീകരണ കുറിപ്പ് പ്രദർശിപ്പിക്കുക',
 685+);
 686+
 687+/** Dutch (Nederlands)
 688+ * @author Siebrand
 689+ */
 690+$messages['nl'] = array(
 691+ 'approvedrevs-desc' => 'Een versie van een pagina als goedgekeurd instellen',
 692+ 'approvedrevs-logname' => 'Logboek versiegoedkeuring',
 693+ 'approvedrevs-logdesc' => 'Dit is het logboek met de versies die zijn goedgekeurd.',
 694+ 'approvedrevs-approve' => 'goedkeuren',
 695+ 'approvedrevs-unapprove' => 'afkeuren',
 696+ 'approvedrevs-approvesuccess' => 'Deze versie van de pagina is ingesteld als de goedgekeurde versie.',
 697+ 'approvedrevs-unapprovesuccess' => 'Deze pagina heeft niet langer een goedgekeurde versie.
 698+Daarom wordt de laatste versie weergegeven.',
 699+ 'approvedrevs-unapprovesuccess2' => 'Er is niet langer een goedgekeurde versie voor deze pagina.
 700+Er wordt een lege pagina weergegeven.',
 701+ 'approvedrevs-approveaction' => 'heeft $2 ingesteld als de goedgekeurde versie voor "[[$1]]"',
 702+ 'approvedrevs-unapproveaction' => 'heeft de goedgekeurde versie verwijderd voor "[[$1]]"',
 703+ 'approvedrevs-notlatest' => 'Dit is de goedgekeurde versie van deze pagina.
 704+Het is niet de meeste recente versie.',
 705+ 'approvedrevs-approvedandlatest' => 'Dit is de goedgekeurde versie van deze pagina. Er is geen nieuwere versie.',
 706+ 'approvedrevs-viewlatest' => 'Laatste versie bekijken',
 707+ 'approvedrevs-blankpageshown' => 'Deze pagina heeft geen goedgekeurde versie.',
 708+ 'approvedrevs-editwarning' => 'U bewerkt de meest recente versie van deze pagina die nog niet goedgekeurd is en standaard niet wordt weergegeven.',
 709+ 'approvedrevs' => 'Goedgekeurde versies',
 710+ 'approvedrevs-approvedpages' => "Goedgekeurde pagina's",
 711+ 'approvedrevs-notlatestpages' => "Pagina's waarvan de goedgekeurde versie niet de laatste versie is",
 712+ 'approvedrevs-unapprovedpages' => "Niet-goedgekeurde pagina's",
 713+ 'approvedrevs-view' => 'Weergave:',
 714+ 'approvedrevs-revisionnumber' => 'versie $1',
 715+ 'right-approverevisions' => 'Een versie van een wikipagina markeren als goedgekeurd.',
 716+ 'right-viewlinktolatest' => "De verklarende tekst bovenaan pagina's zien die die een goedgekeurde versie hebben",
 717+);
 718+
 719+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
 720+ * @author Nghtwlkr
 721+ */
 722+$messages['no'] = array(
 723+ 'approvedrevs-desc' => 'Sett en enkelt revisjon av en side som godkjent',
 724+ 'approvedrevs-logname' => 'Godkjenningslogg for revisjoner',
 725+ 'approvedrevs-logdesc' => 'Dette er loggen over revisjoner som har blitt godkjent.',
 726+ 'approvedrevs-approve' => 'godkjenn',
 727+ 'approvedrevs-unapprove' => 'ikke godkjenn',
 728+ 'approvedrevs-approvesuccess' => 'Denne revisjonen av siden har blitt satt som den godkjente versjonen.',
 729+ 'approvedrevs-unapprovesuccess' => 'Det er ikke lenger en godkjent versjon av denne siden.
 730+I stedet vil den nyeste revisjonen bli vist.',
 731+ 'approvedrevs-unapprovesuccess2' => 'Det er ikke lenger en godkjent versjon av denne siden.
 732+I stedet vil en blank side bli vist.',
 733+ 'approvedrevs-approveaction' => 'sett $2 som den godkjente revisjonen for «[[$1]]»',
 734+ 'approvedrevs-unapproveaction' => 'fjern godkjenning av revisjon for «[[$1]]»',
 735+ 'approvedrevs-notlatest' => 'Dette er den godkjente revisjonen av denne siden; det er ikke den nyeste.',
 736+ 'approvedrevs-approvedandlatest' => 'Dette er den godkjente revisjonen av denne siden, samt den nyeste.',
 737+ 'approvedrevs-viewlatest' => 'Se den nyeste revisjonen.',
 738+ 'approvedrevs-blankpageshown' => 'Ingen revisjon har blitt godkjent for denne siden.',
 739+ 'approvedrevs-editwarning' => 'Merk at du nå redigerer den nyeste revisjonen av denne siden, som ikke er den godkjente siden som vises som standard.',
 740+ 'approvedrevs' => 'Godkjente revisjoner',
 741+ 'approvedrevs-approvedpages' => 'Godkjente sider',
 742+ 'approvedrevs-notlatestpages' => 'Dette er den godkjente revisjonen av denne siden; det er ikke den nyeste.',
 743+ 'approvedrevs-unapprovedpages' => 'Ikke-godkjente sider',
 744+ 'approvedrevs-view' => 'Vis:',
 745+ 'approvedrevs-revisionnumber' => 'revisjon $1',
 746+ 'right-approverevisions' => 'Sett en viss revisjon av en wikiside som godkjent',
 747+ 'right-viewlinktolatest' => 'Vis forklarende tekst på toppen av sider som har en godkjent revisjon',
 748+);
 749+
 750+/** Polish (Polski)
 751+ * @author Sp5uhe
 752+ */
 753+$messages['pl'] = array(
 754+ 'approvedrevs-desc' => 'Pozwala na zatwierdzenie pojedynczej wersji strony',
 755+ 'approvedrevs-logname' => 'Rejestr zatwierdzonych wersji',
 756+ 'approvedrevs-logdesc' => 'To jest rejestr wersji, które zostały zatwierdzone.',
 757+ 'approvedrevs-approve' => 'zatwierdź',
 758+ 'approvedrevs-unapprove' => 'cofnij zatwierdzenie',
 759+ 'approvedrevs-approvesuccess' => 'Ta wersja strony została zatwierdzona.',
 760+ 'approvedrevs-unapprovesuccess' => 'Dla tej strony brak jest wersji zatwierdzonej.
 761+W zamian prezentowana będzie ostatnia wersja.',
 762+ 'approvedrevs-unapprovesuccess2' => 'Nie ma już zatwierdzonej wersji tej strony.
 763+W zamian zostanie wyświetlona pusta strona.',
 764+ 'approvedrevs-approveaction' => 'zatwierdził wersję $2 strony „[[$1]]”',
 765+ 'approvedrevs-unapproveaction' => 'usunął zatwierdzenie strony „[[$1]]”',
 766+ 'approvedrevs-notlatest' => 'To jest zatwierdzona wersja strony. To nie jest ostatnia jej wersja.',
 767+ 'approvedrevs-approvedandlatest' => 'To jest nie tylko zatwierdzona wersja strony, ale również ostatnia jej wersja.',
 768+ 'approvedrevs-viewlatest' => 'Zobacz najnowsze zmiany.',
 769+ 'approvedrevs-blankpageshown' => 'Żadna wersja tej strony nie została zatwierdzona.',
 770+ 'approvedrevs-editwarning' => 'Zauważ, że edytujesz ostatnią wersję strony. Wersję, która nie została zatwierdzona i nie jest pokazywana domyślnie.',
 771+ 'approvedrevs' => 'Zatwierdzone wersje',
 772+ 'approvedrevs-approvedpages' => 'Zatwierdzone strony',
 773+ 'approvedrevs-notlatestpages' => 'Strony, których zatwierdzona wersja nie jest ich ostatnią',
 774+ 'approvedrevs-unapprovedpages' => 'Niezatwierdzone strony',
 775+ 'approvedrevs-view' => 'Widok',
 776+ 'approvedrevs-revisionnumber' => 'wersja $1',
 777+ 'right-approverevisions' => 'Zatwierdzenie wybranych wersji stron wiki',
 778+ 'right-viewlinktolatest' => 'Pokazuj tekst wyjaśniający w górnej części tych stron, które mają zatwierdzoną wersję',
 779+);
 780+
 781+/** Piedmontese (Piemontèis)
 782+ * @author Borichèt
 783+ * @author Dragonòt
 784+ */
 785+$messages['pms'] = array(
 786+ 'approvedrevs-desc' => 'Ampòsta na sola revision ëd na pàgina com aprovà',
 787+ 'approvedrevs-logname' => "Registr d'aprovassion dle revision",
 788+ 'approvedrevs-logdesc' => "Sto-sì a l'é ël registr dle revision ch'a son ëstàite aprovà.",
 789+ 'approvedrevs-approve' => 'apreuva',
 790+ 'approvedrevs-unapprove' => 'apreuva pa',
 791+ 'approvedrevs-approvesuccess' => "Costa revision-sì ëd la pàgina a l'é stàita ampostà com la version aprovà.",
 792+ 'approvedrevs-unapprovesuccess' => 'A-i é pa pi na version aprovà për sta pàgina-sì.
 793+Al pòst, a sarà mostrà la revision pi recenta.',
 794+ 'approvedrevs-unapprovesuccess2' => 'A-i é pa pi na version aprovà për sta pàgina-sì.
 795+Al pòst, a sarà mostrà na pàgina bianca.',
 796+ 'approvedrevs-approveaction' => 'a l\'ha marcà $2 tanme revision aprovà për "[[$1]]"',
 797+ 'approvedrevs-unapproveaction' => 'gava ampostassion ëd la revision aprovà për "[[$1]]"',
 798+ 'approvedrevs-notlatest' => "Costa a l'é la revision aprovà ëd sa pàgina; a l'é pa la pi recenta.",
 799+ 'approvedrevs-approvedandlatest' => "Costa a l'é la revision aprovà ëd sa pàgina, e a l'é ëdcò la pi recenta.",
 800+ 'approvedrevs-viewlatest' => 'Varda la revision pi recenta.',
 801+ 'approvedrevs-blankpageshown' => 'Gnun-e revision a son ëstàite aprovà për sta pàgina.',
 802+ 'approvedrevs-editwarning' => "Për piasì, ch'a nòta ch'a l'é an camin ch'a modìfica l'ùltima revision ëd la pàgina, ch'a l'é pa cola aprovà smonùa për stàndard.",
 803+ 'approvedrevs' => 'Revision aprovà',
 804+ 'approvedrevs-approvedpages' => 'Pàgine aprovà',
 805+ 'approvedrevs-notlatestpages' => "Pàgine dont la revision aprovà a l'é pa l'ùltima",
 806+ 'approvedrevs-unapprovedpages' => 'Pàgine pa aprovà',
 807+ 'approvedrevs-view' => 'Vardé:',
 808+ 'approvedrevs-revisionnumber' => 'revision $1',
 809+ 'right-approverevisions' => 'Ampòsta na certa revision ëd na pàgina wiki com aprovà',
 810+ 'right-viewlinktolatest' => "Vëdde ël test dë spiegassion an cò dle pàgine ch'a l'han na revision aprovà",
 811+);
 812+
 813+/** Portuguese (Português)
 814+ * @author Alchimista
 815+ * @author GoEThe
 816+ * @author Hamilton Abreu
 817+ */
 818+$messages['pt'] = array(
 819+ 'approvedrevs-desc' => 'Marcar como aprovada uma das revisões de uma página',
 820+ 'approvedrevs-logname' => 'Registo de revisões aprovadas',
 821+ 'approvedrevs-logdesc' => 'Este é o registo das revisões que foram aprovadas.',
 822+ 'approvedrevs-approve' => 'aprovar',
 823+ 'approvedrevs-unapprove' => 'reprovar',
 824+ 'approvedrevs-approvesuccess' => 'Esta revisão da página foi definida como a versão aprovada.',
 825+ 'approvedrevs-unapprovesuccess' => 'Deixou de existir uma versão aprovada para esta página.
 826+Em vez dela, será apresentada a revisão mais recente.',
 827+ 'approvedrevs-unapprovesuccess2' => 'Deixou de existir uma versão aprovada para esta página.
 828+Em vez dela, será apresentada uma página em branco.',
 829+ 'approvedrevs-approveaction' => 'definir $2 como a revisão aprovada de "[[$1]]"',
 830+ 'approvedrevs-unapproveaction' => 'desfazer a definição da revisão aprovada de "[[$1]]"',
 831+ 'approvedrevs-notlatest' => 'Esta é a revisão aprovada desta página; não é a revisão mais recente.',
 832+ 'approvedrevs-approvedandlatest' => 'Esta é a revisão aprovada desta página e também a revisão mais recente.',
 833+ 'approvedrevs-viewlatest' => 'Ver a revisão mais recente.',
 834+ 'approvedrevs-blankpageshown' => 'Esta página não tem nenhuma revisão aprovada.',
 835+ 'approvedrevs-editwarning' => 'Note, por favor, que está agora a editar a revisão mais recente desta página e não a versão aprovada que é mostrada por omissão.',
 836+ 'approvedrevs-approvedpages' => 'Páginas aprovadas',
 837+ 'approvedrevs-notlatestpages' => 'Esta é a revisão aprovada desta página; não é a revisão mais recente.',
 838+ 'approvedrevs-unapprovedpages' => 'Páginas reprovadas',
 839+ 'right-approverevisions' => 'Definir como aprovada uma revisão específica de uma página da wiki',
 840+ 'right-viewlinktolatest' => 'Ver um texto explicativo no topo das páginas que têm uma revisão aprovada',
 841+);
 842+
 843+/** Brazilian Portuguese (Português do Brasil)
 844+ * @author Giro720
 845+ */
 846+$messages['pt-br'] = array(
 847+ 'approvedrevs-desc' => 'Marcar como aprovada uma das revisões de uma página',
 848+ 'approvedrevs-logname' => 'Registro de revisões aprovadas',
 849+ 'approvedrevs-logdesc' => 'Este é o registro das revisões que foram aprovadas.',
 850+ 'approvedrevs-approve' => 'aprovar',
 851+ 'approvedrevs-unapprove' => 'desaprovar',
 852+ 'approvedrevs-approvesuccess' => 'Esta revisão da página foi definida como a versão aprovada.',
 853+ 'approvedrevs-unapprovesuccess' => 'Não há mais uma versão aprovada para esta página.
 854+Em vez dela, será apresentada a revisão mais recente.',
 855+ 'approvedrevs-unapprovesuccess2' => 'Não há mais uma versão aprovada para esta página.
 856+Em vez dela, será apresentada uma página em branco.',
 857+ 'approvedrevs-approveaction' => 'definir $2 como a revisão aprovada de "[[$1]]"',
 858+ 'approvedrevs-unapproveaction' => 'desfazer a definição da revisão aprovada de "[[$1]]"',
 859+ 'approvedrevs-notlatest' => 'Esta é a revisão aprovada desta página; não é a revisão mais recente.',
 860+ 'approvedrevs-approvedandlatest' => 'Esta é a revisão aprovada desta página e também a revisão mais recente.',
 861+ 'approvedrevs-viewlatest' => 'Ver a revisão mais recente.',
 862+ 'approvedrevs-blankpageshown' => 'Esta página não tem nenhuma revisão aprovada.',
 863+ 'approvedrevs-editwarning' => 'Note, por favor, que agora você está editando a revisão mais recente desta página e não a versão aprovada que é mostrada por padrão.',
 864+ 'approvedrevs-approvedpages' => 'Páginas aprovadas',
 865+ 'approvedrevs-notlatestpages' => 'Esta é a revisão aprovada desta página; não é a revisão mais recente.',
 866+ 'approvedrevs-unapprovedpages' => 'Páginas não aprovadas',
 867+ 'right-approverevisions' => 'Definir como aprovada uma revisão específica de uma página da wiki',
 868+ 'right-viewlinktolatest' => 'Ver um texto explicativo no topo das páginas que têm uma revisão aprovada',
 869+);
 870+
 871+/** Romanian (Română)
 872+ * @author Stelistcristi
 873+ */
 874+$messages['ro'] = array(
 875+ 'approvedrevs-approve' => 'aprobă',
 876+ 'approvedrevs-unapprove' => 'dezaprobă',
 877+ 'approvedrevs-approvesuccess' => 'Această revizie a paginii a fost stabilită ca versiunea aprobată.',
 878+ 'approvedrevs-approvedpages' => 'Pagini aprobate',
 879+ 'approvedrevs-unapprovedpages' => 'Pagini neaprobate',
 880+);
 881+
 882+/** Russian (Русский)
 883+ * @author MaxSem
 884+ * @author Александр Сигачёв
 885+ */
 886+$messages['ru'] = array(
 887+ 'approvedrevs-desc' => 'Установка одной из версий страниц как подтверждённой',
 888+ 'approvedrevs-logname' => 'Журнал подтверждения версий',
 889+ 'approvedrevs-logdesc' => 'Это журнал версий страниц, которые были подтверждены.',
 890+ 'approvedrevs-approve' => 'подтвердить',
 891+ 'approvedrevs-unapprove' => 'снять подтверждение',
 892+ 'approvedrevs-approvesuccess' => 'Это версия страницы была отмечена как подтверждённая.',
 893+ 'approvedrevs-unapprovesuccess' => 'Не существует подтверждённой версии этой страницы.
 894+Вместо неё будет показана последняя версия.',
 895+ 'approvedrevs-unapprovesuccess2' => 'Больше не существует подтверждённой версии этой страницы.
 896+Вместо неё будет показана пустая страница.',
 897+ 'approvedrevs-approveaction' => 'установить $2 как подтверждённую версию «[[$1]]»',
 898+ 'approvedrevs-unapproveaction' => 'снять утверждённую версию для «[[$1]]»',
 899+ 'approvedrevs-notlatest' => 'Это утверждённая версия страницы. Существуют более свежие версии.',
 900+ 'approvedrevs-approvedandlatest' => 'Это утверждённая версия страницы. Она же является наиболее свежей версией.',
 901+ 'approvedrevs-viewlatest' => 'Просмотреть самую свежую версию.',
 902+ 'approvedrevs-blankpageshown' => 'Для этой страницы нет утверждённых версий.',
 903+ 'approvedrevs-editwarning' => 'Пожалуйста, обратите внимание, сейчас вы редактируете последнюю версию этой страницы, но она не показывается по умолчанию, так как не подтверждена.',
 904+ 'approvedrevs-approvedpages' => 'Подтверждённые страницы',
 905+ 'approvedrevs-notlatestpages' => 'Это утверждённая версия страницы. Существуют более свежие версии.',
 906+ 'approvedrevs-unapprovedpages' => 'Неутверждённые страницы',
 907+ 'right-approverevisions' => 'отметка определённых версий вики-страниц как подтверждённых',
 908+ 'right-viewlinktolatest' => 'просмотр пояснительного текста в верхней части страниц, имеющих утверждённые версии',
 909+);
 910+
 911+/** Slovak (Slovenčina)
 912+ * @author Helix84
 913+ */
 914+$messages['sk'] = array(
 915+ 'approvedrevs-desc' => 'Stanoviť jedinú revíziu stránky ako schválenú',
 916+);
 917+
 918+/** Swedish (Svenska)
 919+ * @author Ainali
 920+ * @author Cohan
 921+ */
 922+$messages['sv'] = array(
 923+ 'approvedrevs-desc' => 'Sätt en enskild version av en sida till godkänd',
 924+ 'approvedrevs-logname' => 'Godkänningslogg för revisioner',
 925+ 'approvedrevs-logdesc' => 'Detta är loggen över revisioner som har godkänts.',
 926+ 'approvedrevs-approve' => 'godkänn',
 927+ 'approvedrevs-approvesuccess' => 'Denna version av sidan har ställts in som den godkända versionen.',
 928+ 'approvedrevs-unapprovesuccess' => 'Det finns inte längre en godkänd version för den här sidan.
 929+ Istället kommer den senaste redigeringen att visas.',
 930+ 'approvedrevs-unapprovesuccess2' => 'Det finns inte längre en godkänd version av den här sidan.
 931+Istället kommer en tom sida att visas.',
 932+ 'approvedrevs-approveaction' => 'sätt $2 som den godkända revisionen av "[[$1]]"',
 933+ 'approvedrevs-notlatest' => 'Detta är den godkända version av denna sida; det är inte den senaste.',
 934+ 'approvedrevs-approvedandlatest' => 'Detta är den godkända version av denna sida, samt den senaste.',
 935+ 'approvedrevs-viewlatest' => 'Visa senaste versionen.',
 936+ 'approvedrevs-blankpageshown' => 'Ingen revidering har godkänts för denna sida.',
 937+ 'approvedrevs-editwarning' => 'Observera att du nu redigerar den senaste versionen av denna sida, vilket inte är den godkända som visas som standard.',
 938+ 'approvedrevs-approvedpages' => 'Godkända sidor',
 939+ 'approvedrevs-notlatestpages' => 'Detta är den godkända version av denna sida; det är inte den senaste.',
 940+ 'approvedrevs-unapprovedpages' => 'Icke godkända sidor',
 941+ 'right-approverevisions' => 'Sätt en viss revidering av en wiki-sida som godkänd',
 942+ 'right-viewlinktolatest' => 'Se förklarande text högst upp på sidor som har en godkänd revision',
 943+);
 944+
 945+/** Tamil (தமிழ்)
 946+ * @author TRYPPN
 947+ */
 948+$messages['ta'] = array(
 949+ 'approvedrevs-approve' => 'அனுமதிக்கவும்',
 950+ 'approvedrevs-unapprove' => 'அனுமதிக்க வேண்டாம்',
 951+ 'approvedrevs-viewlatest' => 'மிக அண்மையில் செய்யப்பட்ட திருத்தங்களை பார்க்கவும்.',
 952+ 'approvedrevs-approvedpages' => 'ஏற்றுக் கொள்ளப்பட்ட பக்கங்கள்',
 953+ 'approvedrevs-unapprovedpages' => 'ஏற்றுக் கொள்ளப்படாத பக்கங்கள்',
 954+ 'right-approverevisions' => 'விக்கி பக்கத்தில் ஒரு சில மாற்றங்களை அனுமதிக்கப்பட்டதாக குறித்துக்கொள்ளவும்',
 955+);
 956+
 957+/** Telugu (తెలుగు)
 958+ * @author Veeven
 959+ */
 960+$messages['te'] = array(
 961+ 'approvedrevs-logname' => 'కూర్పుల అనుమతులు చిట్టా',
 962+ 'approvedrevs-approve' => 'అనుమతించు',
 963+ 'approvedrevs-approvedpages' => 'అనుమతించిన పుటలు',
 964+);
 965+
 966+/** Tagalog (Tagalog)
 967+ * @author AnakngAraw
 968+ */
 969+$messages['tl'] = array(
 970+ 'approvedrevs-desc' => 'Itakda ang isang nagiisang rebisyon ng isang pahina bilang pinayagan',
 971+ 'approvedrevs-logname' => 'Tala ng pagpayag sa rebisyon',
 972+ 'approvedrevs-logdesc' => 'Ito ang tala ng mga rebisyon na pinayagan na.',
 973+ 'approvedrevs-approve' => 'payagan',
 974+ 'approvedrevs-unapprove' => 'huwag payagan',
 975+ 'approvedrevs-approvesuccess' => 'Ang rebisyon ng pahina ay naitakda bilang pinayagang bersyon.',
 976+ 'approvedrevs-unapprovesuccess' => 'Wala nang isang pinayagang bersyon para sa pahinang ito.
 977+Sa halip, ang pinaka kamakailang rebisyon ang ipapakita.',
 978+ 'approvedrevs-unapprovesuccess2' => 'Wala na ngayong isang pinayagang bersyon ng pahinang ito.
 979+Sa halip, ipapakita ang isang pahinang walang laman.',
 980+ 'approvedrevs-approveaction' => 'itakda ang $2 bilang pinayagang rebisyon para sa "[[$1]]"',
 981+ 'approvedrevs-unapproveaction' => 'huwag itakda ang rebisyon para sa "[[$1]]"',
 982+ 'approvedrevs-notlatest' => 'Ito ang pinayagang rebisyon ng pahinang ito; hindi ito ang pinaka kamakailan.',
 983+ 'approvedrevs-approvedandlatest' => 'Ito ang pinayagang rebisyon ng pahinang ito, pati na ang pagiging pinaka kamakailan.',
 984+ 'approvedrevs-viewlatest' => 'Tingan ang pinaka kamakailang rebisyon.',
 985+ 'approvedrevs-blankpageshown' => 'Wala pang rebisyong pinayagan para sa pahinang ito.',
 986+ 'approvedrevs-approvedpages' => 'Mga pahinang pinayagan',
 987+ 'approvedrevs-notlatestpages' => 'Ito ang pinayagang rebisyon ng pahinang ito; hindi ito ang pinaka kamakailan.',
 988+ 'approvedrevs-unapprovedpages' => 'Hindi pinayagang mga pahina',
 989+ 'right-approverevisions' => 'Itakda ang isang partikular na rebisyon ng isang pahina ng wiki bilang pinayagan',
 990+ 'right-viewlinktolatest' => 'Tingnan ang teksto ng paliwanag na nasa itaas ng mga pahina na may pinayagang rebisyon',
 991+);
 992+
 993+/** Turkish (Türkçe)
 994+ * @author Srhat
 995+ */
 996+$messages['tr'] = array(
 997+ 'approvedrevs-desc' => 'Bir sayfanın belirli bir revizyonunu onaylanmış olarak ayarla',
 998+ 'approvedrevs-logname' => 'Revizyon onay günlüğü',
 999+ 'approvedrevs-logdesc' => 'Bu liste onaylanmış revizyon günlüğüdür.',
 1000+ 'approvedrevs-approve' => 'onayla',
 1001+ 'approvedrevs-unapprove' => 'onayı kaldır',
 1002+ 'approvedrevs-approvesuccess' => 'Sayfaya ait bu revizyon onaylanmış revizyon olarak ayarlandı.',
 1003+ 'approvedrevs-unapprovesuccess' => 'Bu sayfanın artık onaylanmış sürümü yok.
 1004+Onun yerine, en son revizyon gösterilecektir.',
 1005+ 'approvedrevs-approveaction' => '$2 revizyonunu "[[$1]]" sayfasının onaylanmış revizyonu olarak ayarladı',
 1006+ 'approvedrevs-unapproveaction' => '"[[$1]]" sayfasının onaylanmış revizyonunun onayını kaldırdı.',
 1007+ 'approvedrevs-notlatest' => 'Bu sayfanın onaylanmış revizyonudur; en son revizyon değildir.',
 1008+ 'approvedrevs-approvedandlatest' => 'Bu revizyon, sayfanın hem onaylanmış hem de en son revizyonudur.',
 1009+ 'approvedrevs-viewlatest' => 'En son revizyonu görüntüle',
 1010+ 'approvedrevs-approvedpages' => 'Onaylanmış sayfalar',
 1011+ 'approvedrevs-notlatestpages' => 'Bu sayfanın onaylanmış revizyonudur; en son revizyon değildir.',
 1012+ 'right-approverevisions' => 'Bir viki sayfasının belirli bir revizyonunu onaylanmış olarak ayarla',
 1013+ 'right-viewlinktolatest' => 'Onaylanmış revizyonu bulunan sayfaların başındaki açıklayıcı metni görüntüle',
 1014+);
 1015+
 1016+/** Ukrainian (Українська)
 1017+ * @author Alex Khimich
 1018+ * @author Тест
 1019+ */
 1020+$messages['uk'] = array(
 1021+ 'approvedrevs-desc' => 'Встановити єдиний перегляд сторінки як затверджуючий',
 1022+ 'approvedrevs-logname' => 'Журнал одобрень та переглядів',
 1023+ 'approvedrevs-logdesc' => 'Це протокол переглядів, які були затверджуючими.',
 1024+ 'approvedrevs-approve' => 'Затвердити',
 1025+ 'approvedrevs-unapprove' => 'Відхилити',
 1026+ 'approvedrevs-approvesuccess' => 'Цей перегляд сторінки був встановлений як затверджуючий.',
 1027+ 'approvedrevs-unapprovesuccess' => 'Існує не затверджений варіант для цієї сторінки.
 1028+Замість цього, самий останній затверджений варіант буде показаний.',
 1029+ 'approvedrevs-unapprovesuccess2' => 'Існує не затверджений варіант для цієї сторінки.
 1030+Замість цього буде показано порожню сторінку.',
 1031+ 'approvedrevs-approveaction' => 'встановити $2 як затверджену версію для "[[$1]]"',
 1032+ 'approvedrevs-unapproveaction' => 'відкликати стверджену версію для "[[$1]]"',
 1033+ 'approvedrevs-notlatest' => 'Це затверджений перегляд цієї сторінки, це не остання версія.',
 1034+ 'approvedrevs-approvedandlatest' => 'Це затверджений перегляд цієї сторінки, вын э найновішим.',
 1035+ 'approvedrevs-viewlatest' => 'Відкрити найсвіжіший перегляд.',
 1036+ 'approvedrevs-blankpageshown' => 'Не було знайдено схвалювальних переглядів для цієї сторінки.',
 1037+ 'approvedrevs-editwarning' => 'Зверніть увагу, що в даний час ви редагуєте найновіший перегляд цієї сторінки, який не є схваленим і відображатися за замовчуванням.',
 1038+ 'approvedrevs-approvedpages' => 'Затверджені сторінки',
 1039+ 'approvedrevs-notlatestpages' => 'Сторінки, чиї затверджені версії не є останніми',
 1040+ 'approvedrevs-unapprovedpages' => 'Несхвалені сторінки',
 1041+ 'right-approverevisions' => 'Встановити єдиний перегляд сторінки як затверджуючий',
 1042+ 'right-viewlinktolatest' => 'Переглянути пояснювальний текст у верхній частині сторінки яка має схвалену версію.',
 1043+);
 1044+
 1045+/** Vietnamese (Tiếng Việt)
 1046+ * @author Minh Nguyen
 1047+ */
 1048+$messages['vi'] = array(
 1049+ 'approvedrevs-logname' => 'Nhật trình chấp nhận phiên bản',
 1050+ 'approvedrevs-approve' => 'chấp nhận',
 1051+ 'approvedrevs-unapprove' => 'bỏ chấp nhận',
 1052+ 'approvedrevs-approveaction' => 'đặt $2 là phiên bản chấp nhận của “[[$1]]”',
 1053+ 'approvedrevs-unapproveaction' => 'bỏ phiên bản chấp nhận của “[[$1]]”',
 1054+ 'approvedrevs-viewlatest' => 'Xem phiên bản gần đây nhất.',
 1055+ 'approvedrevs-approvedpages' => 'Các trang đã chấp nhận',
 1056+ 'right-approverevisions' => 'Đặt một phiên bản của trang wiki là phiên bản chấp nhận',
 1057+ 'right-viewlinktolatest' => 'Xem văn bản giải thích ở đầu các trang có phiên bản chấp nhận',
 1058+);
 1059+
 1060+/** Simplified Chinese (‪中文(简体)‬)
 1061+ * @author Hydra
 1062+ */
 1063+$messages['zh-hans'] = array(
 1064+ 'approvedrevs-approvedpages' => '被批准的页面',
 1065+ 'approvedrevs-unapprovedpages' => '不备批准的页面',
 1066+);
 1067+
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.i18n.php
___________________________________________________________________
Added: svn:eol-style
11068 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.php
@@ -0,0 +1,80 @@
 2+<?php
 3+
 4+if ( !defined( 'MEDIAWIKI' ) ) die();
 5+
 6+/**
 7+ * @file
 8+ * @ingroup Extensions
 9+ *
 10+ * @author Yaron Koren
 11+ */
 12+
 13+define( 'APPROVED_REVS_VERSION', '0.5' );
 14+
 15+// credits
 16+$wgExtensionCredits['other'][] = array(
 17+ 'path' => __FILE__,
 18+ 'name' => 'Approved Revs',
 19+ 'version' => APPROVED_REVS_VERSION,
 20+ 'author' => 'Yaron Koren',
 21+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Approved_Revs',
 22+ 'descriptionmsg' => 'approvedrevs-desc'
 23+);
 24+
 25+// global variables
 26+$egApprovedRevsIP = dirname( __FILE__ ) . '/';
 27+$egApprovedRevsScriptPath = $wgScriptPath . '/extensions/ApprovedRevs';
 28+$egApprovedRevsNamespaces = array( NS_MAIN, NS_TEMPLATE, NS_HELP, NS_PROJECT );
 29+$egApprovedRevsBlankIfUnapproved = false;
 30+$egApprovedRevsAutomaticApprovals = true;
 31+
 32+// internationalization
 33+$wgExtensionMessagesFiles['ApprovedRevs'] = $egApprovedRevsIP . 'ApprovedRevs.i18n.php';
 34+$wgExtensionAliasesFiles['ApprovedRevs'] = $egApprovedRevsIP . 'ApprovedRevs.alias.php';
 35+
 36+// register all classes
 37+$wgAutoloadClasses['ApprovedRevs'] = $egApprovedRevsIP . 'ApprovedRevs_body.php';
 38+$wgAutoloadClasses['ApprovedRevsHooks'] = $egApprovedRevsIP . 'ApprovedRevs.hooks.php';
 39+$wgSpecialPages['ApprovedRevs'] = 'SpecialApprovedRevs';
 40+$wgAutoloadClasses['SpecialApprovedRevs'] = $egApprovedRevsIP . 'SpecialApprovedRevs.php';
 41+$wgSpecialPageGroups['ApprovedRevs'] = 'pages';
 42+
 43+// hooks
 44+$wgHooks['ParserBeforeInternalParse'][] = 'ApprovedRevsHooks::setApprovedRevForParsing';
 45+$wgHooks['ArticleSaveComplete'][] = 'ApprovedRevsHooks::setLatestAsApproved';
 46+$wgHooks['ArticleFromTitle'][] = 'ApprovedRevsHooks::showApprovedRevision';
 47+$wgHooks['ArticleAfterFetchContent'][] = 'ApprovedRevsHooks::showBlankIfUnapproved';
 48+$wgHooks['DisplayOldSubtitle'][] = 'ApprovedRevsHooks::setSubtitle';
 49+// it's 'SkinTemplateNavigation' for the Vector skin, 'SkinTemplateTabs' for
 50+// most other skins
 51+$wgHooks['SkinTemplateTabs'][] = 'ApprovedRevsHooks::changeEditLink';
 52+$wgHooks['SkinTemplateNavigation'][] = 'ApprovedRevsHooks::changeEditLinkVector';
 53+$wgHooks['PageHistoryBeforeList'][] = 'ApprovedRevsHooks::storeApprovedRevisionForHistoryPage';
 54+$wgHooks['PageHistoryLineEnding'][] = 'ApprovedRevsHooks::addApprovalLink';
 55+$wgHooks['UnknownAction'][] = 'ApprovedRevsHooks::setAsApproved';
 56+$wgHooks['UnknownAction'][] = 'ApprovedRevsHooks::unsetAsApproved';
 57+$wgHooks['BeforeParserFetchTemplateAndtitle'][] = 'ApprovedRevsHooks::setTranscludedPageRev';
 58+$wgHooks['ArticleDeleteComplete'][] = 'ApprovedRevsHooks::deleteRevisionApproval';
 59+$wgHooks['MagicWordwgVariableIDs'][] = 'ApprovedRevsHooks::addMagicWordVariableIDs';
 60+$wgHooks['LanguageGetMagic'][] = 'ApprovedRevsHooks::addMagicWordLanguage';
 61+$wgHooks['ParserBeforeTidy'][] = 'ApprovedRevsHooks::handleMagicWords';
 62+$wgHooks['AdminLinks'][] = 'ApprovedRevsHooks::addToAdminLinks';
 63+$wgHooks['LoadExtensionSchemaUpdates'][] = 'ApprovedRevsHooks::describeDBSchema';
 64+$wgHooks['EditPage::showEditForm:initial'][] = 'ApprovedRevsHooks::addWarningToEditPage';
 65+$wgHooks['sfHTMLBeforeForm'][] = 'ApprovedRevsHooks::addWarningToSFForm';
 66+
 67+// logging
 68+$wgLogTypes['approval'] = 'approval';
 69+$wgLogNames['approval'] = 'approvedrevs-logname';
 70+$wgLogHeaders['approval'] = 'approvedrevs-logdesc';
 71+$wgLogActions['approval/approve'] = 'approvedrevs-approveaction';
 72+$wgLogActions['approval/unapprove'] = 'approvedrevs-unapproveaction';
 73+
 74+// user rights
 75+$wgAvailableRights[] = 'approverevisions';
 76+$wgGroupPermissions['sysop']['approverevisions'] = true;
 77+$wgAvailableRights[] = 'viewlinktolatest';
 78+$wgGroupPermissions['*']['viewlinktolatest'] = true;
 79+
 80+// page properties
 81+$wgPageProps['approvedrevs'] = 'Whether or not the page is approvable';
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.php
___________________________________________________________________
Added: svn:eol-style
182 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.css
@@ -0,0 +1,15 @@
 2+/**
 3+ * CSS definitions for the Approved Revs extension
 4+ */
 5+p.approvedRevsEditWarning {
 6+ font-weight: bold;
 7+}
 8+span.approvedAndLatestMsg {
 9+}
 10+span.notLatestMsg {
 11+}
 12+span.approvedRevIsLatest {
 13+}
 14+span.approvedRevNotLatest {
 15+ font-style: italic;
 16+}
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.css
___________________________________________________________________
Added: svn:eol-style
117 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/SpecialApprovedRevs.php
@@ -0,0 +1,186 @@
 2+<?php
 3+/**
 4+ * Special page that displays various lists of pages that either do or do
 5+ * not have an approved revision.
 6+ *
 7+ * @author Yaron Koren
 8+ */
 9+
 10+if ( !defined( 'MEDIAWIKI' ) ) die();
 11+
 12+class SpecialApprovedRevs extends SpecialPage {
 13+
 14+ /**
 15+ * Constructor
 16+ */
 17+ function __construct() {
 18+ parent::__construct( 'ApprovedRevs' );
 19+ wfLoadExtensionMessages( 'ApprovedRevs' );
 20+ }
 21+
 22+ function execute( $query ) {
 23+ global $wgRequest;
 24+
 25+ ApprovedRevs::addCSS();
 26+ $this->setHeaders();
 27+ list( $limit, $offset ) = wfCheckLimits();
 28+ $mode = $wgRequest->getVal( 'show' );
 29+ $rep = new SpecialApprovedRevsPage( $mode );
 30+ return $rep->doQuery( $offset, $limit );
 31+ }
 32+}
 33+
 34+class SpecialApprovedRevsPage extends QueryPage {
 35+ private $mMode;
 36+
 37+ public function __construct( $mode ) {
 38+ $this->mMode = $mode;
 39+ }
 40+
 41+ function getName() {
 42+ return "ApprovedRevs";
 43+ }
 44+
 45+ function isExpensive() { return false; }
 46+
 47+ function isSyndicated() { return false; }
 48+
 49+ function getPageHeader() {
 50+ // show the names of the three lists of pages, with the one
 51+ // corresponding to the current "mode" not being linked
 52+ $approvedPagesPage = SpecialPage::getPage( 'ApprovedRevs' );
 53+ $approvedPagesTitle = SpecialPage::getPage( 'ApprovedRevs' )->getTitle();
 54+ $navLine = wfMsg( 'approvedrevs-view' ) . ' ';
 55+ if ( $this->mMode == '' ) {
 56+ $navLine .= Xml::element( 'strong',
 57+ null,
 58+ wfMsg( 'approvedrevs-approvedpages' )
 59+ );
 60+ } else {
 61+ $navLine .= Xml::element( 'a',
 62+ array( 'href' => $approvedPagesTitle->getLocalURL() ),
 63+ wfMsg( 'approvedrevs-approvedpages' )
 64+ );
 65+ }
 66+ $navLine .= " | ";
 67+ if ( $this->mMode == 'notlatest' ) {
 68+ $navLine .= Xml::element( 'strong',
 69+ null,
 70+ wfMsg( 'approvedrevs-notlatestpages' )
 71+ );
 72+ } else {
 73+ $navLine .= Xml::element( 'a',
 74+ array( 'href' => $approvedPagesTitle->getLocalURL( array( 'show' => 'notlatest' ) ) ),
 75+ wfMsg( 'approvedrevs-notlatestpages' )
 76+ );
 77+ }
 78+ $navLine .= " | ";
 79+ if ( $this->mMode == 'unapproved' ) {
 80+ $navLine .= Xml::element( 'strong',
 81+ null,
 82+ wfMsg( 'approvedrevs-unapprovedpages' )
 83+ );
 84+ } else {
 85+ $navLine .= Xml::element( 'a',
 86+ array( 'href' => $approvedPagesTitle->getLocalURL( array( 'show' => 'unapproved' ) ) ),
 87+ wfMsg( 'approvedrevs-unapprovedpages' )
 88+ );
 89+ }
 90+ $header = Xml::tags( 'p', null, $navLine ) . "\n";
 91+ return $header;
 92+ }
 93+
 94+ /**
 95+ * Set parameters for standard navigation links.
 96+ */
 97+ function linkParameters() {
 98+ $params = array();
 99+ if ( $this->mMode == 'notlatest' ) {
 100+ $params['show'] = 'notlatest';
 101+ } elseif ( $this->mMode == 'unapproved' ) {
 102+ $params['show'] = 'unapproved';
 103+ } else { // all approved pages
 104+ }
 105+ return $params;
 106+ }
 107+
 108+ function getPageFooter() {
 109+ }
 110+
 111+ function getSQL() {
 112+ $dbr = wfGetDB( DB_SLAVE );
 113+ $approved_revs = $dbr->tableName( 'approved_revs' );
 114+ $page = $dbr->tableName( 'page' );
 115+ if ( $this->mMode == 'notlatest' ) {
 116+ return "SELECT 'Page' AS type,
 117+ p.page_id AS id,
 118+ ar.rev_id AS rev_id,
 119+ p.page_latest AS latest_id
 120+ FROM $approved_revs ar JOIN $page p
 121+ ON ar.page_id = p.page_id
 122+ WHERE p.page_latest != ar.rev_id";
 123+ } elseif ( $this->mMode == 'unapproved' ) {
 124+ return "SELECT 'Page' AS type,
 125+ p.page_id AS id
 126+ FROM $approved_revs ar RIGHT OUTER JOIN $page p
 127+ ON ar.page_id = p.page_id
 128+ WHERE ar.page_id IS NULL";
 129+ } else { // all approved pages
 130+ return "SELECT 'Page' AS type,
 131+ p.page_id AS id,
 132+ ar.rev_id AS rev_id,
 133+ p.page_latest AS latest_id
 134+ FROM $approved_revs ar JOIN $page p
 135+ ON ar.page_id = p.page_id";
 136+ }
 137+ }
 138+
 139+ function getOrder() {
 140+ return ' ORDER BY p.page_namespace, p.page_title ASC';
 141+ }
 142+
 143+ function formatResult( $skin, $result ) {
 144+ $title = Title::newFromId( $result->id );
 145+ $pageLink = $skin->makeLinkObj( $title );
 146+ if ( $this->mMode == 'unapproved' ) {
 147+ return $pageLink;
 148+ } elseif ( $this->mMode == 'notlatest' ) {
 149+ $diffLink = Xml::element( 'a',
 150+ array( 'href' => $title->getLocalUrl(
 151+ array(
 152+ 'diff' => $result->latest_id,
 153+ 'oldid' => $result->rev_id
 154+ )
 155+ ) ),
 156+ wfMsg( 'approvedrevs-difffromlatest' )
 157+ );
 158+ return "$pageLink ($diffLink)";
 159+ } else {
 160+ global $wgUser, $wgOut, $wgLang;
 161+ if ( $result->rev_id == $result->latest_id ) {
 162+ $class = "approvedRevIsLatest";
 163+ } else {
 164+ $class = "approvedRevNotLatest";
 165+ }
 166+ $additionalInfo = Xml::element( 'span',
 167+ array ( 'class' => $class ),
 168+ wfMsg( 'approvedrevs-revisionnumber', $result->rev_id )
 169+ );
 170+
 171+ // Get data on the most recent approval from the
 172+ // 'approval' log, and display it if it's there.
 173+ $sk = $wgUser->getSkin();
 174+ $loglist = new LogEventsList( $sk, $wgOut );
 175+ $pager = new LogPager( $loglist, array( 'approval' ), '', $title->getText() );
 176+ $pager->mLimit = 1;
 177+ $pager->doQuery();
 178+ $row = $pager->mResult->fetchObject();
 179+ if ( !empty( $row ) ) {
 180+ $time = $wgLang->timeanddate( wfTimestamp( TS_MW, $row->log_timestamp ), true );
 181+ $userLink = $sk->userLink( $row->log_user, $row->user_name );
 182+ $additionalInfo .= ', ' . wfMsg( 'approvedrevs-approvedby', $userLink, $time );
 183+ }
 184+ return "$pageLink ($additionalInfo)";
 185+ }
 186+ }
 187+}
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/SpecialApprovedRevs.php
___________________________________________________________________
Added: svn:eol-style
1188 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.hooks.php
@@ -0,0 +1,492 @@
 2+<?php
 3+
 4+/**
 5+ * Functions for the Approved Revs extension called by hooks in the MediaWiki
 6+ * code.
 7+ *
 8+ * @file
 9+ * @ingroup Extensions
 10+ *
 11+ * @author Yaron Koren
 12+ */
 13+
 14+class ApprovedRevsHooks {
 15+
 16+ /**
 17+ * If the page is being saved, set the text of the approved revision
 18+ * as the text to be parsed, for correct saving of categories,
 19+ * Semantic MediaWiki properties, etc.
 20+ */
 21+ static public function setApprovedRevForParsing( &$parser, &$text, &$stripState ) {
 22+ global $wgRequest;
 23+ if ( $wgRequest->getCheck( 'wpSave' ) ) {
 24+ $title = $parser->getTitle();
 25+ if ( ! ApprovedRevs::pageIsApprovable( $title ) ) {
 26+ return true;
 27+ }
 28+ // if this is someone with approval power editing the
 29+ // page, exit now, because this will become the
 30+ // approved revision anyway
 31+ if ( $title->userCan( 'approverevisions' ) ) {
 32+ return true;
 33+ }
 34+ $approvedText = ApprovedRevs::getApprovedContent( $title );
 35+ if ( !is_null( $approvedText ) ) {
 36+ $text = $approvedText;
 37+ }
 38+ // if there's no approved revision, and 'blank if
 39+ // unapproved' is set to true, set the text to blank
 40+ if ( is_null( $approvedText ) ) {
 41+ global $egApprovedRevsBlankIfUnapproved;
 42+ if ( $egApprovedRevsBlankIfUnapproved ) {
 43+ $text = '';
 44+ }
 45+ }
 46+ }
 47+ return true;
 48+ }
 49+
 50+ /**
 51+ * If the user saving this page has approval power, and automatic
 52+ * approvals are enabled, and the page is approvable, and either
 53+ * (a) this page already has an approved revision, or (b) unapproved
 54+ * pages are shown as blank on this wiki, automatically set this
 55+ * latest revision to be the approved one - don't bother logging
 56+ * the approval, though; the log is reserved for manual approvals.
 57+ */
 58+ static public function setLatestAsApproved( &$article ) {
 59+ $title = $article->getTitle();
 60+ if ( ! $title->userCan( 'approverevisions' ) ) {
 61+ return true;
 62+ }
 63+
 64+ global $egApprovedRevsAutomaticApprovals;
 65+ if ( ! $egApprovedRevsAutomaticApprovals ) {
 66+ return true;
 67+ }
 68+
 69+ if ( !ApprovedRevs::pageIsApprovable( $title ) ) {
 70+ return true;
 71+ }
 72+
 73+ global $egApprovedRevsBlankIfUnapproved;
 74+ if ( !$egApprovedRevsBlankIfUnapproved ) {
 75+ $approvedRevID = ApprovedRevs::getApprovedRevID( $title );
 76+ if ( empty( $approvedRevID ) ) {
 77+ return true;
 78+ }
 79+ }
 80+ // the rev ID is actually passed in via the hook, but it's
 81+ // at the end of a very long set of parameters, so for the
 82+ // sake of sanity we'll just re-get it here instead
 83+ $latestRevisionID = $title->getLatestRevID();
 84+ // save approval without logging
 85+ ApprovedRevs::saveApprovedRevIDInDB( $title, $latestRevisionID );
 86+ return true;
 87+ }
 88+
 89+ /**
 90+ * Return the approved revision of the page, if there is one, and if
 91+ * the page is simply being viewed, and if no specific revision has
 92+ * been requested.
 93+ */
 94+ static function showApprovedRevision( &$title, &$article ) {
 95+ if ( ! ApprovedRevs::isDefaultPageRequest() ) {
 96+ return true;
 97+ }
 98+
 99+ $revisionID = ApprovedRevs::getApprovedRevID( $title );
 100+ if ( ! empty( $revisionID ) ) {
 101+ $article = new Article( $title, $revisionID );
 102+ }
 103+ return true;
 104+ }
 105+
 106+ public static function showBlankIfUnapproved( &$article, &$content ) {
 107+ if ( ! ApprovedRevs::isDefaultPageRequest() ) {
 108+ return true;
 109+ }
 110+
 111+ $title = $article->getTitle();
 112+ $revisionID = ApprovedRevs::getApprovedRevID( $title );
 113+ if ( empty( $revisionID ) ) {
 114+ global $egApprovedRevsBlankIfUnapproved;
 115+ if ( $egApprovedRevsBlankIfUnapproved ) {
 116+ $content = '';
 117+ global $wgOut;
 118+ if ( $wgOut->getSubtitle() != '' ) {
 119+ $wgOut->appendSubtitle( "<br />" . wfMsg( 'approvedrevs-blankpageshown' ) );
 120+ } else {
 121+ $wgOut->setSubtitle( wfMsg( 'approvedrevs-blankpageshown' ) );
 122+ }
 123+ }
 124+ }
 125+ return true;
 126+ }
 127+
 128+ /**
 129+ * If user is viewing the page via its main URL, and what they're
 130+ * seeing is the approved revision of the page, remove the standard
 131+ * subtitle shown for all non-latest revisions, and replace it with
 132+ * either nothing or a message explaining the situation, depending
 133+ * on the user's rights
 134+ */
 135+ static function setSubtitle( &$article, &$revisionID ) {
 136+ if ( ! ApprovedRevs::hasApprovedRevision( $article->getTitle() ) ) {
 137+ return true;
 138+ }
 139+
 140+ global $wgRequest;
 141+ if ( $wgRequest->getCheck( 'oldid' ) ) {
 142+ return true;
 143+ }
 144+
 145+ if ( ! $article->getTitle()->userCan( 'viewlinktolatest' ) ) {
 146+ return false;
 147+ }
 148+
 149+ ApprovedRevs::addCSS();
 150+ wfLoadExtensionMessages( 'ApprovedRevs' );
 151+ if ( $revisionID == $article->getLatest() ) {
 152+ $text = Xml::element(
 153+ 'span',
 154+ array( 'class' => 'approvedAndLatestMsg' ),
 155+ wfMsg( 'approvedrevs-approvedandlatest' )
 156+ );
 157+ } else {
 158+ $text = wfMsg( 'approvedrevs-notlatest' );
 159+ global $wgUser;
 160+ $sk = $wgUser->getSkin();
 161+ $curRevLink = $sk->link(
 162+ $article->getTitle(),
 163+ wfMsgHtml( 'approvedrevs-viewlatest' ),
 164+ array(),
 165+ array( 'oldid' => $article->getLatest() ),
 166+ array( 'known', 'noclasses' )
 167+ );
 168+ $text .= ' ' . $curRevLink;
 169+ $text = Xml::tags(
 170+ 'span',
 171+ array( 'class' => 'notLatestMsg' ),
 172+ $text
 173+ );
 174+ }
 175+ global $wgOut;
 176+ if ( $wgOut->getSubtitle() != '' ) {
 177+ $wgOut->appendSubtitle( "<br />" . $text );
 178+ } else {
 179+ $wgOut->setSubtitle( $text );
 180+ }
 181+ return false;
 182+ }
 183+
 184+ /**
 185+ * Add a warning to the top of the 'edit' page if the approved
 186+ * revision is not the same as the latest one, so that users don't
 187+ * get confused, since they'll be seeing the latest one.
 188+ */
 189+ public static function addWarningToEditPage( &$editPage ) {
 190+ // only show the warning if it's not an old revision
 191+ global $wgRequest;
 192+ if ( $wgRequest->getCheck( 'oldid' ) ) {
 193+ return true;
 194+ }
 195+ $title = $editPage->getArticle()->getTitle();
 196+ $approvedRevID = ApprovedRevs::getApprovedRevID( $title );
 197+ $latestRevID = $title->getLatestRevID();
 198+ if ( ! empty( $approvedRevID ) && $approvedRevID != $latestRevID ) {
 199+ ApprovedRevs::addCSS();
 200+ global $wgOut;
 201+ $wgOut->addHTML( '<p class="approvedRevsEditWarning">' . wfMsg( 'approvedrevs-editwarning' ) . "</p>\n" );
 202+ }
 203+ return true;
 204+ }
 205+
 206+ /**
 207+ * Same as addWarningToEditPage(), but for the Semantic Foms
 208+ * 'edit with form' tab
 209+ */
 210+ public static function addWarningToSFForm( &$pageName, &$preFormHTML ) {
 211+ // The title could be obtained via $pageName in theory - the
 212+ // problem is that, pre-SF 2.0.2, that variable wasn't set
 213+ // correctly.
 214+ global $wgTitle;
 215+ $approvedRevID = ApprovedRevs::getApprovedRevID( $wgTitle );
 216+ $latestRevID = $wgTitle->getLatestRevID();
 217+ if ( ! empty( $approvedRevID ) && $approvedRevID != $latestRevID ) {
 218+ ApprovedRevs::addCSS();
 219+ $preFormHTML .= '<p><strong>' . wfMsg( 'approvedrevs-editwarning' ) . "</strong></p>\n";
 220+ }
 221+ return true;
 222+ }
 223+
 224+ /**
 225+ * If user is looking at a revision through a main 'view' URL (no
 226+ * revision specified), have the 'edit' tab link to the basic
 227+ * 'action=edit' URL (i.e., the latest revision), no matter which
 228+ * revision they're actually on.
 229+ */
 230+ static function changeEditLink( &$skin, &$contentActions ) {
 231+ global $wgRequest;
 232+ if ( $wgRequest->getCheck( 'oldid' ) ) {
 233+ return true;
 234+ }
 235+ // Skin::getTitle was only added in MW 1.16
 236+ if ( method_exists( $skin, 'getTitle' ) ) {
 237+ $title = $skin->getTitle();
 238+ } else {
 239+ global $wgTitle;
 240+ $title = $wgTitle;
 241+ }
 242+ if ( ApprovedRevs::hasApprovedRevision( $title ) ) {
 243+ // the URL is the same regardless of whether the tab
 244+ // is 'edit' or 'view source', but the "action" is
 245+ // different
 246+ if ( array_key_exists( 'edit', $contentActions ) ) {
 247+ $contentActions['edit']['href'] = $title->getLocalUrl( array( 'action' => 'edit' ) );
 248+ }
 249+ if ( array_key_exists( 'viewsource', $contentActions ) ) {
 250+ $contentActions['viewsource']['href'] = $title->getLocalUrl( array( 'action' => 'edit' ) );
 251+ }
 252+ }
 253+ return true;
 254+ }
 255+
 256+ /**
 257+ * Same as changedEditLink(), but only for the Vector skin (and
 258+ * related skins).
 259+ */
 260+ static function changeEditLinkVector( &$skin, &$links ) {
 261+ // the old '$content_actions' array is thankfully just a
 262+ // sub-array of this one
 263+ self::changeEditLink( $skin, $links['views'] );
 264+ return true;
 265+ }
 266+
 267+ /**
 268+ * Store the approved revision ID, if any, directly in the object
 269+ * for this article - this is called so that a query to the database
 270+ * can be made just once for every view of a history page, instead
 271+ * of for every row.
 272+ */
 273+ static function storeApprovedRevisionForHistoryPage( &$article ) {
 274+ // this will be null if there's no ID
 275+ $approvedRevID = ApprovedRevs::getApprovedRevID( $article->getTitle() );
 276+ $article->approvedRevID = $approvedRevID;
 277+ // also load extension messages, while we're at it
 278+ wfLoadExtensionMessages( 'ApprovedRevs' );
 279+ return true;
 280+ }
 281+
 282+ /**
 283+ * If the user is allowed to make revision approvals, add either an
 284+ * 'approve' or 'unapprove' link to the end of this row in the page
 285+ * history, depending on whether or not this is already the approved
 286+ * revision. If it's the approved revision also add on a "star"
 287+ * icon, regardless of the user.
 288+ */
 289+ static function addApprovalLink( $historyPage, &$row , &$s ) {
 290+ $title = $historyPage->getTitle();
 291+ if ( ! ApprovedRevs::pageIsApprovable( $title ) ) {
 292+ return true;
 293+ }
 294+
 295+ $article = $historyPage->getArticle();
 296+ // use the rev ID field in the $article object, which was
 297+ // stored earlier
 298+ $approvedRevID = $article->approvedRevID;
 299+ if ( $row->rev_id == $approvedRevID ) {
 300+ $s .= '&#9733; ';
 301+ }
 302+ if ( $title->userCan( 'approverevisions' ) ) {
 303+ if ( $row->rev_id == $approvedRevID ) {
 304+ $url = $title->getLocalUrl(
 305+ array( 'action' => 'unapprove' )
 306+ );
 307+ $msg = wfMsg( 'approvedrevs-unapprove' );
 308+ } else {
 309+ $url = $title->getLocalUrl(
 310+ array( 'action' => 'approve', 'oldid' => $row->rev_id )
 311+ );
 312+ $msg = wfMsg( 'approvedrevs-approve' );
 313+ }
 314+ $s .= '(' . Xml::element(
 315+ 'a',
 316+ array( 'href' => $url ),
 317+ $msg
 318+ ) . ')';
 319+ }
 320+ return true;
 321+ }
 322+
 323+ /**
 324+ * Handle the 'approve' action, defined for ApprovedRevs -
 325+ * mark the revision as approved, log it, and show a message to
 326+ * the user.
 327+ */
 328+ static function setAsApproved( $action, $article ) {
 329+ // return "true" if the call failed (meaning, pass on handling
 330+ // of the hook to others), and "false" otherwise
 331+ if ( $action != 'approve' ) {
 332+ return true;
 333+ }
 334+ $title = $article->getTitle();
 335+ if ( ! ApprovedRevs::pageIsApprovable( $title ) ) {
 336+ return true;
 337+ }
 338+ if ( ! $title->userCan( 'approverevisions' ) ) {
 339+ return true;
 340+ }
 341+ global $wgRequest;
 342+ if ( ! $wgRequest->getCheck( 'oldid' ) ) {
 343+ return true;
 344+ }
 345+ $revision_id = $wgRequest->getVal( 'oldid' );
 346+ ApprovedRevs::setApprovedRevID( $title, $revision_id );
 347+
 348+ global $wgOut;
 349+ $wgOut->addHTML( ' ' . Xml::element(
 350+ 'div',
 351+ array( 'class' => 'successbox' ),
 352+ wfMsg( 'approvedrevs-approvesuccess' )
 353+ ) . "\n" );
 354+ $wgOut->addHTML( ' ' . Xml::element(
 355+ 'p',
 356+ array( 'style' => 'clear: both' )
 357+ ) . "\n" );
 358+
 359+ // show the revision, instead of the history page
 360+ $article->doPurge();
 361+ $article->view();
 362+ return false;
 363+ }
 364+
 365+ /**
 366+ * Handle the 'unapprove' action, defined for ApprovedRevs -
 367+ * unset the previously-approved revision, log the change, and show
 368+ * a message to the user.
 369+ */
 370+ static function unsetAsApproved( $action, $article ) {
 371+ // return "true" if the call failed (meaning, pass on handling
 372+ // of the hook to others), and "false" otherwise
 373+ if ( $action != 'unapprove' ) {
 374+ return true;
 375+ }
 376+ $title = $article->getTitle();
 377+ if ( ! $title->userCan( 'approverevisions' ) ) {
 378+ return true;
 379+ }
 380+
 381+ ApprovedRevs::unsetApproval( $title );
 382+
 383+ // the message depends on whether the page should display
 384+ // a blank right now or not
 385+ global $egApprovedRevsBlankIfUnapproved;
 386+ if ( $egApprovedRevsBlankIfUnapproved ) {
 387+ $successMsg = wfMsg( 'approvedrevs-unapprovesuccess2' );
 388+ } else {
 389+ $successMsg = wfMsg( 'approvedrevs-unapprovesuccess' );
 390+ }
 391+
 392+ global $wgOut;
 393+ $wgOut->addHTML( ' ' . Xml::element(
 394+ 'div',
 395+ array( 'class' => 'successbox' ),
 396+ $successMsg
 397+ ) . "\n" );
 398+ $wgOut->addHTML( ' ' . Xml::element(
 399+ 'p',
 400+ array( 'style' => 'clear: both' )
 401+ ) . "\n" );
 402+
 403+ // show the revision, instead of the history page
 404+ $article->doPurge();
 405+ $article->view();
 406+ return false;
 407+ }
 408+
 409+ /**
 410+ * Use the approved revision, if it exists, for templates and other
 411+ * transcluded pages.
 412+ */
 413+ static function setTranscludedPageRev( $parser, &$title, &$skip, &$id ) {
 414+ $revision_id = ApprovedRevs::getApprovedRevID( $title );
 415+ if ( ! empty( $revision_id ) ) {
 416+ $id = $revision_id;
 417+ }
 418+ return true;
 419+ }
 420+
 421+ /**
 422+ * Delete the approval record in the database if the page itself is
 423+ * deleted.
 424+ */
 425+ static function deleteRevisionApproval( &$article, &$user, $reason, $id ) {
 426+ ApprovedRevs::deleteRevisionApproval( $article->getTitle() );
 427+ return true;
 428+ }
 429+
 430+ /**
 431+ * Register magic-word variable IDs
 432+ */
 433+ static function addMagicWordVariableIDs( &$magicWordVariableIDs ) {
 434+ $magicWordVariableIDs[] = 'MAG_APPROVEDREVS';
 435+ return true;
 436+ }
 437+
 438+ /**
 439+ * Set the actual value of the magic words
 440+ */
 441+ static function addMagicWordLanguage( &$magicWords, $langCode ) {
 442+ switch( $langCode ) {
 443+ default:
 444+ $magicWords['MAG_APPROVEDREVS'] = array( 0, '__APPROVEDREVS__' );
 445+ }
 446+ return true;
 447+ }
 448+
 449+ /**
 450+ * Set values in the page_props table based on the presence of the
 451+ * 'APPROVEDREVS' magic word in a page
 452+ */
 453+ static function handleMagicWords( &$parser, &$text ) {
 454+ $mw_hide = MagicWord::get( 'MAG_APPROVEDREVS' );
 455+ if ( $mw_hide->matchAndRemove( $text ) ) {
 456+ $parser->mOutput->setProperty( 'approvedrevs', 'y' );
 457+ }
 458+ return true;
 459+ }
 460+
 461+ /**
 462+ * Add a link to 'Special:ApprovedPages' to the the page
 463+ * 'Special:AdminLinks', defined by the Admin Links extension.
 464+ */
 465+ function addToAdminLinks( &$admin_links_tree ) {
 466+ $general_section = $admin_links_tree->getSection( wfMsg( 'adminlinks_general' ) );
 467+ $extensions_row = $general_section->getRow( 'extensions' );
 468+ if ( is_null( $extensions_row ) ) {
 469+ $extensions_row = new ALRow( 'extensions' );
 470+ $general_section->addRow( $extensions_row );
 471+ }
 472+ $extensions_row->addItem( ALItem::newFromSpecialPage( 'ApprovedRevs' ) );
 473+ return true;
 474+ }
 475+
 476+ public static function describeDBSchema( $updater = null ) {
 477+ $dir = dirname( __FILE__ );
 478+
 479+ // DB updates
 480+ // For now, there's just a single SQL file for all DB types.
 481+ if ( $updater === null ) {
 482+ global $wgExtNewTables, $wgDBtype;
 483+ //if ( $wgDBtype == 'mysql' ) {
 484+ $wgExtNewTables[] = array( 'approved_revs', "$dir/ApprovedRevs.sql" );
 485+ //}
 486+ } else {
 487+ //if ( $updater->getDB()->getType() == 'mysql' ) {
 488+ $updater->addExtensionUpdate( array( 'addTable', 'approved_revs', "$dir/ApprovedRevs.sql", true ) );
 489+ //}
 490+ }
 491+ return true;
 492+ }
 493+}
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.hooks.php
___________________________________________________________________
Added: svn:eol-style
1494 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/README
@@ -0,0 +1,36 @@
 2+Approved Revs Extension
 3+
 4+ Version 0.5
 5+ Yaron Koren
 6+
 7+This is free software licensed under the GNU General Public License. Please
 8+see http://www.gnu.org/copyleft/gpl.html for further details, including the
 9+full text and terms of the license.
 10+
 11+== Overview ==
 12+
 13+Approved Revs is an extension to MediaWiki that lets administrators mark a
 14+certain revision of a page as "approved". The approved revision is the one
 15+displayed when users view the page at its main URL.
 16+
 17+For more information, see the extension homepage at:
 18+http://www.mediawiki.org/wiki/Extension:Approved_Revs
 19+
 20+== Requirements ==
 21+
 22+This version of the Approved Revs extension requires MediaWiki 1.11 or
 23+higher, except for the approveAllPages.php script, which requires
 24+MediaWiki 1.16 or higher.
 25+
 26+== Installation ==
 27+
 28+To install the extension, place the entire 'ApprovedRevs' directory
 29+within your MediaWiki 'extensions' directory, then add the following
 30+line to your 'LocalSettings.php' file:
 31+
 32+ require_once( "$IP/extensions/ApprovedRevs/ApprovedRevs.php" );
 33+
 34+== Contact ==
 35+
 36+Comments, questions, suggestions and bug reports should be sent to Yaron
 37+Koren, at yaron57@gmail.com.
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.alias.php
@@ -0,0 +1,32 @@
 2+<?php
 3+/**
 4+ * Aliases for special pages of Approved Revs extension.
 5+ *
 6+ */
 7+
 8+$specialPageAliases = array();
 9+
 10+/** English (English) */
 11+$specialPageAliases['en'] = array(
 12+ 'ApprovedRevs' => array( 'ApprovedRevs', 'ApprovedPages', 'UnapprovedPages' ),
 13+);
 14+
 15+/** Malayalam (മലയാളം) */
 16+$specialPageAliases['ml'] = array(
 17+ 'ApprovedRevs' => array( 'അംഗീകൃതതാളുകൾ', 'അംഗീകൃതമല്ലാത്തതാളുകൾ' ),
 18+);
 19+
 20+/** Dutch (Nederlands) */
 21+$specialPageAliases['nl'] = array(
 22+ 'ApprovedRevs' => array( 'GoedgekeurdePaginas', 'GoedgekeurdePagina\'s' ),
 23+);
 24+
 25+/** Sanskrit (संस्कृत) */
 26+$specialPageAliases['sa'] = array(
 27+ 'ApprovedRevs' => array( 'अंगीकृत_पृष्टानि' ),
 28+);
 29+
 30+/**
 31+ * For backwards compatibility with MediaWiki 1.15 and earlier.
 32+ */
 33+$aliases =& $specialPageAliases;
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.alias.php
___________________________________________________________________
Added: svn:eol-style
134 + native
Index: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.sql
@@ -0,0 +1,6 @@
 2+CREATE TABLE /*_*/approved_revs (
 3+ page_id int(8) default NULL,
 4+ rev_id int(8) default NULL
 5+) /*$wgDBTableOptions*/;
 6+
 7+CREATE UNIQUE INDEX approved_revs_page_id ON /*_*/approved_revs (page_id);
Property changes on: tags/extensions/ApprovedRevs/REL_0_5/ApprovedRevs.sql
___________________________________________________________________
Added: svn:eol-style
18 + native

Status & tagging log