Merge "DatabaseBase constructor cleanups"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 23 Feb 2015 21:18:23 +0000 (21:18 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 23 Feb 2015 21:18:23 +0000 (21:18 +0000)
114 files changed:
RELEASE-NOTES-1.25
autoload.php
composer.json
docs/hooks.txt
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/TemplateParser.php
includes/User.php
includes/api/ApiMain.php
includes/api/ApiQuery.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryWatchlist.php
includes/api/i18n/ca.json
includes/api/i18n/cs.json
includes/api/i18n/fr.json
includes/api/i18n/ksh.json
includes/api/i18n/zh-hans.json
includes/cache/BacklinkCache.php
includes/content/ContentHandler.php
includes/db/Database.php
includes/deferred/HTMLCacheUpdate.php
includes/deferred/LinksUpdate.php
includes/diff/DifferenceEngine.php
includes/installer/DatabaseInstaller.php
includes/installer/MssqlInstaller.php
includes/installer/MysqlInstaller.php
includes/installer/PostgresInstaller.php
includes/installer/SqliteInstaller.php
includes/installer/i18n/nl.json
includes/jobqueue/jobs/RecentChangesUpdateJob.php
includes/jobqueue/jobs/RefreshLinksJob.php
includes/libs/composer/ComposerJson.php
includes/logging/BlockLogFormatter.php [new file with mode: 0644]
includes/logging/DeleteLogFormatter.php
includes/logging/LogFormatter.php
includes/logging/LogPage.php
includes/objectcache/APCBagOStuff.php
includes/objectcache/BagOStuff.php
includes/objectcache/EmptyBagOStuff.php
includes/objectcache/HashBagOStuff.php
includes/objectcache/MemcachedBagOStuff.php
includes/objectcache/MultiWriteBagOStuff.php
includes/objectcache/RedisBagOStuff.php
includes/objectcache/ReplicatedBagOStuff.php [new file with mode: 0644]
includes/objectcache/SqlBagOStuff.php
includes/objectcache/WinCacheBagOStuff.php
includes/objectcache/XCacheBagOStuff.php
includes/page/Article.php
includes/page/WikiPage.php
includes/parser/ParserOutput.php
includes/poolcounter/PoolWorkArticleView.php
includes/revisiondelete/RevDelList.php
includes/revisiondelete/RevDelLogList.php
includes/skins/Skin.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialBlock.php
includes/specials/SpecialExport.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialUnblock.php
includes/specials/SpecialWantedpages.php
includes/templates/NoLocalSettings.mustache
languages/i18n/be-tarask.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/it.json
languages/i18n/ka.json
languages/i18n/ksh.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/mai.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/mzn.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/sah.json
languages/i18n/sv.json
languages/i18n/tr.json
languages/i18n/uk.json
languages/i18n/uz.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/eval.php
resources/Resources.php
resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less [new file with mode: 0644]
resources/src/mediawiki.less/mediawiki.mixins.less
resources/src/mediawiki/mediawiki.js
tests/phpunit/includes/changes/RecentChangeTest.php
tests/phpunit/includes/registration/ExtensionRegistryTest.php
tests/phpunit/structure/AutoLoaderTest.php
tests/phpunit/structure/ResourcesTest.php

index 3dc1933..18b7f61 100644 (file)
@@ -105,6 +105,10 @@ production.
   and appear in the gutter on hovering over the heading.
 * Added 'CategoryViewer::doCategoryQuery' and 'CategoryViewer::generateLink' hooks
   to allow extensions to override how links to pages are rendered within NS_CATEGORY
+* (T19665) Special:WantedPages only lists page which having at least one red link
+  pointing to it.
+* New hooks 'ApiMain::moduleManager' and 'ApiQuery::moduleManager', can be
+  used for conditional registration of API modules.
 
 ==== External libraries ====
 * MediaWiki now requires certain external libraries to be installed. In the past
@@ -222,6 +226,8 @@ production.
 * (T88010) Added action=checktoken, to test a CSRF token's validity.
 * (T88010) Added intestactions to prop=info, to allow querying of
   Title::userCan() via the API.
+* Default type param for query list=watchlist and list=recentchanges has
+  been changed from all types (e.g. including 'external') to 'edit|new|log'.
 
 === Action API internal changes in 1.25 ===
 * ApiHelp has been rewritten to support i18n and paginated HTML output.
@@ -253,6 +259,8 @@ production.
   provided to access just the live or just the deleted revids.
 * Added ApiPageSet::setGeneratorData() and ApiPageSet::populateGeneratorData()
   to allow generators to include data in the action=query result.
+* New hooks 'ApiMain::moduleManager' and 'ApiQuery::moduleManager', can be
+  used for conditional registration of API modules.
 * The following methods have been deprecated and may be removed in a future
   release:
   * ApiBase::getDescription
index a115e75..705f5bd 100644 (file)
@@ -169,6 +169,7 @@ $wgAutoloadLocalClasses = array(
        'Blob' => __DIR__ . '/includes/db/DatabaseUtility.php',
        'Block' => __DIR__ . '/includes/Block.php',
        'BlockListPager' => __DIR__ . '/includes/specials/SpecialBlockList.php',
+       'BlockLogFormatter' => __DIR__ . '/includes/logging/BlockLogFormatter.php',
        'BloomCache' => __DIR__ . '/includes/cache/bloom/BloomCache.php',
        'BloomCacheRedis' => __DIR__ . '/includes/cache/bloom/BloomCacheRedis.php',
        'BloomFilterTitleHasLogs' => __DIR__ . '/includes/cache/bloom/BloomFilters.php',
@@ -963,6 +964,7 @@ $wgAutoloadLocalClasses = array(
        'RenderAction' => __DIR__ . '/includes/actions/RenderAction.php',
        'ReplacementArray' => __DIR__ . '/includes/libs/ReplacementArray.php',
        'Replacer' => __DIR__ . '/includes/libs/replacers/Replacer.php',
+       'ReplicatedBagOStuff' => __DIR__ . '/includes/objectcache/ReplicatedBagOStuff.php',
        'RepoGroup' => __DIR__ . '/includes/filerepo/RepoGroup.php',
        'RequestContext' => __DIR__ . '/includes/context/RequestContext.php',
        'ResetUserTokens' => __DIR__ . '/maintenance/resetUserTokens.php',
index 75aed40..1650394 100644 (file)
@@ -22,7 +22,7 @@
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
-               "wikimedia/composer-merge-plugin": "0.5.0",
+               "wikimedia/composer-merge-plugin": "1.0.0",
                "zordius/lightncandy": "0.18"
        },
        "require-dev": {
index a88803b..1d211af 100644 (file)
@@ -418,6 +418,10 @@ $module: ApiBase Module object
 &$help: Array of HTML strings to be joined for the output.
 $options: Array Options passed to ApiHelp::getHelp
 
+'ApiMain::moduleManager': Called when ApiMain has finished initializing its
+module manager. Can be used to conditionally register API modules.
+$moduleManager: ApiModuleManager Module manager instance
+
 'ApiOpenSearchSuggest': Called when constructing the OpenSearch results. Hooks
 can alter or append to the array.
 &$results: array with integer keys to associative arrays. Keys in associative
@@ -431,6 +435,10 @@ array:
     (url), 'width', 'height', 'alt', 'align'.
   - url: Url for the given title.
 
+'ApiQuery::moduleManager': Called when ApiQuery has finished initializing its
+module manager. Can be used to conditionally register API query modules.
+$moduleManager: ApiModuleManager Module manager instance
+
 'APIQueryAfterExecute': After calling the execute() method of an
 action=query submodule. Use this to extend core API modules.
 &$module: Module object
@@ -1057,6 +1065,15 @@ $title: the diff page title (nullable)
 $old: the ?old= param value from the url
 $new: the ?new= param value from the url
 
+'GetDifferenceEngine': Called when getting a new difference engine interface object
+Return false for valid object in $differenceEngine or true for the default difference engine
+$context: IContextSource context to be used for diff
+$old: Revision ID to show and diff with
+$new: Either a revision ID or one of the strings 'cur', 'prev' or 'next'
+$refreshCache: If set, refreshes the diff cache
+$unhide: If set, allow viewing deleted revs
+&$differenceEngine: output parameter, difference engine object to be used for diff
+
 'DiffRevisionTools': Override or extend the revision tools available from the
 diff view, i.e. undo, etc.
 $newRev: Revision object of the "new" revision
index 1e0bf16..48436c5 100644 (file)
@@ -89,6 +89,9 @@ class CategoryViewer extends ContextSource {
        ) {
                $this->title = $title;
                $this->setContext( $context );
+               $this->getOutput()->addModuleStyles( array(
+                       'mediawiki.action.view.categoryPage.styles'
+               ) );
                $this->from = $from;
                $this->until = $until;
                $this->limit = $context->getConfig()->get( 'CategoryPagingLimit' );
@@ -528,8 +531,7 @@ class CategoryViewer extends ContextSource {
         * TODO: Take the headers into account when creating columns, so they're
         * more visually equal.
         *
-        * More distant TODO: Scrap this and use CSS columns, whenever IE finally
-        * supports those.
+        * TODO: shortList and columnList are similar, need merging
         *
         * @param array $articles
         * @param string[] $articles_start_char
@@ -538,50 +540,34 @@ class CategoryViewer extends ContextSource {
         */
        static function columnList( $articles, $articles_start_char ) {
                $columns = array_combine( $articles, $articles_start_char );
-               # Split into three columns
-               $columns = array_chunk( $columns, ceil( count( $columns ) / 3 ), true /* preserve keys */ );
 
-               $ret = '<table style="width: 100%;"><tr style="vertical-align: top;">';
-               $prevchar = null;
+               $ret = Html::openElement( 'div', array( 'class' => 'mw-category' ) );
 
-               foreach ( $columns as $column ) {
-                       $ret .= '<td style="width: 33.3%;">';
-                       $colContents = array();
+               $colContents = array();
 
-                       # Kind of like array_flip() here, but we keep duplicates in an
-                       # array instead of dropping them.
-                       foreach ( $column as $article => $char ) {
-                               if ( !isset( $colContents[$char] ) ) {
-                                       $colContents[$char] = array();
-                               }
-                               $colContents[$char][] = $article;
+               # Kind of like array_flip() here, but we keep duplicates in an
+               # array instead of dropping them.
+               foreach ( $columns as $article => $char ) {
+                       if ( !isset( $colContents[$char] ) ) {
+                               $colContents[$char] = array();
                        }
+                       $colContents[$char][] = $article;
+               }
 
-                       $first = true;
-                       foreach ( $colContents as $char => $articles ) {
-                               # Change space to non-breaking space to keep headers aligned
-                               $h3char = $char === ' ' ? '&#160;' : htmlspecialchars( $char );
+               foreach ( $colContents as $char => $articles ) {
+                       # Change space to non-breaking space to keep headers aligned
+                       $h3char = $char === ' ' ? '&#160;' : htmlspecialchars( $char );
 
-                               $ret .= '<h3>' . $h3char;
-                               if ( $first && $char === $prevchar ) {
-                                       # We're continuing a previous chunk at the top of a new
-                                       # column, so add " cont." after the letter.
-                                       $ret .= ' ' . wfMessage( 'listingcontinuesabbrev' )->escaped();
-                               }
-                               $ret .= "</h3>\n";
+                       $ret .= '<div class="mw-category-group"><h3>' . $h3char;
+                       $ret .= "</h3>\n";
 
-                               $ret .= '<ul><li>';
-                               $ret .= implode( "</li>\n<li>", $articles );
-                               $ret .= '</li></ul>';
-
-                               $first = false;
-                               $prevchar = $char;
-                       }
+                       $ret .= '<ul><li>';
+                       $ret .= implode( "</li>\n<li>", $articles );
+                       $ret .= '</li></ul></div>';
 
-                       $ret .= "</td>\n";
                }
 
-               $ret .= '</tr></table>';
+               $ret .= Html::closeElement( 'div' );
                return $ret;
        }
 
index d4cdf9e..6786f81 100644 (file)
@@ -6422,6 +6422,7 @@ $wgJobClasses = array(
        'PublishStashedFile' => 'PublishStashedFileJob',
        'ThumbnailRender' => 'ThumbnailRenderJob',
        'recentChangesUpdate' => 'RecentChangesUpdateJob',
+       'refreshLinksPrioritized' => 'RefreshLinksJob', // for cascading protection
        'null' => 'NullJob'
 );
 
@@ -6664,17 +6665,12 @@ $wgLogHeaders = array(
  * Extensions with custom log types may add to this array.
  */
 $wgLogActions = array(
-       'block/block' => 'blocklogentry',
-       'block/unblock' => 'unblocklogentry',
-       'block/reblock' => 'reblock-logentry',
        'protect/protect' => 'protectedarticle',
        'protect/modify' => 'modifiedarticleprotection',
        'protect/unprotect' => 'unprotectedarticle',
        'protect/move_prot' => 'movedarticleprotection',
        'import/upload' => 'import-logentry-upload',
        'import/interwiki' => 'import-logentry-interwiki',
-       'suppress/block' => 'blocklogentry',
-       'suppress/reblock' => 'reblock-logentry',
 );
 
 /**
@@ -6704,6 +6700,11 @@ $wgLogActionsHandlers = array(
        'managetags/delete' => 'LogFormatter',
        'managetags/activate' => 'LogFormatter',
        'managetags/deactivate' => 'LogFormatter',
+       'block/block' => 'BlockLogFormatter',
+       'block/unblock' => 'BlockLogFormatter',
+       'block/reblock' => 'BlockLogFormatter',
+       'suppress/block' => 'BlockLogFormatter',
+       'suppress/reblock' => 'BlockLogFormatter',
 );
 
 /**
index 41ae4a4..559ffb9 100644 (file)
@@ -166,6 +166,16 @@ class TemplateParser {
 
        /**
         * Returns HTML for a given template by calling the template function with the given args
+        *
+        * @code
+        *     echo $templateParser->processTemplate(
+        *         'ExampleTemplate',
+        *         array(
+        *             'username' => $user->getName(),
+        *             'message' => 'Hello!'
+        *         )
+        *     );
+        * @endcode
         * @param string $templateName The name of the template
         * @param mixed $args
         * @param array $scopes
index ae8deb6..7025717 100644 (file)
@@ -3368,10 +3368,15 @@ class User implements IDBAccessObject {
         *  false: Force NOT setting the secure attribute when setting the cookie
         *  null (default): Use the default ($wgCookieSecure) to set the secure attribute
         * @param array $params Array of options sent passed to WebResponse::setcookie()
+        * @param WebRequest|null $request WebRequest object to use; $wgRequest will be used if null
+        *        is passed.
         */
-       protected function setCookie( $name, $value, $exp = 0, $secure = null, $params = array() ) {
+       protected function setCookie( $name, $value, $exp = 0, $secure = null, $params = array(), $request = null ) {
+               if ( $request === null ) {
+                       $request = $this->getRequest();
+               }
                $params['secure'] = $secure;
-               $this->getRequest()->response()->setcookie( $name, $value, $exp, $params );
+               $request->response()->setcookie( $name, $value, $exp, $params );
        }
 
        /**
@@ -3436,7 +3441,7 @@ class User implements IDBAccessObject {
                        if ( $value === false ) {
                                $this->clearCookie( $name );
                        } else {
-                               $this->setCookie( $name, $value, 0, $secure );
+                               $this->setCookie( $name, $value, 0, $secure, array(), $request );
                        }
                }
 
index 34ed523..fe01f11 100644 (file)
@@ -215,6 +215,8 @@ class ApiMain extends ApiBase {
                $this->mModuleMgr->addModules( self::$Formats, 'format' );
                $this->mModuleMgr->addModules( $config->get( 'APIFormatModules' ), 'format' );
 
+               Hooks::run( 'ApiMain::moduleManager', array( $this->mModuleMgr ) );
+
                $this->mResult = new ApiResult( $this );
                $this->mEnableWrite = $enableWrite;
 
index 514d559..9196dc7 100644 (file)
@@ -143,6 +143,8 @@ class ApiQuery extends ApiBase {
                $this->mModuleMgr->addModules( self::$QueryMetaModules, 'meta' );
                $this->mModuleMgr->addModules( $config->get( 'APIMetaModules' ), 'meta' );
 
+               Hooks::run( 'ApiQuery::moduleManager', array( $this->mModuleMgr ) );
+
                // Create PageSet that will process titles/pageids/revids/generator
                $this->mPageSet = new ApiPageSet( $this );
        }
index fcfddd6..6aa714e 100644 (file)
@@ -117,8 +117,6 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                        }
                }
 
-               $this->addOption( 'USE INDEX', array( 'categorylinks' => 'cl_from' ) );
-
                $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' );
                // Don't order by cl_from if it's constant in the WHERE clause
                if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
index 3cdc53c..c4eb7a8 100644 (file)
@@ -338,6 +338,36 @@ class ApiQueryLogEvents extends ApiQueryBase {
                                        unset( $params['5::mergepoint'] );
                                }
                                break;
+                       case 'delete':
+                               if ( $action === 'event' || $action === 'revision' ) {
+                                       // replace the named parameter with numbered for backward compatibility
+                                       if ( $action === 'event' ) {
+                                               $idsKey = '4::ids';
+                                               $ofieldKey = '5::ofield';
+                                               $nfieldKey = '6::nfield';
+                                       } else {
+                                               if ( isset( $params['4::type'] ) ) {
+                                                       $params[] = $params['4::type'];
+                                                       unset( $params['4::type'] );
+                                               }
+                                               $idsKey = '5::ids';
+                                               $ofieldKey = '6::ofield';
+                                               $nfieldKey = '7::nfield';
+                                       }
+                                       if ( isset( $params[$idsKey] ) ) {
+                                               $params[] = implode( ',', $params[$idsKey] );
+                                               unset( $params[$idsKey] );
+                                       }
+                                       if ( isset( $params[$ofieldKey] ) ) {
+                                               $params[] = $params[$ofieldKey];
+                                               unset( $params[$ofieldKey] );
+                                       }
+                                       if ( isset( $params[$nfieldKey] ) ) {
+                                               $params[] = $params[$nfieldKey];
+                                               unset( $params[$nfieldKey] );
+                                       }
+                               }
+                               break;
                }
                if ( !is_null( $params ) ) {
                        $logParams = array();
index b6ef604..bfdc5ab 100644 (file)
@@ -534,7 +534,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                $vals['logid'] = intval( $row->rc_logid );
                                $vals['logtype'] = $row->rc_log_type;
                                $vals['logaction'] = $row->rc_log_action;
-                               $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
+                               $logEntry = DatabaseLogEntry::newFromRow( $row );
                                ApiQueryLogEvents::addLogParams(
                                        $this->getResult(),
                                        $vals,
@@ -688,6 +688,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
                        ),
                        'type' => array(
+                               ApiBase::PARAM_DFLT => 'edit|new|log',
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => array(
                                        'edit',
index 6e60fe4..11008cf 100644 (file)
@@ -412,7 +412,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                $vals['logid'] = intval( $row->rc_logid );
                                $vals['logtype'] = $row->rc_log_type;
                                $vals['logaction'] = $row->rc_log_action;
-                               $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
+                               $logEntry = DatabaseLogEntry::newFromRow( $row );
                                ApiQueryLogEvents::addLogParams(
                                        $this->getResult(),
                                        $vals,
@@ -499,6 +499,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                )
                        ),
                        'type' => array(
+                               ApiBase::PARAM_DFLT => 'edit|new|log',
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => array(
                                        'edit',
index e68f496..73179d0 100644 (file)
@@ -13,5 +13,6 @@
        "apihelp-delete-description": "Suprimeix una pàgina.",
        "apihelp-edit-description": "Crea i edita pàgines.",
        "apihelp-edit-param-text": "Contingut de la pàgina.",
+       "apihelp-expandtemplates-param-title": "Títol de la pàgina.",
        "apihelp-login-example-login": "Inicia sessió."
 }
index 4a64137..9fa47e2 100644 (file)
        "apihelp-opensearch-example-te": "Najít stránky začínající na „<kbd>Te</kbd>“.",
        "apihelp-options-example-reset": "Vrátit všechna nastavení.",
        "apihelp-parse-example-page": "Parsovat stránku.",
+       "apihelp-parse-example-text": "Parsovat wikitext.",
        "apihelp-patrol-example-revid": "Prověřit revizi.",
        "apihelp-protect-description": "Změnit úroveň zamčení stránky.",
        "apihelp-protect-param-reason": "Důvod pro odemčení.",
        "apihelp-protect-example-protect": "Zamknout stránku.",
+       "apihelp-query+alldeletedrevisions-description": "Seznam všech smazaných revizí od konkrétního uživatele nebo v konkrétním jmenném prostoru.",
        "apihelp-query+alldeletedrevisions-example-user": "Seznam posledních 50 smazaných editací uživatele <kbd>Příklad<kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Seznam prvních 50 smazaných revizí v hlavním jmenném prostoru.",
        "apihelp-query+allfileusages-description": "Zobrazit seznam všech použití souboru, včetně neexistujících.",
+       "apihelp-query+allfileusages-example-unique": "Zobrazit seznam unikátních názvů souborů.",
        "apihelp-query+alllinks-example-generator": "Získat stránky obsahující odkazy.",
        "apihelp-query+allpages-param-filterredir": "Které stránky uvést na seznam.",
        "apihelp-query+allpages-param-minsize": "Omezit na stránky s určitým počtem bajtů.",
index 6f7ccf3..c2d7fcc 100644 (file)
@@ -7,7 +7,9 @@
                        "McDutchie",
                        "Element303",
                        "Macofe",
-                       "Linedwell"
+                       "Linedwell",
+                       "Nicolapps",
+                       "Raulel"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentation]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> Toutes les fonctionnalités affichées sur cette page devraient fonctionner, mais l’API est encore en cours de développement et peut changer à tout moment. Inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un en-tête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet en-tête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
        "apihelp-block-param-watchuser": "Surveiller les pages utilisateur et de discussion de l’utilisateur ou de l’adresse IP.",
        "apihelp-block-example-ip-simple": "Bloquer l’adresse IP <kbd>192.0.2.5</kbd> pour trois jours avec le motif <kbd>Premier avertissement</kbd>.",
        "apihelp-block-example-user-complex": "Bloquer indéfiniment l’utilisateur <kbd>Vandale</kbd> avec le motif <kbd>Vandalisme</kbd>, et empêcher la création de nouveau compte et l'envoi de courriel.",
+       "apihelp-checktoken-description": "Vérifier la validité d'un jeton de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-param-type": "Type de jeton testé",
+       "apihelp-checktoken-param-token": "Jeton à tester.",
+       "apihelp-checktoken-param-maxtokenage": "Temps maximum autorisé pour le jeton, en secondes",
+       "apihelp-checktoken-example-simple": "Tester la validité d'un jeton de <kbd>csrf</kbd>.",
        "apihelp-clearhasmsg-description": "Efface le drapeau <code>hasmsg</code> pour l’utilisateur courant.",
        "apihelp-clearhasmsg-example-1": "Effacer le drapeau <code>hasmsg</code> pour l’utilisateur courant",
        "apihelp-compare-description": "Obtenir la différence entre 2 pages.\n\nVous devez passer un numéro de révision, un titre de page, ou un ID de page, à la fois pour « from » et « to ».",
@@ -63,7 +70,7 @@
        "apihelp-delete-param-pageid": "ID de la page que vous voulez supprimer. Impossible à utiliser avec <var>$1title</var>.",
        "apihelp-delete-param-reason": "Motif de suppression. Si non défini, un motif généré automatiquement sera utilisé.",
        "apihelp-delete-param-watch": "Ajouter la page à la liste de suivi de l’utilisateur actuel.",
-       "apihelp-delete-param-watchlist": "Ajouter ou supprimer sans condition la page de votre liste de suivi, utiliser les préférences ou ne pas modifier le suivi.",
+       "apihelp-delete-param-watchlist": "Ajouter ou supprimer sans distinction la page de la liste de suivi de l'utilisateur actuel, utiliser les préférences ou ne rien changer au suivi.",
        "apihelp-delete-param-unwatch": "Supprimer la page de la liste de suivi de l'utilisateur actuel.",
        "apihelp-delete-param-oldimage": "Le nom de l’ancienne image à supprimer tel que fourni par [[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-delete-example-simple": "Supprimer <kbd>Page principale</kbd>.",
@@ -80,8 +87,8 @@
        "apihelp-edit-param-notminor": "Modification non mineure.",
        "apihelp-edit-param-bot": "Marquer cette modification comme robot.",
        "apihelp-edit-param-basetimestamp": "Horodatage de la révision de base, utilisé pour détecter les conflits de modification. Peut être obtenu via [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
-       "apihelp-edit-param-starttimestamp": "Horodatage quand vous avez commencé le processus de modification, utilisé pour détecter les conflits de modification. Une valeur appropriée peut être obtenue en utilisant [[Special:ApiHelp/main|curtimestamp]] lors du démarrage du processus de modification (par ex. en chargeant le contenu de la page à modifier).",
-       "apihelp-edit-param-recreate": "Écraser toutes les erreurs sur l’article ayant été supprimé pendant ce temps.",
+       "apihelp-edit-param-starttimestamp": "L'horodatage, lorsque le processus d'édition est démarré, est utilisé pour détecter les conflits de modification. Une valeur appropriée peut être obtenue en utilisant <var>[[Special:ApiHelp/main|curtimestamp]]</var> lors du démarrage du processus d'édition (par ex. en chargeant le contenu de la page à modifier).",
+       "apihelp-edit-param-recreate": "Ignorer toutes les erreurs concernant la page \nqui a été supprimée entre-temps.",
        "apihelp-edit-param-createonly": "Ne pas modifier la page si elle existe déjà.",
        "apihelp-edit-param-nocreate": "Lever une erreur si la page n’existe pas.",
        "apihelp-edit-param-watch": "Ajouter la page à la liste de suivi de l'utilisateur actuel.",
        "apihelp-move-param-from": "Titre de la page que vous voulez déplacer. Impossible de l’utiliser avec $1fromid.",
        "apihelp-move-param-fromid": "ID de la page que vous voulez déplacer. Impossible à utiliser avec $1from.",
        "apihelp-move-param-to": "Titre de la page renommée.",
-       "apihelp-move-param-reason": "Motif du déplacement.",
-       "apihelp-move-param-movetalk": "Déplacer la page de discussion, si elle existe.",
-       "apihelp-move-param-movesubpages": "Déplacer les sous-pages, le cas échéant.",
+       "apihelp-move-param-reason": "Motif du renommage.",
+       "apihelp-move-param-movetalk": "Renommer la page de discussion, si elle existe.",
+       "apihelp-move-param-movesubpages": "Renommer les sous-pages, le cas échéant.",
        "apihelp-move-param-noredirect": "Ne pas créer une redirection.",
-       "apihelp-move-param-watch": "Ajouter une page et la redirection à votre liste de suivi.",
-       "apihelp-move-param-unwatch": "Supprimer la page et la redirection de votre liste de suivi.",
-       "apihelp-move-param-watchlist": "Ajouter ou supprimer sans condition la page de votre liste de suivi, utiliser les préférences ou ne pas changer le suivi.",
+       "apihelp-move-param-watch": "Ajouter une page et la redirection à liste de suivi de l'utilisateur actuel.",
+       "apihelp-move-param-unwatch": "Supprimer la page et la redirection de la liste de suivi de l'utilisateur actuel.",
+       "apihelp-move-param-watchlist": "Ajouter ou supprimer sans condition la page de la liste de suivi de l'utilisateur actuel, utiliser les préférences ou ne pas changer le suivi.",
        "apihelp-move-param-ignorewarnings": "Ignorer tous les avertissements.",
        "apihelp-move-example-move": "Déplacer <kbd>Mauvais titre</kbd> en <kbd>Bon titre</kbd> sans garder de redirection.",
        "apihelp-opensearch-description": "Rechercher dans le wiki en utilisant le protocole OpenSearch.",
        "apihelp-protect-param-expiry": "Horodatages d’expiration. Si un seul horodatage est fourni, il sera utilisé pour toutes les protections. Utiliser <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> ou <kbd>never</kbd> pour une protection sans expiration.",
        "apihelp-protect-param-reason": "Motif de (dé)protection.",
        "apihelp-protect-param-cascade": "Activer la protection en cascade (c’est-à-dire protéger les pages incluses dans cette page). Ignoré si tous les niveaux de protection fournis ne supportent pas la mise en cascade.",
-       "apihelp-protect-param-watch": "Si activé, ajouter la page (dé)protégée à votre liste de suivi.",
-       "apihelp-protect-param-watchlist": "Ajouter ou supprimer sans condition la page de votre liste de suivi, utiliser les préférences ou ne pas modifier le suivi.",
+       "apihelp-protect-param-watch": "Si activé, ajouter la page (dé)protégée à la liste de suivi de l'utilisateur actuel.",
+       "apihelp-protect-param-watchlist": "Ajouter ou supprimer sans condition la page de la liste de suivi de l'utilisateur actuel, utiliser les préférences ou ne pas modifier le suivi.",
        "apihelp-protect-example-protect": "Protéger une page",
        "apihelp-protect-example-unprotect": "Enlever la protection d’une page en mettant les restrictions à <kbd>all</kbd>.",
        "apihelp-protect-example-unprotect2": "Enlever la protection de la page en ne mettant aucune restriction",
        "apihelp-query+backlinks-param-namespace": "L’espace de noms à énumérer.",
        "apihelp-query+backlinks-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+backlinks-param-filterredir": "Comment filtrer les redirections. Si positionné à <kbd>nonredirects</kbd> quand <var>$1redirect</var> est activé, cela ne s’applique qu’au second niveau.",
-       "apihelp-query+backlinks-param-limit": "Combien de pages renvoyer au total. Si $1redirect est activé, la limite s’applique à chaque niveau séparément (ce qui signifie que vous pouvez obtenir jusqu’à 2 * limite résultats).",
+       "apihelp-query+backlinks-param-limit": "Combien de pages renvoyer au total. Si $1redirect est activé, la limite s’applique à chaque niveau séparément (ce qui signifie jusqu’à 2 * limite résultats peut être retourné).",
        "apihelp-query+backlinks-param-redirect": "Si le lien vers une page est une redirection, trouver toutes les pages qui ont un lien vers cette redirection aussi. La limite maximale est divisée par deux.",
        "apihelp-query+backlinks-example-simple": "Afficher les liens vers <kbd>Main page<kbd>.",
        "apihelp-query+backlinks-example-generator": "Obtenir des informations sur les pages ayant un lien vers <kbd>Main page<kbd>.",
        "apihelp-query+templates-param-dir": "La direction dans laquelle lister.",
        "apihelp-query+templates-example-simple": "Obtenir les modèles de [[Main Page]]",
        "apihelp-query+templates-example-generator": "Obtenir des informations sur les pages modèle utilisé sur <kbd>Main Page</kbd>.",
-       "apihelp-query+templates-example-namespaces": "Obtenir les modèles de [[Main Page]] dans les espaces de nom Utilisateur et Modèle",
+       "apihelp-query+templates-example-namespaces": "Obtenir les pages des espaces de nom {{ns:user}} et {{ns:template}} qui sont inclues dans la page <kdb>Main Page<kdb>.",
        "apihelp-query+tokens-description": "Récupère les jetons pour les actions de modification de données.",
        "apihelp-query+tokens-param-type": "Types de jeton à demander.",
        "apihelp-query+tokens-example-simple": "Récupérer un jeton csrf (par défaut)",
        "apihelp-yaml-description": "Extraire les données au format YAML.",
        "apihelp-yamlfm-description": "Extraire les données YAML (affiché proprement en HTML).",
        "api-format-title": "Résultat de l’API de MédiaWiki",
-       "api-format-prettyprint-header": "Vous regardez la représentation HTML du format $1. HTML est utile pour le débogage, mais inapproprié pour être utilisé dans une application.\n\nSpécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format $1, mettez format=$2.\n\nVoyez la [https://www.mediawiki.org/wiki/API documentation complète], ou l’ [[Special:ApiHelp/main|aide de l’API]] pour plus d’information.",
+       "api-format-prettyprint-header": "Vous regardez la représentation HTML du format $1. HTML est utile pour le débogage, mais inapproprié pour être utilisé dans une application.$2\n\nSpécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format $1, mettez format=$2.\n\nVoyez la [https://www.mediawiki.org/wiki/API documentation complète], ou l’ [[Special:ApiHelp/main|aide de l’API]] pour plus d’information.",
        "api-orm-param-props": "Champs à rechercher.",
        "api-orm-param-limit": "Nombre maximal de lignes à renvoyer.",
        "api-pageset-param-titles": "Une liste des titres sur lesquels travailler.",
index ce7f695..1db437e 100644 (file)
        "apihelp-createaccount-description": "Ene neue Zohjang för ene Metmaacher aanlähje.",
        "apihelp-createaccount-param-name": "Der Nahme för dä Metmaacher.",
        "apihelp-createaccount-param-password": "Et Paßwoot (Weed ävver it jebruc un övverjange, wann <code lang=\"en\" xml:lang=\"en\"><var>$1mailpassword</var></code> jesaz es)",
+       "apihelp-createaccount-param-email": "Däm Metmaacher sing Adräß för de <i lang=\"en\" xml:lang=\"en\">e-mail</i>, kann och fott bliive.",
        "apihelp-createaccount-param-realname": "Dämm Medmaacher singe reschtejje Nahme - kann fott blihve.",
+       "apihelp-createaccount-param-mailpassword": "Wann heh jädd aanjejovve es, kritt dä Metmaacher e zohfällesch ußjesöhk neu Paßwood aan sing Adräß för de <i lang=\"en\" xml:lang=\"en\">e-mail</i> jescheck.",
+       "apihelp-createaccount-param-reason": "Ene Jrond för dä Zojang aanzelähje, dä en de Logböhscher kütt.",
        "apihelp-delete-description": "Schmieß en Sigg fott.",
        "apihelp-delete-param-watch": "Donn di Sigg en däm aktoälle Metmaacher sing Oppaßleß opnämme.",
        "apihelp-delete-param-unwatch": "Schmihß di Sigg us däm aktoälle Metmaacher singe Oppaßless erus.",
        "apihelp-delete-example-simple": "Schmiiß de Houpsigg fott",
+       "apihelp-edit-description": "Sigge aanlähje un verändere.",
        "apihelp-edit-param-sectiontitle": "De Övverschreff för ene neue Affschnett.",
+       "apihelp-edit-param-text": "Dä Sigg ehre Ennhalld.",
        "apihelp-edit-param-minor": "En klein Änderong.",
        "apihelp-edit-param-notminor": "Kein klein Änderong.",
        "apihelp-edit-param-bot": "Makeer heh di Änderog als vun enem Bot jemaat.",
+       "apihelp-edit-param-createonly": "Donn di Sigg nit ändere, wann se ald doh es.",
+       "apihelp-edit-param-nocreate": "Mäld ene Fähler, wann di Sigg nit doh es.",
+       "apihelp-edit-param-redirect": "Verfollsch de Ömleidonge automattesch.",
+       "apihelp-edit-param-contentmodel": "Et Enhalltsmodäll för dä neue Ennhalld.",
        "apihelp-edit-example-edit": "Veränder en Sigg.",
+       "apihelp-edit-example-prepend": "Donn <kbd>_&#95;NOTOC_&#95;</kbd> för en Sigg säze.",
+       "apihelp-emailuser-description": "Donn en <i lang=\"en\" xml:lang=\"en\">e-mail</i> aan dä Metmaacher schecke.",
+       "apihelp-emailuser-param-target": "D ä Metmaacher, dä di <i lang=\"en\" xml:lang=\"en\">e-mail</i> krijje sull.",
        "apihelp-emailuser-param-ccme": "scheck mer en Koppih vun heh dä <i lang=\"en\" xml:lang=\"en\">e-mail</i>.",
+       "apihelp-emailuser-example-email": "Donn en <i lang=\"en\" xml:lang=\"en\">e-mail</i> aan dä Metmaacher <kbd lang=\"en\" xml:lang=\"en\">WikiSysop</kbd> schecke mem Täx <kbd>Dä Enhalld</kbd> dren.",
        "apihelp-expandtemplates-description": "Deiht alle Schablohne en Wikkitäx ömsäze.",
        "apihelp-expandtemplates-param-title": "De Övverschreff vun dä Sigg."
 }
index f321dfb..146e878 100644 (file)
@@ -14,7 +14,7 @@
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|文档]]\n* [[mw:API:FAQ|常见问题]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 邮件列表]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 程序错误与功能请求]\n</div>\n<strong>状态信息:</strong>本页所展示的所有特性都应正常工作,但是API仍在开发当中,将会随时变化。请订阅[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 邮件列表]以便获得更新通知。\n\n<strong>错误请求:</strong>当API收到错误请求时,HTTP header将会返回一个包含\"MediaWiki-API-Error\"的值,随后header的值与error code将会送回并设置为相同的值。详细信息请参阅[[mw:API:Errors_and_warnings|API: 错误与警告]]。",
        "apihelp-main-param-action": "要执行的操作。",
        "apihelp-main-param-format": "输出的格式。",
-       "apihelp-main-param-maxlag": "最大延迟可被用于MediaWiki安装于数据库复制集中。要保存导致更多网站复制延迟的操作,此参数可使客户端等待直到复制延迟少于指定值时。万一发生过多延迟,错误代码“maxlag”会返回消息,例如“等待$host中:延迟$lag秒”。<br />参见https://www.mediawiki.org/wiki/Manual:Maxlag_parameter以获取更多信息。",
+       "apihelp-main-param-maxlag": "最大延迟可被用于MediaWiki安装于数据库复制集中。要保存导致更多网站复制延迟的操作,此参数可使客户端等待直到复制延迟少于指定值时。万一发生过多延迟,错误代码<samp>maxlag</samp>会返回消息,例如<samp>等待$host中:延迟$lag秒</samp>。<br />参见[[mw:Manual:Maxlag_parameter|Manual: Maxlag parameter]]以获取更多信息。",
        "apihelp-main-param-smaxage": "设置<code>s-maxage</code>页顶至这些秒。错误不会缓存。",
        "apihelp-main-param-maxage": "设置<code>max-age</code>页顶至这些秒。错误不会缓存。",
        "apihelp-main-param-assert": "如果设置为<kbd>user</kbd>就验证用户是否登录,或如果设置为<kbd>bot</kbd>就验证是否有机器人用户权限。",
        "apihelp-block-param-watchuser": "监视用户或该 IP 的用户页和讨论页。",
        "apihelp-block-example-ip-simple": "封禁IP地址<kbd>192.0.2.5</kbd>三天,原因<kbd>First strike</kbd>。",
        "apihelp-block-example-user-complex": "无限期封禁用户<kbd>Vandal</kbd>,原因<kbd>Vandalism</kbd>,并阻止新账户创建和电子邮件发送。",
+       "apihelp-checktoken-description": "从<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>检查令牌有效性。",
        "apihelp-checktoken-param-type": "已开始测试的令牌类型。",
        "apihelp-checktoken-param-token": "要测试的令牌。",
+       "apihelp-checktoken-param-maxtokenage": "令牌的最大允许年龄,以秒计。",
        "apihelp-checktoken-example-simple": "测试<kbd>csrf</kbd>令牌的有效性。",
        "apihelp-clearhasmsg-description": "清除当前用户的<code>hasmsg</code>标记。",
        "apihelp-clearhasmsg-example-1": "清除当前用户的<code>hasmsg</code>标记。",
@@ -67,7 +69,7 @@
        "apihelp-delete-param-pageid": "要删除的页面的页面 ID。不能与<var>$1title</var>一起使用。",
        "apihelp-delete-param-reason": "删除原因。如果未设置,将使用一个自动生成的原因。",
        "apihelp-delete-param-watch": "将该页面加入当前用户的监视列表。",
-       "apihelp-delete-param-watchlist": "无条件地将页面加入至的监视列表或将其移除,使用设置或不更改监视。",
+       "apihelp-delete-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-delete-param-unwatch": "将该页面从当前用户的监视列表删除。",
        "apihelp-delete-param-oldimage": "由[[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]]提供的要删除的旧图片名称。",
        "apihelp-delete-example-simple": "删除<kbd>Main Page</kbd>。",
@@ -90,7 +92,7 @@
        "apihelp-edit-param-nocreate": "如果该页面不存在,则抛出一个错误。",
        "apihelp-edit-param-watch": "将页面加入当前用户的监视列表。",
        "apihelp-edit-param-unwatch": "将页面从当前用户的监视列表中移除。",
-       "apihelp-edit-param-watchlist": "无条件地将页面加入至的监视列表或将其移除,使用设置或不更改监视。",
+       "apihelp-edit-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-edit-param-md5": "$1text参数或$1prependtext和$1appendtext级联参数的MD5哈希值。如果设置,除非哈希值正确否则编辑无法完成。",
        "apihelp-edit-param-prependtext": "将该文本添加到该页面的开始。覆盖$1text。",
        "apihelp-edit-param-appendtext": "将该文本添加到该页面的结尾。覆盖$1text。\n\n采用$1section=new来添加一个新的章节,而不是这个参数。",
        "apihelp-filerevert-param-archivename": "恢复到修订版存档名称。",
        "apihelp-filerevert-example-revert": "回退<kbd>Wiki.png</kbd>至<kbd>2011-03-05T15:27:40Z</kbd>的版本。",
        "apihelp-help-description": "显示指定模块的帮助。",
+       "apihelp-help-param-modules": "用于显示帮助的模块(<var>action</var>和<var>format</var>参数值,或<kbd>main</kbd>)。可通过<kbd>+</kbd>指定子模块。",
        "apihelp-help-param-submodules": "包括给定名称模块的子模块的帮助。",
        "apihelp-help-param-recursivesubmodules": "包括递归子模块的帮助。",
        "apihelp-help-param-helpformat": "帮助的输出格式。",
        "apihelp-imagerotate-param-rotation": "顺时针旋转图像的度数。",
        "apihelp-imagerotate-example-simple": "<kbd>90</kbd>度旋转<kbd>File:Example.png</kbd>。",
        "apihelp-imagerotate-example-generator": "将<kbd>Category:Flip</kbd>之中的所有图像旋转<kbd>180</kbd>度。",
+       "apihelp-import-description": "从另一个wiki导入一个页面,或一个XML文件。\n\n注意当发送一个用于<var>xml</var>参数的文件时,HTTP POST必须作为一次文件上传完成(也就是使用multipart/form-data)。",
        "apihelp-import-param-summary": "导入摘要。",
        "apihelp-import-param-xml": "上传的XML文件。",
        "apihelp-import-param-interwikisource": "用于跨wiki导入:导入的来源wiki。",
        "apihelp-move-param-noredirect": "不要创建重定向。",
        "apihelp-move-param-watch": "将页面和重定向加入至当前用户的监视列表中。",
        "apihelp-move-param-unwatch": "从当前用户的监视列表中移除页面及重定向。",
-       "apihelp-move-param-watchlist": "无条件地将页面加入至的监视列表或将其移除,使用设置或不更改监视。",
+       "apihelp-move-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-move-param-ignorewarnings": "忽略任何警告。",
        "apihelp-move-example-move": "移动<kbd>坏标题</kbd>到<kbd>好标题</kbd>并且不留下重定向。",
        "apihelp-opensearch-description": "使用OpenSearch协议搜索本wiki。",
        "apihelp-parse-param-summary": "所要解析的摘要。",
        "apihelp-parse-param-page": "解析此页的内容。不能与<var>$1text</var>和<var>$1title</var>一起使用。",
        "apihelp-parse-param-pageid": "解析此页的内容。覆盖<var>$1page</var>。",
-       "apihelp-parse-param-redirects": "如果 $1page 或 $1 pageid 参数被设置为一个重定向,则解析它。",
+       "apihelp-parse-param-redirects": "如果<var>$1page</var>或<var>$1pageid</var>被设置为一个重定向,则解析它。",
        "apihelp-parse-param-oldid": "解析该修订版本的内容。覆盖<var>$1page</var>和<var>$1pageid</var>。",
        "apihelp-parse-param-disablepp": "从解析器输出中禁用PP报告。",
        "apihelp-parse-param-disableeditsection": "从解析器输出中禁用编辑段落链接。",
        "apihelp-protect-param-protections": "保护等级列表,格式:<kbd>action=level</kbd>(例如<kbd>edit=sysop</kbd>)。\n\n<strong>注意:</strong>未列出的操作将移除限制。",
        "apihelp-protect-param-expiry": "到期时间戳。如果只有一个时间戳被设置,它将被用于所有保护。使用<kbd>infinite</kbd>、<kbd>indefinite</kbd>、<kbd>infinity</kbd>或<kbd>never</kbd>用于永不过期的保护。",
        "apihelp-protect-param-reason": "(解除)保护的原因。",
+       "apihelp-protect-param-watch": "如果设置,就加入已开始(解除)保护的页面至当前用户的监视列表。",
+       "apihelp-protect-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-protect-example-protect": "保护一个页面",
        "apihelp-protect-example-unprotect": "通过设置限制为<kbd>all</kbd>解除保护一个页面。",
        "apihelp-protect-example-unprotect2": "通过设置没有限制解除保护一个页面",
        "apihelp-query+links-example-simple": "从页面<kbd>Main Page</kbd>获得链接",
        "apihelp-query+links-example-generator": "获得有关在页面<kbd>Main Page</kbd>中连接的页面的信息。",
        "apihelp-query+links-example-namespaces": "获得在{{ns:user}}和{{ns:template}}名字空间中来自页面<kbd>Main Page</kbd>的链接。",
+       "apihelp-query+linkshere-description": "查找所有链接至指定页面的页面。",
+       "apihelp-query+linkshere-param-prop": "要获得的属性:\n;pageid:每个页面的页面ID。\n;title:每个页面的标题。\n;redirect:如果页面是一个重定向就标记。",
        "apihelp-query+linkshere-param-namespace": "只包括这些名字空间的页面。",
        "apihelp-query+linkshere-param-limit": "返回多少。",
        "apihelp-query+linkshere-param-show": "只显示符合以下标准的项:\n;redirect:只显示重定向。\n;!redirect:只显示非重定向。",
        "apihelp-query+logevents-description": "从日志获取事件。",
        "apihelp-query+logevents-example-simple": "列出最近日志活动",
        "apihelp-query+pagepropnames-description": "列出wiki中所有使用中的页面属性名称。",
+       "apihelp-query+pagepropnames-param-limit": "返回名称的最大数量。",
        "apihelp-query+pagepropnames-example-simple": "获取前10个属性名称。",
        "apihelp-query+pageprops-example-simple": "获得用于<kbd>Category:Foo</kbd>的属性。",
        "apihelp-query+pageswithprop-description": "列出所有使用指定页面属性的页面。",
        "apihelp-query+users-description": "获取有关列出用户的信息。",
        "apihelp-query+users-param-token": "请改用<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+users-example-simple": "返回用户<kbd>Example</kbd>的信息。",
+       "apihelp-query+watchlist-param-start": "枚举的起始时间戳。",
+       "apihelp-query+watchlist-param-end": "枚举的结束时间戳。",
        "apihelp-query+watchlist-param-user": "只列出此用户的更改。",
        "apihelp-query+watchlist-param-excludeuser": "不要列出此用户的更改。",
        "apihelp-query+watchlist-param-token": "允许访问其他用户监视列表的安全密钥(可通过用户的[[Special:Preferences#mw-prefsection-watchlist|参数设置]]找到)。",
        "apihelp-revisiondelete-example-revision": "隐藏<kbd>首页</kbd>的修订版本<kbd>12345</kbd>的内容。",
        "apihelp-rollback-param-title": "要回退的页面标题。不能与<var>$1pageid</var>一起使用。",
        "apihelp-rollback-param-pageid": "要回退的页面的页面 ID。不能与<var>$1title</var>一起使用。",
+       "apihelp-rollback-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-rollback-example-simple": "回退由用户<kbd>Example</kbd>对<kbd>Main Page</kbd>做出的最近编辑。",
        "apihelp-rollback-example-summary": "回退由IP用户<kbd>192.0.2.5</kbd>对页面<kbd>Main Page</kbd>做出的最近编辑,带编辑摘要<kbd>Reverting vandalism</kbd>,并将这些编辑和回退标记为机器人编辑。",
        "apihelp-rsd-description": "导出一个RSD(Really Simple Discovery)架构",
        "apihelp-rsd-example-simple": "导出RSD架构",
+       "apihelp-setnotificationtimestamp-example-all": "重置整个监视列表的通知状态。",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "设置<kbd>Main page</kbd>的通知时间戳,这样所有从2012年1月1日起的编辑都会是未复核的。",
        "apihelp-setnotificationtimestamp-example-allpages": "重置在<kbd>{{ns:user}}</kbd>名字空间中的页面的通知状态。",
        "apihelp-tokens-param-type": "要请求的令牌类型。",
        "apihelp-unblock-example-user": "解封用户<kbd>Bob</kbd>,原因<kbd>Sorry Bob</kbd>。",
        "apihelp-undelete-param-title": "要恢复的页面标题。",
        "apihelp-undelete-param-reason": "恢复的原因。",
+       "apihelp-undelete-param-fileids": "要恢复的文件修订ID。如果<var>$1timestamps</var>和<var>$1fileids</var>都为空,所有将被恢复。",
        "apihelp-undelete-example-page": "恢复页面<kbd>Main Page</kbd>。",
        "apihelp-undelete-example-revisions": "恢复<kbd>首页</kbd>的两个修订。",
        "apihelp-upload-param-filename": "目标文件名。",
+       "apihelp-upload-param-comment": "上传注释。如果没有指定<var>$1text</var>,那么它也被用于新文件的初始页面文本。",
        "apihelp-upload-param-watch": "监视页面。",
+       "apihelp-upload-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-upload-param-ignorewarnings": "忽略任何警告。",
        "apihelp-upload-param-file": "文件内容。",
        "apihelp-upload-param-stash": "如果设置,服务器将临时藏匿文件而不是加入存储库。",
        "apihelp-yaml-description": "输出数据为YAML格式。",
        "apihelp-yamlfm-description": "输出数据为YAML格式(HTML优质打印效果)。",
        "api-format-title": "MediaWiki API 结果",
-       "api-format-prettyprint-header": "您正在查看$1格式的HTML表示。HTML对调试很有用,但不适合应用程序使用。\n\n指定格式参数以更改输出格式。要查看$1格式的非HTML表示,设置format=$2。\n\n参见[https://www.mediawiki.org/wiki/Special:MyLanguage/API 完整文档],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
+       "api-format-prettyprint-header": "这是$1格式的HTML表示。HTML对调试很有用,但不适合应用程序使用。\n\n指定<var>format</var>参数以更改输出格式。要查看$1格式的非HTML表示,设置<kbd>format=$2</kbd>。\n\n参见[[mw:API|完整文档]],或[[Special:ApiHelp/main|API 帮助]]以获取更多信息。",
        "api-orm-param-props": "要查询的字段。",
        "api-orm-param-limit": "返回的总行数。",
        "api-pageset-param-generator": "通过执行指定查询模块获得页面列表以工作。\n\n<strong>注意:</strong>发生器参数名称必须以“g”开头,参见例子。",
index c6d9a18..c3f455e 100644 (file)
@@ -487,4 +487,55 @@ class BacklinkCache {
 
                return array( 'numRows' => $numRows, 'batches' => $batches );
        }
+
+       /**
+        * Get a Title iterator for cascade-protected template/file use backlinks
+        *
+        * @return TitleArray
+        * @since 1.25
+        */
+       public function getCascadeProtectedLinks() {
+               $dbr = $this->getDB();
+
+               // @todo: use UNION without breaking tests that use temp tables
+               $resSets = array();
+               $resSets[] = $dbr->select(
+                       array( 'templatelinks', 'page_restrictions', 'page' ),
+                       array( 'page_namespace', 'page_title', 'page_id' ),
+                       array(
+                               'tl_namespace' => $this->title->getNamespace(),
+                               'tl_title' => $this->title->getDBkey(),
+                               'tl_from = pr_page',
+                               'pr_cascade' => 1,
+                               'page_id = tl_from'
+                       ),
+                       __METHOD__,
+                       array( 'DISTINCT' )
+               );
+               if ( $this->title->getNamespace() == NS_FILE ) {
+                       $resSets[] = $dbr->select(
+                               array( 'imagelinks', 'page_restrictions', 'page' ),
+                               array( 'page_namespace', 'page_title', 'page_id' ),
+                               array(
+                                       'il_to' => $this->title->getDBkey(),
+                                       'il_from = pr_page',
+                                       'pr_cascade' => 1,
+                                       'page_id = il_from'
+                               ),
+                               __METHOD__,
+                               array( 'DISTINCT' )
+                       );
+               }
+
+               // Combine and de-duplicate the results
+               $mergedRes = array();
+               foreach ( $resSets as $res ) {
+                       foreach ( $res as $row ) {
+                               $mergedRes[$row->page_id] = $row;
+                       }
+               }
+
+               return TitleArray::newFromResult(
+                       new FakeResultWrapper( array_values( $mergedRes ) ) );
+       }
 }
index 8c806c6..371b267 100644 (file)
@@ -626,8 +626,15 @@ abstract class ContentHandler {
        public function createDifferenceEngine( IContextSource $context, $old = 0, $new = 0,
                $rcid = 0, //FIXME: Deprecated, no longer used
                $refreshCache = false, $unhide = false ) {
-               $diffEngineClass = $this->getDiffEngineClass();
 
+               // hook: get difference engine
+               $differenceEngine = null;
+               if ( !wfRunHooks( 'GetDifferenceEngine',
+                       array( $context, $old, $new, $refreshCache, $unhide, &$differenceEngine )
+               ) ) {
+                       return $differenceEngine;
+               }
+               $diffEngineClass = $this->getDiffEngineClass();
                return new $diffEngineClass( $context, $old, $new, $rcid, $refreshCache, $unhide );
        }
 
index 0175e8d..2b79261 100644 (file)
@@ -1624,9 +1624,10 @@ abstract class DatabaseBase implements IDatabase {
         *     - If the value of such an array element is a scalar (such as a
         *       string), it will be treated as data and thus quoted appropriately.
         *       If it is null, an IS NULL clause will be added.
-        *     - If the value is an array, an IN(...) clause will be constructed,
-        *       such that the field name may match any of the elements in the
-        *       array. The elements of the array will be quoted.
+        *     - If the value is an array, an IN (...) clause will be constructed
+        *       from its non-null elements, and an IS NULL clause will be added
+        *       if null is present, such that the field may match any of the
+        *       elements in the array. The non-null elements will be quoted.
         *
         * Note that expressions are often DBMS-dependent in their syntax.
         * DBMS-independent wrappers are provided for constructing several types of
index e02cfbc..862ac27 100644 (file)
@@ -43,7 +43,6 @@ class HTMLCacheUpdate implements DeferrableUpdate {
        }
 
        public function doUpdate() {
-
                $job = new HTMLCacheUpdateJob(
                        $this->mTitle,
                        array(
@@ -63,6 +62,5 @@ class HTMLCacheUpdate implements DeferrableUpdate {
                                $job->run(); // just do the purge query now
                        } );
                }
-
        }
 }
index 9c377df..e4f00e7 100644 (file)
@@ -228,12 +228,24 @@ class LinksUpdate extends SqlDataUpdate {
         * Which means do LinksUpdate on all pages that include the current page,
         * using the job queue.
         */
-       function queueRecursiveJobs() {
+       protected function queueRecursiveJobs() {
                self::queueRecursiveJobsForTable( $this->mTitle, 'templatelinks' );
                if ( $this->mTitle->getNamespace() == NS_FILE ) {
                        // Process imagelinks in case the title is or was a redirect
                        self::queueRecursiveJobsForTable( $this->mTitle, 'imagelinks' );
                }
+
+               $bc = $this->mTitle->getBacklinkCache();
+               // Get jobs for cascade-protected backlinks for a high priority queue.
+               // If meta-templates change to using a new template, the new template
+               // should be implicitly protected as soon as possible, if applicable.
+               // These jobs duplicate a subset of the above ones, but can run sooner.
+               // Which ever runs first generally no-ops the other one.
+               $jobs = array();
+               foreach ( $bc->getCascadeProtectedLinks() as $title ) {
+                       $jobs[] = new RefreshLinksJob( $title, array( 'prioritize' => true ) );
+               }
+               JobQueueGroup::singleton()->push( $jobs );
        }
 
        /**
@@ -253,6 +265,7 @@ class LinksUpdate extends SqlDataUpdate {
                                        "refreshlinks:{$table}:{$title->getPrefixedText()}"
                                )
                        );
+
                        JobQueueGroup::singleton()->push( $job );
                        JobQueueGroup::singleton()->deduplicateRootJob( $job );
                }
index 1bd2092..a0e1a96 100644 (file)
@@ -94,6 +94,10 @@ class DifferenceEngine extends ContextSource {
 
        /** @var bool Show rev_deleted content if allowed */
        protected $unhide = false;
+
+       /** @var bool Refresh the diff cache */
+       protected $mRefreshCache = false;
+
        /**#@-*/
 
        /**
index 1c15ad0..6ccf2d5 100644 (file)
@@ -369,12 +369,17 @@ abstract class DatabaseInstaller {
        }
 
        /**
-        * Get a name=>value map of MW configuration globals that overrides.
-        * DefaultSettings.php
+        * Get a name=>value map of MW configuration globals for the default values.
         * @return array
         */
        public function getGlobalDefaults() {
-               return array();
+               $defaults = array();
+               foreach ( $this->getGlobalNames() as $var ) {
+                       if ( isset( $GLOBALS[$var] ) ) {
+                               $defaults[$var] = $GLOBALS[$var];
+                       }
+               }
+               return $defaults;
        }
 
        /**
index 46bb86c..5a8403f 100644 (file)
@@ -652,9 +652,9 @@ class MssqlInstaller extends DatabaseInstaller {
        public function getGlobalDefaults() {
                // The default $wgDBmwschema is null, which breaks Postgres and other DBMSes that require
                // the use of a schema, so we need to set it here
-               return array(
+               return array_merge( parent::getGlobalDefaults(), array(
                        'wgDBmwschema' => 'mediawiki',
-               );
+               ) );
        }
 
        /**
index b82e611..63e8611 100644 (file)
@@ -71,13 +71,6 @@ class MysqlInstaller extends DatabaseInstaller {
                return self::checkExtension( 'mysql' ) || self::checkExtension( 'mysqli' );
        }
 
-       /**
-        * @return array
-        */
-       public function getGlobalDefaults() {
-               return array();
-       }
-
        /**
         * @return string
         */
index c30a989..e19f9aa 100644 (file)
@@ -627,9 +627,9 @@ class PostgresInstaller extends DatabaseInstaller {
        public function getGlobalDefaults() {
                // The default $wgDBmwschema is null, which breaks Postgres and other DBMSes that require
                // the use of a schema, so we need to set it here
-               return array(
+               return array_merge( parent::getGlobalDefaults(), array(
                        'wgDBmwschema' => 'mediawiki',
-               );
+               ) );
        }
 
        public function setupPLpgSQL() {
index 7e21b4d..37fba15 100644 (file)
@@ -68,6 +68,7 @@ class SqliteInstaller extends DatabaseInstaller {
        }
 
        public function getGlobalDefaults() {
+               $defaults = parent::getGlobalDefaults();
                if ( isset( $_SERVER['DOCUMENT_ROOT'] ) ) {
                        $path = str_replace(
                                array( '/', '\\' ),
@@ -75,10 +76,9 @@ class SqliteInstaller extends DatabaseInstaller {
                                dirname( $_SERVER['DOCUMENT_ROOT'] ) . '/data'
                        );
 
-                       return array( 'wgSQLiteDataDir' => $path );
-               } else {
-                       return array();
+                       $defaults['wgSQLiteDataDir'] = $path;
                }
+               return $defaults;
        }
 
        public function getConnectForm() {
index bf6cf04..9b7495b 100644 (file)
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "MediaWiki ondersteunt de volgende databasesystemen:\n\n$1\n\nAls u het databasesysteem dat u wilt gebruiken niet in de lijst terugvindt, volg dan de handleiding waarnaar hierboven wordt verwezen om ondersteuning toe te voegen.",
-       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] is de primaire database voor MediaWiki en wordt het best ondersteund. MediaWiki werkt ook met [{{int:version-db-mariadb-url}} MariaDB] en [{{int:version-db-percona-url}} Percona Server], die MySQL compatibel zijn. ([http://www.php.net/manual/en/mysqli.installation.php hoe PHP te compileren met MySQL ondersteuning])",
-       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] is een populair open source databasesysteem als alternatief voor MySQL. Het is mogelijk dat er een aantal bekende kleinere problemen zijn met MediaWiki in combinatie met deze database en daarom wordt PostgreSQL niet aanbevolen voor een productieomgeving.([http://www.php.net/manual/en/pgsql.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor PostgreSQL]).",
-       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] is een zeer goed ondersteund lichtgewicht databasesysteem ([http://www.php.net/manual/en/pdo.installation.php hoe PHP gecompileerd zijn met ondersteuning voor SQLite]; gebruikt PDO)",
+       "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] is de primaire database voor MediaWiki en wordt het best ondersteund. MediaWiki werkt ook met [{{int:version-db-mariadb-url}} MariaDB] en [{{int:version-db-percona-url}} Percona Server], die MySQL compatibel zijn ([http://www.php.net/manual/en/mysqli.installation.php hoe PHP te compileren met MySQL ondersteuning]).",
+       "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] is een populair open source databasesysteem als alternatief voor MySQL. Het is mogelijk dat er een aantal bekende kleinere problemen zijn met MediaWiki in combinatie met deze database en daarom wordt PostgreSQL niet aanbevolen voor een productieomgeving ([http://www.php.net/manual/en/pgsql.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor PostgreSQL]).",
+       "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] is een zeer goed ondersteund lichtgewicht databasesysteem ([http://www.php.net/manual/en/pdo.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor SQLite]; gebruikt PDO).",
        "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] is een commerciële database voor grote bedrijven ([http://www.php.net/manual/en/oci8.installation.php PHP compileren met ondersteuning voor OCI8]).",
-       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] is een commerciële enterprisedatabase voor Windows. Zie ook [http://www.php.net/manual/en/sqlsrv.installation.php PHP compileren met ondersteuning voor SQLSRV].",
+       "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] is een commerciële enterprisedatabase voor Windows ([http://www.php.net/manual/en/sqlsrv.installation.php PHP compileren met ondersteuning voor SQLSRV]).",
        "config-header-mysql": "MySQL-instellingen",
        "config-header-postgres": "PostgreSQL-instellingen",
        "config-header-sqlite": "SQLite-instellingen",
        "config-mysql-charset": "Tekenset voor de database:",
        "config-mysql-binary": "Binair",
        "config-mysql-utf8": "UTF-8",
-       "config-mysql-charset-help": "In '''binaire modus''' slaat MediaWiki tekst in UTF-8 op in binaire databasevelden.\nDit is efficiënter dan de UTF-8-modus van MySQL en stelt u in staat de volledige reeks Unicodetekens te gebruiken.\n\nIn '''UTF-8-modus''' kent MySQL de tekenset van uw gegevens en kan de databaseserver ze juist weergeven en converteren.\nHet is dat niet mogelijk tekens op te slaan die de \"[//nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
+       "config-mysql-charset-help": "In '''binaire modus''' slaat MediaWiki tekst in UTF-8 op in binaire databasevelden.\nDit is efficiënter dan de UTF-8-modus van MySQL en stelt u in staat de volledige reeks Unicodetekens te gebruiken.\n\nIn '''UTF-8-modus''' kent MySQL de tekenset van uw gegevens en kan de databaseserver ze juist weergeven en converteren.\nHet is dan niet mogelijk tekens op te slaan die de \"[//nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
        "config-mssql-auth": "Authenticatietype:",
        "config-mssql-install-auth": "Selecteer de authenticatiemethode die wordt gebruikt om met de database te verbinden tijdens het installatieproces.\nAls u \"{{int:config-mssql-windowsauth}}\" selecteert, dan worden de aanmeldgegevens van de gebruiker waaronder de webserver draait voor authenticatie gebruikt.",
        "config-mssql-web-auth": "Selecteer de authenticatiemethode die de webserver gebruikt om met de database te verbinden tijdens het installatieproces.\nAls u \"{{int:config-mssql-windowsauth}}\" selecteert, dan worden de aanmeldgegevens van de gebruiker waaronder de webserver draait voor authenticatie gebruikt.",
index b54ecfd..fb10c15 100644 (file)
@@ -64,6 +64,7 @@ class RecentChangesUpdateJob extends Job {
                if ( !$dbw->lock( $lockKey, __METHOD__, 1 ) ) {
                        return; // already in progress
                }
+               $batchSize = 100; // Avoid slave lag
 
                $cutoff = $dbw->timestamp( time() - $wgRCMaxAge );
                do {
@@ -71,13 +72,21 @@ class RecentChangesUpdateJob extends Job {
                                'rc_id',
                                array( 'rc_timestamp < ' . $dbw->addQuotes( $cutoff ) ),
                                __METHOD__,
-                               array( 'LIMIT' => 100 ) // avoid slave lag
+                               array( 'LIMIT' => $batchSize )
                        );
                        if ( $rcIds ) {
                                $dbw->delete( 'recentchanges', array( 'rc_id' => $rcIds ), __METHOD__ );
                        }
                        // No need for this to be in a transaction.
                        $dbw->commit( __METHOD__, 'flush' );
+
+                       if ( count( $rcIds ) === $batchSize ) {
+                               // There might be more, so try waiting for slaves
+                               if ( !wfWaitForSlaves( null, false, false, /* $timeout = */ 3 ) ) {
+                                       // Another job will continue anyway
+                                       break;
+                               }
+                       }
                } while ( $rcIds );
 
                $dbw->unlock( $lockKey, __METHOD__ );
index 5d95792..1252b0b 100644 (file)
@@ -39,6 +39,10 @@ class RefreshLinksJob extends Job {
 
        function __construct( $title, $params = '' ) {
                parent::__construct( 'refreshLinks', $title, $params );
+               // A separate type is used just for cascade-protected backlinks
+               if ( !empty( $this->params['prioritize'] ) ) {
+                       $this->command .= 'Prioritized';
+               }
                // Base backlink update jobs and per-title update jobs can be de-duplicated.
                // If template A changes twice before any jobs run, a clean queue will have:
                //              (A base, A base)
@@ -100,6 +104,10 @@ class RefreshLinksJob extends Job {
                return true;
        }
 
+       /**
+        * @param Title $title
+        * @return bool
+        */
        protected function runForTitle( Title $title = null ) {
                $linkCache = LinkCache::singleton();
                $linkCache->clear();
index 49c9f23..796acb5 100644 (file)
@@ -28,7 +28,7 @@ class ComposerJson {
        public function getRequiredDependencies() {
                $deps = array();
                foreach ( $this->contents['require'] as $package => $version ) {
-                       if ( $package !== "php" ) {
+                       if ( $package !== "php" && strpos( $package, 'ext-' ) !== 0 ) {
                                $deps[$package] = self::normalizeVersion( $version );
                        }
                }
diff --git a/includes/logging/BlockLogFormatter.php b/includes/logging/BlockLogFormatter.php
new file mode 100644 (file)
index 0000000..13d2183
--- /dev/null
@@ -0,0 +1,154 @@
+<?php
+/**
+ * Formatter for block log entries.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.25
+ */
+
+/**
+ * This class formats block log entries.
+ *
+ * @since 1.25
+ */
+class BlockLogFormatter extends LogFormatter {
+       protected function getMessageParameters() {
+               $params = parent::getMessageParameters();
+
+               $title = $this->entry->getTarget();
+               if ( substr( $title->getText(), 0, 1 ) === '#' ) {
+                       // autoblock - no user link possible
+                       $params[2] = $title->getText();
+                       $params[3] = ''; // no user name for gender use
+               } else {
+                       // Create a user link for the blocked
+                       $username = $title->getText();
+                       // @todo Store the user identifier in the parameters
+                       // to make this faster for future log entries
+                       $targetUser = User::newFromName( $username, false );
+                       $params[2] = Message::rawParam( $this->makeUserLink( $targetUser, Linker::TOOL_LINKS_NOBLOCK ) );
+                       $params[3] = $username; // plain user name for gender use
+               }
+
+               $subtype = $this->entry->getSubtype();
+               if ( $subtype === 'block' || $subtype === 'reblock' ) {
+                       // Localize the duration, and add a tooltip
+                       // in English to help visitors from other wikis.
+                       // The lrm is needed to make sure that the number
+                       // is shown on the correct side of the tooltip text.
+                       $durationTooltip = '&lrm;' . htmlspecialchars( $params[4] );
+                       $params[4] = Message::rawParam( "<span class='blockExpiry' title='$durationTooltip'>" .
+                               $this->context->getLanguage()->translateBlockExpiry( $params[4] ) . '</span>' );
+                       $params[5] = isset( $params[5] ) ?
+                               self::formatBlockFlags( $params[5], $this->context->getLanguage() ) : '';
+               }
+
+               return $params;
+       }
+
+       public function getPreloadTitles() {
+               $title = $this->entry->getTarget();
+               // Preload user page for non-autoblocks
+               if ( substr( $title->getText(), 0, 1 ) !== '#' ) {
+                       return array( $title->getTalkPage() );
+               }
+               return array();
+       }
+
+       public function getActionLinks() {
+               $subtype = $this->entry->getSubtype();
+               if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
+                       || !( $subtype === 'block' || $subtype === 'reblock' )
+                       || !$this->context->getUser()->isAllowed( 'block' )
+               ) {
+                       return '';
+               }
+
+               // Show unblock/change block link
+               $title = $this->entry->getTarget();
+               $links = array(
+                       Linker::linkKnown(
+                               SpecialPage::getTitleFor( 'Unblock', $title->getDBkey() ),
+                               $this->msg( 'unblocklink' )->escaped()
+                       ),
+                       Linker::linkKnown(
+                               SpecialPage::getTitleFor( 'Block', $title->getDBkey() ),
+                               $this->msg( 'change-blocklink' )->escaped()
+                       )
+               );
+
+               return $this->msg( 'parentheses' )->rawParams(
+                       $this->context->getLanguage()->pipeList( $links ) )->escaped();
+       }
+
+       /**
+        * Convert a comma-delimited list of block log flags
+        * into a more readable (and translated) form
+        *
+        * @param string $flags Flags to format
+        * @param Language $lang
+        * @return string
+        */
+       public static function formatBlockFlags( $flags, $lang ) {
+               $flags = trim( $flags );
+               if ( $flags === '' ) {
+                       return ''; //nothing to do
+               }
+               $flags = explode( ',', $flags );
+               $flagsCount = count( $flags );
+
+               for ( $i = 0; $i < $flagsCount; $i++ ) {
+                       $flags[$i] = self::formatBlockFlag( $flags[$i], $lang );
+               }
+
+               return wfMessage( 'parentheses' )->inLanguage( $lang )
+                       ->rawParams( $lang->commaList( $flags ) )->escaped();
+       }
+
+       /**
+        * Translate a block log flag if possible
+        *
+        * @param int $flag Flag to translate
+        * @param Language $lang Language object to use
+        * @return string
+        */
+       public static function formatBlockFlag( $flag, $lang ) {
+               static $messages = array();
+
+               if ( !isset( $messages[$flag] ) ) {
+                       $messages[$flag] = htmlspecialchars( $flag ); // Fallback
+
+                       // For grepping. The following core messages can be used here:
+                       // * block-log-flags-angry-autoblock
+                       // * block-log-flags-anononly
+                       // * block-log-flags-hiddenname
+                       // * block-log-flags-noautoblock
+                       // * block-log-flags-nocreate
+                       // * block-log-flags-noemail
+                       // * block-log-flags-nousertalk
+                       $msg = wfMessage( 'block-log-flags-' . $flag )->inLanguage( $lang );
+
+                       if ( $msg->exists() ) {
+                               $messages[$flag] = $msg->escaped();
+                       }
+               }
+
+               return $messages[$flag];
+       }
+}
index 8b30e9b..4f13d37 100644 (file)
@@ -79,8 +79,10 @@ class DeleteLogFormatter extends LogFormatter {
 
                                $newParams = array_slice( $params, 0, 3 );
                                $newParams[3] = $changeText;
-                               $count = count( explode( ',', $params[$paramStart] ) );
-                               $newParams[4] = $this->context->getLanguage()->formatNum( $count );
+                               $ids = is_array( $params[$paramStart] )
+                                       ? $params[$paramStart]
+                                       : explode( ',', $params[$paramStart] );
+                               $newParams[4] = $this->context->getLanguage()->formatNum( count( $ids ) );
 
                                $this->parsedParametersDeleteLog = $newParams;
                                return $this->parsedParametersDeleteLog;
@@ -137,8 +139,10 @@ class DeleteLogFormatter extends LogFormatter {
 
                                // Different revision types use different URL params...
                                $key = $params[3];
-                               // This is a CSV of the IDs
-                               $ids = explode( ',', $params[4] );
+                               // This is a array or CSV of the IDs
+                               $ids = is_array( $params[4] )
+                                       ? $params[4]
+                                       : explode( ',', $params[4] );
 
                                $links = array();
 
index 4487fec..b69ccb2 100644 (file)
@@ -331,6 +331,29 @@ class LogFormatter {
                                        ->rawParams( $target, $parameters['4::dest'], $parameters['5::mergepoint'] )
                                        ->inContentLanguage()->escaped();
                                break;
+
+                       case 'block':
+                               switch ( $entry->getSubtype() ) {
+                                       case 'block':
+                                               global $wgContLang;
+                                               $duration = $wgContLang->translateBlockExpiry( $parameters['5::duration'] );
+                                               $flags = BlockLogFormatter::formatBlockFlags( $parameters['6::flags'], $wgContLang );
+                                               $text = wfMessage( 'blocklogentry' )
+                                                       ->rawParams( $target, $duration, $flags )->inContentLanguage()->escaped();
+                                               break;
+                                       case 'unblock':
+                                               $text = wfMessage( 'unblocklogentry' )
+                                                       ->rawParams( $target )->inContentLanguage()->escaped();
+                                               break;
+                                       case 'reblock':
+                                               global $wgContLang;
+                                               $duration = $wgContLang->translateBlockExpiry( $parameters['5::duration'] );
+                                               $flags = BlockLogFormatter::formatBlockFlags( $parameters['6::flags'], $wgContLang );
+                                               $text = wfMessage( 'reblock-logentry' )
+                                                       ->rawParams( $target, $duration, $flags )->inContentLanguage()->escaped();
+                                               break;
+                               }
+                               break;
                        // case 'suppress' --private log -- aaron  (so we know who to blame in a few years :-D)
                        // default:
                }
@@ -640,7 +663,7 @@ class LogFormatter {
                return $this->context->msg( $key );
        }
 
-       protected function makeUserLink( User $user ) {
+       protected function makeUserLink( User $user, $toolFlags = 0 ) {
                if ( $this->plaintext ) {
                        $element = $user->getName();
                } else {
@@ -650,9 +673,11 @@ class LogFormatter {
                        );
 
                        if ( $this->linkFlood ) {
-                               $element .= Linker::userToolLinksRedContribs(
+                               $element .= Linker::userToolLinks(
                                        $user->getId(),
                                        $user->getName(),
+                                       true, // redContribsWhenNoEdits
+                                       $toolFlags,
                                        $user->getEditCount()
                                );
                        }
@@ -758,29 +783,7 @@ class LegacyLogFormatter extends LogFormatter {
                $type = $this->entry->getType();
                $subtype = $this->entry->getSubtype();
 
-               // Show unblock/change block link
-               if ( ( $type == 'block' || $type == 'suppress' )
-                       && ( $subtype == 'block' || $subtype == 'reblock' )
-               ) {
-                       if ( !$this->context->getUser()->isAllowed( 'block' ) ) {
-                               return '';
-                       }
-
-                       $links = array(
-                               Linker::linkKnown(
-                                       SpecialPage::getTitleFor( 'Unblock', $title->getDBkey() ),
-                                       $this->msg( 'unblocklink' )->escaped()
-                               ),
-                               Linker::linkKnown(
-                                       SpecialPage::getTitleFor( 'Block', $title->getDBkey() ),
-                                       $this->msg( 'change-blocklink' )->escaped()
-                               )
-                       );
-
-                       return $this->msg( 'parentheses' )->rawParams(
-                               $this->context->getLanguage()->pipeList( $links ) )->escaped();
-               // Show change protection link
-               } elseif ( $type == 'protect'
+               if ( $type == 'protect'
                        && ( $subtype == 'protect' || $subtype == 'modify' || $subtype == 'unprotect' )
                ) {
                        $links = array(
index d576d74..30dee81 100644 (file)
@@ -288,24 +288,8 @@ class LogPage {
                                        $details = '';
                                        array_unshift( $params, $titleLink );
 
-                                       // User suppression
-                                       if ( preg_match( '/^(block|suppress)\/(block|reblock)$/', $key ) ) {
-                                               if ( $skin ) {
-                                                       // Localize the duration, and add a tooltip
-                                                       // in English to help visitors from other wikis.
-                                                       // The lrm is needed to make sure that the number
-                                                       // is shown on the correct side of the tooltip text.
-                                                       $durationTooltip = '&lrm;' . htmlspecialchars( $params[1] );
-                                                       $params[1] = "<span class='blockExpiry' title='$durationTooltip'>" .
-                                                               $wgLang->translateBlockExpiry( $params[1] ) . '</span>';
-                                               } else {
-                                                       $params[1] = $wgContLang->translateBlockExpiry( $params[1] );
-                                               }
-
-                                               $params[2] = isset( $params[2] ) ?
-                                                       self::formatBlockFlags( $params[2], $langObj ) : '';
                                        // Page protections
-                                       } elseif ( $type == 'protect' && count( $params ) == 3 ) {
+                                       if ( $type == 'protect' && count( $params ) == 3 ) {
                                                // Restrictions and expiries
                                                if ( $skin ) {
                                                        $details .= $wgLang->getDirMark() . htmlspecialchars( " {$params[1]}" );
@@ -370,36 +354,22 @@ class LogPage {
                        return $title->getPrefixedText();
                }
 
-               switch ( $type ) {
-                       case 'block':
-                               if ( substr( $title->getText(), 0, 1 ) == '#' ) {
-                                       $titleLink = $title->getText();
-                               } else {
-                                       // @todo Store the user identifier in the parameters
-                                       // to make this faster for future log entries
-                                       $id = User::idFromName( $title->getText() );
-                                       $titleLink = Linker::userLink( $id, $title->getText() )
-                                               . Linker::userToolLinks( $id, $title->getText(), false, Linker::TOOL_LINKS_NOBLOCK );
-                               }
-                               break;
-                       default:
-                               if ( $title->isSpecialPage() ) {
-                                       list( $name, $par ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
-
-                                       # Use the language name for log titles, rather than Log/X
-                                       if ( $name == 'Log' ) {
-                                               $logPage = new LogPage( $par );
-                                               $titleLink = Linker::link( $title, $logPage->getName()->escaped() );
-                                               $titleLink = wfMessage( 'parentheses' )
-                                                       ->inLanguage( $lang )
-                                                       ->rawParams( $titleLink )
-                                                       ->escaped();
-                                       } else {
-                                               $titleLink = Linker::link( $title );
-                                       }
-                               } else {
-                                       $titleLink = Linker::link( $title );
-                               }
+               if ( $title->isSpecialPage() ) {
+                       list( $name, $par ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+
+                       # Use the language name for log titles, rather than Log/X
+                       if ( $name == 'Log' ) {
+                               $logPage = new LogPage( $par );
+                               $titleLink = Linker::link( $title, $logPage->getName()->escaped() );
+                               $titleLink = wfMessage( 'parentheses' )
+                                       ->inLanguage( $lang )
+                                       ->rawParams( $titleLink )
+                                       ->escaped();
+                       } else {
+                               $titleLink = Linker::link( $title );
+                       }
+               } else {
+                       $titleLink = Linker::link( $title );
                }
 
                return $titleLink;
@@ -516,61 +486,6 @@ class LogPage {
                }
        }
 
-       /**
-        * Convert a comma-delimited list of block log flags
-        * into a more readable (and translated) form
-        *
-        * @param string $flags Flags to format
-        * @param Language $lang
-        * @return string
-        */
-       public static function formatBlockFlags( $flags, $lang ) {
-               $flags = trim( $flags );
-               if ( $flags === '' ) {
-                       return ''; //nothing to do
-               }
-               $flags = explode( ',', $flags );
-               $flagsCount = count( $flags );
-
-               for ( $i = 0; $i < $flagsCount; $i++ ) {
-                       $flags[$i] = self::formatBlockFlag( $flags[$i], $lang );
-               }
-
-               return wfMessage( 'parentheses' )->inLanguage( $lang )
-                       ->rawParams( $lang->commaList( $flags ) )->escaped();
-       }
-
-       /**
-        * Translate a block log flag if possible
-        *
-        * @param int $flag Flag to translate
-        * @param Language $lang Language object to use
-        * @return string
-        */
-       public static function formatBlockFlag( $flag, $lang ) {
-               static $messages = array();
-
-               if ( !isset( $messages[$flag] ) ) {
-                       $messages[$flag] = htmlspecialchars( $flag ); // Fallback
-
-                       // For grepping. The following core messages can be used here:
-                       // * block-log-flags-angry-autoblock
-                       // * block-log-flags-anononly
-                       // * block-log-flags-hiddenname
-                       // * block-log-flags-noautoblock
-                       // * block-log-flags-nocreate
-                       // * block-log-flags-noemail
-                       // * block-log-flags-nousertalk
-                       $msg = wfMessage( 'block-log-flags-' . $flag )->inLanguage( $lang );
-
-                       if ( $msg->exists() ) {
-                               $messages[$flag] = $msg->escaped();
-                       }
-               }
-
-               return $messages[$flag];
-       }
-
        /**
         * Name of the log.
         * @return Message
index afc0f0a..eaf1155 100644 (file)
  * @ingroup Cache
  */
 class APCBagOStuff extends BagOStuff {
-       /**
-        * @param string $key
-        * @param int $casToken [optional]
-        * @return mixed
-        */
        public function get( $key, &$casToken = null ) {
                $val = apc_fetch( $key );
 
@@ -48,12 +43,6 @@ class APCBagOStuff extends BagOStuff {
                return $val;
        }
 
-       /**
-        * @param string $key
-        * @param mixed $value
-        * @param int $exptime
-        * @return bool
-        */
        public function set( $key, $value, $exptime = 0 ) {
                if ( !$this->isInteger( $value ) ) {
                        $value = serialize( $value );
@@ -64,40 +53,12 @@ class APCBagOStuff extends BagOStuff {
                return true;
        }
 
-       /**
-        * @param mixed $casToken
-        * @param string $key
-        * @param mixed $value
-        * @param int $exptime
-        * @return bool
-        * @throws MWException
-        */
-       protected function cas( $casToken, $key, $value, $exptime = 0 ) {
-               // APC's CAS functions only work on integers
-               throw new MWException( "CAS is not implemented in " . __CLASS__ );
-       }
-
-       /**
-        * @param string $key
-        * @return bool
-        */
        public function delete( $key ) {
                apc_delete( $key );
 
                return true;
        }
 
-       /**
-        * @param string $key
-        * @param callable $callback Callback method to be executed
-        * @param int $exptime Either an interval in seconds or a unix timestamp for expiry
-        * @param int $attempts The amount of times to attempt a merge in case of failure
-        * @return bool Success
-        */
-       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
-               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
-       }
-
        public function incr( $key, $value = 1 ) {
                return apc_inc( $key, $value );
        }
index 2c10742..5f0b4e2 100644 (file)
@@ -123,7 +123,7 @@ abstract class BagOStuff implements LoggerAwareInterface {
                        throw new Exception( "Got invalid callback." );
                }
 
-               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
+               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
        }
 
        /**
@@ -157,14 +157,17 @@ abstract class BagOStuff implements LoggerAwareInterface {
        }
 
        /**
-        * Check and set an item.
+        * Check and set an item
+        *
         * @param mixed $casToken
         * @param string $key
         * @param mixed $value
         * @param int $exptime Either an interval in seconds or a unix timestamp for expiry
         * @return bool Success
         */
-       abstract protected function cas( $casToken, $key, $value, $exptime = 0 );
+       protected function cas( $casToken, $key, $value, $exptime = 0 ) {
+               throw new MWException( "CAS is not implemented in " . __CLASS__ );
+       }
 
        /**
         * @see BagOStuff::merge()
index 0fc65d9..4ccf270 100644 (file)
  * @ingroup Cache
  */
 class EmptyBagOStuff extends BagOStuff {
-
-       /**
-        * @param string $key
-        * @param mixed $casToken [optional]
-        * @return bool
-        */
        public function get( $key, &$casToken = null ) {
                return false;
        }
 
-       /**
-        * @param string $key
-        * @param mixed $value
-        * @param int $exp
-        * @return bool
-        */
        public function set( $key, $value, $exp = 0 ) {
                return true;
        }
 
-       /**
-        * @param mixed $casToken
-        * @param string $key
-        * @param mixed $value
-        * @param int $exp
-        * @return bool
-        */
-       protected function cas( $casToken, $key, $value, $exp = 0 ) {
-               return true;
-       }
-
-       /**
-        * @param string $key
-        * @return bool
-        */
        public function delete( $key ) {
                return true;
        }
 
-       /**
-        * @param string $key
-        * @param callable $callback Callback method to be executed
-        * @param int $exptime Either an interval in seconds or a unix timestamp for expiry
-        * @param int $attempts The amount of times to attempt a merge in case of failure
-        * @return bool Success
-        */
        public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
-               return true;
+               return true; // faster
        }
 }
index 278a74e..2c8b05a 100644 (file)
@@ -36,10 +36,6 @@ class HashBagOStuff extends BagOStuff {
                $this->bag = array();
        }
 
-       /**
-        * @param string $key
-        * @return bool
-        */
        protected function expire( $key ) {
                $et = $this->bag[$key][1];
 
@@ -52,11 +48,6 @@ class HashBagOStuff extends BagOStuff {
                return true;
        }
 
-       /**
-        * @param string $key
-        * @param mixed $casToken [optional]
-        * @return bool|mixed
-        */
        public function get( $key, &$casToken = null ) {
                if ( !isset( $this->bag[$key] ) ) {
                        return false;
@@ -71,36 +62,11 @@ class HashBagOStuff extends BagOStuff {
                return $this->bag[$key][0];
        }
 
-       /**
-        * @param string $key
-        * @param mixed $value
-        * @param int $exptime
-        * @return bool
-        */
        public function set( $key, $value, $exptime = 0 ) {
                $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
                return true;
        }
 
-       /**
-        * @param mixed $casToken
-        * @param string $key
-        * @param mixed $value
-        * @param int $exptime
-        * @return bool
-        */
-       protected function cas( $casToken, $key, $value, $exptime = 0 ) {
-               if ( $this->get( $key ) === $casToken ) {
-                       return $this->set( $key, $value, $exptime );
-               }
-
-               return false;
-       }
-
-       /**
-        * @param string $key
-        * @return bool
-        */
        function delete( $key ) {
                if ( !isset( $this->bag[$key] ) ) {
                        return false;
@@ -110,4 +76,12 @@ class HashBagOStuff extends BagOStuff {
 
                return true;
        }
+
+       public function lock( $key, $timeout = 6, $expiry = 6 ) {
+               return true;
+       }
+
+       function unlock( $key ) {
+               return true;
+       }
 }
index ac34570..83bee70 100644 (file)
@@ -108,6 +108,14 @@ class MemcachedBagOStuff extends BagOStuff {
                        $this->fixExpiry( $exptime ) );
        }
 
+       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
+               if ( !is_callable( $callback ) ) {
+                       throw new Exception( "Got invalid callback." );
+               }
+
+               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
+       }
+
        /**
         * Get the underlying client object. This is provided for debugging
         * purposes.
index f9a8cfe..896eaf0 100644 (file)
@@ -76,18 +76,6 @@ class MultiWriteBagOStuff extends BagOStuff {
                return false;
        }
 
-       /**
-        * @param mixed $casToken
-        * @param string $key
-        * @param mixed $value
-        * @param mixed $exptime
-        * @return bool
-        * @throws MWException
-        */
-       protected function cas( $casToken, $key, $value, $exptime = 0 ) {
-               throw new MWException( "CAS is not implemented in " . __CLASS__ );
-       }
-
        /**
         * @param string $key
         * @param mixed $value
index b1be9d8..de3511d 100644 (file)
@@ -315,6 +315,15 @@ class RedisBagOStuff extends BagOStuff {
                $this->logRequest( 'incr', $key, $server, $result );
                return $result;
        }
+
+       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
+               if ( !is_callable( $callback ) ) {
+                       throw new Exception( "Got invalid callback." );
+               }
+
+               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
+       }
+
        /**
         * @param mixed $data
         * @return string
diff --git a/includes/objectcache/ReplicatedBagOStuff.php b/includes/objectcache/ReplicatedBagOStuff.php
new file mode 100644 (file)
index 0000000..7aa2cc3
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ * @author Aaron Schulz
+ */
+
+/**
+ * A cache class that directs writes to one set of servers and reads to
+ * another. This assumes that the servers used for reads are setup to slave
+ * those that writes go to. This can easily be used with redis for example.
+ *
+ * In the WAN scenario (e.g. multi-datacenter case), this is useful when
+ * writes are rare or usually takes place on the primary datacenter.
+ *
+ * @ingroup Cache
+ * @since 1.25
+ */
+class ReplicatedBagOStuff extends BagOStuff {
+       /** @var BagOStuff */
+       protected $mCache;
+       /** @var BagOStuff */
+       protected $sCache;
+
+       /**
+        * Constructor. Parameters are:
+        *   - masterCache : Cache parameter structures, in the style required by $wgObjectCaches.
+        *                   See the documentation of $wgObjectCaches for more detail.
+        *   - slaveCache  : Cache parameter structures, in the style required by $wgObjectCaches.
+        *                   See the documentation of $wgObjectCaches for more detail.
+        *
+        * @param array $params
+        * @throws MWException
+        */
+       public function __construct( $params ) {
+               parent::__construct( $params );
+
+               if ( !isset( $params['masterCache'] ) ) {
+                       throw new MWException( __METHOD__ . ': the "masterCache" parameter is required' );
+               } elseif ( !isset( $params['slaveCache'] ) ) {
+                       throw new MWException( __METHOD__ . ': the "slaveCache" parameter is required' );
+               }
+
+               $this->mCache = ( $params['masterCache'] instanceof BagOStuff )
+                       ? $params['masterCache']
+                       : ObjectCache::newFromParams( $params['masterCache'] );
+               $this->sCache = ( $params['slaveCache'] instanceof BagOStuff )
+                       ? $params['slaveCache']
+                       : ObjectCache::newFromParams( $params['slaveCache'] );
+       }
+
+       public function setDebug( $debug ) {
+               $this->mCache->setDebug( $debug );
+               $this->sCache->setDebug( $debug );
+       }
+
+       public function get( $key, &$casToken = null ) {
+               return $this->sCache->get( $key, $casToken );
+       }
+
+       public function getMulti( $keys ) {
+               return $this->sCache->getMulti( $keys );
+       }
+
+       public function set( $key, $value, $exptime = 0 ) {
+               return $this->mCache->set( $key, $value, $exptime );
+       }
+
+       public function delete( $key ) {
+               return $this->mCache->delete( $key );
+       }
+
+       public function add( $key, $value, $exptime = 0 ) {
+               return $this->mCache->add( $key, $value, $exptime );
+       }
+
+       public function incr( $key, $value = 1 ) {
+               return $this->mCache->incr( $key, $value );
+       }
+
+       public function decr( $key ) {
+               return $this->mCache->decr( $key );
+       }
+
+       public function lock( $key, $timeout = 6, $expiry = 6 ) {
+               return $this->mCache->lock( $key, $timeout, $expiry );
+       }
+
+       public function unlock( $key ) {
+               return $this->mCache->unlock( $key );
+       }
+
+       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
+               return $this->mCache->merge( $key, $callback, $exptime, $attempts );
+       }
+
+       public function getLastError() {
+               return ( $this->mCache->getLastError() != self::ERR_NONE )
+                       ? $this->mCache->getLastError()
+                       : $this->sCache->getLastError();
+       }
+
+       public function clearLastError() {
+               $this->mCache->clearLastError();
+               $this->sCache->clearLastError();
+       }
+}
index b9a9985..df878f7 100644 (file)
@@ -514,6 +514,14 @@ class SqlBagOStuff extends BagOStuff {
                return $newValue;
        }
 
+       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
+               if ( !is_callable( $callback ) ) {
+                       throw new Exception( "Got invalid callback." );
+               }
+
+               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
+       }
+
        /**
         * @param DatabaseBase $db
         * @param string $exptime
index f59ed4e..5362574 100644 (file)
@@ -88,4 +88,12 @@ class WinCacheBagOStuff extends BagOStuff {
 
                return true;
        }
+
+       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
+               if ( !is_callable( $callback ) ) {
+                       throw new Exception( "Got invalid callback." );
+               }
+
+               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
+       }
 }
index 9be6624..cfee923 100644 (file)
@@ -68,19 +68,6 @@ class XCacheBagOStuff extends BagOStuff {
                return true;
        }
 
-       /**
-        * @param mixed $casToken
-        * @param string $key
-        * @param mixed $value
-        * @param int $exptime
-        * @return bool
-        * @throws MWException
-        */
-       protected function cas( $casToken, $key, $value, $exptime = 0 ) {
-               // Can't find any documentation on xcache cas
-               throw new MWException( "CAS is not implemented in " . __CLASS__ );
-       }
-
        /**
         * Remove a value from the XCache object cache
         *
@@ -92,21 +79,6 @@ class XCacheBagOStuff extends BagOStuff {
                return true;
        }
 
-       /**
-        * Merge an item.
-        * XCache does not seem to support any way of performing CAS - this however will
-        * provide a way to perform CAS-like functionality.
-        *
-        * @param string $key
-        * @param callable $callback Callback method to be executed
-        * @param int $exptime Either an interval in seconds or a unix timestamp for expiry
-        * @param int $attempts The amount of times to attempt a merge in case of failure
-        * @return bool Success
-        */
-       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
-               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
-       }
-
        public function incr( $key, $value = 1 ) {
                return xcache_inc( $key, $value );
        }
index 59f2ae7..817b4b6 100644 (file)
@@ -707,7 +707,7 @@ class Article implements Page {
                }
 
                # Get the ParserOutput actually *displayed* here.
-               # Note that $this->mParserOutput is the *current* version output.
+               # Note that $this->mParserOutput is the *current*/oldid version output.
                $pOutput = ( $outputDone instanceof ParserOutput )
                        ? $outputDone // object fetched by hook
                        : $this->mParserOutput;
@@ -958,9 +958,10 @@ class Article implements Page {
         */
        public function showRedirectedFromHeader() {
                global $wgRedirectSources;
-               $outputPage = $this->getContext()->getOutput();
 
-               $request = $this->getContext()->getRequest();
+               $context = $this->getContext();
+               $outputPage = $context->getOutput();
+               $request = $context->getRequest();
                $rdfrom = $request->getVal( 'rdfrom' );
 
                // Construct a URL for the current page view, but with the target title
@@ -985,7 +986,7 @@ class Article implements Page {
                                );
 
                                $outputPage->addSubtitle( "<span class=\"mw-redirectedfrom\">" .
-                                       wfMessage( 'redirectedfrom' )->rawParams( $redir )->parse()
+                                       $context->msg( 'redirectedfrom' )->rawParams( $redir )->parse()
                                . "</span>" );
 
                                // Add the script to update the displayed URL and
@@ -1009,7 +1010,7 @@ class Article implements Page {
                        if ( $wgRedirectSources && preg_match( $wgRedirectSources, $rdfrom ) ) {
                                $redir = Linker::makeExternalLink( $rdfrom, $rdfrom );
                                $outputPage->addSubtitle( "<span class=\"mw-redirectedfrom\">" .
-                                       wfMessage( 'redirectedfrom' )->rawParams( $redir )->parse()
+                                       $context->msg( 'redirectedfrom' )->rawParams( $redir )->parse()
                                . "</span>" );
 
                                // Add the script to update the displayed URL
@@ -1495,7 +1496,7 @@ class Article implements Page {
                }
                $html .= '</ul>';
 
-               $redirectToText = wfMessage( 'redirectto' )->inLanguage( $lang )->text();
+               $redirectToText = wfMessage( 'redirectto' )->inLanguage( $lang )->escaped();
 
                return '<div class="redirectMsg">' .
                        '<p>' . $redirectToText . '</p>' .
index d30f589..fe61f6f 100644 (file)
@@ -3378,70 +3378,35 @@ class WikiPage implements Page, IDBAccessObject {
        }
 
        /**
-        * Updates cascading protections
+        * Opportunistically enqueue link update jobs given fresh parser output if useful
         *
-        * @param ParserOutput $parserOutput ParserOutput object for the current version
+        * @param ParserOutput $parserOutput Current version page output
+        * @return bool Whether a job was pushed
+        * @since 1.25
         */
-       public function doCascadeProtectionUpdates( ParserOutput $parserOutput ) {
-               if ( wfReadOnly() || !$this->mTitle->areRestrictionsCascading() ) {
-                       return;
-               }
-
-               // templatelinks or imagelinks tables may have become out of sync,
-               // especially if using variable-based transclusions.
-               // For paranoia, check if things have changed and if
-               // so apply updates to the database. This will ensure
-               // that cascaded protections apply as soon as the changes
-               // are visible.
-
-               // Get templates from templatelinks and images from imagelinks
-               $id = $this->getId();
-
-               $dbLinks = array();
-
-               $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select( array( 'templatelinks' ),
-                       array( 'tl_namespace', 'tl_title' ),
-                       array( 'tl_from' => $id ),
-                       __METHOD__
-               );
-
-               foreach ( $res as $row ) {
-                       $dbLinks["{$row->tl_namespace}:{$row->tl_title}"] = true;
+       public function triggerOpportunisticLinksUpdate( ParserOutput $parserOutput ) {
+               if ( wfReadOnly() ) {
+                       return false;
                }
 
-               $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select( array( 'imagelinks' ),
-                       array( 'il_to' ),
-                       array( 'il_from' => $id ),
-                       __METHOD__
-               );
-
-               foreach ( $res as $row ) {
-                       $dbLinks[NS_FILE . ":{$row->il_to}"] = true;
+               if ( $this->mTitle->areRestrictionsCascading() ) {
+                       // If the page is cascade protecting, the links should really be up-to-date
+                       $params = array( 'prioritize' => true );
+               } elseif ( $parserOutput->hasDynamicContent() ) {
+                       // Assume the output contains time/random based magic words
+                       $params = array();
+               } else {
+                       // If the inclusions are deterministic, the edit-triggered link jobs are enough
+                       return false;
                }
 
-               // Get templates and images from parser output.
-               $poLinks = array();
-               foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
-                       foreach ( $templates as $dbk => $id ) {
-                               $poLinks["$ns:$dbk"] = true;
-                       }
-               }
-               foreach ( $parserOutput->getImages() as $dbk => $id ) {
-                       $poLinks[NS_FILE . ":$dbk"] = true;
+               // Check if the last link refresh was before page_touched
+               if ( $this->getLinksTimestamp() < $this->getTouched() ) {
+                       JobQueueGroup::singleton()->push( new RefreshLinksJob( $this->mTitle, $params ) );
+                       return true;
                }
 
-               // Get the diff
-               $links_diff = array_diff_key( $poLinks, $dbLinks );
-
-               if ( count( $links_diff ) > 0 ) {
-                       // Whee, link updates time.
-                       // Note: we are only interested in links here. We don't need to get
-                       // other DataUpdate items from the parser output.
-                       $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
-                       $u->doUpdate();
-               }
+               return false;
        }
 
        /**
index 191ee01..6b9cb05 100644 (file)
@@ -879,6 +879,22 @@ class ParserOutput extends CacheTime {
                $this->mLimitReportData[$key] = $value;
        }
 
+       /**
+        * Check whether the cache TTL was lowered due to dynamic content
+        *
+        * When content is determined by more than hard state (e.g. page edits),
+        * such as template/file transclusions based on the current timestamp or
+        * extension tags that generate lists based on queries, this return true.
+        *
+        * @return bool
+        * @since 1.25
+        */
+       public function hasDynamicContent() {
+               global $wgParserCacheExpireTime;
+
+               return $this->getCacheExpiry() < $wgParserCacheExpireTime;
+       }
+
        /**
         * Get or set the prevent-clickjacking flag
         *
index da20f94..54cbb27 100644 (file)
@@ -159,7 +159,7 @@ class PoolWorkArticleView extends PoolCounterWork {
                }
 
                if ( $isCurrent ) {
-                       $this->page->doCascadeProtectionUpdates( $this->parserOutput );
+                       $this->page->triggerOpportunisticLinksUpdate( $this->parserOutput );
                }
 
                return true;
index b4ac628..840fd77 100644 (file)
@@ -250,13 +250,19 @@ abstract class RevDelList extends RevisionListBase {
                // Add params for affected page and ids
                $logParams = $this->getLogParams( $params );
                // Actually add the deletion log entry
-               $log = new LogPage( $logType );
-               $logid = $log->addEntry( $this->getLogAction(), $params['title'],
-                       $params['comment'], $logParams, $this->getUser() );
+               $logEntry = new ManualLogEntry( $logType, $this->getLogAction() );
+               $logEntry->setTarget( $params['title'] );
+               $logEntry->setComment( $params['comment'] );
+               $logEntry->setParameters( $logParams );
+               $logEntry->setPerformer( $this->getUser() );
                // Allow for easy searching of deletion log items for revision/log items
-               $log->addRelations( $field, $params['ids'], $logid );
-               $log->addRelations( 'target_author_id', $params['authorIds'], $logid );
-               $log->addRelations( 'target_author_ip', $params['authorIPs'], $logid );
+               $logEntry->setRelations( array(
+                       $field => $params['ids'],
+                       'target_author_id' => $params['authorIds'],
+                       'target_author_ip' => $params['authorIPs'],
+               ) );
+               $logId = $logEntry->insert();
+               $logEntry->publish( $logId );
        }
 
        /**
@@ -274,10 +280,10 @@ abstract class RevDelList extends RevisionListBase {
         */
        public function getLogParams( $params ) {
                return array(
-                       $this->getType(),
-                       implode( ',', $params['ids'] ),
-                       "ofield={$params['oldBits']}",
-                       "nfield={$params['newBits']}"
+                       '4::type' => $this->getType(),
+                       '5::ids' => $params['ids'],
+                       '6::ofield' => $params['oldBits'],
+                       '7::nfield' => $params['newBits'],
                );
        }
 
index 86c5af3..d8bd2f7 100644 (file)
@@ -95,9 +95,9 @@ class RevDelLogList extends RevDelList {
 
        public function getLogParams( $params ) {
                return array(
-                       implode( ',', $params['ids'] ),
-                       "ofield={$params['oldBits']}",
-                       "nfield={$params['newBits']}"
+                       '4::ids' => $params['ids'],
+                       '5::ofield' => $params['oldBits'],
+                       '6::nfield' => $params['newBits'],
                );
        }
 }
index 26ee164..530338a 100644 (file)
@@ -1587,7 +1587,7 @@ abstract class Skin extends ContextSource {
 
                $links = array(
                        'editsection' => array(
-                               'text' => wfMessage( 'editsection' )->inLanguage( $lang )->text(),
+                               'text' => wfMessage( 'editsection' )->inLanguage( $lang )->escaped(),
                                'targetTitle' => $nt,
                                'attribs' => $attribs,
                                'query' => array( 'action' => 'edit', 'section' => $section ),
index 3476c26..b1ed63c 100644 (file)
@@ -65,6 +65,12 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        $batch->add( NS_USER, $row->rc_user_text );
                        $batch->add( NS_USER_TALK, $row->rc_user_text );
                        $batch->add( $row->rc_namespace, $row->rc_title );
+                       if ( $row->rc_source === RecentChange::SRC_LOG ) {
+                               $formatter = LogFormatter::newFromRow( $row );
+                               foreach ( $formatter->getPreloadTitles() as $title ) {
+                                       $batch->addObj( $title );
+                               }
+                       }
                }
                $batch->execute();
 
index 1d4a860..c672817 100644 (file)
@@ -236,6 +236,14 @@ class SpecialBlock extends FormSpecialPage {
                # This will be overwritten by request data
                $fields['Target']['default'] = (string)$this->target;
 
+               if ( $this->target ) {
+                       $status = self::validateTarget( $this->target, $this->getUser() );
+                       if ( !$status->isOK() ) {
+                               $errors = $status->getErrorsArray();
+                               $this->preErrors = array_merge( $this->preErrors, $errors );
+                       }
+               }
+
                # This won't be
                $fields['PreviousTarget']['default'] = (string)$this->target;
 
@@ -784,22 +792,21 @@ class SpecialBlock extends FormSpecialPage {
 
                # Prepare log parameters
                $logParams = array();
-               $logParams[] = $data['Expiry'];
-               $logParams[] = self::blockLogFlags( $data, $type );
+               $logParams['5::duration'] = $data['Expiry'];
+               $logParams['6::flags'] = self::blockLogFlags( $data, $type );
 
                # Make log entry, if the name is hidden, put it in the oversight log
                $log_type = $data['HideUser'] ? 'suppress' : 'block';
-               $log = new LogPage( $log_type );
-               $log_id = $log->addEntry(
-                       $logaction,
-                       Title::makeTitle( NS_USER, $target ),
-                       $data['Reason'][0],
-                       $logParams,
-                       $performer
-               );
+               $logEntry = new ManualLogEntry( $log_type, $logaction );
+               $logEntry->setTarget( Title::makeTitle( NS_USER, $target ) );
+               $logEntry->setComment( $data['Reason'][0] );
+               $logEntry->setPerformer( $performer );
+               $logEntry->setParameters( $logParams );
                # Relate log ID to block IDs (bug 25763)
                $blockIds = array_merge( array( $status['id'] ), $status['autoIds'] );
-               $log->addRelations( 'ipb_id', $blockIds, $log_id );
+               $logEntry->setRelations( array( 'ipb_id' => $blockIds ) );
+               $logId = $logEntry->insert();
+               $logEntry->publish( $logId );
 
                # Report to the user
                return true;
index 38c52a0..c30d962 100644 (file)
@@ -182,13 +182,20 @@ class SpecialExport extends SpecialPage {
                $out = $this->getOutput();
                $out->addWikiMsg( 'exporttext' );
 
+               if ( $page == '' ) {
+                       $categoryName = $request->getText( 'catname' );
+               } else {
+                       $categoryName = '';
+               }
+
                $form = Xml::openElement( 'form', array( 'method' => 'post',
                        'action' => $this->getPageTitle()->getLocalURL( 'action=submit' ) ) );
                $form .= Xml::inputLabel(
                        $this->msg( 'export-addcattext' )->text(),
                        'catname',
                        'catname',
-                       40
+                       40,
+                       $categoryName
                ) . '&#160;';
                $form .= Xml::submitButton(
                        $this->msg( 'export-addcat' )->text(),
index cac324a..86aad12 100644 (file)
@@ -537,7 +537,7 @@ class MovePageForm extends UnlistedSpecialPage {
                        if ( $nt->getNamespace() == NS_FILE ) {
                                $file = wfLocalFile( $nt );
                                if ( $file->exists() ) {
-                                       $file->delete( $reason, false );
+                                       $file->delete( $reason, false, $user );
                                }
                        }
 
index 192dc96..f81f1c3 100644 (file)
@@ -227,8 +227,12 @@ class SpecialUnblock extends SpecialPage {
                }
 
                # Make log entry
-               $log = new LogPage( 'block' );
-               $log->addEntry( 'unblock', $page, $data['Reason'], array(), $performer );
+               $logEntry = new ManualLogEntry( 'block', 'unblock' );
+               $logEntry->setTarget( $page );
+               $logEntry->setComment( $data['Reason'] );
+               $logEntry->setPerformer( $performer );
+               $logId = $logEntry->insert();
+               $logEntry->publish( $logId );
 
                return true;
        }
index cad2348..dd4eb0a 100644 (file)
@@ -72,7 +72,10 @@ class WantedPagesPage extends WantedQueryPage {
                                "pg2.page_namespace != '" . NS_MEDIAWIKI . "'"
                        ),
                        'options' => array(
-                               'HAVING' => "COUNT(*) > $count",
+                               'HAVING' => array(
+                                       "COUNT(*) > $count",
+                                       "COUNT(*) > SUM(pg2.page_is_redirect)"
+                               ),
                                'GROUP BY' => array( 'pl_namespace', 'pl_title' )
                        ),
                        'join_conds' => array(
index 1649e3b..5457949 100644 (file)
                {{^localSettingsExists}}
                        <p>LocalSettings.php not found.</p>
                        {{#installerStarted}}
-                               <p>Please <a href="{{path}}mw-config/index{{ext}}">complete the installation</a> and download LocalSettings.php.</p>
+                               <p>Please <a href="{{path}}mw-config/index.{{ext}}">complete the installation</a> and download LocalSettings.php.</p>
                        {{/installerStarted}}
                        {{^installerStarted}}
-                               <p>Please <a href="{{path}}mw-config/index{{ext}}">set up the wiki</a> first!</p>
+                               <p>Please <a href="{{path}}mw-config/index.{{ext}}">set up the wiki</a> first.</p>
                        {{/installerStarted}}
                {{/localSettingsExists}}
                </div>
index 0c8cbce..ca5a180 100644 (file)
        "userlogin-loggedin": "Вы ўжо ўвайшлі як {{GENDER:$1|$1}}.\nДля ўваходу пад іншым удзельнікам скарыстайцеся формай унізе.",
        "userlogin-createanother": "Стварыць іншы рахунак",
        "createacct-emailrequired": "Адрас электроннай пошты",
-       "createacct-emailoptional": "E-mail адрас (неабавязкова)",
-       "createacct-email-ph": "Увядзіце ваш e-mail адрас",
-       "createacct-another-email-ph": "Увядзіце адрас e-mail",
+       "createacct-emailoptional": "Адрас электроннай пошты (неабавязкова)",
+       "createacct-email-ph": "Увядзіце ваш адрас электроннай пошты",
+       "createacct-another-email-ph": "Увядзіце адрас электроннай пошты",
        "createaccountmail": "Стварыць часовы адвольны пароль і даслаць яго на e-mail адрас, пазначаны ніжэй",
        "createacct-realname": "Сапраўднае імя (неабавязкова)",
        "createaccountreason": "Прычына:",
index fd88aa5..c5d6c7a 100644 (file)
        "december": "desembre",
        "january-gen": "gener",
        "february-gen": "febrer",
-       "march-gen": "de març",
+       "march-gen": "març",
        "april-gen": "d'abril",
        "may-gen": "de maig",
        "june-gen": "de juny",
        "september-gen": "de setembre",
        "october-gen": "d'octubre",
        "november-gen": "de novembre",
-       "december-gen": "de desembre",
+       "december-gen": "desembre",
        "jan": "gen",
        "feb": "feb",
        "mar": "març",
        "currentevents-url": "Project:Actualitat",
        "disclaimers": "Avís general",
        "disclaimerpage": "Project:Avís general",
-       "edithelp": "Ajuda",
+       "edithelp": "Ajuda per a l'edició",
        "mainpage": "Pàgina principal",
        "mainpage-description": "Pàgina principal",
        "policy-url": "Project:Polítiques",
        "enhancedrc-history": "historial",
        "recentchanges": "Canvis recents",
        "recentchanges-legend": "Opcions de canvis recents",
-       "recentchanges-summary": "Seguiu els canvis recents del projecte {{SITENAME}} en aquesta pàgina.",
+       "recentchanges-summary": "Seguiu els canvis més recents del wiki en aquesta pàgina.",
        "recentchanges-noresult": "Cap canvi corresponent a aquests criteris en el període indicat.",
        "recentchanges-feed-description": "Segueix en aquest canal els canvis més recents del wiki.",
        "recentchanges-label-newpage": "Aquesta modificació creà una pàgina",
        "rc-enhanced-expand": "Mostra detalls",
        "rc-enhanced-hide": "Amagar detalls",
        "rc-old-title": "originàriament creada com «$1»",
-       "recentchangeslinked": "Seguiment d'enllaços",
+       "recentchangeslinked": "Canvis relacionats",
        "recentchangeslinked-feed": "Canvis relacionats",
        "recentchangeslinked-toolbox": "Canvis relacionats",
        "recentchangeslinked-title": "Canvis relacionats amb «$1»",
        "imagelinks": "Ús del fitxer",
        "linkstoimage": "{{PLURAL:$1|La pàgina següent enllaça|Les $1 pàgines següents enllacen}} a aquest fitxer:",
        "linkstoimage-more": "Hi ha més de $1 {{PLURAL:$1|pàgina que enllaça|pàgines que enllaçen}} a aquest fitxer.\nLa següent llista només mostra {{PLURAL:$1|la primera d'elles|les primeres $1 d'aquestes pàgines}}.\nPodeu consultar la [[Special:WhatLinksHere/$2|llista completa]].",
-       "nolinkstoimage": "No hi ha pàgines que enllacin aquesta imatge.",
+       "nolinkstoimage": "No hi ha pàgines que enllacin a aquesta imatge.",
        "morelinkstoimage": "Visualitza [[Special:WhatLinksHere/$1|més enllaços]] que porten al fitxer.",
        "linkstoimage-redirect": "$1 (fitxer redirigit) $2",
        "duplicatesoffile": "{{PLURAL:$1|Aquest fitxer és un duplicat del que apareix a continuació|A continuació s'indiquen els $1 duplicats d'aquest fitxer}} ([[Special:FileDuplicateSearch/$2|vegeu-ne més detalls]]):",
        "shared-repo-from": "des de $1",
        "shared-repo": "un repositori compartit",
        "shared-repo-name-wikimediacommons": "Wikimedia Commons",
-       "upload-disallowed-here": "No pot sobreescriure aquest fitxer.",
+       "upload-disallowed-here": "No podeu sobreescriure aquest fitxer.",
        "filerevert": "Reverteix $1",
        "filerevert-legend": "Reverteix el fitxer",
        "filerevert-intro": "Esteu revertint '''[[Media:$1|$1]]''' a la [$4 versió de  $3, $2].",
        "nolinkshere": "Cap pàgina no enllaça amb '''[[:$1]]'''.",
        "nolinkshere-ns": "No s'enllaça cap pàgina a '''[[:$1]]''' en l'espai de noms triat.",
        "isredirect": "pàgina redirigida",
-       "istemplate": "inclosa",
+       "istemplate": "inclusió",
        "isimage": "enllaç a fitxer",
        "whatlinkshere-prev": "{{PLURAL:$1|anterior|anteriors $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|següent|següents $1}}",
        "tooltip-ca-talk": "Discussió sobre el contingut d'aquesta pàgina",
        "tooltip-ca-edit": "Podeu modificar aquesta pàgina. Si us plau, previsualitzeu-la abans de desar-la",
        "tooltip-ca-addsection": "Comença una nova secció",
-       "tooltip-ca-viewsource": "Aquesta pàgina està protegida. Podeu veure el seu codi font.",
+       "tooltip-ca-viewsource": "Aquesta pàgina està protegida.\nPodeu veure'n el codi font.",
        "tooltip-ca-history": "Versions antigues d'aquesta pàgina",
        "tooltip-ca-protect": "Protegeix aquesta pàgina.",
        "tooltip-ca-unprotect": "Desprotegeix aquesta pàgina",
        "tooltip-n-randompage": "Pàgina a l'atzar",
        "tooltip-n-help": "El lloc per saber més coses",
        "tooltip-t-whatlinkshere": "Llista de totes les pàgines wiki que enllacen aquí",
-       "tooltip-t-recentchangeslinked": "Canvis recents a pàgines que enllacen amb aquesta pàgina.",
+       "tooltip-t-recentchangeslinked": "Canvis recents a pàgines enllaçades des d'aquesta pàgina",
        "tooltip-feed-rss": "Canal RSS d'aquesta pàgina",
        "tooltip-feed-atom": "Canal Atom d'aquesta pàgina",
-       "tooltip-t-contributions": "Vegeu la llista de contribucions d'aquest usuari.",
+       "tooltip-t-contributions": "Llista de contribucions d'aquest usuari",
        "tooltip-t-emailuser": "Envia un correu en aquest usuari.",
        "tooltip-t-info": "Més informació sobre aquesta pàgina",
        "tooltip-t-upload": "Carregueu fitxers",
        "tooltip-ca-nstab-help": "Vegeu la pàgina d'ajuda",
        "tooltip-ca-nstab-category": "Vegeu la pàgina de la categoria",
        "tooltip-minoredit": "Marca-ho com una modificació menor",
-       "tooltip-save": "Desa els vostres canvis",
+       "tooltip-save": "Deseu els canvis",
        "tooltip-preview": "Reviseu els vostres canvis, feu-ho abans de desar res!",
        "tooltip-diff": "Mostra quins canvis heu fet al text",
        "tooltip-compareselectedversions": "Vegeu les diferències entre les dues versions seleccionades d'aquesta pàgina.",
        "spam_reverting": "Es reverteix a la darrera versió que no conté enllaços a $1",
        "spam_blanking": "Totes les revisions contenien enllaços $1, s'està deixant en blanc",
        "spam_deleting": "S'estan suprimint totes les revisions que contenien enllaços a $1",
-       "simpleantispam-label": "Comprovació antispam.\n'''NO''' ho ompliu!",
+       "simpleantispam-label": "Comprovació antispam.\n<strong>NO</strong> ho ompliu!",
        "pageinfo-title": "Informació de «$1»",
        "pageinfo-not-current": "Només es pot visualitzar la informació de la revisió actual.",
        "pageinfo-header-basic": "Informació bàsica",
        "tags-create-invalid-chars": "Els noms d'etiqueta no han de contenir comes (<code>,</code>) o barres (<code>/</code>).",
        "tags-create-invalid-title-chars": "Els noms d'etiqueta no poden contenir caracters que no es poden usar en els títols de pàgina",
        "tags-create-already-exists": "L'etiqueta \"$1\" ja existeix.",
+       "tags-create-warnings-below": "Voleu continuar creant l'etiqueta?",
+       "tags-delete-title": "Elimina l'etiqueta",
+       "tags-delete-explanation-initial": "Esteu a punt d'eliminar l'etiqueta «$1» de la base de dades.",
        "tags-delete-reason": "Motiu:",
+       "tags-delete-not-found": "L'etiqueta «$1» no existeix.",
+       "tags-delete-too-many-uses": "L'etiqueta «$1» s'aplica a més {{PLURAL:$2|d'$2 revisió|de $2 revisions}} i, per tant, no pot eliminar-se.",
+       "tags-activate-title": "Activa l'etiqueta",
+       "tags-activate-question": "Esteu a punt d'activar l'etiqueta «$1».",
        "tags-activate-reason": "Motiu:",
+       "tags-activate-not-allowed": "No és possible activar l'etiqueta «$1».",
+       "tags-activate-not-found": "L'etiqueta «$1» no existeix.",
        "tags-activate-submit": "Activa",
+       "tags-deactivate-title": "Desactiva l'etiqueta",
        "tags-deactivate-reason": "Motiu:",
        "tags-deactivate-submit": "Desactiva",
        "comparepages": "Comparar pàgines",
        "htmlform-cloner-required": "Cal com a mínim un valor.",
        "sqlite-has-fts": "$1, amb suport de búsqueda de text íntegre",
        "sqlite-no-fts": "$1, sense supor de búsqueda de text íntegre",
-       "logentry-delete-delete": "$1 ha esborrat $3",
+       "logentry-delete-delete": "$1 {{GENDER:$2|ha esborrat}} la pàgina $3",
        "logentry-delete-restore": "$1 ha restaurat $3",
        "logentry-delete-event": "$1 {{GENDER:$2|ha canviat}} la visibilitat {{PLURAL:$5|d'un esdeveniment al registre|de $5 esdeveniments al registre}} de $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|ha canviat}} la visibilitat {{PLURAL:$5|d'una revisió|de $5 revisions}} a la pàgina $3: $4",
        "logentry-upload-upload": "$1 {{GENDER:$2|ha carregat}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|ha carregat}} una nova versió de $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|ha carregat}} $3",
+       "log-name-managetags": "Registre de gestió d'etiquetes",
        "rightsnone": "(cap)",
        "revdelete-summary": "el resum d'edició",
        "feedback-bugornote": "Si podeu descriure un problema tècnic en detall, [$1 informeu-ne].\nAltrament, podeu fer servir un senzill formulari a continuació. El vostre comentari s'afegirà a la pàgina «[$3 $2]», juntament amb el vostre nom d'usuari i el navegador que esteu emprant.",
index 98abb5d..0fb4db7 100644 (file)
        "revdelete-uname-unhid": "декъашхочун цӀе гуча яьккхина",
        "revdelete-restricted": "куьйгалхойн доза туху",
        "revdelete-unrestricted": "куьйгалхойн доза тохар дӀаяьккхина",
+       "logentry-block-block": "$1 {{GENDER:$2|блоктоьхна}} {{GENDER:$4|$3}} $5 $6 хан чекхйолу",
+       "logentry-block-unblock": "$1 {{GENDER:$2|блокдаяьккхина}} {{GENDER:$4|$3}}",
+       "logentry-suppress-block": "$1 {{GENDER:$2|блоктоьхна}} {{GENDER:$4|$3}} $5 $6 хан чекхйолу",
        "logentry-merge-merge": "$1 {{GENDER:$2|вовшахтоьхна}} $3 $4 чохь ($5 кхаччалц версеш)",
        "logentry-move-move": "$1 {{GENDER:$2|цӀе хийцина}} $3 → $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|цӀе хийцина}} $3 → $4 дӀасахьажийнарг цаюьтуш",
index 7c50e91..b77a9ed 100644 (file)
        "showpreview": "Vorschau zeigen",
        "showdiff": "Änderungen zeigen",
        "blankarticle": "<strong>Warnung:</strong> Die Seite, die du erstellst, ist leer.\nWenn du erneut auf „{{int:savearticle}}“ klickst, wird die Seite ohne Inhalt erstellt.",
-       "anoneditwarning": "<strong>Warnung:</strong> Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Wenn du dich <strong>[$1 anmeldest]</strong> oder <strong>[$2 ein Benutzerkonto erstellst]</strong>, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.",
+       "anoneditwarning": "<strong>Warnung:</strong> Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Sofern du dich <strong>[$1 anmeldest]</strong> oder <strong>[$2 ein Benutzerkonto erstellst]</strong>, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.",
        "anonpreviewwarning": "''Du bist nicht angemeldet. Beim Speichern wird deine IP-Adresse in der Versionsgeschichte aufgezeichnet.''",
        "missingsummary": "'''Hinweis:''' Du hast keine Zusammenfassung angegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
        "selfredirect": "<strong>Warnung:</strong> Du leitest auf diese Seite selbst weiter.\nDu hast vermutlich das falsche Weiterleitungsziel angegeben oder du bearbeitest die falsche Seite.\nWenn du erneut auf „{{int:savearticle}}“ klickst, wird die Weiterleitung dennoch erstellt.",
        "newarticletext": "Du bist einem Link zu einer Seite gefolgt, die nicht vorhanden ist.\nUm diese Seite anzulegen, trage deinen Text in das untenstehende Bearbeitungsfeld ein (weitere Informationen auf der [$1 Hilfeseite]).\nSofern du fälschlicherweise hier bist, klicke auf die Schaltfläche '''Zurück''' deines Browsers.",
        "anontalkpagetext": "----''Diese Seite dient dazu, einem nicht angemeldeten Benutzer Nachrichten zu hinterlassen. Es wird seine IP-Adresse zur Identifizierung verwendet. IP-Adressen können von mehreren Benutzern gemeinsam verwendet werden. Wenn du mit den Kommentaren auf dieser Seite nichts anfangen kannst, richten sie sich vermutlich an einen früheren Inhaber deiner IP-Adresse und du kannst sie ignorieren. Du kannst dir auch ein [[Special:UserLogin/signup|Benutzerkonto erstellen]] oder dich [[Special:UserLogin|anmelden]], um künftig Verwechslungen mit anderen anonymen Benutzern zu vermeiden.''",
        "noarticletext": "Diese Seite enthält momentan noch keinen Text.\nDu kannst sie <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}} bearbeiten]</span>,\nihren Titel auf anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]]\noder die zugehörigen <span class=\"plainlinks\">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachten]</span>.",
-       "noarticletext-nopermission": "Diese Seite enthält momentan noch keinen Text, du bist auch nicht berechtigt diese Seite zu erstellen.\nDu kannst ihren Titel auf anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]] oder die zugehörigen <span class=\"plainlinks\">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachten].</span>",
+       "noarticletext-nopermission": "Diese Seite enthält momentan noch keinen Text und du bist auch nicht berechtigt diese Seite zu erstellen.\nDu kannst ihren Titel auf anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]] oder die zugehörigen <span class=\"plainlinks\">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachten].</span>",
        "missing-revision": "Die Version $1 der Seite namens „{{FULLPAGENAME}}“ ist nicht vorhanden.\n\nDieser Fehler wird normalerweise von einem veralteten Link zur Versionsgeschichte einer Seite verursacht, die zwischenzeitlich gelöscht wurde.\nEinzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch] einsehbar.",
        "userpage-userdoesnotexist": "Das Benutzerkonto „<nowiki>$1</nowiki>“ ist nicht vorhanden. Bitte prüfe, ob du diese Seite wirklich erstellen/bearbeiten willst.",
        "userpage-userdoesnotexist-view": "Das Benutzerkonto „$1“ ist nicht vorhanden.",
        "templatesusedsection": "{{PLURAL:$1|Die folgende Vorlage wird|Folgende Vorlagen werden}} in diesem Abschnitt verwendet:",
        "template-protected": "(schreibgeschützt)",
        "template-semiprotected": "(schreibgeschützt für unangemeldete und neue Benutzer)",
-       "hiddencategories": "Diese Seite ist Mitglied von {{PLURAL:$1|1 versteckter Kategorie|$1 versteckten Kategorien}}:",
+       "hiddencategories": "Diese Seite ist in {{PLURAL:$1|1 versteckter Kategorie|$1 versteckten Kategorien}} enthalten:",
        "edittools": "<!-- Dieser Text wird unter dem „Bearbeiten“-Formular sowie dem „Hochladen“-Formular angezeigt. -->",
        "nocreatetext": "Auf {{SITENAME}} wurde das Erstellen neuer Seiten eingeschränkt. Du kannst bestehende Seiten ändern oder dich [[Special:UserLogin|anmelden]].",
        "nocreate-loggedin": "Du hast nicht die erforderliche Berechtigung, um neue Seiten erstellen zu können.",
        "right-bot": "Behandlung als automatischer Prozess",
        "right-nominornewtalk": "Kleine Bearbeitungen an Diskussionsseiten führen zu keiner „Neue Nachrichten“-Anzeige",
        "right-apihighlimits": "Höhere Limits in API-Abfragen",
-       "right-writeapi": "Benutzung der writeAPI",
+       "right-writeapi": "Benutzung der API mit Schreibzugriff",
        "right-delete": "Seiten löschen",
        "right-bigdelete": "Seiten mit großer Versionsgeschichte löschen",
        "right-deletelogentry": "Einzelne Logbuch-Einträge löschen und wiederherstellen",
        "recentchangeslinked-feed": "Änderungen an verlinkten Seiten",
        "recentchangeslinked-toolbox": "Änderungen an verlinkten Seiten",
        "recentchangeslinked-title": "Änderungen an Seiten, die von „$1“ verlinkt sind",
-       "recentchangeslinked-summary": "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. bei Kategorien an den Mitgliedern dieser Kategorie). Seiten auf deiner [[Special:Watchlist|Beobachtungsliste]] sind '''fett''' dargestellt.",
+       "recentchangeslinked-summary": "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. an in dieser Kategorie enthaltenen Kategorien). Seiten auf deiner [[Special:Watchlist|Beobachtungsliste]] sind <strong>fett</strong> dargestellt.",
        "recentchangeslinked-page": "Seite:",
-       "recentchangeslinked-to": "Zeige nur Änderungen auf Seiten, die auf diese Seite verlinken",
+       "recentchangeslinked-to": "Zeige nur Änderungen an Seiten, die auf diese Seite verlinken",
        "upload": "Datei hochladen",
        "uploadbtn": "Datei hochladen",
        "reuploaddesc": "Abbrechen und zurück zur Hochladen-Seite",
        "imagelinks": "Dateiverwendung",
        "linkstoimage": "Die {{PLURAL:$1|folgende Seite verwendet|folgenden $1 Seiten verwenden}} diese Datei:",
        "linkstoimage-more": "Mehr als {{PLURAL:$1|eine Seite verlinkt|$1 Seiten verlinken}} auf diese Datei.\nDie folgende Liste zeigt nur {{PLURAL:$1|den ersten Link|die ersten $1 Links}} auf diese Datei.\nEine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.",
-       "nolinkstoimage": "Keine Seite benutzt diese Datei.",
+       "nolinkstoimage": "Diese Datei wird auf keiner Seite verwendet.",
        "morelinkstoimage": "[[Special:WhatLinksHere/$1|Weitere Links]] auf diese Datei.",
        "linkstoimage-redirect": "$1 (Dateiweiterleitung) $2",
        "duplicatesoffile": "Die {{PLURAL:$1|folgende Datei ist ein Duplikat|folgenden $1 Dateien sind Duplikate}} dieser Datei ([[Special:FileDuplicateSearch/$2|weitere Details]]):",
        "whatlinkshere": "Links auf diese Seite",
        "whatlinkshere-title": "Seiten, die auf „$1“ verlinken",
        "whatlinkshere-page": "Seite:",
-       "linkshere": "Die folgenden Seiten verlinken auf '''„[[:$1]]“''':",
+       "linkshere": "Die folgenden Seiten verlinken auf <strong>[[:$1]]</strong>:",
        "nolinkshere": "Keine Seite verlinkt auf '''„[[:$1]]“'''.",
        "nolinkshere-ns": "Keine Seite verlinkt auf '''„[[:$1]]“''' im gewählten Namensraum.",
        "isredirect": "Weiterleitungsseite",
        "blockipsuccesstext": "Der Benutzer / die IP-Adresse [[Special:Contributions/$1|$1]] wurde gesperrt.<br />\nZur Aufhebung der Sperre siehe die [[Special:BlockList|Liste aller aktiven Sperren]].",
        "ipb-blockingself": "Du bist gerade dabei, dich selbst zu sperren! Möchtest du das wirklich tun?",
        "ipb-confirmhideuser": "Du bist gerade dabei, einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?",
-       "ipb-confirmaction": "Wenn du dir sicher bist, dass du dies wirklich tun möchtest, überprüfe bitte unten das Feld „{{int:ipb-confirm}}“.",
+       "ipb-confirmaction": "Wenn du dir sicher bist, dass du dies wirklich tun möchtest, kreuze bitte unten das Feld „{{int:ipb-confirm}}“ an.",
        "ipb-edit-dropdown": "Sperrgründe bearbeiten",
        "ipb-unblock-addr": "„$1“ freigeben",
        "ipb-unblock": "IP-Adresse/Benutzer freigeben",
        "thumbnail_image-missing": "Datei scheint fehlend zu sein: $1",
        "thumbnail_image-failure-limit": "Es wurden in letzter Zeit zu viele Versuche ($1 oder mehr) unternommen, dieses Vorschaubild zu rendern. Bitte versuche es später erneut.",
        "import": "Seiten importieren",
-       "importinterwiki": "Transwiki-Import",
+       "importinterwiki": "Von einem anderen Wiki importieren",
        "import-interwiki-text": "Wähle ein Wiki und eine Seite zum Importieren aus.\nDie Versionsdaten und Benutzernamen bleiben dabei erhalten.\nAlle Transwiki-Import-Aktionen werden im [[Special:Log/import|Import-Logbuch]] protokolliert.",
        "import-interwiki-sourcewiki": "Quellwiki:",
        "import-interwiki-sourcepage": "Quellseite:",
        "tooltip-pt-preferences": "Eigene Einstellungen",
        "tooltip-pt-watchlist": "Liste der beobachteten Seiten",
        "tooltip-pt-mycontris": "Liste eigener Beiträge",
-       "tooltip-pt-login": "Sich anzumelden wird zwar gerne gesehen, ist aber keine Pflicht.",
+       "tooltip-pt-login": "Sich anzumelden wird gerne gesehen, ist jedoch nicht zwingend erforderlich.",
        "tooltip-pt-logout": "Abmelden",
-       "tooltip-pt-createaccount": "Du wirst ermuntert, ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht verpflichtend.",
+       "tooltip-pt-createaccount": "Wir ermutigen dich ein Benutzerkonto zu erstellen und dich anzumelden. Es ist jedoch nicht zwingend erforderlich.",
        "tooltip-ca-talk": "Diskussion zum Seiteninhalt",
-       "tooltip-ca-edit": "Seite bearbeiten. Bitte vor dem Speichern die Vorschaufunktion benutzen.",
+       "tooltip-ca-edit": "Du kannst diese Seite bearbeiten. Bitte nutze auch die Vorschaufunktion vor dem Speichern.",
        "tooltip-ca-addsection": "Neuen Abschnitt beginnen",
        "tooltip-ca-viewsource": "Diese Seite ist geschützt. Ihr Quelltext kann dennoch angesehen und kopiert werden.",
        "tooltip-ca-history": "Frühere Versionen dieser Seite",
        "tooltip-n-mainpage-description": "Hauptseite besuchen",
        "tooltip-n-portal": "Über das Projekt, was du tun kannst, wo was zu finden ist",
        "tooltip-n-currentevents": "Hintergrundinformationen zu aktuellen Ereignissen",
-       "tooltip-n-recentchanges": "Liste der letzten Änderungen in {{SITENAME}}",
+       "tooltip-n-recentchanges": "Liste der letzten Änderungen in diesem Wiki",
        "tooltip-n-randompage": "Zufällige Seite aufrufen",
        "tooltip-n-help": "Hilfeseite anzeigen",
        "tooltip-t-whatlinkshere": "Liste aller Seiten, die hierher verlinken",
        "tooltip-t-recentchangeslinked": "Letzte Änderungen an Seiten, die von hier verlinkt sind",
        "tooltip-feed-rss": "RSS-Feed dieser Seite",
        "tooltip-feed-atom": "Atom-Feed dieser Seite",
-       "tooltip-t-contributions": "Liste der Beiträge von diesem Benutzer ansehen",
+       "tooltip-t-contributions": "Liste der Beiträge dieses Benutzers ansehen",
        "tooltip-t-emailuser": "Eine E-Mail an diesen Benutzer senden",
        "tooltip-t-info": "Weitere Informationen über diese Seite",
        "tooltip-t-upload": "Dateien hochladen",
        "spam_reverting": "Letzte Version ohne Links zu $1 wiederhergestellt.",
        "spam_blanking": "Alle Versionen mit einem Link zu $1 wurden bereinigt.",
        "spam_deleting": "Alle Versionen mit einem Link zu $1 wurden gelöscht.",
-       "simpleantispam-label": "Spamschutzprüfung.\nHier '''NICHTS''' eintragen!",
+       "simpleantispam-label": "Spamschutzprüfung.\nHier <strong>NICHTS</strong> eintragen!",
        "pageinfo-title": "Informationen zu „$1“",
        "pageinfo-not-current": "Diese Information kann leider nicht für alte Versionen zur Verfügung gestellt werden.",
        "pageinfo-header-basic": "Basisinformationen",
        "pageinfo-hidden-categories": "Versteckte {{PLURAL:$1|Kategorie|Kategorien}} ($1)",
        "pageinfo-templates": "Eingebundene {{PLURAL:$1|Vorlage|Vorlagen}} ($1)",
        "pageinfo-transclusions": "Eingebunden in {{PLURAL:$1|1 Seite|$1 Seiten}}",
-       "pageinfo-toolboxlink": "Seiteninformationen",
+       "pageinfo-toolboxlink": "Informationen zur Seite",
        "pageinfo-redirectsto": "Weiterleitungen nach",
        "pageinfo-redirectsto-info": "Information",
        "pageinfo-contentpage": "Gezählt als eine Inhaltsseite",
        "file-info": "Dateigröße: $1, MIME-Typ: $2",
        "file-info-size": "$1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4",
        "file-info-size-pages": "$1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4, $5 {{PLURAL:$5|Seite| Seiten}}",
-       "file-nohires": "Keine höhere Auflösung vorhanden.",
+       "file-nohires": "Es ist keine höhere Auflösung vorhanden.",
        "svg-long-desc": "SVG-Datei, Basisgröße: $1 × $2 Pixel, Dateigröße: $3",
        "svg-long-desc-animated": "Animierte SVG-Datei, Basisgröße $1 × $2 Pixel, Dateigröße: $3",
        "svg-long-error": "Ungültige SVG-Datei: $1",
        "revdelete-uname-unhid": "Benutzername freigegeben",
        "revdelete-restricted": "Einschränkungen gelten auch für Administratoren",
        "revdelete-unrestricted": "Einschränkungen für Administratoren aufgehoben",
+       "logentry-block-block": "$1 {{GENDER:$2|sperrte}} {{GENDER:$4|$3}} mit einer Sperrdauer von $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|hat}} die Sperre von {{GENDER:$4|$3}} aufgehoben",
+       "logentry-block-reblock": "$1 {{GENDER:$2|änderte}} die Sperreinstellungen für {{GENDER:$4|$3}} mit einer Sperrdauer von $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|sperrte}} {{GENDER:$4|$3}} mit einer Sperrdauer von $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|änderte}} die Sperreinstellungen für {{GENDER:$4|$3}} mit einer Sperrdauer von $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|vereinigte}} $3 in die Seite „$4“ (Versionen bis zum $5)",
        "logentry-move-move": "$1 {{GENDER:$2|verschob}} die Seite $3 nach $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|verschob}} die Seite $3 nach $4, ohne dabei eine Weiterleitung anzulegen",
index 7bc5a9d..96e3e3e 100644 (file)
        "wantedcategories": "Wanted categories",
        "wantedcategories-summary": "",
        "wantedpages": "Wanted pages",
-       "wantedpages-summary": "",
+       "wantedpages-summary": "List of non-existing pages with the most links to them, excluding pages which only have redirects linking to them. For a list of non-existent pages that have redirects linking to them, see [[{{#special:BrokenRedirects}}]].",
        "wantedpages-badtitle": "Invalid title in result set: $1",
        "wantedfiles": "Wanted files",
        "wantedfiles-summary": "",
        "thumbnail_image-failure-limit": "There have been too many recent failed attempts ($1 or more) to render this thumbnail. Please try again later.",
        "import": "Import pages",
        "import-summary": "",
-       "importinterwiki": "Transwiki import",
-       "import-interwiki-text": "Select a wiki and page title to import.\nRevision dates and editors' names will be preserved.\nAll transwiki import actions are logged at the [[Special:Log/import|import log]].",
+       "importinterwiki": "Import from another wiki",
+       "import-interwiki-text": "Select a wiki and page title to import.\nRevision dates and editors' names will be preserved.\nAll imports from other wikis are logged at the [[Special:Log/import|import log]].",
        "import-interwiki-sourcewiki": "Source wiki:",
        "import-interwiki-sourcepage": "Source page:",
        "import-interwiki-history": "Copy all history revisions for this page",
        "importcantopen": "Could not open import file",
        "importbadinterwiki": "Bad interwiki link",
        "importsuccess": "Import finished!",
-       "importnosources": "No transwiki import sources have been defined and direct history uploads are disabled.",
+       "importnosources": "No wikis from which to import have been defined and direct history uploads are disabled.",
        "importnofile": "No import file was uploaded.",
        "importuploaderrorsize": "Upload of import file failed.\nThe file is bigger than the allowed upload size.",
        "importuploaderrorpartial": "Upload of import file failed.\nThe file was only partially uploaded.",
        "revdelete-uname-unhid": "username unhidden",
        "revdelete-restricted": "applied restrictions to administrators",
        "revdelete-unrestricted": "removed restrictions for administrators",
+       "logentry-block-block": "$1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} with an expiry time of $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|unblocked}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} with an expiry time of $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} with an expiry time of $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} with an expiry time of $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|merged}} $3 into $4 (revisions up to $5)",
        "logentry-move-move": "$1 {{GENDER:$2|moved}} page $3 to $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|moved}} page $3 to $4 without leaving a redirect",
index 12db5d6..72ea748 100644 (file)
        "diff": "dif",
        "hist": "hist",
        "hide": "Ocultar",
-       "show": "mostrar",
+       "show": "Mostrar",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
        "ignorewarning": "Ignorar aviso y guardar de todos modos",
        "ignorewarnings": "Ignorar todos los avisos",
        "minlength1": "Los nombres de archivo deben tener al menos una letra.",
-       "illegalfilename": "El nombre de archivo «$1» contiene caracteres que no están permitidos en títulos de página. Por favor, renombra el archivo e intenta subirlo de nuevo.",
+       "illegalfilename": "El nombre de archivo «$1» contiene caracteres que no están permitidos en títulos de página. Cambia el nombre del archivo e intenta subirlo de nuevo.",
        "filename-toolong": "Los nombres de archivo no pueden tener más de 240 bytes.",
        "badfilename": "Se ha cambiado el nombre del archivo a «$1».",
        "filetype-mime-mismatch": "La extensión de archivo «.$1» no coincide con el tipo MIME detectado en el archivo ($2).",
        "prevpage": "Página anterior ($1)",
        "allpagesfrom": "Mostrar páginas que empiecen por:",
        "allpagesto": "Mostrar páginas terminadas con:",
-       "allarticles": "Todos los artículos",
+       "allarticles": "Todas las páginas",
        "allinnamespace": "Todas las páginas (espacio de nombres $1)",
        "allpagessubmit": "Mostrar",
        "allpagesprefix": "Mostrar páginas con el prefijo:",
        "viewdeletedpage": "Ver páginas borradas",
        "undeletepagetext": "{{PLURAL:$1|La siguiente página ha sido borrada pero aún está en el archivo y puede ser restaurada.|Las siguientes $1 páginas han sido borradas pero aún están en el archivo y pueden ser restauradas.}}\nPuede que el archivo se limpie periódicamente.",
        "undelete-fieldset-title": "Restaurar revisiones",
-       "undeleteextrahelp": "Para restaurar todo el historial de la página, deja todas las casillas sin seleccionar y pulsa '''''{{int:undeletebtn}}'''''. Para realizar una restauración selectiva, marca las revisiones a ser restauradas y pulsa '''''{{int:undeletebtn}}'''''.",
+       "undeleteextrahelp": "Para restaurar todo el historial de la página, deja todas las casillas sin seleccionar y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>. Para realizar una restauración selectiva, marca las revisiones que deban restaurarse y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "$1 {{PLURAL:$1|revisión|revisiones}} archivadas",
        "undeletehistory": "Si restauras una página, todas sus revisiones serán restauradas al historial.\nSi una nueva página con el mismo nombre ha sido creada desde que se borró la original, las versiones restauradas aparecerán como historial anterior, y la revisión actual de la página actual no se reemplazará automáticamente.",
        "undeleterevdel": "No se deshará el borrado si éste resulta en el borrado parcial de la última revisión de la página. En tal caso, desmarque o muestre las revisiones borradas más recientes. Las revisiones de archivos que no tiene permitido ver no se restaurarán.",
        "whatlinkshere": "Lo que enlaza aquí",
        "whatlinkshere-title": "Páginas que enlazan con «$1»",
        "whatlinkshere-page": "Página:",
-       "linkshere": "Las siguientes páginas enlazan a '''[[:$1]]''':",
+       "linkshere": "Las siguientes páginas enlazan a <strong>[[:$1]]</strong>:",
        "nolinkshere": "Ninguna página enlaza con '''[[:$1]]'''.",
        "nolinkshere-ns": "Ninguna página enlaza con '''[[:$1]]''' en el espacio de nombres elegido.",
        "isredirect": "página redirigida",
        "istemplate": "inclusión",
-       "isimage": "Enlace de imagen",
+       "isimage": "enlace de archivo",
        "whatlinkshere-prev": "{{PLURAL:$1|previa|previas $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|siguiente|siguientes $1}}",
        "whatlinkshere-links": "← enlaces",
        "tooltip-t-specialpages": "Lista de todas las páginas especiales",
        "tooltip-t-print": "Versión imprimible de esta página",
        "tooltip-t-permalink": "Enlace permanente a esta versión de la página",
-       "tooltip-ca-nstab-main": "Ver el artículo",
-       "tooltip-ca-nstab-user": "Ver la página de usuario",
+       "tooltip-ca-nstab-main": "Ver la página de contenido",
+       "tooltip-ca-nstab-user": "Ver la página del usuario",
        "tooltip-ca-nstab-media": "Ver la página de multimedia",
        "tooltip-ca-nstab-special": "Esta es una página especial, no se puede editar la página en sí",
-       "tooltip-ca-nstab-project": "Ver la página de proyecto",
+       "tooltip-ca-nstab-project": "Ver la página del proyecto",
        "tooltip-ca-nstab-image": "Ver la página del archivo",
        "tooltip-ca-nstab-mediawiki": "Ver el mensaje de sistema",
        "tooltip-ca-nstab-template": "Ver la plantilla",
        "tooltip-ca-nstab-category": "Ver la página de categoría",
        "tooltip-minoredit": "Marcar este cambio como menor",
        "tooltip-save": "Guardar los cambios",
-       "tooltip-preview": "Previsualiza los cambios realizados. ¡Por favor, hazlo antes de grabar!",
-       "tooltip-diff": "Muestra los cambios que ha introducido en el texto.",
+       "tooltip-preview": "Previsualiza tus cambios. ¡Hazlo antes de grabar!",
+       "tooltip-diff": "Mostrar los cambios que has hecho en el texto.",
        "tooltip-compareselectedversions": "Ver las diferencias entre las dos versiones seleccionadas de esta página.",
        "tooltip-watch": "Añadir esta página a tu lista de seguimiento",
        "tooltip-watchlistedit-normal-submit": "Borrar páginas",
        "tooltip-rollback": "«Revertir» revierte todas las ediciones del último usuario con un solo clic.",
        "tooltip-undo": "«Deshacer» revierte la edición seleccionada y abre la página de edición en el modo de previsualización.\nPermite añadir una razón al resumen de edición.",
        "tooltip-preferences-save": "Guardar las preferencias",
-       "tooltip-summary": "Introduce un breve resumen",
+       "tooltip-summary": "Escribe un breve resumen",
        "interlanguage-link-title": "$1 ($2)",
        "common.css": "/* El CSS colocado en esta página será aplicado a todas las apariencias */",
        "print.css": "/* Los estilos CSS colocados aquí afectarán la impresión */",
        "spam_reverting": "Revirtiendo a la última versión que no contenga enlaces a $1",
        "spam_blanking": "Todas las revisiones contienen enlaces a $1, blanqueando",
        "spam_deleting": "Todas las revisiones que contienen enlaces a $1, en proceso de eliminación",
-       "simpleantispam-label": "Comprobación anti-spam\n¡NO rellenes esto!",
+       "simpleantispam-label": "Comprobación anti-spam.\n¡<strong>NO</strong> rellenes esto!",
        "pageinfo-title": "Información de «$1»",
        "pageinfo-not-current": "Lo sentimos, no es posible mostrar esta información para las revisiones antiguas.",
        "pageinfo-header-basic": "Información básica",
        "file-info": "tamaño de archivo: $1; tipo MIME: $2",
        "file-info-size": "$1 × $2 píxeles; tamaño de archivo: $3; tipo MIME: $4",
        "file-info-size-pages": "$1 × $2 píxeles, tamaño de archivo: $3, tipo MIME: $4, $5 {{PLURAL:$5|página|páginas}}",
-       "file-nohires": "No disponible a mayor resolución.",
+       "file-nohires": "No disponible en mayor resolución.",
        "svg-long-desc": "archivo SVG, nominalmente $1 × $2 píxeles, tamaño de archivo: $3",
        "svg-long-desc-animated": "Archivo SVG animado, nominalmente de $1 × $2 píxeles, tamaño del archivo: $3",
        "svg-long-error": "Archivo SVG no válido: $1",
        "exif-software": "Software usado",
        "exif-artist": "Autor",
        "exif-copyright": "Titular de los derechos de autor",
-       "exif-exifversion": "Versión Exif",
+       "exif-exifversion": "Versión de Exif",
        "exif-flashpixversion": "Versión admitida de Flashpix",
        "exif-colorspace": "Espacio de color",
        "exif-componentsconfiguration": "Significado de cada componente",
        "exif-gpslongitude-w": "Longitud oeste",
        "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|metro|metros}} sobre el nivel del mar",
        "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|metro|metros}} bajo el nivel del mar",
-       "exif-gpsstatus-a": "Medida en progreso",
+       "exif-gpsstatus-a": "Medida en proceso",
        "exif-gpsstatus-v": "Interoperabilidad de medida",
        "exif-gpsmeasuremode-2": "Medición bidimensional",
        "exif-gpsmeasuremode-3": "Medición tridimensional",
        "json-error-utf8": "Los caracteres UTF-8 tienen errores de formato; probablemente la codificación es incorrecta.",
        "json-error-recursion": "Una o más referencias recursivas en el valor por codificar",
        "json-error-inf-or-nan": "Hay uno o más valores «NAN» o «INF» en el valor que se codificará",
-       "json-error-unsupported-type": "Se proporcionó un valor en un tipo que no se puede codificar"
+       "json-error-unsupported-type": "Se proporcionó un valor en un tipo que no se puede codificar",
+       "headline-anchor-title": "Enlazar a esta sección"
 }
index f0f0fbe..bdb0189 100644 (file)
                        "Macofe",
                        "Sam",
                        "JackPotte",
-                       "Weft"
+                       "Weft",
+                       "Raulel",
+                       "Nicolapps"
                ]
        },
        "tog-underline": "Souligner les liens :",
        "unprotectthispage": "Changer la protection de cette page",
        "newpage": "Nouvelle page",
        "talkpage": "Discussion sur cette page",
-       "talkpagelinktext": "discuter",
+       "talkpagelinktext": "Discussion",
        "specialpage": "Page spéciale",
        "personaltools": "Outils personnels",
        "articlepage": "Voir la page de contenu",
        "revdelete-uname-unhid": "nom d'utilisateur affiché",
        "revdelete-restricted": "restrictions appliquées aux administrateurs",
        "revdelete-unrestricted": "restrictions retirées pour les administrateurs",
+       "logentry-block-block": "$1 {{GENDER:$2|a bloqué}} {{GENDER:$4|$3}} pour un temps d'expiration de $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|a débloqué}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|a modifié}} les paramètres de blocage pour {{GENDER:$4|$3}} avec un temps d'expiration de $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|a bloqué}} {{GENDER:$4|$3}} pour une durée de $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|a modifié}} les paramètres de blocage pour {{GENDER:$4|$3}} avec un temps d'expiration de $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|a fusionné}} $3 en $4 (révisions jusqu’à $5)",
        "logentry-move-move": "$1 {{GENDER:$2|a déplacé}} la page $3 vers $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|a déplacé}} la page $3 vers $4 sans laisser de redirection",
        "json-error-utf8": "Caractères UTF-8 mal formés, peut-être mal encodé",
        "json-error-recursion": "Une ou plusieurs références récursives dans la valeur à encoder",
        "json-error-inf-or-nan": "Une une plusieurs valeurs NaN ou INF dans la valeur à encoder",
-       "json-error-unsupported-type": "Une valeur a été donnée dans un type ne pouvant pas être encodé"
+       "json-error-unsupported-type": "Une valeur a été donnée dans un type ne pouvant pas être encodé",
+       "headline-anchor-title": "Lien vers cette section"
 }
index 8096ff6..c27e987 100644 (file)
        "showpreview": "Mostrar a vista previa",
        "showdiff": "Mostrar os cambios",
        "blankarticle": "<strong>Advertencia:</strong> A páxina que está a piques de crear está baleira.\nSe preme no botón \"{{int:savearticle}}\" outra vez, a páxina crearase sen contido.",
-       "anoneditwarning": "<strong>Aviso:</strong> Non accedeu ao sistema. O seu enderezo IP será rexistado no histórico de edicións desta páxina. Se <strong>[$1 accede ao sistema]</strong> ou <strong>[$2 crea unha conta]</strong>, as súas edicións serán rexistadas co seu nome de usuario, ademais doutros beneficios.",
+       "anoneditwarning": "<strong>Aviso:</strong> Non accedeu ao sistema. O seu enderezo IP será visible se fai algunha edición. Se <strong>[$1 accede ao sistema]</strong> ou <strong>[$2 crea unha conta]</strong>, as súas edicións serán atribuídas ao seu nome de usuario e obterá outros beneficios.",
        "anonpreviewwarning": "''Non accedeu ao sistema. Se garda a páxina, o seu enderezo IP quedará rexistrado no historial de edicións.''",
        "missingsummary": "'''Aviso:''' Esqueceu incluír o texto do campo resumo.\nSe preme en \"{{int:savearticle}}\" a súa edición gardarase sen ningunha descrición da edición.",
        "selfredirect": "<strong>Atención:</strong> Está redirecionando esta páxina a ela mesma. Vostede pode ter especificado a páxina incorrecta para a redireción, ou pode que estea a editar a páxina incorrecta. Se preme \"{{int:savearticle}}\" de novo, crearase a redireción de tódolos xeitos.",
index 72adfca..411ca55 100644 (file)
@@ -21,7 +21,8 @@
                        "RaviC",
                        "Sushant savla",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Vyom"
                ]
        },
        "tog-underline": "કડીઓની નીચે લીટી (અંડરલાઇન):",
        "otherlanguages": "અન્ય ભાષાઓમાં",
        "redirectedfrom": "($1 થી અહીં વાળેલું)",
        "redirectpagesub": "પાનું અન્યત્ર વાળો",
+       "redirectto": "દિશાનિર્દેશિત",
        "lastmodifiedat": "આ પાનામાં છેલ્લો ફેરફાર $1ના રોજ $2 વાગ્યે થયો.",
        "viewcount": "આ પાનું {{PLURAL:$1|એક|$1}} વખત જોવામાં આવ્યું છે.",
        "protectedpage": "સંરક્ષિત પાનું",
        "gotaccountlink": "પ્રવેશ કરો",
        "userlogin-resetlink": "પોતાની પ્રવેશ માહિતી ભૂલી ગયા છો?",
        "userlogin-resetpassword-link": "તમારો પાસવર્ડ ભૂલી ગયા છો?",
+       "userlogin-helplink2": "પ્રવેશ કરવા માટે મદદ",
        "userlogin-loggedin": "તમે પહેલેથી {{GENDER:$1|$1}} તરીકે પ્રવેશ કરેલો જ છે.\nબીજા સભ્ય તરીકે પ્રવેશ કરવા માટે નીચેનું ફોર્મ વાપરો.",
        "userlogin-createanother": "બીજું ખાતું બનાવો",
        "createacct-emailrequired": "ઇમેલ સરનામું",
        "preview": "પૂર્વાવલોકન",
        "showpreview": "ઝલક દર્શાવો",
        "showdiff": "ફેરફારો દર્શાવો",
-       "anoneditwarning": "'''ચેતવણી:''' તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.\nઆ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે.",
+       "anoneditwarning": "<strong>ચેતવણી:</strong> તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.\nઆ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે અને તમારૂં આઈ.પી. લોકો જાહેર રીતે જોઈ શકશે. માટે <strong>[$1 પ્રવેશ કરો]</strong> અથવા તમે <strong>[$2 ખાતું બનાવો]</strong> તો ફેરફારો તમારા સભ્યનામ હેઠળ થશે અને અન્ય ફાયદાઓ પણ મળશે.",
        "anonpreviewwarning": "તમે સભ્યનામથી પ્રવેશ કર્યો નથી,આ પાનું ઈતિહાસમાંતમારા IP સરનામાના નામે  સાચવવામાં આવશે",
        "missingsummary": "'''ચેતવણી:''' તમે ફેરફારનો સારંશ નથી આપ્યો.\nજો તમે \"{{int:savearticle}}\"  પર ક્લીક કરશો તો તમરો ફેરફારા સારાઁશાવગરાસાચવવામાં આવશે",
        "missingcommenttext": "કૃપા કરી નીચે ટીપ્પણી લખો.",
        "rev-deleted-event": "(લોગ ક્રિયા હટાવાઈ)",
        "rev-deleted-user-contribs": "[સભ્યનામ કે IP સરનામું  હટાવી દેવાયું છે - યોગદાનામાં આ ફેરફાર અદ્રશ્ય છે]",
        "rev-deleted-text-permission": "આ પુનરાવર્તન હટાવી દેવાયું છે\nઆની વિસ્તરીત માહિતી અહીં મળશે [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
+       "rev-suppressed-text-permission": "આ પાનાં પરનું પુનરાવર્તન <strong>છુપાવવામાં</strong> આવ્યું છે. તેની વધુ વિગત [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} છુપાવાયેલના લોગ] પરથી મળશે.",
        "rev-deleted-text-unhide": "આ પાનાની નવી આવૃત્તિ ''હટાવી છે '''.\nવિગતો શોધી શકાય છે [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].\nતમે હજુ પણ [$1 view this revision] આ આવૃત્તિ જોવા શકો છો જો તમે આગલ વધવા  માંગો તો.",
        "rev-suppressed-text-unhide": "આ પાના ફેરફારો ''' સંતાડવામાં ''' આવ્યાં છે.\nતેની વિગતો અહીં શોધી શકાય છે [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].\nતમે હજુ પણ [$1 view this revision] આ આવૃત્તિ જોઈશકો છો જો તમે આગળ વધવા માંગો તો.",
        "rev-deleted-text-view": "આ પાનું આવૃત્તિ''ગયેલ છે '''કાઢી.\nતમે તેને જોઈ શકે છે; વિગતો શોધી શકાય છે [{{fullurl: {{# વિશેષ:}} લોગ / કાઢી | પાનું = {{FULLPAGENAMEE}}}} કાઢી નાંખવાનું લોગ].",
        "revdelete-no-file": "વર્ણવેલી ફાઈલ અસ્તિત્વમાં નથી",
        "revdelete-show-file-confirm": "શું તમને ખાત્રી છે કેતમે $2 તારીખ $3 વાગ્યા સુધીના \"<nowiki>$1</nowiki>\" ફાઇલ ના ફેરફાર જોવા માંગો છો?",
        "revdelete-show-file-submit": "હા",
+       "revdelete-selected-text": "[[:$2]]: નું {{PLURAL:$1|Selected revision|પસંદ કરાયેલ પુનરાવર્તન}}",
        "logdelete-selected": "{{PLURAL:$1|પસંદગી કરેલ લોગ ઘટના | પસંદગી કરેલ લોગ ઘટનાઓ }}:",
        "revdelete-confirm": "કૃપયા પુષ્ટિ કરો કે તમે શું કરી રહ્યા છો તેની અને તેના પરિણામોની તમને જાણ છે અને તમે આ બધું  [[{{MediaWiki:Policy-url}}|the policy]] અ6તર્ગત કરી રહ્યાં છો.",
        "revdelete-suppress-text": "બળ પૂર્વક છુપાવવું \"માત્ર\" આજ સંજોગોમાં કરી શકાશે:\n* સંભવતઃ ભયાજનક માહિતી \n* અયોગ્ય નિજી માહિતી \n*: ''ઘરનું સરનામું અને ટેલિફોન નંબર, રાષ્ટ્રીય ઓળખ ક્રમાંકો વગેરે.''",
        "revdelete-unsuppress": "સમા કરાયેલા પુનરાવર્તનો પરના પ્રતિબંધ હટાવો",
        "revdelete-log": "કારણ:",
        "revdelete-submit": "પસંદ કરેલા {{PLURAL:$1|ફેરફાર|ફેરફારો}} પર લગાડો",
-       "revdelete-success": "પà«\81નરવરà«\8dતન àª¦à«\8dરશà«\8dયતાસફળતા પૂર્વક અદ્યતન બનાવાઈ",
+       "revdelete-success": "પà«\81નરાવરà«\8dતન àª¦à«\8dરશà«\8dયતા સફળતા પૂર્વક અદ્યતન બનાવાઈ",
        "revdelete-failure": "'''પુનરાવર્તનની દ્રશ્યતા બદલીન શકાઈ:'''\n$1",
-       "logdelete-success": "'''લોગની દ્રશ્યતા સફળતાપૂર્વક ગોઠવાઈ'''",
+       "logdelete-success": "<strong>લોગની દ્રશ્યતા સફળતાપૂર્વક ગોઠવાઈ</strong>",
        "logdelete-failure": "'''લોગની દ્રશ્યતા ગોઠવી ન શકાઈ :'''\n$1",
        "revdel-restore": "દૃષ્ટિક્ષમતા બદલો",
        "pagehist": "પાનાનો ઇતિહાસ",
        "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3",
        "logentry-delete-event": "$1 એ {{PLURAL:$5|લૉગ ઘટના|$5 લૉગ ઘટનાઓ}} ની દ્રશ્યતા $3 પર {{GENDER:$2|બદલેલ}} છે: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL:$5 | સુધારણા | $5 આવૃત્તિઓ}} $3 પાનાં પર: $4",
-       "logentry-delete-event-legacy": "$1 {{GENDER:$2|બદલેલ}} બદલાઈ $3 પર લોગ ઘટનાઓ દૃશ્યતા",
+       "logentry-delete-event-legacy": "$1 એ $3 પર ફેરફારની દૃશ્યતા બદલી",
        "logentry-delete-revision-legacy": "$1 {{GENDER:$2|બદલેલ}} બદલાઈ પાનાં પર આવૃત્તિઓની દૃશ્યતા $3",
        "logentry-suppress-delete": "$1 એ $3 પાનું {{GENDER:$2|દબાવ્યું}}",
-       "logentry-suppress-event": "$1  (છાની માહિતી) {{GENDER:$2|બદલેલ}} બદલાઈ {{PLURAL:$5 | લોગ ઘટના | $5 લોગ}} ની દ્રશ્યતા $3 : $4",
+       "logentry-suppress-event": "$1  ખાનગી રીતે {{GENDER:$2|દ્વારા માહિતીની દૃશ્યતા}} $3 : $4 પર બદલાઈ {{PLURAL:$5 | લોગ ઘટના | $5 લોગ}}",
        "logentry-suppress-revision": "$1 છાની માહિતી {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL:$5 | આવૃત્તિ એ | $5 આવૃત્તિઓ}}: $4 $3 પાનાં પર",
-       "logentry-suppress-event-legacy": "$1 ગુપ્ત {{GENDER:$2|બદલેલ}} બદલો $3 પર લોગ ઘટનાઓ દૃશ્યતા",
+       "logentry-suppress-event-legacy": "$1એ ગુપ્ત રીતે $3 પર લોગ ઘટનાઓની દૃશ્યતા બદલી",
        "logentry-suppress-revision-legacy": "$1 ગુપ્ત {{GENDER:$2|બદલેલ}} બદલાઈ પાનાં પર આવૃત્તિઓની દૃશ્યતા $3",
-       "revdelete-content-hid": "સામàª\97à«\8dરà«\80 àª\9bà«\81પાયà«\87લા",
-       "revdelete-summary-hid": "ફેરફાર સાર છુપાયેલા",
+       "revdelete-content-hid": "માહિતà«\80 àª\9bà«\81પાવà«\80",
+       "revdelete-summary-hid": "ફેરફારનો સારાંશ છુપાવ્યો",
        "revdelete-uname-hid": "વપરાશકર્તા નામ છુપાયેલા",
-       "revdelete-content-unhid": "સામàª\97à«\8dરી છુપાવેલ નથીં",
-       "revdelete-summary-unhid": "ફેરફાર સાર છુપાવેલ નથીં",
+       "revdelete-content-unhid": "માહિતી છુપાવેલ નથીં",
+       "revdelete-summary-unhid": "ફેરફાર સારાંશ છુપાવેલ નથીં",
        "revdelete-uname-unhid": "વપરાશકર્તા નામ છુપાવેલ નથીં",
        "revdelete-restricted": "પ્રબઁધકોના ફેરફાર કરવા પર પ્રતિબંધ મુકાયો",
        "revdelete-unrestricted": "પ્રબંધકોના ફેરફાર કરવા પર પ્રતિબંધ હટાવાયો.",
index 4fdf7a0..3bc09cb 100644 (file)
        "viewsource": "הצגת מקור",
        "viewsource-title": "הצגת המקור של $1",
        "actionthrottled": "הפעולה הוגבלה",
-       "actionthrottledtext": "×\9b×\90×\9eצע×\99 × ×\92×\93 ×¡×¤×\90×\9d, ×§×\99×\99×\9eת ×\9e×\92×\91×\9c×\94 ×¢×\9c ×\91×\99צ×\95×¢ ×¤×¢×\95×\9c×\94 ×\96×\95 ×¤×¢×\9e×\99×\9d ×¨×\91×\95ת ×\9e×\93×\99 ×\91×\96×\9e×\9f ×§×¦×¨, ×\95×\97ר×\92ת ×\9e×\94×\9e×\92×\91×\9c×\94 ×\94×\96×\95.\nנא לנסות שוב בעוד מספר דקות.",
+       "actionthrottledtext": "×\9b×\90×\9eצע×\99 × ×\92×\93 ×¡×¤×\90×\9d, ×§×\99×\99×\9eת ×\9e×\92×\91×\9c×\94 ×¢×\9c ×\91×\99צ×\95×¢ ×¤×¢×\95×\9c×\94 ×\96×\95 ×¤×¢×\9e×\99×\9d ×¨×\91×\95ת ×\9e×\93×\99 ×\91×\96×\9e×\9f ×§×¦×¨, ×\95×\97ר×\92ת ×\9e×\94×\9e×\92×\91×\9c×\94 ×\94×\96×\90ת.\nנא לנסות שוב בעוד מספר דקות.",
        "protectedpagetext": "דף זה מוגן כדי למנוע עריכה ופעולות אחרות.",
        "viewsourcetext": "באפשרותך לצפות בטקסט המקור של הדף ולהעתיקו:",
        "viewyourtext": "באפשרותך לצפות בטקסט המקור של <strong>העריכות שלך</strong> בדף הזה ולהעתיקו:",
        "invalidtitle-knownnamespace": "כותרת בלתי־תקינה עם מרחב השם \"$2\" ושם דף \"$3\"",
        "invalidtitle-unknownnamespace": "כותרת בלתי־תקינה עם מרחב שם בלתי־ידוע מספר $1 ושם דף \"$2\"",
        "exception-nologin": "לא בחשבון",
-       "exception-nologin-text": "×\90× ×\90 ×\94×\99×\9bנס×\95 ×\9c×\97ש×\91×\95×\9f ×\9b×\93×\99 ×\9cר×\90×\95ת ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\90×\95 ×\9c×\91צע ×\90ת ×\94פע×\95×\9c×\94 ×\94×\96×\95.",
-       "exception-nologin-text-manual": "× ×\93רשת $1 ×\9b×\93×\99 ×\9cר×\90×\95ת ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\90×\95 ×\9c×\91צע ×\90ת ×\94פע×\95×\9c×\94 ×\94×\96×\95.",
+       "exception-nologin-text": "× ×\90 ×\9c×\94×\99×\9bנס ×\9c×\97ש×\91×\95×\9f ×\9b×\93×\99 ×\9cר×\90×\95ת ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\90×\95 ×\9c×\91צע ×\90ת ×\94פע×\95×\9c×\94 ×\94×\96×\90ת.",
+       "exception-nologin-text-manual": "× ×\93רשת $1 ×\9b×\93×\99 ×\9cר×\90×\95ת ×\90ת ×\94×\93×£ ×\94×\96×\94 ×\90×\95 ×\9c×\91צע ×\90ת ×\94פע×\95×\9c×\94 ×\94×\96×\90ת.",
        "virus-badscanner": "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
        "virus-scanfailed": "הסריקה נכשלה (קוד: $1)",
        "virus-unknownscanner": "אנטי־וירוס בלתי ידוע:",
        "eauthentsent": "דוא\"ל אימות נשלח לכתובת הדוא\"ל שצוינה.\nלפני שדברי דוא\"ל אחרים יישלחו לחשבון הזה, יהיה עליכם לפעול לפי ההוראות בדוא\"ל, כדי לאשר שהחשבון אכן שייך לכם.",
        "throttled-mailpassword": "כבר נשלח דוא\"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.\nכדי למנוע ניצול לרעה, יכול להישלח רק דוא\"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.",
        "mailerror": "שגיאה בשליחת דואר: $1",
-       "acct_creation_throttle_hit": "×\9e×\91קר×\99×\9d ×\91×\90תר ×\96×\94 ×\93ר×\9a ×\9bת×\95×\91ת ×\94Ö¾IP ×©×\9c×\9b×\9d ×\9b×\91ר ×\99צר×\95 {{PLURAL:$1|×\97ש×\91×\95×\9f ×\90×\97×\93|$1 ×\97ש×\91×\95× ×\95ת}} ×\91×\99×\95×\9d ×\94×\90×\97ר×\95×\9f. ×\96×\94×\95 ×\94×\9eקס×\99×\9e×\95×\9d ×\94×\9e×\95תר ×\91תק×\95פ×\94 ×\96×\95.\n×\9cפ×\99×\9b×\9a, ×\9e×\91קר×\99×\9d ×\93ר×\9a ×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\95 לא יכולים ליצור חשבונות נוספים ברגע זה.",
+       "acct_creation_throttle_hit": "×\9e×\91קר×\99×\9d ×\91×\90תר ×\96×\94 ×\93ר×\9a ×\9bת×\95×\91ת ×\94Ö¾IP ×©×\9c×\9b×\9d ×\9b×\91ר ×\99צר×\95 {{PLURAL:$1|×\97ש×\91×\95×\9f ×\90×\97×\93|$1 ×\97ש×\91×\95× ×\95ת}} ×\91×\99×\95×\9d ×\94×\90×\97ר×\95×\9f. ×\96×\94×\95 ×\94×\9eקס×\99×\9e×\95×\9d ×\94×\9e×\95תר ×\91תק×\95פ×\94 ×\96×\95.\n×\9cפ×\99×\9b×\9a, ×\9e×\91קר×\99×\9d ×\93ר×\9a ×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\90ת לא יכולים ליצור חשבונות נוספים ברגע זה.",
        "emailauthenticated": "כתובת הדוא\"ל שלך אומתה ב־$3, $2.",
        "emailnotauthenticated": "כתובת הדוא\"ל שלכם עדיין לא אומתה.\nלא יישלח אליכם דוא\"ל עבור אף אחת מהתכונות הבאות.",
        "noemailprefs": "יש לציין כתובת דוא\"ל בהעדפות שלך כדי שתכונות אלה יעבדו.",
        "passwordreset-capture-help": "אם תסמנו תיבה זו, הדואר האלקטרוני (יחד עם הסיסמה הזמנית) יוצג לכם במקביל לשליחתו למשתמש.",
        "passwordreset-email": "כתובת דוא\"ל:",
        "passwordreset-emailtitle": "פרטי חשבון ב{{grammar:תחילית|{{SITENAME}}}}",
-       "passwordreset-emailtext-ip": "מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש איפוס של\nהסיסמה שלכם ב{{grammar:תחילית|{{SITENAME}}}} ($4). {{PLURAL:$3|חשבון המשתמש הבא|חשבונות המשתמש הבאים}}\nשייכים לכתובת הדואר האלקטרוני הזו:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או שנזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
-       "passwordreset-emailtext-user": "ה{{GENDER:$1|משתמש|משתמשת}} $1 ב{{GRAMMAR:תחילית|{{SITENAME}}}} {{GENDER:$1|ביקש|ביקשה}} איפוס של הסיסמה שלכם ב{{GRAMMAR:תחילית|{{SITENAME}}}}\n($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}} לכתובת הדואר האלקטרוני הזו:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או שנזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
+       "passwordreset-emailtext-ip": "מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש איפוס של\nהסיסמה שלכם ב{{grammar:תחילית|{{SITENAME}}}} ($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}}\nלכתובת הדואר האלקטרוני הזאת:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או שנזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
+       "passwordreset-emailtext-user": "{{GENDER:$1|המשתמש|המשתמשת}} $1 ב{{GRAMMAR:תחילית|{{SITENAME}}}} {{GENDER:$1|ביקש|ביקשה}} איפוס של הסיסמה שלכם ב{{GRAMMAR:תחילית|{{SITENAME}}}}\n($4). {{PLURAL:$3|חשבון המשתמש הבא שייך|חשבונות המשתמש הבאים שייכים}} לכתובת הדואר האלקטרוני הזאת:\n\n$2\n\n{{PLURAL:$3|סיסמה זמנית זו תפקע|סיסמאות זמניות אלה יפקעו}} תוך {{PLURAL:$5|יום|יומיים|$5 ימים}}.\nעליכם להיכנס ולבחור סיסמה חדשה עכשיו. אם מישהו אחר ביצע בקשה זו, או שנזכרתם בסיסמתכם\nהמקורית ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמה\nהישנה.",
        "passwordreset-emailelement": "שם משתמש: $1\nסיסמה זמנית: $2",
        "passwordreset-emailsent": "נשלח דואר אלקטרוני לאיפוס הסיסמה.",
        "passwordreset-emailsent-capture": "נשלח דואר אלקטרוני לאיפוס הסיסמה, והוא מוצג להלן.",
        "cascadeprotectedwarning": "'''אזהרה:''' דף זה מוגן כך שרק מפעילי מערכת יכולים לערוך אותו, כי הוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת:",
        "titleprotectedwarning": "'''אזהרה: דף זה מוגן כך שדרושות [[Special:ListGroupRights|הרשאות מסוימות]] כדי ליצור אותו.'''\nפעולת היומן האחרונה מוצגת להלן:",
        "templatesused": "{{PLURAL:$1|תבנית המופיעה|תבניות המופיעות}} בדף זה:",
-       "templatesusedpreview": "{{PLURAL:$1|ת×\91× ×\99ת ×\94×\9e×\95פ×\99×¢×\94|ת×\91× ×\99×\95ת ×\94×\9e×\95פ×\99×¢×\95ת}} ×\91תצ×\95×\92×\94 ×\94×\9eק×\93×\99×\9e×\94 ×\94×\96×\95:",
+       "templatesusedpreview": "{{PLURAL:$1|ת×\91× ×\99ת ×\94×\9e×\95פ×\99×¢×\94|ת×\91× ×\99×\95ת ×\94×\9e×\95פ×\99×¢×\95ת}} ×\91תצ×\95×\92×\94 ×\94×\9eק×\93×\99×\9e×\94 ×\94×\96×\90ת:",
        "templatesusedsection": "{{PLURAL:$1|תבנית המופיעה|תבניות המופיעות}} בפסקה זו:",
        "template-protected": "(מוגנת)",
        "template-semiprotected": "(מוגנת חלקית)",
        "undo-summary": "ביטול גרסה $1 של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]])",
        "undo-summary-username-hidden": "ביטול גרסה $1 של משתמש מוסתר",
        "cantcreateaccounttitle": "לא ניתן ליצור את החשבון",
-       "cantcreateaccount-text": "×\90פשר×\95ת ×\99צ×\99רת ×\94×\97ש×\91×\95× ×\95ת ×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\95 ('''$1''') נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא \"$2\".",
+       "cantcreateaccount-text": "×\90פשר×\95ת ×\99צ×\99רת ×\94×\97ש×\91×\95× ×\95ת ×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\90ת (<strong>$1</strong>) נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא \"$2\".",
        "cantcreateaccount-range-text": "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח '''$1''', כולל כתובת ה־IP שלך ('''$4'''), נחסמה על־ידי [[User:$3|$3]].\n\nהסיבה שניתנה על־ידי $3 היא \"$2\".",
        "viewpagelogs": "הצגת יומנים עבור דף זה",
        "nohistory": "אין היסטוריית שינויים עבור דף זה.",
        "rev-deleted-user": "(שם המשתמש הוסר)",
        "rev-deleted-event": "(פרטים מהיומן הוסרו)",
        "rev-deleted-user-contribs": "[שם המשתמש או כתובת ה־IP הוסרו – העריכה הוסתרה מדף התרומות]",
-       "rev-deleted-text-permission": "×\92רסת ×\94×\93×£ ×\94×\96×\95 <strong>נמחקה</strong>.\nניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
-       "rev-suppressed-text-permission": "×\92רסת ×\94×\93×£ ×\94×\96×\95 <strong>הועלמה</strong>.\nניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההעלמות].",
-       "rev-deleted-text-unhide": "×\92רסת ×\94×\93×£ ×\94×\96×\95 <strong>× ×\9e×\97ק×\94</strong>.\n× ×\99ת×\9f ×\9c×\9eצ×\95×\90 ×¤×¨×\98×\99×\9d ×¢×\9c ×\9b×\9a ×\91[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ×\99×\95×\9e×\9f ×\94×\9e×\97×\99ק×\95ת].\n×\90ת×\9d ×¢×\93×\99×\99×\9f ×\99×\9b×\95×\9c×\99×\9d [$1 ×\9cצפ×\95ת ×\91×\92רס×\94 ×\94×\96×\95] אם ברצונכם להמשיך.",
-       "rev-suppressed-text-unhide": "×\92רסת ×\94×\93×£ ×\94×\96×\95 <strong>×\94×\95×¢×\9c×\9e×\94</strong>.\n× ×\99ת×\9f ×\9c×\9eצ×\95×\90 ×¤×¨×\98×\99×\9d ×¢×\9c ×\9b×\9a ×\91[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ×\99×\95×\9e×\9f ×\94×\94×¢×\9c×\9e×\95ת].\n×\90ת×\9d ×¢×\93×\99×\99×\9f ×\99×\9b×\95×\9c×\99×\9d [$1 ×\9cצפ×\95ת ×\91×\92רס×\94 ×\94×\96×\95] אם ברצונכם להמשיך.",
-       "rev-deleted-text-view": "×\92רסת ×\94×\93×£ ×\94×\96×\95 '''× ×\9e×\97ק×\94'''.\nאתם יכולים לצפות בה; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
-       "rev-suppressed-text-view": "×\92רסת ×\94×\93×£ ×\94×\96×\95 <strong>הועלמה</strong>.\nאתם יכולים לצפות בה; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההעלמות].",
+       "rev-deleted-text-permission": "×\92רסת ×\94×\93×£ ×\94×\96×\90ת <strong>נמחקה</strong>.\nניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
+       "rev-suppressed-text-permission": "×\92רסת ×\94×\93×£ ×\94×\96×\90ת <strong>הועלמה</strong>.\nניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההעלמות].",
+       "rev-deleted-text-unhide": "×\92רסת ×\94×\93×£ ×\94×\96×\90ת <strong>× ×\9e×\97ק×\94</strong>.\n× ×\99ת×\9f ×\9c×\9eצ×\95×\90 ×¤×¨×\98×\99×\9d ×¢×\9c ×\9b×\9a ×\91[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ×\99×\95×\9e×\9f ×\94×\9e×\97×\99ק×\95ת].\n×\90ת×\9d ×¢×\93×\99×\99×\9f ×\99×\9b×\95×\9c×\99×\9d [$1 ×\9cצפ×\95ת ×\91×\92רס×\94 ×\94×\96×\90ת] אם ברצונכם להמשיך.",
+       "rev-suppressed-text-unhide": "×\92רסת ×\94×\93×£ ×\94×\96×\90ת <strong>×\94×\95×¢×\9c×\9e×\94</strong>.\n× ×\99ת×\9f ×\9c×\9eצ×\95×\90 ×¤×¨×\98×\99×\9d ×¢×\9c ×\9b×\9a ×\91[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ×\99×\95×\9e×\9f ×\94×\94×¢×\9c×\9e×\95ת].\n×\90ת×\9d ×¢×\93×\99×\99×\9f ×\99×\9b×\95×\9c×\99×\9d [$1 ×\9cצפ×\95ת ×\91×\92רס×\94 ×\94×\96×\90ת] אם ברצונכם להמשיך.",
+       "rev-deleted-text-view": "×\92רסת ×\94×\93×£ ×\94×\96×\90ת <strong>× ×\9e×\97ק×\94</strong>.\nאתם יכולים לצפות בה; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
+       "rev-suppressed-text-view": "×\92רסת ×\94×\93×£ ×\94×\96×\90ת <strong>הועלמה</strong>.\nאתם יכולים לצפות בה; ניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} יומן ההעלמות].",
        "rev-deleted-no-diff": "אינכם יכולים לצפות בהבדלים בין הגרסאות שציינתם משום שאחת מהן '''נמחקה'''.\nניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].",
        "rev-suppressed-no-diff": "אינכם יכולים לצפות בהבדלים בין הגרסאות שציינתם משום שאחת מהן '''נמחקה'''.",
        "rev-deleted-unhide-diff": "אחת מהגרסאות שביקשתם להשוות '''נמחקה'''.\nניתן למצוא פרטים על כך ב[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} יומן המחיקות].\nאתם עדיין יכולים [$1 לצפות בהבדלים בין הגרסאות] אם ברצונכם להמשיך.",
        "thumbnail_image-type": "סוג התמונה אינו נתמך",
        "thumbnail_gd-library": "הגדרת הספריה GD אינה שלמה: חסרה הפונקציה $1",
        "thumbnail_image-missing": "נראה שהקובץ הבא חסר: $1",
-       "thumbnail_image-failure-limit": "×\94×\99×\95 ×\9c×\90×\97ר×\95× ×\94 × ×\99ס×\99×\95× ×\95ת ×¨×\91×\99×\9d ×\9e×\93×\99 ($1 ×\90×\95 ×\99×\95תר) ×\9c×\99צ×\95ר ×\90ת ×\94ת×\9e×\95× ×\94 ×\94×\9e×\9e×\95×\96ערת ×\94×\96×\95. ×\90× ×\95 × ×¡×\95 שוב מאוחר יותר.",
+       "thumbnail_image-failure-limit": "×\94×\99×\95 ×\9c×\90×\97ר×\95× ×\94 × ×\99ס×\99×\95× ×\95ת ×¨×\91×\99×\9d ×\9e×\93×\99 ($1 ×\90×\95 ×\99×\95תר) ×\9c×\99צ×\95ר ×\90ת ×\94ת×\9e×\95× ×\94 ×\94×\9e×\9e×\95×\96ערת ×\94×\96×\90ת. × ×\90 ×\9cנס×\95ת שוב מאוחר יותר.",
        "import": "ייבוא דפים",
        "importinterwiki": "ייבוא בין־אתרי",
        "import-interwiki-text": "אנא בחרו אתר ויקי וכותרת דף לייבוא.\nתאריכי העריכות ושמות העורכים יישמרו.\nכל פעולות הייבוא הבין־אתרי נשמרות ב[[Special:Log/import|יומן הייבוא]].",
        "confirmemail_success": "כתובת הדוא\"ל שלך אושרה.\nכעת באפשרותך [[Special:UserLogin|להיכנס לחשבון שלך]] וליהנות מהאתר.",
        "confirmemail_loggedin": "כתובת הדוא\"ל שלך אושרה כעת.",
        "confirmemail_subject": "קוד אימות דוא\"ל מ{{grammar:תחילית|{{SITENAME}}}}",
-       "confirmemail_body": "×\9e×\99ש×\94×\95, ×\9bנר×\90×\94 ×\90ת×\9d (×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\95: $1),\nרש×\9d ×\90ת ×\94×\97ש×\91×\95×\9f \"$2\" ×¢×\9d ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×\94×\96×\95 ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם *לא* אתם רשמתם את החשבון, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
-       "confirmemail_body_changed": "×\9e×\99ש×\94×\95, ×\9bנר×\90×\94 ×\90ת×\9d (×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\95: $1),\nש×\99× ×\94 ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c ×\94×\97ש×\91×\95×\9f \"$2\" ×\9c×\9bת×\95×\91ת ×\94×\96×\95 ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל מחדש את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם החשבון *אינו* שייך לכם, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
-       "confirmemail_body_set": "×\9e×\99ש×\94×\95, ×\9bנר×\90×\94 ×\90ת×\9d (×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\95: $1),\n×\94×\92×\93×\99ר ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c ×\94×\97ש×\91×\95×\9f \"$2\" ×\9c×\9bת×\95×\91ת ×\94×\96×\95 ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם החשבון *אינו* שייך לכם, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
+       "confirmemail_body": "×\9e×\99ש×\94×\95, ×\9bנר×\90×\94 ×\90ת×\9d (×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\90ת: $1),\nרש×\9d ×\90ת ×\94×\97ש×\91×\95×\9f \"$2\" ×¢×\9d ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×\94×\96×\90ת ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם *לא* אתם רשמתם את החשבון, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
+       "confirmemail_body_changed": "×\9e×\99ש×\94×\95, ×\9bנר×\90×\94 ×\90ת×\9d (×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\90ת: $1),\nש×\99× ×\94 ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c ×\94×\97ש×\91×\95×\9f \"$2\" ×\9c×\9bת×\95×\91ת ×\94×\96×\90ת ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל מחדש את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם החשבון *אינו* שייך לכם, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
+       "confirmemail_body_set": "×\9e×\99ש×\94×\95, ×\9bנר×\90×\94 ×\90ת×\9d (×\9e×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\96×\90ת: $1),\n×\94×\92×\93×\99ר ×\90ת ×\9bת×\95×\91ת ×\94×\93×\95×\90\"×\9c ×©×\9c ×\94×\97ש×\91×\95×\9f \"$2\" ×\9c×\9bת×\95×\91ת ×\94×\96×\90ת ב{{grammar:תחילית|{{SITENAME}}}}.\n\nכדי לאמת שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא\"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:\n\n$3\n\nאם החשבון *אינו* שייך לכם, השתמשו בקישור הבא כדי לבטל את אימות כתובת הדוא\"ל:\n\n$5\n\nקוד האימות יפקע ב־$4.",
        "confirmemail_invalidated": "אימות כתובת הדוא\"ל בוטל",
        "invalidateemail": "ביטול האימות של כתובת הדוא\"ל",
        "scarytranscludedisabled": "[הכללת דפים בין אתרים מבוטלת]",
        "revdelete-uname-unhid": "הסתרת שם המשתמש בוטלה",
        "revdelete-restricted": "נוספו הגבלות למפעילי מערכת",
        "revdelete-unrestricted": "הוסרו הגבלות ממפעילי מערכת",
+       "logentry-block-block": "$1 {{GENDER:$2|חסם|חסמה}} את {{GENDER:$4|$3}} עם זמן פקיעה של $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|שחרר|שחררה}} את החסימה של {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|שינה|שינתה}} את הגדרות החסימה של {{GENDER:$4|$3}} עם זמן פקיעה של $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|חסם|חסמה}} את {{GENDER:$4|$3}} עם זמן פקיעה של $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|שינה|שינתה}} את הגדרות החסימה של {{GENDER:$4|$3}} עם זמן פקיעה של $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|מיזג|מיזגה}} את $3 לתוך $4 (גרסאות עד $5)",
        "logentry-move-move": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}}",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} בלי להשאיר הפניה",
        "json-error-utf8": "תווי UTF-8 פגומים, ייתכן שהקידוד שגוי",
        "json-error-recursion": "הפניה רקורסיבית אחת או יותר בערך שנועד לקידוד",
        "json-error-inf-or-nan": "ערך NAN או INF אחד או יותר בערך שנועד לקידוד",
-       "json-error-unsupported-type": "ניתן ערך מסוג שלא יכול להיות מקודד"
+       "json-error-unsupported-type": "ניתן ערך מסוג שלא יכול להיות מקודד",
+       "headline-anchor-title": "קישור לפסקה הזאת"
 }
index 1ac3c47..c4529fd 100644 (file)
        "preview": "झलक",
        "showpreview": "झलक दिखाएँ",
        "showdiff": "बदलाव दिखाएँ",
-       "anoneditwarning": "'''सावधान:''' आपने सत्रारंभ नहीं किया है। इस पृष्ठ के संपादन इतिहास में आपका आइ॰पी पता अंकित किया जाएगा।",
+       "anoneditwarning": "<strong>सावधान:</strong> आपने सत्रारंभ नहीं किया है। यदि आप सम्पादन करते हैं तो इस पृष्ठ के संपादन इतिहास में आपका आइ॰पी पता अंकित किया जाएगा। यदि आप <strong>[$1 लॉगिन]</strong> करते हैं अथवा <strong>[$2 खाता बनाते हैं]</strong> तो अन्य सुविधाओं के साथ-साथ आपके संपादनों का श्रेय आपके सदस्यनाम पर दिया जाएगा।",
        "anonpreviewwarning": "''आप लॉग्ड इन नहीं हैं। पृष्ठ सहेजने पर आपका आइ॰पी पता इस पृष्ठ के इतिहास में दर्ज किया जायेगा।''",
        "missingsummary": "'''अनुस्मारक:''' आपने संपादन सारांश नहीं दिया है।\nअगर आप दुबारा \"{{int:savearticle}}\" पर क्लिक करते हैं तो आपका संपादन बिना सारांश के संजोया जायेगा।",
        "missingcommenttext": "कृपया नीचे टिप्पणी दें।",
        "parser-template-recursion-depth-warning": "साँचा पुनरावर्ती गहराई सीमा पार ($1)",
        "language-converter-depth-warning": "भाषा कन्वर्टर गहराई सीमा से बाहर गया ( $1 )",
        "node-count-exceeded-category": "पृष्ठ जिनमें नोड-संख्या सीमा पार की गई है",
-       "node-count-exceeded-category-desc": "यह à¤\89न à¤ªà¥\83षà¥\8dठà¥\8bà¤\82 à¤\95à¥\80 à¤¶à¥\8dरà¥\87णà¥\80 à¤¹à¥\88 à¤\9cिनमà¥\87à¤\82 à¤¨à¥\8bड-सà¤\82à¤\96à¥\8dया à¤¸à¥\80मा à¤ªà¤¾à¤° à¤\95à¥\80 à¤\97यà¥\80 है।",
-       "node-count-exceeded-warning": "पृष्ठ ने नोड-संख्या पार की है",
+       "node-count-exceeded-category-desc": "यह à¤ªà¥\83षà¥\8dठ à¤¨à¥\8bड-सà¤\82à¤\96à¥\8dया à¤¸à¥\80मा à¤ªà¤¾à¤° à¤\95रता है।",
+       "node-count-exceeded-warning": "पृष्ठ ने नोड संख्या पार की है",
        "expansion-depth-exceeded-category": "पृष्ठ जिनमें विस्तार गहराई पार की गई है",
        "expansion-depth-exceeded-category-desc": "यह पृष्ठ विस्तार गहराई पार करता है।",
        "expansion-depth-exceeded-warning": "पृष्ठ में विस्तार गहराई पार की गई है",
        "history-feed-empty": "अनुरोधित पृष्ठ अस्तित्व में नहीं है।\nयह पृष्ठ या तो हटाया गया है या फिर इसका नाम बदल दिया गया है।\n[[Special:Search|विकि पर खोज]] का प्रयोग करें।",
        "rev-deleted-comment": "(सम्पादन सारांश हटाया)",
        "rev-deleted-user": "(सदस्यनाम हटाया)",
-       "rev-deleted-event": "(लà¥\89à¤\97 à¤\95ारà¥\8dय हटाया)",
+       "rev-deleted-event": "(लà¥\89à¤\97 à¤µà¤¿à¤µà¤°à¤£ हटाया)",
        "rev-deleted-user-contribs": "[सदस्यनाम अथवा आइ॰पी पता छुपाया गया - सम्पादन योगदानों में से छुपाया गया]",
        "rev-deleted-text-permission": "यह पृष्ठ अवतरण हटाया गया है।\nइसकी अधिक जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाने की लॉग] में पाई जा सकती है।",
        "rev-deleted-text-unhide": "यह पृष्ठ अवतरण हटाया गया है।\nइसकी अधिक जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाने की लॉग] में पाई जा सकती है।\nयदि आप चाहें तो इस अवतरण को [$1 देख सकते हैं]।",
        "revdelete-legend": "दृश्य प्रतिबंध निश्चित करें",
        "revdelete-hide-text": "अवरतण पाठ",
        "revdelete-hide-image": "फ़ाइल का पाठ छुपाएँ",
-       "revdelete-hide-name": "à¤\95à¥\8dरिया à¤\94र à¤²à¤\95à¥\8dषà¥\8dय को छुपाएँ",
+       "revdelete-hide-name": "लà¤\95à¥\8dषà¥\8dय à¤\94र à¤ªà¥\8dराà¤\9aलà¥\8bà¤\82 को छुपाएँ",
        "revdelete-hide-comment": "संपादन सारांश",
        "revdelete-hide-user": "संपादक का सदस्यनाम/आइ॰पी॰ पता",
        "revdelete-hide-restricted": "प्रबंधक सहित सभी सदस्यों से डाटा छुपाएँ",
        "searchrelated": "सम्बंधित",
        "searchall": "सभी",
        "showingresults": "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$1''' परिणाम {{PLURAL:$1|दिखाया गया है|दिखाए गए हैं}}।",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> में से <strong>$1</strong> परिणाम|<strong>$3</strong> में से परिणाम <strong>$1 - $2</strong>}}",
        "search-nonefound": "आपकी खोज से मेल खाते कोई परिणाम नहीं मिले।",
        "powersearch-legend": "उन्नत खोज",
        "powersearch-ns": "नामस्थानों में खोजें:",
        "preferences": "मेरी वरीयताएँ",
        "mypreferences": "पसंद",
        "prefs-edits": "संपादन संख्या:",
-       "prefsnologintext2": "अपनी वरीयताओं को बदलने के लिए कृपया $1 करें।",
+       "prefsnologintext2": "अपनी वरीयताओं को बदलने के लिए कृपया लॉग इन करें।",
        "prefs-skin": "त्वचा",
        "skin-preview": "झलक",
        "datedefault": "खा़स पसंद नहीं",
        "gender-female": "मैं सम्पादन करती हूँ।",
        "prefs-help-gender": "यह जानकारी देना वैकल्पिक है।\nयह सॉफ़्टवेयर में लिंग के आधार पर आपके लिए सही संबोधन हेतु प्रयुक्त होता है।\nयह जानकारी सार्वजनिक होगी।",
        "email": "ई-मेल",
-       "prefs-help-realname": "à¤\86पà¤\95ा à¤\85सलà¥\80 à¤¨à¤¾à¤® à¤¦à¥\87ना à¤\86वशà¥\8dयà¤\95 à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\88।\nयदि à¤\86प à¤ªà¥\8dरदान à¤\95रतà¥\87 à¤¹à¥\88à¤\82 à¤¤à¥\8b à¤\87सà¤\95ा à¤ªà¥\8dरयà¥\8bà¤\97 à¤\86पà¤\95à¥\87 à¤¯à¥\8bà¤\97दानà¥\8bà¤\82 à¤\95à¥\87 à¤²à¤¿à¤¯à¥\87 à¤\86पà¤\95à¥\8b à¤¶à¥\8dरà¥\87य (attribution) à¤¦à¥\87नà¥\87 à¤\95à¥\87 à¤²à¤¿à¤¯à¥\87 à¤\95िया à¤\9cायà¥\87à¤\97ा।",
+       "prefs-help-realname": "असली नाम देना आवश्यक नहीं है।\nयदि आप प्रदान करते हैं तो इसका प्रयोग आपके योगदानों के लिये आपको श्रेय (attribution) देने के लिये किया जायेगा।",
        "prefs-help-email": "ई-मेल पता वैकल्पिक है, पर यदि आप अपना कूटशब्द भूल जाएँ तो इसके ज़रिए रीसेट किया जा सकता है।",
        "prefs-help-email-others": "आप अपनी पहचान उजागर किए बिना अन्य सदस्यों को अपने सदस्य या वार्ता पृष्ठ के द्वारा स्वयं से सम्पर्क करने दे सकते हैं।",
        "prefs-help-email-required": "ई-मेल पता आवश्यक है।",
        "right-deletedtext": "हटाया गया पाठ और हटाए गए अवतरणों के बीच अंतर देखें",
        "right-browsearchive": "हटाए गए पृष्ठ खोजें",
        "right-undelete": "पृष्ठ पुनर्स्थापित करें",
-       "right-suppressrevision": "पà¥\8dरबà¤\82धà¤\95à¥\8bà¤\82 à¤¸à¥\87 à¤\9bà¥\81पà¥\87 à¤¹à¥\81à¤\8f à¤\85वतरण à¤¦à¥\87à¤\96ें और पुनर्स्थापित करें",
+       "right-suppressrevision": "à¤\95िसà¥\80 à¤­à¥\80 à¤¸à¤¦à¤¸à¥\8dय à¤¸à¥\87 à¤\9bà¥\81पà¥\87 à¤¹à¥\81à¤\8f à¤\85वतरण à¤¦à¥\87à¤\96à¥\87à¤\82, à¤\9bà¥\81पायें और पुनर्स्थापित करें",
        "right-suppressionlog": "खासगी लॉग देखें",
        "right-block": "अन्य सदस्यों को सम्पादन करने से ब्लॉक करें",
        "right-blockemail": "सदस्यों को ई-मेल भेजने से ब्लॉक करें",
        "recentchanges-label-plusminus": "पृष्ठ आकार इस बाइट संख्या से बदला",
        "recentchanges-legend-heading": "'''कुंजी:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नए पन्नों की सूची]] को भी देखें)",
-       "rcnotefrom": "नीचे <strong>$2</strong> के बाद से (<strong>$1</strong> तक) हुए बदलाव दर्शाए गये हैं।",
+       "rcnotefrom": "नीचे <strong>$2</strong> के बाद से (<strong>$1</strong> तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।",
        "rclistfrom": "$3 $2 से नये बदलाव दिखाएँ",
        "rcshowhideminor": "छोटे बदलाव $1",
        "rcshowhideminor-show": "दिखाएँ",
        "uploaderror": "अपलोड त्रुटि",
        "upload-recreate-warning": "'''चेतावनी: उस नाम की फ़ाइल हटाई या स्थानान्तरित की जा चुकी है।'''\n\nइस पृष्ठ के हटाने और स्थानान्तरण के लॉग यहाँ सन्दर्भ के लिए दिये हैं:",
        "uploadtext": "फ़ाइल अपलोड करने के लिए नीचे दिए फ़ॉर्म का प्रयोग करें।\n[[Special:FileList|अपलोड की गई फ़ाइलों की सूची]] से आप पहले पहले अपलोड की गई फ़ाइलों को देख सकते हैं और उनमें खोज सकते हैं। दोबारा अपलोड की गई फ़ाइलों को [[Special:Log/upload|अपलोड सूची]] में देखें, और मिटाई फ़ाइलों के लिए [[Special:Log/delete|हटाने की सूची]] देखें।\n\nकिसी पृष्ठ में फ़ाइल का प्रयोग करने के लिए नीचे दिए गये उदाहरणों के अनुसार कड़ियाँ बनाएँ।\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' फ़ाइल का पूरा आकार प्रयोग करने के लिये\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' पृष्ठ में बाईं ओर फ़ाइल का 200 पिक्सेल चौड़ा अवतरण \"alt text\" विवरण के साथ एक बक्से में प्रयोग करने के लिये\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' बिना फ़ाइल का प्रयोग किये केवल उसकी कड़ी जोड़ने के लिये",
-       "upload-permitted": "अनुमतित फ़ाइल प्रकार: $1।",
-       "upload-preferred": "पसंदीदा फ़ाइल प्रकार: $1।",
-       "upload-prohibited": "प्रतिबंधिक फ़ाइल प्रकार: $1।",
+       "upload-permitted": "अनुमतित फ़ाइल  {{PLURAL:$2|प्रकार}}: $1।",
+       "upload-preferred": "पसंदीदा फ़ाइल {{PLURAL:$2|प्रकार}}: $1।",
+       "upload-prohibited": "प्रतिबंधिक फ़ाइल {{PLURAL:$2|प्रकार}}: $1।",
        "uploadlogpage": "अपलोड लॉग",
        "uploadlogpagetext": "नीचे हाल ही में अपलोड की गई फ़ाइलों की सूची है।\nकृपया और द्रैश्यिक विवरण के लिए [[Special:NewFiles|नई फ़ाइलों की गैलरी]] देखें।",
        "filename": "फ़ाइल का नाम",
        "nolicense": "कुछ भी नहीं चुना",
        "licenses-edit": "लाइसेंस विकल्प सम्पादन",
        "license-nopreview": "(झलक उपलब्ध नहीं है)",
-       "upload_source_url": " (एक वैध, सभी जगहों से उपलब्ध यू॰आर॰एल)",
-       "upload_source_file": " (आपके कम्प्यूटर से फ़ाइल)",
+       "upload_source_url": "(आपकी चुनी फ़ाइल एक वैध, सार्वजनिक रूप से उपलब्ध यू॰आर॰एल से)",
+       "upload_source_file": "(आपके कम्प्यूटर से चुनी आपकी फ़ाइल)",
        "listfiles-delete": "हटाएँ",
        "listfiles-summary": "यह विशेष पृष्ठ सभी अपलोड की गई फ़ाइलें दर्शाता है।",
        "listfiles_search_for": "मीडिया नाम के लिये खोजें:",
        "pageswithprop-submit": "खोजें",
        "doubleredirects": "दुगुने पुनर्निर्देश",
        "doubleredirectstext": "यह पृष्ठ उन पृष्ठों की सूची देता है जो अन्य पुनर्निर्देशित पृष्ठों की ओर पुनर्निर्देशित हैं।\nहर कतार में पहले और दूसरे पुनर्निर्देशन की कड़ियाँ, तथा दूसरे पुनर्निर्देशन का लक्ष्य भी है, आमतौर पर यही \"वास्तविक\" लक्ष्यित पृष्ठ होगा, और पहला पुनर्देशन वास्तव में इसी को लक्ष्यित होना चाहिए।\n<del>काटी गई</del> प्रविष्टियाँ सुलझा दी गई हैं।",
-       "double-redirect-fixed-move": "[[$1]] की जगह बदली जा चुकी है।\nअब यह [[$2]] की ओर पुनर्निर्देशित होता है।",
-       "double-redirect-fixed-maintenance": "[[$1]] à¤¸à¥\87 [[$2]] à¤\95à¥\8b à¤¦à¥\81à¤\97à¥\81नà¥\87 à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87श à¤\95à¥\8b ठीक कर रहा है।",
-       "double-redirect-fixer": "पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन मिस्त्री",
+       "double-redirect-fixed-move": "[[$1]] की जगह बदली जा चुकी है।\nअब यह स्वतः [[$2]] की ओर पुनर्प्रेषित होता है।",
+       "double-redirect-fixed-maintenance": "[[$1]] à¤¸à¥\87 [[$2]] à¤\95à¥\8b à¤¦à¥\81à¤\97à¥\81नà¥\87 à¤ªà¥\81नरà¥\8dपà¥\8dरà¥\87षण à¤\95à¥\8b à¤°à¤\96रà¤\96ाव à¤\95ारà¥\8dय à¤®à¥\87à¤\82 à¤¸à¥\8dवतà¤\83 ठीक कर रहा है।",
+       "double-redirect-fixer": "पà¥\81नरà¥\8dपà¥\8dरà¥\87षण मिस्त्री",
        "brokenredirects": "टूटे हुए पुनर्निर्देशन पृष्ठ",
        "brokenredirectstext": "निम्नोक्त पुनर्निर्देशन नामौजूद पृष्ठों की ओर ले जाते हैं:",
        "brokenredirects-edit": "संपादित करें",
        "mywatchlist": "ध्यानसूची",
        "watchlistfor2": "$1 $2 के लिए",
        "nowatchlist": "आपकी ध्यानसूची में कोई भी पृष्ठ नहीं हैं।",
-       "watchlistanontext": "अपनी ध्यानसूची में मौजूद पृष्ठ देखने या फिर संपादित करने के लिये कॄपया $1 करें।",
+       "watchlistanontext": "अपनी ध्यानसूची में मौजूद पृष्ठ देखने या फिर संपादित करने के लिये कॄपया लॉग इन करें।",
        "watchnologin": "लॉग इन नहीं किया है",
        "addwatch": "ध्यानसूची में जोड़ें",
        "addedwatchtext": "आपकी [[Special:Watchlist|ध्यानसूची]] में \"[[:$1]]\" पृष्ठ जोड़ दिया गया है।\nभविष्य में इस पृष्ठ तथा इसके वार्ता पृष्ठ में होने वाले बदलाव आपकी ध्यानसूची में दिखेंगे।",
        "watchlist-details": "वार्ता पृष्ठों के अलावा {{PLURAL:$1|$1 पृष्ठ}} आपकी ध्यानसूची में हैं।",
        "wlheader-enotif": "ई-मेल नोटिफ़िकेशन सक्षम हैं।",
        "wlheader-showupdated": "पृष्ठ जो आपके द्वारा देखे जाने के बाद बदले गये हैं '''बोल्ड''' दिखेंगे।",
-       "wlnote": "$3 को $4 बजे तक पिछले '''$2''' {{PLURAL:$2|घंटे|घंटों}} में {{PLURAL:$1|हुआ एक|हुए '''$1'''}} परिवर्तन निम्न {{PLURAL:$1|है|हैं}}।",
+       "wlnote": "$3 को $4 बजे तक पिछले <strong>$2</strong> {{PLURAL:$2|घंटे|घंटों}} में {{PLURAL:$1|हुआ एक|हुए <strong>$1</strong>}} परिवर्तन निम्न {{PLURAL:$1|है|हैं}}।",
        "wlshowlast": "पिछले $1 घंटे $2 दिन  देखें",
        "watchlist-options": "ध्यानसूची विकल्प",
        "watching": "ध्यान दे रहे हैं...",
        "exbeforeblank": "खाली करने से पहले पाठ था: '$1'",
        "delete-confirm": "\"$1\" को हटाएँ",
        "delete-legend": "हटाएँ",
-       "historywarning": "''' चेतावनी: ''' आप जो पृष्ठ हटाने जा रहे हैं उसके इतिहास में लगभग $1 {{PLURAL:$1|अवतरण}} हैं:",
+       "historywarning": "<strong>चेतावनी:<strong> आप जो पृष्ठ हटाने जा रहे हैं उसके इतिहास में $1 {{PLURAL:$1|अवतरण}} हैं:",
        "confirmdeletetext": "आप एक पृष्ठ को उसके सभी अवतरणों सहित हटाने जा रहे हैं।\nजाँच लें कि आप ये करना चाहते हैं, आप इसके पर्निआमों से अवगत हैं, और आप ये [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार कर रहे हैं।",
        "actioncomplete": "कार्य पूर्ण",
        "actionfailed": "क्रिया विफल",
        "autoblockid": "स्वतः अवरोध #$1",
        "block": "उपयोक्ता को अवरोधित करें।",
        "unblock": "उपयोक्ता पर अवरोधण हटाएँ",
-       "blockip": "अवरोधित करें",
+       "blockip": "{{GENDER:$1|सदस्य|सदस्या}} अवरोधित करें",
        "blockip-legend": "सदस्य को ब्लॉक करें",
        "blockiptext": "विशिष्ठ IP पते अथवा सदस्य नाम को लिखने के अधिकार से बाध्य करने के लिए निम्न पत्र का प्रयोग करें।\nयह सिर्फ बर्बरता को रोकने के लिए ही किया जाना चाहिए, और [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार ही करना चाहिए।\nनीचे विशिष्ठ कारण भी लिखें (उदाहरण के लिए, सटीक पृष्ठों को दर्शाते हुए, जिनमें बर्बरता की गई हो)।",
        "ipaddressorusername": "आईपी एड्रेस या सदस्यनाम:",
        "ipb-unblock-addr": "$1 को अनब्लॉक करें",
        "ipb-unblock": "सदस्य अथवा आईपी एड्रेस को अनब्लॉक करें",
        "ipb-blocklist": "सद्य ब्लॉक देखें",
-       "ipb-blocklist-contribs": "$1 के लिए योगदान",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}} के लिए योगदान",
        "unblockip": "सदस्य को अनब्लॉक करें",
        "unblockiptext": "पहले ब्लॉक किये हुए आईपी एड्रेस या सदस्यनाम को अनब्लॉक करने के लिये नीचे दिया गया फार्म भरें।",
        "ipusubmit": "यह अवरोध हटाएँ",
        "import-upload": "XML डाटा अपलोड करें",
        "import-token-mismatch": "सत्र सामग्री खो गई है। \nकृपया पुनः प्रयास करें।",
        "import-invalid-interwiki": "इस विकि से आयात नहीं हो सकता है।",
-       "import-error-edit": "पृष्ठ \" $1 \" आयातित नहीं किया जासकता है क्योंकि आपको उसे संपादित करने की अनुमति नहीं हैं।",
-       "import-error-create": "पृष्ठ \" $1 \" आयातित नहीं है क्योंकि आपको उसे बनाने की अनुमति नहीं हैं।",
+       "import-error-edit": "पृष्ठ \"$1\" आयात नहीं किया गया है क्योंकि आपको उसे संपादित करने की अनुमति नहीं हैं।",
+       "import-error-create": "पृष्ठ \"$1\" आयात नहीं किया गया है क्योंकि आपको उसे बनाने की अनुमति नहीं हैं।",
        "import-error-interwiki": "पृष्ठ \"$1\" आयात नहीं किया गया है क्योंकि इसका नाम अंतरविकी कड़ियाँ बनाने के लिए आरक्षित है।",
        "import-error-special": "पृष्ठ \"$1\" आयात नहीं किया गया है क्योंकि यह एक ऐसे विशेष नामस्थान के अंतर्गत आता है जिसमें पृष्ठ नहीं बनाए जा सकते हैं।",
-       "import-error-invalid": "पà¥\83षà¥\8dठ \"$1\" à¤\86यात à¤¨à¤¹à¥\80à¤\82 à¤\95िया à¤\97या à¤¹à¥\88 à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤\87सà¤\95ा à¤¨à¤¾à¤® अमान्य है।",
+       "import-error-invalid": "पà¥\83षà¥\8dठ \"$1\" à¤\86यात à¤¨à¤¹à¥\80à¤\82 à¤\95िया à¤\97या à¤¹à¥\88 à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤\87सà¤\95ा à¤\86यात à¤ªà¤¶à¥\8dà¤\9aात à¤\9cà¥\8b à¤¨à¤¾à¤® à¤¹à¥\8bता à¤µà¤¹ à¤\87स à¤µà¤¿à¤\95à¥\80 à¤ªà¤° अमान्य है।",
        "import-options-wrong": "गलत {{PLURAL:$2|विकल्प}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "दिया गया उपसर्ग पृष्ठ शीर्षक अमान्य है।",
        "import-rootpage-nosubpage": "दिए गए उपसर्ग पृष्ठ \"$1\" के नामस्थान में उप-पृष्ठ नहीं बनाए जा सकते।",
        "importlogpage": "आयात सूची",
        "importlogpagetext": "अन्य विकियों से प्रबन्धकों द्वारा किए गए सम्पादन इतिहास के साथ होने वाले पृष्ठों का आयात।",
        "import-logentry-upload": "सञ्चिका अपलोड करके [[$1]] का आयात किया",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|अवतरण|अवतरण}}",
+       "import-logentry-upload-detail": "$1 अवतरण आयात {{PLURAL:$1|किया गया|किये गए}}",
        "import-logentry-interwiki": "ट्रान्सविकि कर दिया $1",
-       "import-logentry-interwiki-detail": "$2 से $1 {{PLURAL:$1|अवतरण|अवतरण}}",
+       "import-logentry-interwiki-detail": "$2 से $1 अवतरण आयात {{PLURAL:$1|किया गया|किये गए}}",
        "javascripttest": "जावास्क्रिप्ट परीक्षण",
        "javascripttest-pagetext-noframework": "यह पृष्ठ जावास्क्रिप्ट परीक्षण चलाने के लिए है।",
        "javascripttest-pagetext-unknownframework": "अज्ञात परीक्षण ढाँचा \"$1\"",
        "tooltip-pt-mycontris": "आपके योगदानों की सूची",
        "tooltip-pt-login": "आपको सत्रारम्भ करने के लिए प्रोत्साहित किया जाता है; लेकिन यह अनिवार्य नहीं है",
        "tooltip-pt-logout": "सत्रांत",
+       "tooltip-pt-createaccount": "हमारा सुझाव है की आप खाता बनाएँ और लॉगिन करें, परन्तु यह अनिवार्य नहीं है",
        "tooltip-ca-talk": "सामग्री पृष्ठ के बारे में वार्तालाप",
        "tooltip-ca-edit": "आप यह पृष्ठ बदल सकते हैं।\nकृपया बदलाव संजोने से पहले झलक देखें।",
        "tooltip-ca-addsection": "नया विभाग आरम्भ करें",
        "tooltip-ca-unwatch": "यह पृष्ठ अपने ध्यानसूचीसे हटाएं",
        "tooltip-search": "{{SITENAME}} में खोजें",
        "tooltip-search-go": "अगर इस शीर्षक का पृष्ठ हैं तो उसपर चलें",
-       "tooltip-search-fulltext": "à¤\87स à¤µà¤¾à¤\95à¥\8dयाà¤\82श à¤\95à¥\8b à¤ªà¤¨à¥\8dनों में खोजें",
-       "tooltip-p-logo": "मुख पृष्ठ",
+       "tooltip-search-fulltext": "à¤\87स à¤ªà¤¾à¤  à¤\95à¥\8b à¤ªà¥\83षà¥\8dठों में खोजें",
+       "tooltip-p-logo": "मुख पृष्ठ पर जाएँ",
        "tooltip-n-mainpage": "मुखपृष्ठ पर जाएँ",
        "tooltip-n-mainpage-description": "मुखपृष्ठ पर जाएँ",
        "tooltip-n-portal": "परियोजना के बारे में, आप क्या कर सकतें हैं, सहायता कहाँ से लें",
        "tooltip-feed-atom": "इस पृष्ठ की अणु फ़ीड",
        "tooltip-t-contributions": "इस सदस्यके योगदानकी सूची देखियें",
        "tooltip-t-emailuser": "इस सदस्य को इमेल भेजें",
-       "tooltip-t-upload": "सà¤\82à¤\9aिà¤\95ा à¤\9aढ़ाà¤\8fà¤\81",
+       "tooltip-t-upload": "फ़ाà¤\87ल à¤\85पलà¥\8bड à¤\95रà¥\87à¤\82",
        "tooltip-t-specialpages": "सभी विशेष पृष्ठों की सूची",
        "tooltip-t-print": "इस पृष्ठका छपानेलायक अवतरण",
        "tooltip-t-permalink": "पृष्ठ के इस संस्करण की स्थायी कड़ी",
        "version-license": "मीडियाविकि अनुज्ञापत्र",
        "version-ext-license": "लाइसेंस",
        "version-ext-colheader-name": "एक्सटेंशन",
+       "version-skin-colheader-name": "त्वचा",
        "version-ext-colheader-version": "संस्करण",
        "version-ext-colheader-license": "लाइसेंस",
        "version-ext-colheader-description": "विवरण",
        "version-poweredby-credits": "यह विकि  '''[https://www.mediawiki.org/ MediaWiki]''' द्वारा संचालित है, कॉपीराइट © 2001 - $1  $2 ।",
        "version-poweredby-others": "अन्य",
        "version-poweredby-translators": "translatewiki.net अनुवादक",
+       "version-credits-summary": "हम निम्न व्यक्तियों द्वारा [[Special:Version|मीडियाविकि]] में किये गए योगदानों को सराहते हैं।",
        "version-software": "इन्स्टॉल की हुई प्रणाली",
        "version-software-product": "प्रोडक्ट",
        "version-software-version": "अवतरण",
        "version-entrypoints-header-url": "यू॰आर॰एल",
+       "version-libraries-version": "संस्करण",
        "redirect-submit": "जायें",
        "redirect-lookup": "ढूँढें:",
        "redirect-value": "मूल्य:",
        "compare-revision-not-exists": "आपके द्वारा निर्दिष्ट संशोधन मौजूद नहीं है।",
        "dberr-problems": "क्षमा करें! इस जालस्थल को कुछ तकनीकी परेशानियों का सामना करना पड़ रहा है।",
        "dberr-again": "कुछ मिनट रुकने के बाद फिर से चढ़ाएँ।",
-       "dberr-info": "(à¤\86à¤\81à¤\95ड़ाà¤\95à¥\8bष à¤¸à¥\87वà¤\95 à¤¸à¥\87 à¤¸à¤\82परà¥\8dà¤\95 à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8b à¤ªà¤¾ à¤°à¤¹à¤¾:$1)",
-       "dberr-info-hidden": "(डाà¤\9fाबà¥\87स à¤¸à¤°à¥\8dवर à¤¸à¥\87 à¤¸à¤\82परà¥\8dà¤\95 à¤¨à¤¹à¥\80à¤\82 à¤\95िया à¤\9cा à¤¸à¤\95ा)",
+       "dberr-info": "(डाà¤\9fाबà¥\87स à¤¸à¥\87 à¤¸à¤\82परà¥\8dà¤\95 à¤¨à¤¹à¥\80à¤\82 à¤¹à¥\8b à¤ªà¤¾ à¤°à¤¹à¤¾: $1)",
+       "dberr-info-hidden": "(डाटाबेस से संपर्क नहीं किया जा सका)",
        "dberr-usegoogle": "इस बीच आप गूगल से खोज करने की कोशिश कर सकते हैं।",
        "dberr-outofdate": "ध्यान दे, हो सकता है कि हमारी सामग्री से संबंधित उनकी सूची बासी हो।",
        "dberr-cachederror": "यह अनुरोधित पन्ने की संचित प्रति है, हो सकता है यह ताज़ी न हो।",
        "logentry-rights-rights": "$1 ने $3 के सदस्य समूह $4 से बदलकर $5 {{GENDER:$2|किये}}",
        "logentry-rights-rights-legacy": "$1 ने $3 के सदस्य समूह {{GENDER:$2|बदले}}",
        "logentry-rights-autopromote": "$1 के सदस्य समूह स्वतः $4 से बदलकर $5 {{GENDER:$2|किये}} गए",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ने}} $3 अपलोड किया",
        "rightsnone": "(कोई नहीं)",
        "revdelete-summary": "संपादन सारांश",
        "feedback-bugornote": "यदि आप किसी तकनीकी परेशानी को विस्तार से समझाने के लिये तैयार हैं तो कृपया [$1 बग फ़ाइल करें]।\nयदि नहीं, तो आप नीचे दिये सरल फ़ॉर्म का प्रयोग कर सकते हैं। आपकी टिप्पणी आपके सदस्य नाम और आपके ब्राउज़र के नाम के सहित \"[$3 $2]\" पृष्ठ में जोड़ दी जाएगी।",
index 4fd9066..76f75c0 100644 (file)
@@ -11,7 +11,8 @@
                        "Thakurji",
                        "아라",
                        "Soul Train",
-                       "Filipinayzd"
+                       "Filipinayzd",
+                       "SNN95"
                ]
        },
        "tog-underline": "Jorr ke niche line khicho:",
        "logentry-merge-merge": "$1 {{GENDER:$2|merged}} $3 into $4 (revisions up to $5)",
        "logentry-move-move": "$1 {{GENDER:$2|moved}} panna $3 se $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|moved}} panna $3 se $4 without leaving a redirect",
-       "logentry-move-move_redir": "$1 {{GENDER:$2|moved}} panna $3 se $4 over redirect",
-       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|moved}} panna $3 se $4 over a redirect without leaving a redirect",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|memindahkan}} laman $3 kepada $4 menggunakan lencongan",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|memindahkan}} laman $3 kepada $4 melalui lencongan tanpa meninggalkan perlencongan",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|marked}} revision $4 panna $3 ke patrol karaa gais hae",
        "logentry-patrol-patrol-auto": "$1 automatically {{GENDER:$2|marked}} revision $4 panna $3 ke patrol karis hae",
        "logentry-newusers-newusers": "Sadasya $1 ke account  {{GENDER:$2|created}} ke banawa gais hae",
index 0741423..0fd4291 100644 (file)
        "prefs-personal": "Podaci o suradniku",
        "prefs-rc": "Nedavne promjene i kratki članci",
        "prefs-watchlist": "Praćene stranice",
+       "prefs-editwatchlist": "Uredi popis praćenja",
+       "prefs-editwatchlist-label": "Uredi stavke na popisu praćenja:",
+       "prefs-editwatchlist-edit": "vidi i ukloni stavke s popisa praćenja",
+       "prefs-editwatchlist-raw": "uredi popis praćenih stranica u okviru za uređivanje",
+       "prefs-editwatchlist-clear": "očisti popis praćenja",
        "prefs-watchlist-days": "Broj dana koji će se prikazati na popisu praćenja:",
        "prefs-watchlist-days-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
        "prefs-watchlist-edits": "Broj uređivanja koji će se prikazati na proširenom popisu praćenja:",
        "watchlistedit-raw-done": "Vaš popis praćenja je snimljen.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 stranica je dodana|$1 stranice su dodane}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 stranica je uklonjena|$1 stranice su ukonjene}}:",
+       "watchlistedit-clear-explain": "Sve stavke s popisa praćenja će biti izbrisane",
        "watchlisttools-view": "Pregled promjena praćenih stranica",
        "watchlisttools-edit": "Pregled i uređivanje praćenih stranica",
        "watchlisttools-raw": "Uređivanje praćenih stranica u okviru za uređivanje",
index 4fd1196..44a93f1 100644 (file)
        "previewconflict": "Ez az előnézet a felső szerkesztődobozban levő szöveg mentés utáni megfelelőjét mutatja.",
        "session_fail_preview": "'''Az elveszett munkamenetadatok miatt sajnos nem tudtuk feldolgozni a szerkesztésedet.\nKérjük próbálkozz újra!\nAmennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni!'''",
        "session_fail_preview_html": "'''Az elveszett munkamenetadatok miatt nem tudtuk feldolgozni a szerkesztésedet.'''\n\n''Mivel a wikiben engedélyezett a nyers HTML-kód használata, az előnézet el van rejtve a JavaScript-alapú támadások megakadályozása céljából.''\n\n'''Ha ez egy normális szerkesztési kísérlet, akkor próbálkozz újra. Amennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni!''' (a változtatásaidat mentsd el magadnak, különben elvesznek!)",
-       "token_suffix_mismatch": "'''A szerkesztésedet elutasítottuk, mert a kliensprogramod megváltoztatta a központozó karaktereket\na szerkesztési tokenben. A szerkesztés azért lett visszautasítva, hogy megelőzzük a lap szövegének sérülését.\nEz a probléma akkor fordulhat elő, ha hibás web-alapú proxyszolgáltatást használsz.'''",
+       "token_suffix_mismatch": "<strong>A szerkesztésedet elutasítottuk, mert a kliensprogramod megváltoztatta a központozó karaktereket\na szerkesztési tokenben.</strong>\nA szerkesztés azért lett visszautasítva, hogy megelőzzük a lap szövegének sérülését.\nEz a probléma akkor fordulhat elő, ha hibás web-alapú proxyszolgáltatást használsz.",
        "edit_form_incomplete": "'''A szerkesztési űrlap egyes részei nem érkeztek meg a szerverre; ellenőrizd, hogy a szerkesztés sértetlen-e, majd próbáld újra.'''",
        "editing": "$1 szerkesztése",
        "creating": "$1 létrehozása",
        "enotif_subject_created": "$2 létrehozta a(z) $1 {{SITENAME}} oldalt",
        "enotif_subject_moved": "$2 átmozgatta a $1 {{SITENAME}} oldalt.",
        "enotif_subject_restored": "$2 visszaállította a $1 {{SITENAME}} oldalt.",
-       "enotif_subject_changed": "$2 megváltoztatta a(z) $1 {{SITENAME}} oldalt",
+       "enotif_subject_changed": "$2 megváltoztatta a(z) $1 {{SITENAME}}-oldalt",
        "enotif_body_intro_deleted": "$2 törölte a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd $3.",
        "enotif_body_intro_created": "$2 létrehozta a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd az aktuális verziót itt: $3.",
        "enotif_body_intro_moved": "$2 átmozgatta a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd az aktuális verziót itt: $3.",
        "enotif_body_intro_restored": "$2 visszaállította a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd az aktuális verziót itt: $3.",
-       "enotif_body_intro_changed": "$2 megváltoztatta a $1 {{SITENAME}} oldalt $PAGEEDITDATE-kor, lásd az aktuális verziót itt: $3.",
+       "enotif_body_intro_changed": "$2 megváltoztatta a $1 {{SITENAME}}-oldalt $PAGEEDITDATE dátumon, az aktuális verziót lásd itt: $3.",
        "enotif_lastvisited": "Lásd a $1 lapot az utolsó látogatásod óta történt változtatásokért.",
        "enotif_lastdiff": "Lásd a $1 lapot ezen változtatás megtekintéséhez.",
        "enotif_anon_editor": "$1 névtelen felhasználó",
        "tooltip-pt-mycontris": "A közreműködéseid listája",
        "tooltip-pt-login": "Bejelentkezni javasolt, de nem kötelező.",
        "tooltip-pt-logout": "Kijelentkezés",
+       "tooltip-pt-createaccount": "Arra bíztatunk, hogy hozz létre egy fiókot, és jelentkezz be, azonban ez nem kötelező",
        "tooltip-ca-talk": "Az oldal tartalmának megvitatása",
        "tooltip-ca-edit": "Te is szerkesztheted ezt az oldalt. Mentés előtt használd az előnézet gombot.",
        "tooltip-ca-addsection": "Új szakasz nyitása",
        "logentry-rights-rights": "$1 megváltoztatta $3 csoporttagságát erről: $4 erre: $5",
        "logentry-rights-rights-legacy": "$1 megváltoztatta $3 csoporttagságát",
        "logentry-rights-autopromote": "$1 automatikusan előléptetve erről: $4 erre: $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|feltöltötte}} ezt: $3",
        "rightsnone": "(semmi)",
        "revdelete-summary": "a szerkesztési összefoglalóját",
        "feedback-bugornote": "Ha kész technikai problémát részletesen leírni, akkor kérjük [$1 jelents egy hibát]. Egyébként használd az alábbi űrlapot. A hozzászólásod a „[$3 $2]” laphoz kerül felvételre, a szerkesztő neveddel és böngésződ típusával együtt.",
index 4fb7f1e..b6a6bfb 100644 (file)
        "enhancedrc-history": "historia",
        "recentchanges": "Modificationes recente",
        "recentchanges-legend": "Optiones del modificationes recente",
-       "recentchanges-summary": "Seque le plus recente modificationes a {{SITENAME}} in iste pagina.",
+       "recentchanges-summary": "Seque le modificationes le plus recente in {{SITENAME}} in iste pagina.",
        "recentchanges-noresult": "Nulle modification facite in le periodo specificate que corresponde a iste criterios.",
        "recentchanges-feed-description": "Seque le modificationes le plus recente al wiki in iste syndication.",
        "recentchanges-label-newpage": "Iste modification creava un nove pagina",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide etiam le [[Special:NewPages|lista de nove paginas]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "rcnotefrom": "Ecce le {{PLURAL:$5|modification|modificationes}} a partir del <strong>$3 a $4</strong> (usque a <strong>$1</strong> entratas monstrate).",
-       "rclistfrom": "Monstrar nove modificationes a partir de $3 $2",
+       "rclistfrom": "Monstrar nove modificationes a partir del $3 a $2",
        "rcshowhideminor": "$1 modificationes minor",
        "rcshowhideminor-show": "Monstrar",
        "rcshowhideminor-hide": "Celar",
        "undelete-error-long": "Se incontrava errores durante le restauration del file:\n\n$1",
        "undelete-show-file-confirm": "Es tu secur de voler vider un version delite del file \"<nowiki>$1</nowiki>\" del $2 a $3?",
        "undelete-show-file-submit": "Si",
-       "namespace": "Spatio de nomine:",
+       "namespace": "Spatio de nomines:",
        "invert": "Inverter selection",
        "tooltip-invert": "Marca iste quadrato pro celar le modificationes in paginas intra le spatio de nomines seligite (e le spatio de nomines associate, si tal option es seligite)",
        "tooltip-whatlinkshere-invert": "Marca iste quadrato pro celar ligamines de paginas in le spatio de nomines seligite.",
        "sp-contributions-toponly": "Monstrar solmente le versiones recente",
        "sp-contributions-newonly": "Monstrar solmente le modificationes que es creationes de pagina",
        "sp-contributions-submit": "Cercar",
-       "whatlinkshere": "Referentias a iste pagina",
+       "whatlinkshere": "Paginas ligate a iste",
        "whatlinkshere-title": "Paginas con ligamines verso $1",
        "whatlinkshere-page": "Pagina:",
        "linkshere": "Le sequente paginas contine ligamines a '''[[:$1]]''':",
        "tooltip-search": "Cercar in {{SITENAME}}",
        "tooltip-search-go": "Visitar un pagina con iste nomine exacte si existe",
        "tooltip-search-fulltext": "Cercar iste texto in le paginas",
-       "tooltip-p-logo": "Pagina principal",
+       "tooltip-p-logo": "Visitar le pagina principal",
        "tooltip-n-mainpage": "Visitar le pagina principal",
        "tooltip-n-mainpage-description": "Visitar le pagina principal",
        "tooltip-n-portal": "A proposito del projecto, que tu pote facer, ubi trovar cosas",
        "thumbsize": "Dimension del miniaturas:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|pagina|paginas}}",
        "file-info": "grandor del file: $1, typo MIME: $2",
-       "file-info-size": "$1 × $2 pixel, grandor del file: $3, typo MIME: $4",
+       "file-info-size": "$1 × $2 pixels, dimension del file: $3, typo MIME: $4",
        "file-info-size-pages": "$1 × $2 pixels, dimension del file: $3, typo MIME: $4, $5 {{PLURAL:$5|pagina|paginas}}",
        "file-nohires": "Non disponibile in resolution plus alte.",
        "svg-long-desc": "File SVG, dimensiones nominal: $1 × $2 pixels, grandor del file: $3",
index b3e3d0f..ebe565b 100644 (file)
        "search": "Pencarian",
        "searchbutton": "Cari",
        "go": "Tuju ke",
-       "searcharticle": "Tuju ke",
+       "searcharticle": "Lanjut",
        "history": "Riwayat halaman",
        "history_short": "Versi terdahulu",
        "updatedmarker": "diubah sejak kunjungan terakhir saya",
        "talkpage": "Bicarakan halaman ini",
        "talkpagelinktext": "bicara",
        "specialpage": "Halaman istimewa",
-       "personaltools": "Peralatan pribadi",
+       "personaltools": "Perkakas pribadi",
        "articlepage": "Lihat halaman isi",
        "talk": "Pembicaraan",
        "views": "Tampilan",
-       "toolbox": "Peralatan",
+       "toolbox": "Perkakas",
        "userpage": "Lihat halaman pengguna",
        "projectpage": "Lihat halaman proyek",
        "imagepage": "Lihat halaman berkas",
        "redirectedfrom": "(Dialihkan dari $1)",
        "redirectpagesub": "Halaman pengalihan",
        "redirectto": "Mengalihkan ke:",
-       "lastmodifiedat": "Halaman ini terakhir diubah pada $2, $1.",
+       "lastmodifiedat": "Halaman ini terakhir diubah pada $1, pukul $2.",
        "viewcount": "Halaman ini telah diakses sebanyak {{PLURAL:$1|$1 kali}}.<br />",
        "protectedpage": "Halaman yang dilindungi",
-       "jumpto": "Langsung ke:",
+       "jumpto": "Lompat ke:",
        "jumptonavigation": "navigasi",
        "jumptosearch": "cari",
        "view-pool-error": "Maaf, server sedang sibuk pada saat ini.\nTerlalu banyak pengguna berusaha melihat halaman ini.\nTunggu sebentar sebelum Anda mencoba lagi mengakses halaman ini.\n\n$1",
        "nstab-main": "Halaman",
        "nstab-user": "Pengguna",
        "nstab-media": "Media",
-       "nstab-special": "Istimewa",
+       "nstab-special": "Halaman Istimewa",
        "nstab-project": "Proyek",
        "nstab-image": "Berkas",
        "nstab-mediawiki": "Pesan",
        "viewyourtext": "Anda dapat melihat atau menyalin sumber dari '''suntingan Anda''' ke halaman ini:",
        "protectedinterface": "Halaman ini memuat teks antarmuka untuk perangkat lunak pada wiki ini, dan dilindungi terhadap penyalahgunaan. Untuk menambah atau mengubah terjemahan pada semua wiki, harap gunakan [//translatewiki.net/ translatewiki.net], proyek pelokalan MediaWiki.",
        "editinginterface": "<strong>Peringatan:</strong> Anda menyunting suatu halaman yang digunakan untuk menyediakan teks antarmuka bagi perangkat lunak.\nPerubahan pada halaman ini akan memengaruhi tampilan pada antarmuka pengguna untuk pengguna lain pada wiki ini.",
-       "translateinterface": "Untuk menambah atau mengubah terjemahan semua wiki, mohon gunakan [//translatewiki.net/ translatewiki.net], Proyek pelokalan MediaWiki.",
+       "translateinterface": "Untuk menambah atau mengubah terjemahan semua wiki, mohon gunakan [//translatewiki.net/ translatewiki.net], proyek pelokalan MediaWiki.",
        "cascadeprotected": "Halaman ini telah dilindungi dari penyuntingan karena disertakan di {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi \"runtun\":\n$2",
        "namespaceprotected": "Anda tak memiliki hak akses untuk menyunting halaman di ruang nama '''$1'''.",
        "customcssprotected": "Anda tidak memiliki izin untuk menyunting halaman CSS ini, karena berisi pengaturan pribadi pengguna lain.",
        "preview": "Pratayang",
        "showpreview": "Lihat pratayang",
        "showdiff": "Lihat perubahan",
-       "blankarticle": "<strong>Peringatan:</strong> Halaman yang akan Anda buat tidak berisi apa-apa.\nJika Anda mengeklik \"{{int:savearticle}}\" sekali lagi, halaman ini akan dibuat tanpa adanya isi.",
+       "blankarticle": "<strong>Peringatan:</strong> Halaman yang akan Anda buat tidak berisi apa-apa.\nJika Anda mengklik \"{{int:savearticle}}\" sekali lagi, halaman ini akan dibuat tanpa ada isi.",
        "anoneditwarning": "<strong>Peringatan:</strong> Anda sedang tidak masuk log. Alamat IP Anda akan terlihat oleh publik jika Anda melakukan suatu perubahan. Jika Anda <strong>[$1 masuk log]</strong> atau <strong>[$2 membuat akun]</strong>, suntingan Anda akan diatribusikan kepada nama pengguna Anda, beserta berbagai keuntungan lainnya.",
        "anonpreviewwarning": "''Anda belum masuk log. Menyimpan halaman akan menyebabkan alamat IP Anda tercatat pada riwayat suntingan laman ini.''",
        "missingsummary": "'''Peringatan:''' Anda tidak memasukkan ringkasan penyuntingan. Jika Anda kembali menekan tombol Simpan, suntingan Anda akan disimpan tanpa ringkasan penyuntingan.",
-       "selfredirect": "<strong>Peringatan:</strong> Anda akan mengalihkan halaman ini balik ke halaman ini.\nAnda bisa jadi telah menuliskan tujuan pengalihan yang salah, atau telah menyunting halaman yang salah.\nJika Anda mengeklik \"{{int:savearticle}}\" sekali lagi, halaman pengalihan akan dibuat.",
+       "selfredirect": "<strong>Peringatan:</strong> Anda mengalihkan halaman ini kembali ke halaman semula.\nAnda bisa jadi telah memberikan tujuan pengalihan yang salah, atau telah menyunting halaman yang salah.\nJika Anda mengeklik \"{{int:savearticle}}\" sekali lagi, halaman pengalihan akan dibuat.",
        "missingcommenttext": "Harap masukkan komentar di bawah ini.",
        "missingcommentheader": "''Peringatan:''' Anda belum memberikan subjek atau judul untuk komentar Anda. Jika Anda kembali menekan \"{{int:savearticle}}\", suntingan Anda akan disimpan tanpa komentar tersebut.",
        "summary-preview": "Pratayang ringkasan:",
        "searchprofile-images-tooltip": "Pencarian berkas",
        "searchprofile-everything-tooltip": "Pencarian di seluruh situs (termasuk halaman pembicaraan)",
        "searchprofile-advanced-tooltip": "Pencarian di ruang nama tertentu",
-       "search-result-size": "$1 ({{PLURAL:$2|1 kata|$2 kata}})",
+       "search-result-size": "$1 ({{PLURAL:$2|$2 kata}})",
        "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})",
        "search-redirect": "(pengalihan $1)",
        "search-section": "(bagian $1)",
        "recentchanges-label-bot": "Suntingan ini dilakukan oleh bot",
        "recentchanges-label-unpatrolled": "Suntingan ini belum terpatroli",
        "recentchanges-label-plusminus": "Perubahan ukuran halaman dalam bita",
-       "recentchanges-legend-heading": "'''Legenda:'''",
+       "recentchanges-legend-heading": "'''Keterangan:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])",
        "rcnotefrom": "Di bawah ini adalah {{PLURAL:$5|perubahan}} sejak <strong>$3, $4</strong> (ditampilkan sampai <strong>$1</strong> perubahan).",
        "rclistfrom": "Perlihatkan perubahan terbaru sejak $3 $2",
        "rcshowhidebots": "$1 bot",
        "rcshowhidebots-show": "Tampilkan",
        "rcshowhidebots-hide": "Sembunyikan",
-       "rcshowhideliu": "$1 pengguna-pengguna terdaftar",
+       "rcshowhideliu": "$1 pengguna terdaftar",
        "rcshowhideliu-show": "Tampilkan",
        "rcshowhideliu-hide": "Sembunyikan",
        "rcshowhideanons": "$1 pengguna anon",
        "rc_categories": "Batasi sampai kategori (dipisah dengan \"|\")",
        "rc_categories_any": "Apa pun",
        "rc-change-size": "$1",
-       "rc-change-size-new": "$1 {{PLURAL:$1|bita|bita}} setelah perubahan",
+       "rc-change-size-new": "$1 {{PLURAL:$1|bita}} setelah perubahan",
        "newsectionsummary": "/* $1 */ bagian baru",
        "rc-enhanced-expand": "Tampilkan rincian",
        "rc-enhanced-hide": "Sembunyikan rincian",
        "recentchangeslinked-feed": "Perubahan terkait",
        "recentchangeslinked-toolbox": "Perubahan terkait",
        "recentchangeslinked-title": "Perubahan yang terkait dengan \"$1\"",
-       "recentchangeslinked-summary": "Halaman istimewa ini memberikan daftar perubahan terakhir pada halaman-halaman terkait. Halaman yang Anda pantau ditandai dengan '''cetak tebal'''.",
+       "recentchangeslinked-summary": "Ini adalah daftar perubahan pada halaman yang terkait ke halaman yang spesifik (atau bagian dari kategori yang spesifik).\nHalaman pada [[Special:Watchlist|daftar pantauan Anda]] terlihat <strong>dicetak tebal</strong>.",
        "recentchangeslinked-page": "Nama halaman:",
        "recentchangeslinked-to": "Perlihatkan perubahan dari halaman-halaman yang terhubung dengan halaman yang disajikan",
        "upload": "Unggah berkas",
        "license": "Jenis lisensi:",
        "license-header": "Jenis lisensi",
        "nolicense": "Tidak ada yang dipilih",
-       "licenses-edit": "Sunting opsi lisensi",
+       "licenses-edit": "Sunting pilihan lisensi",
        "license-nopreview": "(Pratayang tak tersedia)",
        "upload_source_url": "(Anda pilih berkas dari URL valid yang dapat diakses publik)",
        "upload_source_file": "(Anda pilih berkas dari komputer Anda)",
        "filehist-filesize": "Besar berkas",
        "filehist-comment": "Komentar",
        "imagelinks": "Pranala berkas",
-       "linkstoimage": "{{PLURAL:$1||}}$1 halaman berikut memiliki pranala ke berkas ini:",
+       "linkstoimage": "{{PLURAL:$1|Halaman berikut}} memiliki pranala ke berkas ini:",
        "linkstoimage-more": "Lebih dari $1 {{PLURAL:$1|halaman|halaman}} memiliki pranala ke berkas ini.\nDaftar berikut menampilkan {{PLURAL:$1|halaman dengan pranala langsung|$1 halaman dengan pranala langsung}} ke berkas ini.\nJuga tersedia [[Special:WhatLinksHere/$2|daftar selengkapnya]].",
        "nolinkstoimage": "Tidak ada halaman yang memiliki pranala ke berkas ini.",
        "morelinkstoimage": "Lihat [[Special:WhatLinksHere/$1|pranala lainnya]] ke berkas ini.",
        "withoutinterwiki-legend": "Prefiks",
        "withoutinterwiki-submit": "Tampilkan",
        "fewestrevisions": "Halaman dengan perubahan tersedikit",
-       "nbytes": "$1 {{PLURAL:$1|bita|bita}}",
+       "nbytes": "$1 {{PLURAL:$1|bita}}",
        "ncategories": "$1 {{PLURAL:$1|kategori|kategori}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki}}",
        "nlinks": "$1 {{PLURAL:$1|pranala|pranala}}",
        "tooltip-pt-mycontris": "Daftar kontribusi Anda",
        "tooltip-pt-login": "Anda disarankan untuk masuk log, meskipun hal itu tidak diwajibkan.",
        "tooltip-pt-logout": "Keluar log",
+       "tooltip-pt-createaccount": "Anda dianjurkan untuk membuat akun dan masuk log; meskipun, hal itu tidak diwajibkan",
        "tooltip-ca-talk": "Pembicaraan halaman isi",
        "tooltip-ca-edit": "Anda dapat menyunting halaman ini. Gunakan tombol pratayang sebelum menyimpan",
        "tooltip-ca-addsection": "Mulai bagian baru",
        "tooltip-ca-viewsource": "Halaman ini dilindungi. Anda hanya dapat melihat sumbernya.",
-       "tooltip-ca-history": "Revisi-revisi sebelumnya dari halaman ini.",
+       "tooltip-ca-history": "Revisi sebelumnya dari halaman ini.",
        "tooltip-ca-protect": "Lindungi halaman ini",
        "tooltip-ca-unprotect": "Ubah perlindungan halaman ini",
        "tooltip-ca-delete": "Hapus halaman ini",
        "tooltip-ca-move": "Pindahkan halaman ini",
        "tooltip-ca-watch": "Tambahkan halaman ini ke daftar pantauan Anda",
        "tooltip-ca-unwatch": "Hapus halaman ini dari daftar pantauan Anda",
-       "tooltip-search": "Cari dalam wiki ini",
+       "tooltip-search": "Cari di {{SITENAME}}",
        "tooltip-search-go": "Cari suatu halaman dengan nama yang persis seperti ini jika tersedia",
        "tooltip-search-fulltext": "Cari halaman yang memiliki teks seperti ini",
        "tooltip-p-logo": "Kunjungi Halaman Utama",
        "tooltip-feed-atom": "Umpan Atom untuk halaman ini",
        "tooltip-t-contributions": "Lihat daftar kontribusi pengguna ini",
        "tooltip-t-emailuser": "Kirimkan surel kepada pengguna ini",
-       "tooltip-t-upload": "Muatkan gambar atau berkas media",
+       "tooltip-t-upload": "Unggah berkas",
        "tooltip-t-specialpages": "Daftar semua halaman istimewa",
        "tooltip-t-print": "Versi cetak halaman ini",
        "tooltip-t-permalink": "Pranala permanen untuk revisi halaman ini",
        "tooltip-watchlistedit-raw-submit": "Perbarui daftar pantauan",
        "tooltip-recreate": "Buat ulang halaman walaupun sebenarnya telah dihapus",
        "tooltip-upload": "Mulai pemuatan",
-       "tooltip-rollback": "\"Kembalikan\" membatalkan suntingan-suntingan di halaman ini ke kontributor terakhir dalam satu kali klik.",
+       "tooltip-rollback": "\"Pengembali\" membatalkan suntingan-suntingan di halaman ini ke kontributor terakhir dalam satu kali klik.",
        "tooltip-undo": "\"Balikkan\" membatalkan revisi ini dan membuka kotak penyuntingan dengan mode pratayang. Alasan dapat ditambahkan di kotak ringkasan.",
        "tooltip-preferences-save": "Simpan preferensi",
        "tooltip-summary": "Masukkan sebuah ringkasan pendek",
        "svg-long-error": "Berkas SVG tidak sah: $1",
        "show-big-image": "Ukuran asli",
        "show-big-image-preview": "Ukuran pratayang ini: $1.",
-       "show-big-image-other": "{{PLURAL:$2|Resolusi|Resolusi}} lain: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Resolusi}} lain: $1.",
        "show-big-image-size": "$1 × $2 piksel",
        "file-info-gif-looped": "melingkar",
        "file-info-gif-frames": "$1 {{PLURAL:$1||}}frame",
        "metadata-help": "Berkas ini mengandung informasi tambahan yang mungkin ditambahkan oleh kamera digital atau pemindai yang digunakan untuk membuat atau mendigitalisasi berkas. Jika berkas ini telah mengalami modifikasi, rincian yang ada mungkin tidak secara penuh merefleksikan informasi dari gambar yang sudah dimodifikasi ini.",
        "metadata-expand": "Tampilkan rincian tambahan",
        "metadata-collapse": "Sembunyikan rincian tambahan",
-       "metadata-fields": "Bidang metadata gambar yang tercantum dalam pesan ini akan dimasukkan pada tampilan halaman gambar ketika tabel metadata diciutkan.\nData lain akan disembunyikan secara bawaan.\n * make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Bidang metadata gambar yang tercantum dalam pesan ini akan dimasukkan pada tampilan halaman gambar ketika tabel metadata diciutkan.\nData lain akan disembunyikan secara bawaan.\n* pembuat\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* hak cipta\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "metadata-langitem": "'''$2:''' $1",
        "metadata-langitem-default": "$1",
        "exif-imagewidth": "Lebar",
index 0f0685b..3629baf 100644 (file)
        "json-error-utf8": "Caratteri UTF-8 non validi, possibile codifica errata",
        "json-error-recursion": "Uno o più riferimenti ricorsivi nel valore da codificare",
        "json-error-inf-or-nan": "Uno o più valori NAN o INF nel valore da codificare",
-       "json-error-unsupported-type": "È stato fornito un valore di un tipo che non può essere codificato"
+       "json-error-unsupported-type": "È stato fornito un valore di un tipo che non può essere codificato",
+       "headline-anchor-title": "Collegamento a questa sezione"
 }
index c27d17c..98ea5c2 100644 (file)
        "movepagetalktext": "დაკავშირებული განხილვის გვერდი ავტომატურად გადავა მასთან ერთად, '''გარდა იმ შემთხვევისა, თუ''':\n*განხილვის გვერდი ახალი სათაურით და გარკვეული შინაარსით უკვე არსებობს, ან\n*თქვენ მოხსნით ნიშნულს ქვევით დაფაზე.\n\nამ შემთხვევებში, თქვენ თავად მოგიწევთ ამ გვერდის გადატანა, სურვილისამებრ.",
        "movearticle": "გვერდის გადატანა",
        "moveuserpage-warning": "'''გაფრთხილება:''' თქვენ გადაგაქვთ მომხმარებლის გვერდი. გთხოვთ გაითვალისწინეთ, რომ გადატანა შესრულდება, მომხმარებლის სახელის გადარქმევა კი ''არა''.",
+       "movecategorypage-warning": "<strong>გაფრთხილება:</strong> თქვენ გადაგაქვთ კატეგორიის გვერდი. გაითვალისწინეთ, რომ გვერდი გადავა, თუმცა მასში შემავალი გვერდები <em>დარჩება</em> ძველ კატეგორიაში. საჭირო იქნება კატეგორიის ჩასწორება სტატიებში ინდივიდუალურად.",
        "movenologintext": "თქვენ უნდა [[Special:UserLogin|წარუდგინოთ თავი]],\nსისტემას რათა გადაიტანოთ გვერდები.",
        "movenotallowed": "თქვენ არ გაქვთ გვერდების გადატანის უფლება.",
        "movenotallowedfile": "თქვენ ვერ გადაიტანთ ფაილებს.",
index 2a8192d..407eca6 100644 (file)
        "preview": "Vör-Ansich",
        "showpreview": "Vör-Aansich zeije",
        "showdiff": "De Ungerscheide zeije",
+       "blankarticle": "<strong>Opjepaß:</strong> Di Sigg, di De jrahd aanlähje wells, es läddesch. Wann De jäz norr_ens op „{{int:savearticle}}“ jehß, weed di Sigg och ohne jät dren aanjelaat.",
        "anoneditwarning": "'''Opjepaß:''' Weil De nit enjelogg bes, weed Ding <i lang=\"en\" xml:lang=\"en\">IP</i>-Adräß en heh dä Sigg ier Leß met de Väsiohne faßjehallde wääde.\nWann De [$1 enlogge deihs] udder [$2 desch aanmällds], dann wääde Ding Änderonge met dingem Nahme als Metmaacher opjevöhrt.",
        "anonpreviewwarning": "''Weil De nit enjlogg bes, weed Ding <code lang=\"en\">IP</code>-Addräß zoamme met dä neue Version faßjehallde, wann de heh di Sigg avspeichere deihß.''",
        "missingsummary": "<strong>Opjepass:</strong> Do häs nix bei „{{int:summary}}“ enjejovve. Dun noch ens op „{{int:savearticle}}“ klicke, öm Ding Änderunge ohne de Zosammefassung ze Speichere. Ävver besser jiss De do jetz tirek ens jet en!",
        "right-override-export-depth": "Beim Sigge Expoteere de Sigge metnämme, woh Lingks drop jon — beß fönef Schredde wigk",
        "right-sendemail": "<i lang=\"en\">e-mail</i> aan ander Metmaacher schecke",
        "right-passwordreset": "De <i lang=\"en\">e-mails</i> vum Paßwoot neu Säze aanloore",
+       "right-managechangetags": "[[Special:Tags|Kännzeijsche: $2)]] en de Dahtebangk aanlähje udder fottschmiiße",
        "newuserlogpage": "Logboch för neu Metmaachere",
        "newuserlogpagetext": "He sin de Metmaacher opjelėßß, di sesh nöü aanjemäldt han.",
        "rightslog": "Logboch för Änderunge aan Metmaacher-Räächde",
        "action-viewmyprivateinfo": "de eije päsöönlesche Aanjaabe ze belooere",
        "action-editmyprivateinfo": "Ding päsöönlesche Aanjaabe ze ändere",
        "action-editcontentmodel": "et Modäll vum Ennhald vun Sigge ze verändere",
+       "action-managechangetags": "Kännzeijsche en de Dahtebangk aanlähje udder fottschmiiße",
        "nchanges": "{{PLURAL:$1|Ein Änderong|$1 Änderonge|Kein Änderong}}",
        "enhancedrc-since-last-visit": "{{PLURAL:$1|Ein|$1|Kein}} zigg_em läzde Aanloore",
        "enhancedrc-history": "Väsjohne",
        "unusedimages": "Dateie, die nit en Sigge dren stäche",
        "wantedcategories": "Saachjruppe, die mer noch nit han, die noch jebruch wääde",
        "wantedpages": "Sigge, die mer noch nit han, die noch jebruch wääde",
+       "wantedpages-summary": "He sin Sigge opjeliss, die et noch nit jitt, wo ävver Hyperlinks vun andere Sigge drop jon.",
        "wantedpages-badtitle": "Ene onjöltijje Tittel för en Sigg: $1",
        "wantedfiles": "Dateie, di onß noch fähle",
        "wantedfiletext-cat": "Heh di Datteije sin nit doh. Se wääde ävver jebruch, wi wann se doh wööre.\nDatteije uß frembde Sammlonge künne heh opjeleß sin, och wann et se jitt.\nDi sin dann <del>dorschjeschtresche</del>. \nSigge, woh Datteije jebruch wääde sulle, die mer jaa nit han, fengk mer och en dä [[:$1]].",
        "tags": "De jöltijje Makeerunge för Änderunge",
        "tag-filter": "[[Special:Tags|Makeerunge]] ußsöke:",
        "tag-filter-submit": "Beschränke!",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Ein|$1|Kein}} Kännzeijsche]]: $2)",
        "tags-title": "Makeeronge",
        "tags-intro": "Heh sin alle de Makeerunge opjeliß, die et Wiki för Änderunge verjevve kann, un wat se bedügge.",
        "tags-tag": "Dä Makeerung iere Name",
        "tags-activate": "aanschallde",
        "tags-deactivate": "ußschallde",
        "tags-hitcount": "{{PLURAL:$1|Ein Änderong|$1 Änderonge|Kein Änderonge}}",
+       "tags-manage-no-permission": "Do häs nit et Rääsch Kännzeijsche ze verwallde.",
+       "tags-create-heading": "E neu Kännzeijsche aanlähje",
+       "tags-create-explanation": "Neu aanjelahte Kännzeijsche schtonn schtandattmähßesch för de Metmaacher un de Bots parraht.",
+       "tags-create-tag-name": "Däm Kännzeijsche singe Nahme:",
        "tags-create-reason": "Jrond:",
        "tags-create-submit": "Lohß Jonn!",
-       "tags-delete-explanation-in-use": "It will vun {{PLURAL:$2|eine Väsjohn udder einem Enndrahch|alle $2 Väsjohn udder Endrähsch|keine Väsjohn udder keinem Endrahsch}} em Logbohch, woh dat to which it is currently applied.",
+       "tags-create-no-name": "Do moß der Nahme vun enem Kännzeijsche aanjävve",
+       "tags-create-invalid-chars": "En de Nahme för Kännzeijsche dörve kein Kommas (<code>,</code>) un kein scheive Schtresche (<code>/</code>) dren sin.",
+       "tags-create-invalid-title-chars": "En de Nahme för Kännzeijsche dörve kein Zeische dren sin, di em nit en de Övverschreffte vun Sigg bruche darref.",
+       "tags-create-already-exists": "Dat Kännzeijsche „$1“ jidd_et ald.",
+       "tags-create-warnings-above": "Opjepaß: Beim Kännzeijsche „$1“ aanlähje \n{{PLURAL:$2|es ene|sinner $1|es keine}} Fähler opjetrodde:",
+       "tags-create-warnings-below": "Wells De wigger maache un dat Kännzeijsche aanlähje?",
+       "tags-delete-title": "Kännzeijsche fottschmiiße",
+       "tags-delete-explanation-initial": "Do bes om bäßte Wähsch, et Kännzeijsche „$1“ us de Dahtebangk ze wärfe.",
+       "tags-delete-explanation-in-use": "Et weed vun {{PLURAL:$2|eine Väsjohn udder einem Enndrahch|alle $2 Väsjohn udder Endrähsch|keine Väsjohn udder keinem Endrahsch}} em Logbohch fott jenumme, woh dat em Momang noch dren es.",
+       "tags-delete-explanation-warning": "Dat kam_mer <strong>nit retuur</strong> maache.\nOch wä tiräk en de Dahtebangk met alle Rääschte werreke darf, kann dat nit. Alsu bes sescher, dat dat Kännzeijsche es, wat De fottschmiiße wells.",
+       "tags-delete-explanation-active": "<strong>Dat Kännzeijsche „$1“ es noch aanjeschalldt un weed wigger jebruch wähde.</strong> Öm dat ze verhendere, jangk aan dä Plaz udder all de Pläz, woh dat noch aanjeschalldt es, un donn et doh affschallde.",
        "tags-delete-reason": "Jrond:",
+       "tags-delete-submit": "Onzeröckhollbaa fottschmiiße!",
+       "tags-delete-not-allowed": "Kännzeijsche, di övver Zohsazprojramme faßjelaat wääde, kam_mer blß fottschmiiße, wann dat Zohsazprojramm et zohlöht.",
+       "tags-delete-not-found": "E Kännzeijsche „$1“ jidd_et nit.",
+       "tags-delete-too-many-uses": "Dat Kännzeijsche „$1“ es för {{PLURAL:$2|mieh wi ein Väsjohn|övver $2 Väsjohn|kein Väsjohn}} em jebruch, dröm kam_mer et nit fottschmiiße.",
+       "tags-delete-warnings-after-delete": "Dat Kännzeijsche „$1“ es fottjeschmeße, ävver {{PLURAL:$2|ei Problem|$2 Probleme|kein Problem}} es opjevalle:",
+       "tags-activate-title": "Kännzeijsche aanschallde",
+       "tags-activate-question": "Do bes om bäßte Wähsch, et Kännzeijsche „$1“ aanzeschallde.",
        "tags-activate-reason": "Jrond:",
+       "tags-activate-not-allowed": "Ed es nit müjjelesch, et Kännzeijsche „$1“ aanzeschallde.",
+       "tags-activate-not-found": "Dat Kännzeijsche „$1“ jidd_et nit.",
        "tags-activate-submit": "Aktivehre",
+       "tags-deactivate-title": "Kännzeijsche afschallde",
+       "tags-deactivate-question": "Do bes om bäßte Wähsch, et Kännzeijsche „$1“ afzeschallde.",
        "tags-deactivate-reason": "Jrond:",
+       "tags-deactivate-not-allowed": "Ed es nit müjjelesch, et Kännzeijsche „$1“ afzeschallde.",
        "tags-deactivate-submit": "Ußschallde",
        "comparepages": "Sigge verjliesche",
        "compare-page1": "De ein Sigg",
        "logentry-upload-upload": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Dattei „$3“ huhjelahe.",
        "logentry-upload-overwrite": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät en neue Väsjohn vun dä Dattei „$3“ huhjelahe.",
        "logentry-upload-revert": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Dattei „$3“ huhjelahe.",
+       "log-name-managetags": "Logbohch vun de Kännzeijsche_Verwaldong",
+       "log-description-managetags": "Heh sin de Veränderonge em Zersammehang vun de [[Special:Tags|Kännzeijsche]] faßjehallde. En däm Logbohch schteiht blohß de Wikki_Köhbeße händesch jedonn han. Kännzeijsche künne och vum Wikki automattesch aanjelaat un fott jemaat wääde, un douche dann heh nit op.",
+       "logentry-managetags-create": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ aanjelaat.",
+       "logentry-managetags-delete": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ fottjeschmeße un derbei vun {{PLURAL:$5|eine Väsjohn udder einem Enndraach|$5 Väsjohne udder $5 Enndrähsch||keine Väsjohn udder keinem Enndraach}} vum Logbohch eruß jenumme.",
+       "logentry-managetags-activate": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ aanjeschalldt för de Metmaacher un de Bots.",
+       "logentry-managetags-deactivate": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ för de Metmaacher un de Bots afjeschalldt.",
        "rightsnone": "(nix)",
        "revdelete-summary": "dä Täx en „{{int:summary}}“",
        "feedback-bugornote": "Wann de em Bejreff bes, övver e täschesch Probleem ze schrieve, bes esu jood un donn dat als en [$1 Fählermäldong].\nSöns, nemm dat koote Fommulaa heh dronger.\nWat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg „[$3 $2]“ drop.",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ußjeschalldt''')",
        "mediastatistics": "Schtateßteke övver de Meedije",
        "mediastatistics-summary": "Schtatißteke övver de huhjelahde Zoote Datteije. Von de Datteije weed bloß de jeweils neuste Väsjohn jezallt. Fottjeschmeße un övverhollte Datteije wähde nit metjezallt.",
+       "mediastatistics-nfiles": "$1 ($2%)",
        "mediastatistics-nbytes": "{{PLURAL:$1|Ei Byte|$1 Bytes|Nix}} ($2; $3%)",
        "mediastatistics-table-mimetype": "<i lang=\"en\" xml:lang=\"en\" title=\"Multi-Purpose Internet Mail Extensions\">MIME</i>-Tüpp",
        "mediastatistics-table-extensions": "Müjjelesche Datteizoote",
        "mediastatistics-header-archive": "Kumpremeerte Dahtefommahte",
        "json-warn-trailing-comma": "{{PLURAL:$1|0=Kei Komma wood|1=Ei Komma woodt|$1 Kommas woodte}} aam Ängk vum <i lang=\"en\" xml:lang=\"en\">JSON</i> fott jenumme.",
        "json-error-unknown": "Mem <i lang=\"en\" xml:lang=\"en\">JSON</i> es jät scheif jeloufe: $1",
+       "json-error-depth": "Der ẞtägg eß övverjeloufe",
        "json-error-state-mismatch": "Onjöltesch udder kapott <i lang=\"en\" lang=\"en\" xml:lang=\"en\" title=\"JavaScript Object Notation\">JSON</i>-Fommaat",
        "json-error-ctrl-char": "Verkeht Schtührzeijsche. Künnt ene Fähler mem Kodehre sin.",
        "json-error-syntax": "Fähler en de Syntax",
index 0c55c6c..975de0a 100644 (file)
        "createaccount-text": "Aliquis creavit rationem pro inscriptione electronica tua apud {{grammar:accusative|{{SITENAME}}}} ($4). Nomen usoris est \"$2\" et tessera est \"$3\". Conventum aperias et statim tesseram tuam mutes.\n\nHunc nuntium ignorare potes, si nolis hac ratione uti.",
        "login-abort-generic": "Conventum aperire non contigit - Desitum",
        "loginlanguagelabel": "Lingua: $1",
+       "pt-login": "Conventum aperire",
+       "pt-login-button": "Conventum aperire",
+       "pt-createaccount": "Conventum creare",
+       "pt-userlogout": "Conventum concludere",
        "changepassword": "Tesseram mutare",
        "resetpass_header": "Tesseram rationis mutare",
        "oldpassword": "Tessera vetus:",
        "newarticletext": "Per nexum progressus es ad paginam quae nondum exsistit.\nNovam paginam si vis creare, in capsam infra praebitam scribe.\n(Vide [$1 paginam auxilii] si plura cognoscere vis.)\nSi hic es propter errorem, solum '''Retrorsum''' in navigatro tuo preme.",
        "anontalkpagetext": "----''Haec est pagina disputationis usoris anonymi, solum a loco IP suo noti. Memento locos IP aliquando mutaturos, et a usoribus multis fortasse adhibitos. Si es usor ignotus, et tibi querulae sine causa datae sunt, conventum [[Special:UserLogin/signup|crea]] vel [[Special:UserLogin|aperi]] ad confusionem futuram evitendam.''",
        "noarticletext": "Hac in pagina non sunt litterae.\nPotes [[Special:Search/{{PAGENAME}}|hanc rem in aliis paginis quaerere]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} acta huius paginae videre]\naut [{{fullurl:{{FULLPAGENAME}}|action=edit}} hanc paginam creare]</span>.",
+       "noarticletext-nopermission": "Hac in pagina non sunt litterae.\nPotes [[Special:Search/{{PAGENAME}}|hanc rem in aliis paginis quaerere]] aut <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} acta huius paginae videre], sed tibi non licet hanc paginam creare.",
        "userpage-userdoesnotexist": "Usor \"<nowiki>$1</nowiki>\" non est. Visne re vera hanc paginam creare vel recensere?",
        "updated": "(Novata)",
        "note": "'''Nota:'''",
        "currentrev": "Emendatio recentissima",
        "currentrev-asof": "Emendatio recentissima ex $1",
        "revisionasof": "Emendatio ex $1",
-       "revision-info": "Emendatio ex $1 ab $2",
+       "revision-info": "Emendatio ex $1 ab $2$7",
        "previousrevision": "← Emendatio senior",
        "nextrevision": "Emendatio novior →",
        "currentrevisionlink": "Emendatio currens",
        "boteditletter": "a",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usor custodiens|usores custodientes}}]",
        "rc_categories_any": "Ulla",
+       "rc-change-size-new": "$1 {{PLURAL:$1|octetus|octeti}} post recensionem",
        "newsectionsummary": "/* $1 */ nova pars",
        "rc-enhanced-expand": "Minima monstrare",
        "rc-enhanced-hide": "Minima celare",
        "deletereason-dropdown": "*Causae deletionum communes\n** Spam\n** Vandalismus\n** Violatio verborum privatorum\n** Desiderium auctoris\n** Redirectio fracta",
        "delete-edit-reasonlist": "Causas deletionum recensere",
        "rollback": "Reverti mutationes",
-       "rollback_short": "Reverti",
        "rollbacklink": "reverti",
        "rollbacklinkcount": "reverti {{PLURAL:$1|unam recensionem|$1 recensiones}}",
        "rollbacklinkcount-morethan": "reverti plus quam {{PLURAL:$1|unam recensionem|$1 recensiones}}",
        "file-nohires": "Nulla maior resolutio exstat.",
        "svg-long-desc": "fasciculus SVG, nominale $1 × $2 elementa imaginalia, magnitudo fasciculi: $3",
        "show-big-image": "Resolutio completa",
+       "show-big-image-size": "$1 × $2 elementa imaginalia",
        "file-info-gif-frames": "$1 {{PLURAL:$1|replum|repla}}",
        "newimages": "Fasciculi novi",
        "imagelisttext": "Subter est index {{PLURAL:$1|'''unius''' fasciculi|'''$1''' fasciculorum}} digestus $2.",
index af64e28..50db3ef 100644 (file)
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "content-json-empty-object": "Eidelen Objet",
+       "content-json-empty-array": "Eidel Tabell",
        "expensive-parserfunction-warning": "'''Opgepasst:'' Dës Säit huet ze vill Ufroe vu komplexe Parserfunktiounen.\n\nEt däerfen net méi wéi $2 {{PLURAL:$2|Ufro|Ufroe}} sinn, aktuell {{PLURAL:$2|ass et $1 Ufro|sinn et $1 Ufroe}}.",
        "expensive-parserfunction-category": "Säiten, déi komplex Parserfunktiounen ze dacks opruffen",
        "post-expand-template-inclusion-warning": "Opgepasst: D'Gréisst vun den agebonnene Schablounen ass ze grouss, e puer Schabloune kënnen net agebonne ginn.",
        "unusedimages": "Net benotzt Fichieren",
        "wantedcategories": "Gewënscht Kategorien",
        "wantedpages": "Gewënscht Säiten",
+       "wantedpages-summary": "Op dëser Spezialsäit stinn all Säiten, déi nach net existéieren, déi awer scho vu Säiten, déi et scho gëtt, verlinkt sinn.",
        "wantedpages-badtitle": "Net valabelen Titel am Resultat: $1",
        "wantedfiles": "Gewënscht Fichieren",
        "wantedfiletext-cat": "Dës Fichiere gi benotzt awer et gëtt se net. Fichiere aus frieme Repositorie kënnen hei gewise ginn och wann et se gëtt. All sou falsch Positiver ginn <del>duerchgestrach</del>. Zousätzlech gi Säiten an deene Fichieren dra sinn déi et net gëtt op [[:$1]] gewisen.",
        "tags-activate": "aktivéieren",
        "tags-deactivate": "desaktivéieren",
        "tags-hitcount": "$1 {{PLURAL:$1|Ännerung|Ännerungen}}",
+       "tags-create-tag-name": "Numm vun der Markéierung (Tag):",
        "tags-create-reason": "Grond:",
        "tags-create-submit": "Uleeën",
        "tags-create-already-exists": "D'Markéierung (tag) ''$1'' gëtt et schonn.",
        "mediastatistics-header-text": "Textuell",
        "mediastatistics-header-archive": "Kompriméiert Formater",
        "json-error-unknown": "Et gouf e Problem mam JSON. Feeler: $1",
-       "json-error-syntax": "Syntaxfeeler"
+       "json-error-state-mismatch": "JSON den net valabel ass oder Feeler huet",
+       "json-error-syntax": "Syntaxfeeler",
+       "headline-anchor-title": "Link op dësen Abschnitt"
 }
index 081238a..abbd91b 100644 (file)
@@ -20,7 +20,8 @@
                        "아라",
                        "बिप्लब आनन्द",
                        "सरोज कुमार ढकाल",
-                       "Bijay chaurasia"
+                       "Bijay chaurasia",
+                       "Tulsi Bhagat"
                ]
        },
        "tog-underline": "लिंककेँ रेखांकित करू:",
        "shared-repo-from": "$1 सँ",
        "shared-repo": "एकटा साझी बखारी",
        "shared-repo-name-wikimediacommons": "सामान्य विकीमीडिया",
+       "upload-disallowed-here": "अपने यी फ़ाइलके अधिलेखित नै कैरऽ सकै छि।",
        "filerevert": "$1 लग घुरु",
        "filerevert-legend": "घुराएल संचिका",
        "filerevert-intro": "अहाँ संचिका घुराबैले छी '''[[Media:$1|$1]]''' केँ [$4 संस्करण $3, $2 केँ] लग।",
        "deleteprotected": "अहाँ इ पन्ना नै मेटा सकए छी कियाकि ई सुरक्षण कएल गेल अछि",
        "deleting-backlinks-warning": "'''चेतौनी:''' जे पृष्ठ अहाँ हटावए लेल जा रहल छी वोकरा में  [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़एत अछि अथवा वोकरा ट्रान्सक्ल्युड करएत अछि।",
        "rollback": "प्रत्यावर्तित सम्पादन",
-       "rollback_short": "प्रत्यावर्तन",
        "rollbacklink": "प्रत्यावर्तन",
        "rollbacklinkcount": "$1 {{PLURAL:$1|सम्पादन}} पूर्ववत करू",
        "rollbacklinkcount-morethan": "$1 सँ अधिक {{PLURAL:$1|सम्पादन}} पूर्ववत करू",
        "import-logentry-interwiki": "विकीअन्तरण क देलौ $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|सुधार|सुधार सभ}} $2 सँ",
        "javascripttest": "जावास्क्रिप्ट परिक्षण",
-       "javascripttest-title": "$1 परीक्षण चइल रहल अछि",
        "javascripttest-pagetext-noframework": "इ पृष्ठ जावास्क्रिप्ट परीक्षण चलावए के लेल अछि।",
        "javascripttest-pagetext-unknownframework": "अज्ञात परीक्षण ढाँचा \"$1\"",
        "javascripttest-pagetext-frameworks": "कृपया निम्न परीक्षण ढाँचा सभ में सँ एक चुनु: $1",
        "javascripttest-pagetext-skins": "परीक्षण करए के लेल त्वचा चुनु:",
        "javascripttest-qunit-intro": "mediawiki.org पर [$1 परीक्षण के प्रलेखन] देखु।",
-       "javascripttest-qunit-heading": "मेडियाविकि जावास्क्रिप्ट क्यू-युनिट परीक्षण ढाँचा",
        "tooltip-pt-userpage": "अहाँक खेसरा पन्ना",
        "tooltip-pt-anonuserpage": "सम्पाद्न कएल जा रहल स्थानक  अनिकेतक प्रयोक्ता पन्ना",
        "tooltip-pt-mytalk": "अहाँक वार्त्ता पृष्ठ",
        "spambot_username": "मीडियाविकी अनिष्ट संकेत सफाइ",
        "spam_reverting": "अन्तिम संशोधन लग घुरल जइमे $1 लागि नै अछि",
        "spam_blanking": "सभटा संशोधन $1 लागिसँ युक्त अि, खतम कऽ रहल छी",
+       "simpleantispam-label": "ऐन्टी-स्पैम जाँच।\nयी मऽ <strong>नै</strong> भरु!",
        "pageinfo-title": "\"$1\"पृष्ठक लेल नब गप",
        "pageinfo-header-basic": "न्यूनतम जानकारी",
        "pageinfo-header-edits": "संपादन",
index 7099fd6..9cfa66d 100644 (file)
        "pool-queuefull": "Feno ny lisitry ny asa hatao",
        "pool-errorunknown": "Tsi-fetezana tsy fantatra",
        "pool-servererror": "Tsy mandeha ny rahraha fanisana ($1).",
+       "poolcounter-usage-error": "Hadisoam-pampiasana : $1",
        "aboutsite": "Mombamomba ny {{SITENAME}}",
        "aboutpage": "Project:Mombamomba",
        "copyright": "Ny lisansa $1 no mamehy ny fampiasana ity voatoatiny ity.",
        "viewyourtext": "Azonao atao ny mijery ary mandika ny fangon'ny '''fanovanao''' tamin'ity pejy ity:",
        "protectedinterface": "Ity pejy ity dia manome ny lahatsoratra ho an'ny rindrankajy eto amin'ity Wiki ity, ary narovana mba tsy hisian'ny fanararaotana. Raha tia hanampy na hanova ny dikanteny ho an'ny wiki rehetra, ampiasao [//translatewiki.net/ translatewiki.net], izay tetikasa fandikanan ny rindrankajy Mediawiki.",
        "editinginterface": "<strong> Fampitandremana: <strong> manova pejy ampiasaina amin'ny famoronan-tsoratry ny rindrankajy ianao. Hisy fiatraika amin'ny fisehon'ny interfasim-pikambana ho an'ny mpikambana hafan'ity wiki ity ny fiovana ho atao.",
+       "translateinterface": "Mba hanampy na hanova dikanteny ho an'ny wiki rehetra, dia ampiasao  [//translatewiki.net/ translatewiki.net], na ny tetikasa fandikana Mediawiki.",
        "cascadeprotected": "Ankehitriny dia voaaro ity pejy ity satria misy pejy voaaro {{PLURAL:$1||$1}}1 mampiasa ity pejy ity. Io pejy io dia mampiasa ny fiarovana \"en cascade\" :\n\n$2",
        "namespaceprotected": "Tsy manana alalàna manova ny toeran'anarana « '''$1''' » ianao.",
        "customcssprotected": "Tsy afaka manova ity pejy CSS ity ianao satria misy ny safidy manokan'ny mpikambana hafa.",
        "prefs-personal": "Mombamomba anao",
        "prefs-rc": "Vao niova",
        "prefs-watchlist": "Lisitry ny pejy arahana-maso",
+       "prefs-editwatchlist": "Hanova ny lisitry ny pejy arahana",
+       "prefs-editwatchlist-label": "Hanova ny iditry ny lisitra arahanao",
+       "prefs-editwatchlist-edit": "Hijery na hanala lohateny ao amin'ny lisitra arahanao",
+       "prefs-editwatchlist-raw": "Hanova ny lisitra arahana amin'ny fomba manta",
+       "prefs-editwatchlist-clear": "Handio ny lisitra arahanao",
        "prefs-watchlist-days": "Isa ny andro haseho anatin'ny lisitra ny pejy arahana-maso",
        "prefs-watchlist-days-max": "$1 {{PLURAL:$1|}} andro farafahabetsany",
        "prefs-watchlist-edits": "Isa ny fanovana aseho eo amin'ny fanaraha-maso navelatra:",
        "recentchangesdays-max": "($1 andro{{PLURAL:$1||}} fara-faha betsany)",
        "recentchangescount": "Isan'ny fanovana haseho (tsipalotra) :",
        "prefs-help-recentchangescount": "Misy ny fiovana farany, ny tantaram-pejy ary ny laogy",
+       "prefs-help-watchlist-token2": "Ity ny lakilen'ny topaka Web ny lisitra arahanao. Afaka mamangy ny lisitra arahanao izay mahalala io lakileo io, ka aza zarazaraina ilay izy. Raha ilainao izany dia afaka [[Special:ResetTokens|manavao izy io ianao]]",
        "savedprefs": "Voatahiry ny mombamomba anao.",
        "timezonelegend": "Faritr'ora :",
        "localtime": "Ora an-toerana",
        "prefs-diffs": "Diff",
        "prefs-help-prefershttps": "Hihatra amin'ny fidiranao manaraka ity safidy ity.",
        "prefswarning-warning": "Efa nanova tamin'ny safidinao tsy mbola voatahiry ianao. Raha miala amin'ity pejy ity amin'ny alalan'ny fanindriana an'i \"$1\" ianao dia tsy ho voavao ny safidinao.",
+       "prefs-tabs-navigation-hint": "Torohevitra: afaka mampiasa ny zana-tsipika havia ary havanana ianao ho an'ny fitetezana ny vakizoro ao amin'ny lisi-bakizoro",
        "email-address-validity-valid": "Adiresy imailaka mameno fepetra",
        "email-address-validity-invalid": "Ilaina ny mametraka adiresy imailaka mameno fepetra",
        "userrights": "Fandrindràna ny fahefahan'ny mpikambana",
        "right-override-export-depth": "Mamoaka ny pejy miaraka amin'ny zana-pejy hatramin'ny ambaratonga fahadimy",
        "right-sendemail": "Mandefa imailaka any amin'ny mpikambana hafa",
        "right-passwordreset": "Hijery ny imailaka famerenana ny tenimiafina",
+       "right-managechangetags": "Mamorona ary mamafa [[Special:Tags|balizy]] ao amin'ny banky angona",
        "newuserlogpage": "Laogim-panokafana kaontim-pikambana",
        "newuserlogpagetext": "Ity pejy ity dia maneho ny tantaran'asan'ny fampidirana mpikambana vaovao.",
        "rightslog": "Laogim-piovan'ny zom-pikambana",
        "action-viewmyprivateinfo": "Mijery ny fampahalalana tsy sarababem-bahoakanao",
        "action-editmyprivateinfo": "Mijery ny fampahalalana sarababem-bahoakanao",
        "action-editcontentmodel": "manova ny modelim-botoatin'ny pejy",
+       "action-managechangetags": "hamorona ary hamafa balizy ao amin'ny banky angona",
        "nchanges": "{{PLURAL:$1|fanovana|fanovana}} $1",
        "enhancedrc-since-last-visit": "$1 ({{PLURAL:$1|hatry ny famangiana farany}})",
        "enhancedrc-history": "tantara",
        "uploaddisabledtext": "Tsy afaka andefasana rakitra aloha eto amin'ity wiki ity.",
        "php-uploaddisabledtext": "Ny fampidiran-drakitra dia tsy ampiasaina amin'ny PHP.\nMarino ny option configuration file_uploads.",
        "uploadscripted": "\nMisy kialo HTML na fango script mety tsy ho hain'ny navigateur sasany haseho ity rakitra ity.",
+       "uploadscriptednamespace": "ahitana valan'anarana \"$1\" ny rakitra SVG.",
        "uploadinvalidxml": "Tsy afaka vakiana ny XML tao anatin'ilay rakitra nafaranao.",
        "uploadvirus": "Misy viriosy io rakitra io! Toy izao ny antsipirihany: $1",
        "uploadjava": "Ny rakitra dia rakitra ZIP ahitana rakitra .class Java.\nVoarara ny mandefa rakitra Java satria mety hahavaky ny fepetra mikasika ny antoka ireo rakitra ireo.",
        "backend-fail-readonly": "Amin'izao fotoana dia famakiana ihany ny fitahirizana terminal an'i \"$1\". \"''$2''\" no antony nomena",
        "backend-fail-connect": "Tsy afaka mifandray amin'ny terminal fitahirizana \"$1\".",
        "backend-fail-internal": "Hadisoana tsy fantatra tao anatin'ny terminal fitahirizana \"$1\".",
+       "backend-fail-contenttype": "Tsy afaka maminavina ny karazam-botoatin'ny rakitra hotahirizina ao amin'i \"$1\".",
        "backend-fail-usable": "Tsy afaka nanoratra ny rakitra \"$1\" nohon'ny zo tsy ampy na ny tsy fisian'ny petra-drakitra.",
        "filejournal-fail-dbconnect": "Tsy afaka miantso ilay banky angona laogy ho an'ny terminal fitahirizana \"$1\".",
        "filejournal-fail-dbquery": "Tsy afaka manavao ny banky angona laogy ho an'ilay terminal fitahirizana \"$1\".",
index 6adcfca..2d59fa7 100644 (file)
        "revdelete-uname-unhid": "корисничкото име е скриено",
        "revdelete-restricted": "применети ограничувања на администратори",
        "revdelete-unrestricted": "отстранети ограничувања за систем оператори",
+       "logentry-block-block": "$1 {{GENDER:$2|го блокираше}} корисникот {{GENDER:$4|$3}} со истек $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|го блокираше}} корисникот {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|го измени}} блокот на {{GENDER:$4|$3}} со истек $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|го блокираше}} {{GENDER:$4|$3}} со истек $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|го измени}} блокот на {{GENDER:$4|$3}} со истек $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|ја припои}} $3 кон $4 (преработки сè до $5)",
        "logentry-move-move": "$1 {{GENDER:$2|ја премести}} страницата $3 на $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|ја премести}} страницата $3 на $4 без да остави пренасочување",
index 3abe657..e6704e3 100644 (file)
        "tagline": "{{SITENAME}} جه",
        "help": "راهنما",
        "search": "بگردستن",
-       "searchbutton": "چرخ‌هایی",
+       "searchbutton": "چرخه‌تو",
        "go": "بـور",
        "searcharticle": "بور",
        "history": "صفحه‌ی تاریخچه",
        "aboutpage": "Project:درباره",
        "copyright": "این صفحه ره بَنوشته‌ئون  $1  زیر شِمه دسـت دَرنه.",
        "copyrightpage": "{{ns:project}}:کـوپـی‌راسـت‌ئون",
-       "currentevents": "اساÛ\8cÛ\8c Ø¯Ú©ØªÙ\87â\80\8cئون",
-       "currentevents-url": "Project:اساÛ\8cÛ\8c Ø¯Ú©ØªÙ\87â\80\8cئون",
+       "currentevents": "Ø®Ù\80Ù\8eÙ\88Ù\90رون",
+       "currentevents-url": "Project:Ø®Ù\88رون",
        "disclaimers": "تکذیب‌نومه‌ئون",
        "disclaimerpage": "Project:تکذیب‌نومه",
        "edithelp": "دچی‌ین رانما",
        "exbeforeblank": "قبل اینکه صفحه محتوا خالی بوه ونه محتوا وِ بیه: «$1»",
        "dellogpage": "وه ره بییته‌ئون گوزارش",
        "rollback": "دچی‌یه‌ئون ره واچی‌ین",
-       "rollback_short": "واچی‌ین",
        "rollbacklink": "واچی‌ین",
        "revertpage": "\"چـیـزونی که [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که [[User:$1|$1]] ای وألگ ده‌لـه، پـایـانی بـار هـه‌کـارده\"",
        "revertpage-nouser": "\"چیزونی که (ونـه کـاروری نـوم پـاک بَیّه) دچی‌یه دگـاردسته بیّه همونتایی که [[User:$1|$1]] آخرسری دچی‌ین دلـه هاکرده\"",
        "sp-contributions-newbies": "نـه وا بـأیـه ئـه‌کـانـت‌ئون دأچـیـه‌ن‌ئون ره نـه‌شـون هـاده",
        "sp-contributions-talk": "گپ",
        "sp-contributions-username": "IP نـه‌شـونـی یا کـاروری‌نوم",
-       "sp-contributions-submit": "چـأرخـه‌تـو",
+       "sp-contributions-submit": "چرخه‌تو",
        "whatlinkshere": "لینک‌ئون ِاینتا صفحه",
        "whatlinkshere-title": "وألـگ‌ئونی که \"$1\" ره لـیـنک هه‌دانه",
        "whatlinkshere-page": "صفحه:",
        "tooltip-ca-history": "کهنه دگاردسته‌ئونی که این صفحه دله دکته",
        "tooltip-ca-delete": "این صفحه ره پاک هاکردن",
        "tooltip-ca-watch": "این صفحه ره شه دمبال‌هاکردن لیست دله بی‌یشتن",
-       "tooltip-search": "{{SITENAME}} ره چـأرخـه‌تـو",
+       "tooltip-search": "{{SITENAME}} ره چرخه‌تو",
        "tooltip-search-go": "بـور اتـا ولـگـی کـه وه‌نـه نـوم هـأمـیـنـتـا بـوئـه",
        "tooltip-search-fulltext": "ولـگ‌ئـون ره ایـنـتـا تـه‌کـسـت وه‌سـه چـأرخ بـأزوئـه‌ن",
        "tooltip-p-logo": "گَت صفحه ره بَدی‌ین",
        "tooltip-n-randompage": "اتت شانسی صفحه بَدی‌ین",
        "tooltip-n-help": "أتـا جـا کـه...",
        "tooltip-t-whatlinkshere": "هأمو ولـگ‌ئونی که ایجه ره لینک هه‌دانه",
-       "tooltip-t-recentchangeslinked": "اسایی دگاردسته‌ئون صفحه‌ئونی دله، که این صفحه جه لینک دارنه",
+       "tooltip-t-recentchangeslinked": "اِسایی دِگاردسته‌ئون ِصفحه‌ئون که این صفحه جه لینک دارنه",
        "tooltip-feed-rss": "RSS خوراک این صفحه وسّه",
        "tooltip-feed-atom": "Atom خوراک این صفحه وسّه",
        "tooltip-t-emailuser": "ای کـارور ره اتـا ئـه‌لـه‌کـتـه‌رونـیـکـی‌نـومـه راهـی هـه‌کـارده‌ن",
index 9872ead..e9974f6 100644 (file)
        "json-error-utf8": "'E carattere UTF-8 furmate malamente, probbabilmente nun se songhe ncodifecate bbuone",
        "json-error-recursion": "Uno o cchiù riferimente recurzive dint' 'o valore a codefecare",
        "json-error-inf-or-nan": "Uno o cchiù valure NAN o INF dint' 'o valore 'a codefecare",
-       "json-error-unsupported-type": "S'è dato nu valore pe' nu tipo ca nun se può ncodifecà"
+       "json-error-unsupported-type": "S'è dato nu valore pe' nu tipo ca nun se può ncodifecà",
+       "headline-anchor-title": "Cullega a sta sezziona"
 }
index 1e52c1a..11325a9 100644 (file)
        "newarticletext": "Du har fulgt en lenke til en side som ikke finnes ennå.\nFor å opprette siden, begynn å skrive i boksen under (se [$1 hjelpesiden] for mer informasjon).\nOm du havnet her ved en feil, trykk '''tilbake''' i nettleseren.",
        "anontalkpagetext": "----\n''Dette er en diskusjonsside for en uregistrert bruker som ikke har opprettet konto eller ikke er logget inn.\nVi er derfor nødt til å bruke den numeriske IP-adressen til å identifisere ham eller henne.\nEn IP-adresse kan være delt mellom flere brukere.\nHvis du er en uregistrert bruker og synes at du har fått irrelevante kommentarer på en slik side, [[Special:UserLogin/signup|opprett en konto]] eller [[Special:UserLogin|logg inn]] så vi unngår fremtidige forvekslinger med andre uregistrerte brukere.''",
        "noarticletext": "Det er for tiden ingen tekst på denne siden.\nDu kan [[Special:Search/{{PAGENAME}}|søke etter denne sidetittelen]] på andre sider,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relaterte logger],\neller [{{fullurl:{{FULLPAGENAME}}|action=edit}} opprette siden]</span>.",
-       "noarticletext-nopermission": "Det er for tiden ingen tekst på denne siden.\nDu kan [[Special:Search/{{PAGENAME}}|søke etter sidens tittel]] blant andre sider, eller <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relevante logger]</span>.",
+       "noarticletext-nopermission": "Det er for tiden ingen tekst på denne siden.\nDu kan [[Special:Search/{{PAGENAME}}|søke etter sidens tittel]] blant andre sider, eller <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} søke i relevante logger]</span>, men du har ikke tillatelse til å opprette denne siden.",
        "missing-revision": "Revisjonen #$1 av siden med navnet \"{{FULLPAGENAME}}\" eksisterer ikke.\n\nDette skyldes som regel at en gammel historikklenke er fulgt til en side som er slettet.\nDetaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
        "userpage-userdoesnotexist": "Brukerkontoen «$1» er ikke registrert.\nSjekk om du ønsker å opprette/redigere denne siden.",
        "userpage-userdoesnotexist-view": "Kontoen «$1» er ikke registrert.",
        "showhideselectedversions": "Vis/skjul valgte versjoner",
        "editundo": "fjern",
        "diff-empty": "(Ingen forskjell)",
-       "diff-multi-sameuser": "({{PLURAL:$1|En mellomliggende revisjon|$1 mellomliggende revisjoner}} av samme bruker vises ikke)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Én mellomliggende revisjon|$1 mellomliggende revisjoner}} av samme bruker vises ikke)",
        "diff-multi-otherusers": "({{PLURAL:$1|En mellomliggende revisjon|$1 mellomliggende revisjoner}} av {{PLURAL:$2|en annen bruker|$2 brukere}} er ikke vist)",
        "diff-multi-manyusers": "({{PLURAL:$1|Én mellomrevisjon|$1 mellomrevisjoner}} av mer enn $2 {{PLURAL:$2|bruker|brukere}} vises ikke)",
        "difference-missing-revision": "{{PLURAL:$2|En revisjon|$2 revisjoner}} av denne forskjellen ($1) {{PLURAL:$2|ble|ble}} ikke funnet.\n\nDette skyldes som regel at en gammel forskjell-lenke er fulgt til en side som er slettet.\nDetaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
        "shown-title": "Vis $1 {{PLURAL:$1|resultat|resultater}} per side",
        "viewprevnext": "Vis ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "* Siden '''[[$1]]'''",
-       "searchmenu-new": "'''Opprett siden ''[[:$1]]'' på denne wikien.'''\n<strong>Opprett siden \"[[:$1]]\" på denne wikien!</strong> {{PLURAL:$2|0=|Se også siden oppnådd gjennom søket ditt.|Se også de oppnådde søkeresultatene.}}",
+       "searchmenu-new": "<strong>Opprett siden \"[[:$1]]\" på denne wikien!</strong> {{PLURAL:$2|0=|Se også siden oppnådd gjennom søket ditt.|Se også de oppnådde søkeresultatene.}}",
        "searchprofile-articles": "Innholdssider",
        "searchprofile-images": "Multimedia",
        "searchprofile-everything": "Alt",
        "recentchanges-label-minor": "Dette er en mindre endring",
        "recentchanges-label-bot": "Denne redigeringen ble gjort av en bot",
        "recentchanges-label-unpatrolled": "Denne redigeringen har ikke blitt patruljert ennå",
-       "recentchanges-label-plusminus": "Sidestørrelsen er endra med dette antallet byte",
+       "recentchanges-label-plusminus": "Sidestørrelsen ble endret med dette antallet byte",
        "recentchanges-legend-heading": "'''Tegnforklaring:'''",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|liste av nye sider]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|liste over nye sider]])",
        "recentchanges-legend-plusminus": "«(±123)»",
        "rcnotefrom": "Nedenfor er vist {{PLURAL:$5|endringen|endringene}} som er gjort siden <strong>$3, $4</strong> (frem til <strong>$1</strong>).",
        "rclistfrom": "Vis nye endringer fra og med $3 $2",
        "tooltip-search": "Søk i {{SITENAME}}",
        "tooltip-search-go": "Gå til en side med dette navnet om den finnes",
        "tooltip-search-fulltext": "Søk etter sider som innholder denne teksten",
-       "tooltip-p-logo": "Hovedside",
+       "tooltip-p-logo": "Gå til hovedsiden",
        "tooltip-n-mainpage": "Gå til hovedsiden",
        "tooltip-n-mainpage-description": "Gå til hovedsiden",
        "tooltip-n-portal": "Om prosjektet, hva du kan gjøre, hvor du kan finne ting",
        "json-error-utf8": "Feilaktige UTF-8-tegn, muligens feilkodet",
        "json-error-recursion": "En eller flere rekursive referanser i verdien som skal kodes",
        "json-error-inf-or-nan": "En eller flere NAN- eller INF-verdier i verdien som skal kodes",
-       "json-error-unsupported-type": "En verdi av en type som ikke kan kodes ble angitt"
+       "json-error-unsupported-type": "En verdi av en type som ikke kan kodes ble angitt",
+       "headline-anchor-title": "Lenke til denne seksjonen"
 }
index dbf1d16..090503a 100644 (file)
        "editlink": "bewark",
        "viewsourcelink": "brontekste bekieken",
        "editsectionhint": "Bewarkingsveld: $1",
-       "toc": "Overzicht",
+       "toc": "Inhold",
        "showtoc": "Bekieken",
        "hidetoc": "Verbarg",
        "collapsible-collapse": "Inklappen",
index b2da7bd..3146f1e 100644 (file)
@@ -73,7 +73,8 @@
                        "Nanaki",
                        "Alan ffm",
                        "Macofe",
-                       "Devwebtel"
+                       "Devwebtel",
+                       "VerMa"
                ]
        },
        "tog-underline": "Podkreślenie linków:",
        "prefs-personal": "Dane użytkownika",
        "prefs-rc": "Ostatnie zmiany",
        "prefs-watchlist": "Obserwowane",
+       "prefs-editwatchlist": "Edycja listy obserwowanych",
+       "prefs-editwatchlist-label": "Edytuj wpisy na Twojej liście obserwowanych:",
+       "prefs-editwatchlist-edit": "Przejrzyj i usuń strony z listy obserwowanych",
+       "prefs-editwatchlist-raw": "Tekstowy edytor obserwowanych",
+       "prefs-editwatchlist-clear": "Wyczyść listę obserwowanych",
        "prefs-watchlist-days": "Liczba dni widocznych na liście obserwowanych:",
        "prefs-watchlist-days-max": "Maksimum $1 {{PLURAL:$1|dzień|dni}}",
        "prefs-watchlist-edits": "Liczba edycji pokazywanych w rozszerzonej liście obserwowanych:",
        "right-protect": "Zmiana poziomu zabezpieczenia i edycja stron zabezpieczonych kaskadowo",
        "right-editprotected": "Edycja stron zabezpieczonych na poziomie „{{int:protect-level-sysop}}”",
        "right-editsemiprotected": "Edycja stron zabezpieczonych na poziomie „{{int:protect-level-autoconfirmed}}”",
+       "right-editcontentmodel": "Edycja modelu zawartości strony",
        "right-editinterface": "Edycja interfejsu użytkownika",
        "right-editusercssjs": "Edycja plików CSS i JS innych użytkowników",
        "right-editusercss": "Edycja plików CSS innych użytkowników",
        "action-viewmywatchlist": "zobaczenia swojej listy obserwowanych stron",
        "action-viewmyprivateinfo": "zobaczenia swoich prywatnych danych",
        "action-editmyprivateinfo": "edycji swoich prywatnych danych",
+       "action-editcontentmodel": "edycji modelu zawartości strony",
        "action-managechangetags": "utwórz lub usuń znaczniki z bazy danych",
        "nchanges": "$1 {{PLURAL:$1|zmiana|zmiany|zmian}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|od ostatniej wizyty}}",
        "namespace": "Przestrzeń nazw",
        "invert": "odwróć wybór",
        "tooltip-invert": "Zaznacz to pole, aby ukryć zmiany na stronach w wybranych przestrzeniach nazw (oraz związanych z nimi innymi przestrzeniami nazw, jeśli zaznaczono)",
+       "tooltip-whatlinkshere-invert": "Zaznacz to pole, aby ukryć linki do stron z wybranej przestrzeni nazw.",
        "namespace_association": "powiązana przestrzeń nazw",
        "tooltip-namespace_association": "Zaznacz to pole, aby uwzględnić strony dyskusji i tematu związane z wybranymi przestrzeniami nazw",
        "blanknamespace": "(Główna)",
        "tooltip-n-portal": "O projekcie, co możesz zrobić, gdzie możesz znaleźć informacje",
        "tooltip-n-currentevents": "Informacje o aktualnych wydarzeniach",
        "tooltip-n-recentchanges": "Lista ostatnich zmian na {{GRAMMAR:MS.lp|{{SITENAME}}}}.",
-       "tooltip-n-randompage": "Pokaż stronę wybraną losowo",
+       "tooltip-n-randompage": "Załaduj losową stronę",
        "tooltip-n-help": "Tutaj możesz się dowiedzieć wielu rzeczy.",
        "tooltip-t-whatlinkshere": "Pokaż listę wszystkich stron linkujących do tej strony",
        "tooltip-t-recentchangeslinked": "Ostatnie zmiany w stronach, do których ta strona linkuje",
        "tooltip-t-contributions": "Pokaż listę edycji tego użytkownika",
        "tooltip-t-emailuser": "Wyślij e‐mail do tego użytkownika",
        "tooltip-t-info": "Więcej informacji na temat tej strony",
-       "tooltip-t-upload": "Prześlij plik",
+       "tooltip-t-upload": "Prześlij pliki",
        "tooltip-t-specialpages": "Lista wszystkich specjalnych stron",
        "tooltip-t-print": "Wersja do wydruku",
        "tooltip-t-permalink": "Stały link do tej wersji strony",
        "tags-actions-header": "Działania",
        "tags-active-yes": "Tak",
        "tags-active-no": "Nie",
+       "tags-source-none": "Nieużywany",
        "tags-edit": "edytuj",
        "tags-delete": "usuń",
        "tags-activate": "aktywuj",
        "tags-hitcount": "$1 {{PLURAL:$1|zmiana|zmiany|zmian}}",
        "tags-manage-no-permission": "Nie masz uprawnień do zarządzaniem zmianami znaczników.",
        "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-create-reason": "Powód:",
        "tags-create-submit": "Utwórz",
        "json-error-syntax": "Błąd składni",
        "json-error-utf8": "Nieprawidłowe znaki UTF-8, prawdopodobnie niepoprawnie zakodowane",
        "json-error-recursion": "Jedno lub więcej rekurencyjnych odniesień musi być zakodowane.",
-       "json-error-unsupported-type": "Podano wartość typu, która nie mogła być kodowana"
+       "json-error-unsupported-type": "Podano wartość typu, która nie mogła być kodowana",
+       "headline-anchor-title": "Link do tej sekcji"
 }
index 93869c2..c02cfe5 100644 (file)
        "tags-delete-explanation-active": "<strong>La tichëtta «$1» a l'é ancor ativa, e a seghitrà a esse aplicà ant l'avnì.</strong> Për fé chité sòn, ch'a vada ant ij pòst andoa la tichëtta a l'é aplicà, e ch'a la disativa ambelelà.",
        "tags-delete-reason": "Rason:",
        "tags-delete-submit": "Eliminé costa tichëtta ëd fasson ireversìbil",
+       "tags-delete-not-allowed": "Le tichëtte definìe da n'estension a peulo nen esse dëscancelà, gavà che l'estension a lo permëtta ëd fasson esplìssita.",
+       "tags-delete-not-found": "La tichëtta «$1» a esist pa.",
        "comparepages": "Confronté dle pàgine",
        "compare-page1": "Pàgina 1",
        "compare-page2": "Pàgina 2",
index c01ddf5..19c56c6 100644 (file)
        "otherlanguages": "په نورو ژبو کې",
        "redirectedfrom": "(له $1 نه مخ گرځېدلی)",
        "redirectpagesub": "د مخ گرځونې مخ",
-       "redirectto": "دې ته اړولې :",
+       "redirectto": "نوې مخ گرځېدنه:",
        "lastmodifiedat": "دا مخ وروستی ځل په $2، $1 بدلون موندلی.",
        "viewcount": "همدا مخ {{PLURAL:$1|يو وار|$1 واره}} کتل شوی.",
        "protectedpage": "ژغورلی مخ",
        "view-pool-error": "اوبخښۍ، دم گړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.\nډېر زيات کارنان د همدې مخ د کتلو په هڅه کې دي.\nلطفاً د دې مخ د کتلو د بيا هڅې نه دمخه يو څو شېبې صبر وکړۍ.\n\n$1",
        "pool-queuefull": "د بهير صف ډک دی",
        "pool-errorunknown": "ناجوته ستونزه",
-       "poolcounter-usage-error": "استعÙ\85اÙ\84 Ú©Û\90 Ø®Ø·Ø§:",
+       "poolcounter-usage-error": "د Ú©Ø§Ø±Û\90دÙ\84Ù\88 ØªÛ\90رÙ\88تÙ\86Ù\87: $1",
        "aboutsite": "د {{SITENAME}} په اړه",
        "aboutpage": "Project:په اړه",
        "copyright": "دا مېنځپانگه د $1 له مخې ستاسې لاسرسي ته پرته ده، خو هغه څه چې په خلاف يې وييل شوي.",
        "anonpreviewwarning": "''تاسې غونډال ته نه ياست ننوتي. خوندي کولو سره به ستاسې IP پته به د دې مخ د سمونونو په پېښليک کې ثبت شي.''",
        "missingcommenttext": "لطفاً تبصره لاندې وليکۍ.",
        "summary-preview": "د لنډيز مخليدنه:",
-       "subject-preview": "موضوع/سرليک مخکتنه:",
+       "subject-preview": "سکالو/سرليک مخکتنه:",
        "blockedtitle": "پر کارن بنديز لگېدلی",
        "blockedtext": "'''ستاسې د کارن-نوم يا آی پي پتې مخنيوی شوی.'''\n\nهمدا بنديز د $1 له خوا پر تاسې لږېدلی. او د همدې کړنې سبب ''$2'' دی.\n\n* د بنديز د پېل نېټه: $8\n* د بنديز د پای نېټه: $6\n* بنديزونه دي پر: $7\n\nتاسې کولای شی چې د $1 او يا هم د يو بل [[{{MediaWiki:Grouppage-sysop}}|پازوال]] سره اړيکې ټينگې کړی او د بنديز ستونزې مو هوارې کړی.\nتاسې نه شی کولای چې د 'کارن ته برېښلک لېږل' کړنې نه گټه پورته کړی تر څو چې تاسې د خپل گڼون په [[Special:Preferences|غوره توبونو]] کې يوه کره برېښليک پته نه وي ځانگړې کړې او تر دې بريده چې پر تاسې د هغې د کارولو بنديز نه وي لگېدلی.\nستاسې د دم مهال آی پي پته $3 ده، او ستاسې د بنديز پېژند #$5 دی. مهرباني وکړۍ د خپلې يادونې پر مهال د دغو دوو څخه د يوه او يا هم د دواړو ورکول مه هېروۍ.",
        "autoblockedtext": "په خپلکاريزه توگه ستاسې پر IP پتې بنديز لگېدلی، دا د دې په خاطر چې ستاسې پته د بل چا له خوا چې $1 پرې بنديز لگولی، کارېدلې.\nاو د بنديز سبب يې دا دی:\n\n:''$2''\n\n* د بنديز د پيل نېټه: $8\n* د بنديز د پای نېټه: $6\n* د بنديز د موخې سړی: $7\n\nتاسې کولای شی چې د $1 سره او يا هم د [[{{MediaWiki:Grouppage-sysop}}|پازوالانو]]  له ډلې نه يو چا سره اړيکې ټينگې کړی او د بنديز په اړه مو ورسره خبرې وکړۍ.\n\nدا مه هېروۍ چې تاسې د \"کارن ته برېښليک لېږل\" له اسانتياوؤ نه ګټه نه شی اخيستلای تر څو چې ستاسې د نومليکنې په وخت کې يا [[Special:Preferences|ستاسې د غوره توبونو په امستنو]] کې يوه کره برېښليک پته نه وي ځانگړې شوې، او يا هم د برېښليک لېږلو د چارو په کارولو مو بنديز نه وي لگېدلی.\n\nستاسې IP پته $3 ده او ستاسې د بنديز پېژند #$5 دی.\nد بنديز اړونده د اړيکو نيولو په وخت کې لطفاً د پورتني مالوماتو يادونه وکړۍ.",
        "upload-warning-subj": "د پورته کولو گواښ",
        "upload-proto-error": "ناسم پروتوکول",
        "upload-file-error": "کورنۍ ستونزه",
-       "upload-misc-error": "نامالومه اپلوډ خطا",
+       "upload-misc-error": "د پورته کېدنې نامالومه تېروتنه",
        "upload-http-error": "د HTTP يوه ستونزه رامېنځ ته شوې: $1",
        "backend-fail-notexists": "د $1 په نوم دوتنه نشته.",
        "backend-fail-delete": "د \"$1\" دوتنه ړنګه نه شوه.",
        "backend-fail-alreadyexists": "د $1 دوتنه له پخوا نه شته.",
-       "backend-fail-move": "\"$1\" دوتنه \"$2\" ته نشو ليږدولې",
-       "backend-fail-opentemp": "لنډمهاله دوتنه جوړېدای نه شي",
+       "backend-fail-move": "د \"$1\" دوتنه \"$2\" ته و نه ليږدېده.",
+       "backend-fail-opentemp": "لنډمهاله دوتنه و نه پرانيستل شوه.",
        "backend-fail-read": "د \"$1\" دوتنه نه شي لوستل کېدای.",
        "backend-fail-create": "د \"$1\" په دوتنه کې نور څه و نه ليکل شول.",
        "zip-wrong-format": "ځانگړې شوې دوتنه يوه ZIP دوتنه نه وه.",
-       "uploadstash-refresh": "د Ø¯Ù\88تÙ\86Ù\88 Ù\84Ú\93Ù\84Ù\8aÚ© Ø±Ø§ØªØ§Ø²Ù\87 Ú©Ú\93Û\8d",
+       "uploadstash-refresh": "د Ø¯Ù\88تÙ\86Ù\88 Ù\84Ú\93Ù\84Ù\8aÚ© Ø¨Ù\8aاتازÙ\87 Ú©Ù\88Ù\84",
        "img-auth-accessdenied": "لاسرسی رد شو",
        "img-auth-nofile": "د $1 په نوم کومه دوتنه نشته.",
        "http-invalid-url": "ناسم URL: $1",
        "listfiles_size": "کچه (بايټونه)",
        "listfiles_description": "څرگندونه",
        "listfiles_count": "بڼې",
-       "listfiles-show-all": "د Ø¯Ù\88Ù¼Ù\86Ù\88 Ù¾Ø®Ù\88اÙ\86Û\90 Ù\88رÚ\98Ù\86 Ù¾Ú©Û\90 Ø´Ø§Ù\85Ù\84 Ú©Ú\93Û\8d",
+       "listfiles-show-all": "د Ø§Ù\86Ú\81Ù\88رÙ\88Ù\86Ù\88 Ø²Ú\93Û\90 Ø¨Ú¼Û\90 Ø´Ø§Ù\85Ù\84Ù\88Ù\84",
        "listfiles-latestversion": "اوسنۍ بڼه",
        "listfiles-latestversion-yes": "هو",
        "listfiles-latestversion-no": "نه",
        "uploadnewversion-linktext": "د همدغې دوتنې نوې بڼه پورته کول",
        "shared-repo-from": "د $1 لخوا",
        "upload-disallowed-here": "تاسې د دې دوتنې دپاسه نشی ليکلی.",
-       "filerevert": "$1 Ø¨Ù\8aرتÙ\87 اړول",
-       "filerevert-legend": "دÙ\88تÙ\86Ù\87 Ø¨Ù\8aرتÙ\87 اړول",
+       "filerevert": "$1 Ø¨Ù\8aااړول",
+       "filerevert-legend": "دÙ\88تÙ\86Ù\87 Ø¨Ù\8aااړول",
        "filerevert-comment": "سبب:",
        "filerevert-submit": "په څټ گرځول",
        "filedelete": "$1 ړنگول",
        "unusedimagestext": "دا لاندينۍ دوتنې په هېڅ کوم مخ کې نه دي ټومبېدلي. لطفاً په پام کې وساتۍ چې نور وېبځايونه به د دغو دوتنو له يو دوتنې سره يو راسن يو آر ال (URL) ولري او لا تر اوسه به دوتنه د فعالې کارېدنې سره سره دلته پرته وي.",
        "notargettitle": "بې موخې",
        "nopagetitle": "داسې کوم مخ نشته",
+       "nopagetext": "کوم مخ مو چې وښوده هغه نشته.",
        "pager-newer-n": "{{PLURAL:$1|نوی 1|نوي $1}}",
        "pager-older-n": "{{PLURAL:$1|زوړ 1|زاړه $1}}",
        "suppress": "څارن",
        "linkshere": "دغه لانديني مخونه د '''[[:$1]]''' سره تړنې لري:",
        "nolinkshere": "د '''[[:$1]]''' سره هېڅ يو مخ هم تړنې نه لري .",
        "isredirect": "د مخ گرځونې مخ",
-       "istemplate": "Ù\88رګډېدنه",
+       "istemplate": "Ù\88رگډېدنه",
        "isimage": "د دوتنې تړنه",
        "whatlinkshere-prev": "{{PLURAL:$1|پخوانی|پخواني $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|راتلونکی|راتلونکي $1}}",
        "logentry-newusers-newusers": "د $1 کارن گڼون {{GENDER:$2|جوړ شو}}",
        "logentry-newusers-create": "د $1 کارن گڼون {{GENDER:$2|جوړ شو}}",
        "logentry-newusers-autocreate": "د $1 گڼون په اتوماتيک ډول {{GENDER:$2|جوړ شو}}",
+       "logentry-upload-upload": "$1 $3 {{GENDER:$2|ورپورته يې کړ}}",
        "rightsnone": "(هېڅ)",
        "revdelete-summary": "لنډيز سمول",
        "feedback-subject": "سکالو:",
index a909721..0bbcb07 100644 (file)
        "mergehistory-from": "Página de origem:",
        "mergehistory-into": "Página de destino:",
        "mergehistory-list": "Histórico de edições habilitadas para fusão",
-       "mergehistory-merge": "As edições de [[:$1]] a seguir poderão ser fundidas em [[:$2]]. Utilize a coluna de botões de opção para fundir apenas as edições feitas entre o intervalo de tempo especificado. Note que ao utilizar os links de navegação esta coluna será retornada a seus valores padrão.",
+       "mergehistory-merge": "As edições de [[:$1]] a seguir poderão ser fundidas em [[:$2]]. Utilize a coluna de botões de opção para fundir apenas as edições feitas até a que for selecionada. Note que ao utilizar os links de navegação esta coluna será retornada a seus valores padrão.",
        "mergehistory-go": "Exibir edições habilitadas a serem fundidas",
        "mergehistory-submit": "Fundir revisões",
        "mergehistory-empty": "Não existem edições habilitadas a serem fundidas.",
        "sp-contributions-search": "Navegar pelas contribuições",
        "sp-contributions-username": "Endereço de IP ou usuário:",
        "sp-contributions-toponly": "Mostrar somente as edições que sejam a última alteração",
-       "sp-contributions-newonly": "Mostrar somente as edições que criaram uma nova página.",
+       "sp-contributions-newonly": "Mostrar somente as criações de páginas",
        "sp-contributions-submit": "Pesquisar",
        "whatlinkshere": "Páginas afluentes",
        "whatlinkshere-title": "Páginas que têm links para \"$1\"",
index 1477393..c965e3f 100644 (file)
        "json-error-utf8": "Caracteres UTF-8 mal formatados, possivelmente codificado incorretamente",
        "json-error-recursion": "Uma ou mais referências recursivas no valor a ser codificado",
        "json-error-inf-or-nan": "Um ou mais valores NaN ou INF no valor a ser codificado",
-       "json-error-unsupported-type": "Foi dado um valor de um tipo que não pode ser codificado"
+       "json-error-unsupported-type": "Foi dado um valor de um tipo que não pode ser codificado",
+       "headline-anchor-title": "Ligação para esta seção"
 }
index f2abd03..9968cc9 100644 (file)
        "blockipsuccesstext": "Used in [[Special:Block]].\nThe title (subject) for this message is {{msg-mw|Blockipsuccesssub}}.\n\nParameters:\n* $1 - username, can be used for GENDER",
        "ipb-blockingself": "Used as confirmation message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Ipb-confirmhideuser}}",
        "ipb-confirmhideuser": "Used as confirmation message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Ipb-blockingself}}",
-       "ipb-confirmaction": "Confirmation message displayed to users asking them to think again before really blocking someone.",
+       "ipb-confirmaction": "Confirmation message displayed to users asking them to think again before really blocking someone.\n\n<code>to check</code> refers here to a check box with the text \"{{int:ipb-confirm}}\"",
        "ipb-edit-dropdown": "Shown beneath the user block form on the right side. It is a link to {{msg-mw|Ipbreason-dropdown|notext=1}}.\n\nSee also:\n* {{msg-mw|Delete-edit-reasonlist}}\n* {{msg-mw|Protect-edit-reasonlist}}",
        "ipb-unblock-addr": "Used as page title in [[Special:Block]], if the target user is specified.\n\nParameters:\n* $1 - target username\n\nSee also:\n* {{msg-mw|Ipb-unblock}}\n{{Identical|Unblock}}",
        "ipb-unblock": "Used as page title in [[Special:Block]], if the target user is not specified.\n\nSee also:\n* {{msg-mw|Ipb-unblock-addr}}",
        "blocklogpage": "{{doc-logpage}}\n\nThe page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").\n\n{{Identical|Block log}}",
        "blocklog-showlog": "Parameters:\n* $1 - (Optional) the blocked user. Can be used for GENDER\nSee also:\n* {{msg-mw|Blocklog-showsuppresslog}}\n* {{msg-mw|Globalblocking-showlog}}",
        "blocklog-showsuppresslog": "Parameters:\n* $1 - (Optional) the blocked user. Can be used for GENDER",
-       "blocklogentry": "This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:\n* $1 - the blocked user or IP (with link to contributions and talk)\n* $2 - the duration of the block (hours, days etc.) or the specified expiry date\n* $3 - contains \"(details) (''reason'')\", or empty string\nSee also:\n* {{msg-mw|Unblocklogentry}}\n* {{msg-mw|Reblock-logentry}}",
-       "reblock-logentry": "This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name.\n\nParameters:\n* $1 - the user being reblocked\n* $2 - the expiry time of the block\n* $3 - extra parameters like \"account creation blocked\" (they are automatically between brackets)",
+       "blocklogentry": "This is ''logentry'' message only used on IRC.\n* $1 - the blocked user or IP (with link to contributions and talk)\n* $2 - the duration of the block (hours, days etc.) or the specified expiry date\n* $3 - contains \"(details) (''reason'')\", or empty string\nSee also:\n* {{msg-mw|Unblocklogentry}}\n* {{msg-mw|Reblock-logentry}}",
+       "reblock-logentry": "This is ''logentry'' message only used on IRC.\n\nParameters:\n* $1 - the user being reblocked\n* $2 - the expiry time of the block\n* $3 - extra parameters like \"account creation blocked\" (they are automatically between brackets)",
        "blocklogtext": "Appears on top of [[Special:Log/block]].",
-       "unblocklogentry": "This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:\n* $1 is the user being unblocked",
+       "unblocklogentry": "This is ''logentry'' message only used on IRC.\n* $1 is the user being unblocked",
        "block-log-flags-anononly": "Used as a block log flag in [[Special:Log/block]] and in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Anononlyblock}}\n{{Related|Block-log-flags}}",
        "block-log-flags-nocreate": "Used as a block log flag in [[Special:Log/block]] and in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Createaccountblock}}\n{{Related|Block-log-flags}}",
        "block-log-flags-noautoblock": "Used as a block log flag in [[Special:Log/block]] and in [[Special:Block]].\n{{Related|Block-log-flags}}\n{{Identical|Autoblock disabled}}",
        "revdelete-uname-unhid": "Used on\n* {{msg-mw|logentry-delete-event}}\n* {{msg-mw|logentry-delete-revision}}\n* {{msg-mw|logentry-suppress-event}}\n* {{msg-mw|logentry-suppress-event}}",
        "revdelete-restricted": "Used as <code>$4</code> in the following messages when setting visibility restrictions for administrators:\n* {{msg-mw|Logentry-delete-event}}\n* {{msg-mw|Logentry-delete-revision}}\n* {{msg-mw|Logentry-suppress-event}}\n* {{msg-mw|Logentry-suppress-event}}",
        "revdelete-unrestricted": "Used as <code>$4</code> in the following messages when setting visibility restrictions for administrators:\n* {{msg-mw|Logentry-delete-event}}\n* {{msg-mw|Logentry-delete-revision}}\n* {{msg-mw|Logentry-suppress-event}}\n* {{msg-mw|Logentry-suppress-event}}",
+       "logentry-block-block": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string",
+       "logentry-block-unblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks",
+       "logentry-block-reblock": "{{Logentry|[[Special:Log/block]]}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string",
+       "logentry-suppress-block": "{{Logentry}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string",
+       "logentry-suppress-reblock": "{{Logentry}}\n* $4 - user name for gender or empty string for autoblocks\n* $5 - the block duration, localized and formatted with the english tooltip\n* $6 - block detail flags or empty string",
        "logentry-merge-merge": "{{Logentry|[[Special:Log/merge]]}}\n* $4 - the page into which the content is merged\n* $5 - a timestamp of limit\n\nThe log and its associated special page 'MergeHistory' is not enabled by default.\n\nPlease note that the parameters in a log entry will appear in the log only in the default language of the wiki. View [[Special:Log]] for examples on translatewiki.net with English default language.",
        "logentry-move-move": "{{Logentry|[[Special:Log/move]]}}\nParameter $4, the target page, is also not visible to parser functions.",
        "logentry-move-move-noredirect": "{{Logentry|[[Special:Log/move]]}}\nParameter $4, the target page, is also not visible to parser functions.",
index de08d6e..2a7d860 100644 (file)
        "revdelete-uname-unhid": "numele de utilizator afișat",
        "revdelete-restricted": "restricții aplicate administratorilor",
        "revdelete-unrestricted": "restricții eliminate pentru administratori",
+       "logentry-block-block": "$1 {{GENDER:$2|a blocat}} utilizatorul {{GENDER:$4|$3}} pe o perioadă de $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|a deblocat}} utilizatorul {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|a schimbat}} parametrii blocării pentru utilizatorul {{GENDER:$4|$3}} cu o perioadă de expirare de $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|a blocat}} utilizatorul {{GENDER:$4|$3}} pe o perioadă de $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|a schimbat}} parametrii blocării pentru utilizatorul {{GENDER:$4|$3}} cu o perioadă de expirare de $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|a unificat}} $3 cu $4 (versiuni de până la $5)",
        "logentry-move-move": "$1 {{GENDER:$2|a redenumit}} pagina $3 în $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|a redenumit}} pagina $3 în $4 fără a lăsa o redirecționare în loc",
        "json-error-utf8": "Caractere UTF-8 deformate, posibil incorect codificate",
        "json-error-recursion": "Una sau mai multe referințe recursive în valoarea pentru codificat",
        "json-error-inf-or-nan": "Una sau mai valori NAN sau INF în valoarea pentru codificat",
-       "json-error-unsupported-type": "A fost furnizată o valoare de un tip care nu poate fi codificat"
+       "json-error-unsupported-type": "A fost furnizată o valoare de un tip care nu poate fi codificat",
+       "headline-anchor-title": "Legătură către această secțiune"
 }
index d2e05ef..d43ca7d 100644 (file)
        "tooltip-pt-mycontris": "Суруйбут/уларыппыт сирэйдэриҥ тиһиктэрэ",
        "tooltip-pt-login": "Манна бэйэҕин билиһиннэриэххин сөп (булгуччута суох).",
        "tooltip-pt-logout": "Тахсыы",
+       "tooltip-pt-createaccount": "Манна киирэргэ бэлиэтэнэр уонна куруук ол аатынан киирэр ордук; ол булгуччута суох",
        "tooltip-ca-talk": "Ыстатыйаны ырытыы",
        "tooltip-ca-edit": "Бу сирэйи уларытыахха сөп. Бука диэн бастаан хайдах буоларын көрөн баран уларыт.",
        "tooltip-ca-addsection": "Саҥа салааны саҕалааһын",
index 242c943..b4852eb 100644 (file)
        "revdelete-uname-unhid": "användarnamn synligt",
        "revdelete-restricted": "satte begränsningar för administratörer",
        "revdelete-unrestricted": "tog bort begränsningar för administratörer",
+       "logentry-block-block": "$1 {{GENDER:$2|blockerade}} {{GENDER:$4|$3}} med en varaktighet på $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|upphävde blockeringen för}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|ändrade}} blockeringsinställningar för {{GENDER:$4|$3}} med en varaktighet på $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|blockerade}} {{GENDER:$4|$3}} med en varaktighet på $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|ändrade}} blockeringsinställningar för {{GENDER:$4|$3}} med en varaktighet på $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|slog ihop}} $3 i $4 (versioner t.o.m. $5)",
        "logentry-move-move": "$1 {{GENDER:$2|flyttade}} sidan $3 till $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|flyttade}} sidan $3 till $4 utan att lämna en omdirigering",
        "json-error-utf8": "Felaktiga UTF-8-tecken, möjligen felkodade",
        "json-error-recursion": "En eller flera rekursiva referenser i värde som ska kodas",
        "json-error-inf-or-nan": "En eller flera NAN- eller INF-värden i värdet som ska kodas",
-       "json-error-unsupported-type": "Ett värde av en typ som inte kan kodas angavs"
+       "json-error-unsupported-type": "Ett värde av en typ som inte kan kodas angavs",
+       "headline-anchor-title": "Länka till detta avsnitt"
 }
index 9da0024..5153a89 100644 (file)
@@ -66,7 +66,8 @@
                        "Violetanka",
                        "Trockya",
                        "Aşilleus",
-                       "BatuhanBensoy"
+                       "BatuhanBensoy",
+                       "Mavrikant"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "prefs-personal": "Kullanıcı bilgileri",
        "prefs-rc": "Son değişiklikler",
        "prefs-watchlist": "İzleme listesi",
+       "prefs-editwatchlist": "İzleme listesini düzenle",
        "prefs-watchlist-days": "İzleme listesinde görüntülenecek gün sayısı:",
        "prefs-watchlist-days-max": "en fazla $1 {{PLURAL:$1|gün|gün}}",
        "prefs-watchlist-edits": "Genişletilmiş izleme listesinde gösterilecek değişiklik sayısı:",
        "prefs-help-signature": "Tartışma sayfalarındaki yorumlar \"<nowiki>~~~~</nowiki>\" ile imzalanmalıdır, bu imzanıza ve zaman damgasına dönüştürülür.",
        "badsig": "Geçersiz ham imza; HTML etiketlerini kontrol edin.",
        "badsiglength": "İmzanız çok uzun.\n$1 {{PLURAL:$1|karakterin|karakterin}} altında olmalı.",
-       "yourgender": "Nasıl açıklamayı tercih edersiniz?",
-       "gender-unknown": "Söylemek istemiyorsanız",
-       "gender-male": "Viki sayfalarını erkek olarak düzenliyorum",
-       "gender-female": "Viki sayfalarını kadın olarak düzenliyorum",
+       "yourgender": "Cinsel kimlik?",
+       "gender-unknown": "Açıklamak istemiyorum",
+       "gender-male": "Erkek",
+       "gender-female": "Kadın",
        "prefs-help-gender": "Bu tercih ayarı isteğe bağlıdır.\nYazılımda söz değerlerinin başlarında bulunan cinsiyete uygun gramerler için kullanılır.\nBu bilgiler herkes tarafından görülebilir.",
        "email": "E-posta",
        "prefs-help-realname": "Gerçek ismi vermek isteğe bağlıdır.\nEğer verirseniz yaptığınız çalışmalara ithafen kullanılabilir.",
        "javascripttest-pagetext-skins": "Testleri koşmak için bir tema seçin:",
        "javascripttest-qunit-intro": "mediawiki.org üzerinden [$1 deneme belgelerine] bakınız.",
        "tooltip-pt-userpage": "Kullanıcı sayfanız",
-       "tooltip-pt-anonuserpage": "The user page for the ip you",
+       "tooltip-pt-anonuserpage": "IP adresine ait bir kullanıcı sayfasını düzenliyorsunuz",
        "tooltip-pt-mytalk": "Mesaj sayfanız",
        "tooltip-pt-anontalk": "Bu IP adresinden yapılmış değişiklikleri tartış",
        "tooltip-pt-preferences": "Tercihleriniz (ayarlarınız)",
index 6f2145c..1f7f5aa 100644 (file)
        "right-override-export-depth": "експорт сторінок, включаючи пов'язані сторінки з глибиною до 5",
        "right-sendemail": "відправляти пошту іншим користувачам",
        "right-passwordreset": "Перегляд повідомлень електронної пошти для зміни паролю",
-       "right-managechangetags": "Створення та вилучення [[Special:Tags|тегів]] з бази даних",
+       "right-managechangetags": "Створення та вилучення [[Special:Tags|міток]] з бази даних",
        "newuserlogpage": "Журнал нових користувачів",
        "newuserlogpagetext": "Список нещодавно зареєстрованих користувачів.",
        "rightslog": "Журнал прав користувача",
        "action-viewmyprivateinfo": "перегляд своєї приватної інформації",
        "action-editmyprivateinfo": "редагування своєї приватної інформації",
        "action-editcontentmodel": "редагувати модель вмісту сторінки",
-       "action-managechangetags": "створення та вилучення тегів з бази даних",
+       "action-managechangetags": "створення та вилучення міток з бази даних",
        "nchanges": "$1 {{PLURAL:$1|зміна|зміни|змін}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|зміна з останнього візиту|зміни з останнього візиту|змін з останнього візиту}}",
        "enhancedrc-history": "історія",
        "upload-recreate-warning": "'''Увага. Файл з такою назвою був раніше вилучений або перейменований.''\n\nДалі наведено журнал вилучень і перейменувань цього файлу:",
        "uploadtext": "За допомогою цієї форми ви можете завантажити файли на сервер.\n\nЯкщо файл із зазначеною вами назвою вже існує в проекті, то його буде замінено без попередження. Тому, якщо ви не збираєтесь оновлювати файл,\nбуло б непогано перевірити, чи такий файл уже існує.\n\nЩоби переглянути вже завантажені файли,\nзайдіть на: [[Special:FileList|список завантажених файлів]].\n\nЗавантаження відображаються в [[Special:Log/upload|журналі завантажень]], вилучення – у [[Special:Log/delete|журналі вилучень]].\n\nДля вставки зображень в статті можна використовувати такі рядки:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}:Назва_зображення.jpg<nowiki>]]</nowiki></code>''', щоб використати повну версію файлу\n* '''<code><nowiki>[[</nowiki>{{ns:file}}:Назва_зображення.png|200px|thumb|left|Підпис під зображенням<nowiki>]]</nowiki></code>''', щоб використати зображення у рамці зліва сторінки з підписом під зображенням\n\nдля інших медіа-файлів використовуйте рядок виду:\n* '''<code><nowiki>[[</nowiki>{{ns:media}}:Назва_файлу.ogg<nowiki>]]</nowiki></code>'''.",
        "upload-permitted": "Дозволен{{PLURAL:$2|ий тип|і типи}} файлів: $1.",
-       "upload-preferred": "Бажан{{PLURAL:$2|й тип|і типи}} файлів: $1.",
+       "upload-preferred": "Ð\91ажан{{PLURAL:$2|ий Ñ\82ип|Ñ\96 Ñ\82ипи}} Ñ\84айлÑ\96в: $1.",
        "upload-prohibited": "Заборонен{{PLURAL:$2|ий тип|і типи}} файлів: $1.",
        "uploadlogpage": "Журнал завантажень",
        "uploadlogpagetext": "Нижче наведено список останніх завантажених файлів.\nГляньте [[Special:NewFiles|галерею нових зображень]] для більш візуального огляду.",
        "tags-activate": "активувати",
        "tags-deactivate": "вимкнути",
        "tags-hitcount": "$1 {{PLURAL:$1|зміна|зміни|змін}}",
-       "tags-manage-no-permission": "У Вас нема дозволу керувати змінами тегів.",
-       "tags-create-heading": "Створити новий тег",
-       "tags-create-explanation": "За замовчуванням, новостворені теги будуть доступні для використання користувачами і ботами.",
-       "tags-create-tag-name": "Назва тега:",
+       "tags-manage-no-permission": "У Вас нема дозволу керувати змінами міток.",
+       "tags-create-heading": "Створити нову мітку",
+       "tags-create-explanation": "За замовчуванням, новостворені мітки будуть доступні для використання користувачами і ботами.",
+       "tags-create-tag-name": "Назва мітки:",
        "tags-create-reason": "Причина:",
        "tags-create-submit": "Створити",
-       "tags-create-no-name": "Ви повинні вказати назву тега.",
-       "tags-create-invalid-chars": "Назви тегів не повинні містити коми (<code>,</code>) або косої риски (<code>/</code>).",
-       "tags-create-invalid-title-chars": "Назви тегів не повинні містити символи, які не можна використовувати в заголовках сторінок.",
-       "tags-create-already-exists": "Тег «$1» вже існує.",
-       "tags-create-warnings-above": "При спробі створити тег «$1» виникли такі {{PLURAL:$2|попередження}}:",
-       "tags-create-warnings-below": "Ви хочете продовжити створення тега?",
-       "tags-delete-title": "Вилучити тег",
+       "tags-create-no-name": "Ви повинні вказати назву мітки.",
+       "tags-create-invalid-chars": "Назви міток не повинні містити коми (<code>,</code>) або косі риски (<code>/</code>).",
+       "tags-create-invalid-title-chars": "Назви міток не повинні містити символи, які не можна використовувати в назвах сторінок.",
+       "tags-create-already-exists": "Мітка «$1» вже існує.",
+       "tags-create-warnings-above": "При спробі створити мітку «$1» {{PLURAL:$2|з'явились такі|1=з'явилось таке}} попередження:",
+       "tags-create-warnings-below": "Ви хочете продовжити створення мітки?",
+       "tags-delete-title": "Вилучити мітку",
+       "tags-delete-explanation-initial": "Ви збираєтеся вилучити мітку «$1» з бази даних.",
+       "tags-delete-explanation-in-use": "Його буде вилучено з {{PLURAL:$2|$2 версії/запису журналу|усіх $2 версій та/або записів журналів}}, у яких він зараз застосовується.",
+       "tags-delete-explanation-warning": "Ця дія є <strong>незворотною</strong> і <strong>не може бути скасована</strong>, навіть адміністраторами бази даних. Переконайтеся, що Ви хочете вилучити саме цю мітку.",
+       "tags-delete-explanation-active": "<strong>Мітка «$1» все ще активна і буде застосовуватися надалі.</strong> Щоб припинити це, перейдіть туди, де вказане її застосування і вимкніть її там.",
+       "tags-delete-reason": "Причина:",
+       "tags-delete-submit": "Незворотно видалити цю мітку",
+       "tags-delete-not-allowed": "Мітки, визначені розширенням, не можуть бути вилучені, якщо тільки розширення не дозволяє це окремо.",
+       "tags-delete-not-found": "Мітка «$1» не існує.",
+       "tags-delete-too-many-uses": "Міткою «$1» понад $2 {{PLURAL:$2|редагування|редагування|редагувань}}, і це означає, що її не можна вилучити.",
+       "tags-delete-warnings-after-delete": "Мітку «$1» було успішно вилучено, але {{PLURAL:$2|з'явились такі|1=з'явилось таке}} попередження:",
+       "tags-activate-title": "Активувати мітку",
+       "tags-activate-question": "Ви збираєтеся активувати мітку «$1».",
+       "tags-activate-reason": "Причина:",
+       "tags-activate-not-allowed": "Неможливо активувати мітку «$1».",
+       "tags-activate-not-found": "Мітка «$1» не існує.",
+       "tags-activate-submit": "Активувати",
+       "tags-deactivate-title": "Вимкнути мітку",
+       "tags-deactivate-question": "Ви збираєтеся вимкнути мітку «$1».",
+       "tags-deactivate-reason": "Причина:",
+       "tags-deactivate-not-allowed": "Неможливо вимкнути мітку «$1».",
+       "tags-deactivate-submit": "Вимкнути",
        "comparepages": "Порівняння сторінок",
        "compare-page1": "Сторінка 1",
        "compare-page2": "Сторінка 2",
        "logentry-upload-upload": "$1 {{GENDER:$2|завантажив|завантажила}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|завантажив|завантажила}} нову версію $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|завантажив|завантажила}} $3",
+       "log-name-managetags": "Журнал управління мітками",
+       "log-description-managetags": "На цій сторінці перераховані завдання управління, пов'язані з [[Special:Tags|мітками]]. Журнал містить тільки дії, виконані вручну адміністратором; мітки можуть бути створені або видалені програмним забезпеченням вікі без запису в цей журнал.",
+       "logentry-managetags-create": "$1 {{GENDER:$2|створив|створила}} мітку «$4»",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|вилучив|вилучила}} мітку «$4» (вилучено з $5 {{PLURAL:$5|версії чи запису журналу|версій та/або записів журналу}})",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|активував|активувала}} мітку «$4» для використання користувачами і ботами",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|вимкнув|вимкнула}} мітку «$4» для використання користувачами і ботами",
        "rightsnone": "(нема)",
        "revdelete-summary": "коментар до редагування",
        "feedback-bugornote": "Якщо ви готові описати технічні проблеми в деталях, будь ласка, [$1 повідомте про помилку].\nАбо можете використати форму нижче. Ваш коментар буде додано на сторінку \"[$3  $2]\", разом з іменем користувача.",
        "log-description-pagelang": "Це журнал змін мови сторінок.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|змінив|змінила}} мову сторінки для $3 з $4 на $5.",
        "default-skin-not-found": "Ой! Типова тема оформлення для вашої вікі <code>$wgDefaultSkin</code>, <code>$1</code> недоступна.\n\nВаша установка, вірогідно, містить наступні теми оформлення. Див.  [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для отримання інформації про те, як включити теми оформлення і вибрати типову тему.\n\n\n$2\n\n\n; Якщо ви щойно встановили MediaWiki:\n: Ви, мабуть, зробили це з Git або безпосередньо з вихідного коду, використовуючи інший спосіб. Тоді можливе наступне. Спробуйте встановити деякі теми з [https://www.mediawiki.org/wiki/Category:All_skins каталогу тем оформлення сайту mediawiki.org]:\n:* Завантаживши [https://www.mediawiki.org/wiki/Download архів файлів], який містить декілька тем оформлення і розширень. Ви можете скопіювати теку <code>skins/</code> з нього.\n:* Завантаживши архіви окремих тем оформлення з [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Склонувавши один з репозиторіїв <code>mediawiki/skins/*</code> через git у підтеку <code dir=\"ltr\">skins/</code> теки, де встановлена MediaWiki.\n: Це не повинно зашкодити вашому сховищу, якщо ви MediaWiki-розробник. Див. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] для отримання інформації про те, як включити теми оформлення і вибрати типову тему.\n\n; Якщо ви щойно оновили MediaWiki:\n: MediaWiki версії 1.24 і новійша більше не включає автоматично встановлені теми (див. [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]).\nВи можете вставити наступні рядки в <code>LocalSettings.php</code>, щоб включити всі встановлені теми оформлення: \n\n\n<pre dir=\"ltr\">$3</pre>\n\n\n; Якщо ви щойно змінили <code>LocalSettings.php</code>:\n: Повторно перевірте назви тем на наявність помилок.",
-       "default-skin-not-found-no-skins": "Ð\9eй! Ð¢Ð¸Ð¿Ð¾Ð²Ð° Ñ\82ема Ð¾Ñ\84оÑ\80мленнÑ\8f Ð´Ð»Ñ\8f Ð²Ð°Ñ\88оÑ\97 Ð²Ñ\96кÑ\96 <code>$wgDefaultSkin</code>, <code>$1</code> Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пна.\n\n\nУ Ð²Ð°Ñ\81 Ð½ÐµÐ¼Ð°Ñ\94 Ð²Ñ\81Ñ\82ановлениÑ\85 Ñ\82ем Ð¾Ñ\84оÑ\80мленнÑ\8f.\n\n\n; Ð¯ÐºÑ\89о Ð²Ð¸ Ñ\89ойно Ð²Ñ\81Ñ\82ановили Ð°Ð±Ð¾ Ð¾Ð½Ð¾Ð²Ð¸Ð»Ð¸ MediaWiki:\n: Ð\92и, Ð¼Ð°Ð±Ñ\83Ñ\82Ñ\8c, Ð·Ñ\80обили Ñ\86е Ð· Git Ð°Ð±Ð¾ Ð±ÐµÐ·Ð¿Ð¾Ñ\81еÑ\80еднÑ\8cо Ð· Ð²Ð¸Ñ\85Ñ\96дного ÐºÐ¾Ð´Ñ\83, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\87и Ñ\96нÑ\88ий Ñ\81поÑ\81Ñ\96б. Ð¢Ð¾Ð´Ñ\96 Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ñ\82аке. MediaWiki Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 1.24 Ð°Ð±Ð¾ Ð½Ð¾Ð²Ñ\96Ñ\88а Ð½Ðµ Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\82еми Ð¾Ñ\84оÑ\80мленнÑ\8f Ð² Ð¾Ñ\81новномÑ\83 Ñ\80епозиÑ\82оÑ\80Ñ\96Ñ\97. Ð¡Ð¿Ñ\80обÑ\83йÑ\82е Ð²Ñ\81Ñ\82ановиÑ\82и Ð´ÐµÑ\8fкÑ\96 Ñ\82еми Ð· [https://www.mediawiki.org/wiki/Category:All_skins ÐºÐ°Ñ\82алогÑ\83 Ñ\82ем Ð¾Ñ\84оÑ\80мленнÑ\8f Ñ\81айÑ\82Ñ\83 mediawiki.org]:\n:* Ð\97аванÑ\82аживÑ\88и [https://www.mediawiki.org/wiki/Download Ð°Ñ\80Ñ\85Ñ\96в Ñ\84айлÑ\96в], Ñ\8fкий Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ð´ÐµÐºÑ\96лÑ\8cка Ñ\82ем Ð¾Ñ\84оÑ\80мленнÑ\8f Ñ\96 Ñ\80озÑ\88иÑ\80енÑ\8c. Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\81копÑ\96Ñ\8eваÑ\82и Ñ\82екÑ\83 <code>skins/</code> Ð· Ð½Ñ\8cого.\n:* Ð¡ÐºÐ»Ð¾Ð½Ñ\83вавÑ\88и Ð¾Ð´Ð¸Ð½ Ð· Ñ\80епозиÑ\82оÑ\80Ñ\96Ñ\97в <code>mediawiki/skins/*</code> Ñ\87еÑ\80ез git Ð² Ð¿Ñ\96дÑ\82екÑ\83 <code dir=\"ltr\">skins/</code> Ñ\82еки, Ð´Ðµ Ð²Ñ\81Ñ\82ановлена MediaWiki.\n: Ð¦Ðµ Ð½Ðµ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð¾ Ð·Ð°Ñ\88кодиÑ\82и Ð²Ð°Ñ\88омÑ\83 Ñ\81Ñ\85овиÑ\89Ñ\83, Ñ\8fкÑ\89о Ð²Ð¸ MediaWiki-Ñ\80озÑ\80обник. Ð\94ив. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] Ð´Ð»Ñ\8f Ð¾Ñ\82Ñ\80иманнÑ\8f Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 Ð¿Ñ\80о Ñ\82е, Ñ\8fк Ð²ÐºÐ»Ñ\8eÑ\87иÑ\82и Ñ\82еми Ð¾Ñ\84оÑ\80мленнÑ\8f Ñ\96 Ð²Ð¸Ð±Ñ\80аÑ\82и Ñ\82иповÑ\83 Ñ\82емÑ\83.",
+       "default-skin-not-found-no-skins": "Ð\9eй! Ð¢ÐµÐ¼Ð° Ð¾Ñ\84оÑ\80мленнÑ\8f Ð´Ð»Ñ\8f Ð\92аÑ\88оÑ\97 Ð²Ñ\96кÑ\96 Ð·Ð° Ð·Ð°Ð¼Ð¾Ð²Ñ\87Ñ\83ваннÑ\8fм, Ð²Ð¸Ð·Ð½Ð°Ñ\87ена Ñ\83 <code>$wgDefaultSkin</code> Ñ\8fк <code>$1</code> Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пна.\n\n\nУ Ð\92аÑ\81 Ð½ÐµÐ¼Ð°Ñ\94 Ð²Ñ\81Ñ\82ановлениÑ\85 Ñ\82ем Ð¾Ñ\84оÑ\80мленнÑ\8f.\n\n\n; Ð¯ÐºÑ\89о Ð\92и Ñ\89ойно Ð²Ñ\81Ñ\82ановили Ð°Ð±Ð¾ Ð¾Ð½Ð¾Ð²Ð¸Ð»Ð¸ MediaWiki:\n: Ð\92и, Ð¼Ð°Ð±Ñ\83Ñ\82Ñ\8c, Ð·Ñ\80обили Ñ\86е Ð· Git Ð°Ð±Ð¾ Ð±ÐµÐ·Ð¿Ð¾Ñ\81еÑ\80еднÑ\8cо Ð· Ð²Ð¸Ñ\85Ñ\96дного ÐºÐ¾Ð´Ñ\83, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\87и Ñ\96нÑ\88ий Ñ\81поÑ\81Ñ\96б. Ð¢Ð¾Ð´Ñ\96 Ñ\86е Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾. MediaWiki Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97 1.24 Ð°Ð±Ð¾ Ð½Ð¾Ð²Ñ\96Ñ\88а Ð½Ðµ Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\82еми Ð¾Ñ\84оÑ\80мленнÑ\8f Ð² Ð¾Ñ\81новномÑ\83 Ñ\80епозиÑ\82оÑ\80Ñ\96Ñ\97. Ð¡Ð¿Ñ\80обÑ\83йÑ\82е Ð²Ñ\81Ñ\82ановиÑ\82и Ð´ÐµÑ\8fкÑ\96 Ñ\82еми Ð· [https://www.mediawiki.org/wiki/Category:All_skins ÐºÐ°Ñ\82алогÑ\83 Ñ\82ем Ð¾Ñ\84оÑ\80мленнÑ\8f Ñ\81айÑ\82Ñ\83 mediawiki.org]:\n:* Ð\97аванÑ\82аживÑ\88и [https://www.mediawiki.org/wiki/Download Ð°Ñ\80Ñ\85Ñ\96в Ñ\84айлÑ\96в], Ñ\8fкий Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ð´ÐµÐºÑ\96лÑ\8cка Ñ\82ем Ð¾Ñ\84оÑ\80мленнÑ\8f Ñ\96 Ñ\80озÑ\88иÑ\80енÑ\8c. Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\81копÑ\96Ñ\8eваÑ\82и Ñ\82екÑ\83 <code>skins/</code> Ð· Ð½Ñ\8cого.\n:* Ð\97аванÑ\82аживÑ\88и Ð¾ÐºÑ\80емÑ\96 Ð°Ñ\80Ñ\85Ñ\96ви Ñ\82ем Ð· [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Ð\9aлонÑ\83вавÑ\88и Ð¾Ð´Ð¸Ð½ Ð· Ñ\80епозиÑ\82оÑ\80Ñ\96Ñ\97в <code>mediawiki/skins/*</code> Ñ\87еÑ\80ез Git Ð² Ð¿Ñ\96дÑ\82екÑ\83 <code dir=\"ltr\">skins/</code> Ñ\82еки, Ð´Ðµ Ð²Ñ\81Ñ\82ановлена MediaWiki.\n: Ð¦Ðµ Ð½Ðµ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð¾ Ð·Ð°Ñ\88кодиÑ\82и Ð\92аÑ\88омÑ\83 Ñ\81Ñ\85овиÑ\89Ñ\83, Ñ\8fкÑ\89о Ð\92и MediaWiki-Ñ\80озÑ\80обник. Ð\94ив. [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual:Skin configuration] Ð´Ð»Ñ\8f Ð¾Ñ\82Ñ\80иманнÑ\8f Ñ\96нÑ\84оÑ\80маÑ\86Ñ\96Ñ\97 Ð¿Ñ\80о Ñ\82е, Ñ\8fк Ð²ÐºÐ»Ñ\8eÑ\87иÑ\82и Ñ\82еми Ð¾Ñ\84оÑ\80мленнÑ\8f Ñ\96 Ð²Ð¸Ð±Ñ\80аÑ\82и Ñ\82емÑ\83 Ð·Ð° Ð·Ð°Ð¼Ð¾Ð²Ñ\87Ñ\83ваннÑ\8fм.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (увімкнено)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''вимкнено''')",
        "mediastatistics": "Медіа-статистика",
        "json-error-utf8": "Спотворені символи UTF-8, можливо, неправильно закодовано",
        "json-error-recursion": "Необхідність закодувати одне чи більше рекурсивних посилань",
        "json-error-inf-or-nan": "Необхідність закодувати одне чи більше значення NAN або INF",
-       "json-error-unsupported-type": "Було вказано значення типу, який не вдається закодувати"
+       "json-error-unsupported-type": "Було вказано значення типу, який не вдається закодувати",
+       "headline-anchor-title": "Посилання на цей розділ"
 }
index 244f3e7..5b0e2d1 100644 (file)
        "history-feed-title": "Oʻzgarishlar tarixi",
        "history-feed-description": "Vikidagi mazkur sahifaning oʻzgarishlar tarixi",
        "history-feed-item-nocomment": "$1 $2 da",
-       "rev-deleted-comment": "(tahrir izohi o'chirildi)",
+       "rev-deleted-comment": "(tahrir izohi oʻchirilgan)",
        "rev-deleted-user": "(muallif nomi oʻchirilgan)",
        "rev-deleted-event": "(jurnal tafsilotlari o‘chirildi)",
        "rev-delundel": "koʻrsatish/yashirish",
index 4fd4e91..b232841 100644 (file)
        "revdelete-uname-unhid": "公开用户名",
        "revdelete-restricted": "应用对管理员的限制",
        "revdelete-unrestricted": "删除对管理员的限制",
+       "logentry-block-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
+       "logentry-block-unblock": "$1{{GENDER:$2|解封了}}{{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1将{{GENDER:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
+       "logentry-suppress-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
+       "logentry-suppress-reblock": "$1将{{GENDER:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
        "logentry-merge-merge": "$1将$3{{GENDER:$2|合并}}至$4(修订版本至$5)",
        "logentry-move-move": "$1{{GENDER:$2|移动}}页面$3至$4",
        "logentry-move-move-noredirect": "$1{{GENDER:$2|移动}}页面$3至$4,不留重定向",
index bed7c68..e88450d 100644 (file)
        "history_short": "歷史",
        "updatedmarker": "自我最後一次訪問以後的更新",
        "printableversion": "可列印版",
-       "permalink": "靜態連結",
+       "permalink": "永久連結",
        "print": "列印",
        "view": "檢視",
        "view-foreign": "用 $1 檢視",
        "userlogin-loggedin": "您目前已登入 {{GENDER:$1|$1}} 使用者,\n請使用下列表單改登入另一位使用者。",
        "userlogin-createanother": "建立另一個帳號",
        "createacct-emailrequired": "電子郵件位址",
-       "createacct-emailoptional": "電子郵件位址 (選填)",
-       "createacct-email-ph": "輸入您的電子郵件址",
+       "createacct-emailoptional": "電子郵件地址(選填)",
+       "createacct-email-ph": "輸入您的電子郵件址",
        "createacct-another-email-ph": "輸入電子郵件位址",
        "createaccountmail": "使用臨時的隨機密碼,並將它傳送到指定的電子郵件位址",
        "createacct-realname": "真實姓名 (選填)",
        "templatesused": "此頁面使用了以下{{PLURAL:$1|模板}}:",
        "templatesusedpreview": "此預覽使用了以下{{PLURAL:$1|模板}}:",
        "templatesusedsection": "此頁面使用了以下 {{PLURAL:$1|模板}} :",
-       "template-protected": "(受保護)",
-       "template-semiprotected": "(受半保護)",
+       "template-protected": "(受保護)",
+       "template-semiprotected": "(受半保護)",
        "hiddencategories": "此頁面屬於 {{PLURAL:$1|1 個隱藏分類|$1 個隱藏分類}}的成員:",
        "edittools": "<!-- 此處的文字將被顯示在編輯和上傳表單以下。 -->",
        "nocreatetext": "{{SITENAME}} 已限制建立新頁面的功能。 {{GENDER:|你|妳|你}}可返回並編輯既有的頁面,或者 [[Special:UserLogin|登入或建立新帳號]]。",
        "revertmerge": "取消合併",
        "mergelogpagetext": "以下是最近合併頁面歷史的清單。",
        "history-title": "\"$1\" 的修訂歷史",
-       "difference-title": "$1:修訂間的差異",
+       "difference-title": "「$1」的修訂間的差異",
        "difference-title-multipage": "頁面 \"$1\" 與 \"$2\" 間的差異",
        "difference-multipage": "(頁面間的差異)",
        "lineno": "行 $1:",
        "diff-multi-manyusers": "(未顯示由超過 $2 位使用者於中間所作的 $1 次修訂)",
        "difference-missing-revision": "查無此差異 ($1) 中的{{PLURAL:$2|1 次修訂|$2 次修訂}}。\n\n這通常是因為差異的連結過時,頁面已被刪除。\n詳情資訊請參閱 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。",
        "searchresults": "搜尋結果",
-       "searchresults-title": "\"$1\" 的搜尋結果",
+       "searchresults-title": "「$1」的搜尋結果",
        "titlematches": "頁面標題符合",
        "textmatches": "頁面內容符合",
        "notextmatches": "沒有符合的頁面內容",
        "searchprofile-advanced": "進階",
        "searchprofile-articles-tooltip": "在 $1 中搜尋",
        "searchprofile-images-tooltip": "搜尋檔案",
-       "searchprofile-everything-tooltip": "搜尋所有內容 (包含對話頁面)",
+       "searchprofile-everything-tooltip": "搜尋所有內容(包含對話頁面)",
        "searchprofile-advanced-tooltip": "搜尋自訂命名空間",
-       "search-result-size": "$1 ($2 個字)",
+       "search-result-size": "$1 ({{PLURAL:$2|1 個字|$2 個字}})",
        "search-result-category-size": "$1 位成員 ($2 個子分類,$3 個檔案)",
        "search-redirect": "(重新導向自 $1)",
        "search-section": "(章節 $1)",
        "recentchanges-summary": "追蹤 Wiki 中此頁面的近期變更。",
        "recentchanges-noresult": "於指定時間內沒有符合條件的變更。",
        "recentchanges-feed-description": "追蹤 Wiki 中此訂閱來源的近期變更。",
-       "recentchanges-label-newpage": "該編輯建立新頁面",
+       "recentchanges-label-newpage": "該編輯建立新頁面",
        "recentchanges-label-minor": "該編輯是一個小修訂",
        "recentchanges-label-bot": "該編輯由機器人執行",
        "recentchanges-label-unpatrolled": "該編輯尚未巡查",
        "rcshowhideliu": "$1 已註冊的使用者",
        "rcshowhideliu-show": "顯示",
        "rcshowhideliu-hide": "隱藏",
-       "rcshowhideanons": "$1 匿名使用者",
+       "rcshowhideanons": "$1 匿名使用者",
        "rcshowhideanons-show": "顯示",
        "rcshowhideanons-hide": "隱藏",
        "rcshowhidepatr": "$1 巡查過的編輯",
        "sp-contributions-newonly": "只顯示建立頁面的編輯",
        "sp-contributions-submit": "搜尋",
        "whatlinkshere": "連入頁面",
-       "whatlinkshere-title": "連結到 \"$1\" 的頁面",
+       "whatlinkshere-title": "連結至「$1」的頁面",
        "whatlinkshere-page": "頁面:",
        "linkshere": "以下頁面連結至 <strong>[[:$1]]</strong>:",
        "nolinkshere": "沒有頁面連結至 <strong>[[:$1]]</strong>。",
        "tooltip-watchlistedit-raw-submit": "更新監視清單",
        "tooltip-recreate": "無論是否被刪除,重新建立該頁面。",
        "tooltip-upload": "開始上傳",
-       "tooltip-rollback": "點選 \"還原\" 還原至上位貢獻者對此頁面的編輯",
+       "tooltip-rollback": "點選「還原」還原至上一位貢獻者對此頁面的編輯",
        "tooltip-undo": "\"還原\" 可還原此編輯並以預覽模式開啟編輯表單,讓您可在摘要中加入原因。",
        "tooltip-preferences-save": "儲存偏好設定",
        "tooltip-summary": "請輸入簡短摘要",
        "variantname-zh": "不轉換",
        "variantname-gan-hans": "‪中文(简体)",
        "variantname-gan-hant": "‪中文(繁體)",
-       "metadata": "後設資料",
+       "metadata": "詮釋資料",
        "metadata-help": "此檔案包含額外的資訊,可能由數位相機或掃描機所建立的。\n若修改此檔案,部份資訊將無法保留。",
        "metadata-expand": "顯示詳細資料",
        "metadata-collapse": "隱藏詳細資料",
index 3f10a33..e20c477 100644 (file)
@@ -60,11 +60,6 @@ if ( $__useReadline ) {
        readline_read_history( $__historyFile );
 }
 
-$__phpPath = preg_match( '/Zend Engine|HipHop VM/', wfShellExecWithStderr( 'php --version' ) )
-       ? 'php' //standard system path name
-       : ''; // not accessible somehow
-
-$__multiLine = '';
 $__e = null; // PHP exception
 while ( ( $__line = Maintenance::readconsole() ) !== false ) {
        if ( $__e && !preg_match( '/^(exit|die);?$/', $__line ) ) {
@@ -79,18 +74,8 @@ while ( ( $__line = Maintenance::readconsole() ) !== false ) {
                readline_add_history( $__line );
                readline_write_history( $__historyFile );
        }
-       // Try to only run PHP once a valid chunk is formed (deals with newlines)
-       if ( $__phpPath ) {
-               $res = wfShellExecWithStderr(
-                       "echo " . wfEscapeShellArg( "<?php\n{$__multiLine}{$__line}" ) . " | php -l" );
-               if ( strpos( $res, 'No syntax errors' ) !== 0 && substr( $__multiLine, -2 ) !== "\n\n" ) {
-                       $__multiLine .= "$__line\n";
-                       continue;
-               }
-       }
        try {
-               $__val = eval( $__multiLine . $__line . ";" );
-               $__multiLine = '';
+               $__val = eval( $__line . ";" );
        } catch ( Exception $__e ) {
                echo "Caught exception " . get_class( $__e ) .
                        ": {$__e->getMessage()}\n" . $__e->getTraceAsString() . "\n";
index 3750593..965c783 100644 (file)
@@ -1110,6 +1110,10 @@ return array(
                        'metadata-collapse',
                ),
        ),
+       'mediawiki.action.view.categoryPage.styles' => array(
+               'styles' => 'resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less',
+               'targets' => array( 'desktop', 'mobile' )
+       ),
        'mediawiki.action.view.postEdit' => array(
                'templates' => array(
                        'postEdit.html' => 'resources/src/mediawiki.action/templates/postEdit.html',
diff --git a/resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less b/resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less
new file mode 100644 (file)
index 0000000..1f0c626
--- /dev/null
@@ -0,0 +1,14 @@
+@import "mediawiki.mixins";
+
+.mw-category {
+       .column-count(1);
+
+       .mw-category-group {
+               .column-break-inside(avoid);
+       }
+}
+@media screen and ( min-width: 768px ) {
+       .mw-category {
+               .column-count(3);
+       }
+}
index 7d4c61c..349a721 100644 (file)
        -webkit-box-shadow: @value; // Safari 3.1-5.0, iOS 3.2-4.3, Android 2.1-3.0
        box-shadow: @value; // Chrome 10+, Firefox 4+, IE 9+, Safari 5.1+, Opera 11+, iOS 5+, Android 4+
 }
+
+.column-count(@value) {
+       -webkit-column-count: @value;
+       -moz-column-count: @value;
+       -o-column-count: @value;
+       column-count: @value;
+}
+
+.column-break-inside(@value) {
+       -webkit-column-break-inside: @value; // Chrome Any, Safari 3+, Opera 11.1+
+       page-break-inside: @value; // Firefox 1.5+
+       break-inside: @value; // IE 10+
+}
index 43c6422..90b8503 100644 (file)
                                // Makes sure that cssText containing `@import`
                                // rules will end up in a new stylesheet (as those only work when
                                // placed at the start of a stylesheet; bug 35562).
-                               return cssText.indexOf( '@import' ) === -1;
+                               return cssText.slice( 0, '@import'.length ) !== '@import';
                        }
 
                        /**
index 7c2ba1a..e00a45a 100644 (file)
@@ -35,6 +35,7 @@ class RecentChangeTest extends MediaWikiTestCase {
         * Should cover the following log actions (which are most commonly used by bots):
         * - block/block
         * - block/unblock
+        * - block/reblock
         * - delete/delete
         * - delete/restore
         * - newusers/create
@@ -63,9 +64,13 @@ class RecentChangeTest extends MediaWikiTestCase {
 
                # block/block
                $this->assertIRCComment(
-                       $this->context->msg( 'blocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       $this->context->msg( 'blocklogentry', 'SomeTitle', 'duration', '(flags)' )->plain()
+                               . $sep . $this->user_comment,
                        'block', 'block',
-                       array(),
+                       array(
+                               '5::duration' => 'duration',
+                               '6::flags' => 'flags',
+                       ),
                        $this->user_comment
                );
                # block/unblock
@@ -75,6 +80,17 @@ class RecentChangeTest extends MediaWikiTestCase {
                        array(),
                        $this->user_comment
                );
+               # block/reblock
+               $this->assertIRCComment(
+                       $this->context->msg( 'reblock-logentry', 'SomeTitle', 'duration', '(flags)' )->plain()
+                               . $sep . $this->user_comment,
+                       'block', 'reblock',
+                       array(
+                               '5::duration' => 'duration',
+                               '6::flags' => 'flags',
+                       ),
+                       $this->user_comment
+               );
        }
 
        /**
index 421cab5..1b24628 100644 (file)
@@ -5,14 +5,20 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
        /**
         * @covers ExtensionRegistry::exportExtractedData
         * @dataProvider provideExportExtractedDataGlobals
-        * @@backupGlobals enabled
         */
        public function testExportExtractedDataGlobals( $desc, $before, $globals, $expected ) {
+               // Set globals for test
                if ( $before ) {
                        foreach ( $before as $key => $value ) {
-                               $GLOBALS[$key] = $value;
+                               // mw prefixed globals does not exist normally
+                               if ( substr( $key, 0, 2 ) == 'mw' ) {
+                                       $GLOBALS[$key] = $value;
+                               } else {
+                                       $this->setMwGlobals( $key, $value );
+                               }
                        }
                }
+
                $info = array(
                        'globals' => $globals,
                        'callbacks' => array(),
@@ -29,6 +35,15 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
                        $this->assertArrayHasKey( $name, $GLOBALS, $desc );
                        $this->assertEquals( $value, $GLOBALS[$name], $desc );
                }
+
+               // Remove mw prefixed globals
+               if ( $before ) {
+                       foreach ( $before as $key => $value ) {
+                               if ( substr( $key, 0, 2 ) == 'mw' ) {
+                                       unset( $GLOBALS[$key] );
+                               }
+                       }
+               }
        }
 
        public static function provideExportExtractedDataGlobals() {
index 2142061..681b2d2 100644 (file)
@@ -44,7 +44,7 @@ class AutoLoaderTest extends MediaWikiTestCase {
 
                $files = array_unique( $expected );
 
-               foreach ( $files as $file ) {
+               foreach ( $files as $class => $file ) {
                        // Only prefix $IP if it doesn't have it already.
                        // Generally local classes don't have it, and those from extensions and test suites do.
                        if ( substr( $file, 0, 1 ) != '/' && substr( $file, 1, 1 ) != ':' ) {
@@ -53,7 +53,19 @@ class AutoLoaderTest extends MediaWikiTestCase {
                                $filePath = $file;
                        }
 
+                       if ( !file_exists( $filePath ) ) {
+                               $actual[$class] = "[file '$filePath' does not exist]";
+                               continue;
+                       }
+
+                       wfSuppressWarnings();
                        $contents = file_get_contents( $filePath );
+                       wfRestoreWarnings();
+
+                       if ( $contents === false ) {
+                               $actual[$class] = "[couldn't read file '$filePath']";
+                               continue;
+                       }
 
                        // We could use token_get_all() here, but this is faster
                        $matches = array();
index 2396ea2..16a9f3a 100644 (file)
@@ -91,6 +91,10 @@ class ResourcesTest extends MediaWikiTestCase {
                foreach ( $data['modules'] as $moduleName => $module ) {
                        $moduleTargets = $module->getTargets();
                        foreach ( $module->getDependencies() as $dep ) {
+                               if ( !isset( $data['modules'][$dep] ) ) {
+                                       // Missing dependencies reported by testMissingDependencies
+                                       continue;
+                               }
                                $targets = $data['modules'][$dep]->getTargets();
                                foreach ( $moduleTargets as $moduleTarget ) {
                                        $this->assertContains(