Merge "Introduce MessageLocalizer interface for exposing msg() method"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 14 Jun 2017 18:01:50 +0000 (18:01 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 14 Jun 2017 18:01:51 +0000 (18:01 +0000)
133 files changed:
RELEASE-NOTES-1.30
autoload.php
includes/DefaultSettings.php
includes/Title.php
includes/api/ApiBase.php
includes/api/ApiFormatBase.php
includes/api/ApiOpenSearch.php
includes/api/ApiParse.php
includes/api/i18n/en.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/nb.json
includes/api/i18n/qqq.json
includes/db/DatabaseOracle.php
includes/debug/logger/monolog/AvroFormatter.php
includes/filerepo/FileBackendDBRepoWrapper.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/htmlform/OOUIHTMLForm.php
includes/installer/i18n/ast.json
includes/installer/i18n/bs.json
includes/installer/i18n/lij.json
includes/installer/i18n/mk.json
includes/jobqueue/JobRunner.php
includes/libs/filebackend/FileBackendStore.php
includes/libs/http/HttpAcceptNegotiator.php [new file with mode: 0644]
includes/libs/http/HttpAcceptParser.php [new file with mode: 0644]
includes/libs/rdbms/TransactionProfiler.php
includes/libs/rdbms/database/DBConnRef.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/IDatabase.php
includes/libs/rdbms/loadmonitor/LoadMonitor.php
includes/linkeddata/PageDataRequestHandler.php [new file with mode: 0644]
includes/media/DjVu.php
includes/media/MediaHandler.php
includes/page/CategoryPage.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/revisiondelete/RevDelFileItem.php
includes/skins/Skin.php
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialPageData.php [new file with mode: 0644]
includes/specials/SpecialUndelete.php
includes/tidy/RaggettWrapper.php
includes/tidy/RemexCompatFormatter.php
includes/tidy/tidy.conf
includes/widget/search/InterwikiSearchResultWidget.php
includes/widget/search/SimpleSearchResultWidget.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/atj.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/cs.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es-formal.json
languages/i18n/es.json
languages/i18n/fa.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lij.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/nan.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sah.json
languages/i18n/sgs.json
languages/i18n/sk.json
languages/i18n/sq.json
languages/i18n/sv.json
languages/i18n/tet.json
languages/i18n/th.json
languages/i18n/tt-cyrl.json
languages/i18n/ur.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAr.php
languages/messages/MessagesArz.php
languages/messages/MessagesEn.php
maintenance/importImages.php
resources/Resources.php
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js
tests/parser/parserTests.txt
tests/phpunit/includes/ReadOnlyModeTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/api/ApiParseTest.php
tests/phpunit/includes/db/DatabaseSQLTest.php
tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/http/HttpAcceptParserTest.php [new file with mode: 0644]
tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/media/MediaHandlerTest.php
tests/phpunit/includes/media/XContentDimensionsTest.php [deleted file]
tests/phpunit/includes/parser/ParserOptionsTest.php
tests/phpunit/includes/specials/SpecialPageDataTest.php [new file with mode: 0644]

index cd800da..f2cb871 100644 (file)
@@ -34,9 +34,6 @@ production.
   ParserOptions::setWrapOutputClass().
 * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
   specific tags to be added by users.
-* File storage backends that supports headers (eg. Swift) now store an
-  X-Content-Dimensions header for originals that contain the media's dimensions
-  as page ranges keyed by dimensions.
 * Added a 'ParserOptionsRegister' hook to allow extensions to register
   additional parser options.
 
@@ -106,6 +103,7 @@ changes to languages because of Phabricator reports.
   hooks have an additional parameter, for manipulating HTML data attributes of
   RC/history lines. EnhancedChangesListModifyBlockLineData can do that via the
   $data['attribs'] subarray.
+* (T130632) The OutputPage::enableTOC() method was removed.
 
 == Compatibility ==
 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
index bfe1cd5..2715655 100644 (file)
@@ -1071,6 +1071,7 @@ $wgAutoloadLocalClasses = [
        'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
        'Page' => __DIR__ . '/includes/page/Page.php',
        'PageArchive' => __DIR__ . '/includes/page/PageArchive.php',
+       'PageDataRequestHandler' => __DIR__ . '/includes/linkeddata/PageDataRequestHandler.php',
        'PageExists' => __DIR__ . '/maintenance/pageExists.php',
        'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
        'PageProps' => __DIR__ . '/includes/PageProps.php',
@@ -1379,6 +1380,7 @@ $wgAutoloadLocalClasses = [
        'SpecialNewpages' => __DIR__ . '/includes/specials/SpecialNewpages.php',
        'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
        'SpecialPageAction' => __DIR__ . '/includes/actions/SpecialPageAction.php',
+       'SpecialPageData' => __DIR__ . '/includes/specials/SpecialPageData.php',
        'SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory.php',
        'SpecialPageLanguage' => __DIR__ . '/includes/specials/SpecialPageLanguage.php',
        'SpecialPagesWithProp' => __DIR__ . '/includes/specials/SpecialPagesWithProp.php',
@@ -1607,6 +1609,8 @@ $wgAutoloadLocalClasses = [
        'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
        'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
        'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php',
+       'Wikimedia\\Http\\HttpAcceptNegotiator' => __DIR__ . '/includes/libs/http/HttpAcceptNegotiator.php',
+       'Wikimedia\\Http\\HttpAcceptParser' => __DIR__ . '/includes/libs/http/HttpAcceptParser.php',
        'Wikimedia\\Rdbms\\Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
        'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
        'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php',
index 5b7ca3e..9436aa6 100644 (file)
@@ -8559,6 +8559,15 @@ $wgPopularPasswordFile = __DIR__ . '/../serialized/commonpasswords.cdb';
  */
 $wgMaxUserDBWriteDuration = false;
 
+/*
+ * Max time (in seconds) a job-generated transaction can spend in writes.
+ * If exceeded, the transaction is rolled back with an error instead of being committed.
+ *
+ * @var int|bool Disabled if false
+ * @since 1.30
+ */
+$wgMaxJobDBWriteDuration = false;
+
 /**
  * Mapping of event channels (or channel categories) to EventRelayer configuration.
  *
index a8cfad8..c9f09f7 100644 (file)
@@ -1419,13 +1419,22 @@ class Title implements LinkTarget {
         * @return string The prefixed text
         */
        private function prefix( $name ) {
+               global $wgContLang;
+
                $p = '';
                if ( $this->isExternal() ) {
                        $p = $this->mInterwiki . ':';
                }
 
                if ( 0 != $this->mNamespace ) {
-                       $p .= $this->getNsText() . ':';
+                       $nsText = $this->getNsText();
+
+                       if ( $nsText === false ) {
+                               // See T165149. Awkward, but better than erroneously linking to the main namespace.
+                               $nsText = $wgContLang->getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
+                       }
+
+                       $p .= $nsText . ':';
                }
                return $p . $name;
        }
index a6c4b2a..5332d7e 100644 (file)
@@ -1863,6 +1863,23 @@ abstract class ApiBase extends ContextSource {
                        throw new MWException( 'Successful status passed to ApiBase::dieStatus' );
                }
 
+               // ApiUsageException needs a fatal status, but this method has
+               // historically accepted any non-good status. Convert it if necessary.
+               $status->setOK( false );
+               if ( !$status->getErrorsByType( 'error' ) ) {
+                       $newStatus = Status::newGood();
+                       foreach ( $status->getErrorsByType( 'warning' ) as $err ) {
+                               call_user_func_array(
+                                       [ $newStatus, 'fatal' ],
+                                       array_merge( [ $err['message'] ], $err['params'] )
+                               );
+                       }
+                       if ( !$newStatus->getErrorsByType( 'error' ) ) {
+                               $newStatus->fatal( 'unknownerror-nocode' );
+                       }
+                       $status = $newStatus;
+               }
+
                throw new ApiUsageException( $this, $status );
        }
 
index eb23bd6..36247dd 100644 (file)
@@ -219,7 +219,14 @@ abstract class ApiFormatBase extends ApiBase {
                        if ( !$this->getIsWrappedHtml() ) {
                                // When the format without suffix 'fm' is defined, there is a non-html version
                                if ( $this->getMain()->getModuleManager()->isDefined( $lcformat, 'format' ) ) {
-                                       $msg = $context->msg( 'api-format-prettyprint-header' )->params( $format, $lcformat );
+                                       if ( !$this->getRequest()->wasPosted() ) {
+                                               $nonHtmlUrl = strtok( $this->getRequest()->getFullRequestURL(), '?' )
+                                                       . '?' . $this->getRequest()->appendQueryValue( 'format', $lcformat );
+                                               $msg = $context->msg( 'api-format-prettyprint-header-hyperlinked' )
+                                                       ->params( $format, $lcformat, $nonHtmlUrl );
+                                       } else {
+                                               $msg = $context->msg( 'api-format-prettyprint-header' )->params( $format, $lcformat );
+                                       }
                                } else {
                                        $msg = $context->msg( 'api-format-prettyprint-header-only-html' )->params( $format );
                                }
index dc1b4e7..ff65d0e 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 use MediaWiki\MediaWikiServices;
-use Wikimedia\Rdbms\Database;
 
 /**
  * @ingroup API
index 91e49ab..b2e03c8 100644 (file)
@@ -38,6 +38,9 @@ class ApiParse extends ApiBase {
        /** @var Content $pstContent */
        private $pstContent = null;
 
+       /** @var bool */
+       private $contentIsDeleted = false, $contentIsSuppressed = false;
+
        public function execute() {
                // The data is hot but user-dependent, like page views, so we set vary cookies
                $this->getMain()->setCacheMode( 'anon-public-user-private' );
@@ -85,6 +88,9 @@ class ApiParse extends ApiBase {
 
                $redirValues = null;
 
+               $needContent = isset( $prop['wikitext'] ) ||
+                       isset( $prop['parsetree'] ) || $params['generatexml'];
+
                // Return result
                $result = $this->getResult();
 
@@ -110,27 +116,9 @@ class ApiParse extends ApiBase {
                                $wgTitle = $titleObj;
                                $pageObj = WikiPage::factory( $titleObj );
                                list( $popts, $reset, $suppressCache ) = $this->makeParserOptions( $pageObj, $params );
-
-                               // If for some reason the "oldid" is actually the current revision, it may be cached
-                               // Deliberately comparing $pageObj->getLatest() with $rev->getId(), rather than
-                               // checking $rev->isCurrent(), because $pageObj is what actually ends up being used,
-                               // and if its ->getLatest() is outdated, $rev->isCurrent() won't tell us that.
-                               if ( !$suppressCache && $rev->getId() == $pageObj->getLatest() ) {
-                                       // May get from/save to parser cache
-                                       $p_result = $this->getParsedContent( $pageObj, $popts,
-                                               $pageid, isset( $prop['wikitext'] ) );
-                               } else { // This is an old revision, so get the text differently
-                                       $this->content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
-
-                                       if ( $this->section !== false ) {
-                                               $this->content = $this->getSectionContent(
-                                                       $this->content, $this->msg( 'revid', $rev->getId() )
-                                               );
-                                       }
-
-                                       // Should we save old revision parses to the parser cache?
-                                       $p_result = $this->content->getParserOutput( $titleObj, $rev->getId(), $popts );
-                               }
+                               $p_result = $this->getParsedContent(
+                                       $pageObj, $popts, $suppressCache, $pageid, $rev, $needContent
+                               );
                        } else { // Not $oldid, but $pageid or $page
                                if ( $params['redirects'] ) {
                                        $reqParams = [
@@ -172,25 +160,9 @@ class ApiParse extends ApiBase {
                                }
 
                                list( $popts, $reset, $suppressCache ) = $this->makeParserOptions( $pageObj, $params );
-
-                               // Don't pollute the parser cache when setting options that aren't
-                               // in ParserOptions::optionsHash()
-                               /// @todo: This should be handled closer to the actual cache instead of here, see T110269
-                               $suppressCache = $suppressCache ||
-                                       $params['disablepp'] ||
-                                       $params['disablelimitreport'] ||
-                                       $params['preview'] ||
-                                       $params['sectionpreview'] ||
-                                       $params['disabletidy'];
-
-                               if ( $suppressCache ) {
-                                       $this->content = $this->getContent( $pageObj, $pageid );
-                                       $p_result = $this->content->getParserOutput( $titleObj, null, $popts );
-                               } else {
-                                       // Potentially cached
-                                       $p_result = $this->getParsedContent( $pageObj, $popts, $pageid,
-                                               isset( $prop['wikitext'] ) );
-                               }
+                               $p_result = $this->getParsedContent(
+                                       $pageObj, $popts, $suppressCache, $pageid, null, $needContent
+                               );
                        }
                } else { // Not $oldid, $pageid, $page. Hence based on $text
                        $titleObj = Title::newFromText( $title );
@@ -249,6 +221,12 @@ class ApiParse extends ApiBase {
                        if ( $params['onlypst'] ) {
                                // Build a result and bail out
                                $result_array = [];
+                               if ( $this->contentIsDeleted ) {
+                                       $result_array['textdeleted'] = true;
+                               }
+                               if ( $this->contentIsSuppressed ) {
+                                       $result_array['textsuppressed'] = true;
+                               }
                                $result_array['text'] = $this->pstContent->serialize( $format );
                                $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
                                if ( isset( $prop['wikitext'] ) ) {
@@ -279,6 +257,12 @@ class ApiParse extends ApiBase {
 
                $result_array['title'] = $titleObj->getPrefixedText();
                $result_array['pageid'] = $pageid ?: $pageObj->getId();
+               if ( $this->contentIsDeleted ) {
+                       $result_array['textdeleted'] = true;
+               }
+               if ( $this->contentIsSuppressed ) {
+                       $result_array['textsuppressed'] = true;
+               }
 
                if ( $params['disabletoc'] ) {
                        $p_result->setTOCEnabled( false );
@@ -541,64 +525,72 @@ class ApiParse extends ApiBase {
                Hooks::run( 'ApiMakeParserOptions',
                        [ $popts, $pageObj->getTitle(), $params, $this, &$reset, &$suppressCache ] );
 
+               // Force cache suppression when $popts aren't cacheable.
+               $suppressCache = $suppressCache || !$popts->isSafeToCache();
+
                return [ $popts, $reset, $suppressCache ];
        }
 
        /**
         * @param WikiPage $page
         * @param ParserOptions $popts
+        * @param bool $suppressCache
         * @param int $pageId
-        * @param bool $getWikitext
+        * @param Revision|null $rev
+        * @param bool $getContent
         * @return ParserOutput
         */
-       private function getParsedContent( WikiPage $page, $popts, $pageId = null, $getWikitext = false ) {
-               $this->content = $this->getContent( $page, $pageId );
+       private function getParsedContent(
+               WikiPage $page, $popts, $suppressCache, $pageId, $rev, $getContent
+       ) {
+               $revId = $rev ? $rev->getId() : null;
+               $isDeleted = $rev && $rev->isDeleted( Revision::DELETED_TEXT );
+
+               if ( $getContent || $this->section !== false || $isDeleted ) {
+                       if ( $rev ) {
+                               $this->content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$this->content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-revid', $revId ] );
+                               }
+                       } else {
+                               $this->content = $page->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$this->content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-pageid', $pageId ] );
+                               }
+                       }
+                       $this->contentIsDeleted = $isDeleted;
+                       $this->contentIsSuppressed = $rev &&
+                               $rev->isDeleted( Revision::DELETED_TEXT | Revision::DELETED_RESTRICTED );
+               }
 
-               if ( $this->section !== false && $this->content !== null ) {
-                       // Not cached (save or load)
-                       return $this->content->getParserOutput( $page->getTitle(), null, $popts );
+               if ( $this->section !== false ) {
+                       $this->content = $this->getSectionContent(
+                               $this->content,
+                               $pageId === null ? $page->getTitle()->getPrefixedText() : $this->msg( 'pageid', $pageId )
+                       );
+                       return $this->content->getParserOutput( $page->getTitle(), $revId, $popts );
                }
 
-               // Try the parser cache first
-               // getParserOutput will save to Parser cache if able
-               $pout = $page->getParserOutput( $popts );
-               if ( !$pout ) {
-                       $this->dieWithError( [ 'apierror-nosuchrevid', $page->getLatest() ] );
+               if ( $isDeleted ) {
+                       // getParserOutput can't do revdeled revisions
+                       $pout = $this->content->getParserOutput( $page->getTitle(), $revId, $popts );
+               } else {
+                       // getParserOutput will save to Parser cache if able
+                       $pout = $page->getParserOutput( $popts, $revId, $suppressCache );
                }
-               if ( $getWikitext ) {
-                       $this->content = $page->getContent( Revision::RAW );
+               if ( !$pout ) {
+                       $this->dieWithError( [ 'apierror-nosuchrevid', $revId ?: $page->getLatest() ] );
                }
 
                return $pout;
        }
 
-       /**
-        * Get the content for the given page and the requested section.
-        *
-        * @param WikiPage $page
-        * @param int $pageId
-        * @return Content
-        */
-       private function getContent( WikiPage $page, $pageId = null ) {
-               $content = $page->getContent( Revision::RAW ); // XXX: really raw?
-
-               if ( $this->section !== false && $content !== null ) {
-                       $content = $this->getSectionContent(
-                               $content,
-                               !is_null( $pageId )
-                                       ? $this->msg( 'pageid', $pageId )
-                                       : $page->getTitle()->getPrefixedText()
-                       );
-               }
-               return $content;
-       }
-
        /**
         * Extract the requested section from the given Content
         *
         * @param Content $content
         * @param string|Message $what Identifies the content in error messages, e.g. page title.
-        * @return Content|bool
+        * @return Content
         */
        private function getSectionContent( Content $content, $what ) {
                // Not cached (save or load)
index ed3f25f..5554105 100644 (file)
        "api-format-title": "MediaWiki API result",
        "api-format-prettyprint-header": "This is the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the <var>format</var> parameter to change the output format. To see the non-HTML representation of the $1 format, set <kbd>format=$2</kbd>.\n\nSee the [[mw:Special:MyLanguage/API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
        "api-format-prettyprint-header-only-html": "This is an HTML representation intended for debugging, and is unsuitable for application use.\n\nSee the [[mw:Special:MyLanguage/API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
+       "api-format-prettyprint-header-hyperlinked": "This is the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the <var>format</var> parameter to change the output format. To see the non-HTML representation of the $1 format, set [$3 <kbd>format=$2</kbd>].\n\nSee the [[mw:API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
        "api-format-prettyprint-status": "This response would be returned with HTTP status $1 $2.",
 
        "api-login-fail-aborted": "Authentication requires user interaction, which is not supported by <kbd>action=login</kbd>. To be able to login with <kbd>action=login</kbd>, see [[Special:BotPasswords]]. To continue using main-account login, see <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
index c7bcf02..e6414b1 100644 (file)
@@ -63,6 +63,7 @@
        "apihelp-compare-param-fromtitle": "Primeiro título para comparar.",
        "apihelp-compare-param-fromid": "Identificador da primeira páxina a comparar.",
        "apihelp-compare-param-fromrev": "Primeira revisión a comparar.",
+       "apihelp-compare-param-fromtext": "Uso este texto en vez do contido da revisión especificada por <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>.",
        "apihelp-compare-param-totitle": "Segundo título para comparar.",
        "apihelp-compare-param-toid": "Identificador da segunda páxina a comparar.",
        "apihelp-compare-param-torev": "Segunda revisión a comparar.",
index 36a19bc..74d83e6 100644 (file)
        "apihelp-compare-paramvalue-prop-diff": "ה־HTML של ההשוואה.",
        "apihelp-compare-paramvalue-prop-diffsize": "גודל ה־HTML של ההשוואה, בבתים.",
        "apihelp-compare-paramvalue-prop-rel": "מזהי הגרסאות של הגרסאות לפני \"from\" ואחרי \"to\", אם יש כאלה.",
+       "apihelp-compare-paramvalue-prop-ids": "מזהי הדף והגרסה של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-title": "כותרות הדפים של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-user": "השם והמזהה של המשתמש של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-comment": "התקציר על גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "התקציר המפוענח על גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-size": "הגודל של גרסאות ה־\"from\" וה־\"to\".",
        "apihelp-compare-example-1": "יצירת תיעוד שינוי בין גרסה 1 ל־2.",
        "apihelp-createaccount-description": "יצירת חשבון משתמש חדש.",
        "apihelp-createaccount-param-preservestate": "אם <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> החזיר true עבור <samp>hasprimarypreservedstate</samp>, בקשות שמסומנות בתור <samp>primary-required</samp> אמורות להיות מושמטות. אם מוחזר ערך לא ריק ל־<samp>preservedusername</samp>, שם המשתמש הזה ישמש לפרמטר <var>username</var>.",
        "apierror-changeauth-norequest": "יצירת בקשת השינוי נכשלה.",
        "apierror-chunk-too-small": "גודל הפלח המזערי הוא {{PLURAL:$1|בית אחד|$1 בתים}} בשביל פלחים לא סופיים.",
        "apierror-cidrtoobroad": "טווחי CIDR של $1 שרחבים יותר מ־/$2 אינם קבילים.",
+       "apierror-compare-no-title": "לא ניתן לעשות התמרה לפני שמירה ללא כותרת. נא לנסות לציין <var>fromtitle</var> או <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "אין גרסת \"from\" עבור <var>torelative</var> שתהיה יחסית.",
        "apierror-contentserializationexception": "הסדרת התוכן נכשלה: $1",
        "apierror-contenttoobig": "התוכן שסיפקת חורג מגודל הערך המרבי של {{PLURAL:$1|קילובייט אחד|$1 קילובייטים}}.",
        "apierror-copyuploadbaddomain": "העלאות לפי URL אינם מורשות מהמתחם הזה.",
        "apierror-maxlag": "ממתין ל־$2: שיהוי של {{PLURAL:$1|שנייה אחת|$1 שניות}}.",
        "apierror-mimesearchdisabled": "חיפוש MIME כבוי במצב קמצן.",
        "apierror-missingcontent-pageid": "תוכן חסר עבור מזהה הדף $1.",
+       "apierror-missingcontent-revid": "תוכן חסר עבור מזהה הגרסה $1.",
        "apierror-missingparam-at-least-one-of": "דרוש {{PLURAL:$2|הפרמטר|לפחות אחד מהפרמטרים}} $1.",
        "apierror-missingparam-one-of": "דרוש {{PLURAL:$2|הפרמטר|אחד מהפרמטרים}} $1.",
        "apierror-missingparam": "הפרמטר <var>$1</var> צריך להיות מוגדר.",
        "apierror-missingrev-pageid": "אין גרסה נוכחית של דף עם המזהה $1.",
+       "apierror-missingrev-title": "אין גרסה נוכחית לכותרת $1.",
        "apierror-missingtitle-createonly": "כותרות חסרות יכולות להיות מוגנות עם <kbd>create</kbd>.",
        "apierror-missingtitle": "הדף שנתת אינו קיים.",
        "apierror-missingtitle-byname": "הדף $1 אינו קיים.",
        "apiwarn-badurlparam": "לא היה אפשר לפענח את <var>$1urlparam</var> עבור $2. משתמשים רק ב־width ו־height.",
        "apiwarn-badutf8": "הערך הערך שהועבר ל־<var>$1</var> מכיל נתונים בלתי־תקינים או בלתי־מנורמלים. נתונים טקסט אמורים להיות תקינים, מנורמלי NFC ללא תווי בקרה C0 למעט HT (\\t)‏, LF (\\n), ו־CR (\\r).",
        "apiwarn-checktoken-percentencoding": "נא לבדוק שסימנים כמו \"+\" באסימון מקודדים עם אחוזים בצורה נכונה ב־URL.",
+       "apiwarn-compare-nocontentmodel": "לא היה אפשר לקבוע את מודל התוכן, נניח שזה $1.",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> הוצהר בתור מיושן. נא להשתמש ב־ <kbd>prop=deletedrevisions</kbd> או ב־<kbd>list=alldeletedrevisions</kbd> במקום זה.",
        "apiwarn-deprecation-expandtemplates-prop": "מכיוון שלא ניתנו ערכים לפרמטר <var>prop</var>, תסדיר מיושן ישמש לפלט. התסדיר הזה מיושן, ובעתיד יינתן ערך בררת מחדל לפרמטר <var>prop</var>, כך שתמיד ישמש התסדיר החדש.",
        "apiwarn-deprecation-httpsexpected": "משמש HTTP כשהיה צפוי HTTPS.",
index f2705ba..72a5fda 100644 (file)
        "apihelp-main-param-origin": "Når man aksesserer API-en som bruker en domene-kryssende AJAX-forespørsel (CORS), sett denne til det opprinnelige domenet. Denne må tas med i alle pre-flight-forespørsler, og derfor være en del av spørre-URI-en (ikke POST-kroppen).\n\nFor autentiserte forespørsler må denne stemme helt med en av de opprinnelige i <code>Origin</code>-headeren, slik at den må settes til noe a la <kbd>https://en.wikipedia.org</kbd> eller <kbd>https://meta.wikimedia.org</kbd>. Hvis denne parameteren ikke stemmer med <code>Origin</code>-headeren, returneres et 403-svar. Hvis denne parameteren stemmer med <code>Origin</code>-headeren og originalen er hvitlistet, vil <code>Access-Control-Allow-Origin</code> og <code>Access-Control-Allow-Credentials</code>-headere bli satt.\n\nFor ikke-autentiserte forepørsler, spesifiser <kbd>*</kbd>. Denne vil gjøre at <code>Access-Control-Allow-Origin</code>-headeren blir satt, men <code>Access-Control-Allow-Credentials</code> blir <code>false</code> og alle bruerspesifikke data blir begrenset.",
        "apihelp-main-param-uselang": "Språk å bruke for meldingsoversettelser. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> med <kbd>siprop=languages</kbd> returnerer en liste over språkkoder, eller spesifiser <kbd>user</kbd> for å bruke den nåværende brukerens språkpreferanser, eller spesifiser <kbd>content</kbd> for å bruke denne wikiens innholdsspråk.",
        "apihelp-main-param-errorformat": "Formater som kan brukes for advarsels- og feiltekster.\n; plaintext: Wikitext der HTML-tagger er fjernet og elementer byttet ut.\n; wikitext: Ubehandlet wikitext.\n; html: HTML.\n; raw: Meldingsnøkler og -parametre.\n; none: Ingen tekst, bare feilkoder.\n; bc: Format brukt før MediaWiki 1.29. <var>errorlang</var> og <var>errorsuselocal</var> ses bort fra.",
+       "apihelp-main-param-errorlang": "Språk som skal brukes for advarsler og feil. <kbd>[[Specia:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> med <kbd>siprop=languages/<kbd> returnerer ei liste over språkkoder, eller angi <kbd>content</kbd> for å bruke wikiens innholdsspråk, eller angi <kbd>uselang</kbd> for å bruke samme verdi som <var>uselang</var>-parameteren.",
        "apihelp-main-param-errorsuselocal": "Hvis gitt, vil feiltekster bruke lokalt tilpassede meldinger fra {{ns:MediaWiki}}-navnerommet.",
        "apihelp-block-description": "Blokker en bruker.",
        "apihelp-block-param-user": "Brukernavn, IP-adresse eller IP-intervall som skal blokkeres. Kan ikke brukes sammen med <var>$1userid</var>",
+       "apihelp-block-param-userid": "Bruker-ID som skal blokkeres. Kan ikke brukes sammen med <var>$1user</var>.",
        "apihelp-block-param-expiry": "Utløpstid. Kan være relativ (f.eks. <kbd>5 months</kbd> eller <kbd>2 weeks</kbd>) eller absolutt (f.eks. <kbd>2014-09-18T12:34:56Z</kbd>). Om den er satt til <kbd>infinite</kbd>, <kbd>indefinite</kbd> eller <kbd>never</kbd> vil blokkeringen ikke ha noen utløpsdato.",
        "apihelp-block-param-reason": "Årsak for blokkering.",
        "apihelp-block-param-anononly": "Blokker bare anonyme brukere (dvs. hindre anonyme redigeringer fra denne IP-adressen).",
@@ -56,6 +58,9 @@
        "apihelp-compare-param-fromtitle": "Første tittel å sammenligne.",
        "apihelp-compare-param-fromid": "Første side-ID å sammenligne.",
        "apihelp-compare-param-fromrev": "Første revisjon å sammenligne.",
+       "apihelp-compare-param-fromtext": "Bruk denne teksten i stedet for innholdet i revisjonen som angis med <var>fromtitle</var>, <var>fromid</var> eller <var>fromrev</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Innholdsmodell for <var>fromtext</var>. Om den ikke angis vil den gjettes basert på de andre parameterne.",
+       "apihelp-compare-param-fromcontentformat": "Innholdsserialiseringsformat for <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Andre tittel å sammenligne.",
        "apihelp-compare-param-toid": "Andre side-ID å sammenligne.",
        "apihelp-compare-param-torev": "Andre revisjon å sammenligne.",
index e53ece6..c5fb799 100644 (file)
        "apihelp-xml-param-includexmlnamespace": "{{doc-apihelp-param|xml|includexmlnamespace}}",
        "apihelp-xmlfm-description": "{{doc-apihelp-description|xmlfm|seealso=* {{msg-mw|apihelp-xml-description}}}}",
        "api-format-title": "{{technical}}\nPage title when API output is pretty-printed in HTML.",
-       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
+       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML, but a post request is received.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
+       "api-format-prettyprint-header-hyperlinked": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name\n* $3 - URL to Non-pretty-printing module",
        "api-format-prettyprint-header-only-html": "{{technical}} Displayed as a header when API output is pretty-printed in HTML, but there is no non-html module.\n\nParameters:\n* $1 - Format name",
        "api-format-prettyprint-status": "{{technical}} Displayed as a header when API pretty-printed output is used for a response that uses an unusual HTTP status code.\n\nParameters:\n* $1 - HTTP status code (integer)\n* $2 - Standard English text for the status code.",
        "api-login-fail-aborted": "{{technical}} Displayed as an error when API login fails due to AuthManager requiring user interaction.\n\nSee also:\n* {{msg-mw|api-login-fail-aborted-nobotpw}}",
index b728786..556fe75 100644 (file)
@@ -558,19 +558,9 @@ class DatabaseOracle extends Database {
        }
 
        function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $destTable = $this->tableName( $destTable );
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) =
-                       $this->makeSelectOptions( $selectOptions );
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
 
                $sequenceData = $this->getSequenceData( $destTable );
                if ( $sequenceData !== false &&
@@ -585,13 +575,16 @@ class DatabaseOracle extends Database {
                        $val = $val . ' field' . ( $i++ );
                }
 
-               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-               if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
-               }
-               $sql .= " $tailOpts";
+               $selectSql = $this->selectSQLText(
+                       $srcTable,
+                       array_values( $varMap ),
+                       $conds,
+                       $fname,
+                       $selectOptions,
+                       $selectJoinConds
+               );
+
+               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ') ' . $selectSql;
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
                        $this->ignoreDupValOnIndex = true;
index 2700daa..2a50566 100644 (file)
@@ -23,7 +23,6 @@ namespace MediaWiki\Logger\Monolog;
 use AvroIODatumWriter;
 use AvroIOBinaryEncoder;
 use AvroIOTypeException;
-use AvroNamedSchemata;
 use AvroSchema;
 use AvroStringIO;
 use AvroValidator;
index 856dc36..2394704 100644 (file)
@@ -24,7 +24,6 @@
  */
 
 use Wikimedia\Rdbms\DBConnRef;
-use Wikimedia\Rdbms\MaintainableDBConnRef;
 
 /**
  * @brief Proxy backend that manages file layout rewriting for FileRepo.
index 53211fe..9aa2b18 100644 (file)
@@ -2173,7 +2173,7 @@ abstract class File implements IDBAccessObject {
                                $metadata = [];
                        }
 
-                       return $handler->getContentHeaders( $metadata, $this->getWidth(), $this->getHeight() );
+                       return $handler->getContentHeaders( $metadata );
                }
 
                return [];
index a90156f..8d715e8 100644 (file)
@@ -1206,9 +1206,7 @@ class LocalFile extends File {
                                $metadata = [];
                        }
 
-                       $options['headers'] = $handler->getContentHeaders(
-                               $metadata, $props['width'], $props['height']
-                       );
+                       $options['headers'] = $handler->getContentHeaders( $metadata );
                } else {
                        $options['headers'] = [];
                }
index 6650321..ed99802 100644 (file)
@@ -191,6 +191,10 @@ class OOUIHTMLForm extends HTMLForm {
         * @return string
         */
        public function getErrorsOrWarnings( $elements, $elementsType ) {
+               if ( $elements === '' ) {
+                       return '';
+               }
+
                if ( !in_array( $elementsType, [ 'error', 'warning' ], true ) ) {
                        throw new DomainException( $elementsType . ' is not a valid type.' );
                }
index d47334c..1b2831f 100644 (file)
        "config-db-schema-help": "Esti esquema de vezu va tar bien.\nCamúdalos solo si sabes que lo precises.",
        "config-pg-test-error": "Nun puede coneutase cola base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Direutoriu de datos SQLite:",
+       "config-oracle-def-ts": "Espaciu de tables predetermináu:",
+       "config-oracle-temp-ts": "Espaciu de tables temporal:",
        "config-type-mysql": "MySQL (o compatible)",
        "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki ye compatible colos siguientes sistemes de bases de datos:\n\n$1\n\nSi nun atopes na llista el sistema de base de datos que tas intentando utilizar, sigue les instrucciones enllazaes enriba p'activar la compatibilidá.",
+       "config-header-mysql": "Configuración de MySQL",
+       "config-header-postgres": "Configuración de PostgreSQL",
+       "config-header-sqlite": "Configuración de SQLite",
+       "config-header-oracle": "Configuración d'Oracle",
+       "config-header-mssql": "Configuración de Microsoft SQL Server",
        "config-invalid-db-type": "Triba non válida de base de datos.",
        "config-missing-db-name": "Tienes d'introducir un valor pa «{{int:config-db-name}}».",
+       "config-missing-db-host": "Tienes d'escribir un valor pa «{{int:config-db-host}}».",
+       "config-missing-db-server-oracle": "Tienes d'escribir un valor pa «{{int:config-db-host-oracle}}».",
+       "config-invalid-db-server-oracle": "TNS inválidu pa la base de datos «$1».\nUsa una cadena «TNS Name» o «Easy Connect» ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Métodos de nomenclatura d'Oracle]).",
+       "config-invalid-db-name": "Nome inválidu de la base de datos «$1».\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9), guiones baxos (_) y guiones (-).",
+       "config-invalid-db-prefix": "Prefixu inválidu pa la base de datos «$1».\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9), guiones baxos (_) y guiones (-).",
+       "config-connection-error": "$1.\n\nComprueba'l sirvidor, el nome d'usuariu y la contraseña, y tenta nuevamente.",
+       "config-invalid-schema": "Esquema inválidu «$1» pa MediaWiki.\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9) y guiones baxos (_).",
+       "config-db-sys-create-oracle": "L'instalador sólo almite l'emplegu d'una cuenta SYSDBA pa crear una cuenta nueva.",
+       "config-db-sys-user-exists-oracle": "La cuenta d'usuariu «$1» yá esiste. ¡SYSDBA sólo puede utilizase pa crear una nueva cuenta!",
+       "config-postgres-old": "Ríquese PostgreSQL $1 o posterior. Tienes la versión $2.",
+       "config-mssql-old": "Ríquese Microsoft SQL Server $1 o posterior. Tienes la versión $2.",
+       "config-sqlite-name-help": "Escueye'l nome qu'identifica la to wiki.\nNun uses espacios o guiones.\nEsti va usase como nome del ficheru de datos pa SQLite.",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-utf8": "UTF-8",
index a8abcec..6613972 100644 (file)
        "config-env-php": "PHP $1 je instaliran.",
        "config-env-hhvm": "HHVM $1 je instaliran.",
        "config-no-db": "Ne mogu pronaći pogodan upravljački program za bazu podataka! Morate ga instalirati za PHP-bazu.\n{{PLURAL:$2|Podržana je sljedeća vrsta|Podržane su sljedeće vrste}} baze podataka: $1.\n\nAko se sami kompajlirali PHP, omogućite klijent baze podataka u postavkama koristeći, naprimjer, <code>./configure --with-mysqli</code>.\nAko ste instalirali PHP iz paketa za Debian ili Ubuntu, onda također morate instalirati, naprimjer, paket <code>php5-mysql</code>.",
+       "config-memory-raised": "<code>memory_limit</code> za PHP iznosi $1, povišen na $2.",
+       "config-memory-bad": "<strong>Upozorenje:</strong> <code>memory_limit</code> za PHP iznosi $1.\nOvo je vjerovatno premalo.\nInstalacija možda neće uspjeti!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] je instaliran",
        "config-apc": "[http://www.php.net/apc APC] je instaliran",
+       "config-apcu": "[http://www.php.net/apcu APCu] je instaliran",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] je instaliran",
        "config-diff3-bad": "GNU diff3 nije pronađen.",
+       "config-git": "Pronađen je Git program za kontrolu verzija: <code>$1</code>.",
+       "config-git-bad": "Nije pronađen Git program za kontrolu verzija.",
+       "config-imagemagick": "Pronađen je ImageMagick: <code>$1</code>.\nAko omogućite postavljanje, bit će omogućena minijaturizacija slika.",
+       "config-gd": "Utvrđeno je da je ugrađena grafička biblioteka GD.\nAko omogućite postavljanje, bit će omogućena minijaturizacija slika.",
+       "config-no-scaling": "Ne mogu pronaći biblioteku GD niti ImageMagick.\nMinijaturizacija slika bit će onemogućena.",
+       "config-no-uri": "<strong>Greška:</strong> Ne mogu utvrditi trenutni URI.\nInstalacija je prekinuta.",
        "config-db-type": "Vrsta baze podataka:",
        "config-db-host": "Domaćin baze podataka:",
        "config-db-wiki-settings": "Identificiraj ovu wiki",
        "config-db-name": "Naziv baze podataka:",
        "config-db-name-oracle": "Šema baze podataka:",
+       "config-db-install-account": "Korisnički račun za instalaciju",
        "config-db-username": "Korisničko ime baze podataka:",
        "config-db-password": "Lozinka baze podataka:",
+       "config-db-wiki-account": "Korisnički račun za redovan rad",
+       "config-db-prefix": "Prefiks tabele u bazi podataka:",
+       "config-mysql-old": "Zahtijeva se MySQL $1 ili noviji. Vi imate $2.",
        "config-db-port": "Port baze podataka:",
        "config-db-schema": "Šema za MediaWiki:",
+       "config-pg-test-error": "Ne mogu se povezati na bazu podataka <strong>$1</strong>: $2",
+       "config-sqlite-dir": "Folder za SQLite-podatke:",
        "config-oracle-def-ts": "Predodređeni tabelarni prostor:",
        "config-oracle-temp-ts": "Privremeni tabelarni prostor:",
+       "config-type-mysql": "MySQL (ili kompaktibilan)",
+       "config-type-mssql": "Microsoft SQL Server",
        "config-header-mysql": "Postavke MySQL-a",
        "config-header-postgres": "Postavke PostgreSQL-a",
        "config-header-sqlite": "Postavke SQLite-a",
        "config-missing-db-name": "Morate unijeti vrijednost za \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Morate unijeti vrijednost za \"{{int:config-db-host}}\".",
        "config-missing-db-server-oracle": "Morate unijeti vrijednost za \"{{int:config-db-host-oracle}}\".",
+       "config-db-sys-create-oracle": "Program za instalaciju podržava samo upotrebu SYSDBA-računa za pravljenje novih računa.",
+       "config-postgres-old": "Zahtijeva se PostgreSQL $1 ili noviji. Vi imate $2.",
+       "config-mssql-old": "Zahtijeva se Microsoft SQL Server $1 ili noviji. Vi imate $2.",
+       "config-sqlite-name-help": "Izaberite ime koje će predstavljati Vaš wiki.\nNemojte koristiti razmake i crte.\nOvo će se koristiti za ime datoteke SQLite-podataka.",
        "config-sqlite-readonly": "Datoteka <code>$1</code> nije zapisiva.",
+       "config-sqlite-cant-create-db": "Ne mogu napraviti datoteku <code>$1</code> za bazu podataka.",
        "config-sqlite-fts3-downgrade": "PHP ne podržava FTS3, poništavam nadogradnju tabela.",
        "config-upgrade-done": "Nadogradnja završena.\n\nSada možete [$1 početi koristiti Vaš wiki].\n\nAko želite regenerirati Vašu datoteku <code>LocalSettings.php</code>, kliknite na dugme ispod.\nOvo <strong>nije preporučeno</strong> osim ako nemate problema s Vašim wikijem.",
        "config-upgrade-done-no-regenerate": "Nadogradnja završena.\n\nSad možete [$1 početi da koristite svoj wiki].",
        "config-regenerate": "Regeneriraj LocalSettings.php →",
        "config-unknown-collation": "<strong>Upozorenje:</strong> Baza podataka koristi nepoznatu kolaciju.",
        "config-db-web-account": "Račun baze podataka za mrežni pristup",
+       "config-db-web-account-same": "Koristi isti račun kao i za instalaciju",
        "config-db-web-create": "Napravi račun ako već ne postoji",
        "config-mysql-engine": "Skladišni pogon:",
        "config-mysql-innodb": "InnoDB",
        "config-site-name-blank": "Upišite ime sajta.",
        "config-project-namespace": "Imenski prostor projekta:",
        "config-ns-generic": "Projekt",
+       "config-ns-site-name": "Isti kao ime wikija: $1",
        "config-ns-other": "Drugo (navedite)",
        "config-ns-other-default": "MyWiki",
        "config-admin-box": "Administratorski račun",
        "config-admin-password-mismatch": "Lozinke koje ste upisali se ne poklapaju.",
        "config-admin-email": "Adresa e-pošte:",
        "config-admin-error-bademail": "Upisali ste neispravnu adresu e-pošte.",
+       "config-pingback": "Podijeli podatke o instalaciji s programerima MediaWikija.",
+       "config-optional-continue": "Postavi mi još pitanja.",
        "config-optional-skip": "Već mi je dosadilo, daj samo instaliraj wiki.",
+       "config-profile": "Profil korisničkih prava:",
        "config-profile-wiki": "Otvoren wiki",
+       "config-profile-no-anon": "Potrebno je napraviti račun",
+       "config-profile-fishbowl": "Samo ovlašteni korisnici",
        "config-profile-private": "Privatni wiki",
        "config-license": "Autorska prava i licenca:",
        "config-license-none": "Bez podnožja za licencu",
        "config-license-pd": "Javno vlasništvo",
+       "config-email-settings": "Postavke e-pošte",
+       "config-enable-email": "Omogući odlaznu e-poštu",
+       "config-upload-enable": "Omogući postavljanje datoteka",
+       "config-upload-deleted": "Folder za obrisane datoteke:",
        "config-logo": "URL logotipa:",
+       "config-instantcommons": "Omogući Instant Commons",
        "config-cc-again": "Izaberite ponovo...",
        "config-advanced-settings": "Napredna konfiguracija",
        "config-extensions": "Proširenja",
        "config-skins": "Teme",
+       "config-skins-use-as-default": "Koristi temu kao predodređenu",
+       "config-skins-missing": "Nije pronađena nijedna tema. MediaWiki će koristiti rezervnu temu dok ne instalirate druge.",
+       "config-skins-must-enable-some": "Morate izabrati barem jednu temu.",
+       "config-skins-must-enable-default": "Tema koju ste izabrali za predodređenu mora se omogućiti.",
        "config-install-alreadydone": "<strong>Upozorenje:</strong> Izgleda da već imate instaliran MediaWiki i da ga ponovo pokušavate instalirati.\nIdite na sljedeću stranicu.",
        "config-install-step-done": "završeno",
        "config-install-step-failed": "neuspješno",
        "config-install-extensions": "Uključujem proširenja",
        "config-install-database": "Postavljam bazu podataka",
        "config-install-schema": "Pravim šemu",
+       "config-install-pg-plpgsql": "Provjeravam jezik PL/pgSQL",
+       "config-pg-no-plpgsql": "Morate instalirati jezik PL/pgSQL u bazu podataka $1",
        "config-install-user": "Pravim korisnika baze podataka",
        "config-install-user-alreadyexists": "Korisnik \"$1\" već postoji",
+       "config-install-user-create-failed": "Pravljenje korisnika \"$1\" nije uspjelo: $2",
+       "config-install-user-grant-failed": "Dodjeljivanje dozvola korisniku \"$1\" nije uspjelo: $2",
        "config-install-user-missing": "Navedeni korisnik \"$1\" ne postoji.",
        "config-install-tables": "Pravim tabele",
        "config-install-interwiki": "Popunjavam predodređenu međuprojektnu tabelu",
        "config-install-stats": "Pokrećem statistiku",
        "config-install-keys": "Stvaram tajne ključeve",
+       "config-install-updates": "Spriječi pokretanje nepotrebnih ažuriranja",
        "config-install-sysop": "Pravim administratorski korisnički račun",
+       "config-install-subscribe-fail": "Ne mogu Vas pretplatiti na mediawiki-announce: $1",
+       "config-install-subscribe-notpossible": "cURL nije instaliran, a <code>allow_url_fopen</code> nije dostupno.",
        "config-install-mainpage": "Pravim početnu stranicu sa standardnim sadržajem",
+       "config-install-mainpage-exists": "Početna strana već postoji. Prelazim na sljedeće.",
+       "config-install-mainpage-failed": "Ne mogu umetnuti početnu stranu: $1",
        "config-download-localsettings": "Preuzmi <code>LocalSettings.php</code>",
        "config-help": "pomoć",
        "config-help-tooltip": "kliknite da proširite",
index 59cd079..ba39bc7 100644 (file)
        "config-db-web-no-create-privs": "L'account doeuviou pe l'installaçion o no dispon-e di privileggi necessai pe creâ un atro account.\nL'account indicou chì o deve za existe.",
        "config-mysql-engine": "Motô d'archiviaçion:",
        "config-mysql-innodb": "InnoDB",
-       "config-mysql-myisam": "MyISAM"
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>Atençion:</strong> t'hæ seleçionou MyISAM comme motô d'archiviaçion pe MySQL, ch'o no l'è racomandou pe l'uso con  MediaWiki, percose:\n* o supporta debolmente a concorença pe-o blocco da tabella\n* o l'è ciu inclinou a-a corruçion di atri motoî\n* o codiçe de base MediaWiki o no gestisce sempre MyISAM comm'o doviæ\n\nSe a to instalaçion MySQL a supporta InnoDB, l'è atamente racomandou che ti o çerni a-o so posto.\nSe a to installaçion MySQL a no supporta InnoDB, foscia l'è o momento pe 'n agiornamento.",
+       "config-mysql-only-myisam-dep": "<strong>Atençion:</strong> MyISAM o l'è l'unnico motô d'archiviaçion disponibbile pe MySQL insce sta macchina, e questo no l'è consegiou pe doeuviâlo con MediaWiki, percose:\n* o supporta debolmente a concorenza pe-o blocco da tabella\n* o l''è ciu inclinou a-a corruçion di atri motoî\n* o coddiçe de base MediaWiki MyISAM  o no-o gestisce sempre comm'o doviæ\n\nS'a to installaçion MySQL a no supporta InnoDB, foscia l'è o momento pe 'n agiornamento.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> o l'è quæxi sempre a megio opçion, in quante o g'ha 'n bon supporto da concorença.\n\n<strong>MyISAM</strong> o poriæ vese ciu veloçe inte installaçioin mono-utente ò in sola-lettua.\nI database MyISAM tendan a dannezâse ciu soventi di database InnoDB.",
+       "config-mysql-charset": "Set di caratteri do database:",
+       "config-mysql-binary": "Binaio",
+       "config-mysql-utf8": "UTF-8",
+       "config-mssql-auth": "Tipo d'aotenticaçion:",
+       "config-mssql-install-auth": "Seleçion-a o tipo d'aotenticaçion ch'o saiâ doeuviou pe conettise a-o database durante o processo de instalaçion.\nSe ti seleçion-i \"{{int:config-mssql-windowsauth}}\", saiâ doeuviou e credençiæ de quæ se segge utente segge aproeuv'a fâ giâ o serviou web.",
+       "config-mssql-web-auth": "Seleçion-a o tipo d'aotenticaçion che o serviou web o doeuviâ pe conettise a-o database. \nSe ti seleçion-i \"{{int:config-mssql-windowsauth}}\", saiâ doeuviou e credençiæ de quæ se segge utente segge aproeuv'a fâ giâ o serviou web.",
+       "config-mssql-sqlauth": "Aotenticaçion de SQL Server",
+       "config-mssql-windowsauth": "Aotenticaçion de Windows",
+       "config-site-name": "Nomme da wiki:",
+       "config-site-name-help": "Questo saiâ vixualizou inta bara do tittolo do navegatô e in atri varri recanti.",
+       "config-site-name-blank": "Inseisci o nomme de 'n scito.",
+       "config-project-namespace": "Namespace do progetto:",
+       "config-ns-generic": "Progetto",
+       "config-ns-site-name": "Pægio che o nomme do wiki: $1",
+       "config-ns-other": "Atro (specificâ)",
+       "config-ns-other-default": "MyWiki",
+       "config-project-namespace-help": "Aproeuvo a l'exempio da Wikipedia, molte wiki tegnan e so paggine co-e reggole separæ da-e paggine de contegnuo, inte 'n '''namespace de progetto'''.\nTutti i tittoli de paggine inte sto namespace començan co-in çerto prefisso, che ti poeu indicâ chie.\nA l'uzo, sto prefisso o deriva da-o nomme da wiki, ma o no poeu contegnî di caratteri de pontezatua comme \"#\" ò \":\".",
+       "config-ns-invalid": "O namespace indicou \"<nowiki>$1</nowiki>\" o no l'è vallido.\nSpecificâ un despægio namespace de progetto.",
+       "config-ns-conflict": "O namespace indicou \"<nowiki>$1</nowiki>\" o l'è in conflito co-in namespace predefinio MediaWiki.\nSpecificâ un despægio namespace de progetto.",
+       "config-admin-box": "Account amministratô",
+       "config-admin-name": "O to nomme utente:",
+       "config-admin-password": "Poula segretta:",
+       "config-admin-password-confirm": "Ripeti a poula segretta:",
+       "config-admin-help": "Inseisci chì o to nomme utente prefeio, presempio \"Giobatta Parodi\".\nSto chì o l'è o nomme che ti doeuviæ pe acede a-a wiki.",
+       "config-admin-name-blank": "Inseisci un nomme pe l'aministratô.",
+       "config-admin-name-invalid": "O nomme utente indicou \"<nowiki>$1</nowiki>\" o no l'è vallido.\nSpecificâ un nomme utente despægio.",
+       "config-admin-password-blank": "Inseisci 'na password pe l'account d'aministratô.",
+       "config-admin-password-mismatch": "E doe password inseie no corispondan.",
+       "config-admin-email": "Adresso e-mail:",
+       "config-admin-email-help": "Inseisci chì 'n adresso e-mail pe poei riçeive di e-mail da-i atri utenti da wiki, rimpostâ a to password, e vese informou de modiffiche aportæ a-e to paggine sotta oservaçion. Se no te interessa, ti poeu lasciâ voeuo questo campo.",
+       "config-admin-error-user": "Erô interno durante a creaçion de 'n aministratô co-o nomme \"<nowiki>$1</nowiki>\".",
+       "config-admin-error-password": "Erô interno durante l'impostaçion de 'na password pe aministratô \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
+       "config-admin-error-bademail": "T'hæ inseio un adresso e-mail non vallido.",
+       "config-subscribe": "Sottoscrivi a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list di anonçi de release].",
+       "config-subscribe-help": "Se tratta de 'na mailing list a basso traffego dedicâ a-i anonçi de sciortie de noeuve verscioin, compreize de importante segnalaçioin pe-a segueçça.\nSe conseggia de inscrivise e agiornâ a proppia instalaçion de MediaWiki quande sciorte 'na noeuva verscion."
 }
index b8dab21..728a9a8 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Bjankuloski06",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Srdjan m"
                ]
        },
        "config-desc": "Воспоставувачот на МедијаВики",
@@ -58,7 +59,7 @@
        "config-pcre-old": "'''Кобно:''' Се бара PCRE $1 или понова верзија.\nВашиот PHP-бинарен е сврзан со PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Повеќе информации].",
        "config-pcre-no-utf8": "<strong>Кобно</strong>: PCRE-модулот на PHP е срочен без поддршка за PCRE_UTF8.\nМедијаВики бара поддршка за UTF-8 за да може да работи правилно.",
        "config-memory-raised": "<code>memory_limit</code> за PHP изнесува $1, зголемен на $2.",
-       "config-memory-bad": "'''Предупредување:''' <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
+       "config-memory-bad": "<strong>Предупредување:</strong> <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] е воспоставен",
        "config-apc": "[http://www.php.net/apc APC] е воспоставен",
        "config-apcu": "[http://www.php.net/apcu APCu] е воспоставен",
@@ -71,7 +72,7 @@
        "config-imagemagick": "Пронајден е ImageMagick: <code>$1</code>.\nАко овозможите подигање, тогаш ќе биде овозможена минијатуризација на сликите.",
        "config-gd": "Утврдив дека има вградена GD графичка библиотека.\nАко овозможите подигање, тогаш ќе биде овозможена минијатураизација на сликите.",
        "config-no-scaling": "Не можев да пронајдам GD-библиотека или ImageMagick.\nМинијатуризацијата на сликите ќе биде оневозможена.",
-       "config-no-uri": "'''Грешка:''' Не можев да го утврдам тековниот URI.\nВоспоставката е откажана.",
+       "config-no-uri": "<strong>Грешка:</strong> Не можев да го утврдам тековниот URI.\nВоспоставката е откажана.",
        "config-no-cli-uri": "'''Предупредување''': Нема наведено <code>--scriptpath</code>. Ќе се користи основниот: <code>$1</code>.",
        "config-using-server": "Користите опслужувач под името „<nowiki>$1</nowiki>“.",
        "config-using-uri": "Користите опслужувач со URL-адреса „<nowiki>$1$2</nowiki>“.",
        "config-db-port": "Порта на базата:",
        "config-db-schema": "Шема за МедијаВики",
        "config-db-schema-help": "Оваа шема обично по правило ќе работи нормално.\nСменете ја само ако знаете дека треба да се смени.",
-       "config-pg-test-error": "Не можам да се поврзам со базата '''$1''': $2",
+       "config-pg-test-error": "Не можам да се поврзам со базата <strong>$1</strong>: $2",
        "config-sqlite-dir": "Папка на SQLite-податоци:",
        "config-sqlite-dir-help": "SQLite ги складира сите податоци во една податотека.\n\nПапката што ќе ја наведете мора да е запислива од мрежниот опслужувач во текот на воспоставката.\n\nТаа '''не''' смее да биде достапна преку семрежјето, и затоа не ја ставаме кајшто ви се наоѓаат PHP-податотеките.\n\nВоспоставувачот воедно ќе создаде податотека <code>.htaccess</code>, но ако таа не функционира како што треба, тогаш некој ќе може да ви влезе во вашата необработена (сирова) база на податоци.\nТука спаѓаат необработени кориснички податоци (е-поштенски адреси, хеширани лозинки) како и избришани преработки и други податоци за викито до кои се има ограничен пристап.\n\nСе препорачува целата база да ја сместите некаде, како на пр. <code>/var/lib/mediawiki/вашетовики</code>.",
        "config-oracle-def-ts": "Стандарден таблеарен простор:",
index ff90a9e..49b7a45 100644 (file)
@@ -38,6 +38,8 @@ use Wikimedia\Rdbms\DBReplicationWaitError;
  * @since 1.24
  */
 class JobRunner implements LoggerAwareInterface {
+       /** @var Config */
+       protected $config;
        /** @var callable|null Debug output handler */
        protected $debug;
 
@@ -74,6 +76,7 @@ class JobRunner implements LoggerAwareInterface {
                        $logger = LoggerFactory::getInstance( 'runJobs' );
                }
                $this->setLogger( $logger );
+               $this->config = MediaWikiServices::getInstance()->getMainConfig();
        }
 
        /**
@@ -101,7 +104,8 @@ class JobRunner implements LoggerAwareInterface {
         * @return array Summary response that can easily be JSON serialized
         */
        public function run( array $options ) {
-               global $wgJobClasses, $wgTrxProfilerLimits;
+               $jobClasses = $this->config->get( 'JobClasses' );
+               $profilerLimits = $this->config->get( 'TrxProfilerLimits' );
 
                $response = [ 'jobs' => [], 'reached' => 'none-ready' ];
 
@@ -111,7 +115,7 @@ class JobRunner implements LoggerAwareInterface {
                $noThrottle = isset( $options['throttle'] ) && !$options['throttle'];
 
                // Bail if job type is invalid
-               if ( $type !== false && !isset( $wgJobClasses[$type] ) ) {
+               if ( $type !== false && !isset( $jobClasses[$type] ) ) {
                        $response['reached'] = 'none-possible';
                        return $response;
                }
@@ -136,7 +140,7 @@ class JobRunner implements LoggerAwareInterface {
                // Catch huge single updates that lead to replica DB lag
                $trxProfiler = Profiler::instance()->getTransactionProfiler();
                $trxProfiler->setLogger( LoggerFactory::getInstance( 'DBPerformance' ) );
-               $trxProfiler->setExpectations( $wgTrxProfilerLimits['JobRunner'], __METHOD__ );
+               $trxProfiler->setExpectations( $profilerLimits['JobRunner'], __METHOD__ );
 
                // Some jobs types should not run until a certain timestamp
                $backoffs = []; // map of (type => UNIX expiry)
@@ -362,15 +366,13 @@ class JobRunner implements LoggerAwareInterface {
         * @see $wgJobBackoffThrottling
         */
        private function getBackoffTimeToWait( Job $job ) {
-               global $wgJobBackoffThrottling;
+               $throttling = $this->config->get( 'JobBackoffThrottling' );
 
-               if ( !isset( $wgJobBackoffThrottling[$job->getType()] ) ||
-                       $job instanceof DuplicateJob // no work was done
-               ) {
+               if ( !isset( $throttling[$job->getType()] ) || $job instanceof DuplicateJob ) {
                        return 0; // not throttled
                }
 
-               $itemsPerSecond = $wgJobBackoffThrottling[$job->getType()];
+               $itemsPerSecond = $throttling[$job->getType()];
                if ( $itemsPerSecond <= 0 ) {
                        return 0; // not throttled
                }
@@ -518,17 +520,17 @@ class JobRunner implements LoggerAwareInterface {
         * @throws DBError
         */
        private function commitMasterChanges( LBFactory $lbFactory, Job $job, $fnameTrxOwner ) {
-               global $wgJobSerialCommitThreshold;
+               $syncThreshold = $this->config->get( 'JobSerialCommitThreshold' );
 
                $time = false;
                $lb = $lbFactory->getMainLB( wfWikiID() );
-               if ( $wgJobSerialCommitThreshold !== false && $lb->getServerCount() > 1 ) {
+               if ( $syncThreshold !== false && $lb->getServerCount() > 1 ) {
                        // Generally, there is one master connection to the local DB
                        $dbwSerial = $lb->getAnyOpenConnection( $lb->getWriterIndex() );
                        // We need natively blocking fast locks
                        if ( $dbwSerial && $dbwSerial->namedLocksEnqueue() ) {
                                $time = $dbwSerial->pendingWriteQueryDuration( $dbwSerial::ESTIMATE_DB_APPLY );
-                               if ( $time < $wgJobSerialCommitThreshold ) {
+                               if ( $time < $syncThreshold ) {
                                        $dbwSerial = false;
                                }
                        } else {
@@ -540,7 +542,12 @@ class JobRunner implements LoggerAwareInterface {
                }
 
                if ( !$dbwSerial ) {
-                       $lbFactory->commitMasterChanges( $fnameTrxOwner );
+                       $lbFactory->commitMasterChanges(
+                               $fnameTrxOwner,
+                               // Abort if any transaction was too big
+                               [ 'maxWriteDuration' => $this->config->get( 'MaxJobDBWriteDuration' ) ]
+                       );
+
                        return;
                }
 
@@ -565,7 +572,11 @@ class JobRunner implements LoggerAwareInterface {
                }
 
                // Actually commit the DB master changes
-               $lbFactory->commitMasterChanges( $fnameTrxOwner );
+               $lbFactory->commitMasterChanges(
+                       $fnameTrxOwner,
+                       // Abort if any transaction was too big
+                       [ 'maxWriteDuration' => $this->config->get( 'MaxJobDBWriteDuration' ) ]
+               );
                ScopedCallback::consume( $unlocker );
        }
 }
index e2f7886..039bd42 100644 (file)
@@ -1250,7 +1250,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return array
         */
        protected function sanitizeOpHeaders( array $op ) {
-               static $longs = [ 'content-disposition', 'x-content-dimensions' ];
+               static $longs = [ 'content-disposition' ];
 
                if ( isset( $op['headers'] ) ) { // op sets HTTP headers
                        $newHeaders = [];
diff --git a/includes/libs/http/HttpAcceptNegotiator.php b/includes/libs/http/HttpAcceptNegotiator.php
new file mode 100644 (file)
index 0000000..5f8d9a6
--- /dev/null
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * Utility for negotiating a value from a set of supported values using a preference list.
+ * This is intended for use with HTTP headers like Accept, Accept-Language, Accept-Encoding, etc.
+ * See RFC 2616 section 14 for details.
+ *
+ * To use this with a request header, first parse the header value into an array of weights
+ * using HttpAcceptParser, then call getBestSupportedKey.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ * @author Thiemo Mättig
+ */
+
+namespace Wikimedia\Http;
+
+class HttpAcceptNegotiator {
+
+       /**
+        * @var string[]
+        */
+       private $supportedValues;
+
+       /**
+        * @var string
+        */
+       private $defaultValue;
+
+       /**
+        * @param string[] $supported A list of supported values.
+        */
+       public function __construct( array $supported ) {
+               $this->supportedValues = $supported;
+               $this->defaultValue = reset( $supported );
+       }
+
+       /**
+        * Returns the best supported key from the given weight map. Of the keys from the
+        * $weights parameter that are also in the list of supported values supplied to
+        * the constructor, this returns the key that has the highest weight associated
+        * with it. If two keys have the same weight, the more specific key is preferred,
+        * as required by RFC2616 section 14. Keys that map to 0 or false are ignored.
+        * If no matching key is found, $default is returned.
+        *
+        * @param float[] $weights An associative array mapping accepted values to their
+        *              respective weights.
+        *
+        * @param null|string $default The value to return if non of the keys in $weights
+        *              is supported (null per default).
+        *
+        * @return null|string The best supported key from the $weights parameter.
+        */
+       public function getBestSupportedKey( array $weights, $default = null ) {
+               // Make sure we correctly bias against wildcards and ranges, see RFC2616, section 14.
+               foreach ( $weights as $name => &$weight ) {
+                       if ( $name === '*' || $name === '*/*' ) {
+                               $weight -= 0.000002;
+                       } elseif ( substr( $name, -2 ) === '/*' ) {
+                               $weight -= 0.000001;
+                       }
+               }
+
+               // Sort $weights by value and...
+               asort( $weights );
+
+               // remove any keys with values equal to 0 or false (HTTP/1.1 section 3.9)
+               $weights = array_filter( $weights );
+
+               // ...use the ordered list of keys
+               $preferences = array_reverse( array_keys( $weights ) );
+
+               $value = $this->getFirstSupportedValue( $preferences, $default );
+               return $value;
+       }
+
+       /**
+        * Returns the first supported value from the given preference list. Of the values from
+        * the $preferences parameter that are also in the list of supported values supplied
+        * to the constructor, this returns the value that has the lowest index in the list.
+        * If no such value is found, $default is returned.
+        *
+        * @param string[] $preferences A list of acceptable values, in order of preference.
+        *
+        * @param null|string $default The value to return if non of the keys in $weights
+        *              is supported (null per default).
+        *
+        * @return null|string The best supported key from the $weights parameter.
+        */
+       public function getFirstSupportedValue( array $preferences, $default = null ) {
+               foreach ( $preferences as $value ) {
+                       foreach ( $this->supportedValues as $supported ) {
+                               if ( $this->valueMatches( $value, $supported ) ) {
+                                       return $supported;
+                               }
+                       }
+               }
+
+               return $default;
+       }
+
+       /**
+        * Returns true if the given acceptable value matches the given supported value,
+        * according to the HTTP specification. The following rules are used:
+        *
+        * - comparison is case-insensitive
+        * - if $accepted and $supported are equal, they match
+        * - if $accepted is `*` or `*` followed by `/*`, it matches any $supported value.
+        * - if both $accepted and $supported contain a `/`, and $accepted ends with `/*`,
+        *   they match if the part before the first `/` is equal.
+        *
+        * @param string $accepted An accepted value (may contain wildcards)
+        * @param string  $supported A supported value.
+        *
+        * @return bool Whether the given supported value matches the given accepted value.
+        */
+       private function valueMatches( $accepted, $supported ) {
+               // RDF 2045: MIME types are case insensitive.
+               // full match
+               if ( strcasecmp( $accepted, $supported ) === 0 ) {
+                       return true;
+               }
+
+               // wildcard match (HTTP/1.1 section 14.1, 14.2, 14.3)
+               if ( $accepted === '*' || $accepted === '*/*' ) {
+                       return true;
+               }
+
+               // wildcard match (HTTP/1.1 section 14.1)
+               if ( substr( $accepted, -2 ) === '/*'
+                       && strncasecmp( $accepted, $supported, strlen( $accepted ) - 2 ) === 0
+               ) {
+                       return true;
+               }
+
+               return false;
+       }
+
+}
diff --git a/includes/libs/http/HttpAcceptParser.php b/includes/libs/http/HttpAcceptParser.php
new file mode 100644 (file)
index 0000000..bce071e
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Utility for parsing a HTTP Accept header value into a weight map. May also be used with
+ * other, similar headers like Accept-Language, Accept-Encoding, etc.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+
+namespace Wikimedia\Http;
+
+class HttpAcceptParser {
+
+       /**
+        * Parses an HTTP header into a weight map, that is an associative array
+        * mapping values to their respective weights. Any header name preceding
+        * weight spec is ignored for convenience.
+        *
+        * This implementation is partially based on the code at
+        * http://www.thefutureoftheweb.com/blog/use-accept-language-header
+        *
+        * Note that type parameters and accept extension like the "level" parameter
+        * are not supported, weights are derived from "q" values only.
+        *
+        * @todo: If additional type parameters are present, ignore them cleanly.
+        *        At present, they often confuse the result.
+        *
+        * See HTTP/1.1 section 14 for details.
+        *
+        * @param string $rawHeader
+        *
+        * @return array
+        */
+       public function parseWeights( $rawHeader ) {
+               //FIXME: The code below was copied and adapted from WebRequest::getAcceptLang.
+               //       Move this utility class into core for reuse!
+
+               // first, strip header name
+               $rawHeader = preg_replace( '/^[-\w]+:\s*/', '', $rawHeader );
+
+               // Return values in lower case
+               $rawHeader = strtolower( $rawHeader );
+
+               // Break up string into pieces (values and q factors)
+               $value_parse = null;
+               preg_match_all( '@([a-z\d*]+([-+/.][a-z\d*]+)*)\s*(;\s*q\s*=\s*(1(\.0{0,3})?|0(\.\d{0,3})?)?)?@',
+                       $rawHeader, $value_parse );
+
+               if ( !count( $value_parse[1] ) ) {
+                       return [];
+               }
+
+               $values = $value_parse[1];
+               $qvalues = $value_parse[4];
+               $indices = range( 0, count( $value_parse[1] ) - 1 );
+
+               // Set default q factor to 1
+               foreach ( $indices as $index ) {
+                       if ( $qvalues[$index] === '' ) {
+                               $qvalues[$index] = 1;
+                       } elseif ( $qvalues[$index] == 0 ) {
+                               unset( $values[$index], $qvalues[$index], $indices[$index] );
+                       } else {
+                               $qvalues[$index] = (float)$qvalues[$index];
+                       }
+               }
+
+               // Sort list. First by $qvalues, then by order. Reorder $values the same way
+               array_multisort( $qvalues, SORT_DESC, SORT_NUMERIC, $indices, $values );
+
+               // Create a list like "en" => 0.8
+               $weights = array_combine( $values, $qvalues );
+
+               return $weights;
+       }
+
+}
index 5d3534f..823e0dc 100644 (file)
@@ -265,8 +265,9 @@ class TransactionProfiler implements LoggerAwareInterface {
         * @param string $db DB name
         * @param string $id ID string of transaction
         * @param float $writeTime Time spent in write queries
+        * @param integer $affected Number of rows affected by writes
         */
-       public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0 ) {
+       public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0, $affected = 0 ) {
                $name = "{$server} ({$db}) (TRX#$id)";
                if ( !isset( $this->dbTrxMethodTimes[$name] ) ) {
                        $this->logger->info( "Detected no transaction for '$name' - out of sync." );
@@ -284,6 +285,14 @@ class TransactionProfiler implements LoggerAwareInterface {
                        );
                        $slow = true;
                }
+               // Warn if too many rows were changed...
+               if ( $affected > $this->expect['maxAffected'] ) {
+                       $this->reportExpectationViolated(
+                               'maxAffected',
+                               "[transaction $id writes to {$server} ({$db})]",
+                               $affected
+                       );
+               }
                // Fill in the last non-query period...
                $lastQuery = end( $this->dbTrxMethodTimes[$name] );
                if ( $lastQuery ) {
index b6167aa..fb4122d 100644 (file)
@@ -124,6 +124,10 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function pendingWriteRowsAffected() {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function isOpen() {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -243,13 +247,13 @@ class DBConnRef implements IDatabase {
        }
 
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -407,7 +411,7 @@ class DBConnRef implements IDatabase {
 
        public function insertSelect(
                $destTable, $srcTable, $varMap, $conds,
-               $fname = __METHOD__, $insertOptions = [], $selectOptions = []
+               $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
index ee7644f..9e91592 100644 (file)
@@ -200,6 +200,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @var integer Number of write queries for the current transaction
         */
        private $mTrxWriteQueryCount = 0;
+       /**
+        * @var integer Number of rows affected by write queries for the current transaction
+        */
+       private $mTrxWriteAffectedRows = 0;
        /**
         * @var float Like mTrxWriteQueryCount but excludes lock-bound, easy to replicate, queries
         */
@@ -583,6 +587,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $this->mTrxLevel ? $this->mTrxWriteCallers : [];
        }
 
+       public function pendingWriteRowsAffected() {
+               return $this->mTrxWriteAffectedRows;
+       }
+
        /**
         * Get the list of method names that have pending write queries or callbacks
         * for this transaction
@@ -1011,7 +1019,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                if ( $ret !== false ) {
                        $this->lastPing = $startTime;
                        if ( $isWrite && $this->mTrxLevel ) {
-                               $this->updateTrxWriteQueryTime( $sql, $queryRuntime );
+                               $this->updateTrxWriteQueryTime( $sql, $queryRuntime, $this->affectedRows() );
                                $this->mTrxWriteCallers[] = $fname;
                        }
                }
@@ -1042,8 +1050,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         *
         * @param string $sql A SQL write query
         * @param float $runtime Total runtime, including RTT
+        * @param integer $affected Affected row count
         */
-       private function updateTrxWriteQueryTime( $sql, $runtime ) {
+       private function updateTrxWriteQueryTime( $sql, $runtime, $affected ) {
                // Whether this is indicative of replica DB runtime (except for RBR or ws_repl)
                $indicativeOfReplicaRuntime = true;
                if ( $runtime > self::SLOW_WRITE_SEC ) {
@@ -1058,6 +1067,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $this->mTrxWriteDuration += $runtime;
                $this->mTrxWriteQueryCount += 1;
+               $this->mTrxWriteAffectedRows += $affected;
                if ( $indicativeOfReplicaRuntime ) {
                        $this->mTrxWriteAdjDuration += $runtime;
                        $this->mTrxWriteAdjQueryCount += 1;
@@ -1140,7 +1150,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                if ( $var === '*' ) { // sanity
                        throw new DBUnexpectedError( $this, "Cannot use a * field: got '$var'" );
@@ -1152,7 +1162,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $options['LIMIT'] = 1;
 
-               $res = $this->select( $table, $var, $cond, $fname, $options );
+               $res = $this->select( $table, $var, $cond, $fname, $options, $join_conds );
                if ( $res === false || !$this->numRows( $res ) ) {
                        return false;
                }
@@ -2346,7 +2356,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
        public function insertSelect(
                $destTable, $srcTable, $varMap, $conds,
-               $fname = __METHOD__, $insertOptions = [], $selectOptions = []
+               $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                if ( $this->cliMode ) {
                        // For massive migrations with downtime, we don't want to select everything
@@ -2358,7 +2368,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                                $conds,
                                $fname,
                                $insertOptions,
-                               $selectOptions
+                               $selectOptions,
+                               $selectJoinConds
                        );
                }
 
@@ -2370,7 +2381,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        $fields[] = $this->fieldNameWithAlias( $sourceColumnOrSql, $dstColumn );
                }
                $selectOptions[] = 'FOR UPDATE';
-               $res = $this->select( $srcTable, implode( ',', $fields ), $conds, $fname, $selectOptions );
+               $res = $this->select(
+                       $srcTable, implode( ',', $fields ), $conds, $fname, $selectOptions, $selectJoinConds
+               );
                if ( !$res ) {
                        return false;
                }
@@ -2391,7 +2404,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         */
        protected function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $destTable = $this->tableName( $destTable );
 
@@ -2401,32 +2414,18 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $insertOptions = $this->makeInsertOptions( $insertOptions );
 
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) = $this->makeSelectOptions(
-                       $selectOptions );
-
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
+               $selectSql = $this->selectSQLText(
+                       $srcTable,
+                       array_values( $varMap ),
+                       $conds,
+                       $fname,
+                       $selectOptions,
+                       $selectJoinConds
+               );
 
                $sql = "INSERT $insertOptions" .
-                       " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-
-               if ( $conds != '*' ) {
-                       if ( is_array( $conds ) ) {
-                               $conds = $this->makeList( $conds, self::LIST_AND );
-                       }
-                       $sql .= " WHERE $conds";
-               }
-
-               $sql .= " $tailOpts";
+                       " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ') ' .
+                       $selectSql;
 
                return $this->query( $sql, $fname );
        }
@@ -2805,6 +2804,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->mTrxShortId = sprintf( '%06x', mt_rand( 0, 0xffffff ) );
                $this->mTrxWriteDuration = 0.0;
                $this->mTrxWriteQueryCount = 0;
+               $this->mTrxWriteAffectedRows = 0;
                $this->mTrxWriteAdjDuration = 0.0;
                $this->mTrxWriteAdjQueryCount = 0;
                $this->mTrxWriteCallers = [];
@@ -2871,7 +2871,12 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                if ( $this->mTrxDoneWrites ) {
                        $this->mLastWriteTime = microtime( true );
                        $this->trxProfiler->transactionWritingOut(
-                               $this->mServer, $this->mDBname, $this->mTrxShortId, $writeTime );
+                               $this->mServer,
+                               $this->mDBname,
+                               $this->mTrxShortId,
+                               $writeTime,
+                               $this->mTrxWriteAffectedRows
+                       );
                }
 
                $this->runOnTransactionIdleCallbacks( self::TRIGGER_COMMIT );
@@ -2916,7 +2921,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->mTrxAtomicLevels = [];
                if ( $this->mTrxDoneWrites ) {
                        $this->trxProfiler->transactionWritingOut(
-                               $this->mServer, $this->mDBname, $this->mTrxShortId );
+                               $this->mServer,
+                               $this->mDBname,
+                               $this->mTrxShortId
+                       );
                }
 
                $this->mTrxIdleCallbacks = []; // clear
index 782727a..8f3cab8 100644 (file)
@@ -717,11 +717,12 @@ class DatabaseMssql extends Database {
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
+        * @param array $selectJoinConds
         * @return null|ResultWrapper
         * @throws Exception
         */
        public function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $this->mScrollableCursor = false;
                try {
@@ -732,7 +733,8 @@ class DatabaseMssql extends Database {
                                $conds,
                                $fname,
                                $insertOptions,
-                               $selectOptions
+                               $selectOptions,
+                               $selectJoinConds
                        );
                } catch ( Exception $e ) {
                        $this->mScrollableCursor = true;
index 2fe275b..57acd01 100644 (file)
@@ -681,14 +681,13 @@ __INDEXATTR__;
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
+        * @param array $selectJoinConds
         * @return bool
         */
        public function nativeInsertSelect(
                $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
-               $destTable = $this->tableName( $destTable );
-
                if ( !is_array( $insertOptions ) ) {
                        $insertOptions = [ $insertOptions ];
                }
@@ -705,28 +704,9 @@ __INDEXATTR__;
                        $savepoint->savepoint();
                }
 
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) =
-                       $this->makeSelectOptions( $selectOptions );
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
-
-               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-
-               if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
-               }
-
-               $sql .= " $tailOpts";
+               $res = parent::nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname,
+                       $insertOptions, $selectOptions, $selectJoinConds );
 
-               $res = (bool)$this->query( $sql, $fname, $savepoint );
                if ( $savepoint ) {
                        $bar = pg_result_error( $this->mLastResult );
                        if ( $bar != false ) {
@@ -1059,6 +1039,7 @@ __INDEXATTR__;
                if ( $schema === false ) {
                        $schema = $this->getCoreSchema();
                }
+               $table = $this->realTableName( $table, 'raw' );
                $etable = $this->addQuotes( $table );
                $eschema = $this->addQuotes( $schema );
                $sql = "SELECT 1 FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "
index bec26a6..7c6413c 100644 (file)
@@ -274,6 +274,14 @@ interface IDatabase {
         */
        public function pendingWriteCallers();
 
+       /**
+        * Get the number of affected rows from pending write queries
+        *
+        * @return integer
+        * @since 1.30
+        */
+       public function pendingWriteRowsAffected();
+
        /**
         * Is a connection to the database open?
         * @return bool
@@ -560,11 +568,12 @@ interface IDatabase {
         * @param string|array $cond The condition array. See IDatabase::select() for details.
         * @param string $fname The function name of the caller.
         * @param string|array $options The query options. See IDatabase::select() for details.
+        * @param string|array $join_conds The query join conditions. See IDatabase::select() for details.
         *
         * @return bool|mixed The value from the field, or false on failure.
         */
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -581,12 +590,13 @@ interface IDatabase {
         * @param string|array $cond The condition array. See IDatabase::select() for details.
         * @param string $fname The function name of the caller.
         * @param string|array $options The query options. See IDatabase::select() for details.
+        * @param string|array $join_conds The query join conditions. See IDatabase::select() for details.
         *
         * @return bool|array The values from the field, or false on failure
         * @since 1.25
         */
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -1239,12 +1249,14 @@ interface IDatabase {
         *    IDatabase::insert() for details.
         * @param array $selectOptions Options for the SELECT part of the query, see
         *    IDatabase::select() for details.
+        * @param array $selectJoinConds Join conditions for the SELECT part of the query, see
+        *    IDatabase::select() for details.
         *
         * @return IResultWrapper
         */
        public function insertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        );
 
        /**
index d120b6f..4300e9f 100644 (file)
@@ -161,7 +161,10 @@ class LoadMonitor implements ILoadMonitor {
                        if ( !$conn ) {
                                $lagTimes[$i] = false;
                                $host = $this->parent->getServerName( $i );
-                               $this->replLogger->error( __METHOD__ . ": host $host is unreachable" );
+                               $this->replLogger->error(
+                                       __METHOD__ . ": host {db_server} is unreachable",
+                                       [ 'db_server' => $host ]
+                               );
                                continue;
                        }
 
@@ -171,7 +174,10 @@ class LoadMonitor implements ILoadMonitor {
                                $lagTimes[$i] = $conn->getLag();
                                if ( $lagTimes[$i] === false ) {
                                        $host = $this->parent->getServerName( $i );
-                                       $this->replLogger->error( __METHOD__ . ": host $host is not replicating?" );
+                                       $this->replLogger->error(
+                                               __METHOD__ . ": host {db_server} is not replicating?",
+                                               [ 'db_server' => $host ]
+                                       );
                                }
                        }
 
diff --git a/includes/linkeddata/PageDataRequestHandler.php b/includes/linkeddata/PageDataRequestHandler.php
new file mode 100644 (file)
index 0000000..d26b304
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptParser;
+use Wikimedia\Http\HttpAcceptNegotiator;
+
+/**
+ * Request handler implementing a data interface for mediawiki pages.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ * @author Amir Sarabadanai
+ */
+
+class PageDataRequestHandler {
+
+       /**
+        * Checks whether the request is complete, i.e. whether it contains all information needed
+        * to reply with page data.
+        *
+        * This does not check whether the request is valid and will actually produce a successful
+        * response.
+        *
+        * @param string|null $subPage
+        * @param WebRequest $request
+        *
+        * @return bool
+        * @throws HttpError
+        */
+       public function canHandleRequest( $subPage, WebRequest $request ) {
+               if ( $subPage === '' || $subPage === null ) {
+                       if ( $request->getText( 'target', '' ) === '' ) {
+                               return false;
+                       } else {
+                               return true;
+                       }
+               }
+
+               $parts = explode( '/', $subPage, 2 );
+               if ( $parts !== 2 ) {
+                       $slot = $parts[0];
+                       if ( $slot === 'main' or $slot === '' ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Main method for handling requests.
+        *
+        * @param string $subPage
+        * @param WebRequest $request The request parameters. Known parameters are:
+        *        - title: the page title
+        *        - format: the format
+        *        - oldid|revision: the revision ID
+        * @param OutputPage $output
+        *
+        * @note: Instead of an output page, a WebResponse could be sufficient, but
+        *        redirect logic is currently implemented in OutputPage.
+        *
+        * @throws HttpError
+        */
+       public function handleRequest( $subPage, WebRequest $request, OutputPage $output ) {
+               // No matter what: The response is always public
+               $output->getRequest()->response()->header( 'Access-Control-Allow-Origin: *' );
+
+               if ( !$this->canHandleRequest( $subPage, $request ) ) {
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $subPage ) );
+               }
+
+               $revision = 0;
+
+               $parts = explode( '/', $subPage, 2 );
+               if ( $subPage !== '' ) {
+                       $title = $parts[1];
+               } else {
+                       $title = $request->getText( 'target', '' );
+               }
+
+               $revision = $request->getInt( 'oldid', $revision );
+               $revision = $request->getInt( 'revision', $revision );
+
+               if ( $title === null || $title === '' ) {
+                       //TODO: different error message?
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $title ) );
+               }
+
+               try {
+                       $title = Title::newFromTextThrow( $title );
+               } catch ( MalformedTitleException $ex ) {
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $title ) );
+               }
+
+               $this->httpContentNegotiation( $request, $output, $title, $revision );
+       }
+
+       /**
+        * Applies HTTP content negotiation.
+        * If the negotiation is successful, this method will set the appropriate redirect
+        * in the OutputPage object and return. Otherwise, an HttpError is thrown.
+        *
+        * @param WebRequest $request
+        * @param OutputPage $output
+        * @param Title $title
+        * @param int $revision The desired revision
+        *
+        * @throws HttpError
+        */
+       public function httpContentNegotiation(
+               WebRequest $request,
+               OutputPage $output,
+               Title $title,
+               $revision = 0
+       ) {
+               $contentHandler = ContentHandler::getForTitle( $title );
+               $mimeTypes = $contentHandler->getSupportedFormats();
+
+               $headers = $request->getAllHeaders();
+               if ( isset( $headers['ACCEPT'] ) ) {
+                       $parser = new HttpAcceptParser();
+                       $accept = $parser->parseWeights( $headers['ACCEPT'] );
+               } else {
+                       // anything goes
+                       $accept = [
+                               '*' => 0.1 // just to make extra sure
+                       ];
+                       // prefer the default
+                       $accept[$mimeTypes[0]] = 1;
+               }
+
+               $negotiator = new HttpAcceptNegotiator( $mimeTypes );
+               $format = $negotiator->getBestSupportedKey( $accept, null );
+
+               if ( $format === null ) {
+                       $format = isset( $accept['text/html'] ) ? 'text/html' : null;
+               }
+
+               if ( $format === null ) {
+                       $msg = wfMessage( 'pagedata-not-acceptable', implode( ', ', $mimeTypes ) );
+                       throw new HttpError( 406, $msg );
+               }
+
+               $url = $this->getDocUrl( $title, $format, $revision );
+               $output->redirect( $url, 303 );
+       }
+
+       /**
+        * Returns a url representing the given title.
+        *
+        * @param Title $title
+        * @param string|null $format The (normalized) format name, or ''
+        * @param int $revision
+        * @return string
+        */
+       private function getDocUrl( Title $title, $format = '', $revision = 0 ) {
+               $params = [];
+
+               if ( $revision > 0 ) {
+                       $params['oldid'] = $revision;
+               }
+
+               if ( $format === 'text/html' ) {
+                       return $title->getFullURL( $params );
+               }
+
+               $params[ 'action' ] = 'raw';
+
+               return $title->getFullURL( $params );
+       }
+
+}
index f260850..aae66d3 100644 (file)
@@ -461,43 +461,4 @@ class DjVuHandler extends ImageHandler {
                        return false;
                }
        }
-
-       /**
-       * Get useful response headers for GET/HEAD requests for a file with the given metadata
-       * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
-       * @param $fallbackWidth int|null Width to fall back to if metadata doesn't have any
-       * @param $fallbackHeight int|null Height to fall back to if metadata doesn't have any
-       * @return Array
-       * @since 1.30
-       */
-       public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
-               if ( !isset( $metadata['xml'] ) ) {
-                       return [];
-               }
-
-               $trees = $this->extractTreesFromMetadata( $metadata['xml'] );
-               $dimensionInfo = $this->getDimensionInfoFromMetaTree( $trees['MetaTree'] );
-
-               if ( !$dimensionInfo ) {
-                       return [];
-               }
-
-               $pagesByDimensions = [];
-               $count = $dimensionInfo['pageCount'];
-
-               for ( $i = 1; $i <= $count; $i++ ) {
-                       $dimensions = $dimensionInfo['dimensionsByPage'][ $i - 1 ];
-                       $dimensionString = $dimensions['width'] . 'x' . $dimensions['height'];
-
-                       if ( isset ( $pagesByDimensions[ $dimensionString ] ) ) {
-                               $pagesByDimensions[ $dimensionString ][] = $i;
-                       } else {
-                               $pagesByDimensions[ $dimensionString ] = [ $i ];
-                       }
-               }
-
-               $pageRangesByDimensions = MediaHandler::getPageRangesByDimensions( $pagesByDimensions );
-
-               return [ 'X-Content-Dimensions' => $pageRangesByDimensions ];
-       }
 }
index ec4d372..8896264 100644 (file)
@@ -916,32 +916,10 @@ abstract class MediaHandler {
        /**
        * Get useful response headers for GET/HEAD requests for a file with the given metadata
        * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
-       * @param $fallbackWidth int|null Width to fall back to if metadata doesn't have any
-       * @param $fallbackHeight int|null Height to fall back to if metadata doesn't have any
        * @return Array
        * @since 1.30
        */
-       public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
-               if ( !isset( $metadata['width'] ) ) {
-                       if ( is_null( $fallbackWidth ) ) {
-                               return [];
-                       }
-
-                       $metadata['width'] = $fallbackWidth;
-               }
-
-               if ( !isset( $metadata['height'] ) ) {
-                       if ( is_null( $fallbackHeight ) ) {
-                               return [];
-                       }
-
-                       $metadata['height'] = $fallbackHeight;
-               }
-
-               $dimensionString = $metadata['width'] . 'x' . $metadata['height'];
-               $pagesByDimensions = [ $dimensionString => [ 1 ] ];
-               $pageRangesByDimensions = MediaHandler::getPageRangesByDimensions( $pagesByDimensions );
-
-               return [ 'X-Content-Dimensions' => $pageRangesByDimensions ];
+       public function getContentHeaders( $metadata ) {
+               return [];
        }
 }
index ccc50f7..7dea271 100644 (file)
@@ -27,7 +27,7 @@
  */
 class CategoryPage extends Article {
        # Subclasses can change this to override the viewer class.
-       protected $mCategoryViewerClass = 'CategoryViewer';
+       public $mCategoryViewerClass = 'CategoryViewer';
 
        /**
         * @var WikiCategoryPage
index 9c6cf93..1f0e19e 100644 (file)
@@ -327,6 +327,13 @@ class ParserCache {
                        // ...and its pointer
                        $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
 
+                       // Normally, when there was no key change, the above would have
+                       // overwritten the old entry. Delete that old entry to save disk
+                       // space.
+                       $oldParserOutputKey = $this->getParserOutputKey( $page,
+                               $popts->optionsHashPre30( $optionsKey->mUsedOptions, $page->getTitle() ) );
+                       $this->mMemc->delete( $oldParserOutputKey );
+
                        Hooks::run(
                                'ParserCacheSaveComplete',
                                [ $this, $parserOutput, $page->getTitle(), $popts, $revId ]
index f8ed63f..5be0321 100644 (file)
@@ -60,7 +60,6 @@ class ParserOptions {
         */
        private static $inCacheKey = [
                'dateformat' => true,
-               'editsection' => true,
                'numberheadings' => true,
                'thumbsize' => true,
                'stubthreshold' => true,
@@ -82,6 +81,13 @@ class ParserOptions {
         */
        private $mTimestamp;
 
+       /**
+        * The edit section flag is in ParserOptions for historical reasons, but
+        * doesn't actually affect the parser output since Feb 2015.
+        * @var bool
+        */
+       private $mEditSection = true;
+
        /**
         * Stored user object
         * @var User
@@ -244,23 +250,6 @@ class ParserOptions {
                return $this->setOptionLegacy( 'enableImageWhitelist', $x );
        }
 
-       /**
-        * Create "edit section" links?
-        * @return bool
-        */
-       public function getEditSection() {
-               return $this->getOption( 'editsection' );
-       }
-
-       /**
-        * Create "edit section" links?
-        * @param bool|null $x New value (null is no change)
-        * @return bool Old value
-        */
-       public function setEditSection( $x ) {
-               return $this->setOptionLegacy( 'editsection', $x );
-       }
-
        /**
         * Automatically number headings?
         * @return bool
@@ -878,6 +867,23 @@ class ParserOptions {
                return wfSetVar( $this->mTimestamp, $x );
        }
 
+       /**
+        * Create "edit section" links?
+        * @return bool
+        */
+       public function getEditSection() {
+               return $this->mEditSection;
+       }
+
+       /**
+        * Create "edit section" links?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setEditSection( $x ) {
+               return wfSetVar( $this->mEditSection, $x );
+       }
+
        /**
         * Set the redirect target.
         *
@@ -1041,7 +1047,6 @@ class ParserOptions {
                        // *UPDATE* ParserOptions::matches() if any of this changes as needed
                        self::$defaults = [
                                'dateformat' => null,
-                               'editsection' => true,
                                'tidy' => false,
                                'interfaceMessage' => false,
                                'targetLanguage' => null,
@@ -1256,16 +1261,32 @@ class ParserOptions {
        public function optionsHash( $forOptions, $title = null ) {
                global $wgRenderHashAppend;
 
+               $options = $this->options;
+               $defaults = self::getCanonicalOverrides() + self::getDefaults();
+               $inCacheKey = self::$inCacheKey;
+
+               // Historical hack: 'editsection' hasn't been a true parser option since
+               // Feb 2015 (instead the parser outputs a constant placeholder and post-parse
+               // processing handles the option). But Wikibase forces it in $forOptions
+               // and expects the cache key to still vary on it for T85252.
+               // @todo Deprecate and remove this behavior after optionsHashPre30() is
+               //  removed (Wikibase can use addExtraKey() or something instead).
+               if ( in_array( 'editsection', $forOptions, true ) ) {
+                       $options['editsection'] = $this->mEditSection;
+                       $defaults['editsection'] = true;
+                       $inCacheKey['editsection'] = true;
+                       ksort( $inCacheKey );
+               }
+
                // We only include used options with non-canonical values in the key
                // so adding a new option doesn't invalidate the entire parser cache.
                // The drawback to this is that changing the default value of an option
                // requires manual invalidation of existing cache entries, as mentioned
                // in the docs on the relevant methods and hooks.
-               $defaults = self::getCanonicalOverrides() + self::getDefaults();
                $values = [];
-               foreach ( self::$inCacheKey as $option => $include ) {
+               foreach ( $inCacheKey as $option => $include ) {
                        if ( $include && in_array( $option, $forOptions, true ) ) {
-                               $v = $this->optionToString( $this->options[$option] );
+                               $v = $this->optionToString( $options[$option] );
                                $d = $this->optionToString( $defaults[$option] );
                                if ( $v !== $d ) {
                                        $values[] = "$option=$v";
@@ -1364,7 +1385,7 @@ class ParserOptions {
                // directly. At least Wikibase does at this point in time.
                if ( !in_array( 'editsection', $forOptions ) ) {
                        $confstr .= '!*';
-               } elseif ( !$this->options['editsection'] ) {
+               } elseif ( !$this->mEditSection ) {
                        $confstr .= '!edit=0';
                }
 
index 62bafe9..9beafc9 100644 (file)
@@ -19,8 +19,6 @@
  * @ingroup RevisionDelete
  */
 
-use Wikimedia\Rdbms\IDatabase;
-
 /**
  * Item class for an oldimage table row
  */
index ccb202e..e9d2f07 100644 (file)
@@ -1485,7 +1485,7 @@ abstract class Skin extends ContextSource {
         *   should fall back to the next notice in its sequence
         */
        private function getCachedNotice( $name ) {
-               global $wgRenderHashAppend, $parserMemc, $wgContLang;
+               global $wgRenderHashAppend, $wgContLang;
 
                $needParse = false;
 
@@ -1506,9 +1506,10 @@ abstract class Skin extends ContextSource {
                        $notice = $msg->plain();
                }
 
+               $cache = wfGetCache( CACHE_ANYTHING );
                // Use the extra hash appender to let eg SSL variants separately cache.
-               $key = $parserMemc->makeKey( $name . $wgRenderHashAppend );
-               $cachedNotice = $parserMemc->get( $key );
+               $key = $cache->makeKey( $name . $wgRenderHashAppend );
+               $cachedNotice = $cache->get( $key );
                if ( is_array( $cachedNotice ) ) {
                        if ( md5( $notice ) == $cachedNotice['hash'] ) {
                                $notice = $cachedNotice['html'];
@@ -1521,7 +1522,7 @@ abstract class Skin extends ContextSource {
 
                if ( $needParse ) {
                        $parsed = $this->getOutput()->parse( $notice );
-                       $parserMemc->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
+                       $cache->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
                        $notice = $parsed;
                }
 
index ba58e92..e861afe 100644 (file)
@@ -783,6 +783,10 @@ class SpecialPage {
         * @since 1.25
         */
        public function addHelpLink( $to, $overrideBaseUrl = false ) {
+               if ( $this->including() ) {
+                       return;
+               }
+
                global $wgContLang;
                $msg = $this->msg( $wgContLang->lc( $this->getName() ) . '-helppage' );
 
index 84d3b08..81e2b7e 100644 (file)
@@ -186,6 +186,7 @@ class SpecialPageFactory {
                'Revisiondelete' => 'SpecialRevisionDelete',
                'RunJobs' => 'SpecialRunJobs',
                'Specialpages' => 'SpecialSpecialpages',
+               'PageData' => 'SpecialPageData'
        ];
 
        private static $list;
diff --git a/includes/specials/SpecialPageData.php b/includes/specials/SpecialPageData.php
new file mode 100644 (file)
index 0000000..f7084a8
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * Special page to act as an endpoint for accessing raw page data.
+ * The web server should generally be configured to make this accessible via a canonical URL/URI,
+ * such as <http://my.domain.org/data/main/Foo>.
+ *
+ * @license GPL-2.0+
+ */
+class SpecialPageData extends SpecialPage {
+
+       /**
+        * @var PageDataRequestHandler|null
+        */
+       private $requestHandler = null;
+
+       public function __construct() {
+               parent::__construct( 'PageData' );
+       }
+
+       /**
+        * Sets the request handler to be used by the special page.
+        * May be used when a particular instance of PageDataRequestHandler is already
+        * known, e.g. during testing.
+        *
+        * If no request handler is set using this method, a default handler is created
+        * on demand by initDependencies().
+        *
+        * @param PageDataRequestHandler $requestHandler
+        */
+       public function setRequestHandler( PageDataRequestHandler $requestHandler ) {
+               $this->requestHandler = $requestHandler;
+       }
+
+       /**
+        * Initialize any un-initialized members from global context.
+        * In particular, this initializes $this->requestHandler
+        */
+       protected function initDependencies() {
+               if ( $this->requestHandler === null ) {
+                       $this->requestHandler = $this->newDefaultRequestHandler();
+               }
+       }
+
+       /**
+        * Creates a PageDataRequestHandler based on global defaults.
+        *
+        * @return PageDataRequestHandler
+        */
+       private function newDefaultRequestHandler() {
+
+               return new PageDataRequestHandler();
+       }
+
+       /**
+        * @see SpecialWikibasePage::execute
+        *
+        * @param string|null $subPage
+        *
+        * @throws HttpError
+        */
+       public function execute( $subPage ) {
+               $this->initDependencies();
+
+               // If there is no title, show an HTML form
+               // TODO: Don't do this if HTML is not acceptable according to HTTP headers.
+               if ( !$this->requestHandler->canHandleRequest( $subPage, $this->getRequest() ) ) {
+                       $this->showForm();
+                       return;
+               }
+
+               $this->requestHandler->handleRequest( $subPage, $this->getRequest(), $this->getOutput() );
+       }
+
+       /**
+        * Shows an informative page to the user; Called when there is no page to output.
+        */
+       public function showForm() {
+               $this->getOutput()->showErrorPage( 'pagedata-title', 'pagedata-text' );
+       }
+
+       public function isListed() {
+               // Do not list this page in Special:SpecialPages
+               return false;
+       }
+
+}
index eb4f0cc..fa38506 100644 (file)
@@ -21,7 +21,6 @@
  * @ingroup SpecialPage
  */
 
-use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\ResultWrapper;
 
 /**
index 9f6feb8..b793a58 100644 (file)
@@ -48,6 +48,12 @@ class RaggettWrapper {
                // Modify inline Microdata <link> and <meta> elements so they say <html-link> and <html-meta> so
                // we can trick Tidy into not stripping them out by including them in tidy's new-empty-tags config
                $wrappedtext = preg_replace( '!<(link|meta)([^>]*?)(/{0,1}>)!', '<html-$1$2$3', $wrappedtext );
+               // Similar for inline <style> tags, but those aren't empty.
+               $wrappedtext = preg_replace_callback( '!<style([^>]*)>(.*?)</style>!s', function ( $m ) {
+                       return '<html-style' . $m[1] . '>'
+                               . $this->replaceCallback( [ $m[2] ] )
+                               . '</html-style>';
+               }, $wrappedtext );
 
                // Preserve empty li elements (T49673) by abusing Tidy's datafld hack
                // The whitespace class is as in TY_(InitMap)
@@ -78,8 +84,9 @@ class RaggettWrapper {
         * @return string
         */
        public function postprocess( $text ) {
-               // Revert <html-{link,meta}> back to <{link,meta}>
+               // Revert <html-{link,meta,style}> back to <{link,meta,style}>
                $text = preg_replace( '!<html-(link|meta)([^>]*?)(/{0,1}>)!', '<$1$2$3', $text );
+               $text = preg_replace( '!<(/?)html-(style)([^>]*)>!', '<$1$2$3>', $text );
 
                // Remove datafld
                $text = str_replace( '<li datafld=""', '<li', $text );
index 3dc727b..c8a715b 100644 (file)
@@ -5,7 +5,6 @@ namespace MediaWiki\Tidy;
 use RemexHtml\HTMLData;
 use RemexHtml\Serializer\HtmlFormatter;
 use RemexHtml\Serializer\SerializerNode;
-use RemexHtml\Tokenizer\PlainAttributes;
 
 /**
  * @internal
index d93ce22..d4a3199 100644 (file)
@@ -20,3 +20,5 @@ fix-uri: no
 # html-{meta,link} is a hack we use to prevent Tidy from stripping <meta> and <link> used in the body for Microdata
 new-empty-tags: html-meta, html-link, wbr, source, track
 new-inline-tags: video, audio, bdi, data, time, mark
+# html-style is a hack we use to prevent pre-HTML5 versions of Tidy from stripping <style> used in the body for TemplateStyles
+new-blocklevel-tags: html-style
index acd792d..861fb6d 100644 (file)
@@ -6,7 +6,6 @@ use HtmlArmor;
 use MediaWiki\Linker\LinkRenderer;
 use SearchResult;
 use SpecialSearch;
-use Title;
 use Html;
 
 /**
index 9fe816a..8190442 100644 (file)
@@ -6,7 +6,6 @@ use HtmlArmor;
 use MediaWiki\Linker\LinkRenderer;
 use SearchResult;
 use SpecialSearch;
-use Title;
 
 /**
  * Renders a simple one-line result
index 2020de3..ee3f214 100644 (file)
        "anontalk": "نقاش",
        "navigation": "تصفح",
        "and": "&#32;و",
-       "qbfind": "جد",
-       "qbbrowse": "تصفح",
-       "qbedit": "عدل",
-       "qbpageoptions": "هذه الصفحة",
-       "qbmyoptions": "صفحاتي",
        "faq": "الأسئلة المتكررة",
-       "faqpage": "Project:أسئلة متكررة",
        "actions": "أفعال",
        "namespaces": "نطاقات",
        "variants": "المتغيرات",
        "edit-local": "تعديل الوصف المحلي",
        "create": "أنشئ",
        "create-local": "أضف وصفا محليا",
-       "editthispage": "عدل هذه الصفحة",
-       "create-this-page": "أنشئ صفحة بهذا العنوان",
        "delete": "حذف",
-       "deletethispage": "احذف هذه الصفحة",
-       "undeletethispage": "استرجع هذه الصفحة",
        "undelete_short": "استرجاع {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}",
        "viewdeleted_short": "استعرض {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}",
        "protect": "حماية",
        "protect_change": "غير",
-       "protectthispage": "احم هذه الصفحة",
        "unprotect": "غير الحماية",
-       "unprotectthispage": "غير حماية هذه الصفحة",
        "newpage": "صفحة جديدة",
-       "talkpage": "ناقش هذه الصفحة",
        "talkpagelinktext": "نقاش",
        "specialpage": "صفحة خاصة",
        "personaltools": "أدوات شخصية",
-       "articlepage": "اعرض صفحة المحتوى",
        "talk": "نقاش",
        "views": "معاينة",
        "toolbox": "أدوات",
        "tool-link-userrights": "تغيير مجموعات {{GENDER:$1|المستخدم|المستخدمة}}",
        "tool-link-userrights-readonly": "عرض مجموعات {{GENDER:$1|المستخدم|المستخدمة}}",
        "tool-link-emailuser": "أرسل رسالة {{GENDER:$1|لهذا المستخدم|لهذه المستخدمة}}",
-       "userpage": "طالع صفحة المستخدم",
-       "projectpage": "طالع صفحة المشروع",
        "imagepage": "طالع صفحة الملف",
        "mediawikipage": "طالع صفحة الرسالة",
        "templatepage": "طالع صفحة القالب",
        "searchprofile-everything": "الكل",
        "searchprofile-advanced": "متقدم",
        "searchprofile-articles-tooltip": "ابحث في $1",
-       "searchprofile-images-tooltip": "ابحث عن الصور",
+       "searchprofile-images-tooltip": "ابحث عن الملفات",
        "searchprofile-everything-tooltip": "ابحث في كل المحتوى (شاملا صفحات النقاش)",
        "searchprofile-advanced-tooltip": "ابحث في النطاقات المخصصة",
        "search-result-size": "$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})",
        "listfiles-latestversion-no": "لا",
        "file-anchor-link": "ملف",
        "filehist": "تاريخ الملف",
-       "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.",
+       "filehist-help": "اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.",
        "filehist-deleteall": "احذف الكل",
        "filehist-deleteone": "حذف",
        "filehist-revert": "استرجع",
        "filehist-current": "حالي",
-       "filehist-datetime": "وقت/زمن",
+       "filehist-datetime": "زمن/تاريخ",
        "filehist-thumb": "صورة مصغرة",
        "filehist-thumbtext": "تصغير للنسخة بتاريخ $1",
        "filehist-nothumb": "لا تصغير",
index beac634..77cc528 100644 (file)
        "anontalk": "Alderique",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Alcontrar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta páxina",
-       "qbmyoptions": "Les mios páxines",
        "faq": "EMF (entrugues más frecuentes)",
-       "faqpage": "Project:FAQ",
        "actions": "Aiciones",
        "namespaces": "Espacios de nome",
        "variants": "Variantes",
        "edit-local": "Editar la descripción llocal",
        "create": "Crear",
        "create-local": "Amestar descripción llocal",
-       "editthispage": "Editar esta páxina",
-       "create-this-page": "Crear esta páxina",
        "delete": "Desaniciar",
-       "deletethispage": "Desaniciar esta páxina",
-       "undeletethispage": "Restaurar esta páxina",
        "undelete_short": "Restaurar {{PLURAL:$1|una edición|$1 ediciones}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}",
        "protect": "Protexer",
        "protect_change": "camudar",
-       "protectthispage": "Protexer esta páxina",
        "unprotect": "Camudar la proteición",
-       "unprotectthispage": "Camudar la proteición d'esta páxina",
        "newpage": "Páxina nueva",
-       "talkpage": "Aldericar sobre esta páxina",
        "talkpagelinktext": "Alderique",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramientes personales",
-       "articlepage": "Ver la páxina de conteníu",
        "talk": "Alderique",
        "views": "Vistes",
        "toolbox": "Ferramientes",
        "tool-link-userrights": "Cambiar los grupos {{GENDER:$1|del usuariu|de la usuaria}}",
        "tool-link-userrights-readonly": "Ver los grupos {{GENDER:$1|del usuariu|de la usuaria}}",
        "tool-link-emailuser": "Unviar un corréu electrónicu a {{GENDER:$1|esti usuariu|esta usuaria}}",
-       "userpage": "Ver la páxina d'usuariu",
-       "projectpage": "Ver la páxina del proyeutu",
        "imagepage": "Ver la páxina del ficheru",
        "mediawikipage": "Ver la páxina del mensaxe",
        "templatepage": "Ver la páxina de plantía",
        "gotointerwiki-invalid": "El títulu especificáu nun ye válidu.",
        "gotointerwiki-external": "Tas a piques de dexar {{SITENAME}} pa visitar [[$2]], que ye un sitiu web distintu.\n\n'''[$1 Siguir a $1]'''",
        "undelete-cantedit": "Nun puedes desfacer el borráu d'esta páxina porque nun tienes permisu pa editala.",
-       "undelete-cantcreate": "Nun puedes desfacer el borráu d'esta páxina porque nun existe nenguna páxina con esti nome y nun tienes permisu pa creala."
+       "undelete-cantcreate": "Nun puedes desfacer el borráu d'esta páxina porque nun existe nenguna páxina con esti nome y nun tienes permisu pa creala.",
+       "pagedata-title": "Datos de la páxina",
+       "pagedata-text": "Esta páxina ufre una interfaz de datos pa les páxines. Escribe'l títulu de la páxina na URL, usando la sintaxis de subpáxina.\n* Aplícase la negociación de conteníu en base a la testera Accept del to cliente. Esto significa que los datos de la páxina van dase nel formatu que prefiera'l to cliente.",
+       "pagedata-not-acceptable": "Nun s'alcontró nengún formatu que coincidiera. Tipos MIME soportaos: $1",
+       "pagedata-bad-title": "Títulu inválidu: $1."
 }
index c2c2f60..f104ab7 100644 (file)
        "anontalk": "Ka ici arimowaniok",
        "navigation": "Matcecikinikan",
        "and": "&#32;kaie",
-       "qbbrowse": "Nantowepaha",
-       "qbedit": "Meckotcita",
-       "qbpageoptions": "Nohwe paskickwemakan",
-       "qbmyoptions": "Nipaskickwemakana",
        "namespaces": "Ka ici masinasotcik",
        "variants": "Pitoc",
        "navigation-heading": "Matcecikinikana",
        "edit": "Meckotcita",
        "create": "Ocita",
        "create-local": "Arimota ke acotcictek",
-       "editthispage": "Mecikotona owe",
-       "create-this-page": "Wita ohwe ka masinatek",
        "delete": "Wepina",
        "protect": "Tacikatek",
        "newpage": "Ocki matcecikinakanik",
        "talk": "Ka ici arimowaniwok",
        "views": "Ke icinakok",
        "toolbox": "Irapitcitcikan",
-       "userpage": "Kitci wapataman nihe masinahikan ka apatak",
-       "projectpage": "Kitci wapataman nehe masinihikan ocki otamirowinik otci",
        "imagepage": "Kitci wapataman nihe masinahikan",
        "otherlanguages": "Kotakahi aiarimowewina",
        "redirectedfrom": "(Taci e kiweckwemakak $1)",
index e59b05d..c5b80ae 100644 (file)
        "anontalk": "Müzakirə",
        "navigation": "Naviqasiya",
        "and": "&#32;və",
-       "qbfind": "Tap",
-       "qbbrowse": "Gözdən keçir",
-       "qbedit": "Redaktə",
-       "qbpageoptions": "Bu səhifə",
-       "qbmyoptions": "Mənim səhifələrim",
        "faq": "TSS",
-       "faqpage": "Project:TSS",
        "actions": "Hərəkətlər",
        "namespaces": "Adlar fəzası",
        "variants": "Variantlar",
        "edit-local": "Lokal izahı redaktə et",
        "create": "Yarat",
        "create-local": "Lokal izah əlavə et",
-       "editthispage": "Bu səhifəni redaktə et",
-       "create-this-page": "Bu səhifəni yarat",
        "delete": "Sil",
-       "deletethispage": "Bu səhifəni sil",
-       "undeletethispage": "Bu səhifənin silmə əməliyyatını geri qaytar",
        "undelete_short": "$1 {{PLURAL:$1|dəyişikliyi|dəyişiklikləri}} bərpa et",
        "viewdeleted_short": "{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}",
        "protect": "Mühafizə et",
        "protect_change": "dəyiş",
-       "protectthispage": "Bu səhifəni mühafizə et",
        "unprotect": "Mühafizəni kənarlaşdır",
-       "unprotectthispage": "Bu səhifənin mühafizəsini kənarlaşdır",
        "newpage": "Yeni səhifə",
-       "talkpage": "Bu səhifəni müzakirə et",
        "talkpagelinktext": "Müzakirə",
        "specialpage": "Xüsusi səhifə",
        "personaltools": "Şəxsi alətlər",
-       "articlepage": "Məqaləni nəzərdən keçir",
        "talk": "Müzakirə",
        "views": "Görünüş",
        "toolbox": "Alətlər",
-       "userpage": "İstifadəçi səhifəsini göstər",
-       "projectpage": "Layihə səhifəsini göstər",
        "imagepage": "Fayl səhifəsini göstər",
        "mediawikipage": "Mesaj səhifəsini göstər",
        "templatepage": "Şablon səhifəsini göstər",
index dd65fc7..b1441ff 100644 (file)
        "anontalk": "دانیشیق",
        "navigation": "دوْلانماق",
        "and": "&#32;و",
-       "qbfind": "تاپ",
-       "qbbrowse": "گؤزدن گئچیرت",
-       "qbedit": "دَییشدیر",
-       "qbpageoptions": "بۇ صفحه‌‌",
-       "qbmyoptions": "صفحه‌‌لریم",
        "faq": "چوْخ سوْروشولان سوْال‌لار",
-       "faqpage": "Project:چوْخ سوْروشولان سوْال‌لار",
        "actions": "چالیشمالار",
        "namespaces": "آد فضالاری",
        "variants": "دئییش‌لر",
        "edit-local": "یئرلی آچیقلامالاری دَییشدیر",
        "create": "یارات",
        "create-local": "یئرلی آچیقلاما آرتیر",
-       "editthispage": "بۇ صحیفه‌‌نی دَییشدیر",
-       "create-this-page": "بۇ صفحه‌‌نی يارات",
        "delete": "سیل",
-       "deletethispage": "بۇ صحیفه‌‌نی سیل",
-       "undeletethispage": "بۇ صحیفه‌نی دیریلت",
        "undelete_short": "{{PLURAL:$1|بیر دَییشیکلیگی|$1 دَییشیکلیگی}} قایتار",
        "viewdeleted_short": "{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیگه باخ",
        "protect": "قوْرو",
        "protect_change": "ديَیشدیر",
-       "protectthispage": "بۇ صحیفه‌‌نی قوْرو",
        "unprotect": "قوْروماغی دَییشدیر",
-       "unprotectthispage": "بۇ صحیفه‌نین قوْروماسینی دَییشدیر",
        "newpage": "يئنی صفحه‌‌",
-       "talkpage": "بۇ صحیفه‌نی دانیش",
        "talkpagelinktext": "دانیشیق",
        "specialpage": "اؤزل صفحه",
        "personaltools": "شخصی آراجلار",
-       "articlepage": "ایچری‌لی صحیفه‌یه باخ",
        "talk": "دانیشیق",
        "views": "گؤرونوشلر",
        "toolbox": "آلتلر",
-       "userpage": "ایشلدن صفحه‌‌سینه باخ",
-       "projectpage": "پروژه صحیفه‌سینه باخ",
        "imagepage": "فایل صحیفه‌سینه باخ",
        "mediawikipage": "مئساژ صحیفه‌سینه باخ",
        "templatepage": "شابلون صحیفه‌سینه باخ",
        "specialpages-group-maintenance": "ساخلانیش گوزاریشلری",
        "specialpages-group-other": "آیری اؤزل صفحه‌لر",
        "specialpages-group-login": "گیریش / حساب یارات",
-       "specialpages-group-changes": "سون دییشیک‌لیک‌لر و قئیدلر",
+       "specialpages-group-changes": "سون دییشیک‌لیک‌لر و ژورناللار",
        "specialpages-group-media": "مئدیا مروزه‌لری و یوکلمه‌لر",
        "specialpages-group-users": "ایشلدن‌لر و حاقلار",
        "specialpages-group-highuse": "ان چوْخ ایشلدیلمیش صفحه‌لر",
index 613bc6a..9a3ebe9 100644 (file)
        "anontalk": "Гутаркі",
        "navigation": "Навігацыя",
        "and": "&#32;і",
-       "qbfind": "Знайсьці",
-       "qbbrowse": "Праглядзець",
-       "qbedit": "Рэдагаваць",
-       "qbpageoptions": "Гэтая старонка",
-       "qbmyoptions": "Мае старонкі",
        "faq": "Частыя пытаньні",
-       "faqpage": "Project:Частыя пытаньні",
        "actions": "Дзеяньні",
        "namespaces": "Прасторы назваў",
        "variants": "Варыянты",
        "edit-local": "Рэдагаваць лякальнае апісаньне",
        "create": "Стварыць",
        "create-local": "Дадаць лякальнае апісаньне",
-       "editthispage": "Рэдагаваць гэтую старонку",
-       "create-this-page": "Стварыць гэтую старонку",
        "delete": "Выдаліць",
-       "deletethispage": "Выдаліць гэтую старонку",
-       "undeletethispage": "Аднавіць гэту старонку",
        "undelete_short": "Аднавіць $1 {{PLURAL:$1|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}",
        "viewdeleted_short": "Паказаць $1 {{PLURAL:$1|выдаленае рэдагаваньне|выдаленыя рэдагаваньні|выдаленых рэдагаваньняў}}",
        "protect": "Абараніць",
        "protect_change": "зьмяніць",
-       "protectthispage": "Абараніць гэтую старонку",
        "unprotect": "Зьмяніць абарону",
-       "unprotectthispage": "Зьмяніць абарону старонкі",
        "newpage": "Новая старонка",
-       "talkpage": "Абмеркаваць гэтую старонку",
        "talkpagelinktext": "гутаркі",
        "specialpage": "Спэцыяльная старонка",
        "personaltools": "Асабістыя прылады",
-       "articlepage": "Паказаць старонку зьместу",
        "talk": "Абмеркаваньне",
        "views": "Рэжымы",
        "toolbox": "Інструмэнты",
        "tool-link-userrights": "Зьмяніць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-userrights-readonly": "Паказаць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-emailuser": "Даслаць {{GENDER:$1|удзельніку|удзельніцы}} ліст электроннай поштай",
-       "userpage": "Паказаць старонку ўдзельніка",
-       "projectpage": "Паказаць старонку праекту",
        "imagepage": "Паказаць старонку файла",
        "mediawikipage": "Паказаць старонку паведамленьня",
        "templatepage": "Паказаць старонку шаблёну",
        "recentchanges-legend": "Налады апошніх зьменаў",
        "recentchanges-summary": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} на гэтай старонцы.",
        "recentchanges-noresult": "Зьмены, што пасуюць дадзенаму пэрыяду і крытэрам, ня знойдзеныя.",
-       "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} праз гэтую стужку.",
+       "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў вікі праз гэтую стужку.",
        "recentchanges-label-newpage": "Гэтым рэдагаваньнем была створаная новая старонка",
        "recentchanges-label-minor": "Гэта дробнае рэдагаваньне",
        "recentchanges-label-bot": "Гэтае рэдагаваньне зробленае робатам",
        "authprovider-resetpass-skip-label": "Прапусьціць",
        "authprovider-resetpass-skip-help": "Прапусьціць скіданьне паролю.",
        "authform-nosession-login": "Аўтэнтыфікацыя была пасьпяховай, але ваш браўзэр ня змог «запомніць» уваход у сыстэму.\n\n$1",
+       "authform-nosession-signup": "Рахунак быў створаны, але ваш браўзэр ня змог «запомніць» уваход у сыстэму.\n\n$1",
+       "authform-newtoken": "Адсутнічае токен. $1",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
        "removecredentials-submit": "Выдаліць уліковыя зьвесткі",
index 1004ee3..006c69e 100644 (file)
        "anontalk": "Беседа",
        "navigation": "Навигация",
        "and": "&#32;и",
-       "qbfind": "Търсене",
-       "qbbrowse": "Избор",
-       "qbedit": "Редактиране",
-       "qbpageoptions": "Тази страница",
-       "qbmyoptions": "Моите страници",
        "faq": "ЧЗВ",
-       "faqpage": "Project:ЧЗВ",
        "actions": "Действия",
        "namespaces": "Именни пространства",
        "variants": "Варианти",
        "edit-local": "Редактиране на локалното описание",
        "create": "Създаване",
        "create-local": "Добавяне на локално описание",
-       "editthispage": "Редактиране",
-       "create-this-page": "Създаване на страницата",
        "delete": "Изтриване",
-       "deletethispage": "Изтриване",
-       "undeletethispage": "Възстановяване на страницата",
        "undelete_short": "Възстановяване на {{PLURAL:$1|една редакция|$1 редакции}}",
        "viewdeleted_short": "Преглед на {{PLURAL:$1|една изтрита редакция|$1 изтрити редакции}}",
        "protect": "Защита",
        "protect_change": "промяна",
-       "protectthispage": "Защита",
        "unprotect": "Промяна на защитата",
-       "unprotectthispage": "Промяна на защитата на тази страница",
        "newpage": "Нова страница",
-       "talkpage": "Дискусионна страница",
        "talkpagelinktext": "беседа",
        "specialpage": "Специална страница",
        "personaltools": "Лични инструменти",
-       "articlepage": "Преглед на страница",
        "talk": "Беседа",
        "views": "Прегледи",
        "toolbox": "Инструменти",
        "tool-link-userrights": "Промяна на {{GENDER:$1|потребителските}} групи",
        "tool-link-userrights-readonly": "Преглед на {{GENDER:$1|потребителските}} групи",
        "tool-link-emailuser": "Писмо до {{GENDER:$1|потребителя}}",
-       "userpage": "Потребителска страница",
-       "projectpage": "Проектна страница",
        "imagepage": "Преглед на файла",
        "mediawikipage": "Преглед на съобщението",
        "templatepage": "Преглед на шаблона",
        "user-mail-no-addy": "Опитвате се да изпратите електронно писмо без да е посочен адрес за електронна поща.",
        "user-mail-no-body": "Опитвате се да изпратите е-писмо с празно или изключително кратко съдържание.",
        "changepassword": "Смяна на парола",
-       "resetpass_announce": "За да завърши процеса на влизане е необходимо да се избере нова парола.",
+       "resetpass_announce": "За да се завърши процеса на влизане е необходимо да се избере нова парола.",
        "resetpass_text": "<!-- Тук добавете текст -->",
        "resetpass_header": "Промяна на парола",
        "oldpassword": "Стара парола:",
        "search-redirect": "(пренасочване от $1)",
        "search-section": "(раздел $1)",
        "search-category": "(категория $1)",
+       "search-file-match": "(съвпада със съдържанието на файла)",
        "search-suggest": "Вероятно имахте предвид: $1",
        "search-rewritten": "Показани са резултати за $1. Вместо това търсете $2.",
        "search-interwiki-caption": "Резултати от сродни проекти",
index 4a32779..3c3f6ed 100644 (file)
@@ -33,7 +33,8 @@
                        "Kayser Ahmad",
                        "NahidSultan",
                        "Elias Ahmmad",
-                       "Catrope"
+                       "Catrope",
+                       "Mohammed Galib Hasan"
                ]
        },
        "tog-underline": "সংযোগের নিচে দাগ দেখানো হোক:",
        "anontalk": "আলাপ",
        "navigation": "পরিভ্রমণ",
        "and": "&#32;এবং",
-       "qbfind": "অনুসন্ধান",
-       "qbbrowse": "ব্রাউজ",
-       "qbedit": "সম্পাদনা",
-       "qbpageoptions": "এই পাতা",
-       "qbmyoptions": "আমার পাতাগুলি",
        "faq": "প্রাজিপ্র",
-       "faqpage": "Project:প্রাজিপ্র",
        "actions": "কার্যক্রম",
        "namespaces": "নামস্থান",
        "variants": "বিকল্পসমূহ",
        "edit-local": "স্থানীয় বিবরণ সম্পাদনা করুন",
        "create": "তৈরি করুন",
        "create-local": "স্থানীয় বিবরণ যোগ করুন",
-       "editthispage": "এই পাতাটি সম্পাদনা করুন",
-       "create-this-page": "এই পাতাটি তৈরি করুন",
        "delete": "অপসারণ",
-       "deletethispage": "এই পাতাটি অপসারণ করুন",
-       "undeletethispage": "পাতাটি পুনরুদ্ধার করুন",
        "undelete_short": "{{PLURAL:$1|১টি সম্পাদনা|$1টি সম্পাদনা}} পুনঃস্থাপন করুন",
        "viewdeleted_short": "{{PLURAL:$1|একটি অপসারিত সম্পাদনা|$1টি অপসারিত সম্পাদনা}} দেখুন",
        "protect": "সুরক্ষা",
        "protect_change": "পরিবর্তন করুন",
-       "protectthispage": "এই পাতাটি সুরক্ষিত করুন",
        "unprotect": "সুরক্ষা পরিবর্তন",
-       "unprotectthispage": "এই পাতার সুরক্ষা পরিবর্তন করুন",
        "newpage": "নতুন পাতা",
-       "talkpage": "আলোচনা করুন",
        "talkpagelinktext": "আলোচনা",
        "specialpage": "বিশেষ পাতা",
        "personaltools": "নিজস্ব সরঞ্জামসমূহ",
-       "articlepage": "বিষয়বস্তুর পাতাটি দেখুন",
        "talk": "আলোচনা",
        "views": "দৃষ্টিকোণ",
        "toolbox": "সরঞ্জাম",
        "tool-link-userrights": "{{GENDER:$1|ব্যবহারকারী}} দল পরিবর্তন করুন",
        "tool-link-userrights-readonly": "{{GENDER:$1|ব্যবহারকারী}} দল দেখুন",
        "tool-link-emailuser": "এই {{GENDER:$1|ব্যবহারকারী}}কে ইমেইল পাঠান",
-       "userpage": "ব্যবহারকারীর পাতা দেখুন",
-       "projectpage": "প্রকল্প পাতাটি দেখুন",
        "imagepage": "ফাইল পাতা দেখুন",
        "mediawikipage": "বার্তার পাতা দেখুন",
        "templatepage": "টেমপ্লেট পাতা দেখুন",
        "gotointerwiki-invalid": "নিদিষ্টকৃত শিরোনামটি অবৈধ।",
        "gotointerwiki-external": "আপনি [[$2]] পরিদর্শন করতে {{SITENAME}} ছাড়তে চলেছেন যা একটি ভিন্ন ওয়েবসাইট।\n\n'''[$1 $1-এ চলুন]'''",
        "undelete-cantedit": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ আপনার এই পাতাটি সম্পাদনা করার অনুমতি নেই।",
-       "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।"
+       "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।",
+       "pagedata-title": "পাতার উপাত্ত",
+       "pagedata-bad-title": "অপ্রযোজ্য শিরোনাম: \"$1\""
 }
index 4f5efff..67075fd 100644 (file)
        "anontalk": "Razgovor",
        "navigation": "Navigacija",
        "and": "&#32;i",
-       "qbfind": "Pronađi",
-       "qbbrowse": "Potraži",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Opcije stranice",
-       "qbmyoptions": "Moje opcije",
        "faq": "ČPP",
-       "faqpage": "Project:NPP",
        "actions": "Akcije",
        "namespaces": "Imenski prostori",
        "variants": "Varijante",
        "edit-local": "Uredi lokalni opis",
        "create": "Napravi",
        "create-local": "Dodaj lokalni opis",
-       "editthispage": "Uredite ovu stranicu",
-       "create-this-page": "Napravi ovu stranicu",
        "delete": "Obriši",
-       "deletethispage": "Obriši ovu stranicu",
-       "undeletethispage": "Povrati ovu stranicu",
        "undelete_short": "Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}",
        "viewdeleted_short": "Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}",
        "protect": "Zaštiti",
        "protect_change": "promijeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor o stranici",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Lični alati",
-       "articlepage": "Pogledaj članak",
        "talk": "Razgovor",
        "views": "Pregledi",
        "toolbox": "Alati",
        "tool-link-userrights": "Promijeni {{GENDER:$1|korisničke}} grupe",
        "tool-link-userrights-readonly": "Vidi {{GENDER:$1|korisničke}} grupe",
        "tool-link-emailuser": "Pošalji e-poruku {{GENDER:$1|korisniku|korisnici}}",
-       "userpage": "Pogledaj korisničku stranicu",
-       "projectpage": "Pogledaj stranicu projekta",
        "imagepage": "Pogledaj stranicu datoteke",
        "mediawikipage": "Pogledaj stranicu sa porukama",
        "templatepage": "Pogledaj stranicu za šablone",
        "usernameinprogress": "Račun za ovo korisničko ime već se pravi. Molimo sačekajte.",
        "userexists": "Korisničko ime je već u upotrebi.\nIzaberite drugo.",
        "loginerror": "Greška pri prijavljivanju",
-       "createacct-error": "Došlo je do greške pri otvaranju naloga",
+       "createacct-error": "Greška u pravljenju računa",
        "createaccounterror": "Ne mogu napraviti račun: $1",
        "nocookiesnew": "Korisnički račun je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih pa se onda prijavite s novim korisničkim imenom i lozinkom.",
        "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih i pokušajte ponovo.",
        "next-page": "sljedeća stranica",
        "prevn-title": "{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}",
        "nextn-title": "{{PLURAL:$1|Sljedeći $1 rezultat|Sljedeća $1 rezultata|Sljedećih $1 rezultata}}",
-       "shown-title": "Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
+       "shown-title": "Prikaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
        "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Postoji stranica pod nazivom \"[[:$1]]\" na ovoj wiki'''",
        "searchmenu-new": "<strong>Napravi stranicu \"[[:$1]]\" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također stranicu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}",
        "rc_categories_any": "Bilo koju odabranu",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene",
        "newsectionsummary": "/* $1 */ novi odlomak",
-       "rc-enhanced-expand": "Pokaži detalje",
+       "rc-enhanced-expand": "Prikaži detalje",
        "rc-enhanced-hide": "Sakrij detalje",
        "rc-old-title": "prvobitno kreirano kao \"$1\"",
        "recentchangeslinked": "Srodne izmjene",
        "recentchangeslinked-title": "Srodne promjene sa \"$1\"",
        "recentchangeslinked-summary": "Ova posebna stranica prikazuje promjene na povezanim stranicama.\nStranice koje su na vašem [[Special:Watchlist|spisku praćenja]] su '''podebljane'''.",
        "recentchangeslinked-page": "Naslov stranice:",
-       "recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom",
+       "recentchangeslinked-to": "Prikaži izmjene stranica koji su povezane s datom stranicom",
        "recentchanges-page-added-to-category": "Stranica [[:$1]] dodana je u kategoriju",
        "recentchanges-page-added-to-category-bundled": "Stranica [[:$1]] dodana je u kategoriju, [[Special:WhatLinksHere/$1|ovu stranicu sadrže druge stranice]]",
        "recentchanges-page-removed-from-category": "Stranica [[:$1]] uklonjena je iz kategorije",
        "protectedtitlesempty": "Nijedan naslov članka trenutno nije zaštićen ovim parametrima.",
        "protectedtitles-submit": "Prikaži naslove",
        "listusers": "Spisak korisnika",
-       "listusers-editsonly": "Pokaži samo korisnike koji su uređivali",
+       "listusers-editsonly": "Prikaži samo korisnike koji su uređivali",
        "listusers-creationsort": "Sortiraj po datumu pravljenja",
        "listusers-desc": "Sortiraj u opadajućem redoslijedu",
        "usereditcount": "$1 {{PLURAL:$1|izmjena|izmjene}}",
        "apisandbox-request-selectformat-label": "Prikaži zahtijevane podatke kao:",
        "apisandbox-request-url-label": "URL zahtjeva:",
        "apisandbox-results-fixtoken": "Ispravi žeton i pošalji ponovo",
+       "apisandbox-results-fixtoken-fail": "Nisam uspio dobiti žeton \"$1\".",
        "apisandbox-continue": "Nastavi",
        "apisandbox-continue-clear": "Očisti",
        "apisandbox-multivalue-all-namespaces": "$1 (svi imenski prostori)",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Onemogući oznake <nowiki> u rezultatima",
        "expand_templates_generate_xml": "Prikaži XML stablo parsera",
-       "expand_templates_generate_rawhtml": "Pokaži izvorni HTML",
+       "expand_templates_generate_rawhtml": "Prikaži izvorni HTML",
        "expand_templates_preview": "Pregled",
        "expand_templates_preview_fail_html": "<em>Budući da {{SITENAME}} ima uključen sirov HTML, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, pokušajte ponovo.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "expand_templates_preview_fail_html_anon": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokušate ponovo.</strong>",
index 4472680..8ae9a42 100644 (file)
        "anontalk": "Discussió",
        "navigation": "Navegació",
        "and": "&#32;i",
-       "qbfind": "Cerca",
-       "qbbrowse": "Navega",
-       "qbedit": "Modifica",
-       "qbpageoptions": "Opcions de pàgina",
-       "qbmyoptions": "Pàgines pròpies",
        "faq": "PMF",
-       "faqpage": "Project:PMF",
        "actions": "Accions",
        "namespaces": "Espais de noms",
        "variants": "Variants",
        "edit-local": "Modifica la descripció local",
        "create": "Crea",
        "create-local": "Afegeix una descripció local",
-       "editthispage": "Modifica la pàgina",
-       "create-this-page": "Crea aquesta pàgina",
        "delete": "Elimina",
-       "deletethispage": "Elimina la pàgina",
-       "undeletethispage": "Desfés l'eliminació d'aquesta pàgina",
        "undelete_short": "Restaura {{PLURAL:$1|l'edició eliminada|$1 edicions eliminades}}",
        "viewdeleted_short": "Mostra {{PLURAL:$1|una edició eliminada|$1 edicions eliminades}}",
        "protect": "Protegeix",
        "protect_change": "canvia",
-       "protectthispage": "Protegeix aquesta pàgina",
        "unprotect": "Desprotegeix",
-       "unprotectthispage": "Desprotegeix aquesta pàgina",
        "newpage": "Pàgina nova",
-       "talkpage": "Discussió",
        "talkpagelinktext": "discussió",
        "specialpage": "Pàgina especial",
        "personaltools": "Eines de l'usuari",
-       "articlepage": "Mostra la pàgina",
        "talk": "Discussió",
        "views": "Vistes",
        "toolbox": "Eines",
        "tool-link-userrights": "Canvia els grups de l'{{GENDER:$1|usuari|usuària}}",
        "tool-link-userrights-readonly": "Mostra els grups d'{{GENDER:$1|usuari}}",
        "tool-link-emailuser": "Envia un missatge electrònic a l'{{GENDER:$1|usuari|usuària}}",
-       "userpage": "Visualitza la pàgina d'usuari",
-       "projectpage": "Visualitza la pàgina del projecte",
        "imagepage": "Visualitza la pàgina del fitxer",
        "mediawikipage": "Visualitza la pàgina de missatges",
        "templatepage": "Visualitza la pàgina de plantilla",
        "userinvalidcssjstitle": "'''Atenció:''' No existeix l'aparença «$1». Recordeu que les subpàgines personalitzades amb extensions .css i .js utilitzen el títol en minúscules, per exemple, {{ns:user}}:NOM/vector.css no és el mateix que {{ns:user}}:NOM/Vector.css.",
        "updated": "(Actualitzat)",
        "note": "'''Nota:'''",
-       "previewnote": "<strong>Recorda que això és només una previsualització.</strong>\nEls vostres canvis encara no s’han desat!",
+       "previewnote": "<strong>Recordeu que això és només una previsualització.</strong>\nEls vostres canvis encara no s’han desat!",
        "continue-editing": "Aneu a l’àrea d’edició",
        "previewconflict": "Aquesta previsualització reflecteix, a l'àrea\nd'edició superior, el text tal com apareixerà si trieu desar-lo.",
        "session_fail_preview": "Disculpes! No s'ha pogut processar la vostra modificació a causa d'una pèrdua de dades de la sessió.\n\nPot ser que s'hagi tancat la sessió. <strong>Comproveu si teniu la sessió iniciada i proveu-ho una altra vegada</strong>.\nSi continués sense funcionar, proveu de [[Special:UserLogout|finalitzar la sessió]] i torneu a iniciar-ne una. Comproveu que el vostre navegador permeti les galetes d'aquest lloc.",
        "defaultmessagetext": "Missatge per defecte",
        "content-failed-to-parse": "Ha fallat l'anàlisi del contingut de $2 per al model $1: $3",
        "invalid-content-data": "Dades de contingut no vàlides",
-       "content-not-allowed-here": "No és permès el contingut \"$1\" a la pàgina [[$2]]",
+       "content-not-allowed-here": "No és permès el contingut «$1» a la pàgina [[$2]]",
        "editwarning-warning": "Si sortiu d'aquesta pàgina, perdreu tots els canvis que hàgiu fet.\nSi teniu un compte d'usuari, podeu eliminar aquest avís en la secció «{{int:prefs-editing}}» de les vostres preferències.",
        "editpage-invalidcontentmodel-title": "Model de contingut no permès",
        "editpage-invalidcontentmodel-text": "El model de contingut «$1» no és permès.",
index f029b3d..22e4858 100644 (file)
        "anontalk": "Diskuse",
        "navigation": "Navigace",
        "and": "&#32;a",
-       "qbfind": "Hledání",
-       "qbbrowse": "Listování",
-       "qbedit": "Editování",
-       "qbpageoptions": "Tato stránka",
-       "qbmyoptions": "Moje stránky",
        "faq": "Často kladené otázky",
-       "faqpage": "Project:Často kladené otázky",
        "actions": "Akce",
        "namespaces": "Jmenné prostory",
        "variants": "Varianty",
        "edit-local": "Editovat místní popis",
        "create": "Vytvořit",
        "create-local": "Přidat místní popis",
-       "editthispage": "Editovat stránku",
-       "create-this-page": "Vytvořit tuto stránku",
        "delete": "Smazat",
-       "deletethispage": "Smazat stránku",
-       "undeletethispage": "Obnovit tuto stránku",
        "undelete_short": "Obnovit $1 {{PLURAL:$1|verzi|verze|verzí}}",
        "viewdeleted_short": "Zobrazit {{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}",
        "protect": "Zamknout",
        "protect_change": "změnit",
-       "protectthispage": "Zamknout stránku",
        "unprotect": "Změnit zámek",
-       "unprotectthispage": "Změnit zámek této stránky",
        "newpage": "Nová stránka",
-       "talkpage": "Diskusní stránka",
        "talkpagelinktext": "diskuse",
        "specialpage": "Speciální stránka",
        "personaltools": "Osobní nástroje",
-       "articlepage": "Prohlédnout si stránku",
        "talk": "Diskuse",
        "views": "Zobrazení",
        "toolbox": "Nástroje",
        "tool-link-userrights": "Změnit uživatelské skupiny {{GENDER:$1|tohoto uživatele|této uživatelky}}",
        "tool-link-userrights-readonly": "Zobrazit {{GENDER:$1|uživatelské}} skupiny",
        "tool-link-emailuser": "Poslat e-mail {{GENDER:$1|tomuto uživateli|této uživatelce}}",
-       "userpage": "Prohlédnout si uživatelskou stránku",
-       "projectpage": "Prohlédnout si stránku projektu",
        "imagepage": "Prohlédnout si stránku o souboru",
        "mediawikipage": "Prohlédnout si text rozhraní",
        "templatepage": "Prohlédnout si šablonu",
index 928d66f..68727dd 100644 (file)
        "anontalk": "Diskussion",
        "navigation": "Navigation",
        "and": "&#32;og",
-       "qbfind": "Søg",
-       "qbbrowse": "Gennemse",
-       "qbedit": "Redigér",
-       "qbpageoptions": "Denne side",
-       "qbmyoptions": "Mine sider",
        "faq": "OSS",
-       "faqpage": "Project:OSS",
        "actions": "Handlinger",
        "namespaces": "Navnerum",
        "variants": "Varianter",
        "edit-local": "Redigér lokal beskrivelse",
        "create": "Opret",
        "create-local": "Tilføj lokal beskrivelse",
-       "editthispage": "Redigér side",
-       "create-this-page": "Opret denne side",
        "delete": "Slet",
-       "deletethispage": "Slet side",
-       "undeletethispage": "Gendan denne side",
        "undelete_short": "Gendan {{PLURAL:$1|én redigering|$1 redigeringer}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}",
        "protect": "Beskyt",
        "protect_change": "ændr",
-       "protectthispage": "Beskyt side",
        "unprotect": "Ændr beskyttelse",
-       "unprotectthispage": "Ændr beskyttelsen af denne side",
        "newpage": "Ny side",
-       "talkpage": "Diskussion",
        "talkpagelinktext": "diskussion",
        "specialpage": "Speciel side",
        "personaltools": "Personlige værktøjer",
-       "articlepage": "Se artiklen",
        "talk": "Diskussion",
        "views": "Visninger",
        "toolbox": "Værktøjer",
        "tool-link-userrights": "Ændre {{GENDER:$1|bruger}}grupper",
        "tool-link-userrights-readonly": "Se {{GENDER:$1|bruger}}grupper",
        "tool-link-emailuser": "Send e-mail til denne {{GENDER:$1|bruger}}",
-       "userpage": "Vis brugerside",
-       "projectpage": "Vis projektside",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis beskedside",
        "templatepage": "Vis skabelonside",
index c53cb0e..fa5ed6b 100644 (file)
        "anontalk": "Diskussionsseite",
        "navigation": "Navigation",
        "and": "&#32;und",
-       "qbfind": "Finden",
-       "qbbrowse": "Durchsuchen",
-       "qbedit": "Bearbeiten",
-       "qbpageoptions": "Seitenoptionen",
-       "qbmyoptions": "Meine Seiten",
        "faq": "Häufig gestellte Fragen",
-       "faqpage": "Project:FAQ",
        "actions": "Aktionen",
        "namespaces": "Namensräume",
        "variants": "Varianten",
        "edit-local": "Lokale Beschreibung bearbeiten",
        "create": "Erstellen",
        "create-local": "Lokale Beschreibung hinzufügen",
-       "editthispage": "Seite bearbeiten",
-       "create-this-page": "Seite erstellen",
        "delete": "Löschen",
-       "deletethispage": "Diese Seite löschen",
-       "undeletethispage": "Diese Seite wiederherstellen",
        "undelete_short": "{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstellen",
        "viewdeleted_short": "{{PLURAL:$1|Eine gelöschte Version|$1 gelöschte Versionen}} ansehen",
        "protect": "Schützen",
        "protect_change": "ändern",
-       "protectthispage": "Seite schützen",
        "unprotect": "Seitenschutz ändern",
-       "unprotectthispage": "Seitenschutz ändern",
        "newpage": "Neue Seite",
-       "talkpage": "Diese Seite diskutieren",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Spezialseite",
        "personaltools": "Meine Werkzeuge",
-       "articlepage": "Inhaltsseite anzeigen",
        "talk": "Diskussion",
        "views": "Ansichten",
        "toolbox": "Werkzeuge",
        "tool-link-userrights": "{{GENDER:$1|Benutzergruppen}} ändern",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benutzergruppen}} ansehen",
        "tool-link-emailuser": "E-Mail an {{GENDER:$1|diesen Benutzer|diese Benutzerin}} senden",
-       "userpage": "Benutzerseite anzeigen",
-       "projectpage": "Projektseite anzeigen",
        "imagepage": "Dateiseite anzeigen",
        "mediawikipage": "Meldungsseite anzeigen",
        "templatepage": "Vorlagenseite anzeigen",
        "gotointerwiki-invalid": "Der angegebene Titel ist ungültig.",
        "gotointerwiki-external": "Du bist dabei, {{SITENAME}} zu verlassen, um [[$2]] zu besuchen, was eine externe Website ist.\n\n'''[$1 Auf $1 fortfahren]'''",
        "undelete-cantedit": "Du kannst diese Seite nicht wiederherstellen, da du nicht berechtigt bist, diese Seite zu bearbeiten.",
-       "undelete-cantcreate": "Du kannst diese Seite nicht wiederherstellen, da es keine vorhandene Seite mit diesem Namen gibt und du nicht berechtigt bist, diese Seite zu erstellen."
+       "undelete-cantcreate": "Du kannst diese Seite nicht wiederherstellen, da es keine vorhandene Seite mit diesem Namen gibt und du nicht berechtigt bist, diese Seite zu erstellen.",
+       "pagedata-title": "Seitendaten",
+       "pagedata-text": "Diese Seite stellt eine Datenschnittstelle für Seiten zur Verfügung. Bitte gib mithilfe der Unterseitensyntax den Seitentitel in der URL an.\n* Übertragungen von Inhalten werden basierend auf dem Accept-Header deines Clients ausgeführt. Das bedeutet, dass die Seitendaten in dem Format zur Verfügung gestellt werden, das von deinem Client bevorzugt wird.",
+       "pagedata-not-acceptable": "Kein passendes Format gefunden. Unterstützte MIME-Typen: $1",
+       "pagedata-bad-title": "Ungültiger Titel: $1."
 }
index d48127c..1492aa4 100644 (file)
        "anontalk": "Σελίδα συζήτησης αυτής της διεύθυνσης IP",
        "navigation": "Πλοήγηση",
        "and": "&#32;και",
-       "qbfind": "Εύρεση",
-       "qbbrowse": "Περιήγηση",
-       "qbedit": "Επεξεργασία",
-       "qbpageoptions": "Αυτή η σελίδα",
-       "qbmyoptions": "Οι σελίδες μου",
        "faq": "Συχνές ερωτήσεις",
-       "faqpage": "Project:Συχνές ερωτήσεις",
        "actions": "Ενέργειες",
        "namespaces": "Ονοματοχώροι",
        "variants": "Παραλλαγές",
        "edit-local": "Επεξεργασία τοπικής περιγραφής",
        "create": "Δημιουργία",
        "create-local": "Προσθήκη τοπικής περιγραφής",
-       "editthispage": "Επεξεργασία αυτής της σελίδας",
-       "create-this-page": "Δημιουργία αυτής της σελίδας",
        "delete": "Διαγραφή",
-       "deletethispage": "Διαγραφή αυτής της σελίδας",
-       "undeletethispage": "Επαναφορά αυτής της διαγεγραμμένης σελίδας",
        "undelete_short": "Επαναφορά {{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}.",
        "viewdeleted_short": "Προβολή {{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}",
        "protect": "Προστασία",
        "protect_change": "αλλαγή",
-       "protectthispage": "Προστασία αυτής της σελίδας",
        "unprotect": "Αλλαγή προστασίας",
-       "unprotectthispage": "Αλλαγή προστασίας αυτής της σελίδας",
        "newpage": "Νέα σελίδα",
-       "talkpage": "Συζήτηση για αυτήν τη σελίδα",
        "talkpagelinktext": "Συζήτηση",
        "specialpage": "Ειδική σελίδα",
        "personaltools": "Προσωπικά εργαλεία",
-       "articlepage": "Εμφάνιση σελίδας περιεχομένου",
        "talk": "Συζήτηση",
        "views": "Προβολές",
        "toolbox": "Εργαλεία",
        "tool-link-userrights": "Αλλαγή ομάδων {{GENDER:$1|χρήστη}}",
        "tool-link-userrights-readonly": "Εμφάνιση {{GENDER:$1|ομάδων}}  χρηστών",
        "tool-link-emailuser": "Αποστολή e-mail {{GENDER:$1|στο|στη}} χρήστη",
-       "userpage": "Προβολή σελίδας χρήστη",
-       "projectpage": "Προβολή σελίδας εγχειρήματος",
        "imagepage": "Προβολή σελίδας αρχείου",
        "mediawikipage": "Προβολή σελίδας μηνύματος",
        "templatepage": "Προβολή σελίδας προτύπου",
index a3db47b..9f34b7b 100644 (file)
        "anontalk": "Talk",
        "navigation": "Navigation",
        "and": "&#32;and",
-       "qbfind": "Find",
-       "qbbrowse": "Browse",
-       "qbedit": "Edit",
-       "qbpageoptions": "This page",
-       "qbmyoptions": "My pages",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "sitetitle": "{{SITENAME}}",
        "sitesubtitle": "",
        "actions": "Actions",
        "edit-local": "Edit local description",
        "create": "Create",
        "create-local": "Add local description",
-       "editthispage": "Edit this page",
-       "create-this-page": "Create this page",
        "delete": "Delete",
-       "deletethispage": "Delete this page",
-       "undeletethispage": "Undelete this page",
        "undelete_short": "Undelete {{PLURAL:$1|one edit|$1 edits}}",
        "viewdeleted_short": "View {{PLURAL:$1|one deleted edit|$1 deleted edits}}",
        "protect": "Protect",
        "protect_change": "change",
-       "protectthispage": "Protect this page",
        "unprotect": "Change protection",
-       "unprotectthispage": "Change protection of this page",
        "newpage": "New page",
-       "talkpage": "Discuss this page",
        "talkpagelinktext": "talk",
        "specialpage": "Special page",
        "personaltools": "Personal tools",
        "addsection": "+",
-       "articlepage": "View content page",
        "talk": "Discussion",
        "views": "Views",
        "toolbox": "Tools",
        "tool-link-userrights": "Change {{GENDER:$1|user}} groups",
        "tool-link-userrights-readonly": "View {{GENDER:$1|user}} groups",
        "tool-link-emailuser": "Email this {{GENDER:$1|user}}",
-       "userpage": "View user page",
-       "projectpage": "View project page",
        "imagepage": "View file page",
        "mediawikipage": "View message page",
        "templatepage": "View template page",
        "gotointerwiki-invalid": "The specified title is invalid.",
        "gotointerwiki-external": "You are about to leave {{SITENAME}} to visit [[$2]], which is a separate website.\n\n'''[$1 Continue to $1]'''",
        "undelete-cantedit": "You cannot undelete this page as you are not allowed to edit this page.",
-       "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page."
+       "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page.",
+       "pagedata-title": "Page data",
+       "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on you client's Accept header. This means that the page data will be provided in the format preferred by your client.",
+       "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1",
+       "pagedata-bad-title": "Invalid title: $1."
 }
index 810ecee..87a00be 100644 (file)
        "anontalk": "Diskuto",
        "navigation": "Navigado",
        "and": "&#32;kaj",
-       "qbfind": "Serĉi",
-       "qbbrowse": "Foliumi",
-       "qbedit": "Redakti",
-       "qbpageoptions": "Ĉi tiu paĝo",
-       "qbmyoptions": "Miaj paĝoj",
        "faq": "Oftaj demandoj",
-       "faqpage": "Project:Oftaj demandoj",
        "actions": "Agoj",
        "namespaces": "Nomspacoj",
        "variants": "Variantoj",
        "edit-local": "Redakti lokan priskribon",
        "create": "Krei",
        "create-local": "Aldoni lokan priskribon",
-       "editthispage": "Redakti la paĝon",
-       "create-this-page": "Krei ĉi tiun paĝon",
        "delete": "Forigi",
-       "deletethispage": "Forigi ĉi tiun paĝon",
-       "undeletethispage": "Restarigi tiun ĉi paĝon",
        "undelete_short": "Malforigi {{PLURAL:$1|redakton|$1 redaktojn}}",
        "viewdeleted_short": "Vidi {{PLURAL:$1|unu forigitan redakton|$1 forigitajn redaktojn}}",
        "protect": "Protekti",
        "protect_change": "ŝanĝi",
-       "protectthispage": "Protekti la paĝon",
        "unprotect": "Ŝanĝi protekton",
-       "unprotectthispage": "Ŝanĝi protekton de ĉi tiu paĝo",
        "newpage": "Nova paĝo",
-       "talkpage": "Diskuti la paĝon",
        "talkpagelinktext": "diskuto",
        "specialpage": "Speciala paĝo",
        "personaltools": "Personaj iloj",
-       "articlepage": "Vidi enhavan paĝon",
        "talk": "Diskuto",
        "views": "Vidoj",
        "toolbox": "Iloj",
        "tool-link-userrights": "Ŝanĝi grupojn de ĉi tiu {{GENDER:$1|uzanto}}",
        "tool-link-userrights-readonly": "Vidi grupojn de {{GENDER:$1|uzanto}}",
        "tool-link-emailuser": "Sendi retpoŝton al ĉi tiu {{GENDER:$1|uzanto}}",
-       "userpage": "Vidi uzantopaĝon",
-       "projectpage": "Rigardi projektopaĝon",
        "imagepage": "Vidi dosieropaĝon",
        "mediawikipage": "Vidi mesaĝopaĝon",
        "templatepage": "Vidi ŝablonopaĝon",
index b8cd52e..a86ccea 100644 (file)
        "anontalk": "Discusión para esta IP",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Buscar",
-       "qbbrowse": "Examinar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Mis páginas",
        "faq": "PP. FF.",
-       "faqpage": "Project:Preguntas frecuentes",
        "actions": "Acciones",
        "namespaces": "Espacios de nombres",
        "variants": "Variantes",
        "edit-local": "Editar descripción local",
        "create": "Crear",
        "create-local": "Añadir descripción local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Crear esta página",
        "talkpagelinktext": "Discusión",
        "personaltools": "Herramientas personales",
        "talk": "Discusión",
index ce8da68..3b50dc3 100644 (file)
        "anontalk": "Discusión",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Buscar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Mis páginas",
        "faq": "Preguntas frecuentes",
-       "faqpage": "Project:Preguntas frecuentes",
        "actions": "Acciones",
        "namespaces": "Espacios de nombres",
        "variants": "Variantes",
        "edit-local": "Editar descripción local",
        "create": "Crear",
        "create-local": "Añadir descripción local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Crear esta página",
        "delete": "Borrar",
-       "deletethispage": "Borrar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|una edición|$1 ediciones}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|una edición borrada|$1 ediciones borradas}}",
        "protect": "Proteger",
        "protect_change": "cambiar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Cambiar protección",
-       "unprotectthispage": "Cambiar la protección de esta página",
        "newpage": "Página nueva",
-       "talkpage": "Discutir esta página",
        "talkpagelinktext": "discusión",
        "specialpage": "Página especial",
        "personaltools": "Herramientas personales",
-       "articlepage": "Ver artículo",
        "talk": "Discusión",
        "views": "Vistas",
        "toolbox": "Herramientas",
        "tool-link-userrights": "Modificar grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "tool-link-userrights-readonly": "Ver los grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "tool-link-emailuser": "Enviar un correo a {{GENDER:$1|este usuario|esta usuaria}}",
-       "userpage": "Ver página de usuario",
-       "projectpage": "Ver página del proyecto",
        "imagepage": "Ver página del archivo",
        "mediawikipage": "Ver página del mensaje",
        "templatepage": "Ver página de plantilla",
        "saveusergroups": "Guardar grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "userrights-groupsmember": "Miembro de:",
        "userrights-groupsmember-auto": "Miembro implícito de:",
-       "userrights-groups-help": "Puedes cambiar los grupos en que está este usuario:\n* Una casilla marcada significa que el usuario está en ese grupo.\n* Una casilla sin marcar significa que el usuario no está en ese grupo.\n* Un * indica que no se puede eliminar el grupo una vez que se ha añadido o viceversa.\n* Un # indica que sólo se puede volver a poner la fecha de caducidad de membresía de este grupo; no se pueden llevar adelante.",
+       "userrights-groups-help": "Puedes modificar los grupos a los que pertenece {{GENDER:$1|este usuario|esta usuaria}}:\n* Una casilla marcada significa que {{GENDER:$1|el usuario|la usuaria}} está en ese grupo.\n* Una casilla sin marcar significa que {{GENDER:$1|el usuario|la usuaria}} no está en ese grupo.\n* Un * indica que no podrás eliminar el grupo una vez que lo añadas, o viceversa.\n* Un # indica que puedes únicamente postergar, y no adelantar, la fecha de caducidad de la membresía a este grupo.",
        "userrights-reason": "Motivo:",
        "userrights-no-interwiki": "No tienes permiso para editar permisos de usuario en otros wikis.",
        "userrights-nodatabase": "La base de datos $1 no existe o no es local.",
        "authmanager-authplugin-setpass-failed-message": "El complemento de autenticación denegó el cambio de contraseña.",
        "authmanager-authplugin-create-fail": "El complemento de autenticación denegó la creación de la cuenta.",
        "authmanager-authplugin-setpass-denied": "El complemento de autenticación no permite el cambio de contraseñas.",
-       "authmanager-authplugin-setpass-bad-domain": "Dominio inválido.",
+       "authmanager-authplugin-setpass-bad-domain": "El dominio no es válido.",
        "authmanager-autocreate-noperm": "La creación automática de cuentas no está permitida.",
        "authmanager-autocreate-exception": "La creación automática de cuentas ha sido temporalmente desactivada debido a errores previos.",
        "authmanager-userdoesnotexist": "El usuario «$1» no está registrado.",
        "gotointerwiki-invalid": "El título especificado no es válido.",
        "gotointerwiki-external": "Estás a punto de abandonar {{SITENAME}} para visitar [[$2]], un sitio web diferente.\n\n'''[$1 Continuar a $1]'''",
        "undelete-cantedit": "No puedes deshacer el borrado de esta página porque no tienes permisos para editarla.",
-       "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla."
+       "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla.",
+       "pagedata-title": "Datos de la página",
+       "pagedata-bad-title": "El título «$1» no es válido."
 }
index e5f0002..d1724f2 100644 (file)
        "anontalk": "بحث",
        "navigation": "ناوبری",
        "and": "&#32;و",
-       "qbfind": "یافتن",
-       "qbbrowse": "مرور",
-       "qbedit": "ویرایش",
-       "qbpageoptions": "این صفحه",
-       "qbmyoptions": "صفحه‌های من",
        "faq": "پرسش‌های متداول",
-       "faqpage": "Project:پرسش‌های متداول",
        "actions": "عملکردها",
        "namespaces": "فضاهای نام",
        "variants": "گویش‌ها",
        "edit-local": "ویرایش توضیحات محلی",
        "create": "ایجاد",
        "create-local": "افزودن توضیحات محلی",
-       "editthispage": "ویرایش این صفحه",
-       "create-this-page": "ایجاد این صفحه",
        "delete": "حذف",
-       "deletethispage": "حذف این صفحه",
-       "undeletethispage": "احیای این صفحه",
        "undelete_short": "احیای {{PLURAL:$1|یک ویرایش|$1 ویرایش}}",
        "viewdeleted_short": "نمایش {{PLURAL:$1|یک ویرایش حذف‌شده|$1 ویرایش حذف‌شده}}",
        "protect": "محافظت",
        "protect_change": "تغییر",
-       "protectthispage": "محافظت از این صفحه",
        "unprotect": "تغییر محافظت",
-       "unprotectthispage": "تغییر محافظت این صفحه",
        "newpage": "صفحهٔ تازه",
-       "talkpage": "بحث دربارهٔ این صفحه",
        "talkpagelinktext": "بحث",
        "specialpage": "صفحهٔ ویژه",
        "personaltools": "ابزارهای شخصی",
-       "articlepage": "نمایش مقاله",
        "talk": "بحث",
        "views": "بازدیدها",
        "toolbox": "ابزارها",
        "tool-link-userrights": "تغییر گروه‌های {{GENDER:$1|کاربر}}",
        "tool-link-userrights-readonly": "نمایش گروه‌های {{GENDER:$1|کاربر}}",
        "tool-link-emailuser": "فرستادن نامه به {{GENDER:$1|کاربر}}",
-       "userpage": "نمایش صفحهٔ کاربر",
-       "projectpage": "نمایش صفحهٔ پروژه",
        "imagepage": "نمایش صفحهٔ پرونده",
        "mediawikipage": "نمایش صفحهٔ پیغام",
        "templatepage": "نمایش صفحهٔ الگو",
index 71ada4a..81a323c 100644 (file)
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "and": "&#32;et",
-       "qbfind": "Rechercher",
-       "qbbrowse": "Parcourir",
-       "qbedit": "Modifier",
-       "qbpageoptions": "Cette page",
-       "qbmyoptions": "Mes pages",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Actions",
        "namespaces": "Espaces de noms",
        "variants": "Variantes",
        "edit-local": "Modifier la description locale",
        "create": "Créer",
        "create-local": "Ajouter une description locale",
-       "editthispage": "Modifier cette page",
-       "create-this-page": "Créer cette page",
        "delete": "Supprimer",
-       "deletethispage": "Supprimer cette page",
-       "undeletethispage": "Restaurer cette page",
        "undelete_short": "Restaurer {{PLURAL:$1|une modification|$1 modifications}}",
        "viewdeleted_short": "Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}",
        "protect": "Protéger",
        "protect_change": "modifier",
-       "protectthispage": "Protéger cette page",
        "unprotect": "Changer la protection",
-       "unprotectthispage": "Changer la protection de cette page",
        "newpage": "Nouvelle page",
-       "talkpage": "Discussion sur cette page",
        "talkpagelinktext": "discussion",
        "specialpage": "Page spéciale",
        "personaltools": "Outils personnels",
-       "articlepage": "Voir la page de contenu",
        "talk": "Discussion",
        "views": "Affichages",
        "toolbox": "Outils",
        "tool-link-userrights": "Modifier les groupes de l’utilisat{{GENDER:$1|eur|rice}}",
        "tool-link-userrights-readonly": "Voir les {{GENDER:$1|groupes utilisateur}}",
        "tool-link-emailuser": "Envoyer un courriel à {{GENDER:$1|l’utilisateur|l’utilisatrice}}",
-       "userpage": "Voir la page utilisateur",
-       "projectpage": "Voir la page du projet",
        "imagepage": "Voir la page du fichier",
        "mediawikipage": "Voir la page du message",
        "templatepage": "Voir la page du modèle",
        "gotointerwiki-invalid": "Le titre spécifié n’est pas valide.",
        "gotointerwiki-external": "Vous allez quitter {{SITENAME}} pour visiter [[$2]], qui est un site web distinct.\n\n<strong>[$1 Continuer vers $1]</strong>",
        "undelete-cantedit": "Vous ne pouvez pas annuler la suppression de cette page car vous n’êtes pas autorisé à la modifier.",
-       "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer."
+       "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer.",
+       "pagedata-title": "Données de page",
+       "pagedata-text": "Cette page fournit une interface de données aux pages. Veuillez fournir le titre de la page dans l’URL en utilisant la syntaxe de sous-page.\n* La négociation de contenu s’applique d’après l’entête Accept de votre client. Cela veut dire que les données de la page seront fournies dans le format préféré par votre client.",
+       "pagedata-not-acceptable": "Aucun format correspondant trouvé. Types MIME supportés : $1",
+       "pagedata-bad-title": "Titre non valide : $1."
 }
index f6eacfa..2843c87 100644 (file)
        "anontalk": "Conversa",
        "navigation": "Navegación",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta páxina",
-       "qbmyoptions": "As miñas páxinas",
        "faq": "Preguntas máis frecuentes",
-       "faqpage": "Project:FAQ",
        "actions": "Accións",
        "namespaces": "Espazos de nomes",
        "variants": "Variantes",
        "edit-local": "Editar a descrición local",
        "create": "Crear",
        "create-local": "Engadir unha descrición local",
-       "editthispage": "Editar esta páxina",
-       "create-this-page": "Crear esta páxina",
        "delete": "Borrar",
-       "deletethispage": "Borrar esta páxina",
-       "undeletethispage": "Restaurar esta páxina",
        "undelete_short": "Restaurar {{PLURAL:$1|unha edición|$1 edicións}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|unha edición borrada|$1 edicións borradas}}",
        "protect": "Protexer",
        "protect_change": "cambiar",
-       "protectthispage": "Protexer esta páxina",
        "unprotect": "Cambiar a protección",
-       "unprotectthispage": "Cambiar a protección desta páxina",
        "newpage": "Páxina nova",
-       "talkpage": "Conversar sobre esta páxina",
        "talkpagelinktext": "Conversa",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramentas persoais",
-       "articlepage": "Ver a páxina de contido",
        "talk": "Conversa",
        "views": "Vistas",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Modificar os grupos {{GENDER:$1|do usuario|da usuaria}}",
        "tool-link-userrights-readonly": "Ver os {{GENDER:$1|grupos de usuario}}",
        "tool-link-emailuser": "Enviar un correo electrónico {{GENDER:$1|ao usuario|á usuaria}}",
-       "userpage": "Ver a páxina {{GENDER:{{BASEPAGENAME}}|do usuario|da usuaria}}",
-       "projectpage": "Ver a páxina do proxecto",
        "imagepage": "Ver a páxina do ficheiro",
        "mediawikipage": "Ver a páxina da mensaxe",
        "templatepage": "Ver a páxina do modelo",
        "gotointerwiki-invalid": "O título especificado non é válido.",
        "gotointerwiki-external": "Vai sair de {{SITENAME}} para visitar [[$2]], que é un sitio web externo.\n\n'''[$1 Continuar en $1]'''",
        "undelete-cantedit": "Non pode anular o borrado desta páxina porque non ten permisos para editar esta páxina.",
-       "undelete-cantcreate": "Non pode anular o borrado desta páxina xa que non hai ningunha páxina con ese nome e non ten permisos para creala."
+       "undelete-cantcreate": "Non pode anular o borrado desta páxina xa que non hai ningunha páxina con ese nome e non ten permisos para creala.",
+       "pagedata-title": "Datos da páxina",
+       "pagedata-text": "Esta páxina porporciona unha interface de datos para páxinas. Por favor, proporcione o título da páxina na URL, usando a sintaxe de subpáxinas.\n* A negociación de contido aplícase baseándose na cabeceira Accept do seu cliente. Isto significa que os datos da páxina serán proporcionados no formato preferido polo seu cliente.",
+       "pagedata-not-acceptable": "Non se atopou ningún formato correspondente. Tipos MIME soportadosː $1",
+       "pagedata-bad-title": "Título non válido: $1."
 }
index be7130e..4936047 100644 (file)
@@ -55,7 +55,7 @@
        "tog-enotifminoredits": "પાનાં અને ફાઇલ્સમાં નાનાં ફેરફાર થાય તો પણ મને ઇમેલ મોકલો",
        "tog-enotifrevealaddr": "નોટીફીકેશનના ઇમેલમાં મારૂ ઇમેલ સરનામું બતાવો",
        "tog-shownumberswatching": "ધ્યાન રાખતા સભ્યોની સંખ્યા બતાવો",
-       "tog-oldsig": "હાલના હસ્તાક્ષર:",
+       "tog-oldsig": "તમારા àª¹àª¾àª²àª¨àª¾ àª¹àª¸à«\8dતાàª\95à«\8dષર:",
        "tog-fancysig": "હસ્તાક્ષરનો વિકિલખાણ તરીકે ઉપયોગ કરો (સ્વચાલિત કડી વગર)",
        "tog-uselivepreview": "જીવંત પૂર્વદર્શન વાપરો",
        "tog-forceeditsummary": "કોરો 'ફેરફાર સારાંશ' ઉમેરતા પહેલા મને ચેતવો",
@@ -68,9 +68,9 @@
        "tog-ccmeonemails": "મે અન્યોને મોકલેલા ઇમેલની નકલ મને મોકલો",
        "tog-diffonly": "તફાવતની નીચે લેખ ન બતાવશો",
        "tog-showhiddencats": "છુપી શ્રેણીઓ દર્શાવો",
-       "tog-norollbackdiff": "રà«\8bલબà«\87àª\95 àª\95રà«\8dયા àªªàª\9bà«\80ના àª¤àª«àª¾àªµàª¤à«\8b àª\9bà«\81પાવà«\8b",
+       "tog-norollbackdiff": "રà«\8bલબà«\87àª\95 àª\95રà«\8dયા àªªàª\9bà«\80ના àª¤àª«àª¾àªµàª¤à«\8b àª¦àª°à«\8dશાવà«\8b àª¨àª¹à«\80àª\82",
        "tog-useeditwarning": "સાચવ્યા વગર જો હું પૃષ્ઠ છોડું તો મને ચેતવણી આપો",
-       "tog-prefershttps": "સભ્યનામથી પ્રવેશ કર્યો હોય ત્યારે સુરક્ષિત જોડાણ (https) જ વાપરો",
+       "tog-prefershttps": "àª\9cà«\8dયારà«\87 àª¸àª­à«\8dયનામથà«\80 àªªà«\8dરવà«\87શ àª\95રà«\8dયà«\8b àª¹à«\8bય àª¤à«\8dયારà«\87 àª¸à«\81રàª\95à«\8dષિત àª\9cà«\8bડાણ (https) àª\9c àªµàª¾àªªàª°à«\8b",
        "underline-always": "હંમેશાં",
        "underline-never": "કદી નહિ",
        "underline-default": "પૂર્વ નિર્ધારિત સ્કિન કે બ્રાઉઝર",
        "category-file-count-limited": "નીચે દર્શાવેલ {{PLURAL:$1|દસ્તાવેજ|દસ્તાવેજો}} પ્રસ્તુત શ્રેણીમાં છે.",
        "listingcontinuesabbrev": "ચાલુ..",
        "index-category": "અનુક્રમણિકા બનાવેલા પાનાં",
-       "noindex-category": "અનુક્રમણિકા નહી બનાવેલા પાનાં",
+       "noindex-category": "અનુક્રમણિકા નહી બનાવેલા પાનાં",
        "broken-file-category": "ફાઇલોની ત્રૂટક કડીઓવાળાં પાનાં",
        "about": "વિષે",
        "article": "લેખનું પાનું",
        "newwindow": "(નવા પાનામાં ખુલશે)",
        "cancel": "રદ કરો",
        "moredotdotdot": "વધારે...",
-       "morenotlisted": "આ યાદી પૂર્ણ નથી.",
+       "morenotlisted": "àª\95દાàª\9a àª\86 àª¯àª¾àª¦à«\80 àªªà«\82રà«\8dણ àª¨àª¥à«\80.",
        "mypage": "પાનું",
        "mytalk": "ચર્ચા",
        "anontalk": "ચર્ચા",
        "navigation": "ભ્રમણ",
        "and": "&#32;અને",
-       "qbfind": "શોધો",
-       "qbbrowse": "બ્રાઉઝ",
-       "qbedit": "ફેરફાર કરો",
-       "qbpageoptions": "આ પાનું",
-       "qbmyoptions": "મારાં પાનાં",
        "faq": "FAQ\nવારંવાર પુછાતા પ્રશ્નો",
-       "faqpage": "Project:વારંવાર પુછાતા પ્રશ્નો",
        "actions": "ક્રિયાઓ",
        "namespaces": "નામાવકાશો",
        "variants": "ભિન્ન રૂપો",
        "edit-local": "સ્થાનિક વર્ણનમાં ફેરફાર કરો",
        "create": "બનાવો",
        "create-local": "સ્થાનિક વર્ણન ઉમેરો",
-       "editthispage": "આ પાનામાં ફેરફાર કરો",
-       "create-this-page": "આ પાનું બનાવો",
-       "delete": "રદ કરો",
-       "deletethispage": "આ પાનું હટાવો",
-       "undeletethispage": "આ પાનું પુનર્જીવીત કરો",
+       "delete": "દૂર કરો",
        "undelete_short": "હટાવેલ {{PLURAL:$1|એક ફેરફાર|$1 ફેરફારો}} પરત લાવો.",
        "viewdeleted_short": "{{PLURAL:$1|ભૂંસી નાખેલો એક|ભૂંસી નાખેલા $1}} ફેરફાર જુઓ",
        "protect": "સુરક્ષિત કરો",
        "protect_change": "બદલો",
-       "protectthispage": "આ પાનું સુરક્ષિત કરો",
        "unprotect": "સુરક્ષા બદલો",
-       "unprotectthispage": "આ પાનાનું સુરક્ષા  બદલો",
        "newpage": "નવું પાનું",
-       "talkpage": "આ પાના વિષે ચર્ચા કરો",
        "talkpagelinktext": "ચર્ચા",
        "specialpage": "ખાસ પાનું",
        "personaltools": "વ્યક્તિગત સાધનો",
-       "articlepage": "લેખનું પાનું જુઓ",
        "talk": "ચર્ચા",
        "views": "દેખાવ",
        "toolbox": "સાધનો",
-       "userpage": "સભ્યનું પાનું જુઓ",
-       "projectpage": "પ્રકલ્પનું પાનું જુઓ",
        "imagepage": "ફાઇલનું પાનું જુઓ",
        "mediawikipage": "સંદેશનું પાનું જુઓ",
        "templatepage": "ઢાંચાનું પાનુ જુઓ",
        "ok": "મંજૂર",
        "retrievedfrom": "\"$1\" થી મેળવેલ",
        "youhavenewmessages": "{{PLURAL:$3|તમારી પાસે}} $1 ($2).",
-       "youhavenewmessagesfromusers": "આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|આપ}}ને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).",
        "youhavenewmessagesmanyusers": "આપને માટે ઘણાં સભ્યો તરફથી $1 છે ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|નવો સંદેશો|૯૯૯=નવા સંદેશા}}",
        "newmessagesdifflinkplural": "છેલ્લા {{PLURAL:$1|ફેરફાર|૯૯૯=ફેરફારો}}",
        "youhavenewmessagesmulti": "તમારા માટે $1 ઉપર નવા સંદેશાઓ છે",
        "editsection": "ફેરફાર કરો",
        "editold": "ફેરફાર કરો",
-       "viewsourceold": "સà«\8dરà«\8bત જુઓ",
+       "viewsourceold": "મà«\82ળ જુઓ",
        "editlink": "ફેરફાર",
-       "viewsourcelink": "સà«\8dરà«\8bત જુઓ",
+       "viewsourcelink": "મà«\82ળ જુઓ",
        "editsectionhint": "પરિચ્છેદમાં ફેરફાર કરો: $1",
        "toc": "અનુક્રમણિકા",
        "showtoc": "બતાવો",
        "actionthrottled": "અકાળે અટાકાવી દીધેલી ક્રિયા",
        "actionthrottledtext": "સ્પામ નિયંત્રણ તકેદારી રૂપે આ ક્રિયા અમુક મર્યાદામાં જ કરી શકો છો, અને તમે તે મર્યાદા વટાવી દીધી છે. કૃપા કરી થોડાક સમય પછી ફરી પ્રયત્ન કરો.",
        "protectedpagetext": "ફેરફારો કે એવું કંઈ પણ થતું રોકવા માટે આ પાનું સુરક્ષિત કરવામાં આવ્યું છે.",
-       "viewsourcetext": "આપ આ પાનાનો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:",
-       "viewyourtext": "આપ આ પાનાનાં '''આપનાં સંપાદનો'''નો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:",
+       "viewsourcetext": "આપ આ પાનાનો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો.",
+       "viewyourtext": "આપ આ પાનાનાં <strong>આપનાં સંપાદનો</strong>નો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:<strong>",
        "protectedinterface": "આ પાનું સોફ્ટવેર માટે ઇન્ટરફેઇસ ટેક્સટ આપે છે, અને તેને દુરુપયોગ રોકવા માટે સ્થગિત કર્યું છે.\nબધાંજ વિકિ માટે ભાષાંતર ઉમેરવા કે બદલવા માટે, કૃપા કરી [https://translatewiki.net/ translatewiki.net], મિડિયાવિકિ સ્થાનિયકરણ પ્રકલ્પ, વાપરો.",
        "editinginterface": "<strong>ચેતવણી:</strong> તમે જે પાનામાં ફેરફાર કરી રહ્યા છો તે પાનું સોફ્ટવેર માટે ઇન્ટરફેસ ટેક્સટ પૂરી પાડે છે.\nઅહીંનો બદલાવ આ વિકિ પર ઉપસ્થિત અન્ય સભ્યોના ઇન્ટરફેસનાં દેખાવ ઉપર અસરકર્તા બનશે.",
        "cascadeprotected": "આ પાના પર ફેરફાર પ્રતિબંધિત છે, કારણ કે આ પાનું {{PLURAL:$1|એવા પાનાં}}નું સભ્ય છે કે જેમાં અનુવર્તી(પગથિયામય) સંરક્ષણ લાગુ કરવામાં આવ્યું છે :\n$2",
        "nocookieslogin": "{{SITENAME}} કુકીઝ સિવાય પ્રવેશ કરવા નહીં દે.\nતમે કુકીઝ બંધ કરી છે.\nકૃપા કરી કુકીઝ ચાલુ કરીને તમારા સભ્યનામ સાથે પ્રવેશ કરો.",
        "nocookiesfornew": "સભ્ય ખાતાની પુષ્ટિ નથી થઇ, અમે તેના સ્ત્રોતની પુષ્ટિ ન કરી શક્યા.\nખાત્રી કરો કે તમે કુકીઝ સક્રીય કરી છે, અને પાનું ફરીથી ચડાવો",
        "noname": "તમે પ્રમાણભૂત સભ્યનામ જણાવેલ નથી.",
-       "loginsuccesstitle": "પ્રવેશ સફળ",
+       "loginsuccesstitle": "પ્રવેશીત",
        "loginsuccess": "'''તમે હવે {{SITENAME}}માં \"$1\" તરીકે પ્રવેશી ચુક્યા છો.'''",
        "nosuchuser": "\"$1\" નામ ધરાવતો કોઇ સભ્ય અસ્તિત્વમાં નથી.\n\nસભ્યનામો અક્ષરસંવેદી (કેસ સેન્સિટીવ) હોય છે.\n\nકૃપા કરી સ્પેલીંગ/જોડણી ચકાસો અથવા [[Special:CreateAccount|નવું ખાતુ ખોલો]].",
        "nosuchusershort": "\"$1\" નામનો કોઇ સભ્ય નથી, તમારી જોડણી તપાસો.",
        "noemail": "સભ્ય \"$1\"નું કોઇ ઇ-મેલ સરનામું નોંધાયેલું નથી.",
        "noemailcreate": "તમારે વૈધ ઇમેલ આપવાની જરૂર છે.",
        "passwordsent": "\"$1\" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.\nકૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.",
-       "blocked-mailpassword": "ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે, તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા ફરી મેળવવાની છૂટ નથી.",
+       "blocked-mailpassword": "ફà«\87રફાર àª\95રવા àª®àª¾àª\9fà«\87 àª¤àª®àª¾àª°à«\81àª\82 IP àª\8fડà«\8dરà«\87સ àª¸à«\8dથàª\97િત àª\95રà«\80 àª¦à«\87વાયà«\81àª\82 àª\9bà«\87, àª¤à«\87થà«\80 àª¦à«\82રà«\81પયà«\8bàª\97 àª\9fાળવા àª®àª¾àª\9fà«\87 àª¤àª®àª¨à«\87 àª\86 IP àª\8fડà«\8dરà«\87સ àªªàª°àª¥à«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª«àª°à«\80 àª®à«\87ળવવાનà«\80 àª\9bà«\82àª\9f àª¨àª¥à«\80.",
        "eauthentsent": "પુષ્ટિ કરવા માટે નિશ્ચિત થયેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.\nએ જ સરનામે બીજો ઇમેલ થતાં પહેલાં તમારે ઇમેલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.",
        "throttled-mailpassword": "ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} મોકલેલી છે.\nદૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.",
        "mailerror": "મેઇલ મોકલવામાં ત્રુટિ: $1",
-       "acct_creation_throttle_hit": "àª\86 àªµàª¿àª\95િના àª®à«\81લાàª\95ાતà«\80àª\93àª\8f àª¤àª®àª¾àª°à«\81àª\82 IP àªµàª¾àªªàª°à«\80નà«\87 àª\97àª\88 àª\95ાલà«\87 {{PLURAL:$1|1 àª\96ાતà«\81àª\82 |$1 àª\96ાતા}} àª\96à«\8bલà«\8dયાàª\82 àª\9bà«\87,àª\9cà«\87 àªªà«\8dરવાનગીની મહત્તમ સંખ્યા છે. આને પરિણામે મુલાકાતી આ ક્ષણેવધુ ખાતા નહીં ખોલી શકે.",
+       "acct_creation_throttle_hit": "àª\86 àªµàª¿àª\95િના àª®à«\81લાàª\95ાતà«\80àª\93àª\8f àª¤àª®àª¾àª°à«\81àª\82 IP àªµàª¾àªªàª°à«\80નà«\87 àªªàª¾àª\9bલા $2માàª\82 {{PLURAL:$1|1 àª\96ાતà«\81àª\82 |$1 àª\96ાતા}} àª\96à«\8bલà«\8dયાàª\82 àª\9bà«\87, àª\9cà«\87 àªªરવાનગીની મહત્તમ સંખ્યા છે. આને પરિણામે મુલાકાતી આ ક્ષણેવધુ ખાતા નહીં ખોલી શકે.",
        "emailauthenticated": "તમારૂં ઇ-મેઇલ સરનામું $2 ના $3 સમયે પ્રમાણિત કરેલું છે.",
        "emailnotauthenticated": "તમારૂં ઇ-મેઇલ સરનામું હજુ સુધી પ્રમાણિત થયેલું નથી.\n\nનિમ્નલિખિત વિશેષતાઓમાંથી કોઇ માટે ઇ-મેઇલ મોકલવામાં આવશે નહીં.",
        "noemailprefs": "આ વિશેષતાઓ કાર્ય કરી શકે તે માટે 'તમારી પસંદ'માં ઇ-મેઇલ સરનામું દર્શાવો.",
        "createaccount-title": "{{SITENAME}} માટે ખાતુ બનાવ્યું",
        "createaccount-text": "કોઇકે {{SITENAME}} ($4) પર, નામ \"$2\", ગુપ્તસંજ્ઞા \"$3\", શાથે તમારા ઇ-મેઇલ એડ્રેસ માટે ખાતુ બનાવેલ છે.\n\nતમે હવે પ્રવેશ કરી અને ગુપ્તસંજ્ઞા બદલી શકો છો.\n\nજો આ ખાતુ ભુલથી બનેલું હોય તો,આ સંદેશને અવગણી શકો છો.",
        "login-throttled": "તમે હાલમાં ઘણાં જ પ્રવેશ પ્રયત્નો કર્યા છે.\nકૃપા કરી ફરી પ્રયત્ન કરતાં પહેલાં $1 રાહ જુઓ.",
-       "login-abort-generic": "તમારà«\81àª\82 àªªà«\8dરવà«\87શ àª¨àª¿àª·à«\8dફળ àª¥àª¯à«\81àª\82 - àª\9bà«\8bડà«\80 àª¦à«\87વાયà«\81àª\82",
+       "login-abort-generic": "તમારà«\80 àªªà«\8dરવà«\87શવિધિ àª¨àª¿àª·à«\8dફળ àª¥àª\88 - àª°àª¦àª¬àª¾àª¤àª²",
        "loginlanguagelabel": "ભાષા: $1",
        "suspicious-userlogout": "લોગ આઉટ કરવાની તમારી વિનંતિ પૂરી ન કરી શકાઇ. એમ લાગે છે કે તેને તૃટિ પામેલ બ્રાઉઝર કે પ્રોક્સી દ્વારા મોકલાઈ હતી.",
        "createacct-another-realname-tip": "સાચું નામ મરજીયાત છે.\nજો તમે તે આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમે કરેલ યોગદાનનું શ્રેય આપવા માટે થશે.",
        "newpassword": "નવી ગુપ્તસંજ્ઞા:",
        "retypenew": "નવી ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો:",
        "resetpass_submit": "ગુપ્તસંજ્ઞા બદલીને પ્રવેશ કરો.",
-       "changepassword-success": "તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¸àª«àª³àª¤àª¾àªªà«\82રà«\8dવàª\95 àª¬àª¦àª²àª¾àª\87 àª\97àª\87 છે!",
+       "changepassword-success": "તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¬àª¦àª²à«\80 àª\85પાàª\88 છે!",
        "resetpass_forbidden": "ગુપ્તસંજ્ઞા બદલી શકાશે નહીં",
        "resetpass-no-info": "બારોબાર આ પાનું જોવા માટે પ્રવેશ કરવો આવશ્યક છે.",
        "resetpass-submit-loggedin": "ગુપ્તસંજ્ઞા બદલો",
        "hr_tip": "આડી લીટી (શક્ય તેટલો ઓછો ઉપયોગ કરો)",
        "summary": "સારાંશ:",
        "subject": "વિષય:",
-       "minoredit": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª¸à«\81ધારà«\8b છે",
+       "minoredit": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª«à«\87રફાર છે",
        "watchthis": "આ પાનાને ધ્યાનમાં રાખો",
        "savearticle": "પાનું સાચવો",
        "savechanges": "પરિવર્તન સાચવો",
        "summary-preview": "સારાંશ પૂર્વાવલોકન:",
        "subject-preview": "વિષય/શીર્ષક પૂર્વાવલોકન:",
        "blockedtitle": "સભ્ય પ્રતિબંધિત છે",
-       "blockedtext": "'''આપનાં સભ્ય નામ અથવા આઇ.પી. એડ્રેસ પર પ્રતિબંધ મુકવામાં આવ્યો છે.'''\n\nઆ પ્રતિબંધ  $1એ મુક્યો છે.\nજેને માટે કારણ આપવામાં આવ્યું છે કે, ''$2''.\n\n* પ્રતિબંધ મુક્યા તારીખ: $8\n* પ્રતિબંધ ઉઠાવવાની તારીખ: $6\n* જેના ઉપર પ્રતિબંધ મુક્યો છે તે: $7\n\nઆપનાં પર મુકવામાં આવેલાં પ્રતિબંધ વિષે ચર્ચા કરવા માટે આપ $1નો કે અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી શકો છો.\nઆપ 'સભ્યને ઇ-મેલ કરો' ની કડી વાપરી નહી શકો, પરંતુ જો આપનાં [[Special:Preferences|મારી પસંદ]]માં યોગ્ય ઇ-મેલ સરનામું વાપર્યું હશે અને તમારા તે ખાતું વાપરવા ઉપર પ્રતિબંધ નહી મુક્યો હોય તો તમે તે કડીનો ઉપયોગ કરી શકશો.\nતમારૂં હાલનું આઇ.પી સરનામું છે $3, અને જેના પર પ્રતિબંધ મુકવામાં આવ્યો છે તે છે  #$5.\nમહેરબાની કરીને કોઇ પણ પત્ર વ્યવહારમાં ઉપરની બધીજ માહિતીનો ઉલ્લેખ કરશો.",
+       "blockedtext": "<strong>આપનાં સભ્ય નામ અથવા આઇ.પી. એડ્રેસ પર પ્રતિબંધ મુકવામાં આવ્યો છે.</strong>\n\nઆ પ્રતિબંધ $1એ મુક્યો છે.\nજેને માટે કારણ આપવામાં આવ્યું છે, <em>$2</em>.\n\n* પ્રતિબંધ મુક્યા તારીખ: $8\n* પ્રતિબંધ ઉઠાવવાની તારીખ: $6\n* જેના ઉપર પ્રતિબંધ મુક્યો છે તે: $7\n\nઆપનાં પર મુકવામાં આવેલાં પ્રતિબંધ વિષે ચર્ચા કરવા માટે આપ $1નો કે અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી શકો છો.\nઆપ 'સભ્યને ઇ-મેલ કરો' ની કડી વાપરી નહી શકો, પરંતુ જો આપનાં [[Special:Preferences|મારી પસંદ]]માં યોગ્ય ઇ-મેલ સરનામું વાપર્યું હશે અને તમારા તે ખાતું વાપરવા ઉપર પ્રતિબંધ નહી મુક્યો હોય તો તમે તે કડીનો ઉપયોગ કરી શકશો.\nતમારૂં હાલનું આઇ.પી સરનામું છે $3, અને જેના પર પ્રતિબંધ મુકવામાં આવ્યો છે તે છે  #$5.\nમહેરબાની કરીને કોઇ પણ પત્ર વ્યવહારમાં ઉપરની બધીજ માહિતીનો ઉલ્લેખ કરશો.",
        "autoblockedtext": "તમારાં IP સરનામા પર સ્વયંચાલિત રીતે રોક લગાવી દેવાઈ છે કેમકે તે અન્ય સભ્ય દ્વારા વાપરવામાં આવ્યું હતું જેના પર $1 દ્વારા પહેલેથી પ્રતિબંધ મૂકવામાં આવ્યો છે.\n:''$2''\n\n* રોકની શરુઆત : $8\n* રોકની સમાપ્તિ : $6\n* પ્રસ્તાવિત રોક સહન કરનાર : $7\n\nતમે $1 અથવા કોઇ અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી રોકની ચર્ચા કરી શકો.\n\nનોંધો કે તેમે \"આ સભ્યને ઈ-મેલ કરો\" વિકલ્પ નહિ વાપરી શકો, સિવાયકે તમરી પાસે તમારા [[Special:Preferences|user preferences]]માં વૈધ ઈ-મેલ સરનામું હોય અને તે વાપરવા પર પ્રતિબંધ ન મૂકવામાં આવ્યો હોય.\n\nતમારું હાલનું IP સરનામું $3 છે, અને રોકની ID છે #$5.\nઆ માહિતી તમારી પૂછપરછમાં જરૂર ઉમેરશો.",
        "blockednoreason": "કોઇ કારણ દર્શાવવામાં આવ્યું નથી",
        "whitelistedittext": "ફેરફાર કરવા માટે તમારે $1 કરવાનું છે.",
        "noarticletext": "આ પાનામાં હાલમાં કોઇ લખાણ નથી.\nતમે બીજાં પાનાંમાં [[Special:Search/{{PAGENAME}}|આ પાનાંના શીર્ષક માટે શોધી શકો છો]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સંલગ્ન માહિતિ પત્રકોમાં શોધી શકો છો],\nઅથવા [{{fullurl:{{FULLPAGENAME}}|action=edit}} આ પાનું બનાવી શકો છો]</span>.",
        "noarticletext-nopermission": "આ પાનામાં હાલમાં કોઇ માહિતિ નથી.\nતમે  [[Special:Search/{{PAGENAME}}|આ શબ્દ]] ધરાવતાં અન્ય લેખો શોધી શકો છો, અથવા <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સંલગ્ન માહિતિ પત્રકોમાં શોધી શકો છો], પરંતુ તમને આ પાનું બનાવવાની મંજૂરી નથી.",
        "userpage-userdoesnotexist": "સભ્ય ખાતું \"<nowiki>$1</nowiki>\"ની નોંધણીનથી થઈ.\nશું તમે ખરેખર આ પાનાની રચના કે ફેરફાર કરવા માંગો છો",
-       "userpage-userdoesnotexist-view": "સભ્યના ખાતા $1 ની નોંધણી નથી થઈ",
+       "userpage-userdoesnotexist-view": "સભ્ય ખાતા \"$1\" ની નોંધણી થયેલ નથી.",
        "blocked-notice-logextract": "આ સભ્ય હાલમાં પ્રતિબંધિત છે.\nતમારા નીરીક્ષણ માટે તાજેતરમાં પ્રતિબંધિત થયેલા સભ્યોની યાદિ આપી છે.",
-       "clearyourcache": "<strong>નà«\8bàª\82ધ:</strong> àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવà«\8dયા àªªàª\9bà«\80, àª¤àª®àª¾àª°à«\87 àª¤àª®àª¾àª°àª¾ àª¬à«\8dરાàª\89àª\9dરનà«\80 àª\95à«\85શ àª¬àª¾àª¯àªªàª¾àª¸ àª\95રવાનà«\80 àª\86વશà«\8dયàª\95તા àªªàª¡à«\80 àª¶àª\95à«\87 àª\9bà«\87.\n*<strong>ફાયરફà«\8bàª\95à«\8dસ / àª¸àª«àª¾àª°à«\80:</strong> </em>શà«\80ફà«\8dàª\9f<em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 ''રિલà«\8bડ'' àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા àª¤à«\8b <em>Ctrl-F5</em> àª\95à«\87 <em>Ctrl-R<em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-R</em>)\n*<strong>àª\97à«\81àª\97લ àª\95à«\8dરà«\8bમ:</strong> <em>Ctrl-Shift-R</em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-Shift-R</em>)\n*<strong>àª\88નà«\8dàª\9fરનà«\87àª\9f àª\8fàª\95à«\8dસપà«\8dલà«\8bરર:</strong> <em>Ctrl</em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 <em>રિફà«\8dરà«\87શ</em> àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા <em>Ctrl-F5</em> àª¦àª¬àª¾àªµà«\8b\n*<strong>àª\93પà«\87રા:</strong> <em>સાધનà«\8b â\86\92 àªªàª¸àª\82દàª\97à«\80àª\93</em>માàª\82 àª\9càª\88નà«\87 àª\95à«\85શ àª¸àª¾àª« àª\95રà«\8b",
+       "clearyourcache": "<strong>નà«\8bàª\82ધ:</strong> àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવà«\8dયા àªªàª\9bà«\80, àª¤àª®àª¾àª°à«\87 àª¤àª®àª¾àª°àª¾ àª¬à«\8dરાàª\89àª\9dરનà«\80 àª\95à«\85શ àª¬àª¾àª¯àªªàª¾àª¸ àª\95રવાનà«\80 àª\86વશà«\8dયàª\95તા àªªàª¡à«\80 àª¶àª\95à«\87 àª\9bà«\87.\n*<strong>ફાયરફà«\8bàª\95à«\8dસ / àª¸àª«àª¾àª°à«\80:</strong> </em>શà«\80ફà«\8dàª\9f<em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 ''રિલà«\8bડ'' àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા àª¤à«\8b <em>Ctrl-F5</em> àª\95à«\87 <em>Ctrl-R<em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-R</em>)\n*<strong>àª\97à«\81àª\97લ àª\95à«\8dરà«\8bમ:</strong> <em>Ctrl-Shift-R</em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-Shift-R</em>)\n*<strong>àª\88નà«\8dàª\9fરનà«\87àª\9f àª\8fàª\95à«\8dસપà«\8dલà«\8bરર:</strong> <em>Ctrl</em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 <em>રિફà«\8dરà«\87શ</em> àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા <em>Ctrl-F5</em> àª¦àª¬àª¾àªµà«\8b\n*<strong>àª\93પà«\87રા:</strong> <em>મà«\87નà«\81 â\86\92 àª¸à«\87àª\9fિàª\82àª\97à«\8dસ</em> (<em>àª\93પà«\87રા â\86\92 àªªà«\8dરà«\87ફરà«\87નà«\8dસિàª\9d</em> àª®à«\87àª\95 àªªàª°) àª®àª¾àª\82 àª\9cાàª\93 àª\85નà«\87 àªªàª\9bà«\80 <em>પà«\8dરાયવસà«\80 àª\85નà«\87 àª¸àª¿àª\95à«\8dયà«\81રિàª\9fà«\80 â\86\92 àª¬à«\8dરાàª\89àª\9dà«\80àª\82àª\97 àª¡à«\87àª\9fા àª¸àª¾àª« àª\95રà«\8b â\86\92 àª\95à«\85શ àª¥àª¯à«\87લા àª\9aિતà«\8dરà«\8b àª\85નà«\87 àª«àª¾àª\88લà«\8b</em> àªªàª° àª\9cાàª\93.",
        "usercssyoucanpreview": "'''ટીપ:''' તમારા નવા CSSને સાચવતા પહેલા  \"{{int:showpreview}}\" બટન વાપરી ચકાસણી કરો.",
        "userjsyoucanpreview": "'''ટીપ:''' Use the તમારી નવી JavaScript ને સાચવતા પહેલા   \"{{int:showpreview}}\" બટન વાપરી ચકાસો.",
        "usercsspreview": "'''યાદ રહે કે તમે તમારા સભ્ય CSS નું અવલોકન કરો છે.'''\n'''હજી સીધું તે સચવાયું નથી!'''",
        "userinvalidcssjstitle": "'''ચેતવણી:''' કોઇ પણ \"$1\" પટલ નથી.\nસભ્ય રચિત .css અને  .js પાના બીજી અંગ્રેજી બારખડી શીર્ષક વાપરે છે, દા. ત. {{ns:user}}:Foo/vector.css નહીં કે {{ns:user}}:Foo/Vector.css.",
        "updated": "(સંવર્ધીત)",
        "note": "'''નોંધ:'''",
-       "previewnote": "'''આ ફક્ત પૂર્વાવલોકન છે;'''\nતમારા ફેરફારો હજુ સાચવવામાં નથી આવ્યા!",
+       "previewnote": "<strong>ધ્યાનમાં રાખો કે આ ફક્ત પૂર્વાવલોકન છે.</strong>\nતમારા ફેરફારો હજુ સાચવવામાં આવ્યા નથી!",
        "continue-editing": "ફેરફાર કરવાનું ચાલુ રાખો",
        "previewconflict": "જો તમે આ પાનું સાચવશો તો આ પ્રિવ્યુમાં દેખાય છે તેવું સચવાશે.",
        "session_fail_preview": "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''\nકૃપયા ફરી પ્રયત્ન કરો.\nતેમ છતાં પણ સાચવી ન શકો તો [[Special:UserLogout|logging out]] કરી ફરી પ્રવેશ કરો.",
        "currentrev-asof": "$1એ જોઈ શકાતી હાલની આવૃત્તિ",
        "revisionasof": "$1 સુધીનાં પુનરાવર્તન",
        "revision-info": "{{GENDER:$6|$2}}$7 દ્વારા $1 સુધીમાં કરવામાં આવેલાં ફેરફારો",
-       "previousrevision": "â\86\90 àª\9cà«\81ના àª«à«\87રફારà«\8b",
-       "nextrevision": "àª\86 àªªàª\9bà«\80નà«\81àª\82 àªªà«\81નરાવરà«\8dતન→",
+       "previousrevision": "â\86\90 àª\9cà«\81નà«\80 àª\86વà«\83તà«\8dતિ",
+       "nextrevision": "àª\86 àªªàª\9bà«\80નà«\80 àª\86વà«\83તà«\8dતિ →",
        "currentrevisionlink": "વર્તમાન આવૃત્તિ",
        "cur": "વર્તમાન",
        "next": "આગળ",
        "page_first": "પહેલું",
        "page_last": "છેલ્લું",
        "histlegend": "વિવિધ પસંદગી:સરખામણી માટે સુધારેલી આવૃતિઓના રેડિયો ખાનાઓ પસંદ કરો અને એન્ટર દબાવો અથવા નીચે આપેલું બટન દબાવો.<br />\nસમજૂતી:'''({{int:cur}})''' = વર્તમાન અને સુધારેલી આવૃતિનો તફાવત, '''({{int:last}})''' = પૂર્વવર્તી ફેરફારનો તફાવત, '''{{int:minoreditletter}}''' = નાનો ફેરફાર.",
-       "history-fieldset-title": "àª\87તિહાસ àª\89àª\96à«\87ળો",
+       "history-fieldset-title": "àª\86વà«\83તà«\8dતિàª\93 àª®àª¾àª\9fà«\87 àª¶à«\8bધો",
        "history-show-deleted": "માત્ર હટાવાયેલા",
        "histfirst": "જુનામાં જુનું",
        "histlast": "નવામાં નવું",
        "compareselectedversions": "પસંદ કરેલા સરખાવો",
        "showhideselectedversions": "પસંદ કરેલા બતાવો / સંતાડો",
        "editundo": "રદ કરો",
-       "diff-empty": "(àª\95à«\8bàª\87 àª­à«\87દ àª¨àª¹ી)",
+       "diff-empty": "(àª\95à«\8bàª\87 àª­à«\87દ àª¨àª¥ી)",
        "diff-multi-sameuser": "(સમાન સભ્ય દ્વારા {{PLURAL:$1|કરાયેલ એક પુનરાવર્તન| કરાયેલા $1 પુનરાવર્તનો}} દર્શાવેલ નથી)",
+       "diff-multi-otherusers": "({{PLURAL:$2|એક અન્ય સભ્ય|$2 સભ્યો}} વડેની {{PLURAL:$1|વચ્ચેની એક આવૃત્તિ|વચ્ચેની $1 આવૃત્તિઓ}} દર્શાવેલ નથી)",
        "diff-multi-manyusers": "{{PLURAL:$2|એક સભ્યએ કરેલું|$2 સભ્યોએ કરેલા}} ({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન દર્શાવ્યં|વચગાળાનાં $1 પુનરાવર્તનો દર્શાવ્યાં}} નથી.)",
        "searchresults": "પરિણામોમાં શોધો",
        "searchresults-title": "\"$1\" માટેના પરિણામો",
        "search-redirect": "($1થી વાળેલું)",
        "search-section": "(વિભાગ $1)",
        "search-category": "(શ્રેણી $1)",
+       "search-file-match": "(ફાઇલ વિગતને અનુરૂપ છે)",
        "search-suggest": "શું તમે $1 કહેવા માંગો છો?",
        "search-interwiki-caption": "બંધુ પ્રકલ્પ",
        "search-interwiki-default": "$1 માંથી પરીણામો:",
        "recentchanges": "તાજા ફેરફારો",
        "recentchanges-legend": "હાલમાં થયેલા ફેરફારોના વિકલ્પ",
        "recentchanges-summary": "વિકિમાં તાજેતરમાં થયેલા ફેરફારો પર અહીંથી નજર રાખો.",
+       "recentchanges-noresult": "આપેલા સમયગાળા દરમિયાન આ માપદંડો માટે કોઇ ફેરફારો મળ્યા નહી.",
        "recentchanges-feed-description": "આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.",
        "recentchanges-label-newpage": "આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું",
-       "recentchanges-label-minor": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª¸à«\81ધારà«\8b àª\9bà«\87.",
-       "recentchanges-label-bot": "àª\86 àª«à«\87રફાર àª¬à«\8bàª\9f àª¦à«\8dવારા àª\95રાયà«\8b àª\9bà«\87",
+       "recentchanges-label-minor": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª«à«\87રફાર àª\9bà«\87",
+       "recentchanges-label-bot": "àª\86 àª«à«\87રફાર àª¬à«\8bàª\9f àª¦à«\8dવારા àª\95રાયà«\8b àª¹àª¤à«\8b",
        "recentchanges-label-unpatrolled": "આ ફેરફાર હજી ચકાસાયો નથી",
        "recentchanges-label-plusminus": "પાનાનું કદ આપેલા અંકો જેટલાં બાઈટ્સ જેટલું બદલ્યુ છે.",
        "recentchanges-legend-heading": "<strong>કળ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|નવા પાનાઓની યાદી]] પણ જુઓ)",
-       "rcnotefrom": "નીચે <strong>$2</strong> થી ફેરફારો દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવલે છે).",
+       "rcnotefrom": "નીચે <strong>$3, $4</strong> થી {{PLURAL:$5|ફેરફાર|ફેરફારો}} દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવેલ છે).",
        "rclistfrom": "$3 $2 બાદ થયેલા નવા ફેરફારો બતાવો",
        "rcshowhideminor": "નાના ફેરફારો $1",
        "rcshowhideminor-show": "બતાવો",
        "notargettext": "આ ક્રિયા જેના પર કરવાની છે તે સભ્ય કે પાનાની માહિતી તમે પૂરી પાડી નથી",
        "nopagetitle": "આવું કોઇ લક્ષ્ય પાનું નથી",
        "nopagetext": "તમે લખેલ પાનું અસ્તિત્વમાં નથી",
-       "pager-newer-n": "{{PLURAL:$1|નવું 1|નવા $1}}",
+       "pager-newer-n": "{{PLURAL:$1|નવું |નવા $1}}",
        "pager-older-n": "{{PLURAL:$1|જૂનું ૧|જૂનાં $1}}",
        "suppress": "નાબૂદ",
        "querypage-disabled": "કાર્યક્ષમતાના કારણે આ ખાસ પાનું નિષ્ક્રિ કરાયું છે.",
        "booksources-text": "નીચે દર્શાવેલ યાદી એ કડીઓ બતાવે છે જેઓ નવા અને જૂના પુસ્તકો  વેચે છે , અને તમે માંગેલ વસ્તુ સંબંધિ વધુ મહિતી પણ ધરાવી શકે છે.",
        "booksources-invalid-isbn": "આપેલ ISBN વૈધ નથી લાગતો; મૂળ સ્રોતને ચકાસી, ભૂલ શોધી, ખરી માહિતી આપો.",
        "specialloguserlabel": "કર્તા:",
-       "speciallogtitlelabel": "લક્ષ્યાંક (શીર્ષક અથવા વપરાશકર્તા)",
+       "speciallogtitlelabel": "લક્ષ્યાંક (શીર્ષક અથવા {{ns:user}}:સભ્યનું સભ્યનામ):",
        "log": "લૉગ",
        "all-logs-page": "બધાં જાહેર માહિતીપત્રકો",
        "alllogstext": "{{SITENAME}} ના લોગનો સંયુક્ત વર્ણન.\nતમે લોગનો પ્રકાર,સભ્ય નામ અથવા અસરગ્રસ્ત પાના આદિ પસંદ કરી તમારી યાદિ ટૂંકાવી શકો.",
        "logempty": "લોગમાં આને મળતી કોઇ વસ્તુ નથી",
        "log-title-wildcard": "આ શબ્દો દ્વારા શરૂ થનાર શીર્ષકો શોધો",
        "showhideselectedlogentries": "પસંદગીની લોગ નોંધણીઓ બતાવો/છુપાવો",
-       "allpages": "બધા પાના",
+       "allpages": "બધા પાનાંઓ",
        "nextpage": "આગળનું પાનું ($1)",
        "prevpage": "પાછળનું પાનું ($1)",
        "allpagesfrom": "આનાથી શરૂ થતા પાના દર્શાવો:",
        "allpagesprefix": "ઉપસર્ગ ધરાવતા પાનાં શોધો",
        "allpagesbadtitle": "આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.\nશક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.",
        "allpages-bad-ns": "{{SITENAME}} ને નામસ્થળ  \"$1\" નથી.",
-       "allpages-hide-redirects": "àª\85નà«\8dયતà«\8dર àªµàª¾àª³à«\87લાàª\82 પાનાંઓ છૂપાવો",
+       "allpages-hide-redirects": "દિશાનિરà«\8dદà«\87શિત પાનાંઓ છૂપાવો",
        "cachedspecial-refresh-now": "આધૂનિક બતાવો.",
        "categories": "શ્રેણીઓ",
        "categoriespagetext": "નીચેની {{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}માં પાના કે અન્ય સભ્યો છે.\n[[Special:UnusedCategories|વણ વપરાયેલી શ્રેણીઓ]] અત્રે દર્શાવવામાં આવી નથી.\n[[Special:WantedCategories|ઈચ્છિત શ્રેણીઓ]] પણ જોઈ જુઓ.",
        "trackingcategories-disabled": "વર્ગ અસક્રિય છે.",
        "mailnologin": "મેળવનારનું સરનામું નથી",
        "mailnologintext": "અન્ય સભ્યને ઇ-મેલ મોકલવા માટે તમે [[Special:UserLogin|logged in]] પ્રવેશ કરેલ હોવો જોઈએ અને તમારા[[Special:Preferences|preferences]] વિકલ્પોમાં તમારા ઈ-મેલ સરનામાની પુષ્ટિ થયેલી હોવી જોઈએ",
-       "emailuser": "સભà«\8dયનà«\87 àª\87-મેલ કરો",
+       "emailuser": "àª\86 àª¸àª­à«\8dયનà«\87 àª\87મેલ કરો",
        "emailuser-title-target": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો",
        "emailuser-title-notarget": "ઇ-મેલ વપરાશકર્તા",
        "emailpagetext": "તમે નીચે દર્શાવેલ ફોર્મ વાપરી આ {{GENDER:$1|સભ્ય}}ને ઇ-મેલ મોકલી શકો છો.\nતમે [[Special:Preferences|તમારી પસંદમાં]] જે ઇ-મેલ સરનામું લખ્યું હશે તે \"દ્વારા\"ના નામ હેઠળ દેખાશે, જેથી ઇ-મેલ મેળવનાર તમને સંદેશાનો જવાબ આપી શકશે.",
        "unwatchthispage": "નીરીક્ષણ બંધ કરો",
        "notanarticle": "માહિતી વિનાનું પાનું",
        "notvisiblerev": "અન્ય સભ્ય દ્વારા થયેલું સંપાદન ભૂંસી નખાયું છે.",
-       "watchlist-details": "ચર્ચાનાં પાનાં ન ગણતા {{PLURAL:$1|$1 પાનું|$1 પાનાં}} ધ્યાનસૂચીમાં છે.",
+       "watchlist-details": "àª\9aરà«\8dàª\9aાનાàª\82 àªªàª¾àª¨àª¾àª\82 àª\85લàª\97થà«\80 àª¨ àª\97ણતા {{PLURAL:$1|$1 àªªàª¾àª¨à«\81àª\82|$1 àªªàª¾àª¨àª¾àª\82}} àª§à«\8dયાનસà«\82àª\9aà«\80માàª\82 àª\9bà«\87.",
        "wlheader-enotif": "ઈમેલ સૂચના પદ્ધતિ સક્રીય કરાઈ.",
        "wlheader-showupdated": "તમારી છેલ્લી મુલાકાત પછી બદલાયેલાં પાના  '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે.",
-       "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|'''$2''' કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|'''$1''' ફેરફારો }} દર્શાવ્યા છે.",
+       "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|<strong>$2</strong> કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|<strong>$1</strong> ફેરફારો }} દર્શાવ્યા છે.",
        "wlshowlast": "છેલ્લા $1 કલાકો $2 દિવસો બતાવો",
        "watchlist-options": "ધ્યાનસૂચિના વિકલ્પો",
        "watching": "નજર રાખી રહ્યાં છો...",
        "minimum-size": "લઘુત્તમ કદ",
        "maximum-size": "મહત્તમ કદ",
        "pagesize": "(બાઇટ્સ)",
-       "restriction-edit": "બદલો",
+       "restriction-edit": "ફà«\87રફાર àª\95રો",
        "restriction-move": "ખસેડો",
        "restriction-create": "બનાવો",
        "restriction-upload": "ફાઇલ ચઢાવો",
        "tooltip-namespace_association": "પસંદ કરેલા નામસ્થળ સાથેસંલગ્ન નામ સ્થ્ળની માહિતી શામિલ કરવા આ ખાનું પણ અંકિત કરો",
        "blanknamespace": "(મુખ્ય)",
        "contributions": "{{GENDER:$1|સભ્ય}}ના યોગદાનો",
-       "contributions-title": "સભ્ય $1નું યોગદાન",
-       "mycontris": "યોગદાન",
+       "contributions-title": "$1 માટે સભ્યના યોગદાનો",
+       "mycontris": "યોગદાન",
        "anoncontribs": "યોગદાનો",
        "contribsub2": "($2) માટે {{GENDER:$3|$1}}",
        "nocontribs": "આ પરિમાણને મળતી પરિણામ નથી મળ્યાં",
        "sp-contributions-search": "યોગદાન શોધો",
        "sp-contributions-username": "IP સરનામું અથવા સભ્યનામ:",
        "sp-contributions-toponly": "માત્ર છેલ્લી આવૃત્તિના ફેરફારો જ દર્શાવો",
+       "sp-contributions-newonly": "માત્ર નવા પાનાં બનાવ્યા હોય તેવા ફેરફાર દર્શાવો",
        "sp-contributions-submit": "શોધો",
        "whatlinkshere": "અહી શું જોડાય છે",
        "whatlinkshere-title": "\"$1\" ને જોડતા પાનાં",
        "tooltip-save": "તમે કરેલાં ફેરફારો સુરક્ષિત કરો",
        "tooltip-preview": "તમે કરેલાં ફેરફારોનું પૂર્વદર્શન કરો. કૃપા કરી કાર્ય સુરક્ષિત કરતાં પહેલા આ જોઇ લો.",
        "tooltip-diff": "તમે માહિતીમાં કયા ફેરફારો કર્યા છે તે જોવા મળશે",
-       "tooltip-compareselectedversions": "અ પાનાનાં પસંદ કરેલા બે વૃત્તાંત વચ્ચેનાં ભેદ જુઓ.",
+       "tooltip-compareselectedversions": "અા પાનાની પસંદ કરેલી બે આવૃત્તિઓ વચ્ચેનો ભેદ જુઓ",
        "tooltip-watch": "આ પાનાને તમારી ધ્યાનસૂચિમાં ઉમેરો",
        "tooltip-watchlistedit-normal-submit": "શીર્ષકો હટાવો",
        "tooltip-watchlistedit-raw-submit": "ધ્યાનસૂચિ અધ્યતન બનાવો",
        "pageinfo-length": "પાનાંની લંબાઇ (બાઇટમાં)",
        "pageinfo-article-id": "પાનાં ઓળખ",
        "pageinfo-language": "પાનાંની વિગતની ભાષા",
+       "pageinfo-content-model": "પાનાનું લખાણ બંધારણ",
        "pageinfo-robot-policy": "રોબોટ્સ દ્વારા અનુક્રમિત",
        "pageinfo-robot-index": "માન્ય",
        "pageinfo-robot-noindex": "અમાન્ય",
        "pageinfo-watchers": "પાના નીરીક્ષકોની સંખ્યા",
+       "pageinfo-few-watchers": "$1 કરતા ઓછા {{PLURAL:$1|ચાતક|ચાતકો}}",
        "pageinfo-redirects-name": "આ પાનાં પર દિશાનિર્દેશનોની સંખ્યા",
-       "pageinfo-subpages-name": "આ પાનાંનું ઉપપાનું",
+       "pageinfo-subpages-name": "આ પાનાના ઉપપાનાઓ",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|દિશાનિર્દેશન|દિશાનિર્દેશનો}}; $3 {{PLURAL:$3|દિશાનિર્દેશન નહી|દિશાનિર્દેશનો નહી}})",
        "pageinfo-firstuser": "પૃષ્ઠ સર્જક",
        "pageinfo-firsttime": "પાનાં બનાવવાની તારીખ",
        "pageinfo-lastuser": "છેલ્લો ફેરફાર કરનાર",
        "pageinfo-toolboxlink": "પાનાંની માહિતી",
        "pageinfo-redirectsto": "તરફ દિશાનિર્દેશન",
        "pageinfo-redirectsto-info": "માહિતી",
+       "pageinfo-contentpage": "લખાણ પાના તરીકે ગણાયેલ",
        "pageinfo-contentpage-yes": "હા",
        "pageinfo-protect-cascading-yes": "હા",
        "pageinfo-category-info": "શ્રેણી માહિતી",
        "version-entrypoints-header-url": "URL",
        "version-libraries-library": "લાઇબ્રેરી",
        "version-libraries-version": "આવૃત્તિ",
+       "redirect": "ફાઇલ, સભ્ય, પાનું, આવૃત્તિ, અથવા લૉગ ઓળખ વડે દિશાનિર્દેશન",
        "redirect-submit": "જાઓ",
        "redirect-lookup": "જુઓ:",
        "redirect-value": "કિંમત:",
        "htmlform-cloner-create": "વધુ ઉમેરો",
        "htmlform-cloner-delete": "હટાવો",
        "logentry-delete-delete": "$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}",
-       "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3 ($4)",
        "logentry-delete-event": "$1 એ {{PLURAL:$5|લૉગ ઘટના|$5 લૉગ ઘટનાઓ}} ની દ્રશ્યતા $3 પર {{GENDER:$2|બદલેલ}} છે: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|એ}} પૃષ્ઠ $3 પરના {{PLURAL:$5|એક પુનરાવર્તન|$5 પુનરાવર્તનો}}ની દૃષ્યતા બદલી: $4",
        "logentry-delete-event-legacy": "$1એ $3 પર લોગ ઘટનાઓની દૃશ્યતા {{GENDER:$2|બદલી}}",
        "logentry-newusers-create2": "સભ્ય ખાતું $3 $1 વડે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-newusers-autocreate": "વપરાશકર્તા ખાતું $1 આપમેળે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|દ્વારા ચડાવેલ}} $3",
+       "logentry-upload-overwrite": "$1 એ $3 ની નવી આવૃત્તિ {{GENDER:$2|ચડાવી}}",
        "rightsnone": "(કંઈ નહી)",
        "feedback-adding": "પ્રતિભાવ આ પાના પર ઉમેરાઈ રહ્યો છે.",
        "feedback-bugcheck": "સરસ! જરા જોઈ લેશો કે આ  પહેલેથી જ હાજર [$1 known bugs] નથીને?",
        "special-characters-group-thai": "થાઈ",
        "special-characters-group-lao": "લાઓ",
        "special-characters-group-khmer": "ખ્મેર",
-       "mw-widgets-titleinput-description-new-page": "પાનું અસ્તિત્વ ધરાવતું નથી."
+       "mw-widgets-titleinput-description-new-page": "પાનું અસ્તિત્વ ધરાવતું નથી.",
+       "randomrootpage": "યાદચ્છિક મૂળ પાનું"
 }
index 5887fe7..44692df 100644 (file)
        "anontalk": "שיחה",
        "navigation": "ניווט",
        "and": "&#32;וגם",
-       "qbfind": "חיפוש",
-       "qbbrowse": "ניווט",
-       "qbedit": "עריכה",
-       "qbpageoptions": "הדף הזה",
-       "qbmyoptions": "הדפים שלי",
        "faq": "שאלות ותשובות",
-       "faqpage": "Project:שאלות ותשובות",
        "actions": "פעולות",
        "namespaces": "מרחבי שם",
        "variants": "גרסאות שפה",
        "edit-local": "עריכת התיאור המקומי",
        "create": "יצירה",
        "create-local": "הוספת תיאור מקומי",
-       "editthispage": "עריכת דף זה",
-       "create-this-page": "יצירת דף זה",
        "delete": "מחיקה",
-       "deletethispage": "מחיקת דף זה",
-       "undeletethispage": "שחזור דף זה",
        "undelete_short": "שחזור {{PLURAL:$1|עריכה אחת|$1 עריכות}}",
        "viewdeleted_short": "הצגת {{PLURAL:$1|עריכה מחוקה אחת|$1 עריכות מחוקות}}",
        "protect": "הגנה",
        "protect_change": "שינוי",
-       "protectthispage": "הפעלת הגנה על דף זה",
        "unprotect": "שינוי הגנה",
-       "unprotectthispage": "שינוי ההגנה על דף זה",
        "newpage": "דף חדש",
-       "talkpage": "שיחה על דף זה",
        "talkpagelinktext": "שיחה",
        "specialpage": "דף מיוחד",
        "personaltools": "כלים אישיים",
-       "articlepage": "צפייה בדף התוכן",
        "talk": "שיחה",
        "views": "צפיות",
        "toolbox": "כלים",
        "tool-link-userrights": "שינוי הרשאות ה{{GENDER:$1|משתמש|משתמשת}}",
        "tool-link-userrights-readonly": "צפייה בהרשאות ה{{GENDER:$1|משתמש|משתמשת}}",
        "tool-link-emailuser": "שליחת דוא\"ל ל{{GENDER:$1|משתמש|משתמשת}}",
-       "userpage": "צפייה בדף המשתמש",
-       "projectpage": "צפייה בדף המיזם",
        "imagepage": "צפייה בדף הקובץ",
        "mediawikipage": "צפייה בדף ההודעה",
        "templatepage": "צפייה בדף התבנית",
        "gotointerwiki-invalid": "הכותרת שצוינה אינה תקינה.",
        "gotointerwiki-external": "{{GENDER:|אתה עומד|את עומדת|אתם עומדים}} לעזוב את {{SITENAME}} כדי לבקר באתר הנפרד \"[[$2]]\".\n\n'''[$1 להמשך לכתובת $1]'''",
        "undelete-cantedit": "אין באפשרותך לשחזר דף זה, כי אין באפשרותך לערוך אותו.",
-       "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו."
+       "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו.",
+       "pagedata-title": "מידע על הדף",
+       "pagedata-text": "דף זה מהווה ממשק מידע לדפים. כדי להשתמש בו, כותרת הדף צריכה להופיע בכתובת ה־URL, בעזרת התחביר המתאים לדפי־משנה.\n* דף זה משתמש בשיטת \"ניתוב התוכן\" (Content negotiation) בהתבסס על כותרת ה־Accept ששולח צד הלקוח. פירוש הדבר הוא שהמידע על הדף יישלח בפורמט שצד הלקוח (כגון דפדפן) מעדיף.",
+       "pagedata-not-acceptable": "לא נמצא פורמט נתמך. סוגי MIME נתמכים: $1",
+       "pagedata-bad-title": "כותרת בלתי־תקינה: $1."
 }
index 53f47de..1dab1ea 100644 (file)
        "anontalk": "Razgovor",
        "navigation": "Orijentacija",
        "and": "&#32;i",
-       "qbfind": "Nađi",
-       "qbbrowse": "Pregledaj",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Postavke stranice",
-       "qbmyoptions": "Moje stranice",
        "faq": "Najčešća pitanja",
-       "faqpage": "Project:FAQ",
        "actions": "Radnje",
        "namespaces": "Imenski prostori",
        "variants": "Inačice",
        "edit-local": "Uredi lokalni opis",
        "create": "Započni",
        "create-local": "dodaj lokalni opis",
-       "editthispage": "Uredi ovu stranicu",
-       "create-this-page": "Započni ovu stranicu",
        "delete": "Izbriši",
-       "deletethispage": "Izbriši ovu stranicu",
-       "undeletethispage": "Vrati ovu stranicu",
        "undelete_short": "Vrati {{PLURAL:$1|$1 uređivanje|$1 uređivanja}}",
        "viewdeleted_short": "Prikaži $1 {{PLURAL:$1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}",
        "protect": "Zaštiti",
        "protect_change": "promijeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor o ovoj stranici",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Osobni alati",
-       "articlepage": "Vidi članak",
        "talk": "Razgovor",
        "views": "Pogledi",
        "toolbox": "Pomagala",
        "tool-link-userrights": "Promijeni {{GENDER:$1|suradnikovu|suradničinu}} pripadnost skupinama",
        "tool-link-userrights-readonly": "Vidi {{GENDER:$1|suradnikovu|suradničinu|suradničku}} pripadnost skupinama",
        "tool-link-emailuser": "Pošalji {{GENDER:$1|suradniku|suradnici}} e-poruku",
-       "userpage": "Vidi suradnikovu stranicu",
-       "projectpage": "Vidi stranicu o projektu",
        "imagepage": "Vidi stranicu datoteke",
        "mediawikipage": "Vidi stranicu za razgovor",
        "templatepage": "Vidi ovaj predložak",
index a1b852c..5ebc0c4 100644 (file)
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "and": "&#32;e",
-       "qbfind": "Cercar",
-       "qbbrowse": "Foliar",
-       "qbedit": "Modificar",
-       "qbpageoptions": "Iste pagina",
-       "qbmyoptions": "Mi paginas",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Actiones",
        "namespaces": "Spatios de nomines",
        "variants": "Variantes",
        "edit-local": "Modificar description local",
        "create": "Crear",
        "create-local": "Adder description local",
-       "editthispage": "Modificar iste pagina",
-       "create-this-page": "Crear iste pagina",
        "delete": "Deler",
-       "deletethispage": "Deler iste pagina",
-       "undeletethispage": "Restaurar iste pagina",
        "undelete_short": "Restaurar {{PLURAL:$1|un modification|$1 modificationes}}",
        "viewdeleted_short": "Vider {{PLURAL:$1|un modification|$1 modificationes}} delite",
        "protect": "Proteger",
        "protect_change": "cambiar",
-       "protectthispage": "Proteger iste pagina",
        "unprotect": "Cambiar protection",
-       "unprotectthispage": "Cambiar le protection de iste pagina",
        "newpage": "Nove pagina",
-       "talkpage": "Discuter iste pagina",
        "talkpagelinktext": "Discussion",
        "specialpage": "Pagina special",
        "personaltools": "Instrumentos personal",
-       "articlepage": "Vider pagina de contento",
        "talk": "Discussion",
        "views": "Representationes",
        "toolbox": "Instrumentos",
        "tool-link-userrights": "Modificar le gruppos del {{GENDER:$1|usator|usatrice}}",
        "tool-link-userrights-readonly": "Vider gruppos de {{GENDER:$1|usator}}",
        "tool-link-emailuser": "Inviar e-mail a iste {{GENDER:$1|usator|usatrice}}",
-       "userpage": "Vider pagina del usator",
-       "projectpage": "Vider pagina de projecto",
        "imagepage": "Vider le pagina del file",
        "mediawikipage": "Vider pagina de message",
        "templatepage": "Vider pagina de patrono",
        "gotointerwiki-invalid": "Le titulo specificate non es valide.",
        "gotointerwiki-external": "Tu es sur le puncto de quitar {{SITENAME}} pro visitar [[$2]], un sito web separate.\n\n'''[$1 Continuar a $1]'''",
        "undelete-cantedit": "Tu non pote restaurar iste pagina perque tu non ha le permission de modificar iste pagina.",
-       "undelete-cantcreate": "Tu non pote restaurar iste pagina perque il non ha pagina existente con iste nomine e tu non ha le permission de crear lo."
+       "undelete-cantcreate": "Tu non pote restaurar iste pagina perque il non ha pagina existente con iste nomine e tu non ha le permission de crear lo.",
+       "pagedata-title": "Datos de pagina"
 }
index 0d90853..7f39185 100644 (file)
        "anontalk": "Pembicaraan",
        "navigation": "Navigasi",
        "and": "&#32;dan",
-       "qbfind": "Pencarian",
-       "qbbrowse": "Navigasi",
-       "qbedit": "Sunting",
-       "qbpageoptions": "Halaman ini",
-       "qbmyoptions": "Halaman saya",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Tindakan",
        "namespaces": "Ruang nama",
        "variants": "Varian",
        "edit-local": "Sunting deskripsi lokal",
        "create": "Buat",
        "create-local": "Tambah deskripsi lokal",
-       "editthispage": "Sunting halaman ini",
-       "create-this-page": "Buat halaman ini",
        "delete": "Hapus",
-       "deletethispage": "Hapus halaman ini",
-       "undeletethispage": "Batalkan penghapusan",
        "undelete_short": "Batal hapus {{PLURAL:$1|$1 suntingan}}",
        "viewdeleted_short": "Lihat {{PLURAL:$1|$1 suntingan}} yang dihapus",
        "protect": "Lindungi",
        "protect_change": "ubah",
-       "protectthispage": "Lindungi halaman ini",
        "unprotect": "Ubah perlindungan",
-       "unprotectthispage": "Ubah perlindungan halaman ini",
        "newpage": "Halaman baru",
-       "talkpage": "Bicarakan halaman ini",
        "talkpagelinktext": "bicara",
        "specialpage": "Halaman istimewa",
        "personaltools": "Perkakas pribadi",
-       "articlepage": "Lihat halaman isi",
        "talk": "Pembicaraan",
        "views": "Tampilan",
        "toolbox": "Perkakas",
        "tool-link-userrights": "Simpan kelompok {{GENDER:$1|pengguna}}",
        "tool-link-userrights-readonly": "Lihat kelompok {{GENDER:$1|pengguna}}",
        "tool-link-emailuser": "Kirim surel ke {{GENDER:$1|pengguna}} ini",
-       "userpage": "Lihat halaman pengguna",
-       "projectpage": "Lihat halaman proyek",
        "imagepage": "Lihat halaman berkas",
        "mediawikipage": "Lihat halaman pesan sistem",
        "templatepage": "Lihat halaman templat",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])",
        "recentchanges-submit": "Tampilkan",
        "rcfilters-activefilters": "Filter aktif",
-       "rcfilters-quickfilters": "Pranala cepat (pintas)",
+       "rcfilters-quickfilters": "Pengaturan filter tersimpan",
        "rcfilters-quickfilters-placeholder-title": "Tidak ada pranala tersimpan sekarang",
        "rcfilters-quickfilters-placeholder-description": "Untuk menyimpan pengaturan saringan dan menggunakannya kembali, klik ikon penanda halaman di area Penyaringan Aktif, di bawah.",
        "rcfilters-savedqueries-defaultlabel": "Saringan tersimpan",
        "rcfilters-savedqueries-unsetdefault": "Hapus sebagai baku",
        "rcfilters-savedqueries-remove": "Hapus",
        "rcfilters-savedqueries-new-name-label": "Nama",
-       "rcfilters-savedqueries-apply-label": "Buat pranala cepat",
+       "rcfilters-savedqueries-apply-label": "Simpan pengaturan",
        "rcfilters-savedqueries-cancel-label": "Batalkan",
-       "rcfilters-savedqueries-add-new-title": "Simpan penyaringan sebagai pranala cepat",
+       "rcfilters-savedqueries-add-new-title": "Simpan pengaturan filter ini",
        "rcfilters-restore-default-filters": "Kembalikan filter bawaan",
        "rcfilters-clear-all-filters": "Hapus semua penyaringan",
        "rcfilters-search-placeholder": "Filter perubahan terbaru (jelajahi atau masukan input)",
        "revid": "revisi $1",
        "pageid": "ID halaman $1",
        "rawhtml-notallowed": "Tag &lt;html&gt; tidak dapat digunakan di luar halaman normal.",
-       "gotointerwiki-invalid": "Judul yang ditentukan tidak sah"
+       "gotointerwiki-invalid": "Judul yang ditentukan tidak sah",
+       "pagedata-title": "Data halaman",
+       "pagedata-bad-title": "Judul tidak sah: $1"
 }
index a764e8b..e97fa73 100644 (file)
        "anontalk": "discussioni",
        "navigation": "Navigazione",
        "and": "&#32;e",
-       "qbfind": "Trova",
-       "qbbrowse": "Sfoglia",
-       "qbedit": "Modifica",
-       "qbpageoptions": "Opzioni pagina",
-       "qbmyoptions": "Le mie pagine",
        "faq": "Domande frequenti",
-       "faqpage": "Project:Domande frequenti",
        "actions": "Azioni",
        "namespaces": "Namespace",
        "variants": "Varianti",
        "edit-local": "Modifica descrizione locale",
        "create": "Crea",
        "create-local": "Aggiungi descrizione locale",
-       "editthispage": "Modifica questa pagina",
-       "create-this-page": "Crea questa pagina",
        "delete": "Cancella",
-       "deletethispage": "Cancella questa pagina",
-       "undeletethispage": "Recupera questa pagina",
        "undelete_short": "Recupera {{PLURAL:$1|una versione|$1 versioni}}",
        "viewdeleted_short": "Vedi {{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}",
        "protect": "Proteggi",
        "protect_change": "cambia",
-       "protectthispage": "Proteggi questa pagina",
        "unprotect": "Cambia la protezione",
-       "unprotectthispage": "Modifica la protezione di questa pagina",
        "newpage": "Nuova pagina",
-       "talkpage": "Pagina di discussione",
        "talkpagelinktext": "Discussione",
        "specialpage": "Pagina speciale",
        "personaltools": "Strumenti personali",
-       "articlepage": "Visualizza la voce",
        "talk": "Discussione",
        "views": "Visite",
        "toolbox": "Strumenti",
        "tool-link-userrights": "Modifica gruppi {{GENDER:$1|utente}}",
        "tool-link-userrights-readonly": "Visualizza gruppi {{GENDER:$1|utente}}",
        "tool-link-emailuser": "Invia una email a questo {{GENDER:$1|utente}}",
-       "userpage": "Visualizza la pagina utente",
-       "projectpage": "Visualizza la pagina di servizio",
        "imagepage": "Visualizza la pagina del file",
        "mediawikipage": "Visualizza il messaggio",
        "templatepage": "Visualizza il template",
        "gotointerwiki-invalid": "Il titolo specificato non è valido.",
        "gotointerwiki-external": "Stai per lasciare {{SITENAME}} per visitare [[$2]], che è un sito web diverso.\n\n'''[$1 Continua su $1]'''",
        "undelete-cantedit": "Non puoi ripristinare questa pagina poiché non hai sufficienti permessi per modificarla.",
-       "undelete-cantcreate": "Non puoi ripristinare questa pagina poiché la pagina con questo nome non è ancora inesistente e non hai sufficienti permessi per crearla."
+       "undelete-cantcreate": "Non puoi ripristinare questa pagina poiché la pagina con questo nome non è ancora inesistente e non hai sufficienti permessi per crearla.",
+       "pagedata-not-acceptable": "Nessun formato corrispondente trovato. Tipi MIME supportati: $1",
+       "pagedata-bad-title": "Titolo non valido: $1."
 }
index adbe0a6..5657f4e 100644 (file)
        "anontalk": "トーク",
        "navigation": "案内",
        "and": "&#32;および",
-       "qbfind": "検索",
-       "qbbrowse": "閲覧",
-       "qbedit": "編集",
-       "qbpageoptions": "このページについて",
-       "qbmyoptions": "自分のページ",
        "faq": "よくある質問と回答",
-       "faqpage": "Project:よくある質問と回答",
        "actions": "操作",
        "namespaces": "名前空間",
        "variants": "変種",
        "edit-local": "ローカルの解説を編集",
        "create": "作成",
        "create-local": "ローカルの解説を作成",
-       "editthispage": "このページを編集",
-       "create-this-page": "このページを作成",
        "delete": "削除",
-       "deletethispage": "このページを削除",
-       "undeletethispage": "このページを復元",
        "undelete_short": "{{PLURAL:$1|$1 編集}}を復元",
        "viewdeleted_short": "{{PLURAL:$1|削除された $1 編集}}を閲覧",
        "protect": "保護",
        "protect_change": "設定変更",
-       "protectthispage": "このページを保護",
        "unprotect": "保護の設定変更",
-       "unprotectthispage": "このページの保護を変更",
        "newpage": "新規ページ",
-       "talkpage": "このページについて話し合う",
        "talkpagelinktext": "トーク",
        "specialpage": "特別ページ",
        "personaltools": "個人用ツール",
-       "articlepage": "本文を表示",
        "talk": "議論",
        "views": "表示",
        "toolbox": "ツール",
        "tool-link-userrights": "{{GENDER:$1|利用者}}グループの変更",
        "tool-link-userrights-readonly": "{{GENDER:$1|利用者}}グループの表示",
        "tool-link-emailuser": "この{{GENDER:$1|利用者}}にメールを送信",
-       "userpage": "利用者ページを表示",
-       "projectpage": "プロジェクトのページを表示",
        "imagepage": "ファイルのページを表示",
        "mediawikipage": "メッセージのページを表示",
        "templatepage": "テンプレートのページを表示",
        "action-applychangetags": "自分の編集にタグを適用する",
        "action-changetags": "個々の版および記録項目への任意のタグの追加と除去",
        "action-deletechangetags": "データベースからタグの削除",
-       "action-purge": "purge this page",
+       "action-purge": "キャッシュの破棄",
        "nchanges": "$1 {{PLURAL:$1|回の変更}}",
        "enhancedrc-since-last-visit": "最終閲覧以降 $1 {{PLURAL:$1|件}}",
        "enhancedrc-history": "履歴",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "「未登録」の項目が登録済み利用者を絞り込む項目と競合しています。競合している項目は項目選択欄で強調表示されています。",
        "rcfilters-filter-user-experience-level-newcomer-label": "新規利用者",
        "rcfilters-filter-user-experience-level-newcomer-description": "登録から4日以内、かつ10編集以下の利用者",
-       "rcfilters-filter-user-experience-level-learner-label": "Learners",
-       "rcfilters-filter-user-experience-level-learner-description": "「新規参加者」よりも編集経験があり、「Experienced users」より編集経験が少ない利用者",
-       "rcfilters-filter-user-experience-level-experienced-label": "Experienced users",
+       "rcfilters-filter-user-experience-level-learner-label": "初学者",
+       "rcfilters-filter-user-experience-level-learner-description": "「新規参加者」よりも編集経験があり、「経験者」より編集経験が少ない利用者",
+       "rcfilters-filter-user-experience-level-experienced-label": "経験者",
        "rcfilters-filter-user-experience-level-experienced-description": "30日以上、かつ500編集以上の活動履歴がある利用者",
        "rcfilters-filtergroup-automated": "自動編集",
        "rcfilters-filter-bots-label": "ボット",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示する",
        "rcshowhidemine-hide": "非表示にする",
-       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å\8e»を$1",
+       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å¤\96を$1",
        "rcshowhidecategorization-show": "表示する",
        "rcshowhidecategorization-hide": "非表示にする",
        "rclinks": "最近 $2 日間の更新を最大 $1 件表示",
        "confirm-purge-title": "このページをパージする",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "このページのキャッシュを破棄しますか?",
-       "confirm-purge-bottom": "ã\83\9aã\83¼ã\82¸ã\81®ã\83\91ã\83¼ã\82¸ã\81«ã\82\88ã\82\8aã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\80\81å¼·å\88¶ç\9a\84ã\81«æ\9c\80æ\96°ç\89\88ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82",
+       "confirm-purge-bottom": "ページのキャッシュを破棄し、強制的に最新版を表示します。",
        "confirm-watch-button": "OK",
        "confirm-watch-top": "このページをウォッチリストに追加しますか?",
        "confirm-unwatch-button": "OK",
index 395e9c3..3a43d1d 100644 (file)
        "anontalk": "Parembugan",
        "navigation": "Navigasi",
        "and": "&#32;lan",
-       "qbfind": "Golèk",
-       "qbbrowse": "Luru",
-       "qbedit": "Besut",
-       "qbpageoptions": "Kaca iki",
-       "qbmyoptions": "Kaca-kacaku",
        "faq": "Pitakon Kerep",
-       "faqpage": "Project:Pitakon Kerep",
        "actions": "Lelabuhan",
        "namespaces": "Mandala aran",
        "variants": "Varian",
        "history_short": "Sujarah",
        "history_small": "sujarah",
        "updatedmarker": "wis dianyari kawit tekaku mréné pungkasan",
-       "printableversion": "Vèrsi cithak",
+       "printableversion": "Vèrsi cap-capan",
        "permalink": "Pranala permanèn",
        "print": "Cithak",
        "view": "Deleng",
        "edit-local": "Besut andharan enggon-enggonan",
        "create": "Gawé",
        "create-local": "Tambah panyadra enggon-enggonan",
-       "editthispage": "Besut kaca iki",
-       "create-this-page": "Gawé kaca iki",
        "delete": "Busak",
-       "deletethispage": "Busak kaca iki",
-       "undeletethispage": "Wurung busak kaca iki",
        "undelete_short": "Wurung busak {{PLURAL:$1|sabesutan|$1 besutan}}",
        "viewdeleted_short": "Deleng {{PLURAL:$1|sabesutan kabusak|$1 besutan kabusak}}",
        "protect": "Reksa",
        "protect_change": "owahi",
-       "protectthispage": "Reksa kaca iki",
        "unprotect": "Owah rereksan",
-       "unprotectthispage": "Owah rereksan kaca iki",
        "newpage": "Kaca anyar",
-       "talkpage": "Rembug kaca iki",
        "talkpagelinktext": "rembugan",
        "specialpage": "Kaca mirunggan",
        "personaltools": "Piranti priangga",
-       "articlepage": "Deleng kaca isi",
        "talk": "Parembugan",
        "views": "Praèn",
        "toolbox": "Piranti",
        "tool-link-userrights": "Owahi golongan {{GENDER:$1|panganggo}}",
        "tool-link-userrights-readonly": "Deleng golongan {{GENDER:$1|panganggo}}",
        "tool-link-emailuser": "Kirimi {{GENDER:$1|panganggo}} iki layang-é",
-       "userpage": "Deleng kaca panganggo",
-       "projectpage": "Deleng kaca proyèk",
        "imagepage": "Deleng kaca barkas",
        "mediawikipage": "Deleng kaca layang",
        "templatepage": "Deleng kaca cithakan",
        "confirmable-confirm": "{{GENDER:$1|Panjenengan}} yakin?",
        "confirmable-yes": "Iya",
        "confirmable-no": "Ora",
-       "thisisdeleted": "Ndeleng utawa mbalèkaké $1?",
+       "thisisdeleted": "Deleng utawa pulihaké $1?",
        "viewdeleted": "Deleng $1?",
        "restorelink": "$1 {{PLURAL:$1|besutan}} sing wis dibusak",
        "feedlinks": "Asupan:",
        "nosuchusershort": "Ora ana panganggo mawa asma \"$1\". Coba dipriksa manèh pasang aksarané (éjaané).",
        "nouserspecified": "Panjenengan kudu milih jeneng panganggo.",
        "login-userblocked": "Panganggo iki pinalangan. Ora kena mbelu.",
-       "wrongpassword": "Tembung sandhi sing dipilih salah. Mangga coba manèh.",
+       "wrongpassword": "Tembung wadi sing diisèkaké salah.\nMangga jajalen manèh.",
        "wrongpasswordempty": "Panjenengan ora milih tembung sandhi. Mangga dicoba manèh.",
        "passwordtooshort": "Tembung sesinglon paling sethithik cacahé {{PLURAL:$1|1 aksara|$1 aksara}}.",
        "passwordtoolong": "Tembung wadi ora kena munjuli {{PLURAL:$1|1 pralambang|$1 pralambang}}.",
        "editingcomment": "Mbesut $1 (pérangan anyar)",
        "editconflict": "Cengkah besutan: $1",
        "explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"$1\".",
-       "yourtext": "Tulisan panjenengan",
+       "yourtext": "Tèksé panjenengan",
        "storedversion": "Owahan kasimpen",
        "nonunicodebrowser": "'''PÈNGET: Panjlajah wèb panjenengan ora ndhukung Unicode, mangga gantènana panjlajah wèb panjenengan sadurungé nyunting artikel.'''",
        "editingold": "'''PÈNGET:''' Panjenengan nyunting revisi lawas sawijining kaca. Yèn versi iki panjenengan simpen, mengko pangowahan-pangowahan sing wis digawé wiwit revisi iki bakal ilang.",
-       "yourdiff": "Prabédan",
+       "yourdiff": "Béda",
        "copyrightwarning": "Tulung dipun-gatèkaké menawa kabèh sumbangsih utawa kontribusi kanggo {{SITENAME}} iku dianggep wis diluncuraké miturut $2 GNU (mangga priksanen $1 kanggo ditèlé).\nMenawa panjenengan ora kersa menawa tulisan panjenengan bakal disunting karo disebar, aja didokok ing kéné.<br />\nPanjenengan uga janji menawa apa-apa sing katulis ing kéné, iku karyané panjenengan dhéwé, utawa disalin saka sumber bébas. '''AJA NDOKOK KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''",
        "copyrightwarning2": "Mangga digatèkaké yèn kabèh kontribusi marang  {{SITENAME}} bisa disunting, diowahi, utawa dibusak déning penyumbang liyané. Yèn panjenengan ora kersa yèn tulisan panjenengan bisa disunting wong liya, aja ngirim artikel panjenengan ing kéné.<br />Panjenengan uga janji yèn tulisan panjenengan iku kasil karya panjenengan dhéwé, utawa disalin saka sumber umum utawa sumber bébas liyané (mangga delengen $1 kanggo informasi sabanjuré). '''AJA NGIRIM KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''",
        "longpageerror": "'''Kasalahan: Tèks sing Sampéyan lebokaké dawané {{PLURAL:$1|sak kilobita|$1 kilobita}}, luwih dawa saka maksimal {{PLURAL:$2|sak kilobita|$2 kilobita}}.'''\nKuwi ora bisa disimpen.",
        "searchdisabled": "Sawetara wektu iki panjenengan ora bisa nggolèk mawa fungsi golèk {{SITENAME}}. Kanggo saiki mangga panjenengan bisa golèk nganggo Google. Nanging isi indèks Google kanggo {{SITENAME}} bisa waé lawas lan durung dianyari.",
        "search-error": "Ana masalah nalika nggoleki: $1",
        "search-warning": "Ana pepélik nalika nggolèk: $1",
-       "preferences": "Pilihan",
-       "mypreferences": "Pilihan",
+       "preferences": "Pilalan",
+       "mypreferences": "Pilalan",
        "prefs-edits": "Gunggung besutan:",
        "prefsnologintext2": "Mangga mlebua log saperlu ngowahi pilalané panjenengan.",
        "prefs-skin": "Ules",
        "grouppage-sysop": "{{ns:project}}:Pangurus",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
        "grouppage-suppress": "{{ns:project}}:Oversight",
-       "right-read": "Maca kaca-kaca",
+       "right-read": "Waca kaca",
        "right-edit": "Besut kaca",
        "right-createpage": "Gawé kaca (sing dudu kaca parembugan)",
        "right-createtalk": "Gawé kaca parembugan",
        "right-nominornewtalk": "Suntingan sithik (''minor'') ora ngwetokaké prompt pesen anyar",
        "right-apihighlimits": "Nganggo wates sing luwih dhuwur ing kwéri API",
        "right-writeapi": "Nganggo API tulis",
-       "right-delete": "Busak kaca-kaca",
+       "right-delete": "Busak kaca",
        "right-bigdelete": "Busak kaca-kaca mawa sajarah panyuntingan sing gedhé",
        "right-deletelogentry": "Busak lan wurung busak èntri log tartamtu",
        "right-deleterevision": "Busak lan wurung busak owahan tinamtuné kaca",
        "right-undelete": "Wurung busak kaca",
        "right-suppressrevision": "Deleng, dhelikaké, lan wurung dhelikaké owahan tinamtu kaca-kacané panganggo sembarang",
        "right-viewsuppressed": "Deleng owahan sing didhelikaké saka panganggo sembarang",
-       "right-suppressionlog": "Ndeleng log-log pribadi",
+       "right-suppressionlog": "Deleng log priangga",
        "right-block": "Blokir panganggo-panganggo liya saka panyuntingan",
        "right-blockemail": "Blokir sawijining panganggo saka ngirim e-mail",
        "right-hideuser": "Blokir jeneng panganggo, lan delikna saka umum",
        "right-autopatrol": "Gawé supaya suntingan-suntingan ditandhani minangka wis dipatroli",
        "right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar",
        "right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi",
-       "right-mergehistory": "Gabungna sajarah kaca-kaca",
+       "right-mergehistory": "Gabung sujarah kaca",
        "right-userrights": "Besut kabèh hak panganggo",
        "right-userrights-interwiki": "Besut hak-haking panganggo asal wiki jaba",
        "right-siteadmin": "Kunci lan buka kunci basis data",
        "filehist-dimensions": "Alang ujur",
        "filehist-filesize": "Gedhené berkas",
        "filehist-comment": "Tanggapan",
-       "imagelinks": "Panganggoning barkas",
+       "imagelinks": "Panggunané barkas",
        "linkstoimage": "{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki nggayut barkas iki:",
        "linkstoimage-more": "Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.\nDhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1 kaca kanthi pranala langsung}} menyang berkas iki.\n[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.",
        "nolinkstoimage": "Ora ana kaca sing nggayut menyang barkas iki.",
        "filedelete-otherreason": "Alesan tambahan/liya:",
        "filedelete-reason-otherlist": "Alesan liya",
        "filedelete-reason-dropdown": "*Alesan pambusakan\n** Nglanggar hak cipta\n** Berkas duplikat",
-       "filedelete-edit-reasonlist": "Busak jalaraning pambusak",
+       "filedelete-edit-reasonlist": "Besut alesané mbusak",
        "filedelete-maintenance": "Pambusakan lan pambalikan berkas kanggo sawetara dipatèni salawas ana pangruwatan.",
        "filedelete-maintenance-title": "Ora bisa mbusak berkas",
        "mimesearch": "Panggolèkan MIME",
        "statistics-header-edits": "Pétungan besutan",
        "statistics-header-users": "Statistik panganggo",
        "statistics-header-hooks": "Statistik liya",
-       "statistics-articles": "Kaca-kaca isi",
+       "statistics-articles": "Kaca isi",
        "statistics-pages": "Gunggung kaca",
        "statistics-pages-desc": "Kabèh kaca ing wiki iki, kalebu kaca parembugan, alihan, lsp.",
        "statistics-files": "Berkas sing diunggahaké",
        "statistics-users": "[[Special:ListUsers|Panganggo]] kadhaftar",
        "statistics-users-active": "Para panganggo aktif",
        "statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan",
-       "pageswithprop": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-legend": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo deduwèkaning kaca tinamtu.",
+       "pageswithprop": "Kaca mawa properti kaca",
+       "pageswithprop-legend": "Kaca mawa properti kaca",
+       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo properti kaca mirunggan.",
        "pageswithprop-prop": "Arané ubarampé:",
        "pageswithprop-submit": "Nuju",
        "pageswithprop-prophidden-long": "nilai properti teks dawa didhelikake ($1 kilobita)",
        "allpages": "Kabèh kaca",
        "nextpage": "Kaca sabanjuré ($1)",
        "prevpage": "Kaca sadurungé ($1)",
-       "allpagesfrom": "Kaca-kaca kawiwitan kanthi:",
+       "allpagesfrom": "Pitontonaké kaca sing diwiwiti:",
        "allpagesto": "Tampilaké kaca dipungkasi ing:",
        "allarticles": "Kabèh kaca",
        "allinnamespace": "Kabèh kaca (mandala aran $1)",
        "categories-submit": "Tuduhaké",
        "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].",
        "categoriesfrom": "Tuduhaké kategori-kategori sing diwiwiti:",
-       "deletedcontributions": "Sumbangan panganggo sing dibusak",
-       "deletedcontributions-title": "Sumbanganing panganggo sing dibusak",
+       "deletedcontributions": "Sumbangané panganggo sing dibusak",
+       "deletedcontributions-title": "Sumbangané panganggo sing dibusak",
        "sp-deletedcontributions-contribs": "sumbangan",
        "linksearch": "Golèkan pranala njaba",
        "linksearch-pat": "Pola panggolèkan:",
        "wlheader-enotif": "Wara-wara layang-èl diurubaké.",
        "wlheader-showupdated": "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
        "wlnote": "Ngisor iki {{PLURAL:$1|owahan pungkasan|'''$1''' owahan pungkasan}} {{PLURAL:$2|jam|'''$2''' jam}} kapungkur, per $3, $4.",
-       "wlshowlast": "Tuduhna $1 jam $2 dina  pungkasan",
+       "wlshowlast": "Tuduhaké $1 jam $2 dina pungkasan",
        "watchlist-hide": "Dhelikaké",
        "watchlist-submit": "Tuduhaké",
        "wlshowtime": "Kala mangsa kanggo dituduhaké:",
        "protect-otherreason": "Alesan liya/tambahan:",
        "protect-otherreason-op": "Alesan liya",
        "protect-dropdown": "*Alesan umum pangreksa\n** Vandalisme makaping-kaping\n** Spam makaping-kaping\n** Perang besutan ora prodhuktif\n** Kaca sing dhuwur trafiké",
-       "protect-edit-reasonlist": "Mbesut jalaraning pangreksa",
+       "protect-edit-reasonlist": "Besut alesané ngreksa",
        "protect-expiry-options": "1 jam:1 hour,1 dina:1 day,1 minggu:1 week,2 minggu:2 weeks,1 wulan:1 month,3 wulan:3 months,6 wulan:6 months,1 taun:1 year,tanpa wates:infinite",
        "restriction-type": "Palilah:",
        "restriction-level": "Tingkatan pambatesan:",
        "namespace_association": "Mandala aran magepokan",
        "tooltip-namespace_association": "Centhang kothak iki kanggo nglebokaké uga bilik jeneng gumenan utawa subyèk sing kakait karo bilik jeneng kapilih",
        "blanknamespace": "(Pokok)",
-       "contributions": "Sumbangan {{GENDER:$1|panganggo}}",
-       "contributions-title": "Sumbangan panganggo $1",
+       "contributions": "Sumbangané {{GENDER:$1|panganggo}}",
+       "contributions-title": "Sumbangané panganggo $1",
        "mycontris": "Sumbangan",
        "anoncontribs": "Sumbangan",
        "contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)",
        "year": "Wiwit taun (lan sadurungé):",
        "sp-contributions-newbies": "Tuduhaké mung sumbangané akun-akun anyar waé",
        "sp-contributions-newbies-sub": "Kanggo panganggo anyar",
-       "sp-contributions-newbies-title": "Sumbanganing para panganggo anyar",
-       "sp-contributions-blocklog": "Log blokir",
-       "sp-contributions-deleted": "sumbanganing panganggo sing dibusak",
+       "sp-contributions-newbies-title": "Sumbangané panganggo anyar",
+       "sp-contributions-blocklog": "log blokir",
+       "sp-contributions-deleted": "sumbangané {{GENDER:$1|panganggo}} sing dibusak",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "rembug",
        "unblock": "Uculaké blokirané panganggo",
        "blockip": "Palang {{GENDER:$1|panganggo}}",
        "blockip-legend": "Blokir panganggo",
-       "blockiptext": "Enggonen formulir ing ngisor iki kanggo mblokir sawijining alamat IP utawa panganggo supaya ora bisa nyunting kaca.\nPrekara iki perlu dilakoni kanggo menggak vandalisme, lan miturut [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].\nLebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis tau dirusak).",
+       "blockiptext": "Enggonen formulir ing ngisor iki saperlu mblokir aksès nulis lumantar alamat IP utawa panganggo mirunggan.\nIki kudu diayahi kanggo ngéndhani vandhalisme, lan minangkani [[{{MediaWiki:Policy-url}}|pranatan]].\nIsinen alesan sing mirunggan ing ngisor iki (contoné, nyitir kaca mirunggan sing dirusak).\nPanjenengan bisa mblokir saprangkat alamat IP lumantar sintaksis [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; kèhé prangkat sing diidinaké ya iku /$1 kanggo IPv4 lan /$2 kanggo IPv6.",
        "ipaddressorusername": "Alamat IP utawa jeneng panganggo",
        "ipbexpiry": "Kadaluwarsa",
        "ipbreason": "Alesan:",
        "ipbreason-dropdown": "*Alesan umum mblokir\n** Mènèhi informasi palsu\n** Mbusak isi kaca\n** Spam pranala menyang situs njaba\n** Nglebokaké tulisan ngawur ing kaca\n** Tumindak nglècèhaké\n** Ngujar-ujari sawenèh akun\n** Jeneng panganggo ora patut",
-       "ipb-hardblock": "Alangi panganggo sing wis mlebu log nyunting saka alamat IP iki",
+       "ipb-hardblock": "Wurungaké panganggo sing wis mlebu log mbesut saka alamat IP iki",
        "ipbcreateaccount": "Penggak panggawéné akun",
        "ipbemailban": "Penggak panganggo saka ngirim layang-èl",
        "ipbenableautoblock": "Blokir alamat IP pungkasan sing dienggo déning pengguna iki sacara otomatis, lan kabèh alamat sabanjuré sing dicoba arep dienggo nyunting.",
-       "ipbsubmit": "Kirimna",
+       "ipbsubmit": "Blokir panganggo iki",
        "ipbother": "Wektu liya",
        "ipboptions": "2 jam:2 hours,1 dina:1 day,3 dina:3 days,1 minggu:1 week,2 minggu:2 weeks,1 wulan:1 month,3 wulan:3 months,6 wulan:6 months,1 taun:1 year,tanpa wates:infinite",
        "ipbhidename": "Delikna jeneng panganggo saka suntingan lan pratélan",
-       "ipbwatchuser": "Wasi kaca panganggoning lan kaca gegunemaning panganggo iki",
-       "ipb-disableusertalk": "Alangi panganggo iki nyunting kaca gunemané nalika diblokir",
+       "ipbwatchuser": "Wasi kaca panganggo lan kaca parembugané panganggo iki",
+       "ipb-disableusertalk": "Wurungaké panganggo iki mbesut kaca parembugané dhéwé nalika diblokir",
        "ipb-change-block": "Blokir manèh panganggo kanthi sèting iki",
-       "ipb-confirm": "Pesthèkaké blokir",
+       "ipb-confirm": "Konfirmasi blokiran",
        "badipaddress": "Alamat IP klèntu",
-       "blockipsuccesssub": "Pemblokiran suksès",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDelok [[Special:BlockList|daptar blokir]] kanggo ninjo blokiran.",
+       "blockipsuccesssub": "Suksès mblokir",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDeleng [[Special:BlockList|pratélan blokir]] saperlu mriksa blokiran.",
        "ipb-blockingself": "Panjenengan arep mblokir panjenengan dhéwé! Panjenengan yakin arep nglakoni kuwi?",
        "ipb-confirmhideuser": "Sampéyan arep mblokir panganggo mawa piranti \"dhelikaké panganggo\" isih murub. Iki bakal nyegah jeneng panganggo ana ing kabèh daptar lan èntri log. Sampéyan yakin arep nglakoni kuwi?",
-       "ipb-edit-dropdown": "Besut jalaraning pamalang",
-       "ipb-unblock-addr": "Ilangna blokir $1",
-       "ipb-unblock": "Ilangna blokir sawijining panganggo utawa alamat IP",
-       "ipb-blocklist": "Ndeleng blokir sing lagi ditrapaké",
+       "ipb-edit-dropdown": "Besut alesané mblokir",
+       "ipb-unblock-addr": "Copot blokiran tumrap $1",
+       "ipb-unblock": "Copot blokiran tumrap jeneng panganggo utawa alamat IP",
+       "ipb-blocklist": "Deleng blokiran sing ana",
        "ipb-blocklist-contribs": "Kontribusi kanggo $1",
        "ipb-blocklist-duration-left": "Kari $1",
-       "unblockip": "Jabel blokir marang alamat IP utawa panganggo",
+       "unblockip": "Copot blokiran panganggo",
        "unblockiptext": "Nggonen formulir ing ngisor iki kanggo mbalèkaké aksès nulis sawijining alamt IP utawa panganggo sing sadurungé diblokir.",
-       "ipusubmit": "Ilangna blokir iki",
+       "ipusubmit": "Copot blokiran iki",
        "unblocked": "Blokir marang [[User:$1|$1]] wis dijabel",
        "unblocked-range": "$1 ora diblokir manèh",
        "unblocked-id": "Blokir $1 wis dijabel",
        "ipblocklist-empty": "Pratélan blokir kosong.",
        "ipblocklist-no-results": "alamat IP utawa panganggo sing disuwun ora diblokir.",
        "blocklink": "palang",
-       "unblocklink": "jabel blokir",
-       "change-blocklink": "owahi blokir",
+       "unblocklink": "copot blokiran",
+       "change-blocklink": "owahi blokiran",
        "contribslink": "sumbangan",
        "emaillink": "kirim layang-èl",
        "autoblocker": "Panjenengan otomatis dipun-blok amargi nganggé alamat protokol internet (IP) ingkang sami kaliyan \"[[User:$1|$1]]\". Alesanipun $1 dipun blok inggih punika \"'''$2'''\"",
        "importunknownsource": "Sumber impor ora ditepungi",
        "importcantopen": "Berkas impor ora bisa dibukak",
        "importbadinterwiki": "Pranala interwiki rusak",
-       "importsuccess": "Impor suksès!",
+       "importsuccess": "Ngimpor rampung!",
        "importnosources": "Ora ana sumber impor transwiki sing wis digawé lan pangunggahan sajarah sacara langsung wis dinon-aktifaké.",
        "importnofile": "Ora ana berkas sumber impor sing wis diunggahaké.",
        "importuploaderrorsize": "Pangunggahan berkas impor gagal. Ukuran berkas ngluwihi ukuran sing diidinaké.",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} diimpor saka $2",
        "javascripttest": "Panjajalan JavaScript",
        "javascripttest-pagetext-unknownaction": "Tumindak ora dingertèni: $1",
-       "javascripttest-qunit-intro": "Delok [dhokumèntasi panjajalan $1] nèng mediawiki.org.",
-       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoning sampéyan}}",
+       "javascripttest-qunit-intro": "Deleng [$1 dhokumèntasi uji-coba] ing mediawiki.org.",
+       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoné panjenengan}}",
        "tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan",
        "tooltip-pt-mytalk": "Kaca gegunemaning {{GENDER:|sampéyan}}",
        "tooltip-pt-anontalk": "Parembug ing besutan-besutan saka alamat IP iki",
        "tooltip-pt-preferences": "Pilih-pilihaning {{GENDER:|sampéyan}}",
        "tooltip-pt-watchlist": "Pratélaning kaca sing sampéyan awasi owah-owahané",
-       "tooltip-pt-mycontris": "Pratélaning sumbanganing {{GENDER:|sampéyan}}",
+       "tooltip-pt-mycontris": "Pratélané sumbangané {{GENDER:|panjenengan}}",
        "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki",
        "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanadyan ora kudu",
        "tooltip-pt-login-private": "Panjenengan kudu mlebu log supaya bisa nganggo wiki iki",
        "tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki",
        "tooltip-feed-rss": "''RSS feed'' kanggo kaca iki",
        "tooltip-feed-atom": "''Atom feed'' kanggo kaca iki",
-       "tooltip-t-contributions": "Pratélaning sumbangan {{GENDER:$1|panganggo iki}}",
+       "tooltip-t-contributions": "Pratélané sumbangané {{GENDER:$1|panganggo iki}}",
        "tooltip-t-emailuser": "Kirimi layang-èl nyang {{GENDER:$1|panganggo iki}}",
        "tooltip-t-info": "Katerangan liyané ngenani kaca iki",
        "tooltip-t-upload": "Unggah barkas",
        "tooltip-t-permalink": "Pranala permanèn saka owahan iki",
        "tooltip-ca-nstab-main": "Deleng kaca isi",
        "tooltip-ca-nstab-user": "Deleng kaca panganggo",
-       "tooltip-ca-nstab-media": "Ndeleng kaca média",
+       "tooltip-ca-nstab-media": "Deleng kaca médhia",
        "tooltip-ca-nstab-special": "Iki kaca mirunggan lan ora bisa dibesut",
        "tooltip-ca-nstab-project": "Deleng kaca proyèk",
        "tooltip-ca-nstab-image": "Deleng kaca barkas",
-       "tooltip-ca-nstab-mediawiki": "Ndeleng pesenan sistém",
+       "tooltip-ca-nstab-mediawiki": "Deleng layang sistem",
        "tooltip-ca-nstab-template": "Deleng cithakan",
        "tooltip-ca-nstab-help": "Mirsani kaca pitulung",
        "tooltip-ca-nstab-category": "Deleng kaca kategori",
        "version": "Versi",
        "version-extensions": "Èkstènsi sing wis diinstalasi",
        "version-skins": "Ules sing dipasang",
-       "version-specialpages": "Kaca astaméwa (kaca kusus)",
+       "version-specialpages": "Kaca mirunggan",
        "version-parserhooks": "Canthèlan parser",
        "version-variables": "Variabel",
        "version-antispam": "Pambendhung spam",
        "specialpages-note-top": "Katrangan",
        "specialpages-note": "* Kaca mirunggan sedhengan.\n* <span class=\"mw-specialpagerestricted\">Kaca mirunggan winatesan.</span>",
        "specialpages-group-maintenance": "Lapuran pangopènan",
-       "specialpages-group-other": "Kaca-kaca astaméwa liyané",
+       "specialpages-group-other": "Kaca mirunggan liyané",
        "specialpages-group-login": "Mlebu log / nggawé akun",
        "specialpages-group-changes": "Owah-owahan pungkasan lan log",
        "specialpages-group-media": "Lapuran média lan pangunggahan",
        "revdelete-content-unhid": "kontèn dituduhaké",
        "revdelete-summary-unhid": "tingkesaning besutan ora kadhelikaké",
        "revdelete-uname-unhid": "jeneng panganggo dituduhaké",
-       "revdelete-restricted": "rèstriksi ditrapaké marang para opsis",
+       "revdelete-restricted": "watesan sing dicakaké marang pangurus",
        "revdelete-unrestricted": "rèstriksi marang para opsis dijabel",
        "logentry-block-block": "$1 {{GENDER:$2|mblokir}} {{GENDER:$4|$3}} kanthi wektu kadaluwarsa $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|nyopot blokirané}} {{GENDER:$4|$3}}",
index 41b7162..c586fa1 100644 (file)
        "anontalk": "განხილვა",
        "navigation": "ნავიგაცია",
        "and": "&#32;და",
-       "qbfind": "მოძებნე",
-       "qbbrowse": "გადახედე",
-       "qbedit": "რედაქტირება",
-       "qbpageoptions": "ეს გვერდი",
-       "qbmyoptions": "ჩემი გვერდები",
        "faq": "ხშირი შეკითხვები",
-       "faqpage": "Project:ხშირი შეკითხვები",
        "actions": "მოქმედებები",
        "namespaces": "სახელთა სივრცე",
        "variants": "ვარიანტები",
        "edit-local": "ლოკალური აღწერის რედაქტირება",
        "create": "შექმნა",
        "create-local": "ლოკალური აღწერის დამატება",
-       "editthispage": "გვერდის რედაქტირება",
-       "create-this-page": "ამ გვერდის შექმნა",
        "delete": "წაშლა",
-       "deletethispage": "გვერდის წაშლა",
-       "undeletethispage": "ამ გვერდის აღდგენა",
        "undelete_short": "გააუქმე წაშლა {{PLURAL:$1|ერთი რედაქტირება|$1 რედაქტირება}}",
        "viewdeleted_short": "{{PLURAL:$1|წაშლილი რედაქტირების|$1 წაშლილი რედაქტირებების}} ხილვა",
        "protect": "დაბლოკე",
        "protect_change": "შეცვლა",
-       "protectthispage": "დაბლოკე ეს გვერდი",
        "unprotect": "დაცვის შეცვლა",
-       "unprotectthispage": "შეცვალე ამ გვერდის დაცვის დონე",
        "newpage": "ახალი გვერდი",
-       "talkpage": "მოცემული გვერდის განხილვა",
        "talkpagelinktext": "განხილვა",
        "specialpage": "სპეციალური გვერდი",
        "personaltools": "პირადი ხელსაწყოები",
-       "articlepage": "სტატიის ნახვა",
        "talk": "განხილვა",
        "views": "გადახედვა",
        "toolbox": "ხელსაწყოები",
        "tool-link-userrights": "{{GENDER:$1|მომხმარებლის}} ჯგუფების შეცვლა",
        "tool-link-userrights-readonly": "{{GENDER:$1|მომხმარებლის}} ჯგუფების ხილვა",
        "tool-link-emailuser": "{{GENDER:$1|მომხმარებლისთვის}} ი-მეილის მიწერა",
-       "userpage": "გადახედე მომხმარებლის გვერდს",
-       "projectpage": "დაათვალიერე პროექტის გვერდი",
        "imagepage": "ფაილის გვერდის ნახვა",
        "mediawikipage": "გადახედე შეტყობინების გვერდს",
        "templatepage": "გადახედე თარგის გვერდს",
index e89be12..f773849 100644 (file)
        "anontalk": "토론",
        "navigation": "둘러보기",
        "and": ",",
-       "qbfind": "찾기",
-       "qbbrowse": "찾아보기",
-       "qbedit": "편집",
-       "qbpageoptions": "문서 기능",
-       "qbmyoptions": "내 사용자 문서",
        "faq": "자주 묻는 질문",
-       "faqpage": "Project:FAQ",
        "actions": "행위",
        "namespaces": "이름공간",
        "variants": "변수",
        "edit-local": "로컬 설명 편집",
        "create": "만들기",
        "create-local": "로컬 설명 추가",
-       "editthispage": "이 문서 편집하기",
-       "create-this-page": "이 문서 만들기",
        "delete": "삭제",
-       "deletethispage": "이 문서 삭제하기",
-       "undeletethispage": "이 문서를 되살리기",
        "undelete_short": "{{PLURAL:$1|편집 한 개|편집 $1개}} 되살리기",
        "viewdeleted_short": "{{PLURAL:$1|삭제된 편집 한 개|삭제된 편집 $1개}} 보기",
        "protect": "보호",
        "protect_change": "바꾸기",
-       "protectthispage": "이 문서 보호하기",
        "unprotect": "보호 설정 바꾸기",
-       "unprotectthispage": "이 문서의 보호 설정을 바꾸기",
        "newpage": "새 문서",
-       "talkpage": "토론 문서",
        "talkpagelinktext": "토론",
        "specialpage": "특수 문서",
        "personaltools": "개인 도구",
-       "articlepage": "문서 보기",
        "talk": "토론",
        "views": "보기",
        "toolbox": "도구",
        "tool-link-userrights": "{{GENDER:$1|사용자}} 그룹 변경",
        "tool-link-userrights-readonly": "{{GENDER:$1|사용자}} 그룹을 보기",
        "tool-link-emailuser": "이 {{GENDER:$1|사용자}}에게 이메일 보내기",
-       "userpage": "사용자 문서 보기",
-       "projectpage": "프로젝트 문서 보기",
        "imagepage": "파일 문서 보기",
        "mediawikipage": "메시지 문서 보기",
        "templatepage": "틀 문서 보기",
        "gotointerwiki-invalid": "지정된 제목이 올바르지 않습니다.",
        "gotointerwiki-external": "다른 웹사이트 [[$2]]을(를) 방문하기 위해, {{SITENAME}}을(를) 떠나려고 합니다.\n\n'''[$1 $1(으)로 계속 진행]'''",
        "undelete-cantedit": "이 문서를 편집할 권한이 없으므로 이 문서를 복구할 수 없습니다.",
-       "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다."
+       "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다.",
+       "pagedata-title": "문서 데이터",
+       "pagedata-text": "이 문서는 문서에 대한 데이터 인터페이스를 제공합니다. 하위 문서 문법을 사용하여 URL에 문서 제목을 지정해 주십시오.\n* 클라이언트의 Accept 헤더에 기반하여 내용이 절충됩니다. 즉, 문서 데이터는 클라이언트가 선호하는 형식으로 제공됩니다.",
+       "pagedata-not-acceptable": "일치하는 형식을 찾을 수 없습니다. 지원하는 MIME 형식: $1",
+       "pagedata-bad-title": "유효하지 않은 제목: $1."
 }
index 44653cd..d3c0888 100644 (file)
        "anontalk": "Diskussioun",
        "navigation": "Navigatioun",
        "and": "&#32;a(n)",
-       "qbfind": "Fannen",
-       "qbbrowse": "Duerchsichen",
-       "qbedit": "Änneren",
-       "qbpageoptions": "Säitenoptiounen",
-       "qbmyoptions": "Meng Säiten",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aktiounen",
        "namespaces": "Nummraim",
        "variants": "Varianten",
        "edit-local": "Lokal Beschreiwung änneren",
        "create": "Uleeën",
        "create-local": "Lokal Beschreiwung derbäisetzen",
-       "editthispage": "Dës Säit änneren",
-       "create-this-page": "Dës Säit uleeën",
        "delete": "Läschen",
-       "deletethispage": "Dës Säit läschen",
-       "undeletethispage": "Dës Säit restauréieren",
        "undelete_short": "$1 {{PLURAL:$1|Versioun|Versioune}} restauréieren",
        "viewdeleted_short": "{{PLURAL:$1|Eng geläschte Versioun|$1 geläscht Versioune}} weisen",
        "protect": "Spären",
        "protect_change": "änneren",
-       "protectthispage": "Dës Säit schützen",
        "unprotect": "Spär änneren",
-       "unprotectthispage": "D'Spär vun dëser Säit änneren",
        "newpage": "Nei Säit",
-       "talkpage": "Diskussioun",
        "talkpagelinktext": "Diskussioun",
        "specialpage": "Spezialsäit",
        "personaltools": "Perséinlech Tools",
-       "articlepage": "Säit",
        "talk": "Diskussioun",
        "views": "Affichagen",
        "toolbox": "Geschirkëscht",
        "tool-link-userrights": "{{GENDER:$1|Benotzer}}gruppen änneren",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benotzer}}gruppe weisen",
        "tool-link-emailuser": "{{GENDER:$1|Dëser Benotzerin|Dësem Benotzer}} eng Mail schécken",
-       "userpage": "Benotzersäit",
-       "projectpage": "Meta-Text",
        "imagepage": "Billersäit kucken",
        "mediawikipage": "Säit mat de Message weisen",
        "templatepage": "Schabloune(säit) weisen",
        "rcfilters-filter-newpages-label": "Ugeluechte Säiten",
        "rcfilters-filter-categorization-label": "Ännerunge vun de Kategorien:",
        "rcfilters-filter-logactions-label": "Protokolléiert Aktiounen",
+       "rcfilters-hideminor-conflicts-typeofchange": "Verschidden Type vu Ännerunge kënnen net als \"kleng\" markéiert ginn, dofir ass dëse Filter a Konflikt mat dësem Typ vun Ännerungsfilteren: $1",
        "rcfilters-filtergroup-lastRevision": "Lescht Versioun",
        "rcfilters-filter-lastrevision-label": "Lescht Versioun",
        "rcfilters-filter-lastrevision-description": "Déi lescht Ännerung op enger Säit",
index ab6ecae..f829501 100644 (file)
        "anontalk": "Discuscion pe questo addresso IP",
        "navigation": "Navegaçión",
        "and": "&#32;e",
-       "qbfind": "Attrêuva",
-       "qbbrowse": "Navvega",
-       "qbedit": "Cangia",
-       "qbpageoptions": "Opsioîn de 'sta paggina",
-       "qbmyoptions": "E mæ paggine",
        "faq": "Domande frequenti",
-       "faqpage": "Project:Domande frequente",
        "actions": "Açioìn",
        "namespaces": "Namespaces",
        "variants": "Diferense",
        "edit-local": "Modifica descrission locale",
        "create": "Crea",
        "create-local": "Azonzi descrission locale",
-       "editthispage": "Modificâ 'sta pagina",
-       "create-this-page": "Crea 'sta paggina",
        "delete": "Scancella",
-       "deletethispage": "Scassa 'sta paggina",
-       "undeletethispage": "Recuppera sta paggina",
        "undelete_short": "Recuppera {{PLURAL:$1|una revixon|$1 revixoin}}",
        "viewdeleted_short": "{{PLURAL:$1|una modiffica cançelâ|$1 modiffiche cançelæ}}",
        "protect": "Protezi",
        "protect_change": "cangia",
-       "protectthispage": "Proteze 'sta paggina.",
        "unprotect": "Càngia proteçión",
-       "unprotectthispage": "Càngia a proteçión de sta paggina",
        "newpage": "Nêuva pàgina",
-       "talkpage": "Paggina de discuscion",
        "talkpagelinktext": "Ciæti",
        "specialpage": "Pagina speçiâ",
        "personaltools": "Strumenti personâli",
-       "articlepage": "Veddi a voxe",
        "talk": "Discuscion",
        "views": "Vìxite",
        "toolbox": "Arneixi",
        "tool-link-userrights": "Modiffica groppi {{GENDER:$1|utente}}",
        "tool-link-userrights-readonly": "Vixualizza groppi {{GENDER:$1|utente}}",
        "tool-link-emailuser": "Manda un'e-mail a questo {{GENDER:$1|utente}}",
-       "userpage": "Veddi a paggina utente",
-       "projectpage": "Amia a paggina de serviççio",
        "imagepage": "Vizualizza a paggina do file",
        "mediawikipage": "Vizualizza o messaggio",
        "templatepage": "Vizualizza o modello",
index 4cf917e..bb0588a 100644 (file)
        "anontalk": "Aptarimas",
        "navigation": "Naršymas",
        "and": "&#32;ir",
-       "qbfind": "Paieška",
-       "qbbrowse": "Naršymas",
-       "qbedit": "Taisyti",
-       "qbpageoptions": "Šis puslapis",
-       "qbmyoptions": "Mano puslapiai",
        "faq": "DUK",
-       "faqpage": "Project:DUK",
        "actions": "Veiksmai",
        "namespaces": "Vardų sritys",
        "variants": "Variantai",
        "edit-local": "Redaguoti vietos aprašymą",
        "create": "Sukurti",
        "create-local": "Pridėti vietos aprašymą",
-       "editthispage": "Redaguoti šį puslapį",
-       "create-this-page": "Sukurti šį puslapį",
        "delete": "Trinti",
-       "deletethispage": "Ištrinti šį puslapį",
-       "undeletethispage": "Atkurti šį puslapį",
        "undelete_short": "Atkurti $1 {{PLURAL:$1:redagavimą|redagavimus|redagavimų}}",
        "viewdeleted_short": "Peržiūrėti $1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}",
        "protect": "Užrakinti",
        "protect_change": "keisti",
-       "protectthispage": "Rakinti šį puslapį",
        "unprotect": "Keisti apsaugą",
-       "unprotectthispage": "Keisti šio puslapio apsaugą",
        "newpage": "Naujas puslapis",
-       "talkpage": "Aptarti šį puslapį",
        "talkpagelinktext": "Aptarimas",
        "specialpage": "Specialusis puslapis",
        "personaltools": "Asmeniniai įrankiai",
-       "articlepage": "Rodyti turinio puslapį",
        "talk": "Aptarimas",
        "views": "Peržiūros",
        "toolbox": "Įrankiai",
        "tool-link-userrights": "Keisti {{GENDER:$1|naudotojo|naudotojos}} grupes",
        "tool-link-userrights-readonly": "Žiūrėti {{GENDER:$1|vartotojo|vartotojos}} grupes",
        "tool-link-emailuser": "Siųsti {{GENDER:$1|šiam naudotojui|šiai naudotojai}} el. laišką",
-       "userpage": "Rodyti naudotojo puslapį",
-       "projectpage": "Rodyti projekto puslapį",
        "imagepage": "Žiūrėti failo puslapį",
        "mediawikipage": "Rodyti pranešimo puslapį",
        "templatepage": "Rodyti šablono puslapį",
index 6e1fd5a..9ff946d 100644 (file)
        "anontalk": "Diskusijas",
        "navigation": "Navigācija",
        "and": "&#32;un",
-       "qbfind": "Meklēšana",
-       "qbbrowse": "Navigācija",
-       "qbedit": "Labošana",
-       "qbpageoptions": "Šī lapa",
-       "qbmyoptions": "Manas lapas",
        "faq": "BUJ",
-       "faqpage": "Project:BUJ",
        "actions": "Darbības",
        "namespaces": "Vārdtelpas",
        "variants": "Varianti",
        "edit-local": "Labot vietējo aprakstu",
        "create": "Izveidot",
        "create-local": "Pievienot vietējo aprakstu",
-       "editthispage": "Izmainīt šo lapu",
-       "create-this-page": "Izveidot šo lapu",
        "delete": "Dzēst",
-       "deletethispage": "Dzēst šo lapu",
-       "undeletethispage": "Atjaunot šo lapu",
        "undelete_short": "Atjaunot $1 {{PLURAL:$1|versijas|versiju|versijas}}",
        "viewdeleted_short": "Apskatīt {{PLURAL:$1|$1 dzēstus labojumus|$1 dzēstu labojumu|$1 dzēstus labojumus}}",
        "protect": "Aizsargāt",
        "protect_change": "izmainīt",
-       "protectthispage": "Aizsargāt šo lapu",
        "unprotect": "Mainīt aizsardzību",
-       "unprotectthispage": "Mainīt šīs lapas aizsardzību",
        "newpage": "Jauna lapa",
-       "talkpage": "Diskusija par šo lapu",
        "talkpagelinktext": "Diskusija",
        "specialpage": "Īpašā Lapa",
        "personaltools": "Dalībnieka rīki",
-       "articlepage": "Apskatīt rakstu",
        "talk": "Diskusija",
        "views": "Apskates",
        "toolbox": "Rīki",
        "tool-link-userrights": "Mainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "tool-link-userrights-readonly": "Apskatīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "tool-link-emailuser": "Nosūtīt e-pastu {{GENDER:$1|šim dalībniekam|šai dalībniecei}}",
-       "userpage": "Skatīt dalībnieka lapu",
-       "projectpage": "Skatīt projekta lapu",
        "imagepage": "Skatīt faila lapu",
        "mediawikipage": "Skatīt paziņojuma lapu",
        "templatepage": "Skatīt veidnes lapu",
index 5d79b9a..a0f331d 100644 (file)
        "anontalk": "議",
        "navigation": "導",
        "and": "與",
-       "qbfind": "尋",
-       "qbbrowse": "覽",
-       "qbedit": "纂",
-       "qbpageoptions": "此頁",
-       "qbmyoptions": "吾好",
        "faq": "頻答問",
-       "faqpage": "Project:頻答問",
        "actions": "動",
        "namespaces": "名集",
        "variants": "變字",
        "edit-local": "纂地言",
        "create": "立",
        "create-local": "增地言",
-       "editthispage": "纂",
-       "create-this-page": "立",
        "delete": "刪",
-       "deletethispage": "刪是頁",
-       "undeletethispage": "反刪此頁",
        "undelete_short": "還$1已刪",
        "viewdeleted_short": "察$1已刪",
        "protect": "緘",
        "protect_change": "易",
-       "protectthispage": "緘封",
        "unprotect": "啟",
-       "unprotectthispage": "啟函",
        "newpage": "新頁",
-       "talkpage": "參議此文",
        "talkpagelinktext": "議",
        "specialpage": "特查",
        "personaltools": "家私",
-       "articlepage": "閱內文",
        "talk": "議",
        "views": "覽",
        "toolbox": "多寶",
-       "userpage": "簿",
-       "projectpage": "計畫",
        "imagepage": "述",
        "mediawikipage": "觀訊",
        "templatepage": "鑄模",
index a57b00d..35a7e31 100644 (file)
        "anontalk": "Pejin-dresaka",
        "navigation": "Fikarohana",
        "and": "&#32;sy",
-       "qbfind": "Tadiavina",
-       "qbbrowse": "Tadiavina",
-       "qbedit": "Hanova",
-       "qbpageoptions": "Ity pejy ity",
-       "qbmyoptions": "Ny pejiko",
        "faq": "FMM",
-       "faqpage": "Project:FMM",
        "actions": "Tao",
        "namespaces": "Valam-pejy",
        "variants": "Ny ''skin'' Voasintona",
        "edit-local": "Hanova ny famisavisana eo an-toerana",
        "create": "Amboarina",
        "create-local": "Hanampy famisavisana eo an-toerana",
-       "editthispage": "Hanova ity pejy ity",
-       "create-this-page": "Forony ity pejy ity",
        "delete": "Hamafa",
-       "deletethispage": "Fafao ity pejy ity",
-       "undeletethispage": "Hamerina ity pejy ity",
        "undelete_short": "Famerenana fanovana {{PLURAL:$1|$1|$1}}",
        "viewdeleted_short": "Hijery fanovana voafafa {{PLURAL:$1|tokana|$1}}",
        "protect": "Hiaro",
        "protect_change": "ovaina",
-       "protectthispage": "Hiaro an'ity pejy ity",
        "unprotect": "Hanala ny fiarovana",
-       "unprotectthispage": "Hanala idy an'ity pejy ity",
        "newpage": "Pejy vaovao",
-       "talkpage": "Dinidinika momba ity pejy ity",
        "talkpagelinktext": "Dinika",
        "specialpage": "Pejy manokana",
        "personaltools": "Fitaovana manokana",
-       "articlepage": "Hijery ny votoatin'ny pejy",
        "talk": "dinika",
        "views": "Fijerena",
        "toolbox": "Fitaovana",
        "tool-link-userrights": "Hanova ny vondron'i {{GENDER:$1|}}mpikambana",
        "tool-link-userrights-readonly": "Hijery ny vondron'ny mpikambana{{GENDER:$1|}}",
        "tool-link-emailuser": "Handefa mailaka an'ity mpikambana ity{{GENDER:$1|}}",
-       "userpage": "Hijery ny pejy manokan'ny mpikambana",
-       "projectpage": "Pejy meta",
        "imagepage": "Jereo ny pejin'ny sary",
        "mediawikipage": "Hijery ny pejy misy io hafatra io",
        "templatepage": "Jereo ny pejin'ny endrika",
        "pageinfo-header-restrictions": "Fiarovana an'ilay pejy",
        "pageinfo-header-properties": "Tondron'ilay pejy",
        "pageinfo-display-title": "Lohateny aseho",
+       "pageinfo-default-sort": "Lakilem-pampirimana raha tsy misy",
        "pageinfo-length": "Halavam-pejy (oktety)",
        "pageinfo-article-id": "Laharam-pejy",
        "pageinfo-language": "Tenin'ny votoatiny",
        "pageinfo-authors": "Isa manontolon'ny mpandray anjara",
        "pageinfo-recent-edits": "Fanovana vao haingana (natao tanatin'ny $1)",
        "pageinfo-recent-authors": "Isa vao haingan'ny mpanoratra misongadina",
+       "pageinfo-magic-words": "Teny majika{{PLURAL:$1|}} ($1)",
        "pageinfo-hidden-categories": "Sokajy nafenina{{PLURAL:$1}} ($1)",
        "pageinfo-templates": "Endrika natsofoka{{PLURAL:$1}} ($1)",
        "pageinfo-transclusions": "Pejy natsofoka tanatin'i ($1){{PLURAL:}}",
        "watchlistedit-clear-legend": "Handio ny lisitra arahanao",
        "watchlistedit-clear-explain": "Ho esorina amin'ny lisitry ny pejy arahanao ny lohateny rehetra",
        "watchlistedit-clear-titles": "Lohateny:",
+       "watchlisttools-clear": "Handio ny lisitra arahanao",
        "watchlisttools-view": "pejy arahako maso",
        "watchlisttools-edit": "Jereo sy ovao ny lisitra ny pejy fanaraha-maso",
        "watchlisttools-raw": "Ovay ilay pejy arahako maso amizao",
        "mw-widgets-titleinput-description-new-page": "Tsy mbola misy ilay pejy",
        "mw-widgets-usersmultiselect-placeholder": "Hanampy be kokoa",
        "sessionmanager-tie": "Tsy afaka mampikambana karazan-kataka fampamantarana maromaro: $1.",
+       "randomrootpage": "Foto-pejy kisendra",
        "log-action-filter-all": "Manontolo",
        "log-action-filter-block-block": "Bolongana",
        "log-action-filter-protect-protect": "Fiarovana",
index ebffb37..a1a0c47 100644 (file)
        "anontalk": "Разговор",
        "navigation": "Прегледник",
        "and": "&#32;и",
-       "qbfind": "Најди",
-       "qbbrowse": "Прелистај",
-       "qbedit": "Уреди",
-       "qbpageoptions": "Оваа страница",
-       "qbmyoptions": "Мои страници",
        "faq": "ЧПП",
-       "faqpage": "Project:ЧПП",
        "actions": "Дејства",
        "namespaces": "Именски простори",
        "variants": "Варијанти",
        "edit-local": "Уреди месен опис",
        "create": "Создај",
        "create-local": "Додај месен опис",
-       "editthispage": "Уреди ја страницава",
-       "create-this-page": "Создај ја страницава",
        "delete": "Избриши",
-       "deletethispage": "Избриши ја страницава",
-       "undeletethispage": "обнови ја страницава",
        "undelete_short": "Врати {{PLURAL:$1|едно уредување|$1 уредувања}}",
        "viewdeleted_short": "Преглед на {{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}",
        "protect": "Заштити",
        "protect_change": "промена",
-       "protectthispage": "Заштити ја страницава",
        "unprotect": "Измени заштита",
-       "unprotectthispage": "Измена на заштитата на страницава",
        "newpage": "Нова страница",
-       "talkpage": "Разговор",
        "talkpagelinktext": "разговор",
        "specialpage": "Службена страница",
        "personaltools": "Лични алатки",
-       "articlepage": "Преглед на содржината",
        "talk": "Разговор",
        "views": "Посети",
        "toolbox": "Алатки",
        "tool-link-userrights": "Смени ги {{GENDER:$1|корисничките}} групи",
        "tool-link-userrights-readonly": "Погл. {{GENDER:$1|кориснички}} групи",
        "tool-link-emailuser": "Испрати е-пошта на {{GENDER:$1|корисников}}",
-       "userpage": "Преглед на корисничката страница",
-       "projectpage": "Преглед на проектната страница",
        "imagepage": "Преглед на страницата на податотеката",
        "mediawikipage": "Преглед на пораката",
        "templatepage": "Преглед на шаблонот",
        "tooltip-ca-viewsource": "Оваа страница е заштитена. Можете да го видите изворниот код.",
        "tooltip-ca-history": "Претходни верзии на оваа страница.",
        "tooltip-ca-protect": "Заштити ја страницава",
-       "tooltip-ca-unprotect": "Измени заштита страницава",
+       "tooltip-ca-unprotect": "Измени заштита на страницава",
        "tooltip-ca-delete": "Избриши ја страницава",
        "tooltip-ca-undelete": "Обнови ги уредувањата направени на оваа страница пред да биде избришана",
        "tooltip-ca-move": "Премести ја страницава",
        "gotointerwiki-invalid": "Укажаниот наслов е неважечки.",
        "gotointerwiki-external": "Го напуштате {{SITENAME}} упатени кон [[$2]], кое е посебно мрежно место.\n\n'''[$1 Продолжете кон $1]'''",
        "undelete-cantedit": "Не можете да ја вратите избришаната страница бидејќи уредувањето на страницава не ви е дозволено.",
-       "undelete-cantcreate": "Не можете да ја вратите страницава бидејќи не постои страница со таков назив и не ви е дозволено да ја создадете."
+       "undelete-cantcreate": "Не можете да ја вратите страницава бидејќи не постои страница со таков назив и не ви е дозволено да ја создадете.",
+       "pagedata-title": "Податоци за страницата",
+       "pagedata-text": "Страницава дава посредник за податоци за страниците. Укажете го насловот на страницата во URL-то, користејќи ја синтаксата за потстраници.\n* Префрлањето на содржината се заснова на заглавието Прифати на вашиот клиент. Ова значи дека податоците за страницата ќе бидат ставени во форматот кој го претпочита вашиот клиент.",
+       "pagedata-not-acceptable": "Не најдов соодветен формат. Поддржани MIME-типови: $1",
+       "pagedata-bad-title": "Нважечки наслов: $1."
 }
index 3ebaae2..ed1ed8e 100644 (file)
        "anontalk": "Thó-lūn",
        "navigation": "Se̍h chām",
        "and": "&#32;kap",
-       "qbfind": "Chhōe",
-       "qbbrowse": "Liū-lám",
-       "qbedit": "Siu-kái",
-       "qbpageoptions": "Chit ia̍h",
-       "qbmyoptions": "Goá ê ia̍h",
        "faq": "Būn-tah",
-       "faqpage": "Project:Būn-tah",
        "actions": "Tōng-chok",
        "namespaces": "Miâ-khong-kan",
        "variants": "piàn-thé",
        "edit-local": "改這位的說明",
        "create": "Khai-sí siá",
        "create-local": "ka chhit-tah--ê soat-bêng",
-       "editthispage": "Siu-kái chit ia̍h",
-       "create-this-page": "Khai-sí siá chit ia̍h",
        "delete": "Thâi",
-       "deletethispage": "Thâi chit ia̍h",
-       "undeletethispage": "取消刣掉這頁",
        "undelete_short": "Kiù {{PLURAL:$1|$1|$1}} ê thâi-tiāu ê",
        "viewdeleted_short": "Khoàⁿ {{PLURAL:$1|chi̍t-ê thâi tiàu--ê pian-chi̍p|$1 ê thâi tiàu--ê pian-chi̍p}}",
        "protect": "Pó-hō·",
        "protect_change": "kái-piàn",
-       "protectthispage": "Pó-hō· chit ia̍h",
        "unprotect": "kái pó-hō·",
-       "unprotectthispage": "kái chit ia̍h ê pó-hō͘",
        "newpage": "Sin ia̍h",
-       "talkpage": "Thó-lūn chit ia̍h",
        "talkpagelinktext": "thó-lūn",
        "specialpage": "Te̍k-sû-ia̍h",
        "personaltools": "Kò-jîn kang-khū",
-       "articlepage": "Khoàⁿ loē-iông ia̍h",
        "talk": "Thó-lūn",
        "views": "Khoàⁿ",
        "toolbox": "Ke-si",
        "tool-link-userrights": "Piàn-keng {{GENDER:$1|iōng-chiá}} hun-cho͘",
        "tool-link-userrights-readonly": "Khòaⁿ {{GENDER:$1|iōng-chiá}} hun-cho͘",
        "tool-link-emailuser": "Email hō͘ chit ūi {{GENDER:$1|iōng-chiá}}",
-       "userpage": "Khoàⁿ iōng-chiá ê Ia̍h",
-       "projectpage": "Khoàⁿ sū-kang ia̍h",
        "imagepage": "Khoàⁿ tóng-àn ia̍h",
        "mediawikipage": "Khoàⁿ sìn-sit ia̍h",
        "templatepage": "Khoàⁿ pang-bô͘ ia̍h",
        "confirmemail_body": "Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō \"$2\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ mài tòe liân-kiat khì.  Chit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
        "confirmemail_body_changed": "Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō \"$2\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ khui ē-kha chit-ê liân-kiat,  chhú-siau khak-jīn ê e-mail.\n\n$5\n\nChit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
        "confirmemail_body_set": "Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō \"$2\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ khui ē-kha chit-ê liân-kiat,  chhú-siau khak-jīn ê e-mail.\n\n$5\n\nChit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
+       "confirm-purge-title": "Ōaⁿ-sin chit ia̍h",
        "confirm-purge-top": "Kā chit ia̍h ê cache piàⁿ tiāu?",
+       "comma-separator": ",&#32;",
        "colon-separator": ":&#32;",
        "table_pager_next": "Aū-chi̍t-ia̍h",
        "table_pager_prev": "Téng-chi̍t-ia̍h",
index 0a8881c..140ade2 100644 (file)
        "anontalk": "Brukerdiskusjon",
        "navigation": "Navigasjon",
        "and": "&#32;og",
-       "qbfind": "Finn",
-       "qbbrowse": "Bla gjennom",
-       "qbedit": "Rediger",
-       "qbpageoptions": "Sideinnstillinger",
-       "qbmyoptions": "Egne innstillinger",
        "faq": "Ofte stilte spørsmål",
-       "faqpage": "Project:Ofte stilte spørsmål",
        "actions": "Handlinger",
        "namespaces": "Navnerom",
        "variants": "Varianter",
        "edit-local": "Rediger lokal beskrivelse",
        "create": "Opprett",
        "create-local": "Opprett lokal beskrivelse",
-       "editthispage": "Rediger siden",
-       "create-this-page": "Opprett denne siden",
        "delete": "Slett",
-       "deletethispage": "Slett denne siden",
-       "undeletethispage": "Legg tilbake siden",
        "undelete_short": "Gjenopprett {{PLURAL:$1|én revisjon|$1 revisjoner}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}",
        "protect": "Beskytt",
        "protect_change": "endre",
-       "protectthispage": "Lås siden",
        "unprotect": "Endre beskyttelse",
-       "unprotectthispage": "Endre beskyttelsen av denne siden",
        "newpage": "Ny side",
-       "talkpage": "Diskuter denne siden",
        "talkpagelinktext": "diskusjon",
        "specialpage": "Spesialside",
        "personaltools": "Personlige verktøy",
-       "articlepage": "Vis innholdsside",
        "talk": "Diskusjon",
        "views": "Visninger",
        "toolbox": "Verktøy",
        "tool-link-userrights": "Endre {{GENDER:$1|brukergrupper}}",
        "tool-link-userrights-readonly": "Vis {{GENDER:$1|brukergrupper}}",
        "tool-link-emailuser": "Send {{GENDER:$1|brukeren}} en e-post",
-       "userpage": "Vis brukerside",
-       "projectpage": "Vis prosjektside",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis beskjedside",
        "templatepage": "Vis malside",
        "recentchanges-legend-plusminus": "«(±123)»",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filtre",
-       "rcfilters-quickfilters": "Raske lenker",
+       "rcfilters-quickfilters": "Lagrede filterinnstillinger",
        "rcfilters-quickfilters-placeholder-title": "Ingen lenker lagret enda",
        "rcfilters-quickfilters-placeholder-description": "For å lagre filterinnstillingene og gjenbruk dem senere, klikk på bokmerkeikonet i området Aktive Filtre under.",
        "rcfilters-savedqueries-defaultlabel": "Lagrede filtre",
        "rcfilters-savedqueries-unsetdefault": "Fjern som standard",
        "rcfilters-savedqueries-remove": "Fjern",
        "rcfilters-savedqueries-new-name-label": "Navn",
-       "rcfilters-savedqueries-apply-label": "Opprett rask lenke",
+       "rcfilters-savedqueries-apply-label": "Lagre innstillinger",
        "rcfilters-savedqueries-cancel-label": "Avbryt",
-       "rcfilters-savedqueries-add-new-title": "Lagre filtre som en rask lenke",
+       "rcfilters-savedqueries-add-new-title": "Lagre de gjeldende filterinnstillingene",
        "rcfilters-restore-default-filters": "Gjenopprett standardfiltre",
        "rcfilters-clear-all-filters": "Nullstill alle filtre",
        "rcfilters-search-placeholder": "Filtrer siste endringer (søk eller begyn å skrive)",
        "gotointerwiki-invalid": "Den gitte tittelen er ugyldig.",
        "gotointerwiki-external": "Du er i ferd med å forlate {{SITENAME}} for å besøke [[$2]], som er et annet nettsted.\n\n'''[$1 Fortsett til $1]'''",
        "undelete-cantedit": "Du kan ikke gjenopprette denne siden fordi du ikke har tillatelse til å redigere den.",
-       "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden."
+       "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden.",
+       "pagedata-title": "Sidedata",
+       "pagedata-text": "Denne siden gir et datagrensesnitt til sidene. Oppgi en sidetittel i URL-en, med undersidesyntaks.\n* Innholdsforhandling gjelder basert på din klients Accept-header. Dette betyr at sidedataene vil bli gitt i det formatet som foretrekkes av klienten din.",
+       "pagedata-not-acceptable": "Ingen passende format funnet. Støttede MIME-typer: $1",
+       "pagedata-bad-title": "Ugyldig tittel: $1."
 }
index a987d6f..af8796e 100644 (file)
        "anontalk": "Overleg",
        "navigation": "Navigasie",
        "and": "&#32;en",
-       "qbfind": "Zeuken",
-       "qbbrowse": "Blaojen",
-       "qbedit": "Bewark",
-       "qbpageoptions": "Disse zied",
-       "qbmyoptions": "Veurkeuren",
        "faq": "Vragen die vake esteld wörden",
-       "faqpage": "Project:Vragen die vake esteld wörden",
        "actions": "Haandeling",
        "namespaces": "Naamruumtes",
        "variants": "Variaanten",
        "edit-local": "Lokale beschrieving bewarken",
        "create": "Anmaken",
        "create-local": "Lokale beschrieving derbie doon",
-       "editthispage": "Disse zied bewarken",
-       "create-this-page": "Disse zied anmaken",
        "delete": "Vortdoon",
-       "deletethispage": "Disse zied vortdoon",
-       "undeletethispage": "Zied weerummeplaotsen",
        "undelete_short": "$1 {{PLURAL:$1|versie|versies}} weerummeplaotsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén versie die vortedaon is|$1 versies die vortedaon bin}} bekieken",
        "protect": "Beveiligen",
        "protect_change": "wiezigen",
-       "protectthispage": "Beveiligen",
        "unprotect": "Beveiliging wiezigen",
-       "unprotectthispage": "Beveiliging van disse zied wiezigen",
        "newpage": "Nieje zied",
-       "talkpage": "Overlegzied",
        "talkpagelinktext": "Overleg",
        "specialpage": "Spesiale zied",
        "personaltools": "Persoonlike instellingen",
-       "articlepage": "Artikel",
        "talk": "Overleg",
        "views": "Weergaven",
        "toolbox": "Hulpmiddels",
-       "userpage": "gebrukerszied",
-       "projectpage": "Bekiek projektzied",
        "imagepage": "Bestaandszied bekieken",
        "mediawikipage": "Tiejige bekieken",
        "templatepage": "Mal bekieken",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie oek de [[Special:NewPages|lieste mit nieje ziejen]])",
        "recentchanges-submit": "Bekiek",
+       "rcfilters-activefilters": "Aktieve filters",
+       "rcfilters-quickfilters": "Op-esleugen filterinstellingen",
+       "rcfilters-quickfilters-placeholder-title": "Nog gien verwiezingen op-esleugen",
+       "rcfilters-quickfilters-placeholder-description": "Um joew filterinstellingen op te slaon en t laoter te gebruken, klik op t bladwiezerikoon onderan bie \"Aktieve filter\".",
+       "rcfilters-savedqueries-apply-label": "Instellingen opslaon",
+       "rcfilters-savedqueries-cancel-label": "Aofbreken",
+       "rcfilters-savedqueries-add-new-title": "Filterinstellingen opslaon",
+       "rcfilters-restore-default-filters": "Standardfilters weerummezetten",
+       "rcfilters-clear-all-filters": "Alle filters vortdoon",
+       "rcfilters-search-placeholder": "Filter leste wiezigingen (blaojer of begin mit intypen)",
+       "rcfilters-filterlist-feedbacklink": "Geef kommentaar op de nieje (bèta)filters",
+       "rcfilters-highlightbutton-title": "Resultaoten markeren",
+       "rcfilters-highlightmenu-title": "Kies n kleur",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-humans-label": "Meenselik (gien bot)",
+       "rcfilters-filter-humans-description": "Bewarkingen deur meenselike bewarkers.",
+       "rcfilters-filtergroup-reviewstatus": "Beoordelingsstaotus",
+       "rcfilters-filter-patrolled-label": "Nao-ekeken",
+       "rcfilters-filter-unpatrolled-label": "Niet nao-ekeken",
+       "rcfilters-filtergroup-significance": "Petansie",
+       "rcfilters-filter-minor-label": "Kleine bewarkingen",
+       "rcfilters-filter-major-label": "Gien kleine bewarking",
+       "rcfilters-filter-major-description": "Bewarkingen niet emarkeerd as klein.",
+       "rcfilters-filtergroup-watchlist": "Evolgde ziejen",
+       "rcfilters-filter-watchlist-watched-label": "Op de volglieste",
+       "rcfilters-filter-watchlist-watched-description": "Wiezigingen an ziejen op joew volglieste.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nieje volgliestwiezigingen",
+       "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglieste",
+       "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wiezigingen an ziejen die op joew volglieste staon.",
+       "rcfilters-filter-pageedits-label": "Ziedbewarkingen",
+       "rcfilters-filter-newpages-label": "Nieje ziejen",
+       "rcfilters-filter-newpages-description": "Bewarkingen waormee'j een nieje zied anmaken.",
+       "rcfilters-filter-categorization-label": "Kategoriewiezigingen",
+       "rcfilters-filter-logactions-label": "Eregistreerden aksies",
+       "rcfilters-filtergroup-lastRevision": "Leste versie",
+       "rcfilters-filter-lastrevision-label": "Leste versie",
+       "rcfilters-filter-previousrevision-label": "Eerdere versies",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhideminor": "$1 kleine wiezigingen",
        "upload-too-many-redirects": "Der zatten te veule deurverwiezingen in de URL.",
        "upload-http-error": "Der is n HTTP-fout op-etrejen: $1",
        "upload-copy-upload-invalid-domain": "Bestaanden per kopie opsturen is niet beschikbaor vanuut dit domein.",
+       "upload-dialog-button-cancel": "Aofbreken",
+       "upload-dialog-button-back": "Weerumme",
+       "upload-dialog-button-done": "Ree",
+       "upload-dialog-button-save": "Opslaon",
+       "upload-dialog-button-upload": "Bestaand opsturen",
+       "upload-form-label-infoform-title": "Details",
+       "upload-form-label-infoform-name": "Naam",
+       "upload-form-label-infoform-description": "Beschrieving",
+       "upload-form-label-usage-title": "Gebruuk",
+       "upload-form-label-usage-filename": "Bestaandsnaam",
+       "upload-form-label-infoform-categories": "Kategorieën",
+       "upload-form-label-infoform-date": "Daotum",
        "backend-fail-stream": "t Was niet meugelik t bestaand $1 te streumen.",
        "backend-fail-backup": "t Was niet meugelik n reservekopie van t bestaand $1 te maken.",
        "backend-fail-notexists": "t Bestaand $1 besteet niet.",
        "wlnote": "Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.",
        "wlshowlast": "Laot de veurbieje $1 uur $2 dagen  zien",
        "watchlist-submit": "Bekiek",
+       "wlshowhideminor": "kleine bewarkingen",
        "watchlist-options": "Opsies veur de volglieste",
        "watching": "Volg...",
        "unwatching": "Niet volgen...",
index c34ac8c..b89df5f 100644 (file)
        "anontalk": "Overleg",
        "navigation": "Navigatie",
        "and": "&#32;en",
-       "qbfind": "Zoeken",
-       "qbbrowse": "Bladeren",
-       "qbedit": "Bewerken",
-       "qbpageoptions": "Deze pagina",
-       "qbmyoptions": "Mijn pagina's",
        "faq": "Veelgestelde vragen",
-       "faqpage": "Project:Veelgestelde vragen",
        "actions": "Handelingen",
        "namespaces": "Naamruimten",
        "variants": "Varianten",
        "edit-local": "Lokale beschrijving bewerken",
        "create": "Aanmaken",
        "create-local": "Lokale beschrijving toevoegen",
-       "editthispage": "Deze pagina bewerken",
-       "create-this-page": "Deze pagina aanmaken",
        "delete": "Verwijderen",
-       "deletethispage": "Deze pagina verwijderen",
-       "undeletethispage": "Pagina terugplaatsen",
        "undelete_short": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugplaatsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken",
        "protect": "Beveiligen",
        "protect_change": "wijzigen",
-       "protectthispage": "Deze pagina beveiligen",
        "unprotect": "Beveiliging wijzigen",
-       "unprotectthispage": "Beveiliging van deze pagina wijzigen",
        "newpage": "Nieuwe pagina",
-       "talkpage": "Overlegpagina",
        "talkpagelinktext": "overleg",
        "specialpage": "Speciale pagina",
        "personaltools": "Persoonlijke instellingen",
-       "articlepage": "Pagina bekijken",
        "talk": "Overleg",
        "views": "Weergaven",
        "toolbox": "Hulpmiddelen",
        "tool-link-userrights": "{{GENDER:$1|Gebruikersgroepen}} wijzigen",
        "tool-link-userrights-readonly": "{{GENDER:$1|Gebruikers}}groepen weergeven",
        "tool-link-emailuser": "Deze {{GENDER:$1|gebruiker}} e-mailen",
-       "userpage": "Gebruikerspagina bekijken",
-       "projectpage": "Projectpagina bekijken",
        "imagepage": "Bestandspagina bekijken",
        "mediawikipage": "Berichtpagina bekijken",
        "templatepage": "Sjabloonpagina bekijken",
        "rcfilters-noresults-conflict": "Geen resultaten gevonden omdat de zoekcriteria met elkaar conflicteren",
        "rcfilters-state-message-subset": "Dit filter heeft geen effect omdat de resultaten ook worden gefilterd door {{PLURAL:$2|het|de}} bredere {{PLURAL:$2|filter|filters}} (probeer ze te markeren om ze te onderscheiden): $1",
        "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep is hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1",
-       "rcfilters-filtergroup-registration": "Gebruikers-registratie",
+       "rcfilters-filtergroup-registration": "Gebruikersregistratie",
        "rcfilters-filter-registered-label": "Geregistreerd",
        "rcfilters-filter-registered-description": "Ingelogde gebruikers.",
        "rcfilters-filter-unregistered-label": "Niet-geregistreerd",
        "rcfilters-filter-editsbyself-description": "Uw eigen bijdragen.",
        "rcfilters-filter-editsbyother-label": "Wijzigingen door anderen",
        "rcfilters-filter-editsbyother-description": "Alle wijzigingen behalve die door u gemaakt zijn.",
-       "rcfilters-filtergroup-userExpLevel": "Gebruikerservarings niveau (alleen voor geregistreerde gebruikers)",
+       "rcfilters-filtergroup-userExpLevel": "Ervaringsniveau (alleen voor geregistreerde gebruikers)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nieuwkomers",
        "rcfilters-filter-user-experience-level-newcomer-description": "Minder dan 10 bewerkingen en 4 dagen van activiteit.",
        "rcfilters-filter-user-experience-level-learner-label": "Leerlingen",
index 729f8fe..f2e8b92 100644 (file)
        "anontalk": "Diskusjon",
        "navigation": "Navigering",
        "and": "&#32;og",
-       "qbfind": "Finn",
-       "qbbrowse": "Bla gjennom",
-       "qbedit": "Endre",
-       "qbpageoptions": "Denne sida",
-       "qbmyoptions": "Sidene mine",
        "faq": "OSS",
-       "faqpage": "Project:OSS",
        "actions": "Handlingar",
        "namespaces": "Namnerom",
        "variants": "Variantar",
        "edit-local": "Endre lokal skildring",
        "create": "Opprett",
        "create-local": "Legg til lokal skildring",
-       "editthispage": "Endre sida",
-       "create-this-page": "Opprett sida",
        "delete": "Slett",
-       "deletethispage": "Slett denne sida",
-       "undeletethispage": "Attopprett sida",
        "undelete_short": "Attopprett {{PLURAL:$1|éin versjon|$1 versjonar}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|éin sletta versjon|$1 sletta versjonar}}",
        "protect": "Vern",
        "protect_change": "endre",
-       "protectthispage": "Vern denne sida",
        "unprotect": "Endra vern",
-       "unprotectthispage": "Endra vernet av sida",
        "newpage": "Ny side",
-       "talkpage": "Diskuter sida",
        "talkpagelinktext": "Diskusjon",
        "specialpage": "Spesialside",
        "personaltools": "Personlege verktøy",
-       "articlepage": "Vis innhaldsside",
        "talk": "Diskusjon",
        "views": "Visningar",
        "toolbox": "Verktøy",
        "tool-link-userrights": "Endra {{GENDER:$1|brukargrupper}}",
        "tool-link-userrights-readonly": "Syn {{GENDER:$1|brukar}}grupper",
        "tool-link-emailuser": "Send e-post til {{GENDER:$1|brukaren}}",
-       "userpage": "Vis brukarside",
-       "projectpage": "Sjå prosjektsida",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis systemmeldingsside",
        "templatepage": "Vis malside",
        "rcshowhidemine-hide": "Gøym",
        "rcshowhidecategorization": "$1 kategorisering av sider",
        "rcshowhidecategorization-show": "Vis",
+       "rcshowhidecategorization-hide": "Gøym",
        "rclinks": "Vis dei siste $1 endringane dei siste $2 dagane",
        "diff": "skil",
        "hist": "hist",
        "sp-contributions-username": "IP-adresse eller brukarnamn:",
        "sp-contributions-toponly": "Vis berre endringar som er gjeldande versjonar",
        "sp-contributions-newonly": "Berre vis endringar som oppretta ei side",
+       "sp-contributions-hideminor": "Gøym småplukk",
        "sp-contributions-submit": "Søk",
        "whatlinkshere": "Lenkjer hit",
        "whatlinkshere-title": "Sider som har lenkje til «$1»",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Singalesisk",
        "special-characters-group-gujarati": "Gujarati",
+       "mw-widgets-dateinput-no-date": "Ingen dato er vald",
        "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
        "mw-widgets-titleinput-description-new-page": "sida finst ikkje enno",
        "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
+       "date-range-from": "Frå dato:",
+       "date-range-to": "Til dato:",
        "randomrootpage": "Tilfeldig rotsida",
        "log-action-filter-rights": "Type endring av rettar:",
        "authmanager-userdoesnotexist": "Brukarkontoen «$1» er ikkje oppretta.",
index 3527801..8f7e95f 100644 (file)
        "anontalk": "Dyskusja",
        "navigation": "Nawigacja",
        "and": "&#32;oraz",
-       "qbfind": "Znajdź",
-       "qbbrowse": "Przeglądanie",
-       "qbedit": "Edycja",
-       "qbpageoptions": "Ta strona",
-       "qbmyoptions": "Moje strony",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Akcje",
        "namespaces": "Przestrzenie nazw",
        "variants": "Warianty",
        "edit-local": "Edytuj lokalny opis",
        "create": "Utwórz",
        "create-local": "Dodaj lokalny opis",
-       "editthispage": "Edytuj tę stronę",
-       "create-this-page": "Utwórz tę stronę",
        "delete": "Usuń",
-       "deletethispage": "Usuń tę stronę",
-       "undeletethispage": "Przywróć tę stronę",
        "undelete_short": "odtwórz {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}",
        "viewdeleted_short": "Podgląd {{PLURAL:$1|usuniętej|$1 usuniętych}} wersji",
        "protect": "Zabezpiecz",
        "protect_change": "zmień",
-       "protectthispage": "Zabezpiecz tę stronę",
        "unprotect": "Zmień zabezpieczenie",
-       "unprotectthispage": "Zmień zabezpieczenie strony",
        "newpage": "Nowa strona",
-       "talkpage": "Dyskusja",
        "talkpagelinktext": "dyskusja",
        "specialpage": "Strona specjalna",
        "personaltools": "Narzędzia osobiste",
-       "articlepage": "Pokaż zawartość strony",
        "talk": "Dyskusja",
        "views": "Widok",
        "toolbox": "Narzędzia",
        "tool-link-userrights": "Zmiana grup {{GENDER:$1|użytkownika|użytkowniczki}}",
        "tool-link-userrights-readonly": "Zobacz grupy {{GENDER:$1|użytkownika|użytkowniczki}}",
        "tool-link-emailuser": "Wyślij e-mail do {{GENDER:$1|tego użytkownika|tej użytkowniczki}}",
-       "userpage": "Pokaż stronę użytkownika",
-       "projectpage": "Pokaż stronę projektu",
        "imagepage": "Pokaż stronę pliku",
        "mediawikipage": "Strona komunikatu",
        "templatepage": "Strona szablonu",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Pokaż",
        "rcfilters-activefilters": "Aktywne filtry",
-       "rcfilters-quickfilters": "Szybkie linki",
+       "rcfilters-quickfilters": "Zapisane ustawienia filtrów",
        "rcfilters-quickfilters-placeholder-title": "Nie masz jeszcze zapisanych linków",
        "rcfilters-quickfilters-placeholder-description": "Aby zapisać ustawienia filtrów i używać ich później, kliknij ikonkę zakładki w polu aktywnych filtrów znajdującym się niżej.",
        "rcfilters-savedqueries-defaultlabel": "Zapisane filtry",
        "rcfilters-savedqueries-new-name-label": "Nazwa",
        "rcfilters-savedqueries-apply-label": "Zapisz ustawienia",
        "rcfilters-savedqueries-cancel-label": "Anuluj",
-       "rcfilters-savedqueries-add-new-title": "Zapisz szybki link do filtrów",
+       "rcfilters-savedqueries-add-new-title": "Zapisz bieżące ustawienia filtrów",
        "rcfilters-restore-default-filters": "Przywróć domyślne filtry",
        "rcfilters-clear-all-filters": "Wyczyść filtry",
        "rcfilters-search-placeholder": "Filtruj ostatnie zmiany (przeglądaj lub zacznij wpisywać)",
        "rcfilters-filter-watchlist-notwatched-description": "Wszystko oprócz zmian na obserwowanych przez ciebie stronach.",
        "rcfilters-filtergroup-changetype": "Rodzaj zmiany",
        "rcfilters-filter-pageedits-label": "Edycje strony",
-       "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii...",
+       "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii",
        "rcfilters-filter-newpages-label": "Tworzenie stron",
        "rcfilters-filter-newpages-description": "Zmiany prowadzące do utworzenia nowych stron.",
        "rcfilters-filter-categorization-label": "Zmiany kategorii",
        "rcfilters-filter-categorization-description": "Dodanie lub usunięcie strony z kategorii",
        "rcfilters-filter-logactions-label": "Działania rejestrowane",
-       "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików...",
+       "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Drobne zmiany” koliduje z jednym lub wieloma filtrami Rodzaju zmian, ponieważ niektóre rodzaje zmian nie mogą być uznawane za  „drobne”. Kolidujące filtry zostały powyżej odpowiednio zaznaczone na pasku aktywnych filtrów.",
        "rcfilters-hideminor-conflicts-typeofchange": "Niektóre rodzaje zmian nie mogą być uznawane za „drobne”, dlatego ten filtr koliduje z następującymi filtrami Rodzaju zmian: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Ten filtr Rodzaju zmian koliduje z filtrem „Drobne zmiany”. Nie wszystkie zmiany mogą być uznawane za „drobne”.",
index d0fecbc..8fc3da1 100644 (file)
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "As minhas páginas",
        "faq": "Perguntas frequentes",
-       "faqpage": "Project:FAQ",
        "actions": "Ações",
        "namespaces": "Domínios",
        "variants": "Variantes",
        "edit-local": "Editar descrição local",
        "create": "Criar",
        "create-local": "Adicionar descrição local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Criar esta página",
        "delete": "Eliminar",
-       "deletethispage": "Eliminar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|uma edição|$1 edições}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
        "protect": "Proteger",
        "protect_change": "alterar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Alterar proteção",
-       "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
-       "talkpage": "Discutir esta página",
        "talkpagelinktext": "Discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
-       "articlepage": "Ver página de conteúdo",
        "talk": "Discussão",
        "views": "Vistas",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Alterar grupos {{GENDER:$1|do utilizador|da utilizadora}}",
        "tool-link-userrights-readonly": "Ver grupos {{GENDER:$1|do utilizador|da utilizadora}}",
        "tool-link-emailuser": "Enviar correio eletrónico a {{GENDER:$1|este utilizador|esta utilizadora|este(a) utilizador(a)}}",
-       "userpage": "Ver página de utilizador",
-       "projectpage": "Ver página de projeto",
        "imagepage": "Ver página de ficheiro",
        "mediawikipage": "Ver página de mensagem",
        "templatepage": "Ver página de predefinição",
        "gotointerwiki-invalid": "O título especificado é inválido.",
        "gotointerwiki-external": "Está prestes a sair da wiki {{SITENAME}} para visitar [[$2]], que é um site externo.\n\n'''[$1 Continuar para $1]'''",
        "undelete-cantedit": "Não pode restaurar esta página, porque não tem privilégios para editar esta página.",
-       "undelete-cantcreate": "Não pode restaurar esta página, porque não existe nenhuma página com este nome e não tem privilégios para criar esta página."
+       "undelete-cantcreate": "Não pode restaurar esta página, porque não existe nenhuma página com este nome e não tem privilégios para criar esta página.",
+       "pagedata-title": "Dados de página",
+       "pagedata-text": "Esta página fornece uma interface de dados para páginas. Forneça o título da página no URL, usando a sintaxe de subpáginas, por favor.\n* Aplica-se a negociação de conteúdo com base no cabeçalho Accept do seu cliente. Isto significa que os dados da página serão fornecidos no formato preferido do seu cliente.",
+       "pagedata-not-acceptable": "Não foi encontrado nenhum formato correspondente. Tipos MIME suportados: $1",
+       "pagedata-bad-title": "Título inválido: $1."
 }
index 947a6e8..d96657f 100644 (file)
        "anontalk": "Same as {{msg-mw|mytalk}} but used for non-logged-in users.\n{{Identical|Talk}}\n\nSee also:\n* {{msg-mw|Accesskey-pt-anontalk}}\n* {{msg-mw|Tooltip-pt-anontalk}}",
        "navigation": "This is shown as a section header in the sidebar of most skins.\n\n{{Identical|Navigation}}",
        "and": "The translation for \"and\" appears in the [[Special:Version]] page, between the last two items of a list. If a comma is needed, add it at the beginning without a gap between it and the \"&\". &amp;#32; is a blank space, one character long. Please leave it as it is.\n\nThis can also appear in the credits page if the credits feature is enabled,for example [{{canonicalurl:Support|action=credits}} the credits of the support page]. (To view any credits page type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar.)\n{{Identical|And}}",
-       "qbfind": "Alternative for \"search\" as used in Cologne Blue skin.\n{{Identical|Find}}",
-       "qbbrowse": "Heading in sidebar menu in CologneBlue skin as seen in [[File:CologneBlue sidebar qqx.png]]\n{{Identical|Browse}}",
-       "qbedit": "Heading in sidebar menu in CologneBlue skin as seen in http://i.imgur.com/I08Y3jW.png\n{{Identical|Edit}}",
-       "qbpageoptions": "Heading in sidebar menu in CologneBlue skin as seen in http://i.imgur.com/I08Y3jW.png\n{{Identical|This page}}",
-       "qbmyoptions": "Heading in the Cologne Blue skin user menu containing links to user (talk) page, preferences, watchlist, etc.\n{{Identical|My pages}}",
        "faq": "FAQ is short for ''frequently asked questions''.\n{{Identical|FAQ}}",
-       "faqpage": "{{doc-important|Do not translate <code>Project:</code> part.}}\n\"FAQ\" is short for \"frequently asked questions\".\n\nThis page is only linked in CologneBlue (an old skin), not in Monobook or Vector.",
        "sitetitle": "{{Ignore}}",
        "sitesubtitle": "{{Ignore}}",
        "actions": "{{Identical|Action}}",
        "edit-local": "The text on the tab going to the edit form for the local description page of a file from a foreign file repository (e.g. Wikimedia Commons). Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Edit}}\n* {{msg-mw|Create-local}}",
        "create": "The text on the tab of the edit form on unexisting pages starts editing them. Should be in the infinitive mood.\n\n{{Identical|Create}}",
        "create-local": "The text on the tab going to the creation form for the (not yet existing) local description page of a file from a foreign file repository (e.g. Wikimedia Commons). Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Create}}\n* {{msg-mw|Edit-local}}",
-       "editthispage": "This is the \"edit\" link as used in the Cologne Blue skin, at the bottom of the page.\n\nSee {{msg-mw|Create-this-page}} for when the page does not exist.\n{{Identical|Edit this page}}",
-       "create-this-page": "In the Cologne Blue skin this is the text for the link leading to the edit form on pages that have not yet been created, at the bottom of the page. See {{msg-mw|editthispage}} for when the page already exists.\n{{Identical|Createpage}}",
        "delete": "Name of the Delete tab shown for admins. Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Delete}}\n* {{msg-mw|Accesskey-ca-delete}}\n* {{msg-mw|Tooltip-ca-delete}}\n{{Identical|Delete}}",
-       "deletethispage": "In the Cologne Blue skin this is the text for link to delete the page in admin view, at the bottom of the page.\n{{Identical|Delete this page}}",
-       "undeletethispage": "In the Cologne Blue skin this is the text for link to undelete the page in admin view, at the bottom of the page.",
        "undelete_short": "It is tab label. It's really can be named ''nstab-undelete''. Parameters:\n* $1 - number of edits",
        "viewdeleted_short": "Tab label for the undelete button when the user has permission to view the deleted history but not undelete.\n\nParameters:\n* $1 - number of edits",
        "protect": "Name of protect tab displayed for admins. Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Protect}}\n* {{msg-mw|Accesskey-ca-protect}}\n* {{msg-mw|Tooltip-ca-protect}}\n{{Identical|Protect}}",
        "protect_change": "Text on links for each entry in [[Special:ProtectedPages]] to change the protection of pages (only displayed to admins).\n{{Identical|Change}}",
-       "protectthispage": "In the Cologne Blue skin this is the text for link to protect the page in admin view, at the bottom of the page.\n{{Identical|Protect this page}}",
        "unprotect": "Name of unprotect tab displayed for admins\n\nSee also:\n* {{msg-mw|Unprotect}}\n* {{msg-mw|Accesskey-ca-unprotect}}\n* {{msg-mw|Tooltip-ca-unprotect}}\n{{Identical|Change protection}}",
-       "unprotectthispage": "In the Cologne Blue skin this is the anchor text for the link to unprotect the page in admin view, at the bottom of the page.\n{{Identical|Unprotect this page}}",
        "newpage": "{{Identical|New page}}",
-       "talkpage": "In the Cologne Blue skin this is the text for link to discuss the page, at the bottom of the page.",
        "talkpagelinktext": "Used as name of links going to talk page in some places, like in [[Special:RecentChanges]], [[Special:Allmessages]], [[Special:Logs]], and [[Special:Watchlist/edit]].\n\n{{Identical|Talk}}",
        "specialpage": "{{Identical|Special page}}",
        "personaltools": "Heading for a group of links to your user page, talk page, preferences, watchlist, and contributions. This heading is visible in the sidebar in some skins. For an example, see [{{canonicalurl:Main_Page|useskin=simple}} Main Page using simple skin].",
        "addsection": "{{notranslate}}\nText of the new section tab (the one next to the \"edit\" tab on non-Vector skins).\n\nSee also:\n* {{msg-mw|Addsection}}\n* {{msg-mw|Accesskey-ca-addsection}}\n* {{msg-mw|Tooltip-ca-addsection}}",
-       "articlepage": "'Content page' is used for NS_MAIN and any other non-standard namespaces. Only used in the Cologne Blue skin in the bottomLinks part.\n\n{{Identical|Content page}}",
        "talk": "Used as display name for the tab to all {{msg-mw|Talk}} pages. These pages accompany all content pages and can be used for discussing the content page. Example: [[Talk:Example]].\n\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}\n{{Identical|Discussion}}",
        "views": "Subtitle for the list of available views, for the current page. In \"monobook\" skin the list of views are shown as tabs, so this sub-title is not shown. For an example, see [{{canonicalurl:Main_Page|useskin=simple}} Main Page using simple skin].\n\n'''Note:''' This is \"views\" as in \"appearances\"/\"representations\", '''not''' as in \"visits\"/\"accesses\".\n{{Identical|View}}",
        "toolbox": "The title of the toolbox below the search menu.\n{{Identical|Tool}}",
        "tool-link-userrights": "Link to [[Special:UserRights]] (user rights management) in the sidebar toolbox, shown if the current user is allowed to change given user's groups.\n\nParameters:\n* $1 - Name of user for the user group management (usable for GENDER)",
        "tool-link-userrights-readonly": "Link to [[Special:UserRights]] (user rights management) in the sidebar toolbox, shown if the current user is '''not''' allowed to change given user's groups.\n\nParameters:\n* $1 - Name of user for the user group management (usable for GENDER)",
        "tool-link-emailuser": "Link to [[Special:EmailUser]] (email user tool) in the sidebar toolbox.\n\nParameters:\n* $1 - Name of user who would receive the email\n\nSee also:\n* {{msg-mw|Emailuser-title-target}}",
-       "userpage": "Used in user talk pages as the text of the link to the user page, with the Cologne Blue skin.",
-       "projectpage": "Used as link text in Talk page of project page with the Cologne Blue skin.",
        "imagepage": "Used as link text in Talk page of file page.",
        "mediawikipage": "Used as link text in Talk page of MediaWiki message page.",
        "templatepage": "Used as link text in Talk page of template page.",
        "gotointerwiki-invalid": "Message shown on Special:GoToInterwiki if given an invalid title.",
        "gotointerwiki-external": "Message shown on Special:GoToInterwiki if given a external interwiki link (e.g. [[Special:GoToInterwiki/Google:Foo]]). $1 is the full url the user is trying to get to. $2 is the text of the interwiki link (e.g. \"Google:foo\").",
        "undelete-cantedit": "Shown if the user tries to undelete a page that they cannot edit",
-       "undelete-cantcreate": "Shown if the user tries to undelete a page which currently does not exist, and they are not allowed to create it. This could for example happen on a wiki with custom protection levels where the page name has been create-protected and the user has the right to undelete but not the right to edit protected pages."
+       "undelete-cantcreate": "Shown if the user tries to undelete a page which currently does not exist, and they are not allowed to create it. This could for example happen on a wiki with custom protection levels where the page name has been create-protected and the user has the right to undelete but not the right to edit protected pages.",
+       "pagedata-title": "Title shown on the special page when a form or text is presented",
+       "pagedata-text": "Error shown when none of the formats acceptable to the client is supported (HTTP error 406). Parameters:\n* $1 - the list of supported MIME types",
+       "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1",
+       "pagedata-bad-title": "Error shown when the requested title is invalid. Parameters:\n* $1: the malformed ID"
 }
index fc7e5a3..e3cbf71 100644 (file)
        "anontalk": "Discuții",
        "navigation": "Navigare",
        "and": "&#32;și",
-       "qbfind": "Găsește",
-       "qbbrowse": "Răsfoiește",
-       "qbedit": "Modificare",
-       "qbpageoptions": "Această pagină",
-       "qbmyoptions": "Paginile mele",
        "faq": "Întrebări frecvente",
-       "faqpage": "Project:Întrebări frecvente",
        "actions": "Acțiuni",
        "namespaces": "Spații de nume",
        "variants": "Variante",
        "edit-local": "Modificare descriere locală",
        "create": "Creare",
        "create-local": "Adăugare descriere locală",
-       "editthispage": "Modificați pagina",
-       "create-this-page": "Creați această pagină",
        "delete": "Ștergere",
-       "deletethispage": "Șterge această pagină",
-       "undeletethispage": "Recuperează această pagină",
        "undelete_short": "Recuperarea {{PLURAL:$1|unei modificări|a $1 modificări|a $1 de modificări}}",
        "viewdeleted_short": "Vizualizați {{PLURAL:$1|o modificare ștearsă|$1 modificări șterse|$1 de modificări șterse}}",
        "protect": "Protejare",
        "protect_change": "schimbă protecția",
-       "protectthispage": "Protejați această pagină",
        "unprotect": "Modificare protecție",
-       "unprotectthispage": "Schimbă nivelul de protejare al acestei pagini",
        "newpage": "Pagină nouă",
-       "talkpage": "Discutați despre această pagină",
        "talkpagelinktext": "Discuție",
        "specialpage": "Pagină specială",
        "personaltools": "Unelte personale",
-       "articlepage": "Vizualizați conținutul paginii",
        "talk": "Discuție",
        "views": "Vizualizări",
        "toolbox": "Unelte",
        "tool-link-userrights": "Schimbă grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
        "tool-link-userrights-readonly": "Vezi grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
        "tool-link-emailuser": "Trimiteți un mesaj {{GENDER:$1|acestui utilizator|acestei utilizatoare}}",
-       "userpage": "Vizualizați pagina utilizatorului",
-       "projectpage": "Vizualizați pagina proiectului",
        "imagepage": "Vizualizați pagina fișierului",
        "mediawikipage": "Vizualizați pagina mesajului",
        "templatepage": "Vizualizați pagina formatului",
index 1cd1b39..b4f3385 100644 (file)
        "anontalk": "Обсуждение",
        "navigation": "Навигация",
        "and": "&#32;и",
-       "qbfind": "Поиск",
-       "qbbrowse": "Просмотреть",
-       "qbedit": "Править",
-       "qbpageoptions": "Настройки страницы",
-       "qbmyoptions": "Ваши настройки",
        "faq": "ЧаВО",
-       "faqpage": "Project:ЧаВО",
        "actions": "Действия",
        "namespaces": "Пространства имён",
        "variants": "Варианты",
        "edit-local": "Редактировать локальное описание",
        "create": "Создать",
        "create-local": "Создать локально",
-       "editthispage": "Править эту страницу",
-       "create-this-page": "Создать эту страницу",
        "delete": "Удалить",
-       "deletethispage": "Удалить эту страницу",
-       "undeletethispage": "Восстановить эту страницу",
        "undelete_short": "Восстановить {{PLURAL:$1|1=$1 правку|$1 правки|$1 правок|1=правку}}",
        "viewdeleted_short": "Просмотр {{PLURAL:$1|1=$1 удалённой правки|удалённой правки|$1 удалённых правок}}",
        "protect": "Защитить",
        "protect_change": "изменить",
-       "protectthispage": "Защитить эту страницу",
        "unprotect": "Изменить защиту",
-       "unprotectthispage": "Изменить защиту этой страницы",
        "newpage": "Новая страница",
-       "talkpage": "Обсудить эту страницу",
        "talkpagelinktext": "обсуждение",
        "specialpage": "Служебная страница",
        "personaltools": "Персональные инструменты",
-       "articlepage": "Просмотреть статью",
        "talk": "Обсуждение",
        "views": "Просмотры",
        "toolbox": "Инструменты",
        "tool-link-userrights": "Изменить группы {{GENDER:$1|участника|участницы}}",
        "tool-link-userrights-readonly": "Смотреть группы {{GENDER:$1|участника|участницы}}",
        "tool-link-emailuser": "Написать письмо {{GENDER:$1|участнику|участнице}}",
-       "userpage": "Просмотреть страницу участника",
-       "projectpage": "Просмотреть страницу проекта",
        "imagepage": "Просмотреть страницу файла",
        "mediawikipage": "Показать страницу сообщения",
        "templatepage": "Просмотреть страницу шаблона",
        "logentry-move-move_redir": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления и без оставления перенаправления",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3",
-       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} «старым патрулированием» версию $4 страницы $3",
+       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3",
        "logentry-newusers-newusers": "{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1",
        "logentry-newusers-create": "{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1",
        "logentry-newusers-create2": "$1 {{GENDER:$2|создал|создала}} учётную запись $3",
        "gotointerwiki-invalid": "Указан некорректный заголовок.",
        "gotointerwiki-external": "Вы покидаете {{grammar:accusative|{{SITENAME}}}} для посещения стороннего сайта [[$2]].\n\n'''[$1 Перейти на $1]'''",
        "undelete-cantedit": "Вы не можете восстановить эту страницу, поскольку у вас недостаточно прав для ее редактирования.",
-       "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания."
+       "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания.",
+       "pagedata-title": "Данные страницы",
+       "pagedata-text": "Эта страница предоставляет интерфейс к данным страниц. Пожалуйста, введите заголовок страницы в URL, используя синтаксис подстраниц.\n* Согласование содержимого применяется основываясь на заголовке Accept вашего клиента. Это означает, что данные страницы будут предоставлены в формате, предпочитаемом вашим клиентом.",
+       "pagedata-not-acceptable": "Соответствующий формат не найден. Поддерживаемые MIME-типы: $1",
+       "pagedata-bad-title": "Некорректный заголовок: $1."
 }
index 6a99e94..a55e772 100644 (file)
        "anontalk": "Діскузія к тїй IP-адресї",
        "navigation": "Навіґація",
        "and": "&#32;і",
-       "qbfind": "Найти",
-       "qbbrowse": "Переглядати",
-       "qbedit": "Едітовати",
-       "qbpageoptions": "Тота сторінка",
-       "qbmyoptions": "Мої сторінкы",
        "faq": "Часты звідованя",
-       "faqpage": "Project:Часты звідованя",
        "actions": "Дїї",
        "namespaces": "Просторы назв",
        "variants": "Варіанты",
        "view": "Видіти",
        "edit": "Едітовати",
        "create": "Створити",
-       "editthispage": "Едітовату тоту сторінку",
-       "create-this-page": "Створити тоту сторінку",
        "delete": "Вымазати",
-       "deletethispage": "Змазати тоту сторінку",
-       "undeletethispage": "Обновити тоту сторінку",
        "undelete_short": "Обновити $1 {{PLURAL:$1|верзію|верзії|верзії}}",
        "viewdeleted_short": "Видїти {{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}",
        "protect": "Всокотити",
        "protect_change": "змінити",
-       "protectthispage": "Сокотити тоту сторінку",
        "unprotect": "Змінити замок",
-       "unprotectthispage": "Змінити замок той сторінкы",
        "newpage": "Нова сторінка",
-       "talkpage": "Діскутовати тоту сторінку",
        "talkpagelinktext": "діскузія",
        "specialpage": "Шпеціална сторінка",
        "personaltools": "Особны інштрументы",
-       "articlepage": "Посмотрити сторінку",
        "talk": "Діскузія",
        "views": "Перегляды",
        "toolbox": "Інштрументы",
-       "userpage": "Посмотрити сторінку хоснователя",
-       "projectpage": "Посмотрити сторінку проєкту",
        "imagepage": "Посмотрити сторінку файлу",
        "mediawikipage": "Посмотрити сторінку повідомлїнь",
        "templatepage": "Посмотрити шаблону",
index c61edfd..6d4e185 100644 (file)
        "anontalk": "Ырытыы",
        "navigation": "Навигация",
        "and": "&#32;уонна",
-       "qbfind": "Бул",
-       "qbbrowse": "Көр",
-       "qbedit": "Уларыт",
-       "qbpageoptions": "Бу сирэй",
-       "qbmyoptions": "Мин сирэйдэрим",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Дьайыылар",
        "namespaces": "Аат даллара",
        "variants": "Барыллар",
        "edit-local": "Олохтоох ойуулааһынын уларытыы",
        "create": "Саҥаны айыы",
        "create-local": "Бу туһунан суруйуу",
-       "editthispage": "Бу сирэйи уларыт",
-       "create-this-page": "Бу сирэйи ай",
        "delete": "Соттор",
-       "deletethispage": "Бу сирэйи соттор",
-       "undeletethispage": "Бу сирэйи сөргүт",
        "undelete_short": "{{PLURAL:$1|Биир уларытыыны|$1 уларытыыны}} сөргүт",
        "viewdeleted_short": "{{PLURAL:$1|Соҕотох сотторуллубут көннөрүүнү|$1 сотторуллубут көннөрүүнү}} көрүү",
        "protect": "Уларыппат гын",
        "protect_change": "уларытыы",
-       "protectthispage": "Бу сирэйи уларыппат гын",
        "unprotect": "Көмүскэлин уларыт",
-       "unprotectthispage": "Бу сирэй көмүскэлин уларыт",
        "newpage": "Саҥа сирэй",
-       "talkpage": "Бу сирэйи ырыт",
        "talkpagelinktext": "ырытыы",
        "specialpage": "Анал сирэй",
        "personaltools": "Тус бэйэ туттар тэриллэрэ",
-       "articlepage": "Ыстатыйаны көр",
        "talk": "Ырытыы",
        "views": "Көрүү",
        "toolbox": "Сэп-сэбиргэл",
        "tool-link-userrights": "{{GENDER:$1|Кыттааччы}} бөлөҕүн уларыт",
        "tool-link-userrights-readonly": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн көр",
        "tool-link-emailuser": "{{GENDER:$1|Кыттааччыга}} сурук суруйуу",
-       "userpage": "Кыттааччы туһунан сирэй",
-       "projectpage": "Бырайыак сирэйэ",
        "imagepage": "Билэ сирэйин көрүү",
        "mediawikipage": "Сурук сирэйэ",
        "templatepage": "Халыып сирэйэ",
        "uncategorizedcategories": "Ханнык да категорияҕа киирбэтэх категориялар",
        "uncategorizedimages": "Ханнык да категорияҕа киирбэтэх ойуулар",
        "uncategorizedtemplates": "Ханнык да категорияҕа киирбэтэх халыыптар",
+       "uncategorized-categories-exceptionlist": "# Манна Special:UncategorizedCategories ахтыллыа суохтаах категориялар испииһэктэрэ. Устуруока аайы биирдии, «*» бэлиэттэн саҕаланар. Атын бэлиэттэн саҕаланар устуруокалар (арыттан саҕаланар эмиэ) аахсыллыбаттар. Быһаарыы суруйарга «#» бэлиэни тутун.",
        "unusedcategories": "Туттуллубатах категориялар",
        "unusedimages": "Туттулубатах билэлэр",
        "wantedcategories": "Көрдөнүллэр категориялар",
index 5dd3079..1f5b5f9 100644 (file)
@@ -7,7 +7,8 @@
                        "Zordsdavini",
                        "לערי ריינהארט",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "Pabriežtė nūruodas:",
        "anontalk": "Aptarėms",
        "navigation": "Naršīms",
        "and": "&#32;ėr",
-       "qbfind": "Ėiškuotė",
-       "qbbrowse": "Naršītė",
-       "qbedit": "Taisītė",
-       "qbpageoptions": "Tas poslapis",
-       "qbmyoptions": "Mona poslapē",
        "faq": "TKK",
-       "faqpage": "Project:DOK",
        "actions": "Vēksmā",
        "namespaces": "Vardū srėtis",
        "variants": "Atmainā",
        "edit-local": "Taisītė vėitėni aprašīma",
        "create": "Padėrbtė",
        "create-local": "Prėkergtė vėitėni aprašīma",
-       "editthispage": "Taisītė ton poslapi",
-       "create-this-page": "Dėrbtė ton poslapi",
        "delete": "Trintė",
-       "deletethispage": "Trintė ton poslapi",
-       "undeletethispage": "Ton poslapi padėrbtė apent",
        "undelete_short": "Dėrbtė apent $1 {{PLURAL:$1:pakeitėma|pakeitėmus|pakeitėmu}}",
        "viewdeleted_short": "Veizietė $1 {{PLURAL:$1|ėštrinta keitėma|ėštrintus keitėmus|ėštrintū keitėmu}}",
        "protect": "Apsergietė",
        "protect_change": "pakeistė",
-       "protectthispage": "Apsergietė ton poslapi",
        "unprotect": "Keistė apsarga",
-       "unprotectthispage": "Keistė ton poslapė apsarga",
        "newpage": "Naus poslapis",
-       "talkpage": "Aptartė ton poslapi",
        "talkpagelinktext": "Aptarėms",
        "specialpage": "Specēlos poslapis",
        "personaltools": "Asabėnē rakondā",
-       "articlepage": "Veizietė straipsnė",
        "talk": "Aptarėms",
        "views": "Parveizė̄jėmā",
        "toolbox": "Rakondā",
        "tool-link-userrights": "Mainītė {{GENDER:$1|nauduotuoja|nauduotuojės}} gropės",
        "tool-link-emailuser": "Rašītė gromata {{GENDER:$1|tamou nauduotuojou}}",
-       "userpage": "Ruodītė nauduotuojė poslapi",
-       "projectpage": "Ruodītė pruojekta poslapi",
        "imagepage": "Veizietė abruozdielė poslapi",
        "mediawikipage": "Ruodītė pranešėma poslapi",
        "templatepage": "Ruodītė šabluona poslapi",
        "search-suggest": "Mažnē mīslėjėt ka $1",
        "search-rewritten": "Ruod kas ī soėiškuota pavadėnėmo „$1“. Mažnē geriau ėiškuotė „$2“?",
        "search-interwiki-caption": "Dokterėnē pruojektā",
-       "search-interwiki-default": "Soėiškuota nug $1ː",
+       "search-interwiki-default": "Soėiškuota nug $1:",
        "search-interwiki-more": "(daugiau)",
        "search-relatedarticle": "Sosėjė̄",
        "searchrelated": "sosėjė̄",
index da2d369..9daccbb 100644 (file)
        "anontalk": "Diskusia",
        "navigation": "Navigácia",
        "and": "&#32;a",
-       "qbfind": "Hľadať",
-       "qbbrowse": "Prehliadať",
-       "qbedit": "Upraviť",
-       "qbpageoptions": "Táto stránka",
-       "qbmyoptions": "Moje stránky",
        "faq": "Často kladené otázky",
-       "faqpage": "Project:Často kladené otázky",
        "actions": "Operácie",
        "namespaces": "Menné priestory",
        "variants": "Varianty",
        "edit-local": "Upraviť miestny popis",
        "create": "Vytvoriť",
        "create-local": "Pridať miestny popis",
-       "editthispage": "Upraviť túto stránku",
-       "create-this-page": "Vytvoriť túto stránku",
        "delete": "Vymazať",
-       "deletethispage": "Vymazať túto stránku",
-       "undeletethispage": "Obnoviť túto stránku",
        "undelete_short": "Obnoviť {{PLURAL:$1|jednu úpravu|$1 úpravy|$1 úprav}}",
        "viewdeleted_short": "Zobraziť {{PLURAL:$1|jednu zmazanú úpravu|$1 zmazané úpravy|$1 zmazaných úprav}}",
        "protect": "Zamknúť",
        "protect_change": "Zmeniť",
-       "protectthispage": "Zamknúť túto stránku",
        "unprotect": "Zmeniť stav ochrany",
-       "unprotectthispage": "Zmeniť stav ochrany tejto stránky",
        "newpage": "Nová stránka",
-       "talkpage": "Diskusia k stránke",
        "talkpagelinktext": "diskusia",
        "specialpage": "Špeciálna stránka",
        "personaltools": "Osobné nástroje",
-       "articlepage": "Zobraziť stránku",
        "talk": "Diskusia",
        "views": "Zobrazenia",
        "toolbox": "Nástroje",
        "tool-link-userrights": "Zmeniť používateľské skupiny {{GENDER:$1|tohoto použivateľa|tejto používateľky}}",
        "tool-link-userrights-readonly": "Zobraziť {{GENDER:$1|používateľské}} skupiny",
        "tool-link-emailuser": "Poslať e-mail {{GENDER:$1|tomuto používateľovi|tejto používateľke}}",
-       "userpage": "Zobraziť stránku používateľa",
-       "projectpage": "Zobraziť projektovú stránku",
        "imagepage": "Zobraziť stránku súboru",
        "mediawikipage": "Zobraziť stránku so správou",
        "templatepage": "Zobraziť stránku šablóny",
        "mw-widgets-mediasearch-noresults": "Neboli nájdené žiadne výsledky.",
        "mw-widgets-titleinput-description-new-page": "stránka zatiaľ neexistuje",
        "mw-widgets-titleinput-description-redirect": "presmerovanie na $1",
+       "date-range-from": "Od dátumu:",
+       "date-range-to": "Po dátum:",
        "randomrootpage": "Náhodná koreňová stránka",
        "changecredentials": "Zmena prihlasovacích údajov",
        "removecredentials": "Odstránenie prihlasovacích údajov"
index 06889f4..c23b14b 100644 (file)
        "anontalk": "Diskutimi",
        "navigation": "Navigimi",
        "and": "&#32;dhe",
-       "qbfind": "Gjeni",
-       "qbbrowse": "Shfletoni",
-       "qbedit": "Redakto",
-       "qbpageoptions": "Kjo faqe",
-       "qbmyoptions": "Faqet e mia",
        "faq": "Pyetje të shpeshta",
-       "faqpage": "Project: Pyetje të shpeshta",
        "actions": "Veprimet",
        "namespaces": "Hapsirat e emrit",
        "variants": "Variantat",
        "edit-local": "Redakto përshkrimin lokal",
        "create": "Krijo",
        "create-local": "Shtonipërshkrimin lokal",
-       "editthispage": "Redakto këtë faqe",
-       "create-this-page": "Krijo këtë faqe",
        "delete": "Fshi",
-       "deletethispage": "Grise këtë faqe",
-       "undeletethispage": "Rikthe faqen",
        "undelete_short": "Anullo fshirjen {{PLURAL:$1|një redaktim|$1 redaktime}}",
        "viewdeleted_short": "Shiko {{PLURAL:$1|një redaktim të fshirë|$1 redaktime të fshira}}",
        "protect": "Mbroje",
        "protect_change": "ndrysho",
-       "protectthispage": "Mbroje këtë faqe",
        "unprotect": "Ndrysho mbrojtjen",
-       "unprotectthispage": "Ndrysho mbrojtjen e kësaj faqeje",
        "newpage": "Faqe e re",
-       "talkpage": "Diskuto rreth kësaj faqeje",
        "talkpagelinktext": "Diskuto",
        "specialpage": "Faqe speciale",
        "personaltools": "Mjetet e mia",
-       "articlepage": "Shiko faqen me përmbajtje",
        "talk": "Diskutimet",
        "views": "Shikime",
        "toolbox": "Mjete",
        "tool-link-userrights": "Ndrysho grupet e {{GENDER:$1|përdoruesit}}",
        "tool-link-userrights-readonly": "Shiko grupet e {{GENDER:$1|përdoruesit}}",
        "tool-link-emailuser": "Dërgo email {{GENDER:$1|user}}",
-       "userpage": "Shfaq faqen e përdoruesit",
-       "projectpage": "Shfaq faqen e projektit",
        "imagepage": "Shfaq faqen e skedës",
        "mediawikipage": "Shiko faqen e mesazhit",
        "templatepage": "Shiko faqen e shabllonit",
index 5efa5f7..e9d45b7 100644 (file)
        "anontalk": "Diskussion",
        "navigation": "Navigering",
        "and": "&#32;och",
-       "qbfind": "Hitta",
-       "qbbrowse": "Bläddra igenom",
-       "qbedit": "Redigera",
-       "qbpageoptions": "Denna sida",
-       "qbmyoptions": "Mina sidor",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Åtgärder",
        "namespaces": "Namnrymder",
        "variants": "Varianter",
        "edit-local": "Redigera lokal beskrivning",
        "create": "Skapa",
        "create-local": "Lägg till en lokal beskrivning",
-       "editthispage": "Redigera denna sida",
-       "create-this-page": "Skapa denna sida",
        "delete": "Radera",
-       "deletethispage": "Radera denna sida",
-       "undeletethispage": "Återställ denna sida",
        "undelete_short": "Återställ {{PLURAL:$1|en version|$1 versioner}}",
        "viewdeleted_short": "Visa {{PLURAL:$1|en raderad redigering|$1 raderade redigeringar}}",
        "protect": "Skrivskydda",
        "protect_change": "ändra",
-       "protectthispage": "Skrivskydda denna sida",
        "unprotect": "Ändra skydd",
-       "unprotectthispage": "Ändra skyddet på denna sidan",
        "newpage": "Ny sida",
-       "talkpage": "Diskutera denna sida",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Specialsida",
        "personaltools": "Personliga verktyg",
-       "articlepage": "Visa innehållssida",
        "talk": "Diskussion",
        "views": "Visningar",
        "toolbox": "Verktyg",
        "tool-link-userrights": "Ändra {{GENDER:$1|användargrupper}}",
        "tool-link-userrights-readonly": "Visa {{GENDER:$1|användargrupper}}",
        "tool-link-emailuser": "Skicka e-post till denna {{GENDER:$1|användare}}",
-       "userpage": "Visa användarsida",
-       "projectpage": "Visa projektsida",
        "imagepage": "Visa filsida",
        "mediawikipage": "Visa meddelandesida",
        "templatepage": "Visa mallsida",
index a2114de..05cf315 100644 (file)
        },
        "tog-underline": "Subliña ligasaun sira:",
        "tog-hideminor": "Lá'os hatudu muda ki-ki'ik iha mudansa foufoun sira",
-       "tog-usenewrc": "Iha lista \"mudansa foufoun sira\" no \"lista hateke\": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida (presiza JavaScript)",
-       "tog-showtoolbar": "Hatudu kaixa edita (presiza JavaScript)",
+       "tog-usenewrc": "Iha lista \"mudansa foufoun sira\" no \"lista hateke\": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida",
+       "tog-showtoolbar": "Hatudu kaixa edita",
        "tog-watchcreations": "Hateke pájina no imajen sira-ne'ebé ha'u kria/tau iha arkivu laran",
        "tog-watchdefault": "Hateke pájina sira-ne'ebé ha'u edita",
        "tog-watchmoves": "Hateke pájina sira-ne'ebé ha'u book",
        "tog-watchdeletion": "Hateke pájina sira-ne'ebé ha'u halakon",
        "tog-minordefault": "Edita hotu-hotu \"ki'ik\"",
-       "tog-oldsig": "Asinatura atuál",
+       "tog-oldsig": "Asinatura atuál:",
        "tog-watchlisthideown": "La hatudu ha'u-nia edita iha lista hateke",
        "tog-watchlisthidebots": "Hamsumik bot iha lista hateke",
        "tog-watchlisthideminor": "Hamsumik muda ki-ki'ik iha lista hateke",
        "oct": "Out.",
        "nov": "Nov.",
        "dec": "Dez.",
+       "january-date": "$1 Janeiru",
+       "february-date": "$1 Fevereiru",
+       "march-date": "$1 Marsu",
+       "april-date": "$1 Abríl",
+       "may-date": "$1 Maiu",
+       "june-date": "$1 Juñu",
+       "july-date": "$1 Jullu",
+       "august-date": "$1 Agostu",
+       "september-date": "$1 Setembru",
+       "october-date": "$1 Outubru",
+       "november-date": "$1 Novembru",
+       "december-date": "$1 Dezembru",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoria}}",
        "category_header": "Artigu iha kategoría \"$1\"",
        "subcategories": "Sub-kategoria sira",
        "moredotdotdot": "Barak liu...",
        "mypage": "Ha'u-nia pájina",
        "mytalk": "Diskusaun",
-       "anontalk": "Diskusaun ba IP ne'e",
+       "anontalk": "Diskusaun",
        "navigation": "Hatudu-dalan",
        "and": "&#32;ho",
-       "qbfind": "Hetan",
-       "qbedit": "Edita",
-       "qbpageoptions": "Pájina ne'e",
-       "qbmyoptions": "Ha'u-nia pájina sira",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aksaun sira",
+       "namespaces": "Espasu pájina nian",
        "errorpagetitle": "Sala",
        "returnto": "Fali ba $1.",
        "tagline": "Husi {{SITENAME}}",
        "view": "Lee",
        "edit": "Edita",
        "create": "Kria",
-       "editthispage": "Edita pájina ne'e",
-       "create-this-page": "Kria pájina ne'e",
        "delete": "Halakon",
-       "deletethispage": "Halakon pájina ne'e",
        "undelete_short": "Restaurar {{PLURAL:$1|versaun ida|versaun $1}}",
        "protect": "Proteje",
        "protect_change": "muda",
-       "protectthispage": "Proteje pájina ne'e",
        "unprotect": "Muda protesaun",
-       "unprotectthispage": "Muda protesaun pájina ne'e nian",
        "newpage": "Pájina foun",
-       "talkpage": "Diskusaun kona-ba pájina ne'e",
        "talkpagelinktext": "Diskusaun",
        "specialpage": "Pájina espesiál",
        "talk": "Diskusaun",
        "toolbox": "Kaixa besi nian",
-       "userpage": "Haree pájina uza-na'in",
-       "projectpage": "Haree pájina projetu nian",
+       "tool-link-userrights": "Muda grupu {{GENDER:$1|uza-na'in}} nian",
+       "tool-link-userrights-readonly": "Haree grupu {{GENDER:$1|uza-na'in}} nian",
        "imagepage": "Haree pájina imajen nian",
        "mediawikipage": "Haree pájina mensajen nian",
        "viewhelppage": "Haree pájina ajuda",
        "viewsourcetext": "Ó bele lee no kopia testu pájina nian:",
        "namespaceprotected": "Ó la iha priviléjiu ba edita pájina sira iha espasu '''$1'''.",
        "ns-specialprotected": "La ema ida bele edita pájina espesiál sira.",
+       "welcomeuser": "Benvindu, $1!",
        "yourname": "Naran uza-na'in:",
+       "userlogin-yourname": "Naran uza-na'in",
        "login": "Log in",
        "nav-login-createaccount": "Log in / kriar konta ida",
        "logout": "Husik",
index 101771d..aedf0b1 100644 (file)
        "anontalk": "พูดคุย",
        "navigation": "การนำทาง",
        "and": "&#32;และ",
-       "qbfind": "ค้นหา",
-       "qbbrowse": "สืบค้น",
-       "qbedit": "แก้ไข",
-       "qbpageoptions": "หน้านี้",
-       "qbmyoptions": "หน้าของฉัน",
        "faq": "คำถามที่พบบ่อย",
-       "faqpage": "Project:คำถามที่พบบ่อย",
        "actions": "ปฏิบัติการ",
        "namespaces": "เนมสเปซ",
        "variants": "สิ่งที่แตกต่าง",
        "edit-local": "แก้ไขคำอธิบายท้องถิ่น",
        "create": "สร้าง",
        "create-local": "เพิ่มคำอธิบายท้องถิ่น",
-       "editthispage": "แก้ไขหน้านี้",
-       "create-this-page": "สร้างหน้านี้",
        "delete": "ลบ",
-       "deletethispage": "ลบหน้านี้",
-       "undeletethispage": "กู้คืนหน้านี้",
        "undelete_short": "กู้คืนการแก้ไข $1 ครั้ง",
        "viewdeleted_short": "ดู $1 การแก้ไขที่ถูกลบ",
        "protect": "ล็อก",
        "protect_change": "เปลี่ยน",
-       "protectthispage": "ล็อกหน้านี้",
        "unprotect": "เปลี่ยนการล็อก",
-       "unprotectthispage": "เปลี่ยนการล็อกหน้านี้",
        "newpage": "หน้าใหม่",
-       "talkpage": "อภิปรายหน้านี้",
        "talkpagelinktext": "พูดคุย",
        "specialpage": "หน้าพิเศษ",
        "personaltools": "เครื่องมือส่วนตัว",
-       "articlepage": "ดูหน้าเนื้อหา",
        "talk": "อภิปราย",
        "views": "ดู",
        "toolbox": "เครื่องมือ",
        "tool-link-userrights": "เปลี่ยนกลุ่ม{{GENDER:$1|ผู้ใช้}}",
        "tool-link-userrights-readonly": "ดูกลุ่ม{{GENDER:$1|ผู้ใช้}}",
        "tool-link-emailuser": "ส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้",
-       "userpage": "ดูหน้าผู้ใช้",
-       "projectpage": "ดูหน้าโครงการ",
        "imagepage": "ดูหน้าไฟล์",
        "mediawikipage": "ดูหน้าข้อความ",
        "templatepage": "ดูหน้าแม่แบบ",
index 90249ea..e771d78 100644 (file)
        "anontalk": "Бәхәс",
        "navigation": "Навигация",
        "and": "&#32;һәм",
-       "qbfind": "Эзләү",
-       "qbbrowse": "Карау",
-       "qbedit": "Үзгәртү",
-       "qbpageoptions": "Бу бит",
-       "qbmyoptions": "Битләрем",
        "faq": "ЕБС",
-       "faqpage": "Project:ЕБС",
        "actions": "Гамәлләр",
        "namespaces": "Исемнәр мәйданы",
        "variants": "Вариантлар",
        "edit-local": "Локаль тасвирламаны үзгәртү",
        "create": "Төзү",
        "create-local": "Локаль тасвирлама өстәү",
-       "editthispage": "Бу битне үзгәртү",
-       "create-this-page": "Бу битне төзү",
        "delete": "Бетерү",
-       "deletethispage": "Бу битне бетерү",
-       "undeletethispage": "Бу битне кайтару",
        "undelete_short": "$1 {{PLURAL:$1|төзәтмәне|$1 төзәтмә}} торгызу",
        "viewdeleted_short": "{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау\n{{PLURAL:$1|бетерелгән төзәтмәне|$1 бетерелгән төзәтмәне}} карау",
        "protect": "Яклау",
        "protect_change": "үзгәртү",
-       "protectthispage": "Бу битне яклау",
        "unprotect": "Яклауны үзгәртү",
-       "unprotectthispage": "Бу битнең яклауын үзгәртү",
        "newpage": "Яңа бит",
-       "talkpage": "Бит турында фикер алышу",
        "talkpagelinktext": "бәхәс",
        "specialpage": "Махсус бит",
        "personaltools": "Шәхси кораллар",
-       "articlepage": "Мәкаләне карау",
        "talk": "Бәхәс",
        "views": "Караулар",
        "toolbox": "Кораллар",
        "tool-link-userrights": "{{GENDER:$1|Кулланучының}} төркемнәрен алмаштыру",
        "tool-link-userrights-readonly": "{{GENDER:$1|Кулланучының}} төркемнәрен карау",
        "tool-link-emailuser": "{{GENDER:$1|Кулланучыга}} хат язу",
-       "userpage": "Кулланучы битен карау",
-       "projectpage": "Проект битен карау",
        "imagepage": "Файл битен карау",
        "mediawikipage": "Хәбәр битен карау",
        "templatepage": "Үрнәк битен карау",
index b94ce16..1ac6e04 100644 (file)
        "anontalk": "اس آئی پی پتہ کا تبادلۂ خیال",
        "navigation": "رہنمائی",
        "and": "&#32;اور",
-       "qbfind": "تلاش",
-       "qbbrowse": "مطالعہ",
-       "qbedit": "ترمیم",
-       "qbpageoptions": "یہ صفحہ",
-       "qbmyoptions": "میرے صفحات",
        "faq": "عام طور پر پوچھے جانے والے سوالات",
-       "faqpage": "Project:عمومی سوالات",
        "actions": "اقدامات",
        "namespaces": "نام فضا",
        "variants": "متغیرات",
        "edit-local": "مقامی وضاحت کی ترمیم",
        "create": "تخلیق",
        "create-local": "مقامی وضاحت کا اندراج",
-       "editthispage": "اس صفحہ میں ترمیم کریں",
-       "create-this-page": "اس صفحہ کو تخلیق کریں",
        "delete": "حذف",
-       "deletethispage": "یہ صفحہ حذف کریں",
-       "undeletethispage": "یہ صفحہ بحال کریں",
        "undelete_short": "بحال {{PLURAL:$1|ایک ترمیم|$1 ترامیم}}",
        "viewdeleted_short": "{{PLURAL:$1|ایک ترمیم حذف ہو چکی|$1 ترامیم حذف ہو چکیں}} دیکھیں",
        "protect": "محفوظ",
        "protect_change": "تبدیل کریں",
-       "protectthispage": "اس صفحے کو محفوظ کریں",
        "unprotect": "حفاظت میں تبدیلی",
-       "unprotectthispage": "اِسے صفحے کی حفاظت بدلیں",
        "newpage": "نیا صفحہ",
-       "talkpage": "اس صفحہ پر تبادلۂ خیال کریں",
        "talkpagelinktext": "تبادلۂ خیال",
        "specialpage": "خصوصی صفحہ",
        "personaltools": "ذاتی آلات",
-       "articlepage": "مندرجاتی صفحہ دیکھیے",
        "talk": "تبادلہٴ خیال",
        "views": "مشاہدات",
        "toolbox": "آلات",
        "tool-link-userrights": "حلقہ ہائے {{GENDER:$1|صارف}} میں تبدیلی",
        "tool-link-userrights-readonly": "حلقے{{GENDER:$1|}}دیکھیں",
        "tool-link-emailuser": "اس {{GENDER:$1|صارف}} کو برقی خط لکھیں",
-       "userpage": "صارف کا صفحہ دیکھیے",
-       "projectpage": "منصوبہ کا صفحہ دیکھیے",
        "imagepage": "فائل کا صفحہ دیکھیے",
        "mediawikipage": "پیغام کا صفحہ دیکھیے",
        "templatepage": "سانچہ کا صفحہ دیکھیے",
index d673d2f..744918b 100644 (file)
        "anontalk": "Thảo luận",
        "navigation": "Xem nhanh",
        "and": "&#32;và",
-       "qbfind": "Tìm kiếm",
-       "qbbrowse": "Duyệt",
-       "qbedit": "Sửa đổi",
-       "qbpageoptions": "Trang này",
-       "qbmyoptions": "Trang cá nhân",
        "faq": "Câu hỏi thường gặp",
-       "faqpage": "Project:Các câu hỏi thường gặp",
        "actions": "Tác vụ",
        "namespaces": "Không gian tên",
        "variants": "Biến thể",
        "edit-local": "Sửa miêu tả địa phương",
        "create": "Tạo",
        "create-local": "Thêm miêu tả địa phương",
-       "editthispage": "Sửa đổi trang này",
-       "create-this-page": "Tạo trang này",
        "delete": "Xóa",
-       "deletethispage": "Xóa trang này",
-       "undeletethispage": "Phục hồi trang này",
        "undelete_short": "Phục hồi {{PLURAL:$1|một sửa đổi|$1 sửa đổi}}",
        "viewdeleted_short": "Xem {{PLURAL:$1|sửa đổi|$1 sửa đổi}} đã xóa",
        "protect": "Khóa",
        "protect_change": "thay đổi",
-       "protectthispage": "Khóa trang này",
        "unprotect": "Đổi mức khóa",
-       "unprotectthispage": "Thay đổi mức khóa của trang này",
        "newpage": "Trang mới",
-       "talkpage": "Thảo luận về trang này",
        "talkpagelinktext": "Thảo luận",
        "specialpage": "Trang đặc biệt",
        "personaltools": "Công cụ cá nhân",
-       "articlepage": "Xem trang nội dung",
        "talk": "Thảo luận",
        "views": "Các hiển thị",
        "toolbox": "Công cụ",
        "tool-link-userrights": "Thay đổi nhóm {{GENDER:$1}}người dùng",
        "tool-link-userrights-readonly": "Xem {{GENDER:$1}}nhóm người dùng",
        "tool-link-emailuser": "Gửi thư cho {{GENDER:$1}}người dùng này",
-       "userpage": "Xem trang thành viên",
-       "projectpage": "Xem trang dự án",
        "imagepage": "Xem trang tập tin",
        "mediawikipage": "Thông điệp giao diện",
        "templatepage": "Xem trang bản mẫu",
        "selfredirect": "<strong>Cảnh báo:</strong> Bạn sắp đổi hướng trang này đến chính trang này.\nCó lẽ bạn đã định rõ mục tiêu sai hoặc bạn đang sửa trang sai.\nNếu bạn bấm “$1” lần nữa, trang đổi hướng sẽ được tạo ra.",
        "missingcommenttext": "Xin hãy gõ vào lời bàn luận ở dưới.",
        "missingcommentheader": "<strong>Nhắc nhở:</strong> Bạn chưa ghi chủ đề/tiêu đề cho bàn luận này.\nNếu bạn nhấn nút “$1” lần nữa, sửa đổi của bạn sẽ được lưu mà không có đề mục.",
-       "summary-preview": "Xem trước dòng tóm lược:",
+       "summary-preview": "Xem trước dòng tóm lược sửa đổi:",
        "subject-preview": "Xem trước đề mục:",
        "previewerrortext": "Có lỗi xảy ra khi xem trước những thay đổi của bạn.",
        "blockedtitle": "Thành viên bị cấm",
        "readonlywarning": "<strong>CẢNH BÁO: Cơ sở dữ liệu đã bị khóa để bảo dưỡng, do đó bạn không thể lưu các sửa đổi của mình. Bạn nên cắt-dán đoạn bạn vừa sửa vào một tập tin và lưu nó lại để sửa đổi sau này.</strong>\n\nQuản trị viên hệ thống khi khóa dữ liệu đã đưa ra lý do: $1",
        "protectedpagewarning": "'''Cảnh báo: Trang này đã bị khóa và chỉ có các thành viên có quyền quản lý mới có thể sửa được.'''\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
        "semiprotectedpagewarning": "'''Lưu ý:''' Trang này đã bị khóa nên chỉ có các thành viên có tài khoản mới có thể sửa đổi được.\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
-       "cascadeprotectedwarning": "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có quyền quản lý mới có thể sửa đổi được, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
+       "cascadeprotectedwarning": "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có [[Special:ListGroupRights|quyền quản lý]] mới có thể sửa đổi, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
        "titleprotectedwarning": "'''Cảnh báo:  Trang này đã bị khóa và bạn phải có một số [[Special:ListGroupRights|quyền nhất định]] mới có thể tạo trang.'''\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
        "templatesused": "{{PLURAL:$1|Bản mẫu|Các bản mẫu}} dùng trong trang này:",
        "templatesusedpreview": "{{PLURAL:$1|Bản mẫu|Các bản mẫu}} sẽ được dùng trong trang này:",
        "post-expand-template-argument-warning": "Cảnh báo: Trang này có chứa ít nhất một tham số bản mẫu có kích thước bung ra quá lớn.\nNhững tham số này sẽ bị bỏ đi.",
        "post-expand-template-argument-category": "Trang có chứa tham số bản mẫu bị loại bỏ",
        "parser-template-loop-warning": "Phát hiện bản mẫu lặp vòng: [[$1]]",
+       "template-loop-category": "Trang có bản mẫu lặp vòng",
+       "template-loop-category-desc": "Trang chứa một hoặc nhiều bản mẫu lặp vòng, tức là những bản mẫu tự gọi đệ quy chính nó.",
        "parser-template-recursion-depth-warning": "Bản mẫu đã vượt quá giới hạn về độ sâu đệ quy ($1)",
        "language-converter-depth-warning": "Đã vượt quá giới hạn độ sâu của bộ chuyển đổi ngôn ngữ ($1)",
        "node-count-exceeded-category": "Trang có số nốt vượt quá giới hạn cho phép",
        "page_first": "đầu",
        "page_last": "cuối",
        "histlegend": "Chọn so sánh: Đánh dấu để chọn các phiên bản để so sánh rồi nhấn Enter hoặc nút ở dưới.<br />\nChú giải: '''({{int:cur}})''' = khác với phiên bản hiện hành, '''({{int:last}})''' = khác với phiên bản trước, '''{{int:minoreditletter}}''' = sửa đổi nhỏ.",
-       "history-fieldset-title": "Tìm trong lịch sử",
-       "history-show-deleted": "Chỉ bị xóa",
+       "history-fieldset-title": "Tìm trong lịch sử trang",
+       "history-show-deleted": "Chỉ những sửa đổi bị xóa",
        "histfirst": "cũ nhất",
        "histlast": "mới nhất",
        "historysize": "({{PLURAL:$1|1 byte|$1 byte}})",
        "search-file-match": "(khớp nội dung tập tin)",
        "search-suggest": "Có phải bạn muốn tìm: $1",
        "search-rewritten": "Đang xem các kết quả cho $1. Tìm kiếm cho $2 thay thế.",
-       "search-interwiki-caption": "Các dự án liên quan",
+       "search-interwiki-caption": "Kết quả từ các dự án liên quan",
        "search-interwiki-default": "Kết quả từ $1:",
        "search-interwiki-more": "(thêm)",
        "search-interwiki-more-results": "thêm kết quả",
        "saveusergroups": "Lưu nhóm {{GENDER:$1}}người dùng",
        "userrights-groupsmember": "Thuộc nhóm:",
        "userrights-groupsmember-auto": "Ngầm thuộc nhóm:",
-       "userrights-groups-help": "Bạn có thể xếp thành viên này vào nhóm khác:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể loại thành viên ra khỏi nhóm một khi bạn đã đưa thành viên vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể trì hoãn thời hạn của nhóm này; bạn không thể đẩy sớm thời hạn.",
+       "userrights-groups-help": "Bạn có thể thay đổi các nhóm người dùng của thành viên này:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể xoá thành viên ra khỏi nhóm này một khi bạn đã thêm họ vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể giảm thời hạn thành viên được ở trong nhóm này; bạn không thể tăng thời hạn đó lên được.",
        "userrights-reason": "Lý do:",
        "userrights-no-interwiki": "Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.",
        "userrights-nodatabase": "Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Xem",
        "rcfilters-activefilters": "Bộ lọc hiện hành",
+       "rcfilters-savedqueries-setdefault": "Đặt làm mặc định",
+       "rcfilters-savedqueries-unsetdefault": "Loại bỏ mặc định",
        "rcfilters-restore-default-filters": "Mặc định lại các bộ lọc",
        "rcfilters-clear-all-filters": "Xóa sạch các bộ lọc",
        "rcfilters-search-placeholder": "Lọc các thay đổi gần đây (duyệt hoặc bắt đầu đánh chữ)",
        "rcfilters-invalid-filter": "Bộ lọc không hợp lệ",
        "rcfilters-empty-filter": "Không có bộ lọc hiện hành. Tất cả các đóng góp được hiển thị.",
        "rcfilters-filterlist-title": "Bộ lọc",
+       "rcfilters-highlightbutton-title": "Làm nổi bật kết quả",
+       "rcfilters-highlightmenu-title": "Chọn màu",
+       "rcfilters-highlightmenu-help": "Chọn màu để làm nổi bật thuộc tính này",
        "rcfilters-filterlist-noresults": "Không tìm thấy bộ lọc",
+       "rcfilters-noresults-conflict": "Không tìm thấy kết quả nào do tiêu chí tìm kiếm đang bị mâu thuẫn",
        "rcfilters-filtergroup-registration": "Trạng thái đăng ký thành viên",
        "rcfilters-filter-registered-label": "Đã đăng ký",
        "rcfilters-filter-registered-description": "Người dùng đã đăng nhập.",
        "rcfilters-filter-unregistered-label": "Vô danh",
        "rcfilters-filter-unregistered-description": "Người dùng chưa đăng nhập.",
        "rcfilters-filtergroup-authorship": "Người sửa đổi",
-       "rcfilters-filter-editsbyself-label": "Bạn",
-       "rcfilters-filter-editsbyself-description": "Các sửa đổi của bạn.",
-       "rcfilters-filter-editsbyother-label": "Người khác",
+       "rcfilters-filter-editsbyself-label": "Sửa đổi của bạn",
+       "rcfilters-filter-editsbyself-description": "Các sửa đổi do bạn tạo ra.",
+       "rcfilters-filter-editsbyother-label": "Sửa đổi của người khác",
        "rcfilters-filter-editsbyother-description": "Các sửa đổi của người khác.",
        "rcfilters-filtergroup-userExpLevel": "Trình độ (chỉ người dùng đã đăng ký)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Người mới đến",
        "rcfilters-filter-bots-description": "Các sửa đổi của công cụ tự động.",
        "rcfilters-filter-humans-label": "Con người (không phải bot)",
        "rcfilters-filter-humans-description": "Các sửa đổi của người thật.",
+       "rcfilters-filtergroup-reviewstatus": "Tình trạng tuần tra",
+       "rcfilters-filter-patrolled-label": "Đã được tuần tra",
+       "rcfilters-filter-patrolled-description": "Các sửa đổi đã được đánh dấu tuần tra.",
+       "rcfilters-filter-unpatrolled-label": "Chưa được tuần tra",
+       "rcfilters-filter-unpatrolled-description": "Các sửa đổi chưa được đánh dấu tuần tra.",
        "rcfilters-filtergroup-significance": "Sự quan trọng",
        "rcfilters-filter-minor-label": "Sửa đổi nhỏ",
        "rcfilters-filter-minor-description": "Các sửa đổi được tác giả đánh dấu là nhỏ.",
        "rcfilters-filter-major-label": "Sửa đổi không nhỏ",
        "rcfilters-filter-major-description": "Các sửa đổi không được tác giả đánh dấu là nhỏ.",
+       "rcfilters-filtergroup-watchlist": "Các trang theo dõi",
+       "rcfilters-filter-watchlist-watched-label": "Nằm trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-watched-description": "Thay đổi trên các trang nằm trong danh sách theo dõi của bạn.",
+       "rcfilters-filter-watchlist-watchednew-label": "Các sửa đổi mới trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-watchednew-description": "Thay đổi mới trên các trang nằm trong danh sách theo dõi kể từ lần cuối bạn xem trang đó.",
+       "rcfilters-filter-watchlist-notwatched-label": "Không trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-notwatched-description": "Sửa đổi trên các trang không nằm trong danh sách theo dõi của bạn.",
        "rcfilters-filtergroup-changetype": "Kiểu thay đổi",
        "rcfilters-filter-pageedits-label": "Sửa đổi trang",
-       "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung, thảo luận, miêu tả thể loại, …",
+       "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung wiki, các trang thảo luận, các miêu tả thể loại…",
        "rcfilters-filter-newpages-label": "Tạo trang",
        "rcfilters-filter-newpages-description": "Các sửa đổi tạo trang mới.",
        "rcfilters-filter-categorization-label": "Thay đổi thể loại",
        "rcfilters-filter-categorization-description": "Các tác vụ xếp trang vào thể loại hoặc gỡ trang khỏi thể loại.",
        "rcfilters-filter-logactions-label": "Tác vụ được ghi trong nhật trình",
-       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên, …",
+       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Bộ lọc \"Các sửa đổi nhỏ\" mâu thuẫn với một hoặc nhiều bộ lọc Loại sửa đổi, bởi có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\". Các bộ lọc mâu thuẫn với nhau được đánh dấu trong mục Bộ lọc hiện hành ở trên.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Một số loại sửa đổi không thể được đánh dấu là \"nhỏ\", do đó bộ lọc này mâu thuẫn với các bộ lọc Loại sửa đổi dưới đây: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Bộ lọc Loại sửa đổi này mâu thuẫn với bộ lọc \"Các sửa đổi nhỏ\". Có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\".",
+       "rcfilters-filtergroup-lastRevision": "Phiên bản mới nhất",
+       "rcfilters-filter-lastrevision-label": "Phiên bản mới nhất",
+       "rcfilters-filter-lastrevision-description": "Sửa đổi mới nhất trên một trang.",
+       "rcfilters-filter-previousrevision-label": "Các sửa đổi trước",
+       "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là sửa đổi mới nhất của trang.",
        "rcnotefrom": "Dưới đây là {{PLURAL:$5|thay đổi duy nhất|các thay đổi}} từ <strong>$3 $4</strong> (hiển thị tối đa <strong>$1</strong> thay đổi).",
+       "rclistfromreset": "Đặt lại lựa chọn ngày",
        "rclistfrom": "Xem các thay đổi từ $2 $3 trở về sau",
        "rcshowhideminor": "$1 sửa đổi nhỏ",
        "rcshowhideminor-show": "Hiện",
        "php-uploaddisabledtext": "Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.",
        "uploadscripted": "Tập tin này có chứa mã HTML hoặc kịch bản có thể khiến trình duyệt web thông dịch sai.",
        "upload-scripted-pi-callback": "Không thể tải lên một tập tin có chứa lệnh xử lý xml-stylesheet.",
+       "upload-scripted-dtd": "Không thể tải lên các tập tin SVG chứa khai báo DTD không đúng chuẩn.",
        "uploaded-script-svg": "Tìm thấy phần tử “$1” có khả năng chạy kịch bản trong tập tin SVG được tải lên.",
        "uploaded-hostile-svg": "Tìm thấy CSS nguy hiểm trong phần tử style của tập tin SVG được tải lên.",
        "uploaded-event-handler-on-svg": "Không cho phép đặt thuộc tính xử lý sự kiện <code>$1=\"$2\"</code> trong tập tin SVG.",
        "unblocked-id": "$1 đã hết bị cấm",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] đã được bỏ cấm.",
        "blocklist": "Người dùng bị cấm",
+       "autoblocklist": "Các lệnh cấm tự động",
+       "autoblocklist-submit": "Tìm kiếm",
        "ipblocklist": "Người dùng bị cấm",
        "ipblocklist-legend": "Tìm một thành viên bị cấm",
        "blocklist-userblocks": "Ẩn tác vụ cấm tài khoản",
        "confirmrecreate-noreason": "Người dùng [[User:$1|$1]] ([[User talk:$1|talk]]) xóa trang này sau khi bạn bắt đầu sửa đổi nó. Bạn có chắc chắn muốn tạo lại trang này không?",
        "recreate": "Tạo ra lại",
        "unit-pixel": "điểm ảnh",
+       "confirm-purge-title": "Làm mới trang này",
        "confirm_purge_button": "Làm tươi",
        "confirm-purge-top": "Làm sạch vùng nhớ đệm của trang này?",
        "confirm-purge-bottom": "Làm mới một trang sẽ giúp xóa bộ đệm và buộc hiển thị phiên bản gần nhất.",
        "htmlform-user-not-valid": "<strong>$1</strong> không phải là tên người dùng.",
        "logentry-delete-delete": "$1 {{GENDER:$2}}đã xóa trang “$3”",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2}}đã xóa trang đổi hướng $3 bằng cách ghi đè",
-       "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang “$3”",
+       "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một mục nhật trình|$5 mục nhật trình}} về $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một phiên bản|$5 phiên bản}} trang $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của các mục nhật trình về $3",
        "mw-widgets-titleinput-description-redirect": "đổi hướng đến $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Thêm thể loại…",
        "mw-widgets-usersmultiselect-placeholder": "Thêm nữa…",
+       "date-range-from": "Từ ngày:",
+       "date-range-to": "Đến ngày:",
        "sessionmanager-tie": "Không thể kết hợp nhiều yêu cầu xác thực loại: $1.",
        "sessionprovider-generic": "phiên $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dựa trên cookie",
        "restrictionsfield-label": "Các dải IP được cho phép:",
        "restrictionsfield-help": "Mỗi dòng một địa chỉ IP hoặc dải CIDR. Để kích hoạt tất cả mọi địa chỉ IP, sử dụng:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "phiên bản $1",
-       "pageid": "số trang $1"
+       "pageid": "số trang $1",
+       "gotointerwiki": "Rời khỏi {{SITENAME}}",
+       "gotointerwiki-invalid": "Tên trang chỉ định không hợp lệ.",
+       "pagedata-title": "Dữ liệu về trang",
+       "pagedata-not-acceptable": "Không tìm thấy định dạng phù hợp. Các kiểu MIME được hỗ trợ: $1",
+       "pagedata-bad-title": "Tiêu đề không hợp lệ: $1."
 }
index b2018b4..e0eb586 100644 (file)
        "anontalk": "שמועס",
        "navigation": "נאַוויגאַציע",
        "and": "&#32;און",
-       "qbfind": "טרעף",
-       "qbbrowse": "בלעטערן",
-       "qbedit": "ענדערן",
-       "qbpageoptions": "דער בלאט",
-       "qbmyoptions": "מיינע בלעטער",
        "faq": "מערסטע געפרעגטע פראגעס",
-       "faqpage": "Project:מערסטע געפרעגט פראגעס",
        "actions": "אַקציעס",
        "namespaces": "נאָמענטיילן",
        "variants": "װאַריאַנטן",
        "edit-local": "רעדאקטירן לאקאלע באשרײַבונג",
        "create": "שאַפֿן",
        "create-local": "צולייגן לאקאלע באשרײַבונג",
-       "editthispage": "ענדערן דעם בלאט",
-       "create-this-page": "שאַפֿן דעם בלאַט",
        "delete": "אויסמעקן",
-       "deletethispage": "אויסמעקן דעם בלאַט",
-       "undeletethispage": "צוריקשטעלן דעם בלאט",
        "undelete_short": "צוריקשטעלן {{PLURAL:$1|איין רעדאַקטירונג|$1 רעדאַקטירונגען}}",
        "viewdeleted_short": "באַקוקן {{PLURAL:$1|איין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}",
        "protect": "באשיצן",
        "protect_change": "טוישן",
-       "protectthispage": "באשיץ דעם בלאט",
        "unprotect": "ענדערונג באַשיצונג",
-       "unprotectthispage": "ענדערן באַשיצונג פון דעם בלאַט",
        "newpage": "נייער בלאַט",
-       "talkpage": "שמועסט איבער דעם בלאט",
        "talkpagelinktext": "שמועס",
        "specialpage": "ספעציעלער בלאט",
        "personaltools": "פערזענלעכע געצייג",
-       "articlepage": "זען אינהאַלט בלאַט",
        "talk": "שמועס",
        "views": "קוקן",
        "toolbox": "געצייג",
        "tool-link-userrights": "ענדערן {{GENDER:$1|באַניצער}} גרופעס",
        "tool-link-userrights-readonly": "באקוקן {{GENDER:$1|באַניצער}} גרופעס",
        "tool-link-emailuser": "שיקן {{GENDER:$1|דעם באניצער|די באניצערין}} ע־פאסט",
-       "userpage": "זען באַניצער בלאַט",
-       "projectpage": "זען פראיעקט בלאַט",
        "imagepage": "זען טעקע בלאט",
        "mediawikipage": "זען מעלדונג בלאַט",
        "templatepage": "זעט מוסטער בלאט",
index 31e3ae9..ea48090 100644 (file)
        "anontalk": "讨论",
        "navigation": "导航",
        "and": "和",
-       "qbfind": "查找",
-       "qbbrowse": "浏览",
-       "qbedit": "编辑",
-       "qbpageoptions": "该页面",
-       "qbmyoptions": "我的页面",
        "faq": "常见问题",
-       "faqpage": "Project:常见问题",
        "actions": "操作",
        "namespaces": "命名空间",
        "variants": "变种",
        "edit-local": "编辑本地说明",
        "create": "创建",
        "create-local": "添加本地说明",
-       "editthispage": "编辑本页",
-       "create-this-page": "创建本页",
        "delete": "删除",
-       "deletethispage": "删除本页",
-       "undeletethispage": "还原本页",
        "undelete_short": "还原$1次编辑",
        "viewdeleted_short": "查看{{PLURAL:$1|$1个被删除的编辑}}",
        "protect": "保护",
        "protect_change": "更改",
-       "protectthispage": "保护本页",
        "unprotect": "更改保护",
-       "unprotectthispage": "更改本页的保护",
        "newpage": "新页面",
-       "talkpage": "讨论本页",
        "talkpagelinktext": "讨论",
        "specialpage": "特殊页面",
        "personaltools": "个人工具",
-       "articlepage": "查看内容页面",
        "talk": "讨论",
        "views": "视图",
        "toolbox": "工具",
        "tool-link-userrights": "更改{{GENDER:$1|用户}}组",
        "tool-link-userrights-readonly": "查看{{GENDER:$1|用户}}组",
        "tool-link-emailuser": "电邮联系该{{GENDER:$1|用户}}",
-       "userpage": "查看用户页面",
-       "projectpage": "查看项目页面",
        "imagepage": "查看文件页面",
        "mediawikipage": "查看信息页面",
        "templatepage": "查看模板页面",
        "gotointerwiki-invalid": "指定的标题无效。",
        "gotointerwiki-external": "您将要离开{{SITENAME}}来访问[[$2]],这是一个独立网站。\n\n'''[$1 继续访问$1]'''",
        "undelete-cantedit": "您不能还原该页面,因为您未被允许编辑该页面。",
-       "undelete-cantcreate": "您不能还原该页面,因为没有使用该页面名称的现有页面,并且您未被允许编辑该页面。"
+       "undelete-cantcreate": "您不能还原该页面,因为没有使用该页面名称的现有页面,并且您未被允许编辑该页面。",
+       "pagedata-title": "页面数据",
+       "pagedata-text": "此页面提供相关页面的数据界面。请在URL中,使用子页面语法提供页面标题。\n* 内容协商基于您客户端的接受标头应用。这意味着页面数据将以您客户端首选的格式提供。",
+       "pagedata-not-acceptable": "没有找到匹配的格式。支持的MIME类型:$1",
+       "pagedata-bad-title": "无效标题:$1。"
 }
index 66b5e7e..cb9b5ca 100644 (file)
        "anontalk": "對話",
        "navigation": "導覽",
        "and": "&#32;和&#32;",
-       "qbfind": "尋找",
-       "qbbrowse": "瀏覽",
-       "qbedit": "編輯",
-       "qbpageoptions": "此頁面",
-       "qbmyoptions": "我的頁面",
        "faq": "常見問題",
-       "faqpage": "Project:FAQ",
        "actions": "動作",
        "namespaces": "命名空間",
        "variants": "變體",
        "edit-local": "編輯本地說明",
        "create": "建立",
        "create-local": "新增本地說明",
-       "editthispage": "編輯本頁",
-       "create-this-page": "建立本頁",
        "delete": "刪除",
-       "deletethispage": "刪除此頁",
-       "undeletethispage": "取消刪除此頁",
        "undelete_short": "取消刪除 $1 項修訂",
        "viewdeleted_short": "檢視 {{PLURAL:$1|1 項已刪除的修訂|$1 項已刪除的修訂}}",
        "protect": "保護",
        "protect_change": "變更",
-       "protectthispage": "保護此頁面",
        "unprotect": "變更保護",
-       "unprotectthispage": "變更此頁的保護",
        "newpage": "新頁面",
-       "talkpage": "討論此頁面",
        "talkpagelinktext": "對話",
        "specialpage": "特殊頁面",
        "personaltools": "個人工具",
-       "articlepage": "檢視內容頁面",
        "talk": "討論",
        "views": "檢視",
        "toolbox": "工具",
        "tool-link-userrights": "變更{{GENDER:$1|使用者}}群組",
        "tool-link-userrights-readonly": "檢視{{GENDER:$1|使用者}}群組",
        "tool-link-emailuser": "寄信給這位{{GENDER:$1|使用者}}",
-       "userpage": "檢視使用者頁面",
-       "projectpage": "檢視專案頁面",
        "imagepage": "檢視檔案頁面",
        "mediawikipage": "檢視訊息頁面",
        "templatepage": "檢視模板頁面",
index 795d706..e2845a5 100644 (file)
@@ -234,6 +234,7 @@ $magicWords = [
        'stylepath'                 => [ '0', 'مسار_الهيئة', 'STYLEPATH' ],
        'grammar'                   => [ '0', 'قواعد_اللغة:', 'GRAMMAR:' ],
        'gender'                    => [ '0', 'نوع:', 'GENDER:' ],
+       'bidi'                      => [ '0', 'ثا:', 'BIDI:' ],
        'notitleconvert'            => [ '0', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ],
        'nocontentconvert'          => [ '0', '__لاتحويل_محتوى__', '__لاتم__', '__NOCONTENTCONVERT__', '__NOCC__' ],
        'currentweek'               => [ '1', 'أسبوع_حالي', 'CURRENTWEEK' ],
@@ -290,6 +291,7 @@ $magicWords = [
        'numberingroup'             => [ '1', 'عدد_في_المجموعة', 'عدد_في_مجموعة', 'NUMBERINGROUP', 'NUMINGROUP' ],
        'staticredirect'            => [ '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ],
        'protectionlevel'           => [ '1', 'مستوى_الحماية', 'PROTECTIONLEVEL' ],
+       'protectionexpiry'          => [ '1', 'انتهاء_الحماية', 'PROTECTIONEXPIRY' ],
        'cascadingsources'          => [ '1', 'مصادر_مضمنة', 'CASCADINGSOURCES' ],
        'formatdate'                => [ '0', 'تهيئة_التاريخ', 'تهيئة_تاريخ', 'formatdate', 'dateformat' ],
        'url_path'                  => [ '0', 'مسار', 'PATH' ],
@@ -311,13 +313,17 @@ $specialPageAliases = [
        'AllMyUploads'              => [ 'كل_ملفاتي' ],
        'Allpages'                  => [ 'كل_الصفحات' ],
        'ApiHelp'                   => [ 'مساعدة_إيه_بي_آي' ],
+       'ApiSandbox'                => [ 'ملعب_إيه_بي_آي' ],
        'Ancientpages'              => [ 'صفحات_قديمة' ],
        'Badtitle'                  => [ 'عنوان_سيئ' ],
        'Blankpage'                 => [ 'صفحة_فارغة' ],
        'Block'                     => [ 'منع', 'منع_أيبي', 'منع_مستخدم' ],
        'Booksources'               => [ 'مصادر_كتاب' ],
+       'BotPasswords'              => [ 'كلمات_سر_البوت' ],
        'BrokenRedirects'           => [ 'تحويلات_مكسورة' ],
        'Categories'                => [ 'تصنيفات' ],
+       'ChangeContentModel'        => [ 'تغيير_موديل_المحتوى' ],
+       'ChangeCredentials'         => [ 'تغيير_الاعتمادات' ],
        'ChangeEmail'               => [ 'تغيير_البريد' ],
        'ChangePassword'            => [ 'تغيير_كلمة_السر', 'ضبط_كلمة_السر' ],
        'ComparePages'              => [ 'مقارنة_الصفحات' ],
@@ -328,6 +334,7 @@ $specialPageAliases = [
        'DeletedContributions'      => [ 'مساهمات_محذوفة' ],
        'Diff'                      => [ 'فرق' ],
        'DoubleRedirects'           => [ 'تحويلات_مزدوجة' ],
+       'EditTags'                  => [ 'تعديل_الوسوم' ],
        'EditWatchlist'             => [ 'تعديل_قائمة_المراقبة' ],
        'Emailuser'                 => [ 'مراسلة_المستخدم' ],
        'ExpandTemplates'           => [ 'فرد_القوالب' ],
@@ -340,10 +347,12 @@ $specialPageAliases = [
        'JavaScriptTest'            => [ 'اختبار_جافا_سكريبت' ],
        'BlockList'                 => [ 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ],
        'LinkSearch'                => [ 'بحث_الوصلات' ],
+       'LinkAccounts'              => [ 'وصل_الحسابات' ],
        'Listadmins'                => [ 'عرض_الإداريين' ],
        'Listbots'                  => [ 'عرض_البوتات' ],
        'Listfiles'                 => [ 'عرض_الملفات', 'قائمة_الملفات', 'قائمة_الصور' ],
        'Listgrouprights'           => [ 'عرض_صلاحيات_المجموعات', 'صلاحيات_مجموعات_المستخدمين' ],
+       'Listgrants'                => [ 'عرض_المنح' ],
        'Listredirects'             => [ 'عرض_التحويلات' ],
        'ListDuplicatedFiles'       => [ 'عرض_الملفات_المكررة', 'عرض_تكرار_الملفات' ],
        'Listusers'                 => [ 'عرض_المستخدمين', 'قائمة_المستخدمين' ],
@@ -384,6 +393,7 @@ $specialPageAliases = [
        'Recentchanges'             => [ 'أحدث_التغييرات' ],
        'Recentchangeslinked'       => [ 'أحدث_التغييرات_الموصولة', 'تغييرات_مرتبطة' ],
        'Redirect'                  => [ 'تحويل' ],
+       'RemoveCredentials'         => [ 'إزالة_الاعتمادات' ],
        'ResetTokens'               => [ 'إعادة_ضبط_المفاتيح' ],
        'Revisiondelete'            => [ 'حذف_مراجعة', 'حذف_نسخة' ],
        'RunJobs'                   => [ 'تشغيل_الوظائف' ],
@@ -399,6 +409,7 @@ $specialPageAliases = [
        'Uncategorizedpages'        => [ 'صفحات_غير_مصنفة' ],
        'Uncategorizedtemplates'    => [ 'قوالب_غير_مصنفة' ],
        'Undelete'                  => [ 'استرجاع' ],
+       'UnlinkAccounts'            => [ 'فك_الحسابات' ],
        'Unlockdb'                  => [ 'فتح_قب' ],
        'Unusedcategories'          => [ 'تصنيفات_غير_مستخدمة' ],
        'Unusedimages'              => [ 'ملفات_غير_مستخدمة', 'صور_غير_مستخدمة' ],
index 8a43998..bb99553 100644 (file)
@@ -42,13 +42,18 @@ $specialPageAliases = [
        'Allmessages'               => [ 'كل_الرسايل' ],
        'AllMyUploads'              => [ 'كل_مرفوعاتى', 'كل_فايلاتى' ],
        'Allpages'                  => [ 'كل_الصفح' ],
+       'ApiHelp'                   => [ 'مساعده_Api' ],
+       'ApiSandbox'                => [ 'ملعب_Api' ],
        'Ancientpages'              => [ 'صفح_قديمه' ],
        'Badtitle'                  => [ 'عنوان_وحش' ],
        'Blankpage'                 => [ 'صفحه_فارضيه' ],
        'Block'                     => [ 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ],
        'Booksources'               => [ 'مصادر_كتاب' ],
+       'BotPasswords'              => [ 'باسووردات_البوت' ],
        'BrokenRedirects'           => [ 'تحويلات_مكسوره' ],
        'Categories'                => [ 'تصانيف' ],
+       'ChangeContentModel'        => [ 'تغيير_موديل_المحتوى' ],
+       'ChangeCredentials'         => [ 'تغيير_الكريدينشيال' ],
        'ChangeEmail'               => [ 'تغيير_الميل' ],
        'ChangePassword'            => [ 'تغيير_الپاسوورد', 'ظبط_الپاسوورد' ],
        'ComparePages'              => [ 'مقارنه_الصفحات' ],
@@ -59,6 +64,7 @@ $specialPageAliases = [
        'DeletedContributions'      => [ 'مساهمات_ممسوحه' ],
        'Diff'                      => [ 'فرق' ],
        'DoubleRedirects'           => [ 'تحويلات_دوبل' ],
+       'EditTags'                  => [ 'تغيير_التاجز' ],
        'EditWatchlist'             => [ 'تغيير_قايمه_المراقبه' ],
        'Emailuser'                 => [ 'ابعت_ايميل_لليوزر' ],
        'ExpandTemplates'           => [ 'فرد-القوالب' ],
@@ -71,16 +77,20 @@ $specialPageAliases = [
        'JavaScriptTest'            => [ 'تجربه_جافا_سكريبت' ],
        'BlockList'                 => [ 'ليستة_البلوك', 'بيّن_البلوك', 'ليستة_بلوك_IP' ],
        'LinkSearch'                => [ 'تدوير_اللينكات' ],
+       'LinkAccounts'              => [ 'توصيل_الحسابات' ],
        'Listadmins'                => [ 'عرض_الاداريين' ],
        'Listbots'                  => [ 'عرض_البوتات' ],
        'Listfiles'                 => [ 'عرض_الفايلات', 'ليستة_الفايلات', 'ليستة_الصور' ],
        'Listgrouprights'           => [ 'عرض_حقوق_الجروپات' ],
+       'Listgrants'                => [ 'عرض_المنح' ],
        'Listredirects'             => [ 'عرض_التحويلات' ],
+       'ListDuplicatedFiles'       => [ 'عرض_الفايلات_المتكرره' ],
        'Listusers'                 => [ 'عرض_اليوزرات', 'ليستة_اليوزرات' ],
        'Lockdb'                    => [ 'قفل_قب' ],
        'Log'                       => [ 'سجل', 'سجلات' ],
        'Lonelypages'               => [ 'صفح_وحدانيه', 'صفح_يتيمه' ],
        'Longpages'                 => [ 'صفح_طويله' ],
+       'MediaStatistics'           => [ 'احصائيات_الميديا' ],
        'MergeHistory'              => [ 'دمج_التاريخ' ],
        'MIMEsearch'                => [ 'تدوير_MIME' ],
        'Mostcategories'            => [ 'اكتر_تصانيف' ],
@@ -113,6 +123,7 @@ $specialPageAliases = [
        'Recentchanges'             => [ 'اخر_تعديلات' ],
        'Recentchangeslinked'       => [ 'اجدد_التغييرات_اللى_معمول_ليها_لينك', 'تغييرات_مرتبطه' ],
        'Redirect'                  => [ 'تحويل' ],
+       'RemoveCredentials'         => [ 'مسح_الكريدينشيال' ],
        'ResetTokens'               => [ 'ضبط_المفاتيح' ],
        'Revisiondelete'            => [ 'مسح_نسخه' ],
        'RunJobs'                   => [ 'تشغيل_الوظايف' ],
@@ -128,6 +139,7 @@ $specialPageAliases = [
        'Uncategorizedpages'        => [ 'صفح_مش_متصنفه' ],
        'Uncategorizedtemplates'    => [ 'قوالب_مش_متصنفه' ],
        'Undelete'                  => [ 'استرجاع' ],
+       'UnlinkAccounts'            => [ 'فك_الحسابات' ],
        'Unlockdb'                  => [ 'فتح_قب' ],
        'Unusedcategories'          => [ 'تصانيف_مش_مستعمله' ],
        'Unusedimages'              => [ 'فايلات_مش_مستعمله', 'صور_مش_مستعمله' ],
index ac9f1b7..17b00b7 100644 (file)
@@ -466,6 +466,7 @@ $specialPageAliases = [
        'Newimages'                 => [ 'NewFiles', 'NewImages' ],
        'Newpages'                  => [ 'NewPages' ],
        'PagesWithProp'             => [ 'PagesWithProp', 'Pageswithprop', 'PagesByProp', 'Pagesbyprop' ],
+       'PageData'                  => [ 'Pagedata' ],
        'PageLanguage'              => [ 'PageLanguage' ],
        'PasswordReset'             => [ 'PasswordReset' ],
        'PermanentLink'             => [ 'PermanentLink', 'PermaLink' ],
index d396703..b3866c1 100644 (file)
@@ -309,9 +309,7 @@ class ImportImages extends Maintenance {
                                        if ( $handler ) {
                                                $metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
 
-                                               $publishOptions['headers'] = $handler->getContentHeaders(
-                                                       $metadata, $props['width'], $props['height']
-                                               );
+                                               $publishOptions['headers'] = $handler->getContentHeaders( $metadata );
                                        } else {
                                                $publishOptions['headers'] = [];
                                        }
index 7c0e4af..77c8af8 100644 (file)
@@ -1058,7 +1058,9 @@ return [
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.hlist' => [
-               'styles' => 'resources/src/mediawiki/mediawiki.hlist.css',
+               'skinStyles' => [
+                       'default' => 'resources/src/mediawiki/mediawiki.hlist.css',
+               ],
        ],
        'mediawiki.htmlform' => [
                'scripts' => [
index b7b46f6..375b68b 100644 (file)
                // actual parameter visibility/representation in the URL
                currentFilterState = this.filtersModel.getFiltersFromParameters( uri.query );
                updatedFilterState = this.filtersModel.getFiltersFromParameters( updatedUri.query );
+               // HACK: Re-merge extra parameters in
+               // This is a hack and a quickfix; a better, more sustainable
+               // fix is being worked on with a UriProcessor, but for now
+               // we need to make sure the **comparison** of whether currentFilterState
+               // and updatedFilterState differ **includes** the extra parameters in the URL
+               currentFilterState = $.extend( true, {}, uri.query, currentFilterState );
+               updatedFilterState = $.extend( true, {}, updatedUri.query, updatedFilterState );
 
                // Include highlight states
                $.extend( true,
index d17ffff..7605fae 100644 (file)
 
                // Collect all data from form
                $( e.target ).find( 'input:not([type="hidden"],[type="submit"]), select' ).each( function () {
+                       var value = '';
+
                        if ( !$( this ).is( ':checkbox' ) || $( this ).is( ':checked' ) ) {
-                               data[ $( this ).prop( 'name' ) ] = $( this ).val();
+                               value = $( this ).val();
                        }
+
+                       data[ $( this ).prop( 'name' ) ] = value;
                } );
 
                this.controller.updateChangesList( data );
index 8127695..44bcdff 100644 (file)
@@ -8301,6 +8301,21 @@ subpage
 <p><a rel="mw:WikiLink" href="./User:Test/123#a" data-parsoid='{"stx":"piped","a":{"href":"./User:Test/123#a"},"sa":{"href":"#a"}}'>b</a></p>
 !! end
 
+!! test
+Serialization of purely hash wikilink
+!! options
+title=[[User:Test/123]]
+subpage
+parsoid=html2wt
+!! html/parsoid
+<p><a href="#a">[[</a></p>
+!! wikitext
+[[#a|<nowiki>[[</nowiki>]]
+!! html/php
+<p><a href="#a">[[</a>
+</p>
+!! end
+
 !! test
 1. Interaction of linktrail and template encapsulation
 !! wikitext
@@ -17895,6 +17910,19 @@ Sanitizer: Validating that <meta> and <link> work, but only for Microdata
 
 !! end
 
+!! test
+Sanitizer: Strip comments from CSS attributes
+!! options
+parsoid=wt2html,wt2wt
+!! wikitext
+<span style="margin:/*negate mbox-text padding */-0.125em -0.45em; /*rainbow*/rgba(255, 0, 0, 0.3)">2013</span>
+!! html/php
+<p><span style="margin: -0.125em -0.45em;  rgba(255, 0, 0, 0.3)">2013</span>
+</p>
+!! html/parsoid
+<p><span style="margin: -0.125em -0.45em;  rgba(255, 0, 0, 0.3)">2013</span></p>
+!! end
+
 !! test
 Language converter: output gets cut off unexpectedly (T7757)
 !! options
@@ -23420,26 +23448,26 @@ parsoid={
 <meta typeof="mw:Extension/LabeledSectionTransclusion/end" content="2014-04-10 (MW 1.23wmf22)"/></p>
 !! end
 
-## The unconventional output is the result of `usePHPPreProcessor` being
-## disabled in parserTests.js.  This test is mainly just to show <section> is
-## recognized as an extension tag w/o a native handler.
 !! test
 LST Sections: Newfangled approach
 !! wikitext
 <section begin="2011-05-16" />
 <section end="2014-04-10 (MW 1.23wmf22)" />
 !! html/parsoid
-<p><span typeof="mw:Error mw:Extension/section" about="#mwt1" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"},"body":null,"errors":[{"key":"mw-api-extexpand-error","message":"Could not expand extension source."}]}'>&lt;section begin="2011-05-16" /></span>
-<span typeof="mw:Error mw:Extension/section" about="#mwt2" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"},"body":null,"errors":[{"key":"mw-api-extexpand-error","message":"Could not expand extension source."}]}'>&lt;section end="2014-04-10 (MW 1.23wmf22)" /></span></p>
+<p><span typeof="mw:Extension/section" about="#mwt4" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"},"body":null}'>
+</span>
+<span typeof="mw:Extension/section" about="#mwt6" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"},"body":null}'>
+</span></p>
 !! end
 
 #--------- Test stripping of empty nodes in template content ----------
-!!test
+
+!! test
 Empty LI and TR nodes should be stripped from template content
-!!wikitext
+!! wikitext
 {{EmptyLITest}}
 {{EmptyTRTest}}
-!!html/parsoid
+!! html/parsoid
 <ul about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyLITest","href":"./Template:EmptyLITest"},"params":{},"i":0}}]}'>
 <li>a</li>
 <li>b</li>
@@ -23454,11 +23482,11 @@ Empty LI and TR nodes should be stripped from template content
 </tr>
 </tbody>
 </table>
-!!end
+!! end
 
-!!test
+!! test
 Empty LI and TR nodes should not be stripped from top-level content
-!!wikitext
+!! wikitext
 * a
 *
 * b
@@ -23467,7 +23495,7 @@ Empty LI and TR nodes should not be stripped from top-level content
 |-
 |foo
 |}
-!!html/parsoid
+!! html/parsoid
 <ul>
 <li> a</li>
 <li></li>
@@ -23481,20 +23509,20 @@ Empty LI and TR nodes should not be stripped from top-level content
 </tr>
 </tbody>
 </table>
-!!end
+!! end
 
-!!test
+!! test
 Empty TR nodes should not be stripped if they have any attributes set
-!!wikitext
+!! wikitext
 {{EmptyTRWithHTMLAttrTest}}
-!!html/parsoid
+!! html/parsoid
 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRWithHTMLAttrTest","href":"./Template:EmptyTRWithHTMLAttrTest"},"params":{},"i":0}}]}'>
 <tr align="center"></tr>
 <tr><td>foo</td></tr>
 <tr align="center"></tr>
 <tr><td>bar</td></tr>
 </table>
-!!end
+!! end
 
 #### ----------------------------------------------------------------
 #### The following section of tests are primarily to test
@@ -25911,6 +25939,41 @@ parsoid=html2wt
 [[Foo]]
 !! end
 
+!! test
+Parsoid should accept interwiki shortcuts
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel='mw:WikiLink' href='./fr:Foo'>Foo</a>
+<a rel='mw:ExtLink' href='./fr:Foo'>Foo</a>
+<a href='./fr:Foo'>Foo</a></p>
+<p><a rel='mw:WikiLink' href='fr%3AFoo'>Foo</a>
+<a rel='mw:ExtLink' href='fr%3AFoo'>Foo</a>
+<a href='fr%3AFoo'>Foo</a></p>
+!! wikitext
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+!! end
+
+!! test
+Parsoid should not accept invalid interwiki shortcuts
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel='mw:WikiLink' href='news:Foo'>Foo</a>
+<a rel='mw:ExtLink' href='news:Foo'>Foo</a>
+<a href='news:Foo'>Foo</a></p>
+!! wikitext
+[news:Foo Foo]
+[news:Foo Foo]
+[news:Foo Foo]
+!! end
+
 # See T93839
 !! test
 New wikilinks should be serialized properly
@@ -28082,6 +28145,17 @@ dice
 <span name="foo"></span>
 !! end
 
+!! test
+New transclusion added after a list should be serialized after the list
+!! options
+parsoid=html2wt
+!! html/parsoid
+<ul><li>a</li></ul><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>
+!! wikitext
+* a
+{{echo|foo}}
+!! end
+
 # -----------------------------------------------------------------
 # End of section for Parsoid-only html2wt tests for serialization
 # of new content
@@ -28241,3 +28315,20 @@ unclosed internal link XSS (T137264)
 !! html/parsoid
 <p>[[#%3Cscript%3Ealert(1)%3C/script%3E|</p>
 !! end
+
+!! test
+Validating that <style> isn't eaten by tidy (T167349)
+!! options
+# Use $wgRawHtml to inject a <style> tag, since you normally can't in wikitext
+wgRawHtml=1
+!! wikitext
+<div class="foo">
+<html><style>.foo::before { content: "<foo>"; }</style></html>
+<html><style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style></html>
+</div>
+!! html+tidy
+<div class="foo">
+<style>.foo::before { content: "<foo>"; }</style>
+<style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style>
+</div>
+!! end
index 9c02bbd..b14424f 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 
-use MediaWiki\MediaWikiServices;
-
 /**
  * @group Database
  *
index 238b65f..6c44999 100644 (file)
@@ -716,28 +716,33 @@ class TitleTest extends MediaWikiTestCase {
                return [
                        // ns = 0
                        [
-                               Title::makeTitle( NS_MAIN, 'Foobar' ),
-                               'Foobar'
+                               Title::makeTitle( NS_MAIN, 'Foo bar' ),
+                               'Foo bar'
                        ],
                        // ns = 2
                        [
-                               Title::makeTitle( NS_USER, 'Foobar' ),
-                               'User:Foobar'
+                               Title::makeTitle( NS_USER, 'Foo bar' ),
+                               'User:Foo bar'
+                       ],
+                       // ns = 3
+                       [
+                               Title::makeTitle( NS_USER_TALK, 'Foo bar' ),
+                               'User talk:Foo bar'
                        ],
                        // fragment not included
                        [
-                               Title::makeTitle( NS_MAIN, 'Foobar', 'fragment' ),
-                               'Foobar'
+                               Title::makeTitle( NS_MAIN, 'Foo bar', 'fragment' ),
+                               'Foo bar'
                        ],
                        // ns = -2
                        [
-                               Title::makeTitle( NS_MEDIA, 'Foobar' ),
-                               'Media:Foobar'
+                               Title::makeTitle( NS_MEDIA, 'Foo bar' ),
+                               'Media:Foo bar'
                        ],
                        // non-existent namespace
                        [
-                               Title::makeTitle( 100000, 'Foobar' ),
-                               ':Foobar'
+                               Title::makeTitle( 100777, 'Foo bar' ),
+                               'Special:Badtitle/NS100777:Foo bar'
                        ],
                ];
        }
@@ -749,4 +754,47 @@ class TitleTest extends MediaWikiTestCase {
        public function testGetPrefixedText( Title $title, $expected ) {
                $this->assertEquals( $expected, $title->getPrefixedText() );
        }
+
+       public function provideGetPrefixedDBKey() {
+               return [
+                       // ns = 0
+                       [
+                               Title::makeTitle( NS_MAIN, 'Foo_bar' ),
+                               'Foo_bar'
+                       ],
+                       // ns = 2
+                       [
+                               Title::makeTitle( NS_USER, 'Foo_bar' ),
+                               'User:Foo_bar'
+                       ],
+                       // ns = 3
+                       [
+                               Title::makeTitle( NS_USER_TALK, 'Foo_bar' ),
+                               'User_talk:Foo_bar'
+                       ],
+                       // fragment not included
+                       [
+                               Title::makeTitle( NS_MAIN, 'Foo_bar', 'fragment' ),
+                               'Foo_bar'
+                       ],
+                       // ns = -2
+                       [
+                               Title::makeTitle( NS_MEDIA, 'Foo_bar' ),
+                               'Media:Foo_bar'
+                       ],
+                       // non-existent namespace
+                       [
+                               Title::makeTitle( 100777, 'Foo_bar' ),
+                               'Special:Badtitle/NS100777:Foo_bar'
+                       ],
+               ];
+       }
+
+       /**
+        * @covers Title::getPrefixedDBKey
+        * @dataProvider provideGetPrefixedDBKey
+        */
+       public function testGetPrefixedDBKey( Title $title, $expected ) {
+               $this->assertEquals( $expected, $title->getPrefixedDBkey() );
+       }
 }
index 253ac95..ee0ad94 100644 (file)
@@ -174,4 +174,43 @@ class ApiBaseTest extends ApiTestCase {
                ], $user ) );
        }
 
+       /**
+        * @covers ApiBase::dieStatus
+        */
+       public function testDieStatus() {
+               $mock = new MockApi();
+
+               $status = StatusValue::newGood();
+               $status->error( 'foo' );
+               $status->warning( 'bar' );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'foo' ), 'Exception has "foo"' );
+                       $this->assertFalse( ApiTestCase::apiExceptionHasCode( $ex, 'bar' ), 'Exception has "bar"' );
+               }
+
+               $status = StatusValue::newGood();
+               $status->warning( 'foo' );
+               $status->warning( 'bar' );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'foo' ), 'Exception has "foo"' );
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'bar' ), 'Exception has "bar"' );
+               }
+
+               $status = StatusValue::newGood();
+               $status->setOk( false );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'unknownerror-nocode' ),
+                               'Exception has "unknownerror-nocode"' );
+               }
+       }
+
 }
index f01a670..028d3b4 100644 (file)
  */
 class ApiParseTest extends ApiTestCase {
 
-       protected function setUp() {
-               parent::setUp();
-               $this->doLogin();
+       protected static $pageId;
+       protected static $revIds = [];
+
+       public function addDBDataOnce() {
+               $user = static::getTestSysop()->getUser();
+               $title = Title::newFromText( __CLASS__ );
+               $page = WikiPage::factory( $title );
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for revdel', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for revdel', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to create $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$pageId = $status->value['revision']->getPage();
+               self::$revIds['revdel'] = $status->value['revision']->getId();
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for oldid', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for oldid', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$revIds['oldid'] = $status->value['revision']->getId();
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for latest', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for latest', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$revIds['latest'] = $status->value['revision']->getId();
+
+               RevisionDeleter::createList(
+                       'revision', RequestContext::getMain(), $title, [ self::$revIds['revdel'] ]
+               )->setVisibility( [
+                       'value' => [
+                               Revision::DELETED_TEXT => 1,
+                       ],
+                       'comment' => 'Test for revdel',
+               ] );
+
+               Title::clearCaches(); // Otherwise it has the wrong latest revision for some reason
        }
 
-       public function testParseNonexistentPage() {
-               $somePage = mt_rand();
+       public function testParseByName() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'page' => __CLASS__,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'page' => __CLASS__,
+                       'disablelimitreport' => 1,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+       }
+
+       public function testParseById() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'pageid' => self::$pageId,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+       }
+
+       public function testParseByOldId() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'oldid' => self::$revIds['oldid'],
+               ] );
+               $this->assertContains( 'Test for oldid', $res[0]['parse']['text'] );
+               $this->assertArrayNotHasKey( 'textdeleted', $res[0]['parse'] );
+               $this->assertArrayNotHasKey( 'textsuppressed', $res[0]['parse'] );
+       }
+
+       public function testParseRevDel() {
+               $user = static::getTestUser()->getUser();
+               $sysop = static::getTestSysop()->getUser();
 
                try {
                        $this->doApiRequest( [
                                'action' => 'parse',
-                               'page' => $somePage ] );
+                               'oldid' => self::$revIds['revdel'],
+                       ], null, null, $user );
+                       $this->fail( "API did not return an error as expected" );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'permissiondenied' ),
+                               "API failed with error 'permissiondenied'" );
+               }
+
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'oldid' => self::$revIds['revdel'],
+               ], null, null, $sysop );
+               $this->assertContains( 'Test for revdel', $res[0]['parse']['text'] );
+               $this->assertArrayHasKey( 'textdeleted', $res[0]['parse'] );
+               $this->assertArrayNotHasKey( 'textsuppressed', $res[0]['parse'] );
+       }
+
+       public function testParseNonexistentPage() {
+               try {
+                       $this->doApiRequest( [
+                               'action' => 'parse',
+                               'page' => 'DoesNotExist',
+                       ] );
 
                        $this->fail( "API did not return an error when parsing a nonexistent page" );
                } catch ( ApiUsageException $ex ) {
index b6088ff..206655c 100644 (file)
@@ -17,13 +17,13 @@ class DatabaseSQLTest extends MediaWikiTestCase {
 
        protected function assertLastSql( $sqlText ) {
                $this->assertEquals(
-                       $this->database->getLastSqls(),
-                       $sqlText
+                       $sqlText,
+                       $this->database->getLastSqls()
                );
        }
 
        protected function assertLastSqlDb( $sqlText, $db ) {
-               $this->assertEquals( $db->getLastSqls(), $sqlText );
+               $this->assertEquals( $sqlText, $db->getLastSqls() );
        }
 
        /**
@@ -365,7 +365,8 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                        $sql['conds'],
                        __METHOD__,
                        isset( $sql['insertOptions'] ) ? $sql['insertOptions'] : [],
-                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : []
+                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : [],
+                       isset( $sql['selectJoinConds'] ) ? $sql['selectJoinConds'] : []
                );
                $this->assertLastSql( $sqlTextNative );
 
@@ -380,7 +381,8 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                        $sql['conds'],
                        __METHOD__,
                        isset( $sql['insertOptions'] ) ? $sql['insertOptions'] : [],
-                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : []
+                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : [],
+                       isset( $sql['selectJoinConds'] ) ? $sql['selectJoinConds'] : []
                );
                $this->assertLastSqlDb( implode( '; ', [ $sqlSelect, $sqlInsert ] ), $dbWeb );
        }
@@ -397,7 +399,7 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                                "INSERT INTO insert_table " .
                                        "(field_insert,field) " .
                                        "SELECT field_select,field2 " .
-                                       "FROM select_table",
+                                       "FROM select_table WHERE *",
                                "SELECT field_select AS field_insert,field2 AS field " .
                                "FROM select_table WHERE *   FOR UPDATE",
                                "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')"
@@ -437,6 +439,28 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                                "FROM select_table WHERE field = '2' ORDER BY field  FOR UPDATE",
                                "INSERT IGNORE INTO insert_table (field_insert,field) VALUES ('0','1')"
                        ],
+                       [
+                               [
+                                       'destTable' => 'insert_table',
+                                       'srcTable' => [ 'select_table1', 'select_table2' ],
+                                       'varMap' => [ 'field_insert' => 'field_select', 'field' => 'field2' ],
+                                       'conds' => [ 'field' => 2 ],
+                                       'selectOptions' => [ 'ORDER BY' => 'field', 'FORCE INDEX' => [ 'select_table1' => 'index1' ] ],
+                                       'selectJoinConds' => [
+                                               'select_table2' => [ 'LEFT JOIN', [ 'select_table1.foo = select_table2.bar' ] ],
+                                       ],
+                               ],
+                               "INSERT INTO insert_table " .
+                                       "(field_insert,field) " .
+                                       "SELECT field_select,field2 " .
+                                       "FROM select_table1 LEFT JOIN select_table2 ON ((select_table1.foo = select_table2.bar)) " .
+                                       "WHERE field = '2' " .
+                                       "ORDER BY field",
+                               "SELECT field_select AS field_insert,field2 AS field " .
+                               "FROM select_table1 LEFT JOIN select_table2 ON ((select_table1.foo = select_table2.bar)) " .
+                               "WHERE field = '2' ORDER BY field  FOR UPDATE",
+                               "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')"
+                       ],
                ];
        }
 
diff --git a/tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php b/tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php
new file mode 100644 (file)
index 0000000..4415bc9
--- /dev/null
@@ -0,0 +1,151 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptNegotiator;
+
+/**
+ * @covers Wikimedia\Http\HttpAcceptNegotiator
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class HttpAcceptNegotiatorTest extends \PHPUnit_Framework_TestCase {
+
+       public function provideGetFirstSupportedValue() {
+               return [
+                       [ // #0: empty
+                               [], // supported
+                               [], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #1: simple
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy', 'text/bar' ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #2: default
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy', 'text/xoo' ], // accepted
+                               'X', // default
+                               'X',  // expected
+                       ],
+                       [ // #3: preference
+                               [ 'text/foo', 'text/bar', 'application/zuul' ], // supported
+                               [ 'text/xoo', 'text/BAR', 'text/foo' ], // accepted
+                               null, // default
+                               'text/bar',  // expected
+                       ],
+                       [ // #4: * wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo', '*' ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #5: */* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo', '*/*' ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #6: text/* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'application/*', 'text/foo' ], // accepted
+                               null, // default
+                               'application/zuul',  // expected
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetFirstSupportedValue
+        */
+       public function testGetFirstSupportedValue( $supported, $accepted, $default, $expected ) {
+               $negotiator = new HttpAcceptNegotiator( $supported );
+               $actual = $negotiator->getFirstSupportedValue( $accepted, $default );
+
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public function provideGetBestSupportedKey() {
+               return [
+                       [ // #0: empty
+                               [], // supported
+                               [], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #1: simple
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy' => 1, 'text/bar' => 0.5 ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #2: default
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy' => 1, 'text/xoo' => 0.5 ], // accepted
+                               'X', // default
+                               'X',  // expected
+                       ],
+                       [ // #3: weighted
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0.3, 'text/BAR' => 0.8, 'application/zuul' => 0.5 ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #4: zero weight
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0, 'text/xoo' => 1 ], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #5: * wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo' => 0.5, '*' => 0.1 ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #6: */* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo' => 0.5, '*/*' => 0.1 ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #7: text/* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0.3, 'application/*' => 0.8 ], // accepted
+                               null, // default
+                               'application/zuul',  // expected
+                       ],
+                       [ // #8: Test specific format preferred over wildcard (T133314)
+                               [ 'application/rdf+xml', 'text/json', 'text/html' ], // supported
+                               [ '*/*' => 1, 'text/html' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+                       [ // #9: Test specific format preferred over range (T133314)
+                               [ 'application/rdf+xml', 'text/json', 'text/html' ], // supported
+                               [ 'text/*' => 1, 'text/html' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+                       [ // #10: Test range preferred over wildcard (T133314)
+                               [ 'application/rdf+xml', 'text/html' ], // supported
+                               [ '*/*' => 1, 'text/*' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetBestSupportedKey
+        */
+       public function testGetBestSupportedKey( $supported, $accepted, $default, $expected ) {
+               $negotiator = new HttpAcceptNegotiator( $supported );
+               $actual = $negotiator->getBestSupportedKey( $accepted, $default );
+
+               $this->assertEquals( $expected, $actual );
+       }
+
+}
diff --git a/tests/phpunit/includes/libs/http/HttpAcceptParserTest.php b/tests/phpunit/includes/libs/http/HttpAcceptParserTest.php
new file mode 100644 (file)
index 0000000..5bd9425
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptParser;
+
+/**
+ * @covers Wikimedia\Http\HttpAcceptParser
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class HttpAcceptParserTest extends \PHPUnit_Framework_TestCase {
+
+       public function provideParseWeights() {
+               return [
+                       [ // #0
+                               '',
+                               []
+                       ],
+                       [ // #1
+                               'Foo/Bar',
+                               [ 'foo/bar' => 1 ]
+                       ],
+                       [ // #2
+                               'Accept: text/plain',
+                               [ 'text/plain' => 1 ]
+                       ],
+                       [ // #3
+                               'Accept: application/vnd.php.serialized, application/rdf+xml',
+                               [ 'application/vnd.php.serialized' => 1, 'application/rdf+xml' => 1 ]
+                       ],
+                       [ // #4
+                               'foo; q=0.2, xoo; q=0,text/n3',
+                               [ 'text/n3' => 1, 'foo' => 0.2 ]
+                       ],
+                       [ // #5
+                               '*; q=0.2, */*; q=0.1,text/*',
+                               [ 'text/*' => 1, '*' => 0.2, '*/*' => 0.1 ]
+                       ],
+                       // TODO: nicely ignore additional type paramerters
+                       //[ // #6
+                       //      'Foo; q=0.2, Xoo; level=3, Bar; charset=xyz; q=0.4',
+                       //      [ 'xoo' => 1, 'bar' => 0.4, 'foo' => 0.1 ]
+                       //],
+               ];
+       }
+
+       /**
+        * @dataProvider provideParseWeights
+        */
+       public function testParseWeights( $header, $expected ) {
+               $parser = new HttpAcceptParser();
+               $actual = $parser->parseWeights( $header );
+
+               $this->assertEquals( $expected, $actual ); // shouldn't be sensitive to order
+       }
+
+}
diff --git a/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php b/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php
new file mode 100644 (file)
index 0000000..666dcf2
--- /dev/null
@@ -0,0 +1,288 @@
+<?php
+
+/**
+ * @covers PageDataRequestHandler
+ *
+ * @group PageData
+ *
+ * @license GPL-2.0+
+ */
+class PageDataRequestHandlerTest extends \MediaWikiTestCase {
+
+       /**
+        * @var Title
+        */
+       private $interfaceTitle;
+
+       /**
+        * @var int
+        */
+       private $obLevel;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->interfaceTitle = Title::newFromText( "Special:PageDataRequestHandlerTest" );
+
+               $this->obLevel = ob_get_level();
+       }
+
+       protected function tearDown() {
+               $obLevel = ob_get_level();
+
+               while ( ob_get_level() > $this->obLevel ) {
+                       ob_end_clean();
+               }
+
+               if ( $obLevel !== $this->obLevel ) {
+                       $this->fail( "Test changed output buffer level: was {$this->obLevel}" .
+                               "before test, but $obLevel after test."
+                       );
+               }
+
+               parent::tearDown();
+       }
+
+       /**
+        * @return PageDataRequestHandler
+        */
+       protected function newHandler() {
+               return new PageDataRequestHandler( 'json' );
+       }
+
+       /**
+        * @param array $params
+        * @param string[] $headers
+        *
+        * @return OutputPage
+        */
+       protected function makeOutputPage( array $params, array $headers ) {
+               // construct request
+               $request = new FauxRequest( $params );
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               foreach ( $headers as $name => $value ) {
+                       $request->setHeader( strtoupper( $name ), $value );
+               }
+
+               // construct Context and OutputPage
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $context->setRequest( $request );
+
+               $output = new OutputPage( $context );
+               $output->setTitle( $this->interfaceTitle );
+               $context->setOutput( $output );
+
+               return $output;
+       }
+
+       public function handleRequestProvider() {
+
+               $cases = [];
+
+               $cases[] = [ '', [], [], '!!', 400 ];
+
+               $cases[] = [ '', [ 'target' => 'Helsinki' ], [], '!!', 303,  [ 'Location' => '!.+!' ] ];
+
+               $subpageCases = [];
+               foreach ( $cases as $c ) {
+                       $case = $c;
+                       $case[0] = 'main/';
+
+                       if ( isset( $case[1]['target'] ) ) {
+                               $case[0] .= $case[1]['target'];
+                               unset( $case[1]['target'] );
+                       }
+
+                       $subpageCases[] = $case;
+               }
+
+               $cases = array_merge( $cases, $subpageCases );
+
+               $cases[] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       '',
+                       [
+                               'target' => 'Helsinki',
+                               'revision' => '4242',
+                       ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+               ];
+
+               $cases[] = [
+                       '/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               // #31: /Q5 with "Accept: text/foobar" triggers a 406
+               $cases[] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/foobar' ],
+                       '!!',
+                       406,
+                       [],
+               ];
+
+               $cases[] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       '/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       'main/AC/DC',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!AC/DC$!' ]
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @dataProvider handleRequestProvider
+        *
+        * @param string $subpage The subpage to request (or '')
+        * @param array  $params  Request parameters
+        * @param array  $headers  Request headers
+        * @param string $expectedOutput Regex to match the output against.
+        * @param int $expectedStatusCode Expected HTTP status code.
+        * @param string[] $expectedHeaders Expected HTTP response headers.
+        */
+       public function testHandleRequest(
+               $subpage,
+               array $params,
+               array $headers,
+               $expectedOutput,
+               $expectedStatusCode = 200,
+               array $expectedHeaders = []
+       ) {
+               $output = $this->makeOutputPage( $params, $headers );
+               $request = $output->getRequest();
+
+               /* @var FauxResponse $response */
+               $response = $request->response();
+
+               // construct handler
+               $handler = $this->newHandler();
+
+               try {
+                       ob_start();
+                       $handler->handleRequest( $subpage, $request, $output );
+
+                       if ( $output->getRedirect() !== '' ) {
+                               // hack to apply redirect to web response
+                               $output->output();
+                       }
+
+                       $text = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( $expectedStatusCode, $response->getStatusCode(), 'status code' );
+                       $this->assertRegExp( $expectedOutput, $text, 'output' );
+
+                       foreach ( $expectedHeaders as $name => $exp ) {
+                               $value = $response->getHeader( $name );
+                               $this->assertNotNull( $value, "header: $name" );
+                               $this->assertInternalType( 'string', $value, "header: $name" );
+                               $this->assertRegExp( $exp, $value, "header: $name" );
+                       }
+               } catch ( HttpError $e ) {
+                       ob_end_clean();
+                       $this->assertEquals( $expectedStatusCode, $e->getStatusCode(), 'status code' );
+                       $this->assertRegExp( $expectedOutput, $e->getHTML(), 'error output' );
+               }
+
+               // We always set "Access-Control-Allow-Origin: *"
+               $this->assertSame( '*', $response->getHeader( 'Access-Control-Allow-Origin' ) );
+       }
+
+       public function provideHttpContentNegotiation() {
+               $helsinki = Title::newFromText( 'Helsinki' );
+               return [
+                       'Accept Header of HTML' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/html' ], // headers
+                               'Helsinki'
+                       ],
+                       'Accept Header without weights' => [
+                               $helsinki,
+                               [ 'ACCEPT' => '*/*, text/html, text/x-wiki' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'Accept Header with weights' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/*; q=0.5, text/json; q=0.7, application/rdf+xml; q=0.8' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'Accept Header accepting evertyhing and HTML' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/html, */*' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'No Accept Header' => [
+                               $helsinki,
+                               [],
+                               'Helsinki&action=raw'
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideHttpContentNegotiation
+        *
+        * @param Title $title
+        * @param array $headers Request headers
+        * @param string $expectedRedirectSuffix Expected suffix of the HTTP Location header.
+        *
+        * @throws HttpError
+        */
+       public function testHttpContentNegotiation(
+               Title $title,
+               array $headers,
+               $expectedRedirectSuffix
+       ) {
+               /* @var FauxResponse $response */
+               $output = $this->makeOutputPage( [], $headers );
+               $request = $output->getRequest();
+
+               $handler = $this->newHandler();
+               $handler->httpContentNegotiation( $request, $output, $title );
+
+               $this->assertStringEndsWith(
+                       $expectedRedirectSuffix,
+                       $output->getRedirect(),
+                       'redirect target'
+               );
+       }
+}
index 530afa0..7a052f6 100644 (file)
@@ -65,27 +65,4 @@ class MediaHandlerTest extends MediaWikiTestCase {
                }
                return $result;
        }
-
-       /**
-        * @covers MediaHandler::getPageRangesByDimensions
-        *
-        * @dataProvider provideTestGetPageRangesByDimensions
-        */
-       public function testGetPageRangesByDimensions( $pagesByDimensions, $expected ) {
-               $this->assertEquals( $expected, MediaHandler::getPageRangesByDimensions( $pagesByDimensions ) );
-       }
-
-       public static function provideTestGetPageRangesByDimensions() {
-               return [
-                       [ [ '123x456' => [ 1 ] ], '123x456:1' ],
-                       [ [ '123x456' => [ 1, 2 ] ], '123x456:1-2' ],
-                       [ [ '123x456' => [ 1, 2, 3 ] ], '123x456:1-3' ],
-                       [ [ '123x456' => [ 1, 2, 3, 5 ] ], '123x456:1-3,5' ],
-                       [ [ '123x456' => [ 1, 3 ] ], '123x456:1,3' ],
-                       [ [ '123x456' => [ 1, 2, 3, 5, 6, 7 ] ], '123x456:1-3,5-7' ],
-                       [ [ '123x456' => [ 1, 2, 3, 5, 6, 7 ],
-                               '789x789' => [ 4, 8, 9 ] ], '123x456:1-3,5-7/789x789:4,8-9'
-                       ],
-               ];
-       }
 }
diff --git a/tests/phpunit/includes/media/XContentDimensionsTest.php b/tests/phpunit/includes/media/XContentDimensionsTest.php
deleted file mode 100644 (file)
index dddcc98..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * @group Media
- */
-class XContentDimensionsTest extends MediaWikiMediaTestCase {
-       /**
-        * @param string $filename
-        * @param string $expectedXContentDimensions
-        * @dataProvider provideGetContentHeaders
-        * @covers File::getContentHeaders
-        */
-       public function testGetContentHeaders( $filename, $expectedXContentDimensions ) {
-               $file = $this->dataFile( $filename );
-               $headers = $file->getContentHeaders();
-               $this->assertEquals( true, isset( $headers['X-Content-Dimensions'] ) );
-               $this->assertEquals( $headers['X-Content-Dimensions'], $expectedXContentDimensions );
-       }
-
-       public static function provideGetContentHeaders() {
-               return [
-                       [ '80x60-2layers.xcf', '80x60:1' ],
-                       [ 'animated.gif', '45x30:1' ],
-                       [ 'landscape-plain.jpg', '1024x768:1' ],
-                       [ 'portrait-rotated.jpg', '768x1024:1' ],
-                       [ 'Wikimedia-logo.svg', '1024x1024:1' ],
-                       [ 'webp_animated.webp', '300x225:1' ],
-                       [ 'test.tiff', '20x20:1' ],
-               ];
-       }
-}
index 81f0564..d606142 100644 (file)
@@ -22,7 +22,6 @@ class ParserOptionsTest extends MediaWikiTestCase {
                return [
                        'No overrides' => [ true, [] ],
                        'In-key options are ok' => [ true, [
-                               'editsection' => false,
                                'thumbsize' => 1e100,
                                'wrapclass' => false,
                        ] ],
@@ -65,14 +64,14 @@ class ParserOptionsTest extends MediaWikiTestCase {
        }
 
        public static function provideOptionsHashPre30() {
-               $used = [ 'wrapclass', 'editsection', 'printable' ];
+               $used = [ 'wrapclass', 'printable' ];
 
                return [
                        'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ],
-                       'Canonical options, used some options' => [ $used, '*!*!*!*!*', [] ],
+                       'Canonical options, used some options' => [ $used, '*!*!*!*!*!*', [] ],
                        'Used some options, non-default values' => [
                                $used,
-                               '*!*!*!*!*!printable=1!wrapclass=foobar',
+                               '*!*!*!*!*!*!printable=1!wrapclass=foobar',
                                [
                                        'setWrapOutputClass' => 'foobar',
                                        'setIsPrintable' => true,
@@ -87,6 +86,14 @@ class ParserOptionsTest extends MediaWikiTestCase {
                                        'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ],
                                ]
                        ],
+
+                       // Test weird historical behavior is still weird
+                       'Canonical options, editsection=true used' => [ [ 'editsection' ], '*!*!*!*!*', [
+                               'setEditSection' => true,
+                       ] ],
+                       'Canonical options, editsection=false used' => [ [ 'editsection' ], '*!*!*!*!*!edit=0', [
+                               'setEditSection' => false,
+                       ] ],
                ];
        }
 
@@ -117,7 +124,7 @@ class ParserOptionsTest extends MediaWikiTestCase {
        }
 
        public static function provideOptionsHash() {
-               $used = [ 'wrapclass', 'editsection', 'printable' ];
+               $used = [ 'wrapclass', 'printable' ];
 
                $classWrapper = TestingAccessWrapper::newFromClass( ParserOptions::class );
                $classWrapper->getDefaults();
@@ -154,6 +161,30 @@ class ParserOptionsTest extends MediaWikiTestCase {
                $confstr .= '!onPageRenderingHash';
        }
 
+       // Test weird historical behavior is still weird
+       public function testOptionsHashEditSection() {
+               global $wgHooks;
+
+               $this->setMwGlobals( [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [ 'PageRenderingHash' => [] ] + $wgHooks,
+               ] );
+
+               $popt = ParserOptions::newCanonical();
+               $popt->registerWatcher( function ( $name ) {
+                       $this->assertNotEquals( 'editsection', $name );
+               } );
+
+               $this->assertTrue( $popt->getEditSection() );
+               $this->assertSame( 'canonical', $popt->optionsHash( [] ) );
+               $this->assertSame( 'canonical', $popt->optionsHash( [ 'editsection' ] ) );
+
+               $popt->setEditSection( false );
+               $this->assertFalse( $popt->getEditSection() );
+               $this->assertSame( 'canonical', $popt->optionsHash( [] ) );
+               $this->assertSame( 'editsection=0', $popt->optionsHash( [ 'editsection' ] ) );
+       }
+
        /**
         * @expectedException InvalidArgumentException
         * @expectedExceptionMessage Unknown parser option bogus
diff --git a/tests/phpunit/includes/specials/SpecialPageDataTest.php b/tests/phpunit/includes/specials/SpecialPageDataTest.php
new file mode 100644 (file)
index 0000000..c93fe47
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * @covers SpecialPageData
+ *
+ * @group Database
+ *
+ * @group SpecialPage
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class SpecialPageDataTest extends SpecialPageTestBase {
+
+       protected function newSpecialPage() {
+               $page = new SpecialPageData();
+
+               // why is this needed?
+               $page->getContext()->setOutput( new OutputPage( $page->getContext() ) );
+
+               $page->setRequestHandler( new PageDataRequestHandler() );
+
+               return $page;
+       }
+
+       public function provideExecute() {
+               $cases = [];
+
+               $cases['Empty request'] = [ '', [], [], '!!', 200 ];
+
+               $cases['Only title specified'] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!.+!' ]
+               ];
+
+               $cases['Accept only HTML'] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases['Accept only HTML with revid'] = [
+                       '',
+                       [
+                               'target' => 'Helsinki',
+                               'revision' => '4242',
+                       ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+               ];
+
+               $cases['Nothing specified'] = [
+                       'main/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               $cases['Nothing specified'] = [
+                       '/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               $cases['Invalid Accept header'] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/foobar' ],
+                       '!!',
+                       406,
+                       [],
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @dataProvider provideExecute
+        *
+        * @param string $subpage The subpage to request (or '')
+        * @param array  $params  Request parameters
+        * @param array  $headers  Request headers
+        * @param string $expRegExp   Regex to match the output against.
+        * @param int    $expCode     Expected HTTP status code
+        * @param array  $expHeaders  Expected HTTP response headers
+        */
+       public function testExecute(
+               $subpage,
+               array $params,
+               array $headers,
+               $expRegExp,
+               $expCode = 200,
+               array $expHeaders = []
+       ) {
+               $request = new FauxRequest( $params );
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               foreach ( $headers as $name => $value ) {
+                       $request->setHeader( strtoupper( $name ), $value );
+               }
+
+               try {
+                       /* @var FauxResponse $response */
+                       list( $output, $response ) = $this->executeSpecialPage( $subpage, $request );
+
+                       $this->assertEquals( $expCode, $response->getStatusCode(), "status code" );
+                       $this->assertRegExp( $expRegExp, $output, "output" );
+
+                       foreach ( $expHeaders as $name => $exp ) {
+                               $value = $response->getHeader( $name );
+                               $this->assertNotNull( $value, "header: $name" );
+                               $this->assertInternalType( 'string', $value, "header: $name" );
+                               $this->assertRegExp( $exp, $value, "header: $name" );
+                       }
+               } catch ( HttpError $e ) {
+                       $this->assertEquals( $expCode, $e->getStatusCode(), "status code" );
+                       $this->assertRegExp( $expRegExp, $e->getHTML(), "error output" );
+               }
+       }
+
+       public function testSpecialPageWithoutParameters() {
+               $this->setContentLang( Language::factory( 'en' ) );
+               $request = new FauxRequest();
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               list( $output, ) = $this->executeSpecialPage( '', $request );
+
+               $this->assertContains(
+                       "Content negotiation applies based on you client's Accept header.",
+                       $output,
+                       "output"
+               );
+       }
+
+}