Merge "Mention UploadBase::stashFile() "checked" exceptions in docs"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 8 Aug 2016 21:04:40 +0000 (21:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 8 Aug 2016 21:04:40 +0000 (21:04 +0000)
97 files changed:
RELEASE-NOTES-1.28
docs/hooks.txt
includes/CategoryFinder.php
includes/EditPage.php
includes/OutputPage.php
includes/actions/UnwatchAction.php
includes/actions/WatchAction.php
includes/api/ApiAMCreateAccount.php
includes/api/ApiAuthManagerHelper.php
includes/api/ApiClientLogin.php
includes/api/ApiLogin.php
includes/api/ApiPageSet.php
includes/api/ApiResult.php
includes/api/ApiWatch.php
includes/api/i18n/ba.json
includes/api/i18n/uk.json
includes/db/DatabaseMssql.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabasePostgres.php
includes/db/IDatabase.php
includes/db/loadbalancer/LBFactoryMulti.php
includes/db/loadbalancer/LoadBalancer.php
includes/diff/DifferenceEngine.php
includes/installer/i18n/diq.json
includes/installer/i18n/eu.json
includes/installer/i18n/pl.json
includes/jobqueue/JobRunner.php
includes/libs/HtmlArmor.php
includes/page/Article.php
includes/revisiondelete/RevDelArchivedFileItem.php
includes/revisiondelete/RevDelFileItem.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialTags.php
includes/specials/SpecialUpload.php
includes/tidy/Balancer.php
includes/user/User.php
includes/utils/AutoloadGenerator.php
includes/utils/BatchRowIterator.php
includes/utils/MWCryptRand.php
languages/i18n/ar.json
languages/i18n/ba.json
languages/i18n/bn.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dty.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/got.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/ja.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/mk.json
languages/i18n/nah.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/szl.json
languages/i18n/tt-cyrl.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
maintenance/convertExtensionToRegistration.php
package.json
resources/Resources.php
resources/src/mediawiki.action/mediawiki.action.edit.styles.css
resources/src/mediawiki.legacy/commonPrint.css
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.upload.styles.css
resources/src/mediawiki/page/mediawiki.page.patrol.css [new file with mode: 0644]
resources/src/mediawiki/page/mediawiki.page.patrol.print.css [new file with mode: 0644]
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php
tests/phpunit/includes/user/UserTest.php

index 757cec3..f26f240 100644 (file)
@@ -38,6 +38,9 @@ production.
   and the file description page, but does not run for uploads to stash.
 * (T141604) Extensions can now provide a better error message when their
   maintenance scripts are run without the extension being installed.
+* (T8948) Numeric sorting in categories is now supported by setting $wgCategoryCollation
+  to uca-default-u-kn or uca-<langcode>-u-kn. If migrating from another
+  collation, you will need to run the updateCollation.php maintenance script.
 
 === External library changes in 1.28 ===
 
index 89a54d5..8fa3793 100644 (file)
@@ -1104,6 +1104,9 @@ $row: the DB row for this line
 $id: User identifier
 $title: User page title
 &$tools: Array of tool links
+$specialPage: SpecialPage instance for context and services. Can be either
+  SpecialContributions or DeletedContributionsPage. Extensions should type
+  hint against a generic SpecialPage though.
 
 'ConvertContent': Called by AbstractContent::convert when a conversion to
 another content model is requested.
@@ -1142,6 +1145,85 @@ $page: SpecialPage object for DeletedContributions
 $row: the DB row for this line
 &$classes: the classes to add to the surrounding <li>
 
+'DifferenceEngineMarkPatrolledLink': Allows extensions to change the "mark as patrolled" link
+which is shown both on the diff header as well as on the bottom of a page, usually
+wrapped in a span element which has class="patrollink".
+$differenceEngine: DifferenceEngine object
+&$markAsPatrolledLink: The "mark as patrolled" link HTML (string)
+$rcid: Recent change ID (rc_id) for this change (int)
+$token: Patrol token; $rcid is used in generating this variable
+
+'DifferenceEngineMarkPatrolledRCID': Allows extensions to possibly change the rcid parameter.
+For example the rcid might be set to zero due to the user being the same as the
+performer of the change but an extension might still want to show it under certain
+conditions.
+&$rcid: rc_id (int) of the change or 0
+$differenceEngine: DifferenceEngine object
+$change: RecentChange object
+$user: User object representing the current user
+
+'DifferenceEngineNewHeader': Allows extensions to change the $newHeader variable, which
+contains information about the new revision, such as the revision's author, whether
+the revision was marked as a minor edit or not, etc.
+$differenceEngine: DifferenceEngine object
+&$newHeader: The string containing the various #mw-diff-otitle[1-5] divs, which
+include things like revision author info, revision comment, RevisionDelete link and more
+$formattedRevisionTools: Array containing revision tools, some of which may have
+been injected with the DiffRevisionTools hook
+$nextlink: String containing the link to the next revision (if any); also included in $newHeader
+$rollback: Rollback link (string) to roll this revision back to the previous one, if any
+$newminor: String indicating if the new revision was marked as a minor edit
+$diffOnly: Boolean parameter passed to DifferenceEngine#showDiffPage, indicating
+whether we should show just the diff; passed in as a query string parameter to the
+various URLs constructed here (i.e. $nextlink)
+$rdel: RevisionDelete link for the new revision, if the current user is allowed
+to use the RevisionDelete feature
+$unhide: Boolean parameter indicating whether to show RevisionDeleted revisions
+
+'DifferenceEngineOldHeader': Allows extensions to change the $oldHeader variable, which
+contains information about the old revision, such as the revision's author, whether
+the revision was marked as a minor edit or not, etc.
+$differenceEngine: DifferenceEngine object
+&$oldHeader: The string containing the various #mw-diff-otitle[1-5] divs, which
+include things like revision author info, revision comment, RevisionDelete link and more
+$prevlink: String containing the link to the previous revision (if any); also included in $oldHeader
+$oldminor: String indicating if the old revision was marked as a minor edit
+$diffOnly: Boolean parameter passed to DifferenceEngine#showDiffPage, indicating
+whether we should show just the diff; passed in as a query string parameter to the
+various URLs constructed here (i.e. $prevlink)
+$ldel: RevisionDelete link for the old revision, if the current user is allowed
+to use the RevisionDelete feature
+$unhide: Boolean parameter indicating whether to show RevisionDeleted revisions
+
+'DifferenceEngineOldHeaderNoOldRev': Change the $oldHeader variable in cases when
+there is no old revision
+&$oldHeader: empty string by default
+
+'DifferenceEngineRenderRevisionAddParserOutput': Allows extensions to change the parser output.
+Return false to not add parser output via OutputPage's addParserOutput method.
+$differenceEngine: DifferenceEngine object
+$out: OutputPage object
+$parserOutput: ParserOutput object
+$wikiPage: WikiPage object
+
+DifferenceEngineRenderRevisionShowFinalPatrolLink': An extension can hook into this hook
+point and return false to not show the final "mark as patrolled" link on the bottom
+of a page.
+This hook has no arguments.
+
+'DifferenceEngineShowDiff': Allows extensions to affect the diff text which
+eventually gets sent to the OutputPage object.
+$differenceEngine: DifferenceEngine object
+
+'DifferenceEngineShowEmptyOldContent': Allows extensions to change the diff table
+body (without header) in cases when there is no old revision or the old and new
+revisions are identical.
+$differenceEngine: DifferenceEngine object
+
+'DifferenceEngineShowDiffPage': Add additional output via the available OutputPage
+object into the diff view
+$out: OutputPage object
+
 'DiffRevisionTools': Override or extend the revision tools available from the
 diff view, i.e. undo, etc.
 $newRev: Revision object of the "new" revision
index 3f0528e..3d5e6c5 100644 (file)
@@ -33,8 +33,8 @@
  *
  *     $cf = new CategoryFinder;
  *     $cf->seed(
- *         array( 12345 ),
- *         array( 'Category 1', 'Category 2' ),
+ *         [ 12345 ],
+ *         [ 'Category 1', 'Category 2' ],
  *         'AND'
  *     );
  *     $a = $cf->run();
@@ -49,7 +49,7 @@ class CategoryFinder {
        /** @var array Array of DBKEY category names for categories that don't have a page */
        protected $deadend = [];
 
-       /** @var array Array of [ID => array()] */
+       /** @var array Array of [ ID => [] ] */
        protected $parents = [];
 
        /** @var array Array of article/category IDs */
index 674cf28..ee06993 100644 (file)
@@ -2714,8 +2714,9 @@ class EditPage {
                $wgOut->addHTML( Html::rawElement( 'div', [ 'class' => 'hiddencats' ],
                        Linker::formatHiddenCategories( $this->page->getHiddenCategories() ) ) );
 
-               $wgOut->addHTML( Html::rawElement( 'div', [ 'class' => 'limitreport' ],
-                       self::getPreviewLimitReport( $this->mParserOutput ) ) );
+               if ( $this->mParserOutput ) {
+                       $wgOut->setLimitReportData( $this->mParserOutput->getLimitReportData() );
+               }
 
                $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' );
 
@@ -3442,41 +3443,12 @@ HTML
                        return '';
                }
 
-               $limitReport = Html::rawElement( 'div', [ 'class' => 'mw-limitReportExplanation' ],
-                       wfMessage( 'limitreport-title' )->parseAsBlock()
+               return ResourceLoader::makeInlineScript(
+                       ResourceLoader::makeConfigSetScript(
+                               [ 'wgPageParseReport' => $output->getLimitReportData() ],
+                               true
+                       )
                );
-
-               // Show/hide animation doesn't work correctly on a table, so wrap it in a div.
-               $limitReport .= Html::openElement( 'div', [ 'class' => 'preview-limit-report-wrapper' ] );
-
-               $limitReport .= Html::openElement( 'table', [
-                       'class' => 'preview-limit-report wikitable'
-               ] ) .
-                       Html::openElement( 'tbody' );
-
-               foreach ( $output->getLimitReportData() as $key => $value ) {
-                       if ( Hooks::run( 'ParserLimitReportFormat',
-                               [ $key, &$value, &$limitReport, true, true ]
-                       ) ) {
-                               $keyMsg = wfMessage( $key );
-                               $valueMsg = wfMessage( [ "$key-value-html", "$key-value" ] );
-                               if ( !$valueMsg->exists() ) {
-                                       $valueMsg = new RawMessage( '$1' );
-                               }
-                               if ( !$keyMsg->isDisabled() && !$valueMsg->isDisabled() ) {
-                                       $limitReport .= Html::openElement( 'tr' ) .
-                                               Html::rawElement( 'th', null, $keyMsg->parse() ) .
-                                               Html::rawElement( 'td', null, $valueMsg->params( $value )->parse() ) .
-                                               Html::closeElement( 'tr' );
-                               }
-                       }
-               }
-
-               $limitReport .= Html::closeElement( 'tbody' ) .
-                       Html::closeElement( 'table' ) .
-                       Html::closeElement( 'div' );
-
-               return $limitReport;
        }
 
        protected function showStandardInputs( &$tabindex = 2 ) {
index b6c48ab..b88db92 100644 (file)
@@ -1773,7 +1773,7 @@ class OutputPage extends ContextSource {
                }
 
                // Include profiling data
-               $this->limitReportData = $parserOutput->getLimitReportData();
+               $this->setLimitReportData( $parserOutput->getLimitReportData() );
 
                // Link flags are ignored for now, but may in the future be
                // used to mark individual language links.
@@ -4051,4 +4051,12 @@ class OutputPage extends ContextSource {
                // public API or you'll be severely disappointed when T87871 is fixed and it disappears.
                $this->addMeta( 'X-OOUI-PHP', '1' );
        }
+
+       /**
+        * @param array $data Data from ParserOutput::getLimitReportData()
+        * @since 1.28
+        */
+       public function setLimitReportData( array $data ) {
+               $this->limitReportData = $data;
+       }
 }
index f8f1dc1..7f043e4 100644 (file)
@@ -50,7 +50,8 @@ class UnwatchAction extends WatchAction {
        }
 
        public function onSuccess() {
-               $this->getOutput()->addWikiMsg( 'removedwatchtext', $this->getTitle()->getPrefixedText() );
+               $msgKey = $this->getTitle()->isTalkPage() ? 'removedwatchtext-talk' : 'removedwatchtext';
+               $this->getOutput()->addWikiMsg( $msgKey, $this->getTitle()->getPrefixedText() );
        }
 
        public function doesWrites() {
index 890740f..23505c0 100644 (file)
@@ -67,7 +67,8 @@ class WatchAction extends FormAction {
        }
 
        public function onSuccess() {
-               $this->getOutput()->addWikiMsg( 'addedwatchtext', $this->getTitle()->getPrefixedText() );
+               $msgKey = $this->getTitle()->isTalkPage() ? 'addedwatchtext-talk' : 'addedwatchtext';
+               $this->getOutput()->addWikiMsg( $msgKey, $this->getTitle()->getPrefixedText() );
        }
 
        /* Static utility methods */
index 52a7951..2511e3b 100644 (file)
@@ -66,13 +66,15 @@ class ApiAMCreateAccount extends ApiBase {
                $helper = new ApiAuthManagerHelper( $this );
                $manager = AuthManager::singleton();
 
-               // Make sure it's possible to log in
+               // Make sure it's possible to create accounts
                if ( !$manager->canCreateAccounts() ) {
                        $this->getResult()->addValue( null, 'createaccount', $helper->formatAuthenticationResponse(
                                AuthenticationResponse::newFail(
                                        $this->msg( 'userlogin-cannot-' . AuthManager::ACTION_CREATE )
                                )
                        ) );
+                       $helper->logAuthenticationResult( 'accountcreation',
+                               'userlogin-cannot-' . AuthManager::ACTION_CREATE );
                        return;
                }
 
@@ -93,6 +95,7 @@ class ApiAMCreateAccount extends ApiBase {
 
                $this->getResult()->addValue( null, 'createaccount',
                        $helper->formatAuthenticationResponse( $res ) );
+               $helper->logAuthenticationResult( 'accountcreation', $res );
        }
 
        public function isReadMode() {
index e30f22b..fe5675a 100644 (file)
@@ -25,6 +25,7 @@ use MediaWiki\Auth\AuthManager;
 use MediaWiki\Auth\AuthenticationRequest;
 use MediaWiki\Auth\AuthenticationResponse;
 use MediaWiki\Auth\CreateFromLoginAuthenticationRequest;
+use MediaWiki\Logger\LoggerFactory;
 
 /**
  * Helper class for AuthManager-using API modules. Intended for use via
@@ -220,6 +221,30 @@ class ApiAuthManagerHelper {
                return $ret;
        }
 
+       /**
+        * Logs successful or failed authentication.
+        * @param string|AuthenticationResponse $result Response or error message
+        * @param string $event Event type (e.g. 'accountcreation')
+        */
+       public function logAuthenticationResult( $event, $result ) {
+               if ( is_string( $result ) ) {
+                       $status = Status::newFatal( $result );
+               } elseif ( $result->status === AuthenticationResponse::PASS ) {
+                       $status = Status::newGood();
+               } elseif ( $result->status === AuthenticationResponse::FAIL ) {
+                       $status = Status::newFatal( $result->message );
+               } else {
+                       return;
+               }
+
+               $module = $this->module->getModuleName();
+               LoggerFactory::getInstance( 'authmanager' )->info( "$module API attempt", [
+                       'event' => $event,
+                       'status' => $status,
+                       'module' => $module,
+               ] );
+       }
+
        /**
         * Fetch the preserved CreateFromLoginAuthenticationRequest, if any
         * @return CreateFromLoginAuthenticationRequest|null
index 8e5a3c7..cbb1524 100644 (file)
@@ -72,6 +72,7 @@ class ApiClientLogin extends ApiBase {
                        $this->getResult()->addValue( null, 'clientlogin', $helper->formatAuthenticationResponse(
                                AuthenticationResponse::newFail( $this->msg( 'userlogin-cannot-' . AuthManager::ACTION_LOGIN ) )
                        ) );
+                       $helper->logAuthenticationResult( 'login', 'userlogin-cannot-' . AuthManager::ACTION_LOGIN );
                        return;
                }
 
@@ -99,6 +100,7 @@ class ApiClientLogin extends ApiBase {
 
                $this->getResult()->addValue( null, 'clientlogin',
                        $helper->formatAuthenticationResponse( $res ) );
+               $helper->logAuthenticationResult( 'login', $res );
        }
 
        public function isReadMode() {
index 1dadc07..0e4c6e0 100644 (file)
@@ -212,6 +212,15 @@ class ApiLogin extends ApiBase {
 
                                $result['lguserid'] = intval( $user->getId() );
                                $result['lgusername'] = $user->getName();
+
+                               // @todo: These are deprecated, and should be removed at some
+                               // point (1.28 at the earliest, and see T121527). They were ok
+                               // when the core cookie-based login was the only thing, but
+                               // CentralAuth broke that a while back and
+                               // SessionManager/AuthManager *really* break it.
+                               $result['lgtoken'] = $user->getToken();
+                               $result['cookieprefix'] = $this->getConfig()->get( 'CookiePrefix' );
+                               $result['sessionid'] = $session->getId();
                                break;
 
                        case 'NeedToken':
@@ -219,6 +228,10 @@ class ApiLogin extends ApiBase {
                                $this->setWarning( 'Fetching a token via action=login is deprecated. ' .
                                   'Use action=query&meta=tokens&type=login instead.' );
                                $this->logFeatureUsage( 'action=login&!lgtoken' );
+
+                               // @todo: See above about deprecation
+                               $result['cookieprefix'] = $this->getConfig()->get( 'CookiePrefix' );
+                               $result['sessionid'] = $session->getId();
                                break;
 
                        case 'WrongToken':
index 8045447..90438d4 100644 (file)
@@ -1002,7 +1002,7 @@ class ApiPageSet extends ApiBase {
                                // Get pageIDs data from the `page` table
                                $res = $db->select( 'page', $pageFlds, $set, __METHOD__ );
 
-                               // Hack: get the ns:titles stored in array(ns => array(titles)) format
+                               // Hack: get the ns:titles stored in [ns => array(titles)] format
                                $this->initFromQueryResult( $res, $linkBatch->data, true );
                        }
                }
index 3a4b012..00846f5 100644 (file)
@@ -20,7 +20,7 @@
 
 /**
  * This class represents the result of the API operations.
- * It simply wraps a nested array() structure, adding some functions to simplify
+ * It simply wraps a nested array structure, adding some functions to simplify
  * array's modifications. As various modules execute, they add different pieces
  * of information to this result, structuring it as it will be given to the client.
  *
index f09fdcb..3a7a082 100644 (file)
@@ -110,14 +110,16 @@ class ApiWatch extends ApiBase {
                        $status = UnwatchAction::doUnwatch( $title, $user );
                        $res['unwatched'] = $status->isOK();
                        if ( $status->isOK() ) {
-                               $res['message'] = $this->msg( 'removedwatchtext', $title->getPrefixedText() )
+                               $msgKey = $title->isTalkPage() ? 'removedwatchtext-talk' : 'removedwatchtext';
+                               $res['message'] = $this->msg( $msgKey, $title->getPrefixedText() )
                                        ->title( $title )->parseAsBlock();
                        }
                } else {
                        $status = WatchAction::doWatch( $title, $user );
                        $res['watched'] = $status->isOK();
                        if ( $status->isOK() ) {
-                               $res['message'] = $this->msg( 'addedwatchtext', $title->getPrefixedText() )
+                               $msgKey = $title->isTalkPage() ? 'addedwatchtext-talk' : 'addedwatchtext';
+                               $res['message'] = $this->msg( $msgKey, $title->getPrefixedText() )
                                        ->title( $title )->parseAsBlock();
                        }
                }
index 7dcc4fd..2107e89 100644 (file)
        "apihelp-parse-paramvalue-prop-displaytitle": "Вики-текстың синтаксик анализына исем ҡуя.",
        "apihelp-parse-paramvalue-prop-headitems": "<код> & ЛТ -ҡа һалыу өсөн элементтар бирә; башы & GT; биттең </ код>",
        "apihelp-parse-paramvalue-prop-headhtml": "Айырылған <код> & лт бирә; & баштары GТ; биттең </ код>.",
-       "apihelp-parse-paramvalue-prop-jsconfigvars": "Бит өсөн үҙенсәлекле  JavaScript үҙгәреүсән конфигурациялар бирә.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Бит өсөн үҙенсәлекле JavaScript үҙгәреүсән конфигурациялар бирә. Ҡулланыр өсөн, <code>mw.config.set()</code> ҡабыҙырға.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "JavaScriptтың JSON юлы һымаҡ үҙенсәлекле биттәренә  алышына торған конфигурация бирә.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Вики-текстың синтаксик анализында интервиктарға һылтанма бирә.",
        "apihelp-parse-paramvalue-prop-wikitext": "Һығымта яҺау өсөн тәүге вики-тексты күрһәтә",
        "apihelp-protect-param-tags": "Юйҙырылғандар журналындағы яҙмаларға  мөрәжәғәт итер өсөн, билдәләрҙе үҙгәртергә.",
        "apihelp-protect-param-watchlist": "Ағымдағы ҡулланыусының теҙмәһенән битте һүҙһеҙ өҫтәргә йәки юйырға, һылтанмаларҙы файҙаланығыҙ йәки сәғәтте алмаштырмаҫҡа.",
        "apihelp-protect-example-protect": "Битте һаҡларға.",
-       "apihelp-protect-example-unprotect": "<kbd>всех</kbd> өсөн сикләүҙәр ҡуйып,биттән һаҡлауҙы алырға.",
+       "apihelp-protect-example-unprotect": "<kbd>all</kbd> сикләүҙәрен (йәғни һәр береһе эшләй ала) ҡуйып, бит һағын асырға.",
        "apihelp-protect-example-unprotect2": "Бер ниндәй сикләүҙәр ҡуймай биттән һаҡлауҙы алырға.",
        "apihelp-purge-param-forcelinkupdate": "Таблицалар бәйләнешен яңыртыу.",
        "apihelp-purge-param-forcerecursivelinkupdate": "Һылтанманы һәм таблицаны яңыртығыҙ һәм был битте шаблон итеп ҡулланған башҡа биттәр өсөн һылтанмаларҙы ла яңыртығыҙ.",
index 9c32fa3..9e5d754 100644 (file)
@@ -75,6 +75,8 @@
        "apihelp-createaccount-example-pass": "Створити користувача <kbd>testuser</kbd> з паролем <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Створити користувача <kbd>testmailuser</kbd> і надіслати на електронну пошту випадково-згенерований пароль.",
        "apihelp-cspreport-description": "Використовується браузерами для повідомлення порушень Правил безпеки контенту (Content Security Policy). Цей модуль не повинен використовуватися, окрім випадків автоматичного використання веб-браузером для CSP-скарги.",
+       "apihelp-cspreport-param-reportonly": "Позначити як доповідь із моніторингової політики, не примусової політики",
+       "apihelp-cspreport-param-source": "Що згенерувало CSP-заголовок, який запустив цю доповідь",
        "apihelp-delete-description": "Вилучити сторінку.",
        "apihelp-delete-param-title": "Назва сторінки для вилучення. Не можна використати разом з <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "ID-сторінки на вилучення. Не можна використати разом з <var>$1title</var>.",
        "apihelp-undelete-example-page": "Відновити сторінку <kbd>Main Page</kbd>.",
        "apihelp-undelete-example-revisions": "Відновити дві версії сторінки <kbd>Main Page</kbd>.",
        "apihelp-unlinkaccount-description": "Вилучити пов'язаний обліковий запис третьої сторони з поточного користувача.",
+       "apihelp-unlinkaccount-example-simple": "Здійснити спробу вилучити посилання поточного користувача для провайдера, асоційованого з <kbd>FooAuthenticationRequest</kbd>.",
        "apihelp-upload-description": "Завантажити файл, або отримати статус завантажень у процесі.\n\nДоступні декілька методів:\n* Завантажити вміст файлу напряму, використовуючи параметр <var>$1file</var>.\n* Завантажити файл шматками, використовуючи параметри <var>$1filesize</var>, <var>$1chunk</var>, та <var>$1offset</var>.\n* Змусити сервер Медіавікі отримати файл за URL, використовуючи параметр <var>$1url</var>.\n* Завершити раніше розпочате завантаження, яке не вдалось через попередження, використовуючи параметр <var>$1filekey</var>.\nЗауважте, що HTTP POST повинен бути здійснений як завантаження файлу (наприклад, використовуючи <code>multipart/form-data</code>)",
        "apihelp-upload-param-filename": "Цільова назва файлу.",
        "apihelp-upload-param-comment": "Коментар завантаження. Також використовується як початковий текст сторінок для нових файлів, якщо <var>$1text</var> не вказано.",
        "api-help-permissions-granted-to": "{{PLURAL:$1|Надано|Надані}}: $2",
        "api-help-right-apihighlimits": "Використовувати вищі ліміти у запитах API (повільні запити: $1; швидкі запити: $2). Ліміти для повільних запитів також застосовуються до багатозначних параметрів.",
        "api-help-open-in-apisandbox": "<small>[відкрити в пісочниці]</small>",
+       "api-help-authmanager-general-usage": "Загальна процедура використання цього модуля така:\n# Отримайте доступні поля зі <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> за допомогою <kbd>amirequestsfor=$4</kbd>, а також токен  <kbd>$5</kbd> зі <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.\n# Передайте ці поля користувачеві, і отримайте інформацію, якою він їх заповнить.\n# Напишіть до цього модуля, заповнивши <var>$1returnurl</var> та всі релевантні поля.\n# Перевірте <samp>status</samp> у відповіді.\n#* Якщо Ви отримали <samp>PASS</samp> або <samp>FAIL</samp>, роботу завершено. Операція або була успішною, або провалилася.\n#* Якщо Ви отримали <samp>UI</samp>, надішліть нові поля користувачеві й отримайте інформацію, якою він їх заповнить. Далі напишіть до цього модуля із <var>$1continue</var> та заповніть всі реелевантні поля, після чого повторіть крок 4.\n#* Якщо Ви отримали <samp>REDIRECT</samp>, направте користувача до <samp>redirecttarget</samp> і дочекайтеся повернення до <var>$1returnurl</var>. Тоді напишіть до цього модуля із <var>$1continue</var>, та з усіма полями, що були передані до повернутої URL-адреси, після чого повторіть крок 4.\n#* Якщо Ви отримали <samp>RESTART</samp>, це означає, що автентифікація спрацювала, але ми не маємо пов'язаного облікового запису користувача. Ви можете розцінити це як <samp>UI</samp>, або як <samp>FAIL</samp>.",
+       "api-help-authmanagerhelper-requests": "Використовувати ці автентифікаційні запити через <samp>id</samp>, що повертається з <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> за допомогою <kbd>amirequestsfor=$1</kbd>, або з попередньої відповіді з цього модуля.",
+       "api-help-authmanagerhelper-request": "Використовувати цей автентифікаційний запит через <samp>id</samp>, що повертається з <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> за допомогою <kbd>amirequestsfor=$1</kbd>.",
        "api-help-authmanagerhelper-messageformat": "Формат до використання для повернення повідомлень.",
        "api-help-authmanagerhelper-mergerequestfields": "Об'єднати інформацію всіх автентифікаційних запитів у один масив.",
        "api-help-authmanagerhelper-preservestate": "Зберегти статус з попередньої спроби входу, що не вдалась, якщо можливо.",
+       "api-help-authmanagerhelper-returnurl": "URL-адреса повернення для сторонніх автентифікаційних потоків повинна бути абсолютною. Обов'язковим є це, або <var>$1continue</var>. \n\nПри отриманні відповіді <samp>REDIRECT</samp>, найбільш звичною Вашою дією буде відкриття браузерного чи іншого веб-перегляду вказаного URL-посилання для стороннього потоку автентифікації. Коли ця операція буде завершена, стороння програма перенаправить веб-переглядач на цю URL-адресу. Ви повинні видобувати будь-які параметри запитів або POST-параметри із цієї URL-адреси, і передавати їх як запит <var>$1continue</var> до цього модуля API.",
+       "api-help-authmanagerhelper-continue": "Цей запит є продовженням після попередньої відповіді <samp>UI</samp> або <samp>REDIRECT</samp>. Або це, або <var>$1returnurl</var> є обов'язковим.",
+       "api-help-authmanagerhelper-additional-params": "Цей модуль приймає додаткові параметри, залежно від доступних автентифікаційних запитів. Використовуйте <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> за допомогою <kbd>amirequestsfor=$1</kbd> (або попередню відповідь від цього модуля, якщо це застосовно), аби визначити доступні запити та поля, які вони використовують.",
        "api-credits-header": "Автор(и)",
        "api-credits": "Розробники API:\n* Roan Kattouw (головний розробник вер. 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (творець, головний розробник вер. 2006 – вер. 2007)\n* Brad Jorsch (головний розробник 2013 – тепер)\n\nБудь ласка, надсилайте свої коментарі, пропозиції та запитання на mediawiki-api@lists.wikimedia.org\nабо зафайліть звіт про баґ на https://phabricator.wikimedia.org/."
 }
index 33f8162..5e0365a 100644 (file)
@@ -378,10 +378,10 @@ class DatabaseMssql extends Database {
         * @param mixed $conds Array or string, condition(s) for WHERE
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @param array $options Associative array of options (e.g.
-        *   array('GROUP BY' => 'page_title')), see Database::makeSelectOptions
+        *   [ 'GROUP BY' => 'page_title' ]), see Database::makeSelectOptions
         *   code for list of supported stuff
         * @param array $join_conds Associative array of table join conditions
-        *   (optional) (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+        *   (optional) (e.g. [ 'page' => [ 'LEFT JOIN','page_latest=rev_id' ] ]
         * @return mixed Database result resource (feed to Database::fetchObject
         *   or whatever), or false on failure
         * @throws DBQueryError
@@ -434,10 +434,10 @@ class DatabaseMssql extends Database {
         * @param mixed $vars Array or string, field name(s) to be retrieved
         * @param mixed $conds Array or string, condition(s) for WHERE
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
-        * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
+        * @param array $options Associative array of options (e.g. [ 'GROUP BY' => 'page_title' ]),
         *   see Database::makeSelectOptions code for list of supported stuff
         * @param array $join_conds Associative array of table join conditions (optional)
-        *    (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+        *    (e.g. [ 'page' => [ 'LEFT JOIN','page_latest=rev_id' ] ]
         * @return string The SQL text
         */
        public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
@@ -717,7 +717,7 @@ class DatabaseMssql extends Database {
 
        /**
         * INSERT SELECT wrapper
-        * $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
+        * $varMap must be an associative array of the form [ 'dest1' => 'source1', ... ]
         * Source items may be literals rather than field names, but strings should
         * be quoted with Database::addQuotes().
         * @param string $destTable
index a6f8c31..ee84224 100644 (file)
@@ -798,7 +798,7 @@ abstract class DatabaseMysqlBase extends Database {
                // Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
                if ( $this->useGTIDs && $pos->gtids ) {
                        // Wait on the GTID set (MariaDB only)
-                       $gtidArg = implode( ',', $pos->gtids );
+                       $gtidArg = $this->addQuotes( implode( ',', $pos->gtids ) );
                        $res = $this->doQuery( "SELECT MASTER_GTID_WAIT($gtidArg, $timeout)" );
                } else {
                        // Wait on the binlog coordinates
index c9127ff..867aeb8 100644 (file)
@@ -888,7 +888,7 @@ __INDEXATTR__;
 
        /**
         * INSERT SELECT wrapper
-        * $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
+        * $varMap must be an associative array of the form [ 'dest1' => 'source1', ... ]
         * Source items may be literals rather then field names, but strings should
         * be quoted with Database::addQuotes()
         * $conds may be "*" to copy the whole table
index 41b131f..9dcbd7f 100644 (file)
@@ -329,7 +329,7 @@ interface IDatabase {
         *
         * Example:
         * $id = $dbw->nextSequenceValue( 'page_page_id_seq' );
-        * $dbw->insert( 'page', array( 'page_id' => $id ) );
+        * $dbw->insert( 'page', [ 'page_id' => $id ] );
         * $id = $dbw->insertId();
         *
         * @return int
@@ -519,7 +519,7 @@ interface IDatabase {
         * May be either an array of table names, or a single string holding a table
         * name. If an array is given, table aliases can be specified, for example:
         *
-        *    array( 'a' => 'user' )
+        *    [ 'a' => 'user' ]
         *
         * This includes the user table in the query, with the alias "a" available
         * for use in field names (e.g. a.user_name).
@@ -537,7 +537,7 @@ interface IDatabase {
         * can be complete fragments of SQL, for direct inclusion into the SELECT
         * query. If an array is given, field aliases can be specified, for example:
         *
-        *   array( 'maxrev' => 'MAX(rev_id)' )
+        *   [ 'maxrev' => 'MAX(rev_id)' ]
         *
         * This includes an expression with the alias "maxrev" in the query.
         *
@@ -582,7 +582,7 @@ interface IDatabase {
         * including them in the array as a string value with a numeric key, for
         * example:
         *
-        *    array( 'FOR UPDATE' )
+        *    [ 'FOR UPDATE' ]
         *
         * The supported options are:
         *
@@ -644,7 +644,7 @@ interface IDatabase {
         * an SQL fragment, or an array where the string keys are equality and the
         * numeric keys are SQL fragments all AND'd together. For example:
         *
-        *    array( 'page' => array( 'LEFT JOIN', 'page_latest=rev_id' ) )
+        *    [ 'page' => [ 'LEFT JOIN', 'page_latest=rev_id' ] ]
         *
         * @return ResultWrapper|bool If the query returned no rows, a ResultWrapper
         *   with no rows in it will be returned. If there was a query error, a
@@ -857,7 +857,7 @@ interface IDatabase {
         * The keys on each level may be either integers or strings.
         *
         * @param array $data Organized as 2-d
-        *    array(baseKeyVal => array(subKeyVal => [ignored], ...), ...)
+        *    [ baseKeyVal => [ subKeyVal => [ignored], ... ], ... ]
         * @param string $baseKey Field name to match the base-level keys to (eg 'pl_namespace')
         * @param string $subKey Field name to match the sub-level keys to (eg 'pl_title')
         * @return string|bool SQL fragment, or false if no items in array
@@ -950,7 +950,7 @@ interface IDatabase {
         * Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns
         * a LIKE clause that searches for subpages of 'My page title'.
         * Alternatively:
-        *   $pattern = array( 'My_page_title/', $dbr->anyString() );
+        *   $pattern = [ 'My_page_title/', $dbr->anyString() ];
         *   $query .= $dbr->buildLike( $pattern );
         *
         * @since 1.16
@@ -1092,7 +1092,7 @@ interface IDatabase {
         *    to include in a join.
         *
         * @param array $varMap Must be an associative array of the form
-        *    array( 'dest1' => 'source1', ...). Source items may be literals
+        *    [ 'dest1' => 'source1', ... ]. Source items may be literals
         *    rather than field names, but strings should be quoted with
         *    IDatabase::addQuotes()
         *
index 3a543ac..32b1a0f 100644 (file)
  *
  *     sectionLoads                A 2-d map. For each section, gives a map of server names to
  *                                 load ratios. For example:
- *                                 array(
- *                                     'section1' => array(
+ *                                 [
+ *                                     'section1' => [
  *                                         'db1' => 100,
  *                                         'db2' => 100
- *                                     )
- *                                 )
+ *                                     ]
+ *                                 ]
  *
  *     serverTemplate              A server info associative array as documented for $wgDBservers.
  *                                 The host, hostName and load entries will be overridden.
  *
  *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group.
  *                                 For example:
- *                                 array(
- *                                     'section1' => array(
- *                                         'group1' => array(
+ *                                 [
+ *                                     'section1' => [
+ *                                         'group1' => [
  *                                             'db1' => 100,
  *                                             'db2' => 100
- *                                         )
- *                                     )
- *                                 )
+ *                                         ]
+ *                                     ]
+ *                                 ]
  *
  *     groupLoadsByDB              A 3-d map giving server load ratios by DB name.
  *
index b44b559..1269c3e 100644 (file)
@@ -617,7 +617,7 @@ class LoadBalancer {
                        /**
                         * This can happen in code like:
                         *   foreach ( $dbs as $db ) {
-                        *     $conn = $lb->getConnection( DB_SLAVE, array(), $db );
+                        *     $conn = $lb->getConnection( DB_SLAVE, [], $db );
                         *     ...
                         *     $lb->reuseConnection( $conn );
                         *   }
index 33955b2..4a6ac8e 100644 (file)
@@ -238,12 +238,14 @@ class DifferenceEngine extends ContextSource {
        }
 
        public function showDiffPage( $diffOnly = false ) {
-
                # Allow frames except in certain special cases
                $out = $this->getOutput();
                $out->allowClickjacking();
                $out->setRobotPolicy( 'noindex,nofollow' );
 
+               // Allow extensions to add any extra output here
+               Hooks::run( 'DifferenceEngineShowDiffPage', [ $out ] );
+
                if ( !$this->loadRevisionData() ) {
                        $this->showMissingRevision();
 
@@ -285,6 +287,8 @@ class DifferenceEngine extends ContextSource {
                        $out->setPageTitle( $this->msg( 'difference-title', $this->mNewPage->getPrefixedText() ) );
                        $samePage = true;
                        $oldHeader = '';
+                       // Allow extensions to change the $oldHeader variable
+                       Hooks::run( 'DifferenceEngineOldHeaderNoOldRev', [ &$oldHeader ] );
                } else {
                        Hooks::run( 'DiffViewHeader', [ $this, $this->mOldRev, $this->mNewRev ] );
 
@@ -354,6 +358,10 @@ class DifferenceEngine extends ContextSource {
                                '<div id="mw-diff-otitle5">' . $oldChangeTags[0] . '</div>' .
                                '<div id="mw-diff-otitle4">' . $prevlink . '</div>';
 
+                       // Allow extensions to change the $oldHeader variable
+                       Hooks::run( 'DifferenceEngineOldHeader', [ $this, &$oldHeader, $prevlink, $oldminor,
+                               $diffOnly, $ldel, $this->unhide ] );
+
                        if ( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) {
                                $deleted = true; // old revisions text is hidden
                                if ( $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ) ) {
@@ -415,6 +423,10 @@ class DifferenceEngine extends ContextSource {
                        '<div id="mw-diff-ntitle5">' . $newChangeTags[0] . '</div>' .
                        '<div id="mw-diff-ntitle4">' . $nextlink . $this->markPatrolledLink() . '</div>';
 
+               // Allow extensions to change the $newHeader variable
+               Hooks::run( 'DifferenceEngineNewHeader', [ $this, &$newHeader, $formattedRevisionTools,
+                       $nextlink, $rollback, $newminor, $diffOnly, $rdel, $this->unhide ] );
+
                if ( $this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
                        $deleted = true; // new revisions text is hidden
                        if ( $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ) ) {
@@ -487,6 +499,9 @@ class DifferenceEngine extends ContextSource {
                                                        'token' => $linkInfo['token'],
                                                ]
                                        ) . ']</span>';
+                               // Allow extensions to change the markpatrolled link
+                               Hooks::run( 'DifferenceEngineMarkPatrolledLink', [ $this,
+                                       &$this->mMarkPatrolledLink, $linkInfo['rcid'], $linkInfo['token'] ] );
                        }
                }
                return $this->mMarkPatrolledLink;
@@ -530,9 +545,17 @@ class DifferenceEngine extends ContextSource {
                                // If the user could patrol this it already would be patrolled
                                $rcid = 0;
                        }
+
+                       // Allow extensions to possibly change the rcid here
+                       // For example the rcid might be set to zero due to the user
+                       // being the same as the performer of the change but an extension
+                       // might still want to show it under certain conditions
+                       Hooks::run( 'DifferenceEngineMarkPatrolledRCID', [ &$rcid, $this, $change, $user ] );
+
                        // Build the link
                        if ( $rcid ) {
                                $this->getOutput()->preventClickjacking();
+                               $this->getOutput()->addModuleStyles( 'mediawiki.page.patrol' );
                                if ( $wgEnableAPI && $wgEnableWriteAPI
                                        && $user->isAllowed( 'writeapi' )
                                ) {
@@ -617,15 +640,20 @@ class DifferenceEngine extends ContextSource {
 
                                # WikiPage::getParserOutput() should not return false, but just in case
                                if ( $parserOutput ) {
-                                       $out->addParserOutput( $parserOutput );
+                                       // Allow extensions to change parser output here
+                                       if ( Hooks::run( 'DifferenceEngineRenderRevisionAddParserOutput', [ $this, $out, $parserOutput, $wikiPage ] ) ) {
+                                               $out->addParserOutput( $parserOutput );
+                                       }
                                }
                        }
                }
                # @codingStandardsIgnoreEnd
 
-               # Add redundant patrol link on bottom...
-               $out->addHTML( $this->markPatrolledLink() );
-
+               // Allow extensions to optionally not show the final patrolled link
+               if ( Hooks::run( 'DifferenceEngineRenderRevisionShowFinalPatrolLink' ) ) {
+                       # Add redundant patrol link on bottom...
+                       $out->addHTML( $this->markPatrolledLink() );
+               }
        }
 
        protected function getParserOutput( WikiPage $page, Revision $rev ) {
@@ -651,6 +679,9 @@ class DifferenceEngine extends ContextSource {
         * @return bool
         */
        public function showDiff( $otitle, $ntitle, $notice = '' ) {
+               // Allow extensions to affect the output here
+               Hooks::run( 'DifferenceEngineShowDiff', [ $this ] );
+
                $diff = $this->getDiff( $otitle, $ntitle, $notice );
                if ( $diff === false ) {
                        $this->showMissingRevision();
@@ -720,7 +751,9 @@ class DifferenceEngine extends ContextSource {
                if ( $this->mOldRev === false || ( $this->mOldRev && $this->mNewRev
                        && $this->mOldRev->getId() == $this->mNewRev->getId() )
                ) {
-                       return '';
+                       if ( Hooks::run( 'DifferenceEngineShowEmptyOldContent', [ $this ] ) ) {
+                               return '';
+                       }
                }
                // Cacheable?
                $key = false;
index f8d26a7..b29e3bd 100644 (file)
        "config-env-php": "PHP $1 i biyo saz.",
        "config-db-type": "Database tipe:",
        "config-db-host": "Database host:",
+       "config-db-host-oracle": "Database TNS:",
        "config-db-name": "Database name:",
+       "config-db-username": "Database nameykarberi:",
+       "config-db-password": "Database parola :",
        "config-db-port": "Portê database:",
        "config-type-mssql": "Microsoft SQL Server",
        "config-header-mysql": "Eyarê MySQL",
index 1158193..f812471 100644 (file)
@@ -63,6 +63,7 @@
        "config-header-oracle": "Oracle hobespenak",
        "config-header-mssql": "Microsoft SQL Server-en ezarpenak",
        "config-invalid-db-type": "Datu-base mota baliogabea.",
+       "config-db-sys-user-exists-oracle": "$1 erabiltzaile kontua dagoeneko existitzen da. SYSDBA kontu berri bat sortzeko erabili daiteke soilik!",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-binary": "Bitarra",
index 423926b..8d54c98 100644 (file)
        "config-subscribe": "Zapisz się na [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce listę pocztową z ogłoszeniami o nowych wersjach].",
        "config-subscribe-help": "Jest to lista o małej liczbie wiadomości, wykorzystywana do przesyłania informacji o udostępnieniu nowej wersji oraz istotnych sprawach dotyczących bezpieczeństwa.\nPowinieneś zapisać się na tę listę i aktualizować zainstalowane oprogramowanie MediaWiki gdy pojawia się nowa wersja.",
        "config-subscribe-noemail": "Próbowano subskrybować listę mailingową ogłoszeń wersji bez podania adresu e-mail.\nProszę podać adres e-mail, jeśli chcesz subskrybować listę wysyłkową.",
+       "config-pingback": "Udostępnij dane o instalacji twórcom MediaWiki.",
+       "config-pingback-help": "Jeżeli wybierzesz tę opcję, MediaWiki będzie okresowo wysyłać na https://www.mediawiki.org podstawowe dane na temat tej instancji MediaWiki. Te dane zawierają np. typ systemu, wersję PHP i wybrany silnik bazy danych. Fundacja Wikimedia dzieli się tymi danymi z twórcami MediaWiki, aby pomóc w podejmowaniu dalszych wysiłków co do rozwoju. Poniższe dane o Twoim systemie zostaną wysłane:\n<pre>$1</pre>",
        "config-almost-done": "To już prawie koniec!\nMożesz pominąć pozostałe czynności konfiguracyjne i zainstalować wiki.",
        "config-optional-continue": "Zadaj mi więcej pytań.",
        "config-optional-skip": "Jestem już znudzony, po prostu zainstaluj wiki.",
index 1350958..98d7d12 100644 (file)
@@ -307,7 +307,7 @@ class JobRunner implements LoggerAwareInterface {
                $stats->timing( "jobqueue.run.$jType", $timeMs );
                // Track RSS increases for jobs (in case of memory leaks)
                if ( $rssStart && $rssEnd ) {
-                       $stats->increment( "jobqueue.rss_delta.$jType", $rssEnd - $rssStart );
+                       $stats->updateCount( "jobqueue.rss_delta.$jType", $rssEnd - $rssStart );
                }
 
                if ( $status === false ) {
index 511e1c9..4ba1bc3 100644 (file)
@@ -50,7 +50,7 @@ class HtmlArmor {
                if ( $input instanceof HtmlArmor ) {
                        return $input->value;
                } else {
-                       return htmlspecialchars( $input );
+                       return htmlspecialchars( $input, ENT_QUOTES );
                }
        }
 }
index 6396aaa..f5a860e 100644 (file)
@@ -1196,6 +1196,7 @@ class Article implements Page {
                $token = $user->getEditToken( $rcid );
 
                $outputPage->preventClickjacking();
+               $outputPage->addModuleStyles( 'mediawiki.page.patrol' );
                if ( $wgEnableAPI && $wgEnableWriteAPI && $user->isAllowed( 'writeapi' ) ) {
                        $outputPage->addModules( 'mediawiki.page.patrol.ajax' );
                }
index 39fb8ef..52df2e3 100644 (file)
  * Item class for a filearchive table row
  */
 class RevDelArchivedFileItem extends RevDelFileItem {
-       /** @var RevDelArchivedFileList */
-       protected $list;
-       /** @var ArchivedFile */
-       protected $file;
+       /** @var $list RevDelArchivedFileList */
+       /** @var $file ArchivedFile */
        /** @var LocalFile */
        protected $lockFile;
 
index 3a3b467..ff01cee 100644 (file)
  * Item class for an oldimage table row
  */
 class RevDelFileItem extends RevDelItem {
-       /** @var OldLocalFile */
-       public $file;
        /** @var RevDelFileList */
        protected $list;
+       /** @var OldLocalFile */
+       protected $file;
 
        public function __construct( $list, $row ) {
                parent::__construct( $list, $row );
index cce88b9..0a98721 100644 (file)
@@ -267,13 +267,13 @@ class SpecialContributions extends IncludableSpecialPage {
                        }
                        $user = htmlspecialchars( $userObj->getName() );
                } else {
-                       $user = Linker::link( $userObj->getUserPage(), htmlspecialchars( $userObj->getName() ) );
+                       $user = $this->getLinkRenderer()->makeLink( $userObj->getUserPage(), $userObj->getName() );
                }
                $nt = $userObj->getUserPage();
                $talk = $userObj->getTalkPage();
                $links = '';
                if ( $talk ) {
-                       $tools = $this->getUserLinks( $nt, $talk, $userObj );
+                       $tools = self::getUserLinks( $this, $userObj );
                        $links = $this->getLanguage()->pipeList( $tools );
 
                        // Show a note if the user is blocked and display the last block log entry.
@@ -313,86 +313,93 @@ class SpecialContributions extends IncludableSpecialPage {
 
        /**
         * Links to different places.
-        * @param Title $userpage Target user page
-        * @param Title $talkpage Talk page
+        *
+        * @note This function is also called in DeletedContributionsPage
+        * @param SpecialPage $sp SpecialPage instance, for context
         * @param User $target Target user object
         * @return array
         */
-       public function getUserLinks( Title $userpage, Title $talkpage, User $target ) {
+       public static function getUserLinks( SpecialPage $sp, User $target ) {
 
                $id = $target->getId();
                $username = $target->getName();
+               $userpage = $target->getUserPage();
+               $talkpage = $target->getTalkPage();
 
-               $tools[] = Linker::link( $talkpage, $this->msg( 'sp-contributions-talk' )->escaped() );
+               $linkRenderer = $sp->getLinkRenderer();
+               $tools['user-talk'] = $linkRenderer->makeLink(
+                       $talkpage,
+                       $sp->msg( 'sp-contributions-talk' )->text()
+               );
 
                if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $username ) ) ) {
-                       if ( $this->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+                       if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
                                if ( $target->isBlocked() && $target->getBlock()->getType() != Block::TYPE_AUTO ) {
-                                       $tools[] = Linker::linkKnown( # Change block link
+                                       $tools['block'] = $linkRenderer->makeKnownLink( # Change block link
                                                SpecialPage::getTitleFor( 'Block', $username ),
-                                               $this->msg( 'change-blocklink' )->escaped()
+                                               $sp->msg( 'change-blocklink' )->text()
                                        );
-                                       $tools[] = Linker::linkKnown( # Unblock link
+                                       $tools['unblock'] = $linkRenderer->makeKnownLink( # Unblock link
                                                SpecialPage::getTitleFor( 'Unblock', $username ),
-                                               $this->msg( 'unblocklink' )->escaped()
+                                               $sp->msg( 'unblocklink' )->text()
                                        );
                                } else { # User is not blocked
-                                       $tools[] = Linker::linkKnown( # Block link
+                                       $tools['block'] = $linkRenderer->makeKnownLink( # Block link
                                                SpecialPage::getTitleFor( 'Block', $username ),
-                                               $this->msg( 'blocklink' )->escaped()
+                                               $sp->msg( 'blocklink' )->text()
                                        );
                                }
                        }
 
                        # Block log link
-                       $tools[] = Linker::linkKnown(
+                       $tools['log-block'] = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Log', 'block' ),
-                               $this->msg( 'sp-contributions-blocklog' )->escaped(),
+                               $sp->msg( 'sp-contributions-blocklog' )->text(),
                                [],
                                [ 'page' => $userpage->getPrefixedText() ]
                        );
 
                        # Suppression log link (bug 59120)
-                       if ( $this->getUser()->isAllowed( 'suppressionlog' ) ) {
-                               $tools[] = Linker::linkKnown(
+                       if ( $sp->getUser()->isAllowed( 'suppressionlog' ) ) {
+                               $tools['log-suppression'] = $linkRenderer->makeKnownLink(
                                        SpecialPage::getTitleFor( 'Log', 'suppress' ),
-                                       $this->msg( 'sp-contributions-suppresslog' )->escaped(),
+                                       $sp->msg( 'sp-contributions-suppresslog' )->text(),
                                        [],
                                        [ 'offender' => $username ]
                                );
                        }
                }
                # Uploads
-               $tools[] = Linker::linkKnown(
+               $tools['uploads'] = $linkRenderer->makeKnownLink(
                        SpecialPage::getTitleFor( 'Listfiles', $username ),
-                       $this->msg( 'sp-contributions-uploads' )->escaped()
+                       $sp->msg( 'sp-contributions-uploads' )->text()
                );
 
                # Other logs link
-               $tools[] = Linker::linkKnown(
+               $tools['logs'] = $linkRenderer->makeKnownLink(
                        SpecialPage::getTitleFor( 'Log', $username ),
-                       $this->msg( 'sp-contributions-logs' )->escaped()
+                       $sp->msg( 'sp-contributions-logs' )->text()
                );
 
                # Add link to deleted user contributions for priviledged users
-               if ( $this->getUser()->isAllowed( 'deletedhistory' ) ) {
-                       $tools[] = Linker::linkKnown(
+               if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) {
+                       $tools['deletedcontribs'] = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'DeletedContributions', $username ),
-                               $this->msg( 'sp-contributions-deleted' )->escaped()
+                               $sp->msg( 'sp-contributions-deleted' )->text()
                        );
                }
 
                # Add a link to change user rights for privileged users
                $userrightsPage = new UserrightsPage();
-               $userrightsPage->setContext( $this->getContext() );
+               $userrightsPage->setContext( $sp->getContext() );
                if ( $userrightsPage->userCanChangeRights( $target ) ) {
-                       $tools[] = Linker::linkKnown(
+                       $tools['userrights'] = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Userrights', $username ),
-                               $this->msg( 'sp-contributions-userrights' )->escaped()
+                               $sp->msg( 'sp-contributions-userrights' )->text()
                        );
                }
 
-               Hooks::run( 'ContributionsToolLinks', [ $id, $userpage, &$tools ] );
+               Hooks::run( 'ContributionsToolLinks', [ $id, $userpage, &$tools, $sp ] );
 
                return $tools;
        }
index 190bf9f..8e168b2 100644 (file)
@@ -129,97 +129,29 @@ class DeletedContributionsPage extends SpecialPage {
         * Generates the subheading with links
         * @param User $userObj User object for the target
         * @return string Appropriately-escaped HTML to be output literally
-        * @todo FIXME: Almost the same as contributionsSub in SpecialContributions.php. Could be combined.
         */
        function getSubTitle( $userObj ) {
+               $linkRenderer = $this->getLinkRenderer();
                if ( $userObj->isAnon() ) {
                        $user = htmlspecialchars( $userObj->getName() );
                } else {
-                       $user = Linker::link( $userObj->getUserPage(), htmlspecialchars( $userObj->getName() ) );
+                       $user = $linkRenderer->makeKnownLink( $userObj->getUserPage(), $userObj->getName() );
                }
                $links = '';
                $nt = $userObj->getUserPage();
-               $id = $userObj->getId();
                $talk = $nt->getTalkPage();
                if ( $talk ) {
-                       # Talk page link
-                       $tools[] = Linker::link( $talk, $this->msg( 'sp-contributions-talk' )->escaped() );
-                       if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
-                               # Block / Change block / Unblock links
-                               if ( $this->getUser()->isAllowed( 'block' ) ) {
-                                       if ( $userObj->isBlocked() && $userObj->getBlock()->getType() !== Block::TYPE_AUTO ) {
-                                               $tools[] = Linker::linkKnown( # Change block link
-                                                       SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
-                                                       $this->msg( 'change-blocklink' )->escaped()
-                                               );
-                                               $tools[] = Linker::linkKnown( # Unblock link
-                                                       SpecialPage::getTitleFor( 'BlockList' ),
-                                                       $this->msg( 'unblocklink' )->escaped(),
-                                                       [],
-                                                       [
-                                                               'action' => 'unblock',
-                                                               'ip' => $nt->getDBkey()
-                                                       ]
-                                               );
-                                       } else {
-                                               # User is not blocked
-                                               $tools[] = Linker::linkKnown( # Block link
-                                                       SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
-                                                       $this->msg( 'blocklink' )->escaped()
-                                               );
-                                       }
-                               }
-                               # Block log link
-                               $tools[] = Linker::linkKnown(
-                                       SpecialPage::getTitleFor( 'Log' ),
-                                       $this->msg( 'sp-contributions-blocklog' )->escaped(),
-                                       [],
-                                       [
-                                               'type' => 'block',
-                                               'page' => $nt->getPrefixedText()
-                                       ]
-                               );
-                               # Suppression log link (bug 59120)
-                               if ( $this->getUser()->isAllowed( 'suppressionlog' ) ) {
-                                       $tools[] = Linker::linkKnown(
-                                               SpecialPage::getTitleFor( 'Log', 'suppress' ),
-                                               $this->msg( 'sp-contributions-suppresslog' )->escaped(),
-                                               [],
-                                               [ 'offender' => $userObj->getName() ]
-                                       );
-                               }
-                       }
+                       $tools = SpecialContributions::getUserLinks( $this, $userObj );
 
-                       # Uploads
-                       $tools[] = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Listfiles', $userObj->getName() ),
-                               $this->msg( 'sp-contributions-uploads' )->escaped()
-                       );
-
-                       # Other logs link
-                       $tools[] = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Log' ),
-                               $this->msg( 'sp-contributions-logs' )->escaped(),
-                               [],
-                               [ 'user' => $nt->getText() ]
-                       );
                        # Link to contributions
-                       $tools[] = Linker::linkKnown(
+                       $insert['contribs'] = $linkRenderer->makeKnownLink(
                                SpecialPage::getTitleFor( 'Contributions', $nt->getDBkey() ),
-                               $this->msg( 'sp-deletedcontributions-contribs' )->escaped()
+                               $this->msg( 'sp-deletedcontributions-contribs' )->text()
                        );
 
-                       # Add a link to change user rights for privileged users
-                       $userrightsPage = new UserrightsPage();
-                       $userrightsPage->setContext( $this->getContext() );
-                       if ( $userrightsPage->userCanChangeRights( $userObj ) ) {
-                               $tools[] = Linker::linkKnown(
-                                       SpecialPage::getTitleFor( 'Userrights', $nt->getDBkey() ),
-                                       $this->msg( 'sp-contributions-userrights' )->escaped()
-                               );
-                       }
-
-                       Hooks::run( 'ContributionsToolLinks', [ $id, $nt, &$tools ] );
+                       // Swap out the deletedcontribs link for our contribs one
+                       $tools = wfArrayInsertAfter( $tools, $insert, 'deletedcontribs' );
+                       unset( $tools['deletedcontribs'] );
 
                        $links = $this->getLanguage()->pipeList( $tools );
 
index 98ff187..077a5d2 100644 (file)
@@ -55,6 +55,7 @@ class SpecialNewFiles extends IncludableSpecialPage {
                $this->opts = $opts;
 
                if ( !$this->including() ) {
+                       $this->setTopText();
                        $this->buildForm();
                }
 
index 718a6dc..d2513ed 100644 (file)
@@ -349,6 +349,7 @@ class SpecialNewpages extends IncludableSpecialPage {
 
                if ( $this->patrollable( $result ) ) {
                        $classes[] = 'not-patrolled';
+                       $this->getOutput()->addModuleStyles( 'mediawiki.page.patrol' );
                }
 
                # Add a class for zero byte pages
index 54b471e..342509c 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup SpecialPage
  */
 
+use MediaWiki\Linker\LinkRenderer;
+
 /**
  * A special page that lists protected pages
  *
@@ -59,7 +61,8 @@ class SpecialProtectedpages extends SpecialPage {
                        $size,
                        $indefOnly,
                        $cascadeOnly,
-                       $noRedirect
+                       $noRedirect,
+                       $this->getLinkRenderer()
                );
 
                $this->getOutput()->addHTML( $this->showOptions(
@@ -279,8 +282,27 @@ class ProtectedPagesPager extends TablePager {
        public $mForm, $mConds;
        private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect;
 
+       /**
+        * @var LinkRenderer
+        */
+       private $linkRenderer;
+
+       /**
+        * @param SpecialProtectedpages $form
+        * @param array $conds
+        * @param $type
+        * @param $level
+        * @param $namespace
+        * @param string $sizetype
+        * @param int $size
+        * @param bool $indefonly
+        * @param bool $cascadeonly
+        * @param bool $noredirect
+        * @param LinkRenderer $linkRenderer
+        */
        function __construct( $form, $conds = [], $type, $level, $namespace,
-               $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false
+               $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false,
+               LinkRenderer $linkRenderer
        ) {
                $this->mForm = $form;
                $this->mConds = $conds;
@@ -292,6 +314,7 @@ class ProtectedPagesPager extends TablePager {
                $this->indefonly = (bool)$indefonly;
                $this->cascadeonly = (bool)$cascadeonly;
                $this->noredirect = (bool)$noredirect;
+               $this->linkRenderer = $linkRenderer;
                parent::__construct( $form->getContext() );
        }
 
@@ -354,8 +377,6 @@ class ProtectedPagesPager extends TablePager {
                /** @var $row object */
                $row = $this->mCurrentRow;
 
-               $formatted = '';
-
                switch ( $field ) {
                        case 'log_timestamp':
                                // when timestamp is null, this is a old protection row
@@ -384,7 +405,7 @@ class ProtectedPagesPager extends TablePager {
                                                )
                                        );
                                } else {
-                                       $formatted = Linker::link( $title );
+                                       $formatted = $this->linkRenderer->makeLink( $title );
                                }
                                if ( !is_null( $row->page_len ) ) {
                                        $formatted .= $this->getLanguage()->getDirMark() .
@@ -401,9 +422,9 @@ class ProtectedPagesPager extends TablePager {
                                        $value, /* User preference timezone */true ) );
                                $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
                                if ( $this->getUser()->isAllowed( 'protect' ) && $title ) {
-                                       $changeProtection = Linker::linkKnown(
+                                       $changeProtection = $this->linkRenderer->makeKnownLink(
                                                $title,
-                                               $this->msg( 'protect_change' )->escaped(),
+                                               $this->msg( 'protect_change' )->text(),
                                                [],
                                                [ 'action' => 'unprotect' ]
                                        );
index 2139949..3ebf5d0 100644 (file)
@@ -128,8 +128,7 @@ class SpecialTags extends SpecialPage {
                        ChangeTags::listExtensionDefinedTags(), true );
 
                // List all defined tags, even if they were never applied
-               $definedTags = array_keys( array_merge(
-                       $this->explicitlyDefinedTags, $this->extensionDefinedTags ) );
+               $definedTags = array_keys( $this->explicitlyDefinedTags + $this->extensionDefinedTags );
 
                // Show header only if there exists atleast one tag
                if ( !$tagStats && !$definedTags ) {
index a0e3096..bfb52e8 100644 (file)
@@ -22,6 +22,9 @@
  * @ingroup Upload
  */
 
+use MediaWiki\Linker\LinkRenderer;
+use MediaWiki\MediaWikiServices;
+
 /**
  * Form for handling uploads and special page.
  *
@@ -261,7 +264,7 @@ class SpecialUpload extends SpecialPage {
                        'texttop' => $this->uploadFormTextTop,
                        'textaftersummary' => $this->uploadFormTextAfterSummary,
                        'destfile' => $this->mDesiredDestName,
-               ], $context );
+               ], $context, $this->getLinkRenderer() );
 
                # Check the token, but only if necessary
                if (
@@ -313,9 +316,9 @@ class SpecialUpload extends SpecialPage {
                if ( $title instanceof Title ) {
                        $count = $title->isDeleted();
                        if ( $count > 0 && $user->isAllowed( 'deletedhistory' ) ) {
-                               $restorelink = Linker::linkKnown(
+                               $restorelink = $this->getLinkRenderer()->makeKnownLink(
                                        SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
-                                       $this->msg( 'restorelink' )->numParams( $count )->escaped()
+                                       $this->msg( 'restorelink' )->numParams( $count )->text()
                                );
                                $link = $this->msg( $user->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted' )
                                        ->rawParams( $restorelink )->parseAsBlock();
@@ -370,6 +373,7 @@ class SpecialUpload extends SpecialPage {
                // Add styles for the warning, reused from the live preview
                $this->getOutput()->addModuleStyles( 'mediawiki.special.upload.styles' );
 
+               $linkRenderer = $this->getLinkRenderer();
                $warningHtml = '<h2>' . $this->msg( 'uploadwarning' )->escaped() . "</h2>\n"
                        . '<div class="mw-destfile-warning"><ul>';
                foreach ( $warnings as $warning => $args ) {
@@ -381,9 +385,9 @@ class SpecialUpload extends SpecialPage {
                        } elseif ( $warning == 'was-deleted' ) {
                                # If the file existed before and was deleted, warn the user of this
                                $ltitle = SpecialPage::getTitleFor( 'Log' );
-                               $llink = Linker::linkKnown(
+                               $llink = $linkRenderer->makeKnownLink(
                                        $ltitle,
-                                       wfMessage( 'deletionlog' )->escaped(),
+                                       wfMessage( 'deletionlog' )->text(),
                                        [],
                                        [
                                                'type' => 'delete',
@@ -833,11 +837,17 @@ class UploadForm extends HTMLForm {
 
        protected $mMaxUploadSize = [];
 
-       public function __construct( array $options = [], IContextSource $context = null ) {
+       public function __construct( array $options = [], IContextSource $context = null,
+               LinkRenderer $linkRenderer = null
+       ) {
                if ( $context instanceof IContextSource ) {
                        $this->setContext( $context );
                }
 
+               if ( !$linkRenderer ) {
+                       $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
+               }
+
                $this->mWatch = !empty( $options['watch'] );
                $this->mForReUpload = !empty( $options['forreupload'] );
                $this->mSessionKey = isset( $options['sessionkey'] ) ? $options['sessionkey'] : '';
@@ -862,12 +872,12 @@ class UploadForm extends HTMLForm {
                Hooks::run( 'UploadFormInitDescriptor', [ &$descriptor ] );
                parent::__construct( $descriptor, $context, 'upload' );
 
-               # Add a link to edit MediaWik:Licenses
+               # Add a link to edit MediaWiki:Licenses
                if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                       $this->getOutput()->addModuleStyles( 'mediawiki.special' );
-                       $licensesLink = Linker::linkKnown(
+                       $this->getOutput()->addModuleStyles( 'mediawiki.special.upload.styles' );
+                       $licensesLink = $linkRenderer->makeKnownLink(
                                $this->msg( 'licenses' )->inContentLanguage()->getTitle(),
-                               $this->msg( 'licenses-edit' )->escaped(),
+                               $this->msg( 'licenses-edit' )->text(),
                                [],
                                [ 'action' => 'edit' ]
                        );
index f84e038..666f3f9 100644 (file)
@@ -464,20 +464,23 @@ class BalanceElement {
         * by the HTML serialization specification, and replace this node
         * in its parent by that string.
         *
+        * @param array $config Balancer configuration; see Balancer::__construct().
+        *
         * @see __toString()
         */
-       public function flatten( $tidyCompat = false ) {
+       public function flatten( array $config ) {
                Assert::parameter( $this->parent !== null, '$this', 'must be a child' );
                Assert::parameter( $this->parent !== 'flat', '$this', 'already flat' );
                $idx = array_search( $this, $this->parent->children, true );
                Assert::parameter(
                        $idx !== false, '$this', 'must be a child of its parent'
                );
+               $tidyCompat = $config['tidyCompat'];
                if ( $tidyCompat ) {
                        $blank = true;
                        foreach ( $this->children as $elt ) {
                                if ( !is_string( $elt ) ) {
-                                       $elt = $elt->flatten( $tidyCompat );
+                                       $elt = $elt->flatten( $config );
                                }
                                if ( $blank && preg_match( '/[^\t\n\f\r ]/', $elt ) ) {
                                        $blank = false;
@@ -661,9 +664,11 @@ class BalanceStack implements IteratorAggregate {
         */
        public $fosterParentMode = false;
        /**
-        * Tidy compatibility mode, determines behavior of body/blockquote
+        * Configuration options governing flattening.
+        * @var array $config
+        * @see Balancer::__construct()
         */
-       public $tidyCompat = false;
+       private $config;
        /**
         * Reference to the current element
         */
@@ -672,14 +677,16 @@ class BalanceStack implements IteratorAggregate {
        /**
         * Create a new BalanceStack with a single BalanceElement on it,
         * representing the root &lt;html&gt; node.
+        * @param array $config Balancer configuration; see Balancer::_construct().
         */
-       public function __construct() {
+       public function __construct( array $config ) {
                // always a root <html> element on the stack
                array_push(
                        $this->elements,
                        new BalanceElement( BalanceSets::HTML_NAMESPACE, 'html', [] )
                );
                $this->currentNode = $this->elements[0];
+               $this->config = $config;
        }
 
        /**
@@ -692,7 +699,7 @@ class BalanceStack implements IteratorAggregate {
                $out = '';
                foreach ( $this->elements[0]->children as $elt ) {
                        $out .= is_string( $elt ) ? $elt :
-                               $elt->flatten( $this->tidyCompat );
+                               $elt->flatten( $this->config );
                }
                return $out;
        }
@@ -719,7 +726,7 @@ class BalanceStack implements IteratorAggregate {
                ) {
                        $this->fosterParent( $value );
                } elseif (
-                       $this->tidyCompat && !$isComment &&
+                       $this->config['tidyCompat'] && !$isComment &&
                        $this->currentNode->isA( BalanceSets::$tidyPWrapSet )
                ) {
                        $this->insertHTMLELement( 'mw:p-wrap', [] );
@@ -970,7 +977,7 @@ class BalanceStack implements IteratorAggregate {
                        $this->currentNode = null;
                }
                if ( !$elt->isHtmlNamed( 'mw:p-wrap' ) ) {
-                       $elt->flatten( $this->tidyCompat );
+                       $elt->flatten( $this->config );
                }
        }
 
@@ -1044,7 +1051,7 @@ class BalanceStack implements IteratorAggregate {
                        // otherwise, it will eventually serialize when the parent
                        // is serialized, we just hold onto the memory for its
                        // tree of objects a little longer.
-                       $elt->flatten( $this->tidyCompat );
+                       $elt->flatten( $this->config );
                }
                Assert::postcondition(
                        array_search( $elt, $this->elements, true ) === false,
@@ -1094,7 +1101,7 @@ class BalanceStack implements IteratorAggregate {
                        $parent = $this->elements[0]; // the `html` element.
                }
 
-               if ( $this->tidyCompat ) {
+               if ( $this->config['tidyCompat'] ) {
                        if ( is_string( $elt ) ) {
                                // We're fostering text: do we need a p-wrapper?
                                if ( $parent->isA( BalanceSets::$tidyPWrapSet ) ) {
@@ -1776,8 +1783,8 @@ class Balancer {
        private $afe;
        private $stack;
        private $strict;
-       private $tidyCompat;
        private $allowComments;
+       private $config;
 
        private $textIntegrationMode;
        private $pendingTableText;
@@ -1844,7 +1851,7 @@ class Balancer {
         *         false to get a bit more performance.
         */
        public function __construct( array $config = [] ) {
-               $config = $config + [
+               $this->config = $config = $config + [
                        'strict' => false,
                        'allowedHtmlElements' => null,
                        'tidyCompat' => false,
@@ -1852,7 +1859,6 @@ class Balancer {
                ];
                $this->allowedHtmlElements = $config['allowedHtmlElements'];
                $this->strict = $config['strict'];
-               $this->tidyCompat = $config['tidyCompat'];
                $this->allowComments = $config['allowComments'];
                if ( $this->allowedHtmlElements !== null ) {
                        // Sanity check!
@@ -1892,8 +1898,7 @@ class Balancer {
                $this->parseMode = 'inBodyMode';
                $this->bitsIterator = new ExplodeIterator( '<', $text );
                $this->afe = new BalanceActiveFormattingElements();
-               $this->stack = new BalanceStack();
-               $this->stack->tidyCompat = $this->tidyCompat;
+               $this->stack = new BalanceStack( $this->config );
                $this->processingCallback = $processingCallback;
                $this->processingArgs = $processingArgs;
 
index c46836b..181ff46 100644 (file)
@@ -1387,8 +1387,6 @@ class User implements IDBAccessObject {
         */
        protected function loadFromUserObject( $user ) {
                $user->load();
-               $user->loadGroups();
-               $user->loadOptions();
                foreach ( self::$mCacheVars as $var ) {
                        $this->$var = $user->$var;
                }
@@ -5161,12 +5159,20 @@ class User implements IDBAccessObject {
                                // If we actually have a slave server, the count is
                                // at least one behind because the current transaction
                                // has not been committed and replicated.
-                               $this->initEditCount( 1 );
+                               $this->mEditCount = $this->initEditCount( 1 );
                        } else {
                                // But if DB_SLAVE is selecting the master, then the
                                // count we just read includes the revision that was
                                // just added in the working transaction.
-                               $this->initEditCount();
+                               $this->mEditCount = $this->initEditCount();
+                       }
+               } else {
+                       if ( $this->mEditCount === null ) {
+                               $this->getEditCount();
+                               $dbr = wfGetDB( DB_SLAVE );
+                               $this->mEditCount += ( $dbr !== $dbw ) ? 1 : 0;
+                       } else {
+                               $this->mEditCount++;
                        }
                }
                // Edit count in user cache too
index de52cd9..2ebc9ed 100644 (file)
@@ -229,7 +229,7 @@ EOD;
 
                $fileinfo = $this->getTargetFileinfo();
 
-               if ( $fileinfo['type'] === AutoloadGenerator::FILETYPE_JSON ) {
+               if ( $fileinfo['type'] === self::FILETYPE_JSON ) {
                        return $this->generateJsonAutoload( $fileinfo['filename'] );
                } else {
                        return $this->generatePHPAutoload( $commandName, $fileinfo['filename'] );
@@ -247,17 +247,17 @@ EOD;
        public function getTargetFileinfo() {
                $fileinfo = [
                        'filename' => $this->basepath . '/autoload.php',
-                       'type' => AutoloadGenerator::FILETYPE_PHP
+                       'type' => self::FILETYPE_PHP
                ];
                if ( file_exists( $this->basepath . '/extension.json' ) ) {
                        $fileinfo = [
                                'filename' => $this->basepath . '/extension.json',
-                               'type' => AutoloadGenerator::FILETYPE_JSON
+                               'type' => self::FILETYPE_JSON
                        ];
                } elseif ( file_exists( $this->basepath . '/skin.json' ) ) {
                        $fileinfo = [
                                'filename' => $this->basepath . '/skin.json',
-                               'type' => AutoloadGenerator::FILETYPE_JSON
+                               'type' => self::FILETYPE_JSON
                        ];
                }
 
index c7bd395..9fc2431 100644 (file)
@@ -217,7 +217,7 @@ class BatchRowIterator implements RecursiveIterator {
         * `=` conditions while the final key uses a `>` condition
         *
         * Example output:
-        *        array( '( foo = 42 AND bar > 7 ) OR ( foo > 42 )' )
+        *        [ '( foo = 42 AND bar > 7 ) OR ( foo > 42 )' ]
         *
         * @return array The SQL conditions necessary to select the next set
         *  of rows in the batched query
index f3d72e8..dd3ea1b 100644 (file)
@@ -324,7 +324,7 @@ class MWCryptRand {
                                ": Falling back to using a pseudo random state to generate randomness.\n" );
                }
                while ( strlen( $buffer ) < $bytes ) {
-                       $buffer .= MWCryptHash::hmac( $this->randomState(), mt_rand() );
+                       $buffer .= MWCryptHash::hmac( $this->randomState(), strval( mt_rand() ) );
                        // This code is never really cryptographically strong, if we use it
                        // at all, then set strong to false.
                        $this->strong = false;
index 43acd83..9b4447b 100644 (file)
        "log-action-filter-block-reblock": "منع التعديل",
        "log-action-filter-block-unblock": "رفع المنع",
        "log-action-filter-delete-delete": "حذف الصفحات",
+       "log-action-filter-delete-restore": "استرجاع الصفحات",
        "log-action-filter-delete-event": "حذف السجلات",
        "log-action-filter-delete-revision": "حذف المراجعات",
        "log-action-filter-import-interwiki": "استيراد عابر للويكي",
        "authprovider-resetpass-skip-label": "تخطى",
        "authprovider-resetpass-skip-help": "تخطي إعادة تعيين كلمة المرور",
        "cannotauth-not-allowed-title": "الإذن مرفوض",
+       "changecredentials": "تغيير الاعتماد",
+       "changecredentials-submit": "تغيير الاعتماد",
+       "removecredentials": "إزالة الاعتماد",
+       "removecredentials-submit": "إزالة الاعتماد",
        "credentialsform-account": "اسم الحساب:",
        "cannotlink-no-provider-title": "لا توجد حسابات قابلة للربط",
        "cannotlink-no-provider": "لا توجد حسابات قابلة للربط",
index 641156e..84abebd 100644 (file)
        "wlshowtime": "Күрһәтеү өсөн ваҡыт арауығы",
        "wlshowhideminor": "Әҙ генә үҙгәрештәр",
        "wlshowhidebots": "Бот",
-       "wlshowhideliu": "Ñ\82анÑ\8bлÒ\93ан Ò¡Ñ\83лланÑ\8bÑ\83Ñ\81Ñ\8bлаÑ\80",
+       "wlshowhideliu": "Ñ\82еÑ\80кÓ\99лгÓ\99н Ò¡Ð°Ñ\82наÑ\88Ñ\8bÑ\83Ñ\81Ñ\8b",
        "wlshowhideanons": "Аноним ҡулланыусылар",
        "wlshowhidepatr": "Тикшерелгән төҙәтеүҙәр",
        "wlshowhidemine": "Минең үҙгәртеүҙәр",
        "logentry-delete-delete": "$1 $3 битен {{GENDER:$2|юйҙы}}",
        "logentry-delete-restore": "$1 $3 битен {{GENDER:$2|тергеҙҙе}}",
        "logentry-delete-event": "$1 журналдағы {{PLURAL:$5|яҙманы}} $3: $4 {{GENDER:$2|үҙгәртте}}",
-       "logentry-delete-revision": "$1 {{PLURAL:$5|$5 версияның}} күренеүсәнлеген   $3: $4 битендә {{GENDER:$2|үҙгәртте}}",
+       "logentry-delete-revision": "Ҡатнашыусы $1 $3: $4 битенең {{PLURAL:$5|$5 версиялары|$5 версияларының|1=версиялар}} күренешен {{GENDER:$2|үҙгәртте|үҙгәртте}}.",
        "logentry-delete-event-legacy": "$1  $3 журналы яҙмаларының күренеүсәнлеген {{GENDER:$2|үҙгәртте}}",
        "logentry-delete-revision-legacy": "$1  $3 битендә версияларҙың күренеүсәнлеген {{GENDER:$2|үҙгәртте}}",
        "logentry-suppress-delete": "$1 $3 битен {{GENDER:$2|баҫырылдырҙы}}",
index 3f68674..a5c5a14 100644 (file)
        "watchnologin": "আপনি প্রবেশ করেননি",
        "addwatch": "নজরতালিকায় যোগ করো",
        "addedwatchtext": "\"[[:$1]]\" ও এর আলোচনা পাতাটি আপনার [[Special:Watchlist|নজরতালিকাতে]] যোগ করা হয়েছে।",
+       "addedwatchtext-talk": "\"[[:$1]]\" ও এর সাথে জড়িত পাতা আপনার [[Special:Watchlist|নজরতালিকাতে]] যোগ করা হয়েছে।",
        "addedwatchtext-short": "\"$1\" পাতাটি আপনার নজরতালিকায় যোগ করা হয়েছে।",
        "removewatch": "নজরতালিকা থেকে অপসারণ",
        "removedwatchtext": "\"[[:$1]]\" ও এর আলোচনা পাতাটি আপনার [[Special:Watchlist|নজরতালিকা]] থেকে সরানো হয়েছে।",
+       "removedwatchtext-talk": "\"[[:$1]]\" ও এর সাথে জড়িত পাতা আপনার [[Special:Watchlist|নজরতালিকা]] থেকে সরানো হয়েছে।",
        "removedwatchtext-short": "\"$1\" পাতাটি আপনার নজরতালিকা থেকে সরিয়ে নেয়া হয়েছে।",
        "watch": "নজর রাখুন",
        "watchthispage": "নজরে রাখুন",
index 0e238f1..86a7951 100644 (file)
        "content-model-css": "CSS",
        "content-json-empty-object": "Prázdný objekt",
        "content-json-empty-array": "Prázdné pole",
-       "deprecated-self-close-category": "Stránky s neplatnými sebeuzavírajícími se HTML značkami",
-       "deprecated-self-close-category-desc": "Stránka obsahuje neplatné sebeuzavírající se HTML značky, například <code>&lt;b/></code> nebo <code>&lt;span/></code>. Jejich chování se v zájmu konzistence se specifikací HTML5 brzy změní, proto je jejich použití ve wikitextu zastaralé.",
+       "deprecated-self-close-category": "Stránky s neplatnými sebeuzavírajícími HTML značkami",
+       "deprecated-self-close-category-desc": "Stránka obsahuje neplatné sebeuzavírající HTML značky, například <code>&lt;b/></code> nebo <code>&lt;span/></code>. Jejich chování se v zájmu konzistence se specifikací HTML5 brzy změní, proto je jejich použití ve wikitextu zastaralé.",
        "duplicate-args-warning": "<strong>Upozornění:</strong> Stránka [[:$1]] volá [[:$2]] s více než jednou hodnotou parametru „$3“. Použije se jen poslední uvedená hodnota.",
        "duplicate-args-category": "Stránky s duplicitními argumenty ve voláních šablon",
        "duplicate-args-category-desc": "Stránka obsahuje volání šablony, které používá duplicitní argumenty, např. <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> nebo <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "watchnologin": "Nejste přihlášen(a)",
        "addwatch": "Přidat do sledovaných stránek",
        "addedwatchtext": "Stránka „[[:$1]]“ a její diskusní stránka byly přidány mezi [[Special:Watchlist|stránky, které sledujete]].",
+       "addedwatchtext-talk": "„[[:$1]]“ a související stránka byly přidány mezi [[Special:Watchlist|stránky, které sledujete]].",
        "addedwatchtext-short": "Stránka „$1“ byla přidána mezi stránky, které sledujete.",
        "removewatch": "Vyřadit ze sledovaných stránek",
-       "removedwatchtext": "Stránka „[[:$1]]“ a její diskusní stránka byly vyřazeny z vašeho [[Special:Watchlist|seznamu sledovaných stránek]].",
+       "removedwatchtext": "Stránka „[[:$1]]“ a její diskusní stránka byly vyřazeny ze [[Special:Watchlist|stránek, které sledujete]]",
+       "removedwatchtext-talk": "„[[:$1]]“ a související stránka byly vyřazeny ze [[Special:Watchlist|stránek, které sledujete]].",
        "removedwatchtext-short": "Stránka „$1“ byla vyřazena z vašeho seznamu sledovaných stránek.",
        "watch": "Sledovat",
        "watchthispage": "Sledovat tuto stránku",
index 415559a..60e8456 100644 (file)
        "watchnologin": "Du bist nicht angemeldet",
        "addwatch": "Zur Beobachtungsliste hinzufügen",
        "addedwatchtext": "„[[:$1]]“ und die Diskussionsseite wurden zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.",
+       "addedwatchtext-talk": "„[[:$1]]“ und ihre dazugehörige Seite wurden zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.",
        "addedwatchtext-short": "Die Seite „$1“ wurde zu deiner Beobachtungsliste hinzugefügt.",
        "removewatch": "Von der Beobachtungsliste entfernen",
        "removedwatchtext": "„[[:$1]]“ und die Diskussionsseite wurden von deiner [[Special:Watchlist|Beobachtungsliste]] entfernt.",
+       "removedwatchtext-talk": "„[[:$1]]“ und ihre dazugehörige Seite wurden von deiner [[Special:Watchlist|Beobachtungsliste]] entfernt.",
        "removedwatchtext-short": "Die Seite „$1“ wurde von deiner Beobachtungsliste entfernt.",
        "watch": "Beobachten",
        "watchthispage": "Seite beobachten",
index a08968f..ce5adea 100644 (file)
        "cannotdelete-title": "Şıma nêşenê pela \"$1\" besterê",
        "delete-hook-aborted": "Esterıtışi terefê çengeli ra ibtal bi.\nQet tesrih beyan nêbi.",
        "no-null-revision": "Qandé \"$1\" zew rewizyono newe névıraziya.",
-       "badtitle": "Sernameo xırabın",
+       "badtitle": "Sernameyo xırabın",
        "badtitletext": "Sernameyê pela ke şıma waşt, nêvêrd, vengo ya zi zıwano miyanêno ğelet gırêdaye ya zi sernameyê wiki.\nBeno ke, tede yew ya zi zêdê işareti estê ke sernameyan de nêxebetiyenê.",
        "perfcached": "Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de",
        "perfcachedts": "Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticey cı}} debyayo de",
        "action-move": "ena pele bere",
        "action-move-subpages": "ena pele, u pelanê daê bınênan bere",
        "action-move-rootuserpages": "pelanê karberiyê bıngeyan bere",
+       "action-move-categorypages": "Pera kategoriyer ber",
        "action-movefile": "ena dosya bere",
        "action-upload": "ena dosya bar ke",
        "action-reupload": "dosyayê ke database de esto ser ey binuse",
        "action-viewmywatchlist": "Listeyseyran de xo bıvin",
        "action-viewmyprivateinfo": "Xısusi tercihane xo bıvin",
        "action-editmyprivateinfo": "Xısusi malumate xo bıvurne",
+       "action-editcontentmodel": "Zerrekê modela yu perer timar ke",
+       "action-managechangetags": "Vıraz u etiketa aktiv (me) ke",
+       "action-applychangetags": "Vurnayışana piya etiket kerdışi zi dezge fi",
+       "action-purge": "Ane perer newe ke",
        "nchanges": "$1 {{PLURAL:$1|fın vurna|fıni vurna}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ra yok wazino}}",
        "enhancedrc-history": "tarix",
        "checkbox-select": "Weçinaye: $1",
        "checkbox-all": "Pêro",
        "checkbox-none": "Temam",
-       "checkbox-invert": "Doç kerdış",
+       "checkbox-invert": "Rageyre",
        "allpages": "Peli pêro",
        "nextpage": "Pela badê cû ($1)",
        "prevpage": "Pela verêne ($1)",
        "allpagesfrom": "Pera liste kerdışi bıasne:",
        "allpagesto": "Pelanê ke be ena herfe qediyenê bımocne:",
-       "allarticles": "Wesiqey pêro",
+       "allarticles": "Peli pêro",
        "allinnamespace": "Peli pênro ( $1 cayênameyî)",
        "allpagessubmit": "Şo",
        "allpagesprefix": "herfê ke şıma tiya de nuşti, pê ney herfan pelê ke destpêkenê liste ker:",
        "whatlinkshere-hidetrans": "Açarnayışê $1",
        "whatlinkshere-hidelinks": "Gıreyê $1",
        "whatlinkshere-hideimages": "Gıreyê dosya $1",
-       "whatlinkshere-filters": "Avrêci",
+       "whatlinkshere-filters": "Parzûn",
        "whatlinkshere-submit": "Şo",
        "autoblockid": "Otomatik vındarnayış #$1",
        "block": "Karberi vındarne",
        "svg-long-desc-animated": "SVG dosya, nominalin $1 × $2 piksela, ebatê dosya: $3",
        "svg-long-error": "Nêmeqbul dosyaya SVG'i: $1",
        "show-big-image": "Dosyaya oricinale",
-       "show-big-image-preview": "Verqayd dergiya: $1'i.",
+       "show-big-image-preview": "Verqaytê dergiya: $1.",
        "show-big-image-other": "Zewmi{{PLURAL:$2|Vılêşnayış|Vılêşnayışê}}: $1.",
        "show-big-image-size": "$1 × $2 piksel",
        "file-info-gif-looped": "viyariye biyo",
        "exif-planarconfiguration": "Rezeyê datayi",
        "exif-ycbcrsubsampling": "Subsampleyi ebatê Y heta C",
        "exif-ycbcrpositioning": "pozisyonê Y u C",
-       "exif-xresolution": "Rezulasyanê veriniye",
+       "exif-xresolution": "Qerarê verıniye",
        "exif-yresolution": "Rezulasyanê derganiye",
        "exif-stripoffsets": "Cayê melumatê resımi",
        "exif-rowsperstrip": "Yew reze de teneyê dizeyi",
        "exif-referenceblackwhite": "Çiftyê siya u sipe değerê referansi",
        "exif-datetime": "Zeman u tarixê vurnayişê dosyayi",
        "exif-imagedescription": "Serê resimi",
-       "exif-make": "Viraştoğê kamera",
-       "exif-model": "Modelê kamerayi",
+       "exif-make": "Vıraştoğê kamera",
+       "exif-model": "Modelê kamera",
        "exif-software": "Software ke hebitiyeno",
        "exif-artist": "Nuştoğ",
        "exif-copyright": "Wahirê copyrighti",
        "autosumm-replace": "Maqale pê '$1' vuriya",
        "autoredircomment": "heteneya [[$1]]",
        "autosumm-new": "Pela vıraziyê, '$1' bıvinê",
+       "autosumm-newblank": "Pera veng vıraziyê",
        "size-bytes": "$1 {{PLURAL:$1|bayt|bayti}}",
        "size-kilobytes": "$1 KB",
        "size-megabytes": "$1 MB",
        "watchlistedit-raw-done": "Listeyê tuyê seyrkerdişi rocaniye biyo",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 sername kerd|$1 sernamey kerdi}} cı:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 sername dard|$1 sernamey dardi}} we:",
+       "watchlistedit-clear-title": "Lista serykerdışê pak kerê",
+       "watchlistedit-clear-legend": "Lista serykerdışê pak kerê",
+       "watchlistedit-clear-explain": "Listeya serykerdış da şıma dı sernamey pêro besteryay",
        "watchlistedit-clear-titles": "Sernamey:",
        "watchlisttools-view": "Vurnayışanê elaqedaran bıvêne",
        "watchlisttools-edit": "Lista seyrkerdışi bıvêne û bıvurne",
index 30421d7..7558a77 100644 (file)
        "prefs-reset-intro": "तम ये पृष्ठलाई आफनो अभिरुचीहरू साइट पूर्वावस्थामी फर्काउनत फर्काउन प्रयोग गद्दु सकन्छौ । तै पाछा ये लाई रद्द गद्दु सकन्छौ ।",
        "prefs-emailconfirm-label": "इ-मेल एकिन प्रक्रिया:",
        "youremail": "ईमेल",
-       "username": "{{लिंग:$1|प्रयोगकर्ता नाम}}:",
-       "prefs-memberingroups": "निम्न {{बहुबचन:$1|समूह | समूहहरू}}को {{लिंग:$2|सदस्य}} :",
+       "username": "{{GENDER:$1|प्रयोगकर्ता नाम}}:",
+       "prefs-memberingroups": "निम्न {{PLURAL:$1|समूह|समूहहरू}}को {{GENDER:$2|सदस्य}} :",
        "prefs-registration": "दर्ता समय:",
        "yourrealname": "वास्तविक नाम:",
        "yourlanguage": "भाषा",
        "userrights": "प्रयोगकर्ता अधिकार व्यवस्थापन",
        "userrights-lookup-user": "प्रयोगकर्ता समूह व्यवस्थापन गर",
        "userrights-user-editname": "प्रयोगकर्ता नाम दिय:",
-       "editusergroup": "सम्पादन{{लिंग:$1}}समूहहरु",
+       "editusergroup": "{{GENDER:$1|प्रयोगकर्ता}}समूहहरू सम्पादन",
        "userrights-editusergroup": "प्रयोगकर्ता समूह सम्पादन गर",
-       "saveusergroups": "सुरक्षित{{लिंग:$1}}समूहहरु",
+       "saveusergroups": "सुरक्षित {{GENDER:$1|प्रयोगकर्ता}} समूहहरू",
        "userrights-groupsmember": "को सदस्य:",
        "userrights-groupsmember-auto": "अंतर्निहित सदस्य:",
        "userrights-reason": "कारण:",
index bc7d78d..cddc30e 100644 (file)
        "watchnologin": "Not logged in",
        "addwatch": "Add to watchlist",
        "addedwatchtext": "\"[[:$1]]\" and its discussion page have been added to your [[Special:Watchlist|watchlist]].",
+       "addedwatchtext-talk": "\"[[:$1]]\" and its associated page have been added to your [[Special:Watchlist|watchlist]].",
        "addedwatchtext-short": "The page \"$1\" has been added to your watchlist.",
        "removewatch": "Remove from watchlist",
        "removedwatchtext": "\"[[:$1]]\" and its discussion page have been removed from your [[Special:Watchlist|watchlist]].",
+       "removedwatchtext-talk": "\"[[:$1]]\" and its associated page have been removed from your [[Special:Watchlist|watchlist]].",
        "removedwatchtext-short": "The page \"$1\" has been removed from your watchlist.",
        "watch": "Watch",
        "watchthispage": "Watch this page",
index 4975329..e6a2368 100644 (file)
        "badfilename": "Dosiernomo estis ŝanĝita al \"$1\".",
        "filetype-mime-mismatch": "Dosiera sufikso \".$1\" ne kongruas la MIME-tipon de la dosiero ($2).",
        "filetype-badmime": "Dosieroj de la MIME-tipo \"$1\" ne estas permesitaj por alŝutado.",
-       "filetype-bad-ie-mime": "Ne povas alŝuti ĉi tiun dosieron, ĉar Interreta Esplorilo detektus ĝin kiel \"$1\", kiu estas malpermesita kaj eble danĝera dosiertipo.",
+       "filetype-bad-ie-mime": "Ne povas alŝuti ĉi tiun dosieron, ĉar Internet Explorer detektus ĝin kiel dosieron “$1”, kiu estas malpermesita kaj eble danĝera dosiertipo.",
        "filetype-unwanted-type": "'''\".$1\"''' estas nevolata dosiero-tipo. {{PLURAL:$3|Preferata dosiero-tipo|Prefereataj dosiero-tipoj}} estas $2.",
        "filetype-banned-type": "'''\".$1\"''' ne estas {{PLURAL:$4|permesita dosiero-tipo|permesitaj dosiero-tipoj}}. {{PLURAL:$3|Permesita dosiero-tipo|Permesitaj dosiero-tipoj}} estas $2.",
        "filetype-missing": "Ĉi tiu dosiero ne inkluzivas finaĵon de dosiernomo (kiel \".jpg\").",
        "authmanager-provider-password-domain": "Aŭtentikigo per pasvorto kaj domajno",
        "authmanager-provider-temporarypassword": "Provizora pasvorto:",
        "authprovider-confirmlink-message": "Laŭ viaj lastatempaj provoj de ensalutado, la sekvantaj kontoj povas esti ligita al via vikia konto. Ligi ilin ebligas ensalutadon per tiuj kontoj. Bonvolu elekti tiun, kiun ligendus.",
-       "authprovider-confirmlink-request-label": "Kontoj kiuj devus esti ligita",
+       "authprovider-confirmlink-request-label": "Kontoj, kiuj devas esti ligita",
        "authprovider-confirmlink-success-line": "$1: Ligita sukcese.",
        "authprovider-confirmlink-failed": "Ligado de konto ne plene sukcesis: $1",
        "authprovider-confirmlink-ok-help": "Kontinui post montrado de mesaĝoj pri malsukceso de ligado.",
index bf01b1f..a9facb7 100644 (file)
        "tagline": "De {{SITENAME}}",
        "help": "Ayuda",
        "search": "Buscar",
-       "search-ignored-headings": " #<!-- deje esta línea tal y como está --> <pre>\n# Títulos que serán ignorados por la búsqueda.\n# Los cambios estarán en vigor tan pronto como la página con el título esté indexada.\n# Puede forzar la página a ser reindexada haciendo una edición nula.\n# La sintaxis es la siguiente: .N!\n#   * Todo, desde un carácter \"#\" al final de la línea es un comentario\n#   * Todas las líneas en blanco es un título exacto para ignorar, caso y cualquier \nReferencia\nEnlaces externos\nVéase también\n #</pre> <!-- deje esta línea tal y como está -->",
+       "search-ignored-headings": " #<!-- dejar esta línea exactamente como está --> <pre>\n# Títulos que serán ignorados por la búsqueda.\n# Los cambios estarán en vigor tan pronto como la página con el título esté indexada.\n# Puedes forzar la reindexación de una página haciendo una edición nula.\n# La sintaxis es la siguiente:\n#   * Todo lo que sigue a un carácter \"#\" hasta el final de la línea, es un comentario.\n#   * Todas las líneas que no están en blanco son los títulos exactos que se ignorarán (diferenciando mayúsculas de minúsculas).\nReferencias\nEnlaces externos\nVéase también\n #</pre> <!-- dejar esta línea exactamente como está -->",
        "searchbutton": "Buscar",
        "go": "Ir",
        "searcharticle": "Ir",
        "action-applychangetags": "aplicar etiquetas junto con los cambios",
        "action-changetags": "agregar y quitar etiquetas arbitrarias a revisiones individuales y entradas del registro",
        "action-deletechangetags": "eliminar etiquetas de la base de datos",
+       "action-purge": "purgar esta página",
        "nchanges": "$1 {{PLURAL:$1|cambio|cambios}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|desde la última visita}}",
        "enhancedrc-history": "historial",
index b21245b..a6108cd 100644 (file)
        "logentry-move-move_redir": "$1 {{GENDER:$2|wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketaren gainetik",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:wikilariak}} «$3» orria «$4» izenera aldatu du, birbideratze bat gainidatzita, birbideratzerik utzi gabe",
        "logentry-patrol-patrol": "$1(e)k $3 orrialdearen $4 berrikuspena patruilatutzat {{GENDER:$2|markatu}} du",
-       "logentry-newusers-newusers": "$1 erabiltzaile kontua sortu da",
+       "logentry-newusers-newusers": "$1 erabiltzaile kontua {{GENDER:$2|sortu da}}",
        "logentry-newusers-create": "$1 erabiltzaile kontua {{GENDER:$2|sortu da}}",
        "logentry-newusers-create2": "$1 wikilariak $3 erabiltzaile kontua sortu du",
+       "logentry-newusers-byemail": "$1(e)k $3 erabiltzaile kontua {{GENDER:$2|sortu du}} eta pasahitza emailez bidali da",
        "logentry-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}",
        "log-name-tag": "Etiketen erregistroa",
        "rightsnone": "(bat ere ez)",
        "log-action-filter-block-block": "Blokeatu",
        "log-action-filter-block-reblock": "Blokeoa aldatu",
        "log-action-filter-block-unblock": "blokeoa kendu",
+       "authmanager-userdoesnotexist": "\"$1\" erabiltzaile kontua ez dago erregistratua.",
        "authmanager-email-label": "Emaila",
        "authmanager-email-help": "Helbide elektronikoa",
        "authmanager-realname-label": "Benetako izena",
index d789cf3..739dd08 100644 (file)
        "protect-default": "همهٔ کاربرها",
        "protect-fallback": "فقط به کاربرهایی که دسترسی «$1» دارند، اجازه داده می‌شود",
        "protect-level-autoconfirmed": "تنها کاربران تأییدشده",
-       "protect-level-sysop": "فقط مدیران",
+       "protect-level-sysop": "تنها مدیران",
        "protect-summary-cascade": "آبشاری",
        "protect-expiring": "زمان سرآمدن $1 (UTC)",
        "protect-expiring-local": "منقضی $1",
index 58f56e8..cd4f7e2 100644 (file)
        "tagline": "De {{SITENAME}}",
        "help": "Aide",
        "search": "Rechercher",
-       "search-ignored-headings": " #<!-- laisser cette ligne comme telle --> <pre>\n# Titres de sections qui seront ignorés par la recherche\n# Les changements effectués ici prennent effet dès lors que la page avec le titre est indexée.\n# Vous pouvez forcer la réindexation de la page en effectuant une modification vide\n# La syntaxe est la suivante :\n#   * Toute ligne précédée d’un « # » est un commentaire\n#   * Toute ligne non-vide est le titre exact à ignorer, casse comprise\nRéférences\nLiens externes\nVoir aussi\n #</pre> <!-- laisser cette ligne comme telle -->",
+       "search-ignored-headings": " #<!-- laisser cette ligne comme telle --> <pre>\n# Titres des sections qui seront ignorés par la recherche\n# Les changements effectués ici prennent effet dès lors que la page avec le titre est indexée.\n# Vous pouvez forcer la réindexation de la page en effectuant une modification vide\n# La syntaxe est la suivante :\n#   * Toute ligne précédée d’un « # » est un commentaire\n#   * Toute ligne non-vide est le titre exact à ignorer, casse comprise\nRéférences\nLiens externes\nVoir aussi\n #</pre> <!-- laisser cette ligne comme telle -->",
        "searchbutton": "Rechercher",
        "go": "Consulter",
        "searcharticle": "Lire",
        "missing-article": "La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « $1 » $2.\n\nGénéralement, cela survient en suivant un lien vers un diff périmé ou vers l’historique d’une page supprimée.\n\nSi ce n’est pas le cas, il peut s’agir d’une anomalie dans le programme.\nVeuillez la signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer l’URL de la page.",
        "missingarticle-rev": "(numéro de version : $1)",
        "missingarticle-diff": "(diff : $1, $2)",
-       "readonly_lag": "La base de données a été automatiquement verrouillée pendant que les serveurs secondaires rattrapent leur retard sur le serveur principal.",
-       "nonwrite-api-promise-error": "L’entête HTTP « <code>Promise-Non-Write-API-Action:<code> » a été envoyé mais la requête a été faite à un module d’écriture de l’API.",
+       "readonly_lag": "La base de données a été automatiquement verrouillée pendant que les serveurs secondaires se réalignent sur le serveur principal.",
+       "nonwrite-api-promise-error": "L’entête HTTP « <code>Promise-Non-Write-API-Action:</code> » a été envoyé mais la requête a été faite à un module d’écriture de l’API.",
        "internalerror": "Erreur interne",
        "internalerror_info": "Erreur interne : $1",
        "internalerror-fatal-exception": "Erreur fatale de type « $1 »",
        "filecopyerror": "Impossible de copier le fichier « $1 » vers « $2 ».",
        "filerenameerror": "Impossible de renommer le fichier « $1 » en « $2 ».",
        "filedeleteerror": "Impossible de supprimer le fichier « $1 ».",
-       "directorycreateerror": "Impossible de créer le dossier « $1 ».",
+       "directorycreateerror": "Impossible de créer le répertoire « $1 ».",
        "directoryreadonlyerror": "Le répertoire « $1 » est en lecture seule.",
        "directorynotreadableerror": "Le répertoire « $1 » n’est pas lisible.",
        "filenotfound": "Impossible de trouver le fichier « $1 ».",
        "undo-summary": "Annulation des modifications $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]])",
        "undo-summary-username-hidden": "Annuler la révision $1 par un utilisateur masqué",
        "cantcreateaccounttitle": "Vous ne pouvez pas créer de compte.",
-       "cantcreateaccount-text": "La création de compte depuis cette adresse IP (<strong>$1</strong>) a été bloquée par [[User:$3|$3]]. La raison donnée était : <em>$2</em>",
+       "cantcreateaccount-text": "La création de compte depuis cette adresse IP (<strong>$1</strong>) a été bloquée par [[User:$3|$3]]. \n\nLa raison donnée par $3 était : <em>$2</em>",
        "cantcreateaccount-range-text": "La création de compte depuis les adresses IP de la plage <strong>$1</strong>, où se trouve votre adresse IP (<strong>$4</strong>), a été bloquée par [[User:$3|$3]].\n\nLe motif fourni par $3 est <em>$2</em>",
        "viewpagelogs": "Voir les opérations sur cette page",
        "nohistory": "Il n’existe pas d’historique des modifications pour cette page.",
        "mergehistory-from": "Page d'origine :",
        "mergehistory-into": "Page de destination :",
        "mergehistory-list": "Historique fusionnable des modifications",
-       "mergehistory-merge": "Les versions suivantes de [[:$1]] peuvent être fusionnées avec [[:$2]]. Utilisez la colonne de boutons radio pour fusionner uniquement les versions créées du début jusqu'à la date indiquée. Notez bien que l'utilisation des liens de navigation réinitialisera cette colonne.",
+       "mergehistory-merge": "Les versions suivantes de [[:$1]] peuvent être fusionnées avec [[:$2]]. \nUtilisez la colonne de boutons radio pour fusionner uniquement les versions créées du début jusqu'à la date indiquée. \nNotez bien que l'utilisation des liens de navigation réinitialisera cette colonne.",
        "mergehistory-go": "Voir les modifications qui peuvent être fusionnées",
        "mergehistory-submit": "Fusionner les versions",
        "mergehistory-empty": "Aucune version ne peut être fusionnée.",
        "userrights-groupsmember-auto": "Membre implicite de :",
        "userrights-groups-help": "Vous pouvez modifier les groupes auxquels appartient {{GENDER:$1|cet utilisateur|cette utilisatrice}} :\n* Une case cochée signifie que l’utilisat{{GENDER:$1|eur|rice}} se trouve dans ce groupe.\n* Une case non cochée signifie qu’{{GENDER:$1|il|elle}} ne s’y trouve pas.\n* Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l’avez ajouté, ou vice-versa.",
        "userrights-reason": "Motif :",
-       "userrights-no-interwiki": "Vous n'avez pas la permission de modifier des droits d'utilisateurs sur d'autres wikis.",
-       "userrights-nodatabase": "La base de donnée « $1 » n'existe pas ou n'est pas locale.",
-       "userrights-nologin": "Vous devez vous [[Special:UserLogin|connecter]] avec un compte d'administrateur pour modifier des droits d'utilisateur.",
-       "userrights-notallowed": "Vous n’avez pas la permission d’ajouter ou supprimer des droits d’utilisateur.",
+       "userrights-no-interwiki": "Vous n'avez pas la permission de modifier les droits utilisateur sur d'autres wikis.",
+       "userrights-nodatabase": "La base de données « $1 » n'existe pas ou n'est pas locale.",
+       "userrights-nologin": "Vous devez vous [[Special:UserLogin|connecter]] avec un compte d'administrateur pour modifier les droits utilisateur.",
+       "userrights-notallowed": "Vous n’avez pas la permission d’ajouter ou de supprimer des droits utilisateur.",
        "userrights-changeable-col": "Les groupes que vous pouvez modifier",
        "userrights-unchangeable-col": "Les groupes que vous ne pouvez pas modifier",
-       "userrights-conflict": "Conflit de modification de droits utilisateur ! Veuillez relire et confirmer vos modifications.",
+       "userrights-conflict": "Conflit de modification des droits utilisateur ! Veuillez relire et confirmer vos modifications.",
        "userrights-removed-self": "Vous avez supprimé vos propres droits. Par conséquent, vous ne pouvez plus accéder à cette page.",
        "group": "Groupe :",
        "group-user": "Utilisateurs",
        "right-createtalk": "Créer des pages de discussion",
        "right-createaccount": "Créer des comptes utilisateur",
        "right-autocreateaccount": "Connexion automatique avec un compte utilisateur externe",
-       "right-minoredit": "Marquer ses modifications comme mineures",
+       "right-minoredit": "Marquer les modifications comme mineures",
        "right-move": "Renommer des pages",
        "right-move-subpages": "Renommer des pages avec leurs sous-pages",
        "right-move-rootuserpages": "Renommer la page principale d'un utilisateur",
        "right-move-categorypages": "Renommer des pages de catégorie",
        "right-movefile": "Renommer des fichiers",
-       "right-suppressredirect": "Ne pas créer de redirection depuis le titre d'origine en renommant une page",
+       "right-suppressredirect": "Ne pas créer de redirection depuis le titre d'origine en renommant les pages",
        "right-upload": "Importer des fichiers",
        "right-reupload": "Écraser un fichier existant",
        "right-reupload-own": "Écraser un fichier que l'on a soi-même importé",
-       "right-reupload-shared": "Écraser localement un fichier présent sur un dépôt partagé",
+       "right-reupload-shared": "Écraser localement des fichiers présents sur un dépôt partagé",
        "right-upload_by_url": "Importer un fichier depuis une adresse URL",
-       "right-purge": "Purger le cache des pages sans demande de confirmation",
+       "right-purge": "Effacer une page du cache local sans demander de confirmation",
        "right-autoconfirmed": "Ne pas être affecté par les limitations de débit liées aux adresses IP",
        "right-bot": "Être traité comme un processus automatisé",
        "right-nominornewtalk": "Ne pas déclencher la notification de nouveau message lorsqu'on effectue une modification mineure sur la page de discussion d'un utilisateur",
        "right-writeapi": "Utiliser l'API de modification du wiki",
        "right-delete": "Supprimer des pages",
        "right-bigdelete": "Supprimer des pages ayant un gros historique",
-       "right-deletelogentry": "Supprimer et restaurer une entrée particulière du journal",
-       "right-deleterevision": "Supprimer ou restaurer une version particulière d'une page",
+       "right-deletelogentry": "Supprimer et restaurer des entrées particulières du journal",
+       "right-deleterevision": "Supprimer ou restaurer des versions particulières de pages",
        "right-deletedhistory": "Voir les entrées des historiques supprimées, mais sans leur texte",
        "right-deletedtext": "Voir le texte supprimé et les différences entre les versions supprimées",
        "right-browsearchive": "Rechercher des pages supprimées",
        "right-editmyuserjs": "Modifier vos propres fichiers JavaScript utilisateur",
        "right-viewmywatchlist": "Afficher votre propre liste de suivi",
        "right-editmywatchlist": "Modifier votre propre liste de suivi. Remarquez que certaines actions ajouteront encore des pages sans ce droit.",
-       "right-viewmyprivateinfo": "Voir vos données personnelles (exemple adresse, vrai nom)",
-       "right-editmyprivateinfo": "Modifier vos données personnelles (exemple adresse, vrai nom)",
+       "right-viewmyprivateinfo": "Voir vos données personnelles (par exemple votre adresse, votre vrai nom)",
+       "right-editmyprivateinfo": "Modifier vos données personnelles (par exemple votre adresse, votre vrai nom)",
        "right-editmyoptions": "Modifier vos préférences",
        "right-rollback": "Révoquer rapidement les modifications du dernier contributeur d'une page particulière",
        "right-markbotedits": "Marquer des modifications révoquées comme ayant été faites par un robot.",
        "right-noratelimit": "Ne pas être affecté par les limites de taux",
        "right-import": "Importer des pages depuis d'autres wikis",
        "right-importupload": "Importer des pages depuis un fichier",
-       "right-patrol": "Marquer des modifications des autres comme relues",
+       "right-patrol": "Marquer les modifications des autres comme étant relues",
        "right-autopatrol": "Avoir ses modifications automatiquement marquées comme relues",
        "right-patrolmarks": "Voir les marquages de relecture dans les modifications récentes",
        "right-unwatchedpages": "Voir la liste des pages non suivies",
        "right-mergehistory": "Fusionner les historiques des pages",
        "right-userrights": "Modifier tous les droits d'un utilisateur",
-       "right-userrights-interwiki": "Modifier les droits d'utilisateurs qui sont sur un autre wiki",
+       "right-userrights-interwiki": "Modifier les droits des utilisateurs qui sont sur d'autres wikis",
        "right-siteadmin": "Verrouiller ou déverrouiller la base de données",
        "right-override-export-depth": "Exporter les pages en incluant les pages liées jusqu'à une profondeur de 5 niveaux",
        "right-sendemail": "Envoyer un courriel aux autres utilisateurs",
        "grant-editprotected": "Modifier des pages protégées",
        "grant-highvolume": "Modification de gros volumes",
        "grant-oversight": "Masquer les utilisateurs et supprimer les révisions",
-       "grant-patrol": "Patrouiller les modifications aux pages",
+       "grant-patrol": "Vérifier les modifications de pages",
        "grant-protect": "Protéger et déprotéger des pages",
        "grant-rollback": "Révoquer des modifications sur des pages",
        "grant-sendemail": "Envoyer des courriels aux autres utilisateurs",
        "newsectionsummary": "/* $1 */ nouvelle section",
        "rc-enhanced-expand": "Voir les détails",
        "rc-enhanced-hide": "Masquer les détails",
-       "rc-old-title": "créé avec le titre « $1 »",
+       "rc-old-title": "créé initialement avec le titre « $1 »",
        "recentchangeslinked": "Suivi des pages liées",
        "recentchangeslinked-feed": "Suivi des pages liées",
        "recentchangeslinked-toolbox": "Suivi des pages liées",
        "recentchangeslinked-title": "Suivi des pages associées à « $1 »",
-       "recentchangeslinked-summary": "Cette page spéciale montre les modifications récentes sur les pages qui sont liées. Les pages de votre liste de suivi sont '''en gras'''.",
+       "recentchangeslinked-summary": "Ceci est une liste des modifications faites récemment sur des pages liées à une page spécifique (ou à des membres d'une catégorie spécifique). \nLes pages de [[Special:Watchlist|votre liste de suivi]] sont <strong>en gras</strong>.",
        "recentchangeslinked-page": "Nom de la page :",
        "recentchangeslinked-to": "Afficher les modifications des pages qui comportent un lien vers la page donnée plutôt que l'inverse",
        "recentchanges-page-added-to-category": "[[:$1]] ajouté à la catégorie",
        "autochange-username": "Modification automatique de MediaWiki",
        "upload": "Importer un fichier",
        "uploadbtn": "Importer le fichier",
-       "reuploaddesc": "Annuler et retourner au formulaire d'import",
+       "reuploaddesc": "Annuler l'importation et retourner au formulaire d'import",
        "upload-tryagain": "Envoyer la description du fichier modifiée",
        "uploadnologin": "Non connecté",
        "uploadnologintext": "Vous devez vous $1 pour importer des fichiers.",
        "upload_directory_missing": "Le répertoire d’import de fichier ($1) est introuvable et n’a pas pu être créé par le serveur web.",
-       "upload_directory_read_only": "Le répertoire d’import de fichier ($1) n’est pas accessible en écriture depuis le serveur web.",
+       "upload_directory_read_only": "Le répertoire d’import de fichier ($1) n’est pas accessible en écriture par le serveur web.",
        "uploaderror": "Erreur lors de l’import",
        "upload-recreate-warning": "'''Attention : Un fichier portant ce nom a été supprimé ou déplacé.'''\n\nLe journal des suppressions et celui des déplacements de cette page sont affichés ici pour informations :",
        "uploadtext": "Utilisez ce formulaire pour importer des fichiers sur le serveur.\nPour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. L’import est aussi enregistré dans le [[Special:Log/upload|journal d’import des fichiers]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].\n\nPour inclure un fichier dans une page, utilisez un lien de la forme :\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas d’une image) ;\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.png|200px|thumb|left|texte descriptif]]</nowiki></code>''' pour utiliser une miniature de 200 pixels de large dans une boîte à gauche avec « texte descriptif » comme description ;\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans l’afficher.",
        "upload-preferred": "{{PLURAL:$2|Format|Formats}} de fichiers {{PLURAL:$2|préféré|préférés}} : $1.",
        "upload-prohibited": "‎{{PLURAL:$2|Format|Formats}} de fichiers {{PLURAL:$2|interdit|interdits}} : $1.",
        "uploadlogpage": "Journal d’import de fichiers",
-       "uploadlogpagetext": "Voici la liste des derniers fichiers importés sur le serveur.\nVoyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentation plus visuelle.",
+       "uploadlogpagetext": "Voici la liste des derniers fichiers importés sur le serveur.\nVoyez la [[Special:NewFiles|galerie des nouveaux fichiers]] pour une représentation plus visuelle.",
        "filename": "Nom du fichier",
        "filedesc": "Description",
        "fileuploadsummary": "Description :",
        "filestatus": "Statut du droit d'auteur :",
        "filesource": "Source :",
        "ignorewarning": "Ignorer l'avertissement et sauvegarder le fichier quand même",
-       "ignorewarnings": "Ignorer les avertissements",
+       "ignorewarnings": "Ignorer tous les avertissements",
        "minlength1": "Le noms de fichiers doivent comprendre au moins une lettre.",
        "illegalfilename": "Le nom de fichier « $1 » contient des caractères interdits dans les titres de pages. Merci de le renommer et de l'importer à nouveau.",
        "filename-toolong": "Le nom du fichier ne peut pas dépasser 240 octets.",
        "watchthisupload": "Suivre ce fichier",
        "filewasdeleted": "Un fichier avec ce nom a déjà été importé, puis supprimé.\nVous devriez vérifier le $1 avant de l'importer à nouveau.",
        "filename-thumb-name": "Ce titre ressemble à celui d’une vignette. Évitez d’importer des vignettes d’une image déjà présente sur le wiki. Si ce n’est pas le cas, veuillez corriger le nom de fichier afin qu’il soit plus descriptif et qu’il ne commence pas comme un titre de vignette.",
-       "filename-bad-prefix": "Le nom du fichier commence par '''« $1 »''' qui est typiquement un nom attribué automatiquement par les appareils photo numériques.\nVeuillez choisir un nom de fichier descriptif.",
+       "filename-bad-prefix": "Le nom du fichier commence par <strong>« $1 »</strong> qui est typiquement un nom non-descriptif attribué automatiquement par les appareils photo numériques.\nVeuillez choisir un nom de fichier plus descriptif.",
        "filename-prefix-blacklist": " #<!-- laisser cette ligne telle quelle --><pre>\n# La syntaxe est la suivante :\n#  * Tout ce qui figure entre un caractère \"#\" jusqu’à la fin de la ligne est un commentaire ;\n#  * Toute ligne non vide est un préfixe typique de nom de fichier assigné automatiquement par les appareils numériques :\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # certains téléphones mobiles\nIMG # générique\nJD # Jenoptik\nMGP # Pentax\nPICT # divers\n #</pre><!-- laisser cette ligne telle quelle -->",
        "upload-proto-error": "Protocole incorrect",
        "upload-proto-error-text": "L’import requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.",
        "upload-file-error": "Erreur interne",
-       "upload-file-error-text": "Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]].",
+       "upload-file-error-text": "Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. \nVeuillez contacter un [[Special:ListUsers/sysop|administrateur]].",
        "upload-misc-error": "Erreur d’import inconnue",
        "upload-misc-error-text": "Une erreur inconnue est survenue pendant l’import.\nVeuillez vérifier que l’URL est valide et accessible, puis essayer à nouveau.\nSi le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].",
        "upload-too-many-redirects": "L’URL contient trop de redirections.",
        "watchnologin": "Non connecté",
        "addwatch": "Ajouter à la liste de suivi",
        "addedwatchtext": "La page « [[:$1]] » et sa page de discussion ont été ajoutées à votre [[Special:Watchlist|liste de suivi]].",
+       "addedwatchtext-talk": "« [[:$1]] » et sa page associée ont été ajoutés à votre [[Special:Watchlist|liste de suivi]].",
        "addedwatchtext-short": "La page « $1 » a été ajoutée à votre liste de suivi.",
        "removewatch": "Supprimer de la liste de suivi",
        "removedwatchtext": "La page « [[:$1]] » et sa page de discussion ont été retirées de votre [[Special:Watchlist|liste de suivi]].",
+       "removedwatchtext-talk": "« [[:$1]] » et sa page associée ont été supprimés de votre [[Special:Watchlist|liste de suivi]].",
        "removedwatchtext-short": "La page « $1 » a été supprimée de votre liste de suivi.",
        "watch": "Suivre",
        "watchthispage": "Suivre cette page",
index 4476955..f729895 100644 (file)
        "enhancedrc-history": "historial",
        "recentchanges": "Cambios recentes",
        "recentchanges-legend": "Opcións dos cambios",
-       "recentchanges-summary": "Nesta páxina pode seguir as modificacións máis recentes feitas no wiki.",
+       "recentchanges-summary": "Nesta páxina podes seguir as modificacións máis recentes feitas no wiki.",
        "recentchanges-noresult": "Non se produciron cambios que coincidisen con eses criterios durante o período especificado.",
        "recentchanges-feed-description": "Nesta fonte de novas pode seguir as modificacións máis recentes feitas no wiki.",
        "recentchanges-label-newpage": "Esta edición creou unha nova páxina",
        "watchnologin": "Non accedeu ao sistema",
        "addwatch": "Engadir á lista vixilancia",
        "addedwatchtext": "A páxina \"[[:$1]]\" e mais a súa conversa foron engadidas á súa [[Special:Watchlist|lista de vixilancia]].",
+       "addedwatchtext-talk": "\"[[:$1]]\" xunto coa súa páxina asociada foron engadidas á túa [[Special:Watchlist|lista de vixilancia]].",
        "addedwatchtext-short": "A páxina \"$1\" foi engadida á súa lista de vixilancia.",
        "removewatch": "Eliminar da lista de vixilancia",
        "removedwatchtext": "A páxina \"[[:$1]]\" e mais a súa conversa foron eliminadas da súa [[Special:Watchlist|lista de vixilancia]].",
+       "removedwatchtext-talk": "\"[[:$1]]\" xunto coa súa páxina asociada foron eliminadas da túa [[Special:Watchlist|lista de vixilancia]].",
        "removedwatchtext-short": "A páxina \"$1\" foi eliminada da súa lista de vixilancia.",
        "watch": "Vixiar",
        "watchthispage": "Vixiar esta páxina",
index 0aeca39..81dec3f 100644 (file)
@@ -12,7 +12,7 @@
                ]
        },
        "tog-previewonfirst": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽 𐌰𐍄 𐍆𐍂𐌿𐌼𐌹𐍃𐍄𐌰 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽",
-       "underline-always": "Sinteino",
+       "underline-always": "𐍃𐌹𐌽𐍄𐌴𐌹𐌽𐍉",
        "underline-never": "𐌽𐌹 𐌰𐌹𐍅",
        "sunday": "𐌰𐍆𐌰𐍂𐍃𐌰𐌱𐌱𐌰𐍄𐍉",
        "monday": "𐌼𐌴𐌽𐌹𐌽𐍃 𐌳𐌰𐌲𐍃",
@@ -73,7 +73,7 @@
        "pagecategories": "{{PLURAL:$1|𐌺𐌿𐌽𐌹|𐌺𐌿𐌽𐌾𐌰}}",
        "category_header": "𐌻𐌰𐌿𐌱𐍉𐍃 𐌹𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"",
        "subcategories": "𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰",
-       "category-media-header": "𐌼𐌴𐌳𐌾𐌰 𐌹𐌽𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"",
+       "category-media-header": "𐌼𐌴𐌳𐌾𐌰 𐌹𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"",
        "hidden-categories": "{{PLURAL:$1|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽 𐌺𐌿𐌽𐌹|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}",
        "hidden-category-category": "𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰",
        "category-subcat-count": "{{PLURAL:$2|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌸𐌰𐍄𐌴𐌹𐌽𐌴𐌹 𐌹𐍆𐍄𐌿𐌼 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 {{PLURAL:$1|𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌹𐍆𐍄𐌿𐌼𐌰 $1 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}, 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 $2 𐌺𐌿𐌽𐌾𐌴.}}",
        "projectpage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆",
        "viewhelppage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆",
        "otherlanguages": "𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍂𐌰𐌶𐌳𐍉𐌼",
-       "redirectedfrom": "(𐌹𐍃 𐍄𐌹𐌿𐌷𐌰𐌽𐍃/𐍄𐌹𐌿𐌷𐌰𐌽𐌰 𐌷𐌹𐌳𐍂𐌴 𐍆𐍂𐌰𐌼 $1)",
+       "redirectedfrom": "(𐌹𐍃 {{GENDER:𐍄𐌹𐌿𐌷𐌰𐌽𐍃|𐍄𐌹𐌿𐌷𐌰𐌽𐌰}} 𐌷𐌹𐌳𐍂𐌴 𐍆𐍂𐌰𐌼 $1)",
        "redirectpagesub": "𐌰𐌻𐌾𐌰𐍂 𐌱𐍂𐌹𐌲𐌲𐌰𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "lastmodifiedat": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌸𐌰𐍄𐌰 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌸𐍃 𐍅𐌰𐍃 ($1) ($2).",
        "protectedpage": "𐍆𐍂𐌹𐌸𐍉𐌽𐍃 𐌻𐌰𐌿𐍆𐍃",
        "pool-errorunknown": "𐌽𐌰𐍃𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "aboutsite": "𐌱𐌹 {{SITENAME}}",
        "aboutpage": "Project:𐌱𐌹",
-       "copyrightpage": "{{ns:project}}:ð\90\8c¼ð\90\8c°ð\90\8c½ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8cºð\90\8c°ð\90\8d\85ð\90\8c¹ð\90\8d\84ð\90\8d\89ð\90\8c¸ð\90\8c°",
-       "currentevents": "ð\90\8c½ð\90\8c¹ð\90\8c¿ð\90\8c¾ð\90\8c° 𐍅𐌰𐌹𐌷𐍄𐍃",
-       "currentevents-url": "Project:ð\90\8c½ð\90\8c¹ð\90\8c¿ð\90\8c¾ð\90\8c° 𐍅𐌰𐌹𐌷𐍄𐍃",
+       "copyrightpage": "{{ns:project}}:ð\90\8c±ð\90\8d\82ð\90\8c¿ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8c¹ð\90\8d\82ð\90\8c°ð\90\8c¹ð\90\8c·ð\90\8d\84ð\90\8c´ð\90\8c¹ð\90\8d\83",
+       "currentevents": "ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85ð\90\8c°ð\90\8c¹ð\90\8d\82ð\90\8c¸ð\90\8d\89ð\90\8d\83 ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c¸ð\90\8c°ð\90\8c½ð\90\8d\89ð\90\8d\83 𐍅𐌰𐌹𐌷𐍄𐍃",
+       "currentevents-url": "Project:ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85ð\90\8c°ð\90\8c¹ð\90\8d\82ð\90\8c¸ð\90\8d\89ð\90\8d\83 ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c¸ð\90\8c°ð\90\8c½ð\90\8d\89ð\90\8d\83 𐍅𐌰𐌹𐌷𐍄𐍃",
        "disclaimers": "𐌲𐌰𐍂𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐍂𐌰𐌹𐌷𐍄𐌰𐌹𐍃",
        "disclaimerpage": "Project:𐌲𐌰𐌼𐌰𐌹𐌽𐌰 𐌲𐌰𐍂𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐍂𐌰𐌹𐌷𐍄𐌰𐌹𐍃",
-       "edithelp": "𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌷𐌹𐌻𐍀𐌰",
+       "edithelp": "ð\90\8c¹ð\90\8c½ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8c¹ð\90\8c·ð\90\8c¹ð\90\8c»ð\90\8d\80ð\90\8c°",
        "mainpage": "𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐍆𐍃",
        "mainpage-description": "𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐍆𐍃",
        "portal": "𐌱𐌰𐌿𐍂𐌲𐍃 𐌲𐌰𐍅𐌹",
        "hidetoc": "𐌰𐍆𐍆𐌹𐌻𐌷",
        "confirmable-yes": "𐌾𐌰",
        "confirmable-no": "𐌽𐌴",
-       "site-rss-feed": "$1 RSS Miþnatifodjan",
-       "site-atom-feed": "$1 ð\90\8c°ð\90\8d\84ð\90\8d\89ð\90\8c¼ ð\90\8d\86ð\90\8d\89ð\90\8c³ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83",
+       "site-rss-feed": "$1 RSS 𐍂𐌹𐌽𐌽𐍉",
+       "site-atom-feed": "$1 ð\90\8c°ð\90\8d\84ð\90\8d\89ð\90\8c¼ ð\90\8d\82ð\90\8c¹ð\90\8c½ð\90\8c½ð\90\8d\89",
        "page-atom-feed": "\"$1\" 𐌰𐍄𐍉𐌼 𐍂𐌹𐌽𐌽𐍉",
        "red-link-title": "$1 (𐌻𐌰𐌿𐍆𐍃 𐌽𐌹𐍃𐍄)",
        "nstab-main": "𐌻𐌰𐌿𐍆𐍃",
        "nstab-special": "𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "nstab-project": "𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆𐍃",
        "nstab-image": "𐍆𐌴𐌹𐌻𐌰",
-       "nstab-template": "ð\90\8d\86ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c°ð\90\8c¼ð\90\8c´ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c½𐍃",
+       "nstab-template": "ð\90\8d\83ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8d\82ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8c¹ð\90\8d\86ð\90\8d\82ð\90\8c¹ð\90\8d\83ð\90\8c°ð\90\8c·ð\90\8d\84𐍃",
        "nstab-help": "𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆𐍃",
        "nstab-category": "𐌺𐌿𐌽𐌹",
        "mainpage-nstab": "𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐍆𐍃",
        "createacct-yourpassword-ph": "𐌼𐌴𐌻𐌴𐌹 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳",
        "createacct-yourpasswordagain": "𐌲𐌰𐍃𐌹𐌲𐌻𐌴𐌹 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳",
        "createacct-yourpasswordagain-ph": "𐌼𐌴𐌻𐌴𐌹 𐌲𐌰𐌼𐍉𐍄𐌰𐍅𐌰𐌿𐍂𐌳 𐌰𐍆𐍄𐍂𐌰",
-       "userlogin-remembermypassword": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌼𐌹𐌺 𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽𐌰𐌽𐌰/𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽𐌰",
+       "userlogin-remembermypassword": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌼𐌹𐌺 {{GENDER:𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽𐌰𐌽𐌰|𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽𐌰}}",
        "login": "𐌰𐍄𐌲𐌰𐌲𐌲",
-       "nav-login-createaccount": "𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽 / 𐌲𐌰𐌻𐌰𐌽𐌲𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃",
-       "userlogin": "Atgaggan / gaskapjan niutandis",
+       "nav-login-createaccount": "𐌰𐍄𐌲𐌰𐌲𐌲 / 𐍃𐌺𐌰𐍀𐌴𐌹 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
+       "userlogin": "𐌰𐍄𐌲𐌰𐌲𐌲 / 𐍃𐌺𐌰𐍀𐌴𐌹 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
        "userloginnocreate": "𐌰𐍄𐌲𐌰𐌲𐌲",
        "logout": "𐌰𐍆𐌻𐌴𐌹𐌸",
        "userlogout": "𐌰𐍆𐌻𐌴𐌹𐌸",
        "userlogin-noaccount": "𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽?",
-       "userlogin-joinproject": "ð\90\8c²ð\90\8c°ð\90\8c¼ð\90\8c°ð\90\8c¹ð\90\8c½𐌴𐌹 {{SITENAME}}",
+       "userlogin-joinproject": "ð\90\8c²ð\90\8c°ð\90\8c³ð\90\8c°ð\90\8c¹ð\90\8c»𐌴𐌹 {{SITENAME}}",
        "nologinlink": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
        "createaccount": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽",
        "gotaccount": "𐌾𐌿 𐌺𐌰𐍅𐍄𐍃𐌾𐍉𐌽 𐌷𐌰𐌱𐌰𐌹𐍃? $1.",
        "extlink_tip": "𐌿𐍄𐌰𐌲𐌰𐍅𐌹𐍃𐍃 (𐌲𐌰𐌼𐌹𐌽𐌸𐌴𐌹 http:// 𐍆𐌰𐌿𐍂𐌰𐌻𐌰𐌲𐌴𐌹𐌽𐍃)",
        "headline_sample": "𐌿𐍆𐌰𐍂𐍃𐍄𐍂𐌹𐌺𐌰𐌱𐍉𐌺𐍉𐍃",
        "headline_tip": "𐌷𐌰𐌿𐌷𐌹𐌸𐌰 •𐌱• 𐌿𐍆𐌰𐍂𐍃𐍄𐍂𐌹𐌺𐍃",
-       "nowiki_sample": "ð\90\8d\83ð\90\8c°ð\90\8d\84ð\90\8c¾ð\90\8c´ð\90\8c¹ ð\90\8c¿ð\90\8c½ð\90\8d\83ð\90\8c½ð\90\8c´ð\90\8c¹ð\90\8c¸ð\90\8c¾ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\83 ð\90\8d\84ð\90\8c´ð\90\8cºð\90\8d\83ð\90\8d\84 ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8c°ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c°ð\90\8c¼ ð\90\8c·ð\90\8c¹ð\90\8d\84",
+       "nowiki_sample": "ð\90\8d\83ð\90\8c°ð\90\8d\84ð\90\8c´ð\90\8c¹ ð\90\8c±ð\90\8d\89ð\90\8cºð\90\8d\89ð\90\8d\83 ð\90\8c¹ð\90\8c½ð\90\8c¿ð\90\8c· ð\90\8c²ð\90\8c°ð\90\8d\82ð\90\8d\85ð\90\8c¹ ð\90\8c·ð\90\8c´ð\90\8d\82",
        "nowiki_tip": "𐌿𐌽𐍅𐌹𐍄𐌾𐌹𐍃 𐍅𐌹𐌺𐌹𐍃𐌽𐌴𐌹𐌸𐌾𐌰𐌽𐌳𐍃",
        "image_tip": "𐌹𐌽𐌽𐌱𐍉𐌳𐌰𐌽𐍃 𐍆𐌴𐌹𐌻𐌰",
        "media_tip": "𐍄𐌰𐌹𐌺𐌾𐌰𐌱𐌰𐌽𐌳𐌾𐌹𐍃 𐍆𐌴𐌹𐌻𐌰𐌽𐌹𐍃",
        "sig_tip": "𐌸𐌴𐌹𐌽𐌰 𐌿𐍆𐌼𐌴𐌻𐌴𐌹𐌽𐍃 𐌼𐌹𐌸 𐌲𐌻𐌰𐌲𐌲𐍅𐌰𐌼𐌼𐌰 𐌼𐌴𐌻𐌰",
-       "hr_tip": "𐍂𐌰𐌹𐌷𐍄𐍃𐌱𐌰𐌿𐍂𐌳 (𐌱𐍂𐌿𐌺𐌾𐌰𐌽 𐌼𐌹𐌸 𐌽𐌹𐌿𐍆𐌰𐍂𐌿𐍃𐍃𐌿𐍃)",
+       "hr_tip": "𐍂𐌰𐌹𐌷𐍄𐍃 𐍃𐍄𐍂𐌹𐌺𐍃 (𐌽𐌹 𐌱𐍂𐌿𐌺𐌴𐌹 𐌿𐍆𐌰𐍂𐍆𐌹𐌻𐌿)",
        "summary": "𐌼𐌰𐌿𐍂𐌲𐌿𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐍃:",
        "subject": "𐌿𐍆𐍅𐌰𐌿𐍂𐍀𐌰:",
        "minoredit": "𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐌼𐌹𐌽𐌽𐌹𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃",
        "updated": "(𐌰𐌽𐌰𐌽𐌹𐍅𐌹𐌸)",
        "previewnote": "<strong>𐌲𐌰𐌼𐌹𐌽𐌸𐌴𐌹 𐌸𐌰𐍄𐌴𐌹 𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐌸𐌰𐍄𐌰𐌹𐌽𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐍃.</strong>\n𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌽𐌰𐌿𐌷 𐌽𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌽𐍉𐍃 𐍃𐌹𐌽𐌳!",
        "editing": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1",
-       "creating": "𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃/𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐌴𐌹 $1",
+       "creating": "{{GENDER:𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃|𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐌴𐌹}} $1",
        "editingsection": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1 (𐌳𐌰𐌹𐌻)",
-       "editingcomment": "𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃/𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹 $1 (𐌽𐌹𐌿𐌾𐌰 𐌳𐌰𐌹𐌻)",
-       "yourdiff": "ð\90\8c¼ð\90\8c¹ð\90\8d\83ð\90\8d\83ð\90\8c°ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8cº𐍉𐍃",
+       "editingcomment": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1 (𐌽𐌹𐌿𐌾𐌰 𐌳𐌰𐌹𐌻)",
+       "yourdiff": "ð\90\8c²ð\90\8c°ð\90\8d\83ð\90\8cºð\90\8c°ð\90\8c¹ð\90\8c³ð\90\8c´ð\90\8c¹ð\90\8c½𐍉𐍃",
        "template-protected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌼𐌿𐌽𐌳)",
-       "template-semiprotected": "(halb-gabaírgjan)",
+       "template-semiprotected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌷𐌰𐌻𐌱𐌰𐌼𐌿𐌽𐌸)",
        "hiddencategories": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌹𐍃𐍄 𐌲𐌰𐌳𐌰𐌹𐌻𐌰 {{PLURAL:$1|1 𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐌹𐍃 𐌺𐌿𐌽𐌾𐌹𐍃|$1 𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐌰𐌹𐌶𐌴 𐌺𐌿𐌽𐌾𐌴}}:‎",
        "permissionserrorstext-withaction": "𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌰𐌽𐌳𐌻𐌴𐍄 𐌳𐌿 $2, 𐌹𐌽 {{PLURAL:$1|𐌹𐍆𐍄𐌿𐌼𐌰𐌹𐌶𐍉𐍃 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃|𐌹𐍆𐍄𐌿𐌼𐌰𐌹𐌶𐍉 𐍅𐌰𐌹𐌷𐍄𐌴}}:",
        "moveddeleted-notice": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌿𐍃𐌽𐌿𐌼𐌰𐌽𐍃 𐌹𐍃𐍄. 𐌿𐍃𐌽𐌿𐌼𐍄𐍃 𐌾𐌰𐌷 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌹𐌽𐍃 𐌼𐌹𐌸𐍃𐌰𐍄𐌴𐌹𐌽𐌰𐌹𐍃 𐌿𐍆 𐍃𐌹𐌽𐌳 𐌿𐍃𐍄𐌰𐌹𐌺𐌽𐌴𐌹𐌽𐌰𐌹.",
        "searchall": "𐌰𐌻𐌻𐍃",
        "search-showingresults": "{{ZPLURAL:$4|𐍄𐌰𐌿𐌹 <strong>$1 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃 <strong>$3|𐍄𐍉𐌾𐌰 <strong>$1 - $2 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃 <strong>$3}}",
        "search-nonefound": "𐌽𐌹 𐍄𐌰𐌿𐌹 𐍅𐌰𐍃 𐍃𐌰𐌼𐌰𐌽𐌰 𐍃𐍅𐌰 𐍃𐍉𐌺𐌴𐌹𐌽.",
-       "powersearch-legend": "𐍃𐍉𐌺𐌴𐌹𐌸",
+       "powersearch-legend": "𐍃𐍉𐌺𐌴𐌹",
        "preferences": "𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃",
        "mypreferences": "𐌲𐌰𐌻𐌴𐌹𐌺𐌰𐌽𐌳𐌴𐌹𐌽𐍃 𐍅𐌰𐌹𐌷𐍄𐍃",
        "prefs-skin": "Seidofill",
        "skin-preview": "Faúrsaiƕa",
        "saveprefs": "Melja",
-       "searchresultshead": "Sokeiþ",
+       "searchresultshead": "𐍃𐍉𐌺𐌴𐌹",
        "grouppage-sysop": "{{ns:project}}:𐍃𐌴𐌹𐌳𐍉𐍆𐌰𐌸𐍃",
        "right-writeapi": "𐌱𐍂𐌿𐌺𐌴𐌹𐌽𐍃 API 𐌼𐌴𐌻𐌴𐌹𐌽𐌰𐌹𐍃",
        "rightslog": "Niutandis stutjanlog",
        "imagelinks": "𐌱𐍂𐌿𐌺𐌴𐌹𐌽𐍃 𐍆𐌰𐌴𐌹𐌻𐌴",
        "linkstoimage": "𐌰𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|𐍃𐍉 𐍃𐌴𐌹𐌳𐍉 𐌻𐌴𐌹𐌽𐌺𐍉𐌸|𐌸𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐌳}} 𐌸𐌹𐌶𐍉𐌶𐌿𐌷 𐍆𐌴𐌹𐌻𐍉𐍃",
        "sharedupload-desc-here": "𐍃𐍉 𐌳𐌰𐍄𐌰 𐌹𐍃𐍄 𐍆𐍂𐌰𐌼 $1 𐌾𐌰𐌷 𐌼𐌰𐌲 𐌱𐍂𐌿𐌺𐌾𐌰𐌳𐌰 𐍆𐍂𐌰𐌼 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐍉𐌼.\n𐌲𐌰𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐍃 𐌰𐌽𐌰 𐍃𐌴𐌹𐌽𐌰𐌼𐌼𐌰 [$2 𐌳𐌰𐍄𐌰 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐌱𐌰] 𐌾𐌰𐌹𐌽𐌰𐍂 𐌰𐍄𐌰𐌿𐌲𐌹𐌸𐍃 𐌹𐍃𐍄 𐌿𐍆.",
-       "filedelete-submit": "Taíran",
-       "mimesearch": "MIME sokeiþ",
+       "filedelete-submit": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹",
+       "mimesearch": "MIME 𐍃𐍉𐌺𐌴𐌹",
        "listredirects": "𐍄𐌰𐌻𐌰 𐌰𐍆 𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐍃𐌴𐌹𐌳𐍉𐍃",
        "randompage": "𐌸𐌿𐍃 𐌿𐌽𐌺𐌿𐌽𐌸𐍃 𐌻𐌰𐌿𐍆𐍃",
        "statistics": "𐍃𐌴𐌹𐌳𐍉𐍃𐍄𐌰𐍄𐌹𐍃𐍄𐌹𐌺",
        "brokenredirects-delete": "(𐍄𐌰𐌹𐍂𐌰𐌽)",
        "nbytes": "$1 {{PLURAL:$1|𐌱𐌹𐍄|𐌱𐌰𐍄𐌰}}",
        "ncategories": "$1 {{PLURAL:$1|𐌺𐌿𐌽𐌾𐌰|𐌺𐌿𐌽𐌾𐍉𐍃}}",
-       "nlinks": "$1 {{PLURAL:$1|táikjanbandi|táikjanbandja}}",
+       "nlinks": "$1 {{PLURAL:$1|𐌲𐌰𐍅𐌹𐍃𐍃|𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃}}",
        "nmembers": "$1 {{PLURAL:$1|niutand|niutanda}}",
        "wantedpages": "𐌲𐌰𐌹𐍂𐌽𐌹𐌳𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃",
        "shortpages": "𐌻𐌴𐌹𐍄𐌹𐌻𐌰 𐍃𐌴𐌹𐌳𐍉𐍃",
        "allpagessubmit": "𐌲𐌰𐌲𐌲",
        "categories": "𐌺𐌿𐌽𐌾𐌰",
        "linksearch-ns": "𐍃𐌴𐌹𐌳𐍉𐍆𐌴𐍂𐌰:",
-       "emailuser": "𐍃𐌰𐌽𐌳𐌾𐌰𐌽 𐌸𐍉 𐌽𐌹𐌿𐍄𐌰𐌽𐌳 𐌱𐍉𐌺𐍉𐌼",
+       "emailuser": "{{GENDER: 𐍃𐌰𐌽𐌳𐌴𐌹 𐌴-𐌱𐍉𐌺𐍉𐍃 𐌳𐌿 𐌸𐌰𐌼𐌼𐌰 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳|𐍃𐌰𐌽𐌳𐌴𐌹 𐌴-𐌱𐍉𐌺𐍉𐍃 𐌳𐌿 𐌸𐌹𐌶𐌰𐌹 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐌾𐌰𐌹}}",
        "watchlist": "𐍅𐌹𐍄𐌰𐍅𐌹𐌺𐍉",
        "mywatchlist": "𐌻𐌰𐌹𐍃𐍄𐌰𐌻𐌴𐌹𐍃𐍄𐌰",
        "watch": "𐍅𐌰𐍂𐌰𐌽",
        "rollbacklink": "𐌰𐍆𐍅𐌰𐌻𐍅𐌴𐌹",
        "rollbacklinkcount": "𐌰𐍆𐍅𐌰𐌻𐍅𐌴𐌹 $1 {{PLURAL:$1|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃}}",
        "protectlogpage": "Log af Baírgjan",
-       "prot_1movedto2": "[[$1]] skiubiþ du [[$2]]",
+       "prot_1movedto2": "[[$1]] 𐌼𐌹𐌸𐍃𐌰𐍄𐌹𐌸 𐌳𐌿 [[$2]]",
        "protect-level-sysop": "𐌰𐌽𐌳𐌻𐌴𐍄𐌹𐌸 𐌸𐌰𐍄𐌰𐌹𐌽𐌴𐌹 𐍂𐌴𐌹𐌺𐍃",
        "protect-expiring": "𐌿𐍃𐍄𐌹𐌿𐌷𐌹𐌸 $1 (UTC)",
        "restriction-type": "Freihals:",
        "undeletebtn": "𐌰𐍆𐍄𐍂𐌰 𐌲𐌰𐌱𐍉𐍄𐌾𐌰𐌽",
        "undeletelink": "𐍃𐌰𐌹𐍈𐌰𐌽/𐌰𐍆𐍄𐍂𐌰𐌲𐌰𐍃𐌰𐍄𐌾𐌰𐌽",
        "undeleteviewlink": "𐍃𐌰𐌹𐍈𐌹𐍃",
-       "undelete-search-submit": "Sokeiþ",
+       "undelete-search-submit": "𐍃𐍉𐌺𐌴𐌹",
        "namespace": "𐌽𐌰𐌼𐌰𐍂𐌿𐌼:",
        "invert": "Afwandjan kustus",
        "blanknamespace": "(𐍆𐍂𐌿𐌼𐌹𐍃𐍄𐍃)",
        "istemplate": "ináukan",
        "whatlinkshere-prev": "{{PLURAL:$1|aftuma|aftumans $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|iftuma|iftumans $1}}",
-       "whatlinkshere-links": "← táikajanbandja",
+       "whatlinkshere-links": "← 𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃",
        "whatlinkshere-hidelinks": "$1 𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃",
        "blockip": "𐍆𐌰𐌿𐍂𐌳𐌰𐌼𐌼𐌴𐌹 {{GENDER:$1|user}}",
        "ipbreason": "𐍆𐌰𐌹𐍂𐌹𐌽𐌰:",
        "ipboptions": "𐌱 𐌰𐍅𐍂𐌰:2 hours, 𐌰 𐌳𐌰𐌲𐍃:1 day, 𐌲 𐌳𐌰𐌲𐍉𐍃:3 days, 𐌰 𐍅𐌹𐌺𐍉:1 week, 𐌱 𐍅𐌹𐌺𐍉𐌽𐍃:2 weeks, 𐌰 𐌼𐌴𐌽𐍉𐌸𐍃:1 month, 𐌲 𐌼𐌴𐌽𐍉𐌸𐍉𐍃:3 months, 𐌵 𐌼𐌴𐌽𐍉𐌸𐍉𐍃:6 months, 𐌰 𐌾𐌴𐍂:1 year, 𐌹𐌽𐌿𐍄𐍂𐌹𐌲𐌲𐌴𐌽𐌳𐌴𐌹𐍃:infinite",
-       "ipblocklist-submit": "Sokeiþ",
+       "ipblocklist-submit": "𐍃𐍉𐌺𐌴𐌹",
        "infiniteblock": "ajukduþs",
        "blocklink": "𐍆𐌰𐌿𐍂𐌳𐌰𐌼𐌼𐌴𐌹",
        "unblocklink": "𐍅𐌰𐌽𐌳𐌾𐌰𐌽",
        "export": "𐌿𐍄𐌱𐌰𐌹𐍂 𐌻𐌰𐌿𐌱𐌰𐌽𐍃",
        "thumbnail-more": "\n𐌼𐌹𐌺𐌹𐌻𐌴𐌹",
        "tooltip-pt-userpage": "{{GENDER:|Your user}} 𐌻𐌰𐌿𐍆𐍃",
-       "tooltip-pt-mytalk": "{{GENDER:|Your}} 𐌻𐌰𐌿𐍆𐍃 𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌹𐍃",
+       "tooltip-pt-mytalk": "{{GENDER:|𐌸𐌴𐌹𐌽𐍃}} 𐌻𐌰𐌿𐍆𐍃 𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌹𐍃",
        "tooltip-pt-preferences": "{{GENDER:|Your}} 𐌲𐌰𐌻𐌴𐌹𐌺𐌰𐌽𐌳𐌴𐌹𐌽𐍃 𐍅𐌰𐌹𐌷𐍄𐍃",
        "tooltip-pt-watchlist": "𐍅𐌹𐌺𐍉 𐌻𐌰𐌿𐌱𐌴 𐌸𐌹𐌶𐌴𐌴𐌹 𐌰𐍄𐍅𐌰𐌹𐍃𐍄 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌼",
        "tooltip-pt-mycontris": "A list of {{GENDER:|your}} 𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴𐌹𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐌹𐍃",
        "tooltip-ca-delete": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰",
        "tooltip-ca-move": "𐌼𐌹𐌸𐍃𐌰𐍄𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "tooltip-ca-watch": "𐌱𐌹𐌰𐌹𐌰𐌿𐌺 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆 𐌳𐌿 𐌸𐌴𐌹𐌽𐌰𐌹 𐍅𐌹𐍄𐌰𐍅𐌹𐌺𐍉𐌽",
-       "tooltip-search": "ð\90\8d\83ð\90\8d\89ð\90\8cºð\90\8c¾ð\90\8c°ð\90\8c½ {{SITENAME}}",
+       "tooltip-search": "ð\90\8d\83ð\90\8d\89ð\90\8cºð\90\8c´ð\90\8c¹ {{SITENAME}}",
        "tooltip-search-go": "𐌾𐌰𐌱𐌰𐌹 𐌹𐍃𐍄, 𐌲𐌰𐌲𐌲 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐌼𐌹𐌸 𐍃𐌰𐌼𐌹𐌽 𐌽𐌰𐌼𐌹𐌽.",
        "tooltip-search-fulltext": "𐍃𐍉𐌺𐌴𐌹 𐌻𐌰𐌿𐌱𐌰𐌽𐍃 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼",
        "tooltip-p-logo": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
        "tooltip-ca-nstab-special": "𐍃𐌰 𐌹𐍃𐍄 𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃 𐌾𐌰𐌷 𐌽𐌹 𐌼𐌰𐌲 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌳𐌰.",
        "tooltip-ca-nstab-project": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆",
        "tooltip-ca-nstab-image": "𐍃𐌰𐌹𐍈 𐍆𐌰𐌴𐌹𐌻𐌰𐌻𐌰𐌿𐍆",
-       "tooltip-ca-nstab-template": "𐍃𐌰𐌹𐍈𐌹𐍃 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽",
+       "tooltip-ca-nstab-template": "𐍃𐌰𐌹𐍈 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽",
        "tooltip-ca-nstab-category": "𐍃𐌰𐌹𐍈 𐌺𐌿𐌽𐌾𐌰𐌻𐌰𐌿𐍆",
        "tooltip-save": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃",
        "tooltip-preview": "𐍆𐌰𐌿𐍂𐌰𐍃𐌰𐌹𐍈 𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃. 𐌱𐌹𐌳𐌾𐌰𐌼 𐌸𐌿𐌺, 𐌱𐍂𐌿𐌺𐌴𐌹 𐌸𐌹𐍃 𐌸𐌰𐍄𐌰 𐍆𐍂𐌿𐌼𐌹𐍃𐍄 𐍆𐌰𐌿𐍂𐌸𐌹𐌶𐌴𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌹𐍃.",
        "show-big-image": "𐍆𐍂𐌿𐌼𐌹𐍃𐍄𐌰 𐌳𐌰𐍄𐌰",
        "show-big-image-preview": "𐌼𐌹𐌺𐌹𐌻𐌴𐌹 𐌸𐌹𐌶𐍉𐍃 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐌰𐌹𐍃: $1.",
        "show-big-image-size": "$1 × $2 𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐌹𐍃𐍄𐌰𐌱𐌴𐌹𐍃",
-       "ilsubmit": "Sokeiþ",
+       "ilsubmit": "𐍃𐍉𐌺𐌴𐌹",
        "metadata": "𐌿𐍆𐌰𐍂𐌳𐌰𐍄𐌰",
        "exif-colorspace": "𐍆𐌰𐍂𐍅𐌰𐍂𐌿𐌼",
        "exif-orientation-1": "𐌱𐌹 𐌱𐌹𐌿𐌷𐍄𐌾𐌰",
        "namespacesall": "𐌰𐌻𐌻",
        "monthsall": "𐌰𐌻𐌻",
-       "imgmultigo": "Afgaggan!",
+       "imgmultigo": "𐌲𐌰𐌲𐌲!",
        "table_pager_limit_submit": "Affgaggan",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰]])",
        "version-other": "Anþar",
index 2182253..807ce58 100644 (file)
        "november-date": "નવેમ્બર $1",
        "december-date": "ડિસેમ્બર $1",
        "pagecategories": "{{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}",
-       "category_header": "શ્રેણી \"$1\"માં પાના",
+       "category_header": "શ્રેણી \"$1\" ના પાનાં",
        "subcategories": "ઉપશ્રેણીઓ",
        "category-media-header": "શ્રેણી \"$1\"માં દ્રશ્ય કે શ્રાવ્ય સભ્યો",
        "category-empty": "''આ શ્રેણીમાં હાલમાં કોઇ લેખ કે અન્ય સભ્ય નથી.''",
index 87def58..b4b9c89 100644 (file)
        "prefs-help-prefershttps": "העדפה זו תיכנס לתוקף בכניסה הבאה לחשבון.",
        "prefswarning-warning": "ביצעת שינויים בהעדפות שלך, והם עדיין לא נשמרו.\nעזיבת דף זה ללא לחיצה על \"$1\" תגרום לכך שההעדפות שלך לא יעודכנו.",
        "prefs-tabs-navigation-hint": "טיפ: ניתן להשתמש במקשי החצים הימני והשמאלי כדי לנווט בין הלשוניות ברשימת הלשוניות.",
-       "userrights": "ניהול הרשאות {{GENDER:{{BASEPAGENAME}}|משתמש|משתמשת}}",
+       "userrights": "ניהול הרשאות משתמש",
        "userrights-lookup-user": "ניהול קבוצות משתמש",
        "userrights-user-editname": "שם משתמש:",
        "editusergroup": "עריכת הקבוצות של ה{{GENDER:$1|משתמש}}",
        "watchnologin": "לא נכנסת לחשבון",
        "addwatch": "הוספה לרשימת המעקב",
        "addedwatchtext": "הדף \"[[:$1]]\" ודף השיחה שלו נוספו ל[[Special:Watchlist|רשימת המעקב]] שלך.",
+       "addedwatchtext-talk": "הדף \"[[:$1]]\" ודף התוכן המשויך אליו נוספו ל[[Special:Watchlist|רשימת המעקב]] שלך.",
        "addedwatchtext-short": "הדף \"$1\" נוסף לרשימת המעקב.",
        "removewatch": "הסרה מרשימת המעקב",
        "removedwatchtext": "הדף \"[[:$1]]\" ודף השיחה שלו הוסרו מ[[Special:Watchlist|רשימת המעקב]] שלך.",
+       "removedwatchtext-talk": "הדף \"[[:$1]]\" ודף התוכן המשויך אליו הוסרו מ[[Special:Watchlist|רשימת המעקב]] שלך.",
        "removedwatchtext-short": "הדף \"$1\" הוסר מרשימת המעקב.",
        "watch": "מעקב",
        "watchthispage": "מעקב אחרי דף זה",
index ca05a97..17f116b 100644 (file)
@@ -70,7 +70,7 @@
        "tog-watchlisthidebots": "Sakrij uređivanja botova s popisa praćenja",
        "tog-watchlisthideminor": "Sakrij manje promjene s popisa praćenja",
        "tog-watchlisthideliu": "Sakrij uređivanja prijavljenih s popisa praćenja",
-       "tog-watchlistreloadautomatically": "Automatski ponovno pokreni nadzornu listu kad god dođe do promjene filtra (potreban JavaScript)",
+       "tog-watchlistreloadautomatically": "Ponovno učitaj popis praćenja kad god dođe do promjene filtra (potreban JavaScript)",
        "tog-watchlisthideanons": "Sakrij uređivanja neprijavljenih s popisa praćenja",
        "tog-watchlisthidepatrolled": "Sakrij pregledane izmjene u popisu praćenja",
        "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica",
        "botpasswords-label-create": "Stvori",
        "botpasswords-label-update": "Ažuriraj",
        "botpasswords-label-cancel": "Odustani",
-       "botpasswords-label-resetpassword": "Reset lozinke",
+       "botpasswords-label-resetpassword": "Ponovno postavljanje lozinke",
        "botpasswords-insert-failed": "Nije moguće dodavanje imena bota \"$1\". Možda je već dodano?",
        "resetpass_forbidden": "Lozinka ne može biti promijenjena",
        "resetpass-no-info": "Morate biti prijavljeni da biste izravno pristupili ovoj stranici.",
        "prefs-advancedwatchlist": "Napredne mogućnosti",
        "prefs-displayrc": "Prikaži opcije",
        "prefs-displaywatchlist": "Mogućnosti prikaza",
-       "prefs-diffs": "razl",
+       "prefs-diffs": "Razlike između inačica uređivanja",
        "prefs-help-prefershttps": "Ova mogućnost će stupiti na snagu kod sljedeće prijave.",
        "prefswarning-warning": "Napravili ste promjene u Vašim postavkama koje još nisu snimljene.\nAko napustite ovu stranicu bez pritiska na \"$1\", postavke neće biti ažurirane.",
        "prefs-tabs-navigation-hint": "Savjet: možete rabiti tipke sa strjelicama lijevo i desno za prebacivanje između kartica na popisu kartica.",
        "grant-blockusers": "Blokiraj i odblokiraj korisnike",
        "grant-createaccount": "Otvori račune",
        "grant-createeditmovepage": "Stvori, uredi i premjesti stranice",
-       "grant-editmyoptions": "Izmjeni korisničke postavke",
+       "grant-editmyoptions": "Uredi korisničke postavke",
        "grant-highvolume": "Uređivanja velikog opsega",
        "grant-basic": "Osnovna prava",
        "grant-viewdeleted": "Prikaz izbrisanih datoteka i stranica",
        "recentchangeslinked-summary": "Ova posebna stranica pokazuje nedavne promjene na povezanim stranicama (ili stranicama određene kategorije). Stranice koje su na [[Special:Watchlist|Vašem popisu praćenja]] su '''podebljane'''.",
        "recentchangeslinked-page": "Naslov stranice:",
        "recentchangeslinked-to": "Pokaži promjene na stranicama s poveznicom na ovu stranicu",
-       "recentchanges-page-added-to-category": "[[:$1]] dodana u kategoriju",
+       "recentchanges-page-added-to-category": "[[:$1]] dodano u kategoriju",
        "recentchanges-page-removed-from-category": "[[:$1]] uklonjeno iz kategorije",
        "upload": "Postavi datoteku",
        "uploadbtn": "Postavi datoteku",
        "protectedpages-reason": "Razlog",
        "protectedpages-submit": "Prikaži stranice",
        "protectedpages-unknown-timestamp": "Nepoznato",
-       "protectedpages-unknown-performer": "Nepoznati korisnik",
+       "protectedpages-unknown-performer": "Nepoznati suradnik",
        "protectedtitles": "Zaštićeni naslovi",
        "protectedtitlesempty": "Nijedan naslov nije trenutačno zaštićen s tim parametrima.",
        "protectedtitles-submit": "Prikaži nazive",
        "activeusers-hidebots": "Sakrij botove",
        "activeusers-hidesysops": "Sakrij administratore",
        "activeusers-noresult": "Niti jedan suradnik nije nađen.",
-       "activeusers-submit": "Prikaz aktivnih sudionika",
+       "activeusers-submit": "Prikaz aktivnih suradnika",
        "listgrouprights": "Prava suradničkih skupina",
        "listgrouprights-summary": "Ovo je popis suradničkih skupina određenih na ovoj wiki, s njihovim pripadajućim pravima.\nDodatne informacije o pojedinim pravim se mogu pronaći [[{{MediaWiki:Listgrouprights-helppage}}|ovdje]].",
        "listgrouprights-key": "* <span class=\"listgrouprights-granted\">Dodijeljeno pravo</span>\n* <span class=\"listgrouprights-revoked\">Ukinuto pravo</span>",
        "rollback-success": "uklonjeno uređivanje {{GENDER:$1|suradnika|suradnice}} $1\nvraćeno na posljednju inačicu {{GENDER:$2|suradnika|suradnice}} $2.",
        "sessionfailure-title": "Prekid sesije",
        "sessionfailure": "Uočili smo problem s Vašom prijavom. Zadnja naredba nije izvršena kako bi se izbjegla zloupotreba. Molimo Vas da se u pregledniku vratite natrag na prethodnu stranicu, ponovno je učitate i zatim pokušate opet.",
-       "changecontentmodel-legend": "Promjeni model sadržaja",
+       "changecontentmodel-legend": "Promijeni model sadržaja",
        "changecontentmodel-title-label": "Naziv stranice",
        "changecontentmodel-model-label": "Novi model sadržaja",
        "changecontentmodel-reason-label": "Razlog:",
        "exif-gaincontrol-3": "Malo smanjenje",
        "exif-gaincontrol-4": "Veliko smanjenje",
        "exif-contrast-0": "Normalno",
-       "exif-contrast-1": "Meko",
-       "exif-contrast-2": "Tvrdo",
+       "exif-contrast-1": "Slabo",
+       "exif-contrast-2": "Jako",
        "exif-saturation-0": "Normalno",
        "exif-saturation-1": "Niska saturacija",
        "exif-saturation-2": "Visoka saturacija",
index b7e18f0..214d0b1 100644 (file)
        "action-applychangetags": "applicar etiquettas al proprie modificationes",
        "action-changetags": "adder e remover qualcunque etiquettas sur individual versiones e entratas de registro",
        "action-deletechangetags": "deler etiquettas del base de datos",
+       "action-purge": "purgar iste pagina",
        "nchanges": "$1 {{PLURAL:$1|modification|modificationes}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|desde le ultime visita}}",
        "enhancedrc-history": "historia",
index 0c3a581..6a184d7 100644 (file)
        "watchnologin": "ログインしていません",
        "addwatch": "ウォッチリストに追加",
        "addedwatchtext": "「[[:$1]]」および付随する議論ページを、[[Special:Watchlist|ウォッチリスト]]に追加しました。",
+       "addedwatchtext-talk": "「[[:$1]]」および付随するページを[[Special:Watchlist|ウォッチリスト]]に追加しました。",
        "addedwatchtext-short": "ページ「$1」をウォッチリストに追加しました。",
        "removewatch": "ウォッチリストから除去",
        "removedwatchtext": "「[[:$1]]」および付随する議論ページを[[Special:Watchlist|ウォッチリスト]]から除去しました。",
+       "removedwatchtext-talk": "「[[:$1]]」および付随するページを[[Special:Watchlist|ウォッチリスト]]から除去しました。",
        "removedwatchtext-short": "ページ「$1」をウォッチリストから除去しました。",
        "watch": "ウォッチ",
        "watchthispage": "このページをウォッチする",
        "tooltip-ca-nstab-category": "カテゴリページを閲覧",
        "tooltip-minoredit": "この編集に細部の変更の印を付ける",
        "tooltip-save": "変更を保存する",
+       "tooltip-publish": "あなたによる変更を公開",
        "tooltip-preview": "変更内容をプレビューで確認できます。保存前に使用してください。",
        "tooltip-diff": "文章への変更箇所を表示する",
        "tooltip-compareselectedversions": "選択した2つの版の差分を表示する",
index b594b92..61e1a21 100644 (file)
@@ -27,7 +27,9 @@
                        "Ananth subray",
                        "MarcoAurelio",
                        "Macofe",
-                       "రహ్మానుద్దీన్"
+                       "రహ్మానుద్దీన్",
+                       "ಶಿವಕುಮಾರ್ ನಾಯಕ್",
+                       "Yogesh"
                ]
        },
        "tog-underline": "ಕೊಂಡಿಗಳ ಕೆಳಗೆ ಗೆರೆ ತೋರಿಸಿ",
        "actions": "ಕ್ರಿಯೆಗಳು",
        "namespaces": "ನಾಮವರ್ಗಗಳು",
        "variants": "ಹಲವು",
-       "navigation-heading": "ಸà²\82à²\9aರಣà³\86 à²®à³\86ನà³\81",
+       "navigation-heading": "ಸà²\82à²\9aರಣà³\86 à²ªà²\9fà³\8dà²\9fಿ",
        "errorpagetitle": "ದೋಷ",
        "returnto": "$1 ಗೆ ಹಿಂತಿರುಗಿ.",
        "tagline": "{{SITENAME}} ಇಂದ",
        "history_short": "ಇತಿಹಾಸ",
        "updatedmarker": "ನನ್ನ ಕೊನೆಯ ವೀಕ್ಷಣೆಯ ನಂತರ ಬದಲಾಗಿರುವವು",
        "printableversion": "ಪ್ರಿಂಟ್ ಆವೃತ್ತಿ",
-       "permalink": "ಸà³\8dಥಿರ à²¸à²\82ಪರà³\8dà²\95",
+       "permalink": "ಸà³\8dಥಿರ à²\95à³\8aà²\82ಡಿ",
        "print": "ಮುದ್ರಿಸು",
        "view": "ನೋಟ",
        "view-foreign": "$1 ರಲ್ಲಿ ನೋಡಿ",
        "copyrightpage": "{{ns:project}}:ಕೃತಿಸ್ವಾಮ್ಯತೆಗಳು",
        "currentevents": "ಪ್ರಚಲಿತ ಸಂಗತಿಗಳು",
        "currentevents-url": "Project:ಪ್ರಚಲಿತ ಸಂಗತಿಗಳು",
-       "disclaimers": "à²\85ಬಾಧà³\8dಯತೆಗಳು",
+       "disclaimers": "ಹà²\95à³\8dà²\95à³\81 à²¨à²¿à²°à²¾à²\95ರಣೆಗಳು",
        "disclaimerpage": "Project:ಸಾಮಾನ್ಯ ಅಬಾಧ್ಯತೆಗಳು",
        "edithelp": "ಸಂಪಾದನೆಗೆ ಸಹಾಯ",
        "helppage-top-gethelp": "ಸಹಾಯ",
        "policy-url": "Project:ನಿಯಮಾವಳಿಗಳು",
        "portal": "ಸಮುದಾಯ ಪುಟ",
        "portal-url": "Project:ಸಮುದಾಯ ಪುಟ",
-       "privacy": "à²\97à³\8cಪà³\8dಯತà³\86ಯ à²\95ಾರà³\8dಯನೀತಿ",
+       "privacy": "à²\97à³\8cಪà³\8dಯತಾ ನೀತಿ",
        "privacypage": "Project:ಗೌಪ್ಯತೆಯ ಕಾರ್ಯನೀತಿ",
        "badaccess": "ಅನುಮತಿ ದೋಷ",
        "badaccess-group0": "ನೀವು ಕೋರಿರುವ ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ.",
        "previousrevision": "←ಹಿಂದಿನ ಪರಿಷ್ಕರಣೆ",
        "nextrevision": "ಮುಂದಿನ ಪರಿಷ್ಕರಣೆ",
        "currentrevisionlink": "ಈಗಿನ ಪರಿಷ್ಕರಣೆ",
-       "cur": "ಸಧ್ಯದ",
+       "cur": "ಸದ್ಯದ",
        "next": "ಮುಂದಿನದು",
        "last": "ಕೊನೆಯ",
        "page_first": "ಮೊದಲ",
        "recentchangeslinked-summary": "ಒಂದು ನಿರ್ದಿಷ್ಟ ಪುಟದಿಂದ (ಅಥವ ನಿರ್ದಿಷ್ಟ ವರ್ಗಕ್ಕೆ ಸೇರಿರುವ ಪುಟಗಳಿಂದ) ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿ ಇತ್ತೀಚೆಗೆ ಮಾಡಲಾಗಿರುವ ಬದಲಾವಣೆಗಳನ್ನು ಈ ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ.\n[[Special:Watchlist|ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ]] ಇರುವ ಪುಟಗಳು '''ದಪ್ಪ ಅಕ್ಷರ'''ಗಳಲ್ಲಿ ಇವೆ.",
        "recentchangeslinked-page": "ಪುಟದ ಹೆಸರು:",
        "recentchangeslinked-to": "ಇದರ ಬದಲಿಗೆ ನೇಮಿತ ಪುಟಕ್ಕೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ತೋರು",
-       "upload": "ಫà³\88ಲà³\8d à²\85ಪà³\8dಲà³\8bಡà³\8d",
+       "upload": "ಫà³\88ಲà³\8d à²®à³\87ಲà²\95à³\8dà²\95à³\86ರಿಸಿ",
        "uploadbtn": "ಫೈಲನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ",
        "reuploaddesc": "ಅಪ್ಲೋಡ್ ಅನ್ನು ನಿಲ್ಲಿಸಿ ಮತ್ತೆ ಅಪ್ಲೋಡ್ ವಕ್ಕಣೆಗೆ ಹಿಂದಿರುಗಿ",
        "uploadnologin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
        "unusedtemplates": "ಉಪಯೋಗದಲ್ಲಿರದ ಟೆಂಪ್ಲೇಟುಗಳು",
        "unusedtemplatestext": "ಯಾವ ಪುಟದಲ್ಲೂ ಉಪಯೋಗದಲ್ಲಿ ಇರದ ಟೆಂಪ್ಲೇಟುಗಳನ್ನು ಇಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ. ಇವನ್ನು ಅಳಿಸುವ ಮುನ್ನ ಟೆಂಪ್ಲೇಟುಗಳಿಗೆ ಇತರ ಲಿಂಕುಗಳಿದೆಯೆ ಎಂದು ಪರೀಕ್ಷಿಸಲು ಮರೆಯದಿರಿ.",
        "unusedtemplateswlh": "ಇತರ ಕೊಂಡಿಗಳು",
-       "randompage": "ಯಾದà³\83à²\9aà³\8dà²\9bಿà²\95 ಪುಟ",
+       "randompage": "ಯಾವà³\81ದಾದರà³\81 à²\92à²\82ದà³\81 ಪುಟ",
        "randompage-nopages": "ಈ ಪುಟಪ್ರಬೇಧದಲ್ಲಿ ಯಾವ ಪುಟವೂ ಇಲ್ಲ.",
        "randomincategory-category": "ವರ್ಗ:",
        "randomincategory-submit": "ಹೋಗು",
        "tooltip-search": "{{SITENAME}} ಅನ್ನು ಹುಡುಕಿ",
        "tooltip-search-go": "ಇದೇ ಹೆಸರಿನ ಪುಟವಿದ್ದಲ್ಲಿ ಅಲ್ಲಿಗೆ ಹೋಗು",
        "tooltip-search-fulltext": "ಈ ಪಠ್ಯವನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳನ್ನು ಹುಡುಕು",
-       "tooltip-p-logo": "ಮುಖ್ಯ ಪುಟ",
+       "tooltip-p-logo": "ಮುಖ್ಯ ಪುಟಕ್ಕೆ ಭೇಟಿ ಕೊಡಿ",
        "tooltip-n-mainpage": "ಮುಖ್ಯ ಪುಟ ನೋಡಿ",
        "tooltip-n-mainpage-description": "ಮುಖ್ಯ ಪುಟ ನೋಡಿ",
        "tooltip-n-portal": "ಯೋಜನೆಯ ಬಗ್ಗೆ, ನೀವು ಏನು ಮಾಡಬಹುದು, ಎಲ್ಲಿ ಇದರ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳಬಹುದು",
        "tooltip-n-currentevents": "ಪ್ರಸಕ್ತ ಆಗುಹೋಗುಗಳ ಬಗ್ಗೆ ಹಿನ್ನಲೆ ಮಾಹಿತಿ ಪಡೆಯಿರಿ",
        "tooltip-n-recentchanges": "ವಿಕಿಯಲ್ಲಿನ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳ ಪಟ್ಟಿ.",
-       "tooltip-n-randompage": "ಯದà³\83à²\9aà³\8dà²\9bಿà²\95 ಪುಟವೊಂದನ್ನು ತೋರಿಸು",
+       "tooltip-n-randompage": "ಯಾವà³\81ದಾದರà³\81 ಪುಟವೊಂದನ್ನು ತೋರಿಸು",
        "tooltip-n-help": "ಇದರ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳಲು ಜಾಗ.",
        "tooltip-t-whatlinkshere": "ಇಲ್ಲಿಗೆ ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಎಲ್ಲಾ ವಿಕಿ ಪುಟಗಳ ಪಟ್ಟಿ",
        "tooltip-t-recentchangeslinked": "ಈ ಪುಟದಿಂದ ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಪುಟಗಳಲ್ಲಿನ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು",
        "tooltip-feed-atom": "ಈ ಪುಟಕ್ಕೆ Atom ಫೀಡು",
        "tooltip-t-contributions": "ಈ ಸದಸ್ಯರ ಕಾಣಿಕೆಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರಿಸು",
        "tooltip-t-emailuser": "ಈ ಸದಸ್ಯರಿಗೆ ಇ-ಅಂಚೆಯನ್ನು ಕಳುಹಿಸು",
-       "tooltip-t-upload": "ಫà³\88ಲನà³\8dನà³\81 à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²¾à²¡ಿ",
+       "tooltip-t-upload": "ಫà³\88ಲನà³\8dನà³\81 à²®à³\87ಲà²\95à³\8dà²\95à³\86ರಿಸಿ",
        "tooltip-t-specialpages": "ಎಲ್ಲಾ ವಿಶೇಷ ಪುಟಗಳ ಪಟ್ಟಿ",
        "tooltip-t-print": "ಈ ಪುಟದ ಮುದ್ರಣ ಮಾಡಬಹುದಾದಂತ ಆವೃತ್ತಿ",
        "tooltip-t-permalink": "ಪುಟದ ಈ ಆವೃತ್ತಿಗೆ ಶಾಶ್ವತ ಕೊಂಡಿ",
        "file-nohires": "ಇದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ವಿವರವಾದ ನೋಟ ಇಲ್ಲ.",
        "svg-long-desc": "SVG ಫೈಲು, ಸುಮಾರಾಗಿ $1 × $2 ಚಿತ್ರಬಿಂದುಗಳು, ಫೈಲಿನ ಗಾತ್ರ: $3",
        "show-big-image": "ಮೂಲ ಕಡತ",
+       "show-big-image-preview": "ಈ ಮುನ್ನೋಟ ಗಾತ್ರ:$1.",
+       "show-big-image-other": "ಇತರೆ{{PLURAL:$2|resolution|resolutions}}: $1.",
        "show-big-image-size": "$1 × $2 ಪಿಕ್ಸೆಲ್‌ಗಳು",
        "file-info-gif-looped": "ಲೂಪ್",
        "file-info-png-looped": "ಲೂಪ್",
        "specialpages-group-pages": "ಪುಟಗಳ ಪಟ್ಟಿ",
        "specialpages-group-redirects": "ವಿಶೇಷ ಪುಟಗಳನ್ನು ಪುನರ್ನಿರ್ದೇಶಿಸಲಾಗುತ್ತಿದೆ",
        "blankpage": "ಖಾಲಿ ಪುಟ",
-       "tag-filter": "[[ವಿಶೇಷ:ಟ್ಯಾಗ್‌ಗಳು|ಟ್ಯಾಗ್]] ಶೋಧಕ:",
+       "tag-filter": "[[Special:Tags|Tag]] ಶೋಧಕ:",
        "tag-filter-submit": "ಶೋಧಕ",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ಟ್ಯಾಗ್|ಟ್ಯಾಗ್‌ಗಳು}}]]: $2)",
        "tags-title": "ಅಂಕಿತಗಳು",
index 6b49978..f548224 100644 (file)
        "watchnologin": "로그인하지 않음",
        "addwatch": "주시문서 목록에 추가",
        "addedwatchtext": "\"[[:$1]]\" 문서와 그 토론 문서가 [[Special:Watchlist|주시문서 목록]]에 추가되었습니다.",
+       "addedwatchtext-talk": "\"[[:$1]]\" 문서와 관련 문서가 [[Special:Watchlist|주시문서 목록]]에 추가되었습니다.",
        "addedwatchtext-short": "\"$1\" 문서를 주시문서 목록에 추가했습니다.",
        "removewatch": "주시문서 목록에서 제거",
        "removedwatchtext": "\"[[:$1]]\" 문서와 그 토론 문서가 [[Special:Watchlist|주시문서 목록]]에서 제거되었습니다.",
+       "removedwatchtext-talk": "\"[[:$1]]\" 문서와 관련 문서가 [[Special:Watchlist|주시문서 목록]]에서 제거되었습니다.",
        "removedwatchtext-short": "\"$1\" 문서를 주시문서 목록에 제거했습니다.",
        "watch": "주시",
        "watchthispage": "주시하기",
index b54740c..087ea59 100644 (file)
        "watchnologin": "Не сте најавени",
        "addwatch": "Додај во набљудувани",
        "addedwatchtext": "„[[:$1]]“ и нејзината страница за разговор се додадени во вашите [[Special:Watchlist|набљудувања]].",
+       "addedwatchtext-talk": "„[[:$1]]“ и нејзината поврзана страница се додадени во вашите [[Special:Watchlist|набљудувања]].",
        "addedwatchtext-short": "Страницата „$1“ е додадена во вашите набљудувања.",
        "removewatch": "Отстрани набљудуваните",
        "removedwatchtext": "„[[:$1]]“ и нејзината страница за разговор се отстранети од вашите [[Special:Watchlist|набљудувања]].",
+       "removedwatchtext-talk": "„[[:$1]]“ и нејзината поврзана страница се отстранети од вашите [[Special:Watchlist|набљудувања]].",
        "removedwatchtext-short": "Страницата „$1“ е отстранета од вашите набљудувања.",
        "watch": "Набљудувај",
        "watchthispage": "Набљудувај ја страницава",
index cb59019..591bdec 100644 (file)
        "thursday": "Īcmācuīlilhuitl",
        "friday": "Īcchicuacemilhuitl",
        "saturday": "Īcchicōmilhuitl",
-       "sun": "ilhui",
-       "mon": "ilhui",
-       "tue": "ilhui",
-       "wed": "ilhui",
-       "thu": "ilhui",
+       "sun": "Cemilhui",
+       "mon": "Ōmilhui",
+       "tue": "Ēyilhui",
+       "wed": "Nāuhilhui",
+       "thu": "Mācuililhui",
        "fri": "6 ilhui",
        "sat": "7 ilhui",
-       "january": "Īccēmētztli",
-       "february": "Īcōmēmētztli",
-       "march": "Īcyēyimētztli",
-       "april": "Īcnāuhtetlmētztli",
-       "may_long": "Īcmācuīllimētztli",
-       "june": "Īcchicuacemmētztli",
-       "july": "Īcchicōmemētztli",
-       "august": "Īcchicuēyimētztli",
-       "september": "Īcchiucnāhuimētztli",
-       "october": "Īcmahtlāctlimētztli",
-       "november": "Īcmahtlāctlioncēmētztli",
-       "december": "Īcmahtlāctliomōmemētztli",
-       "january-gen": "Īccēmētztli",
+       "january": "Ic cē mētztli",
+       "february": "Ic ōmemētztli",
+       "march": "Ic ēyi mētztli",
+       "april": "Ic nāuhtetl mētztli",
+       "may_long": "Ic mācuīlli mētztli",
+       "june": "Ic chicuacē mētztli",
+       "july": "Ic chicōme mētztli",
+       "august": "Ic chicuēyi mētztli",
+       "september": "Ic chiucnāhui mētztli",
+       "october": "Ic mahtlāctli mētztli",
+       "november": "Ic mahtlāctli oncē mētztli",
+       "december": "Ic mahtlāctli omōme mētztli",
+       "january-gen": "Ic cē mētztli",
        "february-gen": "Īcōmemētztli",
        "march-gen": "Īcyēyimētztli",
-       "april-gen": "Īcnāuhtetlmētztli",
+       "april-gen": "Ic nāuhtetl mētztli",
        "may-gen": "Īcmācuīllimētztli",
-       "june-gen": "Īcchicuacemmētztli",
-       "july-gen": "Īcchicōmemētztli",
+       "june-gen": "Ic chicuacemmētztli",
+       "july-gen": "Ic chicōme mētztli",
        "august-gen": "Īcchicuēyimētztli",
        "september-gen": "Īcchiucnāhuimētztli",
        "october-gen": "Īcmahtlāctetlmētztli",
        "november-gen": "Īcmahtlāctetloncēmētztli",
        "december-gen": "Īcmahtlāctetlomōmemētztli",
-       "jan": "1 Mētz",
-       "feb": "2 Mētz",
-       "mar": "3 Mētz",
-       "apr": "4 Mētz",
-       "may": "5 Mētz",
-       "jun": "6 Mētz",
-       "jul": "7 Mētz",
-       "aug": "8 Mētz",
-       "sep": "9 Mētz",
-       "oct": "10 Mētz",
-       "nov": "11 Mētz",
-       "dec": "12 Mētz",
+       "jan": "Ic cē",
+       "feb": "Ic ōme",
+       "mar": "Ic ēyi",
+       "apr": "Nāhui",
+       "may": "Mācuilli",
+       "jun": "Chicuacē",
+       "jul": "Chicōme",
+       "aug": "Chicuēyi",
+       "sep": "Chiucnāhui",
+       "oct": "Mahtlāctli",
+       "nov": "Mahtlāctlioncē",
+       "dec": "Mahtlāctliomōme",
        "january-date": "Īccēmētztli $1",
        "february-date": "Īcōmemētztli $1",
        "march-date": "Īquēyimētztli $1",
        "moredotdotdot": "Huehca ōmpa...",
        "mypage": "Noāmauh",
        "mytalk": "Nozānīl",
-       "anontalk": "Inīn IP ītēixnāmiquiliz",
+       "anontalk": "Tēixnāmiquiliztli",
        "navigation": "Nēnemōhualiztli",
        "and": "&#32;īhuān",
        "qbfind": "Xicahci",
        "tagline": "Īhuīcpa {{SITENAME}}",
        "help": "Tēpalēhuiliztli",
        "search": "Mà motèmo",
-       "searchbutton": "Xictēmo",
+       "searchbutton": "Tictēmōz",
        "go": "Xiyauh",
        "searcharticle": "Xiyauh",
        "history": "Tlaīxtli ītlahtōllo",
        "viewsource": "Xiquitta mēyalli",
        "viewsource-title": "Xiquitta in $1 īmēyal",
        "actionthrottled": "Tlachīhualiztli ōmotzacuili",
-       "viewsourcetext": "Tihuelīti tiquitta auh ticcopīna inīn zāzanilli ītlahtōlcaquiliztilōni:",
+       "viewsourcetext": "Tihuelīti tiquittaz auh ticcopīnaz inīn zāzanilli īmachiyōnecaquilizmēyal.",
        "namespaceprotected": "Ahmo tiquihuelīti tiquimpatla zāzaniltin īpan '''$1'''.",
        "ns-specialprotected": "In nònkuâkìskàtlaìxtlapaltìn awel ìmpan nemàtilòs mokinyèktlàlis.",
        "titleprotected": "Inīn zāzanilli ōmoquīxti ic tlachīhualiztli ic [[User:$1|$1]].\nŌquihto: <em>$2</em>",
        "userexists": "In tlatequitiltilīltōcāitl in ōquipehpen ye ia.\nTimitztlātlauhtiah xicpehpena occē.",
        "loginerror": "Ahcuallōtl tlacalaquiliztechcopa",
        "noname": "Ahmo ōtiquihto cualli tlatequitiltilīlli tōcāitl.",
-       "loginsuccesstitle": "Cualli calaquiliztli",
+       "loginsuccesstitle": "Ōticalac",
        "loginsuccess": "'''Ōticalac {{SITENAME}} quemeh \"$1\".'''",
-       "nosuchuser": "Ayāc tlatequitiltilīlli motōcāitia \"$1\".\nIn tlatequitiltilīltōcāitl quimati in huēyimachiyōtlahtōliztli.\nXiquitta in yēquihcuilōlli, ahnozo [[Special:CreateAccount|xicchīhua yancuīc cuenta]].",
+       "nosuchuser": "Ayāc tlatequitiltilīlli motōcāitīlo «$1».\nn tlatequitiltilīltōcāitl quimati in huēyimachiyōtlahtōliztli.\nXiquitta moyēquihcuilōl, ahnozo [[Special:CreateAccount|xicchīhua yancuīc cuentah]].",
        "nosuchusershort": "Ayāc tlatequitiltilīlli motōcāitia \"$1\". Xiquitta in tlein ōtitlahcuiloh melāhuacā cah.\nXiquitta moyēquihcuilōl.",
        "nouserspecified": "Mohuīquilia tiquihtoa cualli tlatequitiltilīltōcāitl.",
        "wrongpassword": "Ahcualli motlahtōlichtacāyo.\nTimitztlātlauhtia xicchīhua occeppa.",
        "newpassword": "Yancuīc motlahtōlichtacayo:",
        "retypenew": "Occeppa xiquihcuiloa yancuīc motlahtōlichtacayo:",
        "resetpass_submit": "Xicpatlāz motlahtōlichtacāyo auh xicalaquīz",
-       "changepassword-success": "Mochtacātlahtōl cualli ōtlapatlalo.",
+       "changepassword-success": "Moichtacātlahtōl ōmopatlac.",
        "resetpass_forbidden": "Tlahtōlichtacayōtl ahmo mohuelītih mopatlah",
        "resetpass-submit-loggedin": "Ticpatlāz motlahtōlichtacāyo",
        "resetpass-submit-cancel": "Xiccāhua",
        "sig_tip": "Motōcā īca cāhuitl",
        "hr_tip": "Pāntli",
        "summary": "Mopatlaliz:",
-       "subject": "Tōcāitl/Āmoxmachiyōtl:",
+       "subject": "Ītechpa:",
        "minoredit": "Ca tepitōn inīn tlapatlaliztli",
        "watchthis": "Xicpiya inīn tlaīxtli",
        "savearticle": "Xicpiya tlaīxtli",
        "accmailtext": "Ōquiyōcox zāzochtacātlahtōlli in [[User talk:$1|$1]] auh ōmoquitītlan īhuīc $2. Tihueliti ticpatlaz īpan ''[[Special:ChangePassword|Ticpatlaz in ]]'' in ōticalaco achtopa.",
        "newarticle": "(Yancuic)",
        "newarticletext": "Ōtictocac cētiliztli cē zāzanilhuīc oc ahmo ia. Intlā quiēlēhuia quichīhua, xitlahcuiloa niman (nō xiquitta [$1 tēpalēhuiliztli zāzanilli] huehca ōmpa tlapatlaliztli). Intlā ahmo, yāuh achtopa zāzanilli.",
-       "noarticletext": "In āxcān, ahmō onca tlahcuilōlli inīn zāzanilpan.\nTihuelīti [[Special:Search/{{PAGENAME}}|tictēmoa inīn zāzaniltōcācopa]] occequīntīn zāzanilpan,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} machiyōmacalpan], ahnozo [{{fullurl:{{FULLPAGENAME}}|action=edit}} ticpatla inīn zāzanilli]</span>.",
+       "noarticletext": "In āxcān, ahmō onca tlahcuilōlli inīn zāzanilpan.\nTihuelīti [[Special:Search/{{PAGENAME}}|tictēmōz inīn zāzanilli ītōca]] occequīntīn zāzanilpan,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xictēmoa īpan in tlapōhualāmatechpa],\nahnozo [{{fullurl:{{FULLPAGENAME}}|action=edit}} xichīhua inīn zāzanilli]</span>.",
        "userpage-userdoesnotexist": "Ahmo ia cuentah \"<nowiki>$1</nowiki>\" ītōca. Timitztlātlauhtiah xitēchquinōtza intlā ticchīhuāz intlā nozo ticpatlāz inīn zāzanilli.",
        "usercsspreview": "'''Ca inīn moachtochīhualiz ītechcopa moCSS.'''\n'''¡Ahmo ōmochīuh nozan!'''",
        "userjspreview": "'''Ca inīn moachtochīhualiz ītechcopa moJavaScript.'''\n'''¡Ahmo ōmochīuh nozan!'''",
        "currentrev": "Āxcān tlapatlaliztli",
        "currentrev-asof": "Āxcān tlachiyaliztli īpan $1",
        "revisionasof": "Tlachiyaliztli īpan $1",
-       "revision-info": "Tlachiyaliztli īpan $1; $2",
+       "revision-info": "Tlachiyaliztli īpan $1 īpal {{GENDER:$6|$2}}$7",
        "previousrevision": "← Huēhueh tlapatlaliztli",
        "nextrevision": "Yancuīc tlapatlaliztli →",
        "currentrevisionlink": "Āxcān tlapatlaliztli",
        "shown-title": "Quinēxiltīz $1 {{PLURAL:$1|mochīhualiztli}} cece āmac",
        "viewprevnext": "Xiquintta ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Ye ia zāzanilli ītōca \"[[$1]]\" inīn huiquipan'''",
-       "searchmenu-new": "'''Tihuelīti ticchīhuāz zāzanilli ītōca \"[[:$1]]\" inīn huiquipan'''",
+       "searchmenu-new": "<strong>Ticchīhuāz in zāzanilli «[[:$1]]» inīn huiquipan.</strong> {{PLURAL:$2|0=|Nō xiquitta in tlanāmiquiliztli in mochīhualiztli.}}",
        "searchprofile-articles": "Tlapiyaliztli zāzanilli",
        "searchprofile-images": "Nepapan media",
        "searchprofile-everything": "Mochi",
        "gender-male": "Oquichtli",
        "gender-female": "Cihuātl",
        "email": "E-mail",
-       "prefs-help-realname": "Melāhuac motōca.\nIntlā ticnequi, tlācah quimatīzqueh motequi.",
+       "prefs-help-realname": "In melāhuac tōcāitl mopehpenaliztli.\nIntlā ticmaca, momitztlaīxcoyantīz in motequi.",
        "prefs-help-email-required": "Tihuīquilia quihcuiloa mo e-mailcān.",
        "prefs-signature": "Motōcā",
        "userrights-user-editname": "Xihcuiloa cē tlatequitiltilīltōcāitl:",
-       "editusergroup": "Tiquimpatlāz tlatequitiltilīlli olōlli",
+       "editusergroup": "Tiquimpatlāz {{GENDER:$1|tlatequitiltilīlli}} īolōl",
        "userrights-editusergroup": "Tiquimpatlāz tlatequitiltilīlli olōlli",
-       "saveusergroups": "Tiquimpiyāz tlatequitiltilīlli olōlli",
+       "saveusergroups": "Tiquimpiyāz {{GENDER:$1|tlatequitiltilīlli}} īolōl",
        "userrights-groupsmember": "Olōlco:",
        "userrights-reason": "Īxtlamatiliztli:",
        "userrights-no-interwiki": "Ahmo tihuelīti ticpatla tlatequitiltilīlli huelītiliztli occequīntīn huiquipan.",
        "rightslog": "Tlatequitiltilīlli huelītiliztli tlahcuilōlloh",
        "action-read": "xāmapōhua inīn tlaīxtli",
        "action-edit": "xicpatla inīn tlaīxtli",
-       "action-createpage": "xicchīhua tlaīxtli",
-       "action-createtalk": "tiquinchīhuāz tēixnāmiquiliztli zāzaniltin",
+       "action-createpage": "xicchīhua inīn āmatl",
+       "action-createtalk": "xicchīhuā inīn tēixnāmiquiliztli zāzaniltin",
        "action-createaccount": "ticchīhuaz inīn tlatequitiltilīlli īcuentah",
        "action-move": "ticpatlāz inīn zāzanilli",
        "action-move-subpages": "tiquimpatlāz inīn zāzanilli īhuān zāzaniltōn",
        "newpageletter": "Y",
        "boteditletter": "T",
        "number_of_watching_users_pageview": "[$1 tlatequitiltilīlli {{PLURAL:$1|tlachiya|tlachiyah}}]",
-       "rc_categories_any": "Zāzo",
+       "rc_categories_any": "Zāzo in tlaihittalli",
        "newsectionsummary": "Yancuīc tlahtōltzintli: /* $1 */",
        "recentchangeslinked": "Tlapatlaliztli tzonhuilizpan",
        "recentchangeslinked-feed": "Tlapatlaliztli tzonhuilizpan",
        "whatlinkshere-next": "{{PLURAL:$1|niman|$1 niman}}",
        "whatlinkshere-links": "← tzòwilistìn",
        "whatlinkshere-hideredirs": "$1 tlacuepaliztli",
-       "whatlinkshere-hidelinks": "$1 tzòwilistìn",
+       "whatlinkshere-hidelinks": "$1 tzonhuiliztli",
        "whatlinkshere-hideimages": "$1 tlahcuilōltzonhuīliztli",
        "whatlinkshere-filters": "Tlatzetzelōni",
        "blockip": "Tiquitzacuilīz tlatequitiltilīlli",
        "importbadinterwiki": "Ahcualli interhuiqui tzonhuiliztli",
        "import-upload": "Tiquinquetzāz XML tlahcuilōlli",
        "importlogpage": "Tiquincōhuāz tlahcuilōlloh",
-       "tooltip-pt-userpage": "Notlatequitiltilīlzāzanil",
-       "tooltip-pt-mytalk": "Mozānīl",
-       "tooltip-pt-preferences": "Mopanitlatlālīl",
+       "tooltip-pt-userpage": "{{GENDER:|Motlatequitiltilīlzāzanil}}",
+       "tooltip-pt-mytalk": "{{GENDER:|Motēīxnāmiquiliztli}}",
+       "tooltip-pt-preferences": "{{GENDER:|Motlaēlēhuiliz}}",
        "tooltip-pt-watchlist": "Zāzaniltin tiquintlachiya ic tlapatlaliztli",
-       "tooltip-pt-mycontris": "Notlahcuilōl",
+       "tooltip-pt-mycontris": "{{GENDER:|Motlahcuilōl}}",
        "tooltip-pt-login": "Tihuelīti timocalaqui, tēl ahmo tihuīquilia.",
        "tooltip-pt-logout": "Tiquīzāz",
        "tooltip-ca-talk": "Inīn tlahcuilōlli zānīllī ītechcopa",
        "tooltip-t-recentchangeslinked": "Yancuic tlapatlaliztli inīn zāzanilhuīcpa moquintzonhuilia",
        "tooltip-feed-rss": "RSS tlachicāhualiztli inīn zāzaniltechcopa",
        "tooltip-feed-atom": "Atom tlachicāhualiztli inīn zāzaniltechcopa",
-       "tooltip-t-contributions": "Xiquitta inīn tlatequitiltilīlli ītlahcuilōl",
+       "tooltip-t-contributions": "Tlapōhualmatl ītechpa {{GENDER:$1|inīn tlatequitiltilīlli}} ītlahcuilōl",
        "tooltip-t-emailuser": "Tiquihcuilōz inīn tlatequitiltililhuīc",
        "tooltip-t-upload": "Tiquinquetzāz tlahcuilōlli",
        "tooltip-t-specialpages": "Ìntlapòpòwaltekpànal mochtìn in nònkuâkìskàtlaìxtlapaltìn",
        "tooltip-t-print": "Tepoztlahcuilōlli",
        "tooltip-ca-nstab-main": "Xiquitta in tlamantlaīxtli",
        "tooltip-ca-nstab-user": "Xiquitta tlatequitiltilīlli īzāzanil",
-       "tooltip-ca-nstab-special": "Inìn sè nònkuâkìskàtlaìxtlapalli, yêìka awel nemàtilòs moyêyèktlàlis in tlaìxtlapalli",
+       "tooltip-ca-nstab-special": "Inīn nōncuahquīzqui āmatl, auh ahmohuelitizpatla",
        "tooltip-ca-nstab-project": "Xiquitta in tlatequipanōllaīxtli",
        "tooltip-ca-nstab-image": "Xiquittāz īxipzāzanilli",
        "tooltip-ca-nstab-mediawiki": "Xiquitta in tlahcuilōltzin",
index 057cac7..6332449 100644 (file)
        "moredotdotdot": "Mer …",
        "morenotlisted": "Denne lista er ufullstendig.",
        "mypage": "Min brukerside",
-       "mytalk": "Min diskusjonsside",
+       "mytalk": "Diskusjon",
        "anontalk": "Brukerdiskusjon",
        "navigation": "Navigasjon",
        "and": "&#32;og",
index 2e34b74..259e6a1 100644 (file)
        "listgrouprights-group": "समूह",
        "listgrouprights-rights": "अधिकारहरु",
        "listgrouprights-helppage": "Help:सामूहिक अधिकारहरु",
-       "listgrouprights-members": "(सदसà¥\8dयहरà¥\81को सूची)",
+       "listgrouprights-members": "(सदसà¥\8dयहरà¥\82को सूची)",
        "listgrouprights-addgroup": "{{PLURAL:$2|समूह|समूहहरु}}: $1 थप्ने",
        "listgrouprights-removegroup": "{{PLURAL:$2|समूह|समूहहरु}}: $1 हटाउने",
        "listgrouprights-addgroup-all": "सबै समूह थप्ने",
        "special-characters-title-emdash": "इएम ड्यास",
        "special-characters-title-minus": "घटाउने चिन्ह",
        "mw-widgets-titleinput-description-new-page": "हालसम्म पृष्ठ उपलब्ध छैन्",
-       "mw-widgets-titleinput-description-redirect": "$1 मा जाने",
-       "api-error-blacklisted": "एउटा फरक वर्णनात्मक शीर्षक चयन गर्नुहोस् ।"
+       "mw-widgets-titleinput-description-redirect": "$1 मा जाने"
 }
index 19041c9..3357ad2 100644 (file)
@@ -78,7 +78,8 @@
                        "Lemondoge",
                        "Dinosaur918",
                        "Jdforrester",
-                       "Jeleniccz"
+                       "Jeleniccz",
+                       "MrLeopold"
                ]
        },
        "tog-underline": "Koppelingen onderstrepen:",
        "action-managechangetags": "labels aan te maken en te verwijderen",
        "action-applychangetags": "labels aan uw bewerkingen toe te voegen",
        "action-changetags": "willekeurige labels toe te voegen aan en te verwijderen van versies en logboekregels",
+       "action-purge": "Schoon deze pagina op",
        "nchanges": "$1 {{PLURAL:$1|bewerking|bewerkingen}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sinds uw laatste bezoek}}",
        "enhancedrc-history": "geschiedenis",
index cffe63d..66bf6a4 100644 (file)
        "yourdomainname": "ਤੁਹਾਡਾ ਡੋਮੇਨ:",
        "password-change-forbidden": "ਇਸ ਵਿਕੀ ਤੇ ਤੁਸੀਂ ਪਾਸਵਰਡ ਨਹੀਂ ਬਦਲ ਸਕਦੇ।",
        "externaldberror": "ਜਾਂ ਤਾਂ ਪ੍ਰਮਾਣਕੀ ਡਾਟਾਬੇਸ ਦੋਸ਼ ਆਇਆ ਹੈ ਜਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਬਾਹਰੀ ਖਾਤੇ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।",
-       "login": "ਲਾà¨\97à¨\87ਨ",
+       "login": "ਦਾà¨\96ਲ",
        "login-security": "ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੜਤਾਲ ਕਰਵਾਉ",
        "nav-login-createaccount": "ਲਾਗਇਨ/ਖਾਤਾ ਬਣਾਓ",
        "userlogin": "ਲਾਗਇਨ/ਖਾਤਾ ਬਣਾਓ",
        "loginlanguagelabel": "ਭਾਸ਼ਾ: $1",
        "suspicious-userlogout": "ਤੁਹਾਡੀ ਵਿਦਾਇਗੀ ਦੀ ਬੇਨਤੀ ਨਕਾਰ ਦਿੱਤੀ ਗਈ ਕਿਉਂਕਿ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ ਕਿਸੇ ਟੁੱਟੇ ਹੋਏ ਬਰਾਊਜ਼ਰ ਜਾਂ ਕੈਸ਼ ਹੋਈ ਪ੍ਰਾਕਸੀ ਤੋਂ ਭੇਜੀ ਗਈ ਸੀ।",
        "createacct-another-realname-tip": "ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ।\nਜੇਕਰ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।",
-       "pt-login": "ਲਾà¨\97 à¨\87ਨ",
-       "pt-login-button": "ਲਾà¨\97 à¨\87ਨ",
+       "pt-login": "ਦਾà¨\96ਲ",
+       "pt-login-button": "ਦਾà¨\96ਲ",
        "pt-createaccount": "ਖਾਤਾ ਬਣਾਓ",
        "pt-userlogout": "ਬਾਹਰ ਆਉ",
        "php-mail-error-unknown": "PHP ਦੇ ਮੇਲ() ਕਰਜ ਵਿੱਚ ਅਣਜਾਣ ਦੋਸ਼",
        "nosuchsectiontitle": "ਭਾਗ ਲੱਭ ਨਹੀਂ ਰਿਹਾ",
        "nosuchsectiontext": "ਤੁਸੀਂ ਨਾ-ਮੌਜੂਦ ਭਾਗ ਨੂੰ ਸੋਧਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ।\nਸ਼ਾਇਦ ਤੁਹਾਡੇ ਸਫ਼ੇ ਨੂੰ ਵੇਖਣ ਦੇ ਦੌਰਾਨ ਇਹ ਮਿਟਾਇਆ ਜਾਂ ਇਸਦਾ ਸਿਰਲੇਖ ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।",
        "loginreqtitle": "ਲਾਗਇਨ ਚਾਹੀਦਾ ਹੈ",
-       "loginreqlink": "ਲਾà¨\97à¨\87ਨ",
+       "loginreqlink": "ਦਾà¨\96ਲ",
        "loginreqpagetext": "ਹੋਰ ਸਫ਼ੇ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ $1 ਕਰਨਾ ਪਵੇਗਾ।",
        "accmailtitle": "ਪਾਸਵਰਡ ਭੇਜਿਆ।",
        "accmailtext": "[[User talk:$1|$1]] ਲਈ ਰਲ਼ਵੇਂ ਤੌਰ ’ਤੇ ਬਣਿਆ ਪਾਸਵਰਡ $2 ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।\nਇਸ ਨਵੇਂ ਖਾਤੇ ਲਈ ਲਾਗਇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ ''[[Special:ChangePassword|ਪਾਸਵਰਡ ਬਦਲੋ]]'' ’ਤੇ ਜਾ ਕੇ ਪਾਸਵਰਡ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।",
        "tooltip-pt-mycontris": "ਤੁਹਾਡੇ ਯੋਗਦਾਨਾਂ ਦੀ ਸੂਚੀ",
        "tooltip-pt-login": "ਤੁਹਾਨੂੰ ਦਾਖ਼ਲ ਹੋਣ ਲਈ ਪ੍ਰੇਰਿਆ ਜਾਂਦਾ ਹੈ; ਪਰ ਇਹ ਕੋਈ ਲਾਜ਼ਮੀ ਨਹੀਂ",
        "tooltip-pt-logout": "ਸਾਈਟ ਤੋਂ ਬਾਹਰ ਆਉ",
-       "tooltip-pt-createaccount": "ਤà©\81ਹਾਨà©\82à©° à¨\96ਾਤਾ à¨¬à¨£à¨¾à¨\89ਣ à¨¤à©\8bà¨\82 à¨¬à¨¾à¨\85ਦ à¨²à¨¾à¨\97 à¨\87ਨ ਕਰਨ ਦੀ ਸਲਾਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ; ਹਾਲਾਂਕਿ ਇਹ ਲਾਜ਼ਮੀ ਨਹੀਂ",
+       "tooltip-pt-createaccount": "ਤà©\81ਹਾਨà©\82à©° à¨\96ਾਤਾ à¨¬à¨£à¨¾à¨\89ਣ à¨¤à©\8bà¨\82 à¨¬à¨¾à¨\85ਦ à¨¦à¨¾à¨\96ਲ ਕਰਨ ਦੀ ਸਲਾਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ; ਹਾਲਾਂਕਿ ਇਹ ਲਾਜ਼ਮੀ ਨਹੀਂ",
        "tooltip-ca-talk": "ਸਮਗੱਰੀ ਸਫ਼ੇ ਬਾਰੇ ਚਰਚਾ",
        "tooltip-ca-edit": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ",
        "tooltip-ca-addsection": "ਨਵਾਂ ਭਾਗ ਸ਼ੁਰੂ ਕਰੋ",
index 5eb8b4a..2e10b6a 100644 (file)
        "watchnologin": "Nie jesteś zalogowany",
        "addwatch": "Dodaj do listy obserwowanych",
        "addedwatchtext": "Strona „[[:$1|$1]]” wraz ze swoją stroną dyskusji została dodana do Twojej [[Special:Watchlist|listy obserwowanych]].",
+       "addedwatchtext-talk": "Strona „[[:$1]]” i strony z nią związane zostały dodane do Twojej [[Special:Watchlist|listy obserwowanych]].",
        "addedwatchtext-short": "Strona „$1” została dodana do twojej listy obserwowanych.",
        "removewatch": "Usuń z listy obserwowanych",
        "removedwatchtext": "Strona „[[:$1|$1]]” wraz ze swoją stroną dyskusji została usunięta z Twojej [[Special:Watchlist|listy obserwowanych]].",
+       "removedwatchtext-talk": "Strona „[[:$1]]” i strony z nią związane zostały usunięte z Twojej [[Special:Watchlist|listy obserwowanych]].",
        "removedwatchtext-short": "Strona „$1” została usunięta z twojej listy obserwowanych.",
        "watch": "Obserwuj",
        "watchthispage": "Obserwuj",
        "confirm-unwatch-button": "OK",
        "confirm-unwatch-top": "Usunąć tę stronę z listy obserwowanych?",
        "confirm-rollback-button": "OK",
+       "confirm-rollback-top": "Wycofać edycje tej strony?",
        "percent": "$1%",
        "quotation-marks": "„$1”",
        "imgmultipageprev": "← poprzednia strona",
        "timezone-local": "Czas lokalny",
        "duplicate-defaultsort": "Uwaga: Domyślnym kluczem sortowania będzie „$2” i zastąpi on wcześniej wykorzystywany klucz „$1”.",
        "duplicate-displaytitle": "<strong>Uwaga:</strong> Wyświetlenie tytułu „$2” powoduje nadpisanie wcześniej wyświetlanego tytułu „$1”.",
+       "restricted-displaytitle": "<strong>Ostrzeżenie:</strong> Tytuł do wyświetlania \"$1\" został zignorowany, ponieważ nie jest odpowiednikiem aktualnego tytułu tej strony.",
        "invalid-indicator-name": "<strong>Błąd:</strong> Atrybut stanu strony <code>name</code> nie może być pusty.",
        "version": "Wersja oprogramowania",
        "version-extensions": "Zainstalowane rozszerzenia",
        "tags-deactivate": "dezaktywuj",
        "tags-hitcount": "$1 {{PLURAL:$1|zmiana|zmiany|zmian}}",
        "tags-manage-no-permission": "Nie masz uprawnień do zarządzania znacznikami.",
+       "tags-manage-blocked": "Nie możesz zarządzać znacznikami zmian, kiedy jesteś zablokowany.",
        "tags-create-heading": "Utwórz nowy znacznik",
        "tags-create-explanation": "Nowe znaczniki będą dostępne domyślnie dla użytkowników i botów.",
        "tags-create-tag-name": "Nazwa znacznika:",
        "tags-delete-not-found": "Znacznik „$1” nie istnieje.",
        "tags-delete-too-many-uses": "Znacznik „$1” jest stosowany w więcej niż {{PLURAL:$2|jednej wersji|$2 wersjach}}, co oznacza, że nie może być usunięty.",
        "tags-delete-warnings-after-delete": "Znacznik „$1” został usunięty, ale {{PLURAL:$2|otrzymano następujące ostrzeżenie|otrzymano następujące ostrzeżenia}}:",
+       "tags-delete-no-permission": "Nie masz uprawnień do usuwania znaczników zmian.",
        "tags-activate-title": "Aktywacja znacznika",
        "tags-activate-question": "Zamierzasz aktywować znacznik „$1”.",
        "tags-activate-reason": "Powód:",
        "tags-deactivate-not-allowed": "Nie można dezaktywować znacznika „$1”.",
        "tags-deactivate-submit": "Dezaktywuj",
        "tags-apply-no-permission": "Nie masz uprawnień do wprowadzania znaczników wraz z własnymi zmianami.",
+       "tags-apply-blocked": "Nie możesz stosować znaczników do swoich zmian, gdy jesteś zablokowany.",
        "tags-apply-not-allowed-one": "Znacznik „$1” nie może zostać wprowadzony ręcznie.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|Następujący znacznik nie może zostać wprowadzony ręcznie|Następujące znaczniki nie mogą zostać wprowadzone ręcznie}}: $1",
        "tags-update-no-permission": "Nie masz uprawnień do dodawania lub usuwania znaczników z poszczególnych wersji lub wpisów w rejestrze.",
+       "tags-update-blocked": "Nie możesz dodawać i usuwać znaczników zmian, kiedy jesteś zablokowany.",
        "tags-update-add-not-allowed-one": "Znacznik „$1” nie może zostać dodany ręcznie.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|Następujący znacznik nie może zostać dodany ręcznie|Następujące znaczniki nie mogą zostać dodane ręcznie}}: $1",
        "tags-update-remove-not-allowed-one": "Znacznika „$1” nie można usunąć.",
        "api-error-nomodule": "Błąd wewnętrzny – nie określono modułu przesyłania plików.",
        "api-error-ok-but-empty": "Błąd wewnętrzny – brak odpowiedzi od serwera.",
        "api-error-overwrite": "Nadpisanie istniejącego pliku nie jest dopuszczalne.",
+       "api-error-ratelimited": "Próbujesz przesłać więcej plików w krótszym odstępie czasowym, niż ta wiki na to pozwala.\nSpróbuj jeszcze raz za kilka minut.",
        "api-error-stashfailed": "Błąd wewnętrzny – serwer nie mógł zapisać pliku tymczasowego.",
        "api-error-publishfailed": "Błąd wewnętrzny: serwer nie mógł zapisać pliku tymczasowego.",
        "api-error-stasherror": "Wystąpił błąd podczas przesyłania pliku.",
        "mw-widgets-titleinput-description-new-page": "strona jeszcze nie istnieje",
        "mw-widgets-titleinput-description-redirect": "przekierowanie do $1",
        "sessionmanager-tie": "Nie można łączyć kilku rodzajów uwierzytelniania dla zapytania: $1.",
+       "sessionprovider-generic": "sesje $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesje na podstawie cookie",
        "sessionprovider-nocookies": "Być może cookies są wyłączone. Upewnij się, że masz włączone cookies i zacznij od nowa.",
        "randomrootpage": "Losowa strona (bez podstron)",
index 84fbdf3..a7709b6 100644 (file)
        "feedback-thanks-title": "Obrigado!",
        "feedback-useragent": "Agente de usuário:",
        "searchsuggest-search": "Pesquisa",
-       "searchsuggest-containing": "contendo...",
+       "searchsuggest-containing": "páginas contendo…",
        "api-error-badaccess-groups": "Você não tem permissão para enviar arquivos para este wiki.",
        "api-error-badtoken": "Erro interno: token inválido.",
        "api-error-copyuploaddisabled": "O upload por URL está desativado neste servidor.",
index 9b44b28..3a0cfb0 100644 (file)
        "watchnologin": "Não está autenticado(a)",
        "addwatch": "Adicionar às páginas vigiadas",
        "addedwatchtext": "\"[[:$1]]\" e a sua página de discussão foram adicionadas à sua [[Special:Watchlist|lista de páginas vigiadas]].",
+       "addedwatchtext-talk": "\"[[:$1]]\" e a sua página associada foram adicionadas à sua lista de [[Special:Watchlist|páginas vigiadas]].",
        "addedwatchtext-short": "A página \"$1\" foi adicionada à sua lista de vigiadas.",
        "removewatch": "Remover das páginas vigiadas",
        "removedwatchtext": "\"[[:$1]]\" e a sua página de discussão foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
+       "removedwatchtext-talk": "\"[[:$1]]\" e a sua página associada foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
        "removedwatchtext-short": "A página \"$1\" foi removida da sua lista de vigiadas.",
        "watch": "Vigiar",
        "watchthispage": "Vigiar esta página",
index b553756..054ab42 100644 (file)
        "watchlistanontext": "Shown on Special:Userlogin when user tries to access their watchlist before logging in",
        "watchnologin": "Used as error page title.\n\nThe error message for this title is:\n* {{msg-mw|Watchnologintext}}\n{{Identical|Not logged in}}",
        "addwatch": "Link to a dialog box, displayed at the end of the list of categories at the foot of each page.\n\nSee also:\n* {{msg-mw|Removewatch}}",
-       "addedwatchtext": "Explanation shown when clicking on the {{msg-mw|Watch}} tab. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatch}}",
+       "addedwatchtext": "Message shown after clicking on the {{msg-mw|Watch}} tab in a content namespace page. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Removedwatchtext}}\n* {{msg-mw|Addedwatchtext-talk}}",
+       "addedwatchtext-talk": "Message shown after clicking on the {{msg-mw|Watch}} tab in a talk namespace page. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Removedwatchtext-talk}}\n* {{msg-mw|Addedwatchtext}}",
        "addedwatchtext-short": "Explanation shown when watching item from [[Special:UnwatchedPages]].\n\nSee also:\n* {{msg-mw|Removedwatchtext-short}}\n* {{msg-mw|Addedwatchtext}}",
        "removewatch": "Link to a dialog box, displayed at the end of the list of categories at the foot of each page.\n\nSee also:\n* {{msg-mw|Addwatch}}",
-       "removedwatchtext": "After a page has been removed from a user's watchlist by clicking the {{msg-mw|Unwatch}} tab at the top of an article, this message appears just below the title of the article.\n\nParameters:\n* $1 - the title of the article\nSee also:\n* {{msg-mw|Removedwatch}}\n* {{msg-mw|Addedwatchtext}}",
+       "removedwatchtext": "Message shown after clicking on the {{msg-mw|Unwatch}} tab in a content namespace page. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatchtext}}\n* {{msg-mw|Removedwatchtext-talk}}",
+       "removedwatchtext-talk": "Message shown after clicking on the {{msg-mw|Unwatch}} tab in a talk namespace page. Parameters:\n* $1 - page title\nSee also:\n* {{msg-mw|Addedwatchtext-talk}}\n* {{msg-mw|Removedwatchtext}}",
        "removedwatchtext-short": "Explanation shown when unwatching item from [[Special:UnwatchedPages]].\n\nSee also:\n* {{msg-mw|Addedwatchtext-short}}.\n* {{msg-mw|Removedwatchtext}}.",
        "watch": "{{doc-actionlink}}\nName of the Watch tab. Should be in the imperative mood.\n\nSee also:\n* {{msg-mw|Watch}}\n* {{msg-mw|Accesskey-ca-watch}}\n* {{msg-mw|Tooltip-ca-watch}}",
        "watchthispage": "Used as link text.\n\nSee also:\n* {{msg-mw|Unwatchthispage|link text}}\n* {{msg-mw|Notanarticle|error message}}\n{{Identical|Watch this page}}",
index da33a37..a72df46 100644 (file)
        "site-atom-feed": "$1 — Atom-лента",
        "page-rss-feed": "«$1» — RSS-лента",
        "page-atom-feed": "«$1» — Atom-лента",
-       "feed-atom": "Атом",
+       "feed-atom": "Atom",
        "red-link-title": "$1 (страница не существует)",
        "sort-descending": "Упорядочить по убыванию",
        "sort-ascending": "Упорядочить по возрастанию",
index 81007c5..4f1d008 100644 (file)
        "tagline": "Iz {{GRAMMAR:rodilnik|{{SITENAME}}}}",
        "help": "Pomoč",
        "search": "Iskanje",
+       "search-ignored-headings": " #<!-- te vrstice ne spreminjajte --> <pre>\n# Poglavja, ki bodo prezrta pri iskanju.\n# Spremembe bodo začele veljati takoj, ko bo stran s poglavjem indeksirana.\n# Reindeksacijo strani lahko vsilite z ničelnim urejanjem.\n# Skladnja je sledeča:\n#   * Vse od znaka »#« do konca vrstice je pripomba.\n#   * Vsaka neprazna vrstica je natančen naslov, ki ga bomo prezrli, upoštevajoč velikost črk in ostalo.\nOpombe\nOpombe in sklici\nViri\nZunanje povezave\nGlej tudi\n #</pre> <!-- te vrstice ne spreminjajte -->",
        "searchbutton": "Iskanje",
        "go": "Pojdi na",
        "searcharticle": "Pojdi na",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisek nadzorov",
        "addedwatchtext": "»[[:$1]]« in pripadajočo pogovorno stran smo dodali na vaš [[Special:Watchlist|spisek nadzorov]].",
+       "addedwatchtext-talk": "»[[:$1]]« in pripadajočo stran smo dodali na vaš [[Special:Watchlist|spisek nadzorov]].",
        "addedwatchtext-short": "Stran »$1« smo dodali na vaš spisek nadzorov.",
        "removewatch": "Odstrani s spiska nadzorov",
        "removedwatchtext": "»[[:$1]]« in pripadajočo pogovorno stran smo odstranili z vašega [[Special:Watchlist|spiska nadzorov]].",
+       "removedwatchtext-talk": "»[[:$1]]« in pripadajočo stran smo odstranili z vašega [[Special:Watchlist|spiska nadzorov]].",
        "removedwatchtext-short": "Stran »$1« smo odstranili z vašega spiska nadzorov.",
        "watch": "Opazuj",
        "watchthispage": "Opazuj stran",
index c595457..3f5bf22 100644 (file)
@@ -17,7 +17,8 @@
                        "Tchoř",
                        "Timpul",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Uostofchuodnego"
                ]
        },
        "tog-underline": "Podsztrychńyńcy linkůw:",
        "listingcontinuesabbrev": "ć.d.",
        "index-category": "Indeksowane zajty",
        "noindex-category": "Ńyindeksowane zajty",
-       "broken-file-category": "Zajty ze linkomi lo ńyistniejących ůobrozkůw",
+       "broken-file-category": "Zajty z linkami do niyôbecnych zbiorōw",
        "about": "Uo serwiśe",
        "article": "zajta",
        "newwindow": "(uodwjyro śe we nowym uokńe)",
        "unprotectthispage": "Uodymkńij ta zajta",
        "newpage": "Nowy artikel",
        "talkpage": "Godej uo tym artiklu",
-       "talkpagelinktext": "Dyskusyjo",
+       "talkpagelinktext": "dyskusyjŏ",
        "specialpage": "Szpecyjolno zajta",
        "personaltools": "Perzōnŏlne",
        "articlepage": "Zajta artikla",
        "disclaimers": "Prawne informacyje",
        "disclaimerpage": "Project:Prawne informacyje",
        "edithelp": "Půmoc we půmjyńańy",
-       "mainpage": "Przodńo zajta",
+       "mainpage": "Przodniŏ zajta",
        "mainpage-description": "Przodńo zajta",
        "policy-url": "Project:Prawidła",
        "portal": "Portal używoczůw",
        "newmessageslinkplural": "{{PLURAL:$1|jedno nowina|999=nowiny}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|uostatńe sprowjyńe|999=uostatńe sprowjyńa}}",
        "youhavenewmessagesmulti": "Mosz nowe powjadůmjyńa: $1",
-       "editsection": "Sprowjej",
+       "editsection": "edytuj",
        "editold": "sprowjej",
        "viewsourceold": "pokoż zdrzůdło",
        "editlink": "sprowjej",
        "viewsourcelink": "zdrzůdłowy tekst",
-       "editsectionhint": "Sprowjej tajla: $1",
+       "editsectionhint": "Edytuj tajlã: $1",
        "toc": "Treść",
        "showtoc": "uobejrzij",
        "hidetoc": "schrůń",
        "nstab-template": "Muster",
        "nstab-help": "Zajta půmocy",
        "nstab-category": "Kategoryjo",
+       "mainpage-nstab": "Przodniŏ zajta",
        "nosuchaction": "Ńy mo takij uoperacyji",
        "nosuchactiontext": "Uoprogramowańy ńy rozpoznowo uoperacyji takij kej podano w URL.",
        "nosuchspecialpage": "Ńy mo takij szpecyjolnyj zajty",
        "resetpass-abort-generic": "Půmjyńańe hasła uostoła zatrzimane bez rozszyrzyńe.",
        "passwordreset": "Wyczyść hasło",
        "passwordreset-disabled": "No tyj wiki zamkńynto resytowańy hasył.",
-       "passwordreset-username": "Mjano używacza:",
+       "passwordreset-username": "Miano ôd używŏcza:",
        "passwordreset-domain": "Domyna:",
        "passwordreset-capture": "Pokozać treść e-brifa?",
        "passwordreset-capture-help": "Eli zaznaczysz to pole, uobejrzisz wjadůmość e-brifa ze hasłym.",
        "skin-preview": "podglůnd",
        "datedefault": "Důmyślny",
        "prefs-labs": "Funkcyje \"labs\"",
-       "prefs-user-pages": "Zajty używaczy",
+       "prefs-user-pages": "Zajty ôd używŏczōw",
        "prefs-personal": "Dane używocza",
        "prefs-rc": "Ńydowno pomjyńane",
        "prefs-watchlist": "Pozůrlista",
        "userrights-changeable-col": "Grupy, kere moges wybrać",
        "userrights-unchangeable-col": "Grupy, kerych ńy moges wybrać",
        "group": "Grupa:",
-       "group-user": "Używacze",
-       "group-autoconfirmed": "AutůmatyczÅ\84y zatwjerdzůne używacze",
+       "group-user": "Używŏcze",
+       "group-autoconfirmed": "AutÅ\8dmatycznie przituplowani używÅ\8fcze",
        "group-bot": "Boty",
        "group-sysop": "Admińi",
        "group-bureaucrat": "Bjurokraty",
        "group-suppress": "Rewizorze",
        "group-all": "(wszyjscy)",
-       "group-user-member": "{{GENDER:$1|używacz}}",
-       "group-autoconfirmed-member": "AutůmatyczÅ\84y zatwjerdzůny używacz",
+       "group-user-member": "{{GENDER:$1|używŏcz|używŏczka}}",
+       "group-autoconfirmed-member": "AutÅ\8dmatycznie {{GENDER:$1|przituplowany używÅ\8fcz|przituplowanÅ\8f używÅ\8fczka}}",
        "group-bot-member": "{{GENDER:$1|bot}}",
        "group-sysop-member": "{{GENDER:$1|admin}}",
        "group-bureaucrat-member": "{{GENDER:$1|bjurokrata}}",
        "group-suppress-member": "{{GENDER:$1|rewizůr}}",
-       "grouppage-user": "{{ns:project}}:Używacze",
-       "grouppage-autoconfirmed": "{{ns:project}}:AutůmatyczÅ\84y zatwjerdzyÅ\84i używacze",
+       "grouppage-user": "{{ns:project}}:Używŏcze",
+       "grouppage-autoconfirmed": "{{ns:project}}:AutÅ\8dmatycznie przituplowani używÅ\8fcze",
        "grouppage-bot": "{{ns:project}}:Boty",
        "grouppage-sysop": "{{ns:project}}:Admińistratory",
        "grouppage-bureaucrat": "{{ns:project}}:Bjurokraty",
        "nopagetitle": "Ńy ma sam zajty docelowyj",
        "nopagetext": "Wybrano zajta docelowo ńy istńeje.",
        "pager-newer-n": "{{PLURAL:$1|1 nowšy|$1 nowše|$1 nowšych}}",
-       "pager-older-n": "{{PLURAL:$1|1 staršy|$1 starše|$1 staršych}}",
+       "pager-older-n": "{{PLURAL:$1|1 starszy|$1 starsze|$1 starszych}}",
        "suppress": "Oversight",
        "booksources": "Kśůnžki",
        "booksources-search-legend": "Sznupej za zdrzůdłůma kśůnżkowymi",
        "listusers-noresult": "Ńy znejdźůno žodnygo užytkowńika.",
        "activeusers-hidebots": "Schrůń boty",
        "activeusers-hidesysops": "Schrůń adminy",
-       "activeusers-noresult": "Ńy sům używacze.",
+       "activeusers-noresult": "Niy szło znŏjść żŏdnych używŏczōw",
        "listgrouprights": "Uprawńyńo grup użytkowńikůw",
        "listgrouprights-summary": "Půńiży znojdowo śe spis grup użytkowńikůw zdefińjowanych na tyj wiki, s wyszczygůlńyńym przidźelůnych im prow dostympu.\nSprowdź zajta [[{{MediaWiki:Listgrouprights-helppage}}|s dodatkowymi informacjami]] uo uprowńyńach użytkowńikůw.",
        "listgrouprights-key": "* <span class=\"listgrouprights-granted\">Dane uprawńyńy</span>\n* <span class=\"listgrouprights-revoked\">Uodebrane uprawńyńy</span>",
        "mailnologintext": "Muśyš śe [[Special:UserLogin|zalůgować]] i mjeć wpisany aktualny adres e-brif w swojich [[Special:Preferences|preferyncyjach]], coby můc wysuać e-brif do inkšygo užytkowńika.",
        "emailuser": "Poślij tymu używoczowi e-brif",
        "emailpagetext": "Możesz użyć půńiższygo formularza, coby wysłać wjadůmość e-brif do tygo użytkowńika.\nAdres e-brifa, kery zostoł bez Ćebje wkludzůny we [[Special:Preferences|Twojich sztalowańach]], pojawi śe we polu „Uod”, bez cůż uodbjorca bydźe můg Ći uodpedźeć.",
-       "defemailsubject": "{{SITENAME}} - e-brif uod używacza \"$1\"",
-       "usermaildisabled": "E-brif używacza ńy załůnczony",
+       "defemailsubject": "{{SITENAME}} - e-mail ôd używŏcza \"$1\"",
+       "usermaildisabled": "E-mail ôd używŏcza je zastŏwiōny",
        "noemailtitle": "Brak adresu e-brif",
-       "noemailtext": "Tyn używacz ńy podoł dobrygo e-brifa, abo zadecydowoł, co ńy chce uotrzimywać wjadůmośći e-brif uod inkszych używaczy.",
-       "nowikiemailtext": "Tyn sprowjorz ńy chcy e-brifůw uod inkszych używaczy.",
+       "noemailtext": "Tyn używŏcz niy podoł nŏleżnyj adresy email.",
+       "nowikiemailtext": "Tyn używŏcz niy chce dostŏwać emaili ôd inkszych.",
        "emailtarget": "Podej adresata",
-       "emailusername": "Mjano używacza:",
+       "emailusername": "Miano ôd używŏcza:",
        "emailusernamesubmit": "Poślij",
        "email-legend": "Wyślij e-brif ku inkszymu użytkowńikowi {{GRAMMAR:MS.lp|{{SITENAME}}}}",
        "emailfrom": "Uod:",
        "delete-confirm": "Wyćep „$1”",
        "delete-legend": "Wyćep",
        "historywarning": "Pozor! Ta zajta kerům chceš wyćepnůńć mo historjo:",
-       "confirmdeletetext": "Chceš wyćepnůńć trwale artikel abo plik s bazy danych s historią. Pokož, aže wjyš co robdza, i to aže to je tak jak godojům [[{{MediaWiki:Policy-url}}|zasady]].",
+       "confirmdeletetext": "Zarŏz wyciepniesz artikel i cołkõ ôd niygo historyjõ. Przitupluj, iże na isto chcesz to zrobić, miarkujesz kōnsekwyncyje, i co robisz to podle [[{{MediaWiki:Policy-url}}|prawideł]].",
        "actioncomplete": "Fertig",
        "actionfailed": "Ńy udało sie.",
        "deletedtext": "Wyćepano \"$1\". Rejer uostatnio zrobiůnych wyćepań možeš uobejžyć tukej: $2.",
        "contribsub2": "Lo {{GENDER:$3|używocza|używoczki}} $1 ($2)",
        "nocontribs": "Brak pomjyńań uodpowjadajůncych tym kryterjům.",
        "uctop": "(teroźńo)",
-       "month": "Uod mjeśůnca (i downiyjše):",
-       "year": "Uod roku (i dowńijše):",
+       "month": "Do miesiōnca:",
+       "year": "Do roku:",
        "sp-contributions-newbies": "Pokoż ajnzac ino uod nowych użytkowńikůw",
        "sp-contributions-newbies-sub": "Dlo nowych užytkowńikůw",
        "sp-contributions-newbies-title": "Wkłod nowych użytkowńików",
        "tooltip-pt-logout": "Uodloguj śe ze wiki",
        "tooltip-pt-createaccount": "Namawjůmy do stworzyńo kůnta a zalogůwańo śa, atoli niy je to uobowjůnzkowe",
        "tooltip-ca-talk": "Dyskusyjo uo tym artiklu",
-       "tooltip-ca-edit": "Mogesz sprowjać ta zajta. Podwjela spamjyntosz půmjyńańo, klikńij we knefel \"Uobźyrej\".",
+       "tooltip-ca-edit": "Edytuj tã zajtã",
        "tooltip-ca-addsection": "Przidej nowy temat",
        "tooltip-ca-viewsource": "Ta zajta je zawrzito. Mogesz uobźyrać zdrzůdłowy tekst.",
        "tooltip-ca-history": "Storsze wersyje tyj zajty",
        "tooltip-ca-nstab-main": "Uobźyrej zajta artikla",
        "tooltip-ca-nstab-user": "Ukoż perzůnalno zajta używocza",
        "tooltip-ca-nstab-media": "Uobejřij zajta artikla",
-       "tooltip-ca-nstab-special": "To je ekstra zajta. Ńy moges jej sprowjać.",
+       "tooltip-ca-nstab-special": "To je ekstra zajta i niy idzie jij edytować",
        "tooltip-ca-nstab-project": "Uobejřij zajta projektu",
        "tooltip-ca-nstab-image": "Ukoż zajta grafiki",
        "tooltip-ca-nstab-mediawiki": "Zoboč komunikat systymowy",
        "tooltip-ca-nstab-template": "Uobźyrej muster",
-       "tooltip-ca-nstab-help": "Pokož zajte s půmocą",
+       "tooltip-ca-nstab-help": "Pokŏż zajtã pōmocy",
        "tooltip-ca-nstab-category": "Ukoż zajta kategoryje",
        "tooltip-minoredit": "Uoznacz ta zmjana za drobno",
        "tooltip-save": "Naszkryflej půmjyńańa",
        "exif-exposureprogram-5": "kreatywny (duža guymbja uostrośći)",
        "exif-exposureprogram-6": "aktywny (dužo gibkość migawki)",
        "exif-exposureprogram-7": "tryb portretowy (do zdjyńć s bliska, s ńyuostrym tuym)",
-       "exif-exposureprogram-8": "tryb krajobrazowy (dla zdjęć wykůnywanych s dužej uodlyguośći s uostrośćům ustavjůnům na tuo)",
+       "exif-exposureprogram-8": "tryb landszaftu (dlŏ bildōw ze ôstrościōm nasztalowanōm na zadek)",
        "exif-subjectdistance-value": "$1 metrůw",
        "exif-meteringmode-0": "ńyuokryślůny",
        "exif-meteringmode-1": "średńo",
        "exif-gpsdirection-t": "kerůnek geůgrafičny",
        "exif-gpsdirection-m": "kerůnek magnetyčny",
        "namespacesall": "wszyjske",
-       "monthsall": "wšyskie",
+       "monthsall": "wszyjske",
        "confirmemail": "Potwjerdź adres e-brif",
        "confirmemail_noemail": "Ńy podoužeś prawiduowygo adresa e-brifa we [[Special:Preferences|preferencyjach]].",
        "confirmemail_text": "Projekt {{SITENAME}} wymago weryfikacyji adresa e-brif před užyćym fůnkcyji kořistajůncych s počty.\nWćiś knefel půńižy coby wysúać na swůj adres list s linkym do zajty WWW.\nList bydźe zawjeroú link do zajty, w kerym zakodowany bydźe idyntyfikator.\nUodymkńij tyn link we přyglůndarce, čym potwjerdźiš, co ježeś užytkowńikym tygo adresa e-brif.",
index f0128f9..128db0e 100644 (file)
        "prefs-namespaces": "Исемнәр мәйданы",
        "default": "килешү буенча",
        "prefs-files": "Файллар",
-       "prefs-custom-css": "Үземнең CSS",
-       "prefs-custom-js": "Үземнең JS",
+       "prefs-custom-css": "Шәхси CSS",
+       "prefs-custom-js": "Шәхси JS",
        "prefs-common-css-js": "Барлык бизәлешләр өчен гомуми CSS/JS:",
        "prefs-reset-intro": "Бу бит сезнең көйләнмәләрегезне бетерү өчен кулланыла. Бу эшне башкару нәтиҗәсендә сез яңадан үз көйләнмәләрне яңадан кайтара алмыйсыз.",
        "prefs-emailconfirm-label": "E-mail раслау",
index 0b6fc8a..45a58d2 100644 (file)
        "action-applychangetags": "додавання міток разом зі змінами",
        "action-changetags": "додавання або вилучення будь-яких міток для певних версій сторінок або записів журналів",
        "action-deletechangetags": "вилучення міток з бази даних",
+       "action-purge": "очищення кешу цієї сторінки",
        "nchanges": "$1 {{PLURAL:$1|зміна|зміни|змін}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|зміна з останнього візиту|зміни з останнього візиту|змін з останнього візиту}}",
        "enhancedrc-history": "історія",
        "watchnologin": "Ви не увійшли до системи",
        "addwatch": "Додати до списку спостереження",
        "addedwatchtext": "«[[:$1]]» та її сторінка обговорення додані до вашого [[Special:Watchlist|списку спостереження]].",
+       "addedwatchtext-talk": "«[[:$1]]» та пов'язану з нею сторінку додано до Вашого [[Special:Watchlist|списку спостереження]].",
        "addedwatchtext-short": "Сторінка \" $1 \" була додана до вашого списку спостереження.",
        "removewatch": "Видалити зі списку спостереження",
        "removedwatchtext": "«[[:$1]]» та її сторінка обговорення вилучені з Вашого [[Special:Watchlist|списку спостереження]].",
+       "removedwatchtext-talk": "«[[:$1]]» та пов'язану з нею сторінку вилучено з Вашого [[Special:Watchlist|списку спостереження]].",
        "removedwatchtext-short": "Сторінка \"$1\" була видалена із вашого списку спостереження.",
        "watch": "Спостерігати",
        "watchthispage": "Спостерігати за цією сторінкою",
        "unblockip": "Розблокувати IP-адресу",
        "unblockiptext": "Використовуйте подану нижче форму, щоб відновити можливість збереження з раніше заблокованої IP-адреси.",
        "ipusubmit": "Зняти це блокування",
-       "unblocked": "[[User:$1|$1]] {{GENDER:$1|розблокований|розблокована}}",
-       "unblocked-range": "$1 розблоковано",
-       "unblocked-id": "Блокування $1 було зняте",
-       "unblocked-ip": "[[Special:Contributions/$1|$1]] вже розлоковано.",
+       "unblocked": "[[User:$1|$1]] {{GENDER:$1|розблокований|розблокована}}.",
+       "unblocked-range": "$1 розблоковано.",
+       "unblocked-id": "Блокування $1 було зняте.",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] розблоковано.",
        "blocklist": "Заблоковані користувачі",
        "ipblocklist": "Список заблокованих адрес та користувачів",
        "ipblocklist-legend": "Пошук заблокованого користувача",
index 1897e60..b00ef27 100644 (file)
        "specialpages": "خصوصی صفحات",
        "specialpages-group-pages": "فہارست صفحات",
        "tag-filter": "[[Special:Tags|لوحہ]] فلٹر:",
-       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ٹیگ|ٹیگز}}]]: $2)",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ٹیگ|ٹیگ}}]]: $2)",
        "tags-source-header": "ماخذ",
        "tags-active-header": "فعال؟",
        "tags-active-yes": "ہاں",
index d807319..036c3e3 100644 (file)
        "log-action-filter-upload": "טיפ ארויפֿלאד:",
        "log-action-filter-all": "אַלע",
        "log-action-filter-delete-delete": "אויסמעקן בלאט",
+       "log-action-filter-import-interwiki": "אריבערוויקי אימפארט",
        "log-action-filter-protect-unprotect": "אראפנעמען שיץ"
 }
index edd63ec..f025e3e 100644 (file)
        "tagline": "来自{{SITENAME}}",
        "help": "帮助",
        "search": "搜索",
-       "search-ignored-headings": " #<!-- è¯·å°\86æ\9c¬è¡\8cä¿\9dæ\8c\81å\8e\9fæ · --> <pre>\n# ä¼\9a被æ\90\9c索忽ç\95¥ç\9a\84æ \87é¢\98ã\80\82\n# å¯¹è¯¥è¡¨ç\9a\84æ\9b´æ\94¹ä¼\9aå\9c¨è¡¨ä¸­æ \87é¢\98ç\9a\84页é\9d¢è¢«ç´¢å¼\95æ\97¶ç\94\9fæ\95\88ã\80\82\n# ä½ å\8f¯ä»¥é\80\9aè¿\87空ç¼\96è¾\91强å\88¶ä½¿é¡µé\9d¢è¢«é\87\8dæ\96°ç´¢å¼\95ã\80\82\n# è¯­æ³\95å¦\82ä¸\8bï¼\9a\n#   * æ\89\80æ\9c\89以â\80\9c\80\9då¼\80头ç\9a\84è¡\8cé\83½æ\98¯æ³¨é\87\8aã\80\82\n#   * æ\89\80æ\9c\89é\9d\9e空ç\99½è¡\8cå°±æ\98¯è¦\81忽ç\95¥ç\9a\84æ \87é¢\98ã\80\82\nå\8f\82è\80\83èµ\84æ\96\99\nå¤\96é\83¨é\93¾æ\8e¥\nå\8f¦è¯·å\8f\82é\98\85\n #</pre> <!-- è¯·å°\86æ\9c¬行保持原样 -->",
+       "search-ignored-headings": " #<!-- è¯·å°\86æ­¤è¡\8cä¿\9dæ\8c\81å\8e\9fæ · --> <pre>\n# å°\86被æ\90\9c索忽ç\95¥ç\9a\84æ \87é¢\98ã\80\82\n# å¯¹æ­¤é¡µé\9d¢ç\9a\84æ\9b´æ\94¹ä¼\9aå\9c¨å¸¦æ \87é¢\98ç\9a\84页é\9d¢è¢«ç´¢å¼\95æ\97¶äº§ç\94\9få½±å\93\8dã\80\82\n# æ\82¨å\8f¯ä»¥é\80\9aè¿\87è¿\9bè¡\8c空ç¼\96è¾\91æ\9d¥å¼ºå\88¶é¡µé\9d¢é\87\8dæ\96°ç´¢å¼\95ã\80\82\n# è¯­æ³\95å¦\82ä¸\8bï¼\9a\n#  * æ\89\80æ\9c\89以â\80\9c\80\9då¼\80头ç\9a\84è¡\8cé\83½æ\98¯æ³¨é\87\8aã\80\82\n#  * æ\89\80æ\9c\89é\9d\9e空ç\99½è¡\8cé\83½æ\98¯è¦\81忽ç\95¥ç\9a\84æ \87é¢\98ã\80\82\nå\8f\82è\80\83æ\96\87ç\8c®\nå¤\96é\83¨é\93¾æ\8e¥\nå\8f\82è§\81\n #</pre> <!-- è¯·å°\86æ­¤行保持原样 -->",
        "searchbutton": "搜索",
        "go": "前往",
        "searcharticle": "前往",
index 6d2a0e9..e83d7c6 100644 (file)
@@ -230,6 +230,13 @@ class ConvertExtensionToRegistration extends Maintenance {
 
        public function handleHooks( $realName, $value ) {
                foreach ( $value as $hookName => &$handlers ) {
+                       if ( $hookName === 'UnitTestsList' ) {
+                               $this->output( "Note: the UnitTestsList hook is no longer necessary as " .
+                                       "long as your tests are located in the \"tests/phpunit/\" directory. " .
+                                       "Please see <https://www.mediawiki.org/wiki/Manual:PHP_unit_testing/" .
+                                       "Writing_unit_tests_for_extensions#Register_your_tests> for more details.\n"
+                               );
+                       }
                        foreach ( $handlers as $func ) {
                                if ( $func instanceof Closure ) {
                                        $this->error( "Error: Closures cannot be converted to JSON. " .
index 780e049..3b75c3a 100644 (file)
     "grunt-jscs": "2.8.0",
     "grunt-jsonlint": "1.0.7",
     "grunt-karma": "2.0.0",
-    "grunt-stylelint": "0.4.0",
+    "grunt-stylelint": "0.6.0",
     "karma": "1.1.0",
     "karma-chrome-launcher": "1.0.1",
     "karma-firefox-launcher": "1.0.0",
     "karma-qunit": "1.0.0",
     "qunitjs": "1.22.0",
-    "stylelint-config-wikimedia": "0.2.2"
+    "stylelint-config-wikimedia": "0.3.0"
   }
 }
index 1558ee6..0d8d39f 100644 (file)
@@ -1412,6 +1412,7 @@ return [
                'class' => 'ResourceLoaderEditToolbarModule',
                'scripts' => 'resources/src/mediawiki.toolbar/toolbar.js',
                'styles' => 'resources/src/mediawiki.toolbar/toolbar.less',
+               'dependencies' => 'jquery.textSelection',
                'position' => 'top',
        ],
        'mediawiki.experiments' => [
@@ -1705,6 +1706,14 @@ return [
                'position' => 'top',
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.page.patrol' => [
+               'position' => 'top',
+               'styles' => [
+                       'resources/src/mediawiki/page/mediawiki.page.patrol.css',
+                       'resources/src/mediawiki/page/mediawiki.page.patrol.print.css'
+                               => [ 'media' => 'print' ],
+               ]
+       ],
        'mediawiki.page.patrol.ajax' => [
                'scripts' => 'resources/src/mediawiki/page/patrol.ajax.js',
                'dependencies' => [
index 4209aa1..0ee4058 100644 (file)
 .editButtons input:first-child {
        margin-left: .1em;
 }
+
+/*
+ * Add a bit of margin space between the preview and the toolbar.
+ * This replaces the ugly <p><br /></p> we used to insert into the page source
+ */
+#wikiPreview.ontop {
+       margin-bottom: 1em;
+}
index d387a2d..6a7c76a 100644 (file)
@@ -19,7 +19,6 @@ div#column-one,
 #footer-places,
 .mw-hidden-catlinks,
 .usermessage,
-.patrollink,
 .ns-0 .mw-redirectedfrom,
 div.magnify,
 #mw-navigation,
index 7ccf59e..786f53d 100644 (file)
@@ -289,11 +289,6 @@ table.small {
        font-style: italic;
 }
 
-span.unpatrolled {
-       font-weight: bold;
-       color: #f00;
-}
-
 div.gallerybox {
        width: 150px;
 }
index 8fcc667..38d2a27 100644 (file)
@@ -98,14 +98,6 @@ span.comment {
        unicode-bidi: isolate;
 }
 
-/**
- * Add a bit of margin space between the preview and the toolbar.
- * This replaces the ugly <p><br /></p> we used to insert into the page source
- */
-#wikiPreview.ontop {
-       margin-bottom: 1em;
-}
-
 /* Stop floats from intruding into edit area in previews */
 #editform,
 #toolbar,
@@ -123,23 +115,6 @@ span.history-deleted {
        font-style: italic;
 }
 
-/**
- * Patrol stuff
- */
-.not-patrolled {
-       background-color: #ffa;
-}
-
-.unpatrolled {
-       font-weight: bold;
-       color: #f00;
-}
-
-div.patrollink {
-       font-size: 75%;
-       text-align: right;
-}
-
 /**
  * Forms
  */
index f2019e7..4b8eced 100644 (file)
@@ -115,9 +115,3 @@ table.mw-userrights-groups * td,
 table.mw-userrights-groups * th {
        padding-right: 1.5em;
 }
-
-/* Special:Upload */
-p.mw-upload-editlicenses {
-       font-size: 90%;
-       text-align: right;
-}
index b916248..283df85 100644 (file)
@@ -8,3 +8,8 @@
        color: #705000;
        background-color: #fdf1d1;
 }
+
+p.mw-upload-editlicenses {
+       font-size: 90%;
+       text-align: right;
+}
diff --git a/resources/src/mediawiki/page/mediawiki.page.patrol.css b/resources/src/mediawiki/page/mediawiki.page.patrol.css
new file mode 100644 (file)
index 0000000..f237dbd
--- /dev/null
@@ -0,0 +1,13 @@
+.not-patrolled {
+       background-color: #ffa;
+}
+
+.unpatrolled {
+       font-weight: bold;
+       color: #f00;
+}
+
+.patrollink {
+       font-size: 75%;
+       text-align: right;
+}
diff --git a/resources/src/mediawiki/page/mediawiki.page.patrol.print.css b/resources/src/mediawiki/page/mediawiki.page.patrol.print.css
new file mode 100644 (file)
index 0000000..497bceb
--- /dev/null
@@ -0,0 +1,3 @@
+.patrollink {
+       display: none;
+}
index 917a6ad..155a9dd 100644 (file)
@@ -190,6 +190,7 @@ class ApiLoginTest extends ApiTestCase {
                $this->assertArrayHasKey( "login", $data[0] );
                $this->assertArrayHasKey( "result", $data[0]['login'] );
                $this->assertEquals( "Success", $data[0]['login']['result'] );
+               $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
        }
 
        public function testBotPassword() {
index e216ced..2114e0a 100644 (file)
@@ -123,7 +123,7 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
 
        /**
         * @dataProvider providerDeprecatedModules
-        * @covers ResourceLoaderFileModule::getScripts
+        * @covers ResourceLoaderFileModule::getScript
         */
        public function testDeprecatedModules( $name, $expected ) {
                $modules = self::getModules();
index beb5e78..bd076ba 100644 (file)
@@ -212,7 +212,7 @@ class UserTest extends MediaWikiTestCase {
         * @group medium
         * @covers User::getEditCount
         */
-       public function testEditCount() {
+       public function testGetEditCount() {
                $user = $this->getMutableTestUser()->getUser();
 
                // let the user have a few (3) edits
@@ -221,17 +221,15 @@ class UserTest extends MediaWikiTestCase {
                        $page->doEdit( (string)$i, 'test', 0, false, $user );
                }
 
-               $user->clearInstanceCache();
                $this->assertEquals(
                        3,
                        $user->getEditCount(),
                        'After three edits, the user edit count should be 3'
                );
 
-               // increase the edit count and clear the cache
+               // increase the edit count
                $user->incEditCount();
 
-               $user->clearInstanceCache();
                $this->assertEquals(
                        4,
                        $user->getEditCount(),
@@ -239,6 +237,46 @@ class UserTest extends MediaWikiTestCase {
                );
        }
 
+       /**
+        * Test User::editCount
+        * @group medium
+        * @covers User::getEditCount
+        */
+       public function testGetEditCountForAnons() {
+               $user = User::newFromName( 'Anonymous' );
+
+               $this->assertNull(
+                       $user->getEditCount(),
+                       'Edit count starts null for anonymous users.'
+               );
+
+               $user->incEditCount();
+
+               $this->assertNull(
+                       $user->getEditCount(),
+                       'Edit count remains null for anonymous users despite calls to increase it.'
+               );
+       }
+
+       /**
+        * Test User::editCount
+        * @group medium
+        * @covers User::incEditCount
+        */
+       public function testIncEditCount() {
+               $user = $this->getMutableTestUser()->getUser();
+               $user->incEditCount();
+
+               $reloadedUser = User::newFromId( $user->getId() );
+               $reloadedUser->incEditCount();
+
+               $this->assertEquals(
+                       2,
+                       $reloadedUser->getEditCount(),
+                       'Increasing the edit count after a fresh load leaves the object up to date.'
+               );
+       }
+
        /**
         * Test changing user options.
         * @covers User::setOption