Merge "Introduce top level service locator."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sun, 3 Apr 2016 07:26:31 +0000 (07:26 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 3 Apr 2016 07:26:31 +0000 (07:26 +0000)
213 files changed:
RELEASE-NOTES-1.27
autoload.php
composer.json
docs/contenthandler.txt
docs/extension.schema.json
docs/hooks.txt
includes/DefaultSettings.php
includes/EditPage.php
includes/OutputPage.php
includes/Preferences.php
includes/Revision.php
includes/Setup.php
includes/SiteStats.php
includes/Title.php
includes/WatchedItemStore.php
includes/api/ApiMain.php
includes/api/ApiPageSet.php
includes/api/i18n/ba.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ja.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/changes/EnhancedChangesList.php
includes/changes/RecentChange.php
includes/db/DatabaseMysqlBase.php
includes/db/loadbalancer/LoadBalancer.php
includes/diff/DifferenceEngine.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLAutoCompleteSelectField.php
includes/htmlform/HTMLButtonField.php
includes/htmlform/HTMLEditTools.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLFormFieldCloner.php
includes/htmlform/HTMLSelectAndOtherField.php
includes/htmlform/HTMLTextAreaField.php
includes/htmlform/HTMLTextField.php
includes/installer/i18n/pl.json
includes/libs/BufferingStatsdDataFactory.php [deleted file]
includes/libs/StatusValue.php
includes/libs/stats/BufferingStatsdDataFactory.php [new file with mode: 0644]
includes/libs/stats/NullStatsdDataFactory.php [new file with mode: 0644]
includes/libs/stats/StatsdAwareInterface.php [new file with mode: 0644]
includes/mail/UserMailer.php
includes/page/Article.php
includes/page/Page.php [new file with mode: 0644]
includes/page/WikiPage.php
includes/resourceloader/ResourceLoaderImage.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/search/SearchExactMatchRescorer.php
includes/session/Session.php
includes/site/MediaWikiSite.php
includes/skins/Skin.php
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialRedirect.php
includes/specials/SpecialUserrights.php
includes/specials/pagers/BlockListPager.php
includes/upload/UploadBase.php
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hy.json
languages/i18n/inh.json
languages/i18n/it.json
languages/i18n/lb.json
languages/i18n/min.json
languages/i18n/nan.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/sl.json
languages/i18n/ta.json
languages/i18n/tr.json
languages/i18n/vep.json
languages/i18n/war.json
languages/i18n/yi.json
languages/i18n/zh-hans.json
languages/messages/MessagesAf.php
languages/messages/MessagesAn.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBg.php
languages/messages/MessagesBs.php
languages/messages/MessagesCe.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCs.php
languages/messages/MessagesCy.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesGa.php
languages/messages/MessagesGl.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHr.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesId.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKa.php
languages/messages/MessagesKm.php
languages/messages/MessagesKo.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKw.php
languages/messages/MessagesLb.php
languages/messages/MessagesLt.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMr.php
languages/messages/MessagesMt.php
languages/messages/MessagesMyv.php
languages/messages/MessagesNds.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPl.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesQu.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesSa.php
languages/messages/MessagesSe.php
languages/messages/MessagesSh.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSv.php
languages/messages/MessagesTr.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesVi.php
languages/messages/MessagesYi.php
maintenance/language/digit2html.php
maintenance/language/zhtable/Makefile.py
maintenance/refreshImageMetadata.php
package.json
resources/Resources.php
resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js [new file with mode: 0644]
resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js [new file with mode: 0644]
resources/src/mediawiki.language/specialcharacters.json
resources/src/mediawiki.special/mediawiki.special.apisandbox.js
resources/src/mediawiki/api.js
resources/src/mediawiki/mediawiki.requestIdleCallback.js
resources/src/mediawiki/mediawiki.user.js
tests/phpunit/includes/LinkerTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/PathRouterTest.php
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/RevisionTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/api/format/ApiFormatPhpTest.php
tests/phpunit/includes/api/format/ApiFormatXmlTest.php
tests/phpunit/includes/content/CssContentHandlerTest.php
tests/phpunit/includes/content/JavaScriptContentHandlerTest.php
tests/phpunit/includes/content/JavaScriptContentTest.php
tests/phpunit/includes/content/TextContentTest.php
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/import/ImportTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/media/GIFTest.php
tests/phpunit/includes/media/PNGTest.php
tests/phpunit/includes/media/WebPTest.php
tests/phpunit/includes/page/WikiPageTest.php
tests/phpunit/includes/parser/PreprocessorTest.php
tests/phpunit/includes/password/BcryptPasswordTest.php
tests/phpunit/includes/password/LayeredParameterizedPasswordTest.php
tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php
tests/phpunit/includes/upload/UploadBaseTest.php
tests/phpunit/includes/utils/MWCryptHKDFTest.php
tests/phpunit/includes/utils/UIDGeneratorTest.php
tests/phpunit/languages/LanguageTest.php
tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js

index 915b93b..0aebf38 100644 (file)
@@ -107,6 +107,8 @@ HHVM 3.1.
 * $wgIncludeLegacyJavaScript, deprecated in MediaWiki 1.26, now defaults false.
   Extensions, skins, gadgets and scripts that need the mediawiki.legacy.wikibits
   module should express a dependency on it.
+* Removed configuration option $wgCopyrightIcon (deprecated since 1.18). Use
+  $wgFooterIcons['copyright']['copyright'] instead.
 
 === New features in 1.27 ===
 * $wgDataCenterUpdateStickTTL was also added. This decides how long a user
@@ -249,16 +251,11 @@ HHVM 3.1.
 * ApiQuery::setGeneratorContinue() was removed (deprecated since 1.24).
 * ApiMain::getModules() was removed (deprecated since 1.21).
 * ApiBase::getVersion() was removed (deprecated since 1.21).
-* Language::getLangObj() was removed (deprecated since 1.24).
-* Language::getLanguageName() was removed (deprecated since 1.20).
-* Language::getLanguageNames() was removed (deprecated since 1.20).
-* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
-* Language::specialPage() was removed (deprecated since 1.24).
-* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
-* OutputPage::getHeadItems() was removed (deprecated since 1.24).
-* OutputPage::getScript() was removed (deprecated since 1.24).
-* OutputPage::out() was removed (deprecated since 1.22).
-* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
+* ApiMain::getShowVersions() was removed (deprecated in 1.21).
+* ApiMain::addModule() was removed (deprecated in 1.21).
+* ApiMain::addFormat() was removed (deprecated in 1.21).
+* ApiMain::getFormats() was removed (deprecated in 1.21).
+* ApiPageSet::finishPageSetGeneration() was removed (deprecated in 1.21).
 
 === Languages updated in 1.27 ===
 
@@ -267,6 +264,7 @@ regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Phabricator reports.
 
 * (T113688) Change default numerals from Gurmukhi to Arabic for Punjabi locale.
+* (T116020) Aliases of magic words in MessagesXx.php are sorted by usage.
 
 === Other changes in 1.27 ===
 * ProfilerOutputUdp was removed. Note that there is a ProfilerOutputStats class.
@@ -378,6 +376,33 @@ changes to languages because of Phabricator reports.
 * Unit tests don't work with external PHPUnit anymore, Composer is now the only supported
   way. Run `composer install` to install it and other dev dependencies to run unit tests.
 * wl_id field added to the watchlist table.
+* Revision::getRawText() was removed (deprecated since 1.21).
+* WikiPage::replaceSection() was removed (deprecated since 1.21).
+* Article::replaceSection() was removed (deprecated since 1.21).
+* Language::getLangObj() was removed (deprecated since 1.24).
+* Language::getLanguageName() was removed (deprecated since 1.20).
+* Language::getLanguageNames() was removed (deprecated since 1.20).
+* Language::getTranslatedLanguageNames() was removed (deprecated since 1.20).
+* Language::specialPage() was removed (deprecated since 1.24).
+* MediaWikiTestCase::assertException() was removed (deprecated since 1.22).
+* OutputPage::getHeadItems() was removed (deprecated since 1.24).
+* OutputPage::getScript() was removed (deprecated since 1.24).
+* OutputPage::out() was removed (deprecated since 1.22).
+* OutputPage::setAllowedModules() was removed (deprecated since 1.24).
+* UserrightsPage::makeGroupNameListForLog() was removed (deprecated since 1.21).
+* MediaWikiSite::newFromGlobalId() was removed (deprecated since 1.21).
+* Title::newFromRedirect() was removed (deprecated since 1.21).
+* Skin::commonPrintStylesheet() was removed (deprecated since 1.22).
+* Skin::getCommonStylePath() was removed (deprecated since 1.24).
+* Skin::newFromKey() was removed (deprecated since 1.24).
+* Skin::getUsableSkins() was removed (deprecated since 1.23).
+* LoadBalancer::pickRandom() was removed (deprecated in 1.21).
+* Article::getUndoText() and WikiPage::getUndoText were removed (deprecated since
+  1.21).
+* DifferenceEngine::setText() was removed (deprecated in 1.21).
+* Title::newFromRedirectArray() was removed (deprecated in 1.21).
+* UserMailer::send() no longer accepts $replyto as the 5th argument and $contentType
+  as the 6th. These must be passed in the options array now.
 
 == Compatibility ==
 
index 43d9186..fd4f873 100644 (file)
@@ -185,7 +185,7 @@ $wgAutoloadLocalClasses = [
        'BmpHandler' => __DIR__ . '/includes/media/BMP.php',
        'BotPassword' => __DIR__ . '/includes/user/BotPassword.php',
        'BrokenRedirectsPage' => __DIR__ . '/includes/specials/SpecialBrokenRedirects.php',
-       'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/BufferingStatsdDataFactory.php',
+       'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
        'CLIParser' => __DIR__ . '/maintenance/parse.php',
        'CSSMin' => __DIR__ . '/includes/libs/CSSMin.php',
        'CacheDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
@@ -895,6 +895,7 @@ $wgAutoloadLocalClasses = [
        'NullJob' => __DIR__ . '/includes/jobqueue/jobs/NullJob.php',
        'NullLockManager' => __DIR__ . '/includes/filebackend/lockmanager/LockManager.php',
        'NullRepo' => __DIR__ . '/includes/filerepo/NullRepo.php',
+       'NullStatsdDataFactory' => __DIR__ . '/includes/libs/stats/NullStatsdDataFactory.php',
        'OOUIHTMLForm' => __DIR__ . '/includes/htmlform/OOUIHTMLForm.php',
        'ORAField' => __DIR__ . '/includes/db/DatabaseOracle.php',
        'ORAResult' => __DIR__ . '/includes/db/DatabaseOracle.php',
@@ -936,7 +937,7 @@ $wgAutoloadLocalClasses = [
        'PackedHoverImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
        'PackedImageGallery' => __DIR__ . '/includes/gallery/PackedImageGallery.php',
        'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
-       'Page' => __DIR__ . '/includes/page/WikiPage.php',
+       'Page' => __DIR__ . '/includes/page/Page.php',
        'PageArchive' => __DIR__ . '/includes/specials/SpecialUndelete.php',
        'PageExists' => __DIR__ . '/maintenance/pageExists.php',
        'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
@@ -1268,6 +1269,7 @@ $wgAutoloadLocalClasses = [
        'SquidPurgeClientPool' => __DIR__ . '/includes/clientpool/SquidPurgeClientPool.php',
        'SquidUpdate' => __DIR__ . '/includes/deferred/CdnCacheUpdate.php',
        'SrConverter' => __DIR__ . '/languages/classes/LanguageSr.php',
+       'StatsdAwareInterface' => __DIR__ . '/includes/libs/stats/StatsdAwareInterface.php',
        'StatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
        'Status' => __DIR__ . '/includes/Status.php',
        'StatusValue' => __DIR__ . '/includes/libs/StatusValue.php',
index e0667e2..56b27f8 100644 (file)
@@ -16,7 +16,7 @@
                "wiki": "https://www.mediawiki.org/"
        },
        "require": {
-               "composer/semver": "1.2.0",
+               "composer/semver": "1.4.0",
                "cssjanus/cssjanus": "1.1.2",
                "ext-iconv": "*",
                "liuggio/statsd-php-client": "1.0.18",
index f1f478e..6209b14 100644 (file)
@@ -96,7 +96,7 @@ used.
 
 Most importantly, the following functions have been deprecated:
 
-* Revisions::getText() and Revisions::getRawText() is deprecated in favor Revisions::getContent()
+* Revisions::getText() is deprecated in favor Revisions::getContent()
 * WikiPage::getText() is deprecated in favor WikiPage::getContent()
 
 Also, the old Article::getContent() (which returns text) is superceded by Article::getContentObject(). However, both
index 4218e8a..a743afa 100644 (file)
                                                                        ]
                                                                },
                                                                "templates": {
-                                                                       "type": "object",
+                                                                       "type": ["object", "array"],
                                                                        "description": "Templates to be loaded for client-side usage"
                                                                },
                                                                "targets": {
index 0e8730d..31e9d92 100644 (file)
@@ -2860,6 +2860,7 @@ $special: the SpecialPage object
 $subPage: the subpage string or null if no subpage was specified
 
 'SpecialPageBeforeExecute': Called before SpecialPage::execute.
+Return false to prevent execution.
 $special: the SpecialPage object
 $subPage: the subpage string or null if no subpage was specified
 
index 017795c..65032ad 100644 (file)
@@ -6480,6 +6480,10 @@ $wgUnwatchedPageThreshold = false;
  *   'legend' => 'legend-msg',
  *   // optional (defaults to 'flag'), CSS class to put on changes lists rows
  *   'class' => 'css-class',
+ *   // optional (defaults to 'any'), how top-level flag is determined.  'any'
+ *   // will set the top-level flag if any line contains the flag, 'all' will
+ *   // only be set if all lines contain the flag.
+ *   'grouping' => 'any',
  * );
  * @endcode
  *
@@ -6490,23 +6494,27 @@ $wgRecentChangesFlags = [
                'letter' => 'newpageletter',
                'title' => 'recentchanges-label-newpage',
                'legend' => 'recentchanges-legend-newpage',
+               'grouping' => 'any',
        ],
        'minor' => [
                'letter' => 'minoreditletter',
                'title' => 'recentchanges-label-minor',
                'legend' => 'recentchanges-legend-minor',
                'class' => 'minoredit',
+               'grouping' => 'all',
        ],
        'bot' => [
                'letter' => 'boteditletter',
                'title' => 'recentchanges-label-bot',
                'legend' => 'recentchanges-legend-bot',
                'class' => 'botedit',
+               'grouping' => 'all',
        ],
        'unpatrolled' => [
                'letter' => 'unpatrolledletter',
                'title' => 'recentchanges-label-unpatrolled',
                'legend' => 'recentchanges-legend-unpatrolled',
+               'grouping' => 'any',
        ],
 ];
 
@@ -6546,12 +6554,6 @@ $wgRightsText = null;
  */
 $wgRightsIcon = null;
 
-/**
- * Set this to some HTML to override the rights icon with an arbitrary logo
- * @deprecated since 1.18 Use $wgFooterIcons['copyright']['copyright']
- */
-$wgCopyrightIcon = null;
-
 /**
  * Set this to true if you want detailed copyright information forms on Upload.
  */
index b3bb07a..3522531 100644 (file)
@@ -1175,7 +1175,7 @@ class EditPage {
         * Get the content of the wanted revision, without section extraction.
         *
         * The result of this function can be used to compare user's input with
-        * section replaced in its context (using WikiPage::replaceSection())
+        * section replaced in its context (using WikiPage::replaceSectionAtRev())
         * to the original text of the edit.
         *
         * This differs from Article::getContent() that when a missing revision is
@@ -1982,7 +1982,7 @@ class EditPage {
                        } elseif ( $this->section != '' ) {
                                # Try to get a section anchor from the section source, redirect
                                # to edited section if header found.
-                               # XXX: Might be better to integrate this into Article::replaceSection
+                               # XXX: Might be better to integrate this into Article::replaceSectionAtRev
                                # for duplicate heading checking and maybe parsing.
                                $hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
                                # We can't deal with anchors, includes, html etc in the header for now,
index 3c0dc18..c724207 100644 (file)
@@ -2315,11 +2315,21 @@ class OutputPage extends ContextSource {
                        // adding of CSS or Javascript by extensions.
                        Hooks::run( 'BeforePageDisplay', [ &$this, &$sk ] );
 
-                       $sk->outputPage();
+                       try {
+                               $sk->outputPage();
+                       } catch ( Exception $e ) {
+                               ob_end_clean(); // bug T129657
+                               throw $e;
+                       }
                }
 
-               // This hook allows last minute changes to final overall output by modifying output buffer
-               Hooks::run( 'AfterFinalPageOutput', [ $this ] );
+               try {
+                       // This hook allows last minute changes to final overall output by modifying output buffer
+                       Hooks::run( 'AfterFinalPageOutput', [ $this ] );
+               } catch ( Exception $e ) {
+                       ob_end_clean(); // bug T129657
+                       throw $e;
+               }
 
                $this->sendCacheControl();
 
index 54176a6..66a8152 100644 (file)
@@ -1301,6 +1301,7 @@ class Preferences {
 
                $htmlForm->setModifiedUser( $user );
                $htmlForm->setId( 'mw-prefs-form' );
+               $htmlForm->setAutocomplete( 'off' );
                $htmlForm->setSubmitText( $context->msg( 'saveprefs' )->text() );
                # Used message keys: 'accesskey-preferences-save', 'tooltip-preferences-save'
                $htmlForm->setSubmitTooltip( 'preferences-save' );
index b7bb346..79cab79 100644 (file)
@@ -1035,19 +1035,6 @@ class Revision implements IDBAccessObject {
                }
        }
 
-       /**
-        * Fetch revision text without regard for view restrictions
-        *
-        * @return string
-        *
-        * @deprecated since 1.21. Instead, use Revision::getContent( Revision::RAW )
-        *                         or Revision::getSerializedData() as appropriate.
-        */
-       public function getRawText() {
-               ContentHandler::deprecated( __METHOD__, "1.21" );
-               return $this->getText( self::RAW );
-       }
-
        /**
         * Fetch original serialized data without regard for view restrictions
         *
index f7d8d08..c60311f 100644 (file)
@@ -119,20 +119,15 @@ if ( $wgRightsIcon ) {
        );
 }
 
-if ( isset( $wgFooterIcons['copyright'] )
-       && isset( $wgFooterIcons['copyright']['copyright'] )
+if ( isset( $wgFooterIcons['copyright']['copyright'] )
        && $wgFooterIcons['copyright']['copyright'] === []
 ) {
-       if ( $wgCopyrightIcon ) {
-               $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
-       } elseif ( $wgRightsIcon || $wgRightsText ) {
+       if ( $wgRightsIcon || $wgRightsText ) {
                $wgFooterIcons['copyright']['copyright'] = [
                        'url' => $wgRightsUrl,
                        'src' => $wgRightsIcon,
                        'alt' => $wgRightsText,
                ];
-       } else {
-               unset( $wgFooterIcons['copyright']['copyright'] );
        }
 }
 
index 580f7cc..74c2997 100644 (file)
@@ -289,8 +289,10 @@ class SiteStatsInit {
        public function __construct( $database = false ) {
                if ( $database instanceof IDatabase ) {
                        $this->db = $database;
+               } elseif ( $database ) {
+                       $this->db = wfGetDB( DB_MASTER );
                } else {
-                       $this->db = wfGetDB( $database ? DB_MASTER : DB_SLAVE );
+                       $this->db = wfGetDB( DB_SLAVE, 'vslow' );
                }
        }
 
index 8bafe26..a6163f0 100644 (file)
@@ -572,23 +572,6 @@ class Title implements LinkTarget {
                return $title;
        }
 
-       /**
-        * Extract a redirect destination from a string and return the
-        * Title, or null if the text doesn't contain a valid redirect
-        * This will only return the very next target, useful for
-        * the redirect table and other checks that don't need full recursion
-        *
-        * @param string $text Text with possible redirect
-        * @return Title The corresponding Title
-        * @deprecated since 1.21, use Content::getRedirectTarget instead.
-        */
-       public static function newFromRedirect( $text ) {
-               ContentHandler::deprecated( __METHOD__, '1.21' );
-
-               $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
-               return $content->getRedirectTarget();
-       }
-
        /**
         * Extract a redirect destination from a string and return the
         * Title, or null if the text doesn't contain a valid redirect
@@ -606,23 +589,6 @@ class Title implements LinkTarget {
                return $content->getUltimateRedirectTarget();
        }
 
-       /**
-        * Extract a redirect destination from a string and return an
-        * array of Titles, or null if the text doesn't contain a valid redirect
-        * The last element in the array is the final destination after all redirects
-        * have been resolved (up to $wgMaxRedirects times)
-        *
-        * @param string $text Text with possible redirect
-        * @return Title[] Array of Titles, with the destination last
-        * @deprecated since 1.21, use Content::getRedirectChain instead.
-        */
-       public static function newFromRedirectArray( $text ) {
-               ContentHandler::deprecated( __METHOD__, '1.21' );
-
-               $content = ContentHandler::makeContent( $text, null, CONTENT_MODEL_WIKITEXT );
-               return $content->getRedirectChain();
-       }
-
        /**
         * Get the prefixed DB key associated with an ID
         *
index c4340ad..8ae7932 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
 use Wikimedia\Assert\Assert;
 
 /**
@@ -10,7 +11,7 @@ use Wikimedia\Assert\Assert;
  *
  * @since 1.27
  */
-class WatchedItemStore {
+class WatchedItemStore implements StatsdAwareInterface {
 
        const SORT_DESC = 'DESC';
        const SORT_ASC = 'ASC';
@@ -43,6 +44,11 @@ class WatchedItemStore {
         */
        private $revisionGetTimestampFromIdCallback;
 
+       /**
+        * @var StatsdDataFactoryInterface
+        */
+       private $stats;
+
        /**
         * @var self|null
         */
@@ -58,10 +64,15 @@ class WatchedItemStore {
        ) {
                $this->loadBalancer = $loadBalancer;
                $this->cache = $cache;
+               $this->stats = new NullStatsdDataFactory();
                $this->deferredUpdatesAddCallableUpdateCallback = [ 'DeferredUpdates', 'addCallableUpdate' ];
                $this->revisionGetTimestampFromIdCallback = [ 'Revision', 'getTimestampFromId' ];
        }
 
+       public function setStatsdDataFactory( StatsdDataFactoryInterface $stats ) {
+               $this->stats = $stats;
+       }
+
        /**
         * Overrides the DeferredUpdates::addCallableUpdate callback
         * This is intended for use while testing and will fail if MW_PHPUNIT_TEST is not defined.
@@ -148,6 +159,7 @@ class WatchedItemStore {
                                wfGetLB(),
                                new HashBagOStuff( [ 'maxKeys' => 100 ] )
                        );
+                       self::$instance->setStatsdDataFactory( RequestContext::getMain()->getStats() );
                }
                return self::$instance;
        }
@@ -166,18 +178,22 @@ class WatchedItemStore {
                $key = $this->getCacheKey( $user, $target );
                $this->cache->set( $key, $item );
                $this->cacheIndex[$target->getNamespace()][$target->getDBkey()][$user->getId()] = $key;
+               $this->stats->increment( 'WatchedItemStore.cache' );
        }
 
        private function uncache( User $user, LinkTarget $target ) {
                $this->cache->delete( $this->getCacheKey( $user, $target ) );
                unset( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()][$user->getId()] );
+               $this->stats->increment( 'WatchedItemStore.uncache' );
        }
 
        private function uncacheLinkTarget( LinkTarget $target ) {
                if ( !isset( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()] ) ) {
                        return;
                }
+               $this->stats->increment( 'WatchedItemStore.uncacheLinkTarget' );
                foreach ( $this->cacheIndex[$target->getNamespace()][$target->getDBkey()] as $key ) {
+                       $this->stats->increment( 'WatchedItemStore.uncacheLinkTarget.items' );
                        $this->cache->delete( $key );
                }
        }
@@ -451,8 +467,10 @@ class WatchedItemStore {
 
                $cached = $this->getCached( $user, $target );
                if ( $cached ) {
+                       $this->stats->increment( 'WatchedItemStore.getWatchedItem.cached' );
                        return $cached;
                }
+               $this->stats->increment( 'WatchedItemStore.getWatchedItem.load' );
                return $this->loadWatchedItem( $user, $target );
        }
 
index 1f1a1e8..07642c4 100644 (file)
@@ -397,7 +397,13 @@ class ApiMain extends ApiBase {
                if ( $this->mInternalMode ) {
                        $this->executeAction();
                } else {
+                       $start = microtime( true );
                        $this->executeActionWithErrorHandling();
+                       if ( $this->isWriteMode() && $this->getRequest()->wasPosted() ) {
+                               $timeMs = 1000 * max( 0, microtime( true ) - $start );
+                               $this->getStats()->timing(
+                                       'api.' . $this->getModuleName() . '.executeTiming', $timeMs );
+                       }
                }
        }
 
@@ -1810,53 +1816,6 @@ class ApiMain extends ApiBase {
                return "* $paramName={$module->getModuleName()} $modulePrefix*";
        }
 
-       /**
-        * Check whether the user wants us to show version information in the API help
-        * @return bool
-        * @deprecated since 1.21, always returns false
-        */
-       public function getShowVersions() {
-               wfDeprecated( __METHOD__, '1.21' );
-
-               return false;
-       }
-
-       /**
-        * Add or overwrite a module in this ApiMain instance. Intended for use by extending
-        * classes who wish to add their own modules to their lexicon or override the
-        * behavior of inherent ones.
-        *
-        * @deprecated since 1.21, Use getModuleManager()->addModule() instead.
-        * @param string $name The identifier for this module.
-        * @param ApiBase $class The class where this module is implemented.
-        */
-       protected function addModule( $name, $class ) {
-               $this->getModuleManager()->addModule( $name, 'action', $class );
-       }
-
-       /**
-        * Add or overwrite an output format for this ApiMain. Intended for use by extending
-        * classes who wish to add to or modify current formatters.
-        *
-        * @deprecated since 1.21, Use getModuleManager()->addModule() instead.
-        * @param string $name The identifier for this format.
-        * @param ApiFormatBase $class The class implementing this format.
-        */
-       protected function addFormat( $name, $class ) {
-               $this->getModuleManager()->addModule( $name, 'format', $class );
-       }
-
-       /**
-        * Returns the list of supported formats in form ( 'format' => 'ClassName' )
-        *
-        * @since 1.18
-        * @deprecated since 1.21, Use getModuleManager()'s methods instead.
-        * @return array
-        */
-       public function getFormats() {
-               return $this->getModuleManager()->getNamesWithClasses( 'format' );
-       }
-
        /**@}*/
 
 }
index 6bab762..f278989 100644 (file)
@@ -747,14 +747,6 @@ class ApiPageSet extends ApiBase {
                }
        }
 
-       /**
-        * Do not use, does nothing, will be removed
-        * @deprecated since 1.21
-        */
-       public function finishPageSetGeneration() {
-               wfDeprecated( __METHOD__, '1.21' );
-       }
-
        /**
         * This method populates internal variables with page information
         * based on the given array of title strings.
index 126678f..0e8b437 100644 (file)
        "apihelp-paraminfo-description": "API модуле тураһында мәғлүмәт алырға.",
        "apihelp-paraminfo-param-helpformat": "Белешмә юлы форматы.",
        "apihelp-parse-param-prop": "Ҡайһы мәғлүмәтте алырға:",
+       "apihelp-parse-paramvalue-prop-langlinks": "Вики-текстың синтаксик анализында тышҡы ссылкалар бирә.",
+       "apihelp-parse-paramvalue-prop-links": "Вики-текстың синтаксик анализында тышҡы ссылкалар бирә.",
        "apihelp-parse-paramvalue-prop-templates": "Вики-текстың синтаксик анализ ҡалыбын бирә.",
        "apihelp-parse-paramvalue-prop-images": "Вики-текстың синтаксик анализында һәрәттәр бирә.",
        "apihelp-parse-paramvalue-prop-externallinks": "Вики-текстың синтаксик анализында тышҡы ссылкалар бирә.",
        "apihelp-parse-paramvalue-prop-properties": "Вики-текстың синтаксик анализында билдәләнгән төрлө сифаттарҙы бирә.",
        "apihelp-parse-paramvalue-prop-limitreportdata": "Структура һымаҡ итеп төплө отчет бирә. $1disablelimitreport</ вар> <алышыныусы> ҡуйылған ваҡытта бер ниндәй мәғлүмәт тә бирмәй.",
        "apihelp-parse-paramvalue-prop-limitreporthtml": "Төплө отчеттың HTML версияһын бирә. <переменная>$1disablelimitreport </ вар> ҡуйылған булһа,бер мәғлүмәт тә бирмәй.",
+       "apihelp-parse-param-disablepp": "Урынына <var>$1disablelimitreport</var> ҡулланырға.",
        "apihelp-parse-param-preview": "Алдан ҡарау режимында синтаксик анализ",
        "apihelp-parse-example-page": "Битте тикшереү.",
        "apihelp-parse-example-text": "Тикшереү: wikitext.",
        "apihelp-parse-example-summary": "Һығымтаны тикшереү.",
        "apihelp-patrol-param-rcid": "Яңы ID үҙгәртеүҙәрҙе патрулләү өсөн",
        "apihelp-patrol-param-revid": "ID мөхәррирҙе патулләү",
+       "apihelp-patrol-param-tags": "Юйҙырылғандар журналындағы яҙмаларға  мөрәжәғәт итер өсөн, билдәләрҙе үҙгәртергә.",
        "apihelp-patrol-example-rcid": "Һуңғы үҙгәрештәрҙе ҡарау.",
        "apihelp-patrol-example-revid": "Яңынан ҡарау.",
        "apihelp-protect-description": "Битте һаҡлау кимәлен үҙгәртергә",
+       "apihelp-protect-param-title": "Бит атамаһы. $1pageid менән бергә ҡулланылмай.",
+       "apihelp-protect-param-reason": "(ООН) һағы сәбәптәре.",
        "apihelp-protect-param-tags": "Юйҙырылғандар журналындағы яҙмаларға  мөрәжәғәт итер өсөн, билдәләрҙе үҙгәртергә.",
        "apihelp-protect-param-watchlist": "Ағымдағы ҡулланыусының теҙмәһенән битте һүҙһеҙ өҫтәргә йәки юйырға, һылтанмаларҙы файҙаланығыҙ йәки сәғәтте алмаштырмаҫҡа.",
        "apihelp-protect-example-protect": "Битте һаҡларға.",
        "apihelp-query-param-meta": "Ниндәй матамәғлүмәт ҡулланырға",
        "apihelp-query+allcategories-description": "Бөтә категорияларҙы иҫәпләргә",
        "apihelp-query+allcategories-param-from": "Иҫәп күсереү башланған ваҡыт билдәһе",
+       "apihelp-query+allcategories-param-to": "Иҫәп күсереү башланған ваҡыт билдәһе",
        "apihelp-query+allcategories-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
+       "apihelp-query+allcategories-param-dir": "Сортлау йүнәлештәре.",
        "apihelp-query+allcategories-param-limit": "Нисә категорияны кире ҡайтарырға",
        "apihelp-query+allcategories-param-prop": "Ниндәй үҙенсәлек алырға:",
        "apihelp-query+allcategories-paramvalue-prop-size": "Категорияларға биттәр һаны өҫтәү",
        "apihelp-query+allcategories-example-size": "Биттәр һаны буйынса мәғлүмәтле категориялар исемлеге.",
        "apihelp-query+allcategories-example-generator": "<kbd>исемлек</kbd> категориялар битенән мәғлүмәт алырға.",
        "apihelp-query+alldeletedrevisions-description": "Бар мөхәррирләү исемлеге ҡулланыусы тарафынан юйылған.",
+       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "<var>$3ҡулланыусының</var> менән генә ҡулланыла ала.",
        "apihelp-query+alldeletedrevisions-param-end": "Иҫәп күсереү башланған ваҡыт билдәһе",
        "apihelp-query+alldeletedrevisions-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
        "apihelp-query+alldeletedrevisions-param-user": "Бары тик был ҡулланыусының үҙгәртеүҙәр исемлеге.",
+       "apihelp-query+alldeletedrevisions-param-namespace": "Бары тик был исемдәр арауығындағы биттәр исемлеге.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "Төп исемдәр арауығында юйылған тәүге 50 үҙгәртеү исемлеге.",
+       "apihelp-query+allfileusages-description": "Юйылғандар менән бергә барлыҡ файлдар тәртибе исемлеге.",
+       "apihelp-query+allfileusages-param-from": "Һанауҙы башлау өсөн файл атамаһы.",
        "apihelp-query+allfileusages-param-to": "Һанауҙы туҡтатыу файлы атамаһы.",
        "apihelp-query+allfileusages-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
        "apihelp-query+allfileusages-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Файл атамаһына ҡуша.",
        "apihelp-query+allfileusages-param-limit": "Нисә битте тергеҙергә?",
+       "apihelp-query+allfileusages-param-dir": "Һанау йүнәлеше.",
        "apihelp-query+allfileusages-example-unique": "Атамаларҙың уҙенсәлекле файлдары исемлеге.",
+       "apihelp-query+allfileusages-example-unique-generator": "Төшөп ҡалғандарҙы айырып, барлыҡ исем-һылтанмаларҙы алырға.",
+       "apihelp-query+allimages-description": "Бер-бер артлы бөтә образдарҙы һанап сығырға.",
+       "apihelp-query+allimages-param-sort": "Сортировкалау үҙенсәлектәре.",
+       "apihelp-query+allimages-param-dir": "Һанау йүнәлеше.",
        "apihelp-query+allimages-param-minsize": "Һүрәттәр лимиты (байттарҙа).",
        "apihelp-query+allimages-param-maxsize": "Бар һүрәттәр лимиты (байттарҙа).",
        "apihelp-query+allimages-param-limit": "Кире ҡайтыу өсөн образдар һаны.",
        "apihelp-query+allimages-example-B": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
        "apihelp-query+allimages-example-generator": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
+       "apihelp-query+alllinks-description": "Бирелгән исемдәр арауығына йүнәлткән барлыҡ һылтанмаларҙы һанап сығырға.",
+       "apihelp-query+alllinks-param-from": "Һанауҙы башлау өсөн һылтанма атамаһы.",
+       "apihelp-query+alllinks-param-to": "Һанауҙы туҡтатыу һылтанмаһы атамаһы.",
+       "apihelp-query+alllinks-param-prefix": "Был мәғәнәнән башланған бәйләнешле бар атамаларҙы эҙләргә.",
+       "apihelp-query+alllinks-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Һылтанма атамаһын ҡуша.",
+       "apihelp-query+alllinks-param-namespace": "Һанау өсөн исемдәр арауығы.",
        "apihelp-query+alllinks-param-limit": "Нисә битте тергеҙергә?",
        "apihelp-query+alllinks-param-dir": "Һанау йүнәлеше.",
        "apihelp-query+alllinks-example-unique": "Атамаларҙың уҙенсәлекле файлдары исемлеге.",
+       "apihelp-query+alllinks-example-unique-generator": "Төшөп ҡалғандарҙы айырып, барлыҡ исем-һылтанмаларҙы алырға.",
        "apihelp-query+alllinks-example-generator": "Һылтанмалы биттәр бар.",
+       "apihelp-query+allmessages-description": "Был сайттан хәбәр ҡайтарыу.",
        "apihelp-query+allmessages-param-prop": "Ниндәй үҙенсәлек алырға:",
        "apihelp-query+allmessages-param-args": "Аргументтар Хәбәрҙәрҙә биреләсәк.",
        "apihelp-query+allpages-param-from": "Иҫәп күсереү башланған ваҡыт билдәһе",
        "apihelp-query+allpages-param-to": "Иҫәп күсереү башланған ваҡыт билдәһе",
        "apihelp-query+allpages-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
+       "apihelp-query+allpages-param-namespace": "Һанау өсөн исемдәр арауығы.",
        "apihelp-query+allpages-param-minsize": "Һүрәттәр лимиты (байттарҙа).",
+       "apihelp-query+allpages-param-limit": "Нисә битте тергеҙергә?",
        "apihelp-query+allpages-param-dir": "Һанау йүнәлеше.",
        "apihelp-query+allpages-example-B": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
        "apihelp-query+allpages-example-generator": "<kbd>Б</kbd> хәрефенән башланған файлдар исемлеген күрһәтергә.",
        "apihelp-query+allredirects-param-from": "Һанауҙы туҡтатыу файлы атамаһы.",
        "apihelp-query+allredirects-param-to": "Һанауҙы туҡтатыу файлы атамаһы.",
        "apihelp-query+allredirects-param-prefix": "Был мәғәнәнән башланған бар атамаларҙы категориялар буйынса эҙләргә.",
+       "apihelp-query+allredirects-param-prop": "Ҡайһы мәғлүмәтте күрһәтергә:",
+       "apihelp-query+allredirects-param-namespace": "Һанау өсөн исемдәр арауығы.",
+       "apihelp-query+allredirects-param-dir": "Һанау йүнәлеше.",
        "apihelp-query+allredirects-example-generator": "Һылтанмалы биттәр бар.",
        "apihelp-query+allrevisions-param-start": "Иҫәп күсереү башланған ваҡыт билдәһе",
        "apihelp-query+allrevisions-param-end": "Иҫәп күсереү башланған ваҡыт билдәһе",
index 2d1542e..2b23da0 100644 (file)
@@ -20,7 +20,7 @@
        "apihelp-main-param-uselang": "Language to use for message translations. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> with <kbd>siprop=languages</kbd> returns a list of language codes, or specify <kbd>user</kbd> to use the current user's language preference, or specify <kbd>content</kbd> to use this wiki's content language.",
 
        "apihelp-block-description": "Block a user.",
-       "apihelp-block-param-user": "Username, IP address, or IP range to block.",
+       "apihelp-block-param-user": "Username, IP address, or IP address range to block.",
        "apihelp-block-param-expiry": "Expiry time. May be relative (e.g. <kbd>5 months</kbd> or <kbd>2 weeks</kbd>) or absolute (e.g. <kbd>2014-09-18T12:34:56Z</kbd>). If set to <kbd>infinite</kbd>, <kbd>indefinite</kbd>, or <kbd>never</kbd>, the block will never expire.",
        "apihelp-block-param-reason": "Reason for block.",
        "apihelp-block-param-anononly": "Block anonymous users only (i.e. disable anonymous edits for this IP address).",
        "apihelp-imagerotate-example-generator": "Rotate all images in <kbd>Category:Flip</kbd> by <kbd>180</kbd> degrees.",
 
        "apihelp-import-description": "Import a page from another wiki, or from an XML file.\n\nNote that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when sending a file for the <var>xml</var> parameter.",
-       "apihelp-import-param-summary": "Import summary.",
+       "apihelp-import-param-summary": "Log entry import summary.",
        "apihelp-import-param-xml": "Uploaded XML file.",
        "apihelp-import-param-interwikisource": "For interwiki imports: wiki to import from.",
        "apihelp-import-param-interwikipage": "For interwiki imports: page to import.",
        "apihelp-query+blocks-param-end": "The timestamp to stop enumerating at.",
        "apihelp-query+blocks-param-ids": "List of block IDs to list (optional).",
        "apihelp-query+blocks-param-users": "List of users to search for (optional).",
-       "apihelp-query+blocks-param-ip": "Get all blocks applying to this IP or CIDR range, including range blocks.\nCannot be used together with <var>$3users</var>. CIDR ranges broader than IPv4/$1 or IPv6/$2 are not accepted.",
+       "apihelp-query+blocks-param-ip": "Get all blocks applying to this IP address or CIDR range, including range blocks.\nCannot be used together with <var>$3users</var>. CIDR ranges broader than IPv4/$1 or IPv6/$2 are not accepted.",
        "apihelp-query+blocks-param-limit": "The maximum number of blocks to list.",
        "apihelp-query+blocks-param-prop": "Which properties to get:",
        "apihelp-query+blocks-paramvalue-prop-id": "Adds the ID of the block.",
 
        "apihelp-unblock-description": "Unblock a user.",
        "apihelp-unblock-param-id": "ID of the block to unblock (obtained through <kbd>list=blocks</kbd>). Cannot be used together with <var>$1user</var>.",
-       "apihelp-unblock-param-user": "Username, IP address or IP range to unblock. Cannot be used together with <var>$1id</var>.",
+       "apihelp-unblock-param-user": "Username, IP address or IP address range to unblock. Cannot be used together with <var>$1id</var>.",
        "apihelp-unblock-param-reason": "Reason for unblock.",
        "apihelp-unblock-param-tags": "Change tags to apply to the entry in the block log.",
        "apihelp-unblock-example-id": "Unblock block ID #<kbd>105</kbd>.",
index e50e566..49c49f2 100644 (file)
                        "Chris TR",
                        "Ncontinanza",
                        "Poco a poco",
-                       "YoViajo"
+                       "YoViajo",
+                       "Eloy"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|Preguntas frecuentes]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de correos]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API de anuncios]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Errores y peticiones]\n</div>\n<strong>Estado:</strong> Todas las características que se muestran en esta página debería funcionar, pero la API aún está en desarrollo activo y puede cambiar en cualquier momento. Suscríbete a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la lista de correo de mediawiki-api-announce] para estar al día de las actualizaciones.\n\n<strong>Solicitudes erróneas:</strong> Cuando se envían solicitudes erróneas a la API, se envía un encabezado HTTP con la clave \"MediaWiki-API-Error\" y ambos valores, del encabezado y el código de error, se establecerán en el mismo valor. Para más información, véase [[mw:API:Errors_and_warnings|API: Errores y advertencias]].\n\n<strong>Pruebas:</strong> para facilitar las pruebas de solicitudes a la API, consulta [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Qué acción se realizará.",
        "apihelp-main-param-format": "El formato de la salida.",
-       "apihelp-main-param-smaxage": "Establece el encabezado <code>s-maxage</code> durante estos segundos. Los errores nunca se almacenan en caché.",
-       "apihelp-main-param-maxage": "Establece el encabezado <code>max-age</code> durante estos segundos. Los errores nunca se almacenan en caché.",
+       "apihelp-main-param-smaxage": "Establece el encabezado HTTP <code>s-maxage</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
+       "apihelp-main-param-maxage": "Establece el encabezado HTTP <code>max-age</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
        "apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si es <kbd>bot</kbd>.",
        "apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
        "apihelp-main-param-servedby": "Incluir el nombre del host que ha servido la solicitud en los resultados.",
        "apihelp-main-param-curtimestamp": "Incluir la marca de tiempo actual en el resultado.",
+       "apihelp-main-param-origin": "Cuando se accede a la API usando una petición AJAX de distinto dominio (CORS), establece este valor al dominio de origen. Debe ser incluido en cualquier petición pre-vuelo, y por lo tanto debe ser parte de la URI de la petición (no del cuerpo POST). Debe coincidir exactamente con uno de los orígenes de la cabecera <code>Origin</code>, por lo que debería ser algo como <kbd>https://en.wikipedia.org</kbd> o <kbd>https://meta.wikimedia.org</kbd>. Si este parámetro no coincide con la cabecera <code>Origin</code>, se devolverá una respuesta 403.\nSi este parámetro coincide con la cabecera <code>Origin</code> y el origen está en lista blanca, se creará una cabecera <code>Access-Control-Allow-Origin</code>.",
        "apihelp-main-param-uselang": "El idioma que se usará para las traducciones de mensajes. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> con <kbd>siprop=languages</kbd> devuelve una lista de códigos de idiomas, o especifica <kbd>user</kbd> para usar la preferencia de idioma del usuario actual, o especifica <kbd>content</kbd> para usar el idioma de contenido de este wiki.",
        "apihelp-block-description": "Bloquear a un usuario.",
        "apihelp-block-param-user": "El nombre de usuario, dirección IP o intervalo de IP que quieres bloquear.",
        "apihelp-parse-example-summary": "Analizar un resumen.",
        "apihelp-patrol-description": "Verificar una página o revisión.",
        "apihelp-patrol-param-rcid": "Identificador de cambios recientes que verificar.",
+       "apihelp-patrol-param-revid": "ID de revisión a patrullar.",
        "apihelp-patrol-example-rcid": "Verificar un cambio reciente.",
        "apihelp-patrol-example-revid": "Verificar una revisión.",
        "apihelp-protect-description": "Cambiar el nivel de protección de una página.",
        "apihelp-query+embeddedin-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+extlinks-param-limit": "Cuántos enlaces se devolverán.",
        "apihelp-query+extlinks-example-simple": "Obtener una lista de los enlaces externos en <kbd>Main Page</kbd>.",
+       "apihelp-query+exturlusage-description": "Enumera páginas que contienen una URL dada.",
        "apihelp-query+exturlusage-param-prop": "Qué piezas de información incluir:",
        "apihelp-query+exturlusage-paramvalue-prop-ids": "Añade el identificado de la página.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Agrega el título y el identificador del espacio de nombres de la página.",
index 6841ab7..c0c405a 100644 (file)
        "apihelp-watch-example-unwatch": "Deixar de vixiar a páxina <kbd>Páxina Principal</kbd>.",
        "apihelp-watch-example-generator": "Vixiar as primeiras páxinas no espazo de nomes principal",
        "apihelp-format-example-generic": "Devolver o resultado da consulta no formato $1.",
+       "apihelp-format-param-wrappedhtml": "Devolver o HTML formatado e os módulos ResourceLoader asociados como un obxecto JSON.",
        "apihelp-json-description": "Datos de saída en formato JSON.",
        "apihelp-json-param-callback": "Se está especificado, inclúe a saída na chamada da función indicada. Para maior seguridade, todos os datos específicos do usuario serán restrinxidos.",
        "apihelp-json-param-utf8": "Se está especificado, codifica a maioría (pero non todos) dos caracteres ASCII como UTF-8 no canto de reemprazalos con secuencias de escape hexadecimais. Por defecto cando <var>formatversion</var> non é <kbd>1</kbd>.",
index 618fbc7..a1058b8 100644 (file)
@@ -39,7 +39,7 @@
        "apihelp-block-param-reblock": "אם המשתמש כבר חסום, לדרוס את החסימה הנוכחית.",
        "apihelp-block-param-watchuser": "לעקוב אחרי דף המשתמש ודף השיחה של המשתמש או של כתובת ה־IP.",
        "apihelp-block-example-ip-simple": "חסימת כתובת ה־IP‏ <kbd>192.0.2.5</kbd> לשלושה ימים עם הסיבה <kbd>First strike</kbd>.",
-       "apihelp-block-example-user-complex": "×\97ס×\99×\9eת ×\94×\9eשת×\9eש <kbd>Vandal</kbd> ×\9c×\9c×\90 ×\94×\92×\91×\9cת ×\96×\9e×\9f ×¢×\9d ×\94ס×\99×\91×\94 <kbd>Vandalism</kbd>, ×\95×\9e× ×\99עת ×\99צ×\99רת ×\97ש×\91×\95×\91ות חדשים ושליחת דוא\"ל.",
+       "apihelp-block-example-user-complex": "×\97ס×\99×\9eת ×\94×\9eשת×\9eש <kbd>Vandal</kbd> ×\9c×\9c×\90 ×\94×\92×\91×\9cת ×\96×\9e×\9f ×¢×\9d ×\94ס×\99×\91×\94 <kbd>Vandalism</kbd>, ×\95×\9e× ×\99עת ×\99צ×\99רת ×\97ש×\91×\95× ות חדשים ושליחת דוא\"ל.",
        "apihelp-checktoken-description": "בדיקת התקינות של האסימון מ־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-checktoken-param-type": "סוג האסימון שבבדיקה.",
        "apihelp-checktoken-param-token": "איזה אסימון לבדוק.",
        "apihelp-query+allusers-paramvalue-prop-groups": "הוספת קבוצות שמשתמש חבר בהן. זה משתמש ביותר משאבי דפדפן ויכול להחזיר פחות תוצאות מהמגבלה.",
        "apihelp-query+allusers-paramvalue-prop-implicitgroups": "לרשום את כל הקבוצות שהמשתמש חבר בהן אוטומטית.",
        "apihelp-query+allusers-paramvalue-prop-rights": "רשימת הההרשאות שיש למשתמש.",
-       "apihelp-query+allusers-paramvalue-prop-editcount": "×\94×\95ספת ×\9e× ×\99×\99×\9f ×\94ער×\99×\9b×\95ת ×©×\9c ×\94×\9eשת×\9eש .",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "×\94×\95ספת ×\9e×\95× ×\94 ×\94ער×\99×\9b×\95ת ×©×\9c ×\94×\9eשת×\9eש.",
        "apihelp-query+allusers-paramvalue-prop-registration": "הוספת חותם־הזמן של זמן הרישום של המשתמש (יכול להיות ריק).",
        "apihelp-query+allusers-paramvalue-prop-centralids": "הוספת המזהה המרכזי ומצב השיוך למשתמש.",
        "apihelp-query+allusers-param-limit": "כמה שמות משתמש בסך הכול לשנות.",
index 022c625..942b4d3 100644 (file)
@@ -60,7 +60,7 @@
        "apihelp-createaccount-example-pass": "Crea l'utente <kbd>testuser</kbd> con password <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Crea l'utente <kbd>testmailuser</kbd> e mandagli via e-mail una password generata casualmente.",
        "apihelp-delete-description": "Cancella una pagina.",
-       "apihelp-delete-param-title": "Titolo della pagina che si desidera eliminare. Non può essere usato insieme con <var>$1pageid</var>.",
+       "apihelp-delete-param-title": "Titolo della pagina che si desidera eliminare. Non può essere usato insieme a <var>$1pageid</var>.",
        "apihelp-delete-param-pageid": "ID di pagina della pagina da cancellare. Non può essere usato insieme con <var>$1title</var>.",
        "apihelp-delete-param-reason": "Motivo della cancellazione. Se non indicato, verrà usata una motivazione generata automaticamente.",
        "apihelp-delete-param-watch": "Aggiunge la pagina agli osservati speciali dell'utente attuale.",
@@ -70,7 +70,7 @@
        "apihelp-delete-example-reason": "Cancella la <kbd>Main Page</kbd> con motivazione <kbd>Preparing for move</kbd>.",
        "apihelp-disabled-description": "Questo modulo è stato disabilitato.",
        "apihelp-edit-description": "Crea e modifica pagine.",
-       "apihelp-edit-param-title": "Titolo della pagina da modificare. Non può essere usato insieme con <var>$1pageid</var>.",
+       "apihelp-edit-param-title": "Titolo della pagina da modificare. Non può essere usato insieme a <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "ID di pagina della pagina da modificare. Non può essere usato insieme con <var>$1title</var>.",
        "apihelp-edit-param-section": "Numero di sezione. <kbd>0</kbd> per la sezione iniziale, <kbd>new</kbd> per una nuova sezione.",
        "apihelp-edit-param-sectiontitle": "Il titolo per una nuova sezione.",
        "apihelp-feedcontributions-param-showsizediff": "Mostra la differenza di dimensioni tra le versioni.",
        "apihelp-feedcontributions-example-simple": "Restituisce contributi per l'utente <kbd>Example</kbd>.",
        "apihelp-feedrecentchanges-param-feedformat": "Il formato del feed.",
+       "apihelp-feedrecentchanges-param-namespace": "Namespace a cui limitare i risultati.",
+       "apihelp-feedrecentchanges-param-associated": "Includi namespace associato (discussione o principale)",
        "apihelp-feedrecentchanges-param-limit": "Numero massimo di risultati da restituire.",
        "apihelp-feedrecentchanges-param-hideminor": "Nascondi le modifiche minori.",
        "apihelp-feedrecentchanges-param-hidebots": "Nascondi le modifiche apportate da bot.",
        "apihelp-filerevert-param-comment": "Commento sul caricamento.",
        "apihelp-filerevert-param-archivename": "Nome dell'archivio della versione da ripristinare.",
        "apihelp-filerevert-example-revert": "Ripristina <kbd>Wiki.png</kbd> alla versione del <kbd>2011-03-05T15:27:40Z</kbd>.",
+       "apihelp-help-param-toc": "Includi un indice nell'output HTML.",
        "apihelp-help-example-main": "Aiuto per il modulo principale.",
        "apihelp-help-example-submodules": "Aiuto per <kbd>action=query</kbd> e tutti i suoi sotto-moduli.",
+       "apihelp-help-example-recursive": "Tutti gli aiuti in una pagina.",
+       "apihelp-help-example-help": "Aiuto per lo stesso modulo di aiuto.",
        "apihelp-imagerotate-description": "Ruota una o più immagini.",
        "apihelp-imagerotate-param-rotation": "Gradi di rotazione dell'immagine in senso orario.",
        "apihelp-imagerotate-example-simple": "Ruota <kbd>File:Example.png</kbd> di <kbd>90</kbd> gradi.",
        "apihelp-import-param-interwikipage": "Per importazioni interwiki: pagina da importare.",
        "apihelp-import-param-fullhistory": "Per importazioni interwiki: importa l'intera cronologia, non solo la versione attuale.",
        "apihelp-import-param-templates": "Per importazioni interwiki: importa anche tutti i template inclusi.",
+       "apihelp-import-param-namespace": "Importa in questo namespace. Non può essere usato insieme a <var>$1rootpage</var>.",
+       "apihelp-import-param-rootpage": "Importa come sottopagina di questa pagina. Non può essere usato insieme a <var>$1namespace</var>.",
        "apihelp-import-example-import": "Importa [[meta:Help:ParserFunctions]] nel namespace 100 con cronologia completa.",
        "apihelp-login-param-name": "Nome utente.",
        "apihelp-login-param-password": "Password.",
        "apihelp-mergehistory-example-merge": "Unisci l'intera cronologia di <kbd>Oldpage</kbd> in <kbd>Newpage</kbd>.",
        "apihelp-mergehistory-example-merge-timestamp": "Unisci le versioni della pagina <kbd>Oldpage</kbd> fino a <kbd>2015-12-31T04:37:41Z</kbd> in <kbd>Newpage</kbd>.",
        "apihelp-move-description": "Sposta una pagina.",
+       "apihelp-move-param-to": "Titolo a cui spostare la pagina.",
        "apihelp-move-param-reason": "Motivo della rinomina.",
        "apihelp-move-param-movetalk": "Rinomina la pagina di discussione, se esiste.",
        "apihelp-move-param-movesubpages": "Rinomina sottopagine, se applicabile.",
        "apihelp-move-param-noredirect": "Non creare un rinvio.",
        "apihelp-move-param-watch": "Aggiunge la pagina e il redirect agli osservati speciali dell'utente attuale.",
+       "apihelp-move-param-unwatch": "Rimuovi la pagina e il redirect dagli osservati speciali dell'utente attuale.",
        "apihelp-move-param-ignorewarnings": "Ignora i messaggi di avvertimento del sistema.",
        "apihelp-move-example-move": "Sposta <kbd>Badtitle</kbd> a <kbd>Goodtitle</kbd> senza lasciare redirect.",
+       "apihelp-opensearch-param-search": "Stringa di ricerca.",
        "apihelp-opensearch-param-limit": "Numero massimo di risultati da restituire.",
        "apihelp-opensearch-param-suggest": "Non fare nulla se <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> è falso.",
        "apihelp-opensearch-param-format": "Il formato dell'output.",
        "apihelp-patrol-example-rcid": "Verifica una modifica recente.",
        "apihelp-patrol-example-revid": "Verifica una versione.",
        "apihelp-protect-description": "Modifica il livello di protezione di una pagina.",
-       "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme con $1pageid.",
+       "apihelp-protect-param-title": "Titolo della pagina da (s)proteggere. Non può essere usato insieme a <var>$1pageid</var>.",
        "apihelp-protect-param-pageid": "ID della pagina da (s)proteggere. Non può essere usato insieme con $1title.",
        "apihelp-protect-param-tags": "Modifica etichette da applicare all'elemento del registro delle protezioni.",
        "apihelp-protect-example-protect": "Proteggi una pagina.",
        "apihelp-protect-example-unprotect": "Sproteggi una pagina impostando restrizione su <kbd>all</kbd>.",
        "apihelp-protect-example-unprotect2": "Sproteggi una pagina impostando nessuna restrizione.",
+       "apihelp-purge-param-forcelinkupdate": "Aggiorna la tabella dei collegamenti.",
+       "apihelp-purge-param-forcerecursivelinkupdate": "Aggiorna la tabella dei collegamenti per questa pagina, e per ogni pagina che usa questa pagina come template.",
        "apihelp-query-param-list": "Quali elenchi ottenere.",
        "apihelp-query-param-meta": "Quali metadati ottenere.",
        "apihelp-query-param-export": "Esporta la versione attuale di tutte le pagine ottenute o generate.",
        "apihelp-query+allfileusages-paramvalue-prop-title": "Aggiunge il titolo del file.",
        "apihelp-query+allfileusages-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+allfileusages-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+allfileusages-example-generator": "Ottieni le pagine contenenti i file.",
        "apihelp-query+allimages-param-sort": "Proprietà di ordinamento.",
        "apihelp-query+allimages-param-dir": "La direzione in cui elencare.",
        "apihelp-query+allimages-param-from": "Il titolo dell'immagine da cui iniziare l'elenco. Può essere utilizzato solo con $1sort=name.",
        "apihelp-query+allimages-param-end": "Il timestamp al quale interrompere l'elenco. Può essere utilizzato solo con $1sort=timestamp.",
        "apihelp-query+allimages-param-limit": "Quante immagini in totale restituire.",
        "apihelp-query+allimages-example-B": "Mostra un elenco di file a partire dalla lettera <kbd>B</kbd>.",
+       "apihelp-query+alllinks-description": "Elenca tutti i collegamenti che puntano ad un namespace indicato.",
        "apihelp-query+alllinks-param-from": "Il titolo del collegamento da cui iniziare l'elenco.",
        "apihelp-query+alllinks-param-to": "Il titolo del collegamento al quale interrompere l'elenco.",
        "apihelp-query+alllinks-param-prefix": "Ricerca per tutti i titoli dei collegamenti che iniziano con questo valore.",
        "apihelp-query+alllinks-param-namespace": "Il namespace da elencare.",
        "apihelp-query+alllinks-param-limit": "Quanti elementi totali restituire.",
        "apihelp-query+alllinks-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+alllinks-example-generator": "Ottieni le pagine contenenti i collegamenti.",
+       "apihelp-query+allmessages-description": "Restituisce messaggi da questo sito.",
        "apihelp-query+allmessages-param-prop": "Quali proprietà ottenere.",
        "apihelp-query+allmessages-param-lang": "Restituisci messaggi in questa lingua.",
+       "apihelp-query+allmessages-param-prefix": "Restituisci messaggi con questo prefisso.",
        "apihelp-query+allpages-param-from": "Il titolo di pagina da cui iniziare l'elenco.",
        "apihelp-query+allpages-param-to": "Il titolo di pagina al quale interrompere l'elenco.",
        "apihelp-query+allpages-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
        "apihelp-query+allpages-param-namespace": "Il namespace da elencare.",
        "apihelp-query+allpages-param-filterredir": "Quali pagine elencare.",
+       "apihelp-query+allpages-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+allpages-param-dir": "La direzione in cui elencare.",
        "apihelp-query+allredirects-param-from": "Il titolo del reindirizzamento da cui iniziare l'elenco.",
        "apihelp-query+allredirects-param-prop": "Quali pezzi di informazioni includere:",
        "apihelp-query+allusers-param-to": "Il nome utente al quale interrompere l'elenco.",
        "apihelp-query+allusers-param-prefix": "Ricerca per tutti gli utenti che iniziano con questo valore.",
        "apihelp-query+allusers-param-dir": "Direzione dell'ordinamento.",
+       "apihelp-query+allusers-param-group": "Includi solo gli utenti nei gruppi indicati.",
+       "apihelp-query+allusers-param-excludegroup": "Escludi gli utenti nei gruppi indicati.",
        "apihelp-query+allusers-param-prop": "Quali pezzi di informazioni includere:",
        "apihelp-query+allusers-param-limit": "Quanti nomi utente totali restituire.",
        "apihelp-query+backlinks-description": "Trova tutte le pagine che puntano a quella specificata.",
        "apihelp-query+blocks-paramvalue-prop-by": "Aggiunge il nome utente dell'utente che ha effettuato il blocco.",
        "apihelp-query+blocks-paramvalue-prop-byid": "Aggiunge l'ID utente dell'utente che ha effettuato il blocco.",
        "apihelp-query+blocks-example-simple": "Elenca i blocchi.",
+       "apihelp-query+categories-param-show": "Quale tipo di categorie mostrare.",
        "apihelp-query+categories-param-limit": "Quante categorie restituire.",
        "apihelp-query+categories-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+categoryinfo-description": "Restituisce informazioni su una categoria indicata.",
+       "apihelp-query+categoryinfo-example-simple": "Ottieni informazioni su <kbd>Category:Foo</kbd> e <kbd>Category:Bar</kbd>.",
+       "apihelp-query+categorymembers-description": "Elenca tutte le pagine in una categoria indicata.",
+       "apihelp-query+categorymembers-param-prop": "Quali pezzi di informazioni includere:",
        "apihelp-query+categorymembers-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
        "apihelp-query+categorymembers-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+categorymembers-paramvalue-prop-type": "Aggiunge il tipo di come la pagina è stata categorizzata (<samp>page</samp>, <samp>subcat</samp> o <samp>file</samp>).",
        "apihelp-query+categorymembers-param-namespace": "Includi solo le pagine in questi namespace. Nota che può essere usato <kbd>$1type=subcat</kbd> o <kbd>$1type=file</kbd> anziché <kbd>$1namespace=14</kbd> o <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-limit": "Il numero massimo di pagine da restituire.",
+       "apihelp-query+categorymembers-param-sort": "Proprietà di ordinamento.",
        "apihelp-query+categorymembers-param-dir": "In quale direzione ordinare.",
+       "apihelp-query+categorymembers-param-start": "Il timestamp da cui iniziare l'elenco. Può essere utilizzato solo con <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-end": "Il timestamp al quale interrompere l'elenco. Può essere utilizzato solo con <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkey": "Usa $1starthexsortkey invece.",
+       "apihelp-query+categorymembers-param-endsortkey": "Usa $1endhexsortkey invece.",
+       "apihelp-query+categorymembers-example-simple": "Ottieni le prime 10 pagine in <kbd>Category:Physics</kbd>.",
+       "apihelp-query+categorymembers-example-generator": "Ottieni informazioni sulle prime 10 pagine in <kbd>Category:Physics</kbd>.",
        "apihelp-query+contributors-param-limit": "Quanti contributi restituire.",
        "apihelp-query+deletedrevisions-param-start": "Il timestamp da cui iniziare l'elenco. Ignorato quando si elabora un elenco di ID versioni.",
        "apihelp-query+deletedrevisions-param-end": "Il timestamp al quale interrompere l'elenco. Ignorato quando si elabora un elenco di ID versioni.",
+       "apihelp-query+deletedrevisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
+       "apihelp-query+deletedrevisions-param-user": "Elenca solo le versioni di questo utente.",
+       "apihelp-query+deletedrevisions-param-excludeuser": "Non elencare le versioni di questo utente.",
+       "apihelp-query+deletedrevisions-example-titles": "Elenca le versioni cancellate delle pagine <kbd>Main Page</kbd> e <kbd>Talk:Main Page</kbd>, con il contenuto.",
+       "apihelp-query+deletedrevisions-example-revids": "Elenca le informazioni per la versione cancellata <kbd>123456</kbd>.",
        "apihelp-query+deletedrevs-param-start": "Il timestamp da cui iniziare l'elenco.",
        "apihelp-query+deletedrevs-param-end": "Il timestamp al quale interrompere l'elenco.",
        "apihelp-query+deletedrevs-param-from": "Inizia elenco a questo titolo.",
        "apihelp-query+deletedrevs-param-to": "Interrompi elenco a questo titolo.",
        "apihelp-query+deletedrevs-param-prefix": "Ricerca per tutti i titoli delle pagine che iniziano con questo valore.",
        "apihelp-query+deletedrevs-param-unique": "Elenca solo una versione per ogni pagina.",
+       "apihelp-query+deletedrevs-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
        "apihelp-query+deletedrevs-param-user": "Elenca solo le versioni di questo utente.",
        "apihelp-query+deletedrevs-param-excludeuser": "Non elencare le versioni di questo utente.",
        "apihelp-query+deletedrevs-param-namespace": "Elenca solo le pagine in questo namespace.",
        "apihelp-query+deletedrevs-param-limit": "Il numero massimo di versioni da elencare.",
+       "apihelp-query+disabled-description": "Questo modulo query è stato disabilitato.",
        "apihelp-query+duplicatefiles-param-limit": "Quanti file duplicati restituire.",
        "apihelp-query+duplicatefiles-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+duplicatefiles-example-simple": "Cerca i duplicati di [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+duplicatefiles-example-generated": "Cerca i duplicati di tutti i file.",
        "apihelp-query+embeddedin-description": "Trova tutte le pagine che incorporano (transclusione) il titolo specificato.",
        "apihelp-query+embeddedin-param-namespace": "Il namespace da elencare.",
        "apihelp-query+embeddedin-param-dir": "La direzione in cui elencare.",
        "apihelp-query+embeddedin-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+extlinks-param-limit": "Quanti collegamenti restituire.",
+       "apihelp-query+exturlusage-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Aggiunge l'ID della pagina.",
        "apihelp-query+exturlusage-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
-       "apihelp-query+exturlusage-param-limit": "Quante pagina restituire.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Aggiunge l'URL utilizzato nella pagina.",
+       "apihelp-query+exturlusage-param-namespace": "I namespace da elencare.",
+       "apihelp-query+exturlusage-param-limit": "Quante pagine restituire.",
        "apihelp-query+filearchive-param-from": "Il titolo dell'immagine da cui iniziare l'elenco.",
        "apihelp-query+filearchive-param-limit": "Quante immagini restituire in totale.",
        "apihelp-query+filearchive-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Aggiunge MIME dell'immagine.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Aggiunge la profondità di bit della versione.",
        "apihelp-query+filearchive-example-simple": "Mostra un elenco di tutti i file cancellati.",
        "apihelp-query+fileusage-description": "Trova tutte le pagine che utilizzano il file specificato.",
        "apihelp-query+fileusage-param-prop": "Quali proprietà ottenere:",
        "apihelp-query+fileusage-param-namespace": "Includi solo le pagine in questi namespace.",
        "apihelp-query+fileusage-param-show": "Mostra solo gli elementi che soddisfano questi criteri:\n;redirect:mostra solo i redirect.\n;!redirect:mostra solo i non redirect.",
        "apihelp-query+fileusage-example-simple": "Ottieni un elenco di pagine che usano [[:File:Example.jpg]].",
+       "apihelp-query+imageinfo-paramvalue-prop-mime": "Aggiunge il tipo MIME del file.",
        "apihelp-query+imageinfo-param-start": "Il timestamp da cui iniziare l'elenco.",
+       "apihelp-query+imageinfo-param-urlheight": "Simile a $1urlwidth.",
+       "apihelp-query+images-param-limit": "Quanti file restituire.",
        "apihelp-query+images-param-dir": "La direzione in cui elencare.",
        "apihelp-query+images-example-simple": "Ottieni un elenco di file usati in [[Main Page]].",
        "apihelp-query+imageusage-description": "Trova tutte le pagine che utilizzano il titolo dell'immagine specificato.",
        "apihelp-query+imageusage-param-dir": "La direzione in cui elencare.",
        "apihelp-query+imageusage-param-redirect": "Se la pagina collegata è un redirect, trova tutte le pagine che puntano al redirect. Il limite massimo è dimezzato.",
        "apihelp-query+info-paramvalue-prop-visitingwatchers": "Il numero di osservatori di ogni pagina che hanno visitato le ultime modifiche alla pagina, se consentito.",
+       "apihelp-query+iwbacklinks-param-prefix": "Prefisso per l'interwiki.",
+       "apihelp-query+iwbacklinks-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+iwbacklinks-param-prop": "Quali proprietà ottenere:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Aggiunge il prefisso dell'interwiki.",
        "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Aggiunge il titolo dell'interwiki.",
        "apihelp-query+iwbacklinks-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+iwlinks-description": "Restituisce tutti i collegamenti interwiki dalle pagine indicate.",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Aggiunge l'URL completo.",
+       "apihelp-query+iwlinks-param-limit": "Quanti collegamenti interwiki restituire.",
        "apihelp-query+iwlinks-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+langbacklinks-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+langbacklinks-param-prop": "Quali proprietà ottenere:",
        "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Aggiunge il titolo del collegamento linguistico.",
        "apihelp-query+langbacklinks-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Aggiunge l'URL completo.",
        "apihelp-query+langlinks-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+links-param-namespace": "Mostra collegamenti solo in questi namespace.",
+       "apihelp-query+links-param-limit": "Quanti collegamenti restituire.",
        "apihelp-query+links-param-dir": "La direzione in cui elencare.",
        "apihelp-query+linkshere-description": "Trova tutte le pagine che puntano a quelle specificate.",
        "apihelp-query+linkshere-param-prop": "Quali proprietà ottenere:",
        "apihelp-query+logevents-paramvalue-prop-title": "Aggiunge il titolo della pagine per l'evento nel registro.",
        "apihelp-query+logevents-param-start": "Il timestamp da cui iniziare l'elenco.",
        "apihelp-query+logevents-param-end": "Il timestamp al quale interrompere l'elenco.",
+       "apihelp-query+pageswithprop-param-prop": "Quali pezzi di informazioni includere:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Aggiunge l'ID pagina.",
        "apihelp-query+pageswithprop-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Aggiunge il valore della proprietà di pagina.",
+       "apihelp-query+pageswithprop-param-limit": "Il numero massimo di pagine da restituire.",
+       "apihelp-query+pageswithprop-param-dir": "In quale direzione ordinare.",
+       "apihelp-query+prefixsearch-param-search": "Stringa di ricerca.",
+       "apihelp-query+prefixsearch-param-limit": "Numero massimo di risultati da restituire.",
+       "apihelp-query+prefixsearch-param-offset": "Numero di risultati da saltare",
+       "apihelp-query+protectedtitles-description": "Elenca tutti i titoli protetti dalla creazione.",
+       "apihelp-query+protectedtitles-param-namespace": "Elenca solo i titoli in questi namespace.",
+       "apihelp-query+protectedtitles-param-level": "Elenca solo i titoli con questi livelli di protezione.",
+       "apihelp-query+protectedtitles-param-limit": "Quante pagine totali restituire.",
        "apihelp-query+protectedtitles-param-prop": "Quali proprietà ottenere:",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Aggiunge l'utente che ha aggiunto la protezione.",
        "apihelp-query+protectedtitles-paramvalue-prop-userid": "Aggiunge l'ID utente che ha aggiunto la protezione.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Aggiunge il commento per la protezione.",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "Aggiunge il livello di protezione.",
        "apihelp-query+protectedtitles-example-generator": "Trova collegamenti a titoli protetti nel namespace principale.",
+       "apihelp-query+querypage-param-limit": "Numero di risultati da restituire.",
+       "apihelp-query+querypage-example-ancientpages": "Restituisce risultati da [[Special:Ancientpages|Speciale:PagineMenoRecenti]].",
+       "apihelp-query+random-param-namespace": "Restituisci le pagine solo in questi namespace.",
        "apihelp-query+random-param-redirect": "Usa <kbd>$1filterredir=redirects</kbd> invece.",
+       "apihelp-query+random-example-simple": "Restituisce due pagine casuali dal namespace principale.",
        "apihelp-query+recentchanges-description": "Elenca le modifiche recenti.",
        "apihelp-query+recentchanges-param-start": "Il timestamp da cui iniziare l'elenco.",
        "apihelp-query+recentchanges-param-end": "Il timestamp al quale interrompere l'elenco.",
        "apihelp-query+redirects-example-simple": "Ottieni un elenco di redirect a [[Main Page]].",
        "apihelp-query+revisions-param-startid": "L'ID versione da cui iniziare l'elenco.",
        "apihelp-query+revisions-param-start": "Il timestamp della versione da cui iniziare l'elenco.",
+       "apihelp-query+revisions-param-tag": "Elenca solo le versioni etichettate con questa etichetta.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "L'ID della versione.",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Il timestamp della versione.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Testo della versione.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Etichette della versione.",
+       "apihelp-query+search-param-what": "Quale tipo di ricerca effettuare.",
+       "apihelp-query+search-param-info": "Quali metadati restituire.",
+       "apihelp-query+search-param-prop": "Quali proprietà restituire.",
+       "apihelp-query+search-paramvalue-prop-size": "Aggiungi la dimensione della pagina in byte.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Aggiungi il conteggio delle parole nella pagina.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Aggiungi il timestamp di quando la pagina è stata modificata l'ultima volta.",
        "apihelp-query+search-paramvalue-prop-redirecttitle": "Aggiunge il titolo del redirect corrispondente.",
        "apihelp-query+search-paramvalue-prop-sectiontitle": "Aggiunge il titolo della sezione corrispondente.",
+       "apihelp-query+search-param-limit": "Quante pagine totali restituire.",
+       "apihelp-query+siteinfo-param-prop": "Quali informazioni ottenere:",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Restituisci librerie installate sul wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Restituisci estensioni installate sul wiki.",
        "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Restituisce informazioni sui tipi di restrizione (protezione) disponibili.",
        "apihelp-query+tags-param-prop": "Quali proprietà ottenere:",
+       "apihelp-query+templates-param-limit": "Quanti template restituire.",
        "apihelp-query+templates-param-dir": "La direzione in cui elencare.",
+       "apihelp-query+tokens-param-type": "Tipi di token da richiedere.",
        "apihelp-query+tokens-example-simple": "Recupera un token csrf (il predefinito).",
        "apihelp-query+transcludedin-description": "Trova tutte le pagine che incorporano quella specificata.",
        "apihelp-query+transcludedin-param-prop": "Quali proprietà ottenere:",
        "apihelp-query+transcludedin-param-namespace": "Includi solo le pagine in questi namespace.",
        "apihelp-query+transcludedin-param-show": "Mostra solo gli elementi che soddisfano questi criteri:\n;redirect:mostra solo i redirect.\n;!redirect:mostra solo i non redirect.",
        "apihelp-query+transcludedin-example-simple": "Ottieni un elenco di pagine che includono <kbd>Main Page</kbd>.",
+       "apihelp-query+usercontribs-param-namespace": "Elenca solo i contributi in questi namespace.",
        "apihelp-query+usercontribs-paramvalue-prop-title": "Aggiunge il titolo e l'ID namespace della pagina.",
        "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Etichetta modifiche verificate",
        "apihelp-query+userinfo-description": "Ottieni informazioni sull'utente attuale.",
        "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Aggiunge un'etichetta <samp>messages</samp> se l'utente attuale ha messaggi in attesa.",
        "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Elenca tutti i gruppi di cui l'utente attuale è automaticamente membro.",
        "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Elenca tutti i gruppi di cui l'utente attuale può essere aggiunto o rimosso.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Aggiungi il nome reale dell'utente.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Aggiungi la data di registrazione dell'utente.",
        "apihelp-query+userinfo-example-simple": "Ottieni informazioni sull'utente attuale.",
        "apihelp-query+users-description": "Ottieni informazioni su un elenco di utenti.",
+       "apihelp-query+users-param-prop": "Quali pezzi di informazioni includere:",
        "apihelp-query+users-param-users": "Un elenco di utenti di cui ottenere informazioni.",
        "apihelp-query+watchlist-description": "Ottieni le ultime modifiche alle pagine tra gli osservati speciali dell'utente attuale.",
        "apihelp-query+watchlist-param-start": "Il timestamp da cui iniziare l'elenco.",
        "apihelp-query+watchlist-param-end": "Il timestamp al quale interrompere l'elenco.",
+       "apihelp-query+watchlist-param-prop": "Quali proprietà aggiuntive ottenere:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Aggiunge l'ID versione e l'ID pagina.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "Aggiungi il titolo della pagina.",
+       "apihelp-query+watchlistraw-param-namespace": "Elenca solo le pagine nei namespace indicati.",
        "apihelp-query+watchlistraw-param-fromtitle": "Il titolo (con prefisso namespace) da cui iniziare l'elenco.",
        "apihelp-query+watchlistraw-param-totitle": "Il titolo (con prefisso namespace) al quale interrompere l'elenco.",
        "apihelp-query+watchlistraw-example-simple": "Elenca le pagine fra gli osservati speciali dell'utente attuale.",
        "apihelp-query+watchlistraw-example-generator": "Recupera le informazioni sulle pagine fra gli osservati speciali dell'utente attuale.",
+       "apihelp-stashedit-param-sectiontitle": "Il titolo per una nuova sezione.",
+       "apihelp-stashedit-param-text": "Contenuto della pagina.",
+       "apihelp-stashedit-param-contentmodel": "Modello di contenuto dei nuovi contenuti.",
        "apihelp-tokens-param-type": "Tipi di token da richiedere.",
        "apihelp-tokens-example-edit": "Recupera un token di modifica (il predefinito).",
        "apihelp-unblock-description": "Sblocca un utente",
        "apihelp-unblock-param-tags": "Modifica etichette da applicare all'elemento del registro dei blocchi.",
        "apihelp-undelete-param-title": "Titolo della pagina da ripristinare.",
        "apihelp-undelete-param-tags": "Modifica etichette da applicare all'elemento del registro delle cancellazioni.",
+       "apihelp-upload-param-file": "Contenuto del file.",
        "apihelp-upload-example-url": "Carica da un URL.",
        "apihelp-userrights-param-user": "Nome utente.",
        "apihelp-userrights-param-userid": "ID utente.",
+       "apihelp-userrights-param-add": "Aggiungi l'utente a questi gruppi.",
+       "apihelp-userrights-param-remove": "Rimuovi l'utente da questi gruppi.",
+       "apihelp-userrights-param-reason": "Motivo del cambiamento.",
        "apihelp-watch-description": "Aggiunge o rimuove pagine dagli osservati speciali dell'utente attuale.",
        "apihelp-format-param-wrappedhtml": "Restituisce l'HTML ben formattato e i moduli ResourceLoader associati come un oggetto JSON.",
        "api-pageset-param-titles": "Un elenco di titoli su cui lavorare.",
        "api-pageset-param-redirects-nogenerator": "Risolve automaticamente i reindirizzamenti in <var>$1titles</var>, <var>$1pageids</var>, e <var>$1revids</var>.",
        "api-pageset-param-converttitles": "Converte i titoli in altre varianti, se necessario. Funziona solo se la lingua del contenuto del wiki supporta la conversione in varianti. Le lingue che supportano la conversione in varianti includono $1",
        "api-help-main-header": "Modulo principale",
+       "api-help-flag-deprecated": "Questo modulo è deprecato.",
+       "api-help-flag-internal": "<strong>Questo modulo è interno o instabile.</strong> Il suo funzionamento potrebbe variare senza preavviso.",
+       "api-help-flag-readrights": "Questo modulo richiede i diritti di lettura.",
+       "api-help-flag-writerights": "Questo modulo richiede i diritti di scrittura.",
+       "api-help-flag-mustbeposted": "Questo modulo accetta solo richieste POST.",
+       "api-help-flag-generator": "Questo modulo può essere utilizzato come generatore.",
+       "api-help-source": "Fonte: $1",
+       "api-help-source-unknown": "Fonte: <span class=\"apihelp-unknown\">sconosciuta</span>",
        "api-help-license": "Licenza: [[$1|$2]]",
+       "api-help-license-noname": "Licenza: [[$1|Vedi collegamento]]",
        "api-help-license-unknown": "Licenza: <span class=\"apihelp-unknown\">sconosciuta</span>",
        "api-help-parameters": "{{PLURAL:$1|Parametro|Parametri}}:",
        "api-help-param-deprecated": "Deprecato.",
        "api-help-param-required": "Questo parametro è obbligatorio.",
+       "api-help-datatypes-header": "Tipi di dato",
+       "api-help-param-type-limit": "Tipo: intero o <kbd>max</kbd>",
+       "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=intero|2=elenco di interi}}",
+       "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|dettagli]])",
+       "api-help-param-type-timestamp": "Tipo: {{PLURAL:$1|1=timestamp|2=elenco di timestamp}} ([[Special:ApiHelp/main#main/datatypes|formati consentiti]])",
        "api-help-param-type-user": "Tipo: {{PLURAL:$1|1=nome utente|2=elenco di nomi utente}}",
        "api-help-param-list": "{{PLURAL:$1|1=Uno dei seguenti valori|2=Valori (separati da <kbd>{{!}}</kbd>)}}: $2",
+       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Deve essere vuoto|Può essere vuoto, o $2}}",
+       "api-help-param-limit": "Non più di $1 consentito.",
+       "api-help-param-limit2": "Non più di $1 ($2 per bot) consentito.",
+       "api-help-param-integer-min": "{{PLURAL:$1|1=Il valore non deve essere inferiore|2=I valori non devono essere inferiori}} a $2.",
+       "api-help-param-integer-max": "{{PLURAL:$1|1=Il valore non deve essere superiore|2=I valori non devono essere superiori}} a $3.",
+       "api-help-param-integer-minmax": "{{PLURAL:$1|1=Il valore deve essere compreso|2=I valori devono essere compresi}} tra $2 e $3.",
+       "api-help-param-multi-separate": "Separa i valori con <kbd>|</kbd>.",
        "api-help-param-multi-max": "Il numero massimo di valori è {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} per i bot).",
        "api-help-param-default": "Predefinito: $1",
        "api-help-param-default-empty": "Predefinito: <span class=\"apihelp-empty\">(vuoto)</span>",
index 801c616..d03bc63 100644 (file)
        "apihelp-revisiondelete-example-revision": "<kbd>Main Page</kbd> の版 <kbd>12345</kbd> の本文を隠す。",
        "apihelp-rollback-param-title": "巻き戻すページ名です。<var>$1pageid</var> とは同時に使用できません。",
        "apihelp-rollback-param-pageid": "巻き戻すページのページIDです。<var>$1title</var> とは同時に使用できません。",
+       "apihelp-rollback-param-tags": "巻き戻しに適用するタグ。",
        "apihelp-rollback-param-user": "巻き戻し対象の編集を行った利用者名。",
        "apihelp-rollback-param-markbot": "巻き戻された編集と巻き戻しをボットの編集としてマークする。",
        "apihelp-rollback-example-simple": "利用者 <kbd>Example</kbd> による <kbd>Main Page</kbd> への最後の一連の編集を巻き戻す。",
        "apihelp-stashedit-param-title": "編集されているページのページ名。",
        "apihelp-stashedit-param-text": "ページの本文。",
        "apihelp-stashedit-param-contentmodel": "新しいコンテンツのコンテンツ・モデル。",
+       "apihelp-tag-description": "個々の版または記録項目に対しタグの追加または削除を行います。",
+       "apihelp-tag-param-add": "追加するタグ。手動で定義されたタグのみ追加可能です。",
        "apihelp-tag-param-reason": "変更の理由。",
+       "apihelp-tag-example-rev": "版ID 123に <kbd>vandalism</kbd> タグを理由を指定せずに追加する",
        "apihelp-tag-example-log": "<kbd>Wrongly applied</kbd> という理由で <kbd>spam</kbd> タグを 記録項目ID 123 から取り除く",
        "apihelp-tokens-param-type": "リクエストするトークンの種類。",
        "apihelp-tokens-example-edit": "編集トークンを取得する (既定)。",
        "api-help-param-default": "既定値: $1",
        "api-help-param-default-empty": "既定値: <span class=\"apihelp-empty\">(空)</span>",
        "api-help-param-token": "[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] から取得した「$1」トークン",
+       "api-help-param-token-webui": "互換性のために、ウェブUIで使用されるトークンも受理されます。",
        "api-help-param-limited-in-miser-mode": "<strong>注意:</strong> [[mw:Manual:$wgMiserMode|miser mode]] により、これを使用すると継続する前に <var>$1limit</var> より返される結果が少なくなることがあります; 極端な場合では、ゼロ件の結果が返ることもあります。",
        "api-help-param-direction": "列挙の方向:\n;newer:古いものを先に表示します。注意: $1start は $1end 以前でなければなりません。\n;older:新しいものを先に表示します (既定)。注意: $1start は $1end 以降でなければなりません。",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(説明なし)</span>",
index cde4cf1..4ded4aa 100644 (file)
@@ -18,7 +18,7 @@
        "apihelp-main-description": "{{doc-apihelp-description|main}}",
        "apihelp-main-param-action": "{{doc-apihelp-param|main|action}}",
        "apihelp-main-param-format": "{{doc-apihelp-param|main|format}}",
-       "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}\n\n\"$host\" and \"$lag\" are not variables and appear as is.\n----\n\"Database replication\" is a configuration where you have multiple databases that communicate with each other so they all contain the same data. A \"database replicated cluster\" is a cluster (meaning \"a group of computers that work together\") of databases configured in this manner.\n\n\"Lag\" refers to the situation where one or more of the databases in the cluster are not completely up to date. For example, if the \"master\" database has data up to 2016-01-21T01:23:45Z while one of the \"slave\" is only up to 2016-01-21T01:23:30Z, that's a lag of 15 seconds.\n\nIn this case, \"$lag\" and \"$host\" are syntactic variables rather than computer code variables, so <var> would not be appropriate. They are there to represent that the actual output text will be something like \"Waiting for db1045: 53 seconds lagged.\"",
+       "apihelp-main-param-maxlag": "{{doc-apihelp-param|main|maxlag}}",
        "apihelp-main-param-smaxage": "{{doc-apihelp-param|main|smaxage}}",
        "apihelp-main-param-maxage": "{{doc-apihelp-param|main|maxage}}",
        "apihelp-main-param-assert": "{{doc-apihelp-param|main|assert}}",
index 34be69a..fd7dd77 100644 (file)
@@ -34,7 +34,7 @@
        "apihelp-block-param-anononly": "Блокировать только анонимных пользователей (т. е. запретить анонимные правки для этого IP-адреса).",
        "apihelp-block-param-nocreate": "Запретить создание учётных записей.",
        "apihelp-block-param-autoblock": "Автоматически блокировать последний использованный IP-адрес и все последующие, с которых будут совершаться попытки авторизации.",
-       "apihelp-block-param-noemail": "Ҡулланыусының Вики аша электрон почта ебәреүен тыйыу. (Талап итә <code>blockemail</code> хоҡуғын)",
+       "apihelp-block-param-noemail": "Запретить участнику отправлять электронную почту через интерфейс вики. (Требуется право <code>blockemail</code>).",
        "apihelp-block-param-hidename": "Скрыть имя участника из журнала блокировок. (Требуется право <code>hideuser</code>).",
        "apihelp-block-param-allowusertalk": "Позволяет участникам редактировать их собственные страницы обсуждения (зависит от <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Если участник уже заблокирован, перезаписать существующую блокировку.",
index 946c6d1..d79f316 100644 (file)
@@ -157,8 +157,10 @@ class EnhancedChangesList extends ChangesList {
         * Enhanced RC group
         * @param RCCacheEntry[] $block
         * @return string
+        * @throws DomainException
         */
        protected function recentChangesBlockGroup( $block ) {
+               $recentChangesFlags = $this->getConfig()->get( 'RecentChangesFlags' );
 
                # Add the namespace and title of the block as part of the class
                $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ];
@@ -186,20 +188,24 @@ class EnhancedChangesList extends ChangesList {
                $namehidden = true;
                $allLogs = true;
                $RCShowChangedSize = $this->getConfig()->get( 'RCShowChangedSize' );
-               $collectedRcFlags = [
-                       // All are by bots?
-                       'bot' => true,
-                       // Includes a new page?
-                       'newpage' => false,
-                       // All are minor edits?
-                       'minor' => true,
-                       // Contains an unpatrolled edit?
-                       'unpatrolled' => false,
-               ];
-               foreach ( $block as $rcObj ) {
-                       if ( $rcObj->mAttribs['rc_type'] == RC_NEW ) {
-                               $collectedRcFlags['newpage'] = true;
+
+               # Default values for RC flags
+               $collectedRcFlags = [];
+               foreach ( $recentChangesFlags as $key => $value ) {
+                       $flagGrouping = ( isset( $recentChangesFlags[$key]['grouping'] ) ?
+                                       $recentChangesFlags[$key]['grouping'] : 'any' );
+                       switch ( $flagGrouping ) {
+                               case 'all':
+                                       $collectedRcFlags[$key] = true;
+                                       break;
+                               case 'any':
+                                       $collectedRcFlags[$key] = false;
+                                       break;
+                               default:
+                                       throw new DomainException( "Unknown grouping type \"{$flagGrouping}\"" );
                        }
+               }
+               foreach ( $block as $rcObj ) {
                        // If all log actions to this page were hidden, then don't
                        // give the name of the affected page for this block!
                        if ( !$this->isDeleted( $rcObj, LogPage::DELETED_ACTION ) ) {
@@ -209,9 +215,6 @@ class EnhancedChangesList extends ChangesList {
                        if ( !isset( $userlinks[$u] ) ) {
                                $userlinks[$u] = 0;
                        }
-                       if ( $rcObj->unpatrolled ) {
-                               $collectedRcFlags['unpatrolled'] = true;
-                       }
                        if ( $rcObj->mAttribs['rc_type'] != RC_LOG ) {
                                $allLogs = false;
                        }
@@ -221,13 +224,6 @@ class EnhancedChangesList extends ChangesList {
                                $curId = $rcObj->mAttribs['rc_cur_id'];
                        }
 
-                       if ( !$rcObj->mAttribs['rc_bot'] ) {
-                               $collectedRcFlags['bot'] = false;
-                       }
-                       if ( !$rcObj->mAttribs['rc_minor'] ) {
-                               $collectedRcFlags['minor'] = false;
-                       }
-
                        $userlinks[$u]++;
                }
 
@@ -267,6 +263,27 @@ class EnhancedChangesList extends ChangesList {
                                // completely ignore this RC entry if we don't want to render it
                                unset( $block[$i] );
                        }
+
+                       // Roll up flags
+                       foreach ( $line['recentChangesFlagsRaw'] as $key => $value ) {
+                               $flagGrouping = ( isset( $recentChangesFlags[$key]['grouping'] ) ?
+                                       $recentChangesFlags[$key]['grouping'] : 'any' );
+                               switch ( $flagGrouping ) {
+                                       case 'all':
+                                               if ( !$value ) {
+                                                       $collectedRcFlags[$key] = false;
+                                               }
+                                               break;
+                                       case 'any':
+                                               if ( $value ) {
+                                                       $collectedRcFlags[$key] = true;
+                                               }
+                                               break;
+                                       default:
+                                               throw new DomainException( "Unknown grouping type \"{$flagGrouping}\"" );
+                               }
+                       }
+
                        $lines[] = $line;
                }
                // Further down are some assumptions that $block is a 0-indexed array
@@ -436,8 +453,11 @@ class EnhancedChangesList extends ChangesList {
                        return [];
                }
 
+               $lineParams['recentChangesFlagsRaw'] = [];
                if ( isset( $data['recentChangesFlags'] ) ) {
                        $lineParams['recentChangesFlags'] = $this->recentChangesFlags( $data['recentChangesFlags'] );
+                       # FIXME: This is used by logic, don't return it in the template params.
+                       $lineParams['recentChangesFlagsRaw'] = $data['recentChangesFlags'];
                        unset( $data['recentChangesFlags'] );
                }
 
index b6a0868..9f68338 100644 (file)
@@ -461,6 +461,7 @@ class RecentChange {
         */
        public function doMarkPatrolled( User $user, $auto = false, $tags = null ) {
                global $wgUseRCPatrol, $wgUseNPPatrol, $wgUseFilePatrol;
+
                $errors = [];
                // If recentchanges patrol is disabled, only new pages or new file versions
                // can be patrolled, provided the appropriate config variable is set
@@ -497,8 +498,8 @@ class RecentChange {
                PatrolLog::record( $this, $auto, $user, $tags );
 
                Hooks::run(
-                                       'MarkPatrolledComplete',
-                                       [ $this->getAttribute( 'rc_id' ), &$user, false, $auto ]
+                       'MarkPatrolledComplete',
+                       [ $this->getAttribute( 'rc_id' ), &$user, false, $auto ]
                );
 
                return [];
index 1e27205..13be911 100644 (file)
@@ -34,6 +34,8 @@ abstract class DatabaseMysqlBase extends Database {
        protected $lastKnownSlavePos;
        /** @var string Method to detect slave lag */
        protected $lagDetectionMethod;
+       /** @var array Method to detect slave lag */
+       protected $lagDetectionOptions = [];
 
        /** @var string|null */
        private $serverVersion = null;
@@ -44,6 +46,10 @@ abstract class DatabaseMysqlBase extends Database {
         *                          pt-heartbeat assumes the table is at heartbeat.heartbeat
         *                          and uses UTC timestamps in the heartbeat.ts column.
         *                          (https://www.percona.com/doc/percona-toolkit/2.2/pt-heartbeat.html)
+        *   - lagDetectionOptions : if using pt-heartbeat, this can be set to an array map to change
+        *                           the default behavior. Normally, the heartbeat row with the server
+        *                           ID of this server's master will be used. Set the "conds" field to
+        *                           override the query conditions, e.g. ['shard' => 's1'].
         * @param array $params
         */
        function __construct( array $params ) {
@@ -52,6 +58,9 @@ abstract class DatabaseMysqlBase extends Database {
                $this->lagDetectionMethod = isset( $params['lagDetectionMethod'] )
                        ? $params['lagDetectionMethod']
                        : 'Seconds_Behind_Master';
+               $this->lagDetectionOptions = isset( $params['lagDetectionOptions'] )
+                       ? $params['lagDetectionOptions']
+                       : [];
        }
 
        /**
@@ -652,19 +661,30 @@ abstract class DatabaseMysqlBase extends Database {
         * @return bool|float
         */
        protected function getLagFromPtHeartbeat() {
-               $masterInfo = $this->getMasterServerInfo();
-               if ( !$masterInfo ) {
-                       wfLogDBError(
-                               "Unable to query master of {db_server} for server ID",
-                               $this->getLogContext( [
-                                       'method' => __METHOD__
-                               ] )
-                       );
+               $options = $this->lagDetectionOptions;
+
+               if ( isset( $options['conds'] ) ) {
+                       // Best method for multi-DC setups: use logical channel names
+                       $data = $this->getHeartbeatData( $options['conds'] );
+               } else {
+                       // Standard method: use master server ID (works with stock pt-heartbeat)
+                       $masterInfo = $this->getMasterServerInfo();
+                       if ( !$masterInfo ) {
+                               wfLogDBError(
+                                       "Unable to query master of {db_server} for server ID",
+                                       $this->getLogContext( [
+                                               'method' => __METHOD__
+                                       ] )
+                               );
+
+                               return false; // could not get master server ID
+                       }
 
-                       return false; // could not get master server ID
+                       $conds = [ 'server_id' => intval( $masterInfo['serverId'] ) ];
+                       $data = $this->getHeartbeatData( $conds );
                }
 
-               list( $time, $nowUnix ) = $this->getHeartbeatData( $masterInfo['serverId'] );
+               list( $time, $nowUnix ) = $data;
                if ( $time !== null ) {
                        // @time is in ISO format like "2015-09-25T16:48:10.000510"
                        $dateTime = new DateTime( $time, new DateTimeZone( 'UTC' ) );
@@ -722,17 +742,17 @@ abstract class DatabaseMysqlBase extends Database {
        }
 
        /**
-        * @param string $masterId Server ID
-        * @return array (heartbeat `ts` column value or null, UNIX timestamp)
+        * @param array $conds WHERE clause conditions to find a row
+        * @return array (heartbeat `ts` column value or null, UNIX timestamp) for the newest beat
         * @see https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
         */
-       protected function getHeartbeatData( $masterId ) {
-               // Get the status row for this master; use the oldest for sanity in case the master
-               // has entries listed under different server IDs (which should really not happen).
-               // Note: this would use "MAX(TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6)))" but the
+       protected function getHeartbeatData( array $conds ) {
+               $whereSQL = $this->makeList( $conds, LIST_AND );
+               // Use ORDER BY for channel based queries since that field might not be UNIQUE.
+               // Note: this would use "TIMESTAMPDIFF(MICROSECOND,ts,UTC_TIMESTAMP(6))" but the
                // percision field is not supported in MySQL <= 5.5.
                $res = $this->query(
-                       "SELECT ts FROM heartbeat.heartbeat WHERE server_id=" . intval( $masterId )
+                       "SELECT ts FROM heartbeat.heartbeat WHERE $whereSQL ORDER BY ts DESC LIMIT 1"
                );
                $row = $res ? $res->fetchObject() : false;
 
index 997efa6..741999c 100644 (file)
@@ -161,19 +161,6 @@ class LoadBalancer {
                return wfSetVar( $this->mParentInfo, $x );
        }
 
-       /**
-        * Given an array of non-normalised probabilities, this function will select
-        * an element and return the appropriate key
-        *
-        * @deprecated since 1.21, use ArrayUtils::pickRandom()
-        *
-        * @param array $weights
-        * @return bool|int|string
-        */
-       public function pickRandom( array $weights ) {
-               return ArrayUtils::pickRandom( $weights );
-       }
-
        /**
         * @param array $loads
         * @param bool|string $wiki Wiki to get non-lagged for
index 4fdacc5..1508cf1 100644 (file)
@@ -1152,19 +1152,6 @@ class DifferenceEngine extends ContextSource {
                return $header . $diff . "</table>";
        }
 
-       /**
-        * Use specified text instead of loading from the database
-        * @deprecated since 1.21, use setContent() instead.
-        */
-       public function setText( $oldText, $newText ) {
-               ContentHandler::deprecated( __METHOD__, "1.21" );
-
-               $oldContent = ContentHandler::makeContent( $oldText, $this->getTitle() );
-               $newContent = ContentHandler::makeContent( $newText, $this->getTitle() );
-
-               $this->setContent( $oldContent, $newContent );
-       }
-
        /**
         * Use specified text instead of loading from the database
         * @param Content $oldContent
index 609a8fb..3f7eadb 100644 (file)
@@ -242,7 +242,7 @@ class LocalFile extends File {
         * Try to load file metadata from memcached. Returns true on success.
         * @return bool
         */
-       function loadFromCache() {
+       private function loadFromCache() {
                $this->dataLoaded = false;
                $this->extraDataLoaded = false;
                $key = $this->getCacheKey();
@@ -279,7 +279,7 @@ class LocalFile extends File {
        /**
         * Save the file metadata to memcached
         */
-       function saveToCache() {
+       private function saveToCache() {
                $this->load();
 
                $key = $this->getCacheKey();
index 6606ca3..76a88d5 100644 (file)
@@ -53,7 +53,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField {
                $this->getOptions();
                if ( $this->mOptions && !in_array( 'other', $this->mOptions, true ) ) {
                        if ( isset( $params['other-message'] ) ) {
-                               $msg = wfMessage( $params['other-message'] )->text();
+                               $msg = $this->getMessage( $params['other-message'] )->text();
                        } elseif ( isset( $params['other'] ) ) {
                                $msg = $params['other'];
                        } else {
index 16417fc..70bbf6c 100644 (file)
@@ -35,16 +35,7 @@ class HTMLButtonField extends HTMLFormField {
 
                # Generate the label from a message, if possible
                if ( isset( $info['buttonlabel-message'] ) ) {
-                       $msgInfo = $info['buttonlabel-message'];
-
-                       if ( is_array( $msgInfo ) ) {
-                               $msg = array_shift( $msgInfo );
-                       } else {
-                               $msg = $msgInfo;
-                               $msgInfo = [];
-                       }
-
-                       $this->buttonLabel = $this->msg( $msg, $msgInfo )->parse();
+                       $this->buttonLabel = $this->getMessage( $info['buttonlabel-message'] )->parse();
                } elseif ( isset( $info['buttonlabel'] ) ) {
                        if ( $info['buttonlabel'] === '&#160;' ) {
                                // Apparently some things set &nbsp directly and in an odd format
@@ -79,13 +70,14 @@ class HTMLButtonField extends HTMLFormField {
                        'id' => $this->mID,
                        'type' => $this->buttonType,
                        'name' => $this->mName,
-                       'value' => $value,
+                       'value' => $this->getDefault(),
                ] + $this->getAttributes( [ 'disabled', 'tabindex' ] );
 
                if ( $this->isBadIE() ) {
                        return Html::element( 'input', $attr );
                } else {
-                       return Html::rawElement( 'button', $attr, $this->buttonLabel ?: htmlspecialchars( $value ) );
+                       return Html::rawElement( 'button', $attr,
+                               $this->buttonLabel ?: htmlspecialchars( $this->getDefault() ) );
                }
        }
 
@@ -97,10 +89,10 @@ class HTMLButtonField extends HTMLFormField {
        public function getInputOOUI( $value ) {
                return new OOUI\ButtonInputWidget( [
                        'name' => $this->mName,
-                       'value' => $value,
+                       'value' => $this->getDefault(),
                        'label' => !$this->isBadIE() && $this->buttonLabel
                                ? new OOUI\HtmlSnippet( $this->buttonLabel )
-                               : $value,
+                               : $this->getDefault(),
                        'type' => $this->buttonType,
                        'classes' => [ 'mw-htmlform-submit', $this->mClass ],
                        'id' => $this->mID,
index 77924ef..1b5d1fb 100644 (file)
@@ -39,7 +39,7 @@ class HTMLEditTools extends HTMLFormField {
                if ( empty( $this->mParams['message'] ) ) {
                        $msg = $this->msg( 'edittools' );
                } else {
-                       $msg = $this->msg( $this->mParams['message'] );
+                       $msg = $this->getMessage( $this->mParams['message'] );
                        if ( $msg->isDisabled() ) {
                                $msg = $this->msg( 'edittools' );
                        }
index ba43244..d50fac0 100644 (file)
  *                             Some field types support multi-level arrays.
  *    'options-messages'    -- associative array mapping message keys to values.
  *                             Some field types support multi-level arrays.
- *    'options-message'     -- message key to be parsed to extract the list of
+ *    'options-message'     -- message key or object to be parsed to extract the list of
  *                             options (like 'ipbreason-dropdown').
- *    'label-message'       -- message key for a message to use as the label.
+ *    'label-message'       -- message key or object for a message to use as the label.
  *                             can be an array of msg key and then parameters to
  *                             the message.
  *    'label'               -- alternatively, a raw text message. Overridden by
  *                             label-message
  *    'help'                -- message text for a message to use as a help text.
- *    'help-message'        -- message key for a message to use as a help text.
+ *    'help-message'        -- message key or object for a message to use as a help text.
  *                             can be an array of msg key and then parameters to
  *                             the message.
  *                             Overwrites 'help-messages' and 'help'.
- *    'help-messages'       -- array of message key. As above, each item can
+ *    'help-messages'       -- array of message keys/objects. As above, each item can
  *                             be an array of msg key and then parameters.
  *                             Overwrites 'help'.
  *    'required'            -- passed through to the object, indicating that it
@@ -180,6 +180,7 @@ class HTMLForm extends ContextSource {
        protected $mSectionFooters = [];
        protected $mPost = '';
        protected $mId;
+       protected $mName;
        protected $mTableId = '';
 
        protected $mSubmitID;
@@ -198,6 +199,13 @@ class HTMLForm extends ContextSource {
         */
        protected $mAction = false;
 
+       /**
+        * Form attribute autocomplete. false does not set the attribute
+        * @since 1.27
+        * @var bool|string
+        */
+       protected $mAutocomplete = false;
+
        protected $mUseMultipart = false;
        protected $mHiddenFields = [];
        protected $mButtons = [];
@@ -996,6 +1004,12 @@ class HTMLForm extends ContextSource {
                if ( !empty( $this->mId ) ) {
                        $attribs['id'] = $this->mId;
                }
+               if ( !empty( $this->mAutocomplete ) ) {
+                       $attribs['autocomplete'] = $this->mAutocomplete;
+               }
+               if ( !empty ( $this->mName ) ) {
+                       $attribs['name'] = $this->mName;
+               }
                return $attribs;
        }
 
@@ -1337,6 +1351,16 @@ class HTMLForm extends ContextSource {
                return $this;
        }
 
+       /**
+        * @param string $name 'name' attribute for the form
+        * @return HTMLForm $this for chaining calls
+        */
+       public function setName( $name ) {
+               $this->mName = $name;
+
+               return $this;
+       }
+
        /**
         * Prompt the whole form to be wrapped in a "<fieldset>", with
         * this text as its "<legend>" element.
@@ -1677,4 +1701,20 @@ class HTMLForm extends ContextSource {
 
                return $this->getTitle()->getLocalURL();
        }
+
+       /**
+        * Set the value for the autocomplete attribute of the form.
+        * When set to false (which is the default state), the attribute get not set.
+        *
+        * @since 1.27
+        *
+        * @param string|bool $autocomplete
+        *
+        * @return HTMLForm $this for chaining calls
+        */
+       public function setAutocomplete( $autocomplete ) {
+               $this->mAutocomplete = $autocomplete;
+
+               return $this;
+       }
 }
index a9c7632..e86d4c4 100644 (file)
@@ -179,7 +179,7 @@ abstract class HTMLFormField {
                                        return true;
 
                                case 'OR':
-                                       foreach ( $params as $p ) {
+                                       foreach ( $params as $i => $p ) {
                                                if ( !is_array( $p ) ) {
                                                        throw new MWException(
                                                                "Expected array, found " . gettype( $p ) . " at index $i"
@@ -205,7 +205,7 @@ abstract class HTMLFormField {
                                        return false;
 
                                case 'NOR':
-                                       foreach ( $params as $p ) {
+                                       foreach ( $params as $i => $p ) {
                                                if ( !is_array( $p ) ) {
                                                        throw new MWException(
                                                                "Expected array, found " . gettype( $p ) . " at index $i"
@@ -381,16 +381,7 @@ abstract class HTMLFormField {
 
                # Generate the label from a message, if possible
                if ( isset( $params['label-message'] ) ) {
-                       $msgInfo = $params['label-message'];
-
-                       if ( is_array( $msgInfo ) ) {
-                               $msg = array_shift( $msgInfo );
-                       } else {
-                               $msg = $msgInfo;
-                               $msgInfo = [];
-                       }
-
-                       $this->mLabel = $this->msg( $msg, $msgInfo )->parse();
+                       $this->mLabel = $this->getMessage( $params['label-message'] )->parse();
                } elseif ( isset( $params['label'] ) ) {
                        if ( $params['label'] === '&#160;' ) {
                                // Apparently some things set &nbsp directly and in an odd format
@@ -783,9 +774,8 @@ abstract class HTMLFormField {
                }
 
                if ( isset( $this->mParams['help-messages'] ) ) {
-                       foreach ( $this->mParams['help-messages'] as $name ) {
-                               $helpMessage = (array)$name;
-                               $msg = $this->msg( array_shift( $helpMessage ), $helpMessage );
+                       foreach ( $this->mParams['help-messages'] as $msg ) {
+                               $msg = $this->getMessage( $msg );
 
                                if ( $msg->exists() ) {
                                        if ( is_null( $helptext ) ) {
@@ -988,7 +978,7 @@ abstract class HTMLFormField {
                                $this->mOptions = self::forceToStringRecursive( $this->mParams['options'] );
                        } elseif ( array_key_exists( 'options-message', $this->mParams ) ) {
                                /** @todo This is copied from Xml::listDropDown(), deprecate/avoid duplication? */
-                               $message = $this->msg( $this->mParams['options-message'] )->inContentLanguage()->plain();
+                               $message = $this->getMessage( $this->mParams['options-message'] )->inContentLanguage()->plain();
 
                                $optgroup = false;
                                $this->mOptions = [];
@@ -1097,4 +1087,23 @@ abstract class HTMLFormField {
                        return Html::rawElement( 'span', [ 'class' => 'error' ], $errors );
                }
        }
+
+       /**
+        * Turns a *-message parameter (which could be a MessageSpecifier, or a message name, or a
+        * name + parameters array) into a Message.
+        * @param mixed $value
+        * @return Message
+        */
+       protected function getMessage( $value ) {
+               if ( $value instanceof Message ) {
+                       return $value;
+               } elseif ( $value instanceof MessageSpecifier ) {
+                       return Message::newFromKey( $value );
+               } elseif ( is_array( $value ) ) {
+                       $msg = array_shift( $value );
+                       return $this->msg( $msg, $value );
+               } else {
+                       return $this->msg( $value, [] );
+               }
+       }
 }
index 6553b56..4f2460f 100644 (file)
@@ -14,9 +14,9 @@
  *     'table', 'div', or 'raw'.
  *   row-legend - If non-empty, each group of subfields will be enclosed in a
  *     fieldset. The value is the name of a message key to use as the legend.
- *   create-button-message - Message key to use as the text of the button to
+ *   create-button-message - Message to use as the text of the button to
  *     add an additional group of fields.
- *   delete-button-message - Message key to use as the text of automatically-
+ *   delete-button-message - Message to use as the text of automatically-
  *     generated 'delete' button. Ignored if 'delete' is included in 'fields'.
  *
  * In the generated HTML, the subfields will be named along the lines of
@@ -299,7 +299,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
                                'name' => $name,
                                'id' => Sanitizer::escapeId( "{$this->mID}--$key--delete" ),
                                'cssclass' => 'mw-htmlform-cloner-delete-button',
-                               'default' => $this->msg( $label )->text(),
+                               'default' => $this->getMessage( $label )->text(),
                        ], $this->mParent );
                        $v = $field->getDefault();
 
@@ -371,7 +371,7 @@ class HTMLFormFieldCloner extends HTMLFormField {
                        'name' => $name,
                        'id' => Sanitizer::escapeId( "{$this->mID}--create" ),
                        'cssclass' => 'mw-htmlform-cloner-create-button',
-                       'default' => $this->msg( $label )->text(),
+                       'default' => $this->getMessage( $label )->text(),
                ], $this->mParent );
                $html .= $field->getInputHTML( $field->getDefault() );
 
index e44ffa3..e75c2b2 100644 (file)
@@ -15,9 +15,9 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                if ( array_key_exists( 'other', $params ) ) {
                        // Do nothing
                } elseif ( array_key_exists( 'other-message', $params ) ) {
-                       $params['other'] = wfMessage( $params['other-message'] )->plain();
+                       $params['other'] = $this->getMessage( $params['other-message'] )->plain();
                } else {
-                       $params['other'] = wfMessage( 'htmlform-selectorother-other' )->plain();
+                       $params['other'] = $this->msg( 'htmlform-selectorother-other' )->plain();
                }
 
                parent::__construct( $params );
index 973f1cb..8ffff43 100644 (file)
@@ -4,6 +4,24 @@ class HTMLTextAreaField extends HTMLFormField {
        const DEFAULT_COLS = 80;
        const DEFAULT_ROWS = 25;
 
+       protected $mPlaceholder = '';
+
+       /**
+        * @param array $params
+        *   - cols, rows: textarea size
+        *   - placeholder/placeholder-message: set HTML placeholder attribute
+        *   - spellcheck: set HTML spellcheck attribute
+        */
+       public function __construct( $params ) {
+               parent::__construct( $params );
+
+               if ( isset( $params['placeholder-message'] ) ) {
+                       $this->mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
+               } elseif ( isset( $params['placeholder'] ) ) {
+                       $this->mPlaceholder = $params['placeholder'];
+               }
+       }
+
        function getCols() {
                return isset( $this->mParams['cols'] ) ? $this->mParams['cols'] : static::DEFAULT_COLS;
        }
@@ -32,9 +50,11 @@ class HTMLTextAreaField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['class'] = $this->mClass;
                }
+               if ( $this->mPlaceholder !== '' ) {
+                       $attribs['placeholder'] = $this->mPlaceholder;
+               }
 
                $allowedParams = [
-                       'placeholder',
                        'tabindex',
                        'disabled',
                        'readonly',
@@ -56,9 +76,11 @@ class HTMLTextAreaField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['classes'] = [ $this->mClass ];
                }
+               if ( $this->mPlaceholder !== '' ) {
+                       $attribs['placeholder'] = $this->mPlaceholder;
+               }
 
                $allowedParams = [
-                       'placeholder',
                        'tabindex',
                        'disabled',
                        'readonly',
index 4d5bcab..3ab7176 100644 (file)
@@ -1,6 +1,27 @@
 <?php
 
 class HTMLTextField extends HTMLFormField {
+       protected $mPlaceholder = '';
+
+       /**
+        * @param array $params
+        *   - type: HTML textfield type
+        *   - size: field size in characters (defaults to 45)
+        *   - placeholder/placeholder-message: set HTML placeholder attribute
+        *   - spellcheck: set HTML spellcheck attribute
+        *   - persistent: upon unsuccessful requests, retain the value (defaults to true, except
+        *     for password fields)
+        */
+       public function __construct( $params ) {
+               parent::__construct( $params );
+
+               if ( isset( $params['placeholder-message'] ) ) {
+                       $this->mPlaceholder = $this->getMessage( $params['placeholder-message'] )->parse();
+               } elseif ( isset( $params['placeholder'] ) ) {
+                       $this->mPlaceholder = $params['placeholder'];
+               }
+       }
+
        function getSize() {
                return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
        }
@@ -14,7 +35,19 @@ class HTMLTextField extends HTMLFormField {
                return null;
        }
 
+       public function isPersistent() {
+               if ( isset( $this->mParams['persistent'] ) ) {
+                       return $this->mParams['persistent'];
+               }
+               // don't put passwords into the HTML body, they could get cached or otherwise leaked
+               return !( isset( $this->mParams['type'] ) && $this->mParams['type'] === 'password' );
+       }
+
        function getInputHTML( $value ) {
+               if ( !$this->isPersistent() ) {
+                       $value = '';
+               }
+
                $attribs = [
                                'id' => $this->mID,
                                'name' => $this->mName,
@@ -27,6 +60,9 @@ class HTMLTextField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['class'] = $this->mClass;
                }
+               if ( $this->mPlaceholder !== '' ) {
+                       $attribs['placeholder'] = $this->mPlaceholder;
+               }
 
                # @todo Enforce pattern, step, required, readonly on the server side as
                # well
@@ -37,7 +73,6 @@ class HTMLTextField extends HTMLFormField {
                        'pattern',
                        'title',
                        'step',
-                       'placeholder',
                        'list',
                        'maxlength',
                        'tabindex',
@@ -85,11 +120,18 @@ class HTMLTextField extends HTMLFormField {
        }
 
        function getInputOOUI( $value ) {
+               if ( !$this->isPersistent() ) {
+                       $value = '';
+               }
+
                $attribs = $this->getTooltipAndAccessKey();
 
                if ( $this->mClass !== '' ) {
                        $attribs['classes'] = [ $this->mClass ];
                }
+               if ( $this->mPlaceholder !== '' ) {
+                       $attribs['placeholder'] = $this->mPlaceholder;
+               }
 
                # @todo Enforce pattern, step, required, readonly on the server side as
                # well
@@ -100,7 +142,6 @@ class HTMLTextField extends HTMLFormField {
                        'flags',
                        'indicator',
                        'maxlength',
-                       'placeholder',
                        'readonly',
                        'required',
                        'tabindex',
index 0f7748d..1d5d779 100644 (file)
@@ -31,9 +31,9 @@
        "config-localsettings-cli-upgrade": "Wykryto obecność pliku <code>LocalSettings.php</code>.\nAktualizację należy wykonać poprzez uruchomienie <code>update.php</code>",
        "config-localsettings-key": "Klucz aktualizacji:",
        "config-localsettings-badkey": "Podany klucz aktualizacji jest nieprawidłowy.",
-       "config-upgrade-key-missing": "Wykryto zainstalowane wcześniej MediaWiki.\nJeśli chcesz je zaktualizować dodaj na koniec pliku <code>LocalSettings.php</code> poniższą linię tekstu.\n\n$1",
+       "config-upgrade-key-missing": "Wykryto zainstalowane wcześniej MediaWiki.\nJeśli chcesz je zaktualizować, dodaj na koniec pliku <code>LocalSettings.php</code> poniższą linię tekstu:\n\n$1",
        "config-localsettings-incomplete": "Istniejący plik <code>LocalSettings.php</code> wygląda na niekompletny.\nBrak wartości zmiennej $1.\nZmień plik <code>LocalSettings.php</code>, tak by zawierał deklarację wartości tej zmiennej, a następnie kliknij „{{int:Config-continue}}”.",
-       "config-localsettings-connection-error": "Wystąpił błąd podczas łączenia z bazą danych używając ustawień podanych w <code>LocalSettings.php</code>\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
+       "config-localsettings-connection-error": "Wystąpił błąd podczas łączenia z bazą danych używając ustawień podanych w <code>LocalSettings.php</code>.\nNapraw te ustawienia i spróbuj ponownie.\n\n$1",
        "config-session-error": "Błąd uruchomienia sesji – $1",
        "config-session-expired": "Wygląda na to, że Twoja sesja wygasła.\nCzas życia sesji został skonfigurowany na $1.\nMożesz go wydłużyć zmieniając <code>session.gc_maxlifetime</code> w pliku php.ini.\nUruchom ponownie proces instalacji.",
        "config-no-session": "Dane sesji zostały utracone.\nSprawdź plik php.ini i upewnij się, że <code>session.save_path</code> wskazuje na odpowiedni katalog.",
@@ -85,6 +85,7 @@
        "config-xcache": "[Http://trac.lighttpd.net/xcache/ XCache] jest zainstalowany",
        "config-apc": "[Http://www.php.net/apc APC] jest zainstalowany",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] jest zainstalowany",
+       "config-no-cache-apcu": "<strong>Ostrzeżenie:</strong> Nie można znaleźć [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] lub [http://www.iis.net/download/WinCacheForPhp WinCache].\nPamięć podręczna obiektów nie zostanie włączona.",
        "config-mod-security": "''' Ostrzeżenie ''': Serwer sieci web ma włączone [http://modsecurity.org/ mod_security]. Jeśli jest niepoprawnie skonfigurowane, może być przyczyną problemów MediaWiki lub innego oprogramowania, które pozwala użytkownikom na wysyłanie dowolnej zawartości.\nSprawdź w [http://modsecurity.org/documentation/ dokumentacji mod_security] lub skontaktuj się z obsługa hosta, jeśli wystąpią losowe błędy.",
        "config-diff3-bad": "Nie znaleziono GNU diff3.",
        "config-git": "Znaleziono oprogramowanie kontroli wersji Git: <code>$1</code>.",
diff --git a/includes/libs/BufferingStatsdDataFactory.php b/includes/libs/BufferingStatsdDataFactory.php
deleted file mode 100644 (file)
index 9c18b10..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-/**
- * Copyright 2015
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-use Liuggio\StatsdClient\Entity\StatsdData;
-use Liuggio\StatsdClient\Entity\StatsdDataInterface;
-use Liuggio\StatsdClient\Factory\StatsdDataFactory;
-
-/**
- * A factory for application metric data.
- *
- * This class prepends a context-specific prefix to each metric key and keeps
- * a reference to each constructed metric in an internal array buffer.
- *
- * @since 1.25
- */
-class BufferingStatsdDataFactory extends StatsdDataFactory {
-       protected $buffer = [];
-
-       public function __construct( $prefix ) {
-               parent::__construct();
-               $this->prefix = $prefix;
-       }
-
-       /**
-        * Normalize a metric key for StatsD
-        *
-        * Replace occurences of '::' with dots and any other non-alphanumeric
-        * characters with underscores. Combine runs of dots or underscores.
-        * Then trim leading or trailing dots or underscores.
-        *
-        * @param string $key
-        * @since 1.26
-        */
-       private static function normalizeMetricKey( $key ) {
-               $key = preg_replace( '/[:.]+/', '.', $key );
-               $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
-               $key = trim( $key, '_.' );
-               return str_replace( [ '._', '_.' ], '.', $key );
-       }
-
-       public function produceStatsdData(
-               $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
-       ) {
-               $entity = $this->produceStatsdDataEntity();
-               if ( $key !== null ) {
-                       $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
-                       $entity->setKey( $key );
-               }
-               if ( $value !== null ) {
-                       $entity->setValue( $value );
-               }
-               if ( $metric !== null ) {
-                       $entity->setMetric( $metric );
-               }
-               // Don't bother buffering a counter update with a delta of zero.
-               if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
-                       $this->buffer[] = $entity;
-               }
-               return $entity;
-       }
-
-       /**
-        * @return StatsdData[]
-        */
-       public function getBuffer() {
-               return $this->buffer;
-       }
-}
index b4206a2..10d4c71 100644 (file)
@@ -58,7 +58,7 @@ class StatusValue {
         * Factory function for fatal errors
         *
         * @param string|MessageSpecifier $message Message key or object
-        * @return Status
+        * @return StatusValue
         */
        public static function newFatal( $message /*, parameters...*/ ) {
                $params = func_get_args();
@@ -71,7 +71,7 @@ class StatusValue {
         * Factory function for good results
         *
         * @param mixed $value
-        * @return Status
+        * @return StatusValue
         */
        public static function newGood( $value = null ) {
                $result = new static();
diff --git a/includes/libs/stats/BufferingStatsdDataFactory.php b/includes/libs/stats/BufferingStatsdDataFactory.php
new file mode 100644 (file)
index 0000000..9c18b10
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Copyright 2015
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Entity\StatsdDataInterface;
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
+
+/**
+ * A factory for application metric data.
+ *
+ * This class prepends a context-specific prefix to each metric key and keeps
+ * a reference to each constructed metric in an internal array buffer.
+ *
+ * @since 1.25
+ */
+class BufferingStatsdDataFactory extends StatsdDataFactory {
+       protected $buffer = [];
+
+       public function __construct( $prefix ) {
+               parent::__construct();
+               $this->prefix = $prefix;
+       }
+
+       /**
+        * Normalize a metric key for StatsD
+        *
+        * Replace occurences of '::' with dots and any other non-alphanumeric
+        * characters with underscores. Combine runs of dots or underscores.
+        * Then trim leading or trailing dots or underscores.
+        *
+        * @param string $key
+        * @since 1.26
+        */
+       private static function normalizeMetricKey( $key ) {
+               $key = preg_replace( '/[:.]+/', '.', $key );
+               $key = preg_replace( '/[^a-z0-9.]+/i', '_', $key );
+               $key = trim( $key, '_.' );
+               return str_replace( [ '._', '_.' ], '.', $key );
+       }
+
+       public function produceStatsdData(
+               $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
+       ) {
+               $entity = $this->produceStatsdDataEntity();
+               if ( $key !== null ) {
+                       $key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
+                       $entity->setKey( $key );
+               }
+               if ( $value !== null ) {
+                       $entity->setValue( $value );
+               }
+               if ( $metric !== null ) {
+                       $entity->setMetric( $metric );
+               }
+               // Don't bother buffering a counter update with a delta of zero.
+               if ( !( $metric === StatsdDataInterface::STATSD_METRIC_COUNT && !$value ) ) {
+                       $this->buffer[] = $entity;
+               }
+               return $entity;
+       }
+
+       /**
+        * @return StatsdData[]
+        */
+       public function getBuffer() {
+               return $this->buffer;
+       }
+}
diff --git a/includes/libs/stats/NullStatsdDataFactory.php b/includes/libs/stats/NullStatsdDataFactory.php
new file mode 100644 (file)
index 0000000..3b272e2
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+
+use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Entity\StatsdDataInterface;
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
+
+/**
+ * @author Addshore
+ * @since 1.27
+ */
+class NullStatsdDataFactory implements StatsdDataFactoryInterface {
+
+       /**
+        * This function creates a 'timing' StatsdData.
+        *
+        * @param string|array $key The metric(s) to set.
+        * @param float $time The elapsed time (ms) to log
+        **/
+       public function timing( $key, $time ) {
+       }
+
+       /**
+        * This function creates a 'gauge' StatsdData.
+        *
+        * @param string|array $key The metric(s) to set.
+        * @param float $value The value for the stats.
+        **/
+       public function gauge( $key, $value ) {
+       }
+
+       /**
+        * This function creates a 'set' StatsdData object
+        * A "Set" is a count of unique events.
+        * This data type acts like a counter, but supports counting
+        * of unique occurrences of values between flushes. The backend
+        * receives the number of unique events that happened since
+        * the last flush.
+        *
+        * The reference use case involved tracking the number of active
+        * and logged in users by sending the current userId of a user
+        * with each request with a key of "uniques" (or similar).
+        *
+        * @param  string|array $key The metric(s) to set.
+        * @param  float $value The value for the stats.
+        *
+        * @return array
+        **/
+       public function set( $key, $value ) {
+               return [];
+       }
+
+       /**
+        * This function creates a 'increment' StatsdData object.
+        *
+        * @param string|array $key The metric(s) to increment.
+        * @param float|1      $sampleRate The rate (0-1) for sampling.
+        *
+        * @return array
+        **/
+       public function increment( $key ) {
+               return [];
+       }
+
+       /**
+        * This function creates a 'decrement' StatsdData object.
+        *
+        *
+        * @param string|array $key The metric(s) to decrement.
+        * @param float|1      $sampleRate The rate (0-1) for sampling.
+        *
+        * @return mixed
+        **/
+       public function decrement( $key ) {
+               return [];
+       }
+
+       /**
+        * This function creates a 'updateCount' StatsdData object.
+        *
+        * @param string|array $key The metric(s) to decrement.
+        * @param integer $delta The delta to add to the each metric
+        *
+        * @return mixed
+        **/
+       public function updateCount( $key, $delta ) {
+               return [];
+       }
+
+       /**
+        * Produce a StatsdDataInterface Object.
+        *
+        * @param string $key The key of the metric
+        * @param int $value The amount to increment/decrement each metric by.
+        * @param string $metric The metric type
+        *                      ("c" for count, "ms" for timing, "g" for gauge, "s" for set)
+        *
+        * @return StatsdDataInterface
+        **/
+       public function produceStatsdData(
+               $key,
+               $value = 1,
+               $metric = StatsdDataInterface::STATSD_METRIC_COUNT
+       ) {
+               $data = new StatsdData();
+               $data->setKey( $key );
+               $data->setValue( $value );
+               $data->setMetric( $metric );
+               return $data;
+       }
+
+}
diff --git a/includes/libs/stats/StatsdAwareInterface.php b/includes/libs/stats/StatsdAwareInterface.php
new file mode 100644 (file)
index 0000000..5151b26
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+
+use Liuggio\StatsdClient\Factory\StatsdDataFactoryInterface;
+
+/**
+ * Describes a Statsd aware interface
+ *
+ * @since 1.27
+ * @author Addshore
+ */
+interface StatsdAwareInterface {
+
+       /**
+        * Sets a logger instance on the object
+        *
+        * @param StatsdDataFactoryInterface $statsFactory
+        * @return null
+        */
+       public function setStatsdDataFactory( StatsdDataFactoryInterface $statsFactory );
+
+}
index 1c7fb98..1059d7b 100644 (file)
@@ -107,9 +107,6 @@ class UserMailer {
         *              'contentType' string default 'text/plain; charset=UTF-8'
         *              'headers' array Extra headers to set
         *
-        * Previous versions of this function had $replyto as the 5th argument and $contentType
-        * as the 6th. These are still supported for backwards compatability, but deprecated.
-        *
         * @throws MWException
         * @throws Exception
         * @return Status
@@ -117,14 +114,6 @@ class UserMailer {
        public static function send( $to, $from, $subject, $body, $options = [] ) {
                global $wgAllowHTMLEmail;
 
-               if ( !is_array( $options ) ) {
-                       // Old calling style
-                       wfDeprecated( __METHOD__ . ' with $replyto as 5th parameter', '1.26' );
-                       $options = [ 'replyTo' => $options ];
-                       if ( func_num_args() === 6 ) {
-                               $options['contentType'] = func_get_arg( 5 );
-                       }
-               }
                if ( !isset( $options['contentType'] ) ) {
                        $options['contentType'] = 'text/plain; charset=UTF-8';
                }
index 7592017..6c42e34 100644 (file)
@@ -1572,8 +1572,7 @@ class Article implements Page {
                                $title,
                                htmlspecialchars( $title->getFullText() ),
                                [],
-                               // Automatically append redirect=no to each link, since most of them are
-                               // redirect pages themselves.
+                               // Make sure wiki page redirects are not followed
                                $title->isRedirect() ? [ 'redirect' => 'no' ] : [],
                                ( $forceKnown ? [ 'known', 'noclasses' ] : [] )
                        ) . '</li>';
@@ -2380,15 +2379,6 @@ class Article implements Page {
                return $this->mPage->getUndoContent( $undo, $undoafter );
        }
 
-       /**
-        * Call to WikiPage function for backwards compatibility.
-        * @see WikiPage::getUndoText
-        */
-       public function getUndoText( Revision $undo, Revision $undoafter = null ) {
-               ContentHandler::deprecated( __METHOD__, '1.21' );
-               return $this->mPage->getUndoText( $undo, $undoafter );
-       }
-
        /**
         * Call to WikiPage function for backwards compatibility.
         * @see WikiPage::getUser
@@ -2551,19 +2541,6 @@ class Article implements Page {
                return $this->mPage->protectDescriptionLog( $limit, $expiry );
        }
 
-       /**
-        * Call to WikiPage function for backwards compatibility.
-        * @see WikiPage::replaceSection
-        */
-       public function replaceSection( $sectionId, $text, $sectionTitle = '',
-               $edittime = null
-       ) {
-               ContentHandler::deprecated( __METHOD__, '1.21' );
-               return $this->mPage->replaceSection( $sectionId, $text, $sectionTitle,
-                       $edittime
-               );
-       }
-
        /**
         * Call to WikiPage function for backwards compatibility.
         * @see WikiPage::replaceSectionAtRev
diff --git a/includes/page/Page.php b/includes/page/Page.php
new file mode 100644 (file)
index 0000000..2cb1fc0
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Interface for type hinting (accepts WikiPage, Article, ImagePage, CategoryPage)
+ */
+interface Page {
+}
index 0e3512b..5e5532f 100644 (file)
  * @file
  */
 
-/**
- * Interface for type hinting (accepts WikiPage, Article, ImagePage, CategoryPage)
- */
-interface Page {
-}
-
 /**
  * Class representing a MediaWiki article and history.
  *
@@ -1351,76 +1345,6 @@ class WikiPage implements Page, IDBAccessObject {
                return $handler->getUndoContent( $this->getRevision(), $undo, $undoafter );
        }
 
-       /**
-        * Get the text that needs to be saved in order to undo all revisions
-        * between $undo and $undoafter. Revisions must belong to the same page,
-        * must exist and must not be deleted
-        * @param Revision $undo
-        * @param Revision $undoafter Must be an earlier revision than $undo
-        * @return string|bool String on success, false on failure
-        * @deprecated since 1.21: use ContentHandler::getUndoContent() instead.
-        */
-       public function getUndoText( Revision $undo, Revision $undoafter = null ) {
-               ContentHandler::deprecated( __METHOD__, '1.21' );
-
-               $this->loadLastEdit();
-
-               if ( $this->mLastRevision ) {
-                       if ( is_null( $undoafter ) ) {
-                               $undoafter = $undo->getPrevious();
-                       }
-
-                       $handler = $this->getContentHandler();
-                       $undone = $handler->getUndoContent( $this->mLastRevision, $undo, $undoafter );
-
-                       if ( !$undone ) {
-                               return false;
-                       } else {
-                               return ContentHandler::getContentText( $undone );
-                       }
-               }
-
-               return false;
-       }
-
-       /**
-        * @param string|number|null|bool $sectionId Section identifier as a number or string
-        * (e.g. 0, 1 or 'T-1'), null/false or an empty string for the whole page
-        * or 'new' for a new section.
-        * @param string $text New text of the section.
-        * @param string $sectionTitle New section's subject, only if $section is "new".
-        * @param string $edittime Revision timestamp or null to use the current revision.
-        *
-        * @throws MWException
-        * @return string|null New complete article text, or null if error.
-        *
-        * @deprecated since 1.21, use replaceSectionAtRev() instead
-        */
-       public function replaceSection( $sectionId, $text, $sectionTitle = '',
-               $edittime = null
-       ) {
-               ContentHandler::deprecated( __METHOD__, '1.21' );
-
-               // NOTE: keep condition in sync with condition in replaceSectionContent!
-               if ( strval( $sectionId ) === '' ) {
-                       // Whole-page edit; let the whole text through
-                       return $text;
-               }
-
-               if ( !$this->supportsSections() ) {
-                       throw new MWException( "sections not supported for content model " .
-                               $this->getContentHandler()->getModelID() );
-               }
-
-               // could even make section title, but that's not required.
-               $sectionContent = ContentHandler::makeContent( $text, $this->getTitle() );
-
-               $newContent = $this->replaceSectionContent( $sectionId, $sectionContent, $sectionTitle,
-                       $edittime );
-
-               return ContentHandler::getContentText( $newContent );
-       }
-
        /**
         * Returns true if this page's content model supports sections.
         *
index f784d03..87e5fd7 100644 (file)
@@ -179,7 +179,7 @@ class ResourceLoaderImage {
                        'version' => $context->getVersion(),
                ];
 
-               return wfExpandUrl( wfAppendQuery( $script, $query ), PROTO_RELATIVE );
+               return wfAppendQuery( $script, $query );
        }
 
        /**
index d765137..34866f3 100644 (file)
@@ -40,8 +40,17 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                }
 
                global $wgContLang;
+               $conf = $this->getConfig();
 
-               $mainPage = Title::newMainPage();
+               // We can't use Title::newMainPage() if 'mainpage' is in
+               // $wgForceUIMsgAsContentMsg because that will try to use the session
+               // user's language and we have no session user. This does the
+               // equivalent but falling back to our ResourceLoaderContext language
+               // instead.
+               $mainPage = Title::newFromText( $context->msg( 'mainpage' )->inContentLanguage()->text() );
+               if ( !$mainPage ) {
+                       $mainPage = Title::newFromText( 'Main Page' );
+               }
 
                /**
                 * Namespace related preparation
@@ -57,7 +66,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        }
                }
 
-               $conf = $this->getConfig();
                // Build list of variables
                $vars = [
                        'wgLoadScript' => wfScript( 'load' ),
index 7b0d93a..796dc20 100644 (file)
@@ -298,7 +298,8 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
 
                        if ( !$batch->isEmpty() ) {
                                $res = $dbr->select( [ 'page', 'revision' ],
-                                       [ 'page_namespace', 'page_title', 'rev_len', 'rev_sha1' ],
+                                       // Include page_touched to allow purging if cache is poisoned (T117587, T113916)
+                                       [ 'page_namespace', 'page_title', 'page_touched', 'rev_len', 'rev_sha1' ],
                                        $batch->constructSet( 'page', $dbr ),
                                        __METHOD__,
                                        [],
@@ -311,6 +312,7 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule {
                                        $this->titleInfo[$key][$title->getPrefixedText()] = [
                                                'rev_len' => $row->rev_len,
                                                'rev_sha1' => $row->rev_sha1,
+                                               'page_touched' => $row->page_touched,
                                        ];
                                }
                        }
index d3b9d5c..40cfe39 100644 (file)
@@ -41,7 +41,7 @@ class SearchExactMatchRescorer {
         */
        public function rescore( $search, $namespaces, $srchres, $limit ) {
                // Pick namespace (based on PrefixSearch::defaultSearchBackend)
-               $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : $namespaces[0];
+               $ns = in_array( NS_MAIN, $namespaces ) ? NS_MAIN : reset( $namespaces );
                $t = Title::newFromText( $search, $ns );
                if ( !$t || !$t->exists() ) {
                        // No exact match so just return the search results
index 0fd8fa8..b410e03 100644 (file)
@@ -335,7 +335,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess {
         *
         * @param string|string[] $salt Token salt
         * @param string $key Token key
-        * @return MediaWiki\\Session\\SessionToken
+        * @return MediaWiki\\Session\\Token
         */
        public function getToken( $salt = '', $key = 'default' ) {
                $new = false;
index 0f7e5d7..6734d5f 100644 (file)
@@ -39,20 +39,6 @@ class MediaWikiSite extends Site {
        const PATH_FILE = 'file_path';
        const PATH_PAGE = 'page_path';
 
-       /**
-        * @since 1.21
-        * @deprecated since 1.21 Just use the constructor or the factory Site::newForType
-        *
-        * @param int $globalId
-        *
-        * @return MediaWikiSite
-        */
-       public static function newFromGlobalId( $globalId ) {
-               $site = new static();
-               $site->setGlobalId( $globalId );
-               return $site;
-       }
-
        /**
         * Constructor.
         *
index 3cc1d8f..e5b9cb9 100644 (file)
@@ -81,15 +81,6 @@ abstract class Skin extends ContextSource {
                return $allowedSkins;
        }
 
-       /**
-        * @deprecated since 1.23, use getAllowedSkins
-        * @return string[]
-        */
-       public static function getUsableSkins() {
-               wfDeprecated( __METHOD__, '1.23' );
-               return self::getAllowedSkins();
-       }
-
        /**
         * Normalize a skin preference value to a form that can be loaded.
         *
@@ -140,23 +131,6 @@ abstract class Skin extends ContextSource {
                }
        }
 
-       /**
-        * Factory method for loading a skin of a given type
-        * @param string $key 'monobook', 'vector', etc.
-        * @return Skin
-        * @deprecated since 1.24; Use SkinFactory instead
-        */
-       static function &newFromKey( $key ) {
-               wfDeprecated( __METHOD__, '1.24' );
-
-               $key = Skin::normalizeKey( $key );
-               $factory = SkinFactory::getDefaultInstance();
-
-               // normalizeKey() guarantees that a skin with this key will exist.
-               $skin = $factory->makeSkin( $key );
-               return $skin;
-       }
-
        /**
         * @return string Skin name
         */
@@ -801,12 +775,12 @@ abstract class Skin extends ContextSource {
         * @return null|string
         */
        function getCopyrightIcon() {
-               global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgCopyrightIcon;
+               global $wgRightsUrl, $wgRightsText, $wgRightsIcon, $wgFooterIcons;
 
                $out = '';
 
-               if ( $wgCopyrightIcon ) {
-                       $out = $wgCopyrightIcon;
+               if ( $wgFooterIcons['copyright']['copyright'] ) {
+                       $out = $wgFooterIcons['copyright']['copyright'];
                } elseif ( $wgRightsIcon ) {
                        $icon = htmlspecialchars( $wgRightsIcon );
 
@@ -1024,21 +998,6 @@ abstract class Skin extends ContextSource {
                        $targetUser->canReceiveEmail();
        }
 
-       /**
-        * This function previously returned a fully resolved style path URL to images or styles stored in
-        * the legacy skins/common/ directory.
-        *
-        * That directory has been removed in 1.24 and the function always returns an empty string.
-        *
-        * @deprecated since 1.24
-        * @param string $name The name or path of a skin resource file
-        * @return string Empty string
-        */
-       function getCommonStylePath( $name ) {
-               wfDeprecated( __METHOD__, '1.24' );
-               return '';
-       }
-
        /**
         * Return a fully resolved style path url to images or styles stored in the current skins's folder.
         * This method returns a url resolved using the configured skin style path
@@ -1359,22 +1318,6 @@ abstract class Skin extends ContextSource {
                return $bar;
        }
 
-       /**
-        * This function previously controlled whether the 'mediawiki.legacy.wikiprintable' module
-        * should be loaded by OutputPage. That module no longer exists and the return value of this
-        * method is ignored.
-        *
-        * If your skin doesn't provide its own print styles, the 'mediawiki.legacy.commonPrint' module
-        * can be used instead (SkinTemplate-based skins do it automatically).
-        *
-        * @deprecated since 1.22
-        * @return bool
-        */
-       public function commonPrintStylesheet() {
-               wfDeprecated( __METHOD__, '1.22' );
-               return false;
-       }
-
        /**
         * Gets new talk page messages for the current user and returns an
         * appropriate alert message (or an empty string if there are no messages)
index 6a04c6a..90ace7b 100644 (file)
@@ -395,15 +395,20 @@ class SpecialPage {
        final public function run( $subPage ) {
                /**
                 * Gets called before @see SpecialPage::execute.
+                * Return false to prevent calling execute() (since 1.27+).
                 *
                 * @since 1.20
                 *
                 * @param SpecialPage $this
                 * @param string|null $subPage
                 */
-               Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] );
+               if ( !Hooks::run( 'SpecialPageBeforeExecute', [ $this, $subPage ] ) ) {
+                       return;
+               }
 
-               $this->beforeExecute( $subPage );
+               if ( $this->beforeExecute( $subPage ) === false ) {
+                       return;
+               }
                $this->execute( $subPage );
                $this->afterExecute( $subPage );
 
@@ -420,10 +425,12 @@ class SpecialPage {
 
        /**
         * Gets called before @see SpecialPage::execute.
+        * Return false to prevent calling execute() (since 1.27+).
         *
         * @since 1.20
         *
         * @param string|null $subPage
+        * @return bool|void
         */
        protected function beforeExecute( $subPage ) {
                // No-op
index 8ce480e..725c4fc 100644 (file)
@@ -182,6 +182,7 @@ class SpecialPageFactory {
 
        private static $list;
        private static $aliases;
+       private static $pageObjectCache = [];
 
        /**
         * Reset the internal list of special pages. Useful when changing $wgSpecialPages after
@@ -190,6 +191,7 @@ class SpecialPageFactory {
        public static function resetList() {
                self::$list = null;
                self::$aliases = null;
+               self::$pageObjectCache = [];
        }
 
        /**
@@ -373,6 +375,10 @@ class SpecialPageFactory {
        public static function getPage( $name ) {
                list( $realName, /*...*/ ) = self::resolveAlias( $name );
 
+               if ( isset( self::$pageObjectCache[$realName] ) ) {
+                       return self::$pageObjectCache[$realName];
+               }
+
                $specialPageList = self::getPageList();
 
                if ( isset( $specialPageList[$realName] ) ) {
@@ -400,6 +406,7 @@ class SpecialPageFactory {
                                $page = null;
                        }
 
+                       self::$pageObjectCache[$realName] = $page;
                        if ( $page instanceof SpecialPage ) {
                                return $page;
                        } else {
index c0ed4c9..12959a3 100644 (file)
@@ -272,7 +272,6 @@ class SpecialRedirect extends FormSpecialPage {
                                $url = $this->dispatchLog();
                                break;
                        default:
-                               $this->getOutput()->setStatusCode( 404 );
                                $url = null;
                                break;
                }
index 740f2f7..be110aa 100644 (file)
@@ -417,28 +417,18 @@ class UserrightsPage extends SpecialPage {
                return Status::newGood( $user );
        }
 
-       function makeGroupNameList( $ids ) {
-               if ( empty( $ids ) ) {
-                       return $this->msg( 'rightsnone' )->inContentLanguage()->text();
-               } else {
-                       return implode( ', ', $ids );
-               }
-       }
-
        /**
-        * Make a list of group names to be stored as parameter for log entries
+        * @since 1.15
         *
-        * @deprecated since 1.21; use LogFormatter instead.
         * @param array $ids
+        *
         * @return string
         */
-       function makeGroupNameListForLog( $ids ) {
-               wfDeprecated( __METHOD__, '1.21' );
-
+       public function makeGroupNameList( $ids ) {
                if ( empty( $ids ) ) {
-                       return '';
+                       return $this->msg( 'rightsnone' )->inContentLanguage()->text();
                } else {
-                       return $this->makeGroupNameList( $ids );
+                       return implode( ', ', $ids );
                }
        }
 
index 8857907..cfaf5c5 100644 (file)
@@ -140,6 +140,22 @@ class BlockListPager extends TablePager {
                                                                $language->pipeList( $links ) )->escaped()
                                                );
                                }
+                               if ( $value !== 'infinity' ) {
+                                       $timestamp = new MWTimestamp( $value );
+                                       $formatted .= '<br />' . $this->msg(
+                                               'ipb-blocklist-duration-left',
+                                               $language->formatDuration(
+                                                       $timestamp->getTimestamp() - time(),
+                                                       // reasonable output
+                                                       [
+                                                               'minutes',
+                                                               'hours',
+                                                               'days',
+                                                               'years',
+                                                       ]
+                                               )
+                                       )->escaped();
+                               }
                                break;
 
                        case 'ipb_by':
index 9d7b294..1185c4d 100644 (file)
@@ -645,9 +645,6 @@ abstract class UploadBase {
 
                if ( $this->mDesiredDestName != $filename && $comparableName != $filename ) {
                        $warnings['badfilename'] = $filename;
-                       // Debugging for bug 62241
-                       wfDebugLog( 'upload', "Filename: '$filename', mDesiredDestName: "
-                               . "'$this->mDesiredDestName', comparableName: '$comparableName'" );
                }
 
                // Check whether the file extension is on the unwanted list
@@ -666,7 +663,7 @@ abstract class UploadBase {
                }
 
                if ( $this->mFileSize == 0 ) {
-                       $warnings['emptyfile'] = true;
+                       $warnings['empty-file'] = true;
                }
 
                $exists = self::getExistsWarning( $localFile );
index 579de23..bb8a083 100644 (file)
@@ -24,7 +24,8 @@
                        "Янмурза Баки",
                        "Айсар",
                        "Lizalizaufa",
-                       "Кутлубаева Кунсулу Закиевна"
+                       "Кутлубаева Кунсулу Закиевна",
+                       "Вильданова Гюзель"
                ]
        },
        "tog-underline": "Һылтанмалар аҫтына һыҙыу:",
        "special-characters-group-ipa": "ХАФӘ (IPA)",
        "special-characters-group-symbols": "Тамғалар",
        "special-characters-group-greek": "Грек",
+       "special-characters-group-greekextended": "Грек телендә киңәйтелгән",
        "special-characters-group-cyrillic": "Кириллик",
        "special-characters-group-arabic": "Ғәрәп",
        "special-characters-group-arabicextended": "Ғәрәп (киңәйтелгән)",
index c312e22..9cd84cc 100644 (file)
        "right-applychangetags": "дадаваць [[Special:Tags|меткі]] пры рэдагаваньні",
        "right-changetags": "дадаваць і выдаляць адвольныя [[Special:Tags|меткі]] да асобных вэрсіяў і запісаў у журнале падзеяў",
        "grant-generic": "Набор правоў «$1»",
-       "grant-group-page-interaction": "Узаемадзеньне з старонкамі",
+       "grant-group-page-interaction": "Узаемадзеяньне з старонкамі",
        "grant-group-file-interaction": "Узаемадзеяньне з мэдыяфайламі",
        "grant-group-watchlist-interaction": "Узаемадзеяньне з вашым сьпісам назіраньня",
        "grant-group-email": "Адпраўка лістоў электроннай пошты",
        "apisandbox-api-disabled": "API забаронены на гэтым сайце.",
        "apisandbox-intro": "Выкарыстоўвайце гэтую старонку для экспэрымэнтаў з <strong>API вэб-сэрвісу MediaWiki</strong>.\nЗьвяртайцеся да [[mw:API:Main page|дакумэнтацыі API]] для дадатковай інфармацыі па выкарыстаньні API. Напрыклад, [//www.mediawiki.org/wiki/API#A_simple_example як атрымаць зьмест галоўнай старонкі]. Абярыце дзеяньне, каб пабачыць болей узораў.\n\nЗьвярніце ўвагу, што нягледзячы на тое, што гэта пясочніца, вашыя дзеяньні могуць унесьці зьмены ў вікі.",
        "apisandbox-fullscreen": "Разгарнуць панэль",
+       "apisandbox-fullscreen-tooltip": "Разгарнуць панэль пясочніцы, каб запоўніць акно браўзэра.",
+       "apisandbox-unfullscreen": "Паказаць старонку",
+       "apisandbox-unfullscreen-tooltip": "Паменшыць панэль пясочніцы, каб былі даступныя навігацыйныя спасылкі MediaWiki.",
        "apisandbox-submit": "Зрабіць запыт",
        "apisandbox-reset": "Ачысьціць",
+       "apisandbox-retry": "Паўтарыць",
        "apisandbox-examples": "Прыклады",
        "apisandbox-results": "Вынікі",
        "apisandbox-request-url-label": "URL-адрас запыту:",
index 7aad029..ce74f96 100644 (file)
        "foreign-structured-upload-form-label-own-work": "Гэта мая ўласная праца",
        "foreign-structured-upload-form-label-infoform-categories": "Катэгорыі",
        "foreign-structured-upload-form-label-infoform-date": "Дата",
+       "foreign-structured-upload-form-label-own-work-message-local": "Я пацвярджаю, што ўкладваю гэты файл згодна з правіламі і ліцэнзійнай палітыкай {{GRAMMAR:родны|{{SITENAME}}}}.",
        "backend-fail-stream": "Не атрымалася трансляваць файл $1.",
        "backend-fail-backup": "Немагчыма зрабіць рэзервную копію $1.",
        "backend-fail-notexists": "Файл $1 не існуе.",
        "changecontentmodel-reason-label": "Прычына:",
        "changecontentmodel-submit": "Змяніць",
        "logentry-contentmodel-change-revertlink": "адкаціць",
+       "logentry-contentmodel-change-revert": "адкат",
        "protectlogpage": "Журнал аховы",
        "protectlogtext": "Ніжэй прыведзены журнал змен абароны старонкі.\nВы можаце таксама прагледзець [[Special:ProtectedPages|пералік старонак пад аховай]].",
        "protectedarticle": "пад аховай «[[$1]]»",
        "protect-othertime": "Іншы час:",
        "protect-othertime-op": "іншы час",
        "protect-existing-expiry": "Вызначаны час сканчэння: $3, $2",
+       "protect-existing-expiry-infinity": "Наяўны тэрмін дзеяння: бясконца",
        "protect-otherreason": "Іншая ці дадатковая прычына:",
        "protect-otherreason-op": "Іншая прычына",
        "protect-dropdown": "*Звычайныя прычыны пастаноўкі аховы\n** Празмерны ўзровень вандалізму\n** Празмерны ўзровень спаму\n** Шкодная вайна правак\n** Старонка з высокай наведвальнасцю",
        "block-log-flags-hiddenname": "схаванае імя ўдзельніка",
        "range_block_disabled": "Не дазволена адміністратарская магчымасць ставіць блокі на адрасныя дыяпазоны.",
        "ipb_expiry_invalid": "Некарэктны час сканчэння.",
+       "ipb_expiry_old": "Час сканчэння — у мінулым.",
        "ipb_expiry_temp": "Скрытыя блокі на імёны ўдзельнікаў мусяць быць сталымі.",
        "ipb_hide_invalid": "Немагчыма заглушыць гэты рахунак; для яго маецца больш за {{PLURAL:$1|адну праўку|$1 праўкі|$1 правак}}.",
        "ipb_already_blocked": "\"$1\" ужо знаходзіцца пад блокам",
        "import-interwiki-history": "Капіраваць усе гістарычныя версіі гэтай старонкі",
        "import-interwiki-templates": "Разам з усімі шаблонамі",
        "import-interwiki-submit": "Імпартаваць",
+       "import-mapping-namespace": "Імпартаваць у прастору назваў:",
+       "import-mapping-subpage": "Імпартаваць як падстаронкі наступнай старонкі:",
        "import-upload-filename": "Назва файла:",
        "import-comment": "Каментарый:",
        "importtext": "Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].\nЗахавайце яго на свой камп'ютар, а потым загрузіце сюды.",
        "javascripttest": "JavaScript-тэсты",
        "javascripttest-pagetext-noframework": "Гэта старонка зарэзервавана для запуску тэстаў JavaScript",
        "javascripttest-pagetext-unknownframework": "Невядомая бібліятэка тэставання «$1».",
+       "javascripttest-pagetext-unknownaction": "Невядомае дзеянне \"$1\".",
        "javascripttest-pagetext-frameworks": "Калі ласка, выберыце адну з прапанаваных бібліятэк тэставання: $1",
        "javascripttest-pagetext-skins": "Выберыце афармленне для тэставання:",
        "javascripttest-qunit-intro": "Глядзіце [$1 дакументацыю па тэставанні] на mediawiki.org.",
        "pageinfo-protect-cascading-yes": "Да",
        "pageinfo-protect-cascading-from": "Каскадная ахова ад",
        "pageinfo-category-info": "Звесткі аб катэгорыі",
+       "pageinfo-category-total": "Агульная колькасць членаў",
        "pageinfo-category-pages": "Колькасць старонак",
        "pageinfo-category-subcats": "Колькасць падкатэгорый",
        "pageinfo-category-files": "Колькасць файлаў",
        "redirect-page": "Ідэнтыфікатар старонкі",
        "redirect-revision": "Версія старонкі",
        "redirect-file": "Назва файла",
+       "redirect-logid": "ID журнала",
        "redirect-not-exists": "Значэнне не знойдзена",
        "fileduplicatesearch": "Пошук дублікатных файлаў",
        "fileduplicatesearch-summary": "Пошук дублікатных файлах на падставе іх хэшаў.",
        "specialpages-group-wiki": "Вікізвесткі і прылады",
        "specialpages-group-redirects": "Адмысловыя старонкі-перасылкі",
        "specialpages-group-spam": "Прылады супраць спама",
+       "specialpages-group-developer": "Інструменты распрацоўшчыка",
        "blankpage": "Пустая старонка",
        "intentionallyblankpage": "Старонка наўмысна пакінута пустой, і ўжываецца для вымярэння хуткасці і падобнага.",
        "external_image_whitelist": " #Гэты радок пакіньце ў такім самым выглядзе<pre>\n#Упішыце часткі рэгулярных выразаў (тое, што пішуць паміж знакамі //) ніжэй\n#Гэта будзе параўноўвацца з адрасамі URL вонкавых выяваў, на якія ёсць спасылкі\n#Тыя з іх, дзе атрымаецца адпаведнасць, будуць паказаныя як выявы, а іначай толькі як спасылкі\n#Радкі, якія пачынаюцца з знака #, лічацца каментарамі\n#Малыя і вялікія літары не адрозніваюцца\n\n#Усе часткі рэгулярных выразаў павінны быць над гэтым радком. Сам радок пакіньце ў такім самым выглядзе</pre>",
        "tags-delete-explanation-warning": "Гэта дзеянне <strong>незваротнае</strong> і <strong>не можа быць адкочана</strong> нават адміністратарамі базы звестак. Упэўніцеся, што гэта тая бірка, што вы хочаце выдаліць.",
        "tags-delete-reason": "Прычына:",
        "tags-delete-submit": "Незваротна сцерці гэту бірку",
+       "tags-delete-not-found": "Бірка \"$1\" не існуе.",
+       "tags-delete-too-many-uses": "Бірка \"$1\" прыменена ў больш чым $2 {{PLURAL:$2|версіі|версіях}}, а значыць, яна не можа быць сцёрта.",
+       "tags-delete-warnings-after-delete": "Бірка \"$1\" была сцёрта, але {{PLURAL:$2|1=атрымана наступнае папярэджанне|атрыманы наступныя папярэджанні}}:",
+       "tags-activate-title": "Актываваць бірку",
+       "tags-activate-question": "Вы збіраецеся актываваць бірку \"$1\".",
+       "tags-activate-reason": "Прычына:",
+       "tags-activate-not-allowed": "Немагчыма актываваць бірку \"$1\".",
+       "tags-activate-not-found": "Бірка \"$1\" не існуе.",
+       "tags-activate-submit": "Актываваць",
+       "tags-deactivate-title": "Дэактываваць бірку",
+       "tags-deactivate-question": "Вы збіраецеся дэактываваць бірку \"$1\".",
+       "tags-deactivate-reason": "Прычына:",
+       "tags-deactivate-not-allowed": "Немагчыма дэактываваць бірку \"$1\".",
+       "tags-deactivate-submit": "Дэактываваць",
+       "tags-edit-title": "Правіць біркі",
+       "tags-edit-existing-tags": "Наяўныя біркі:",
+       "tags-edit-new-tags": "Новыя біркі:",
+       "tags-edit-add": "Дадаць гэтыя біркі:",
+       "tags-edit-reason": "Прычына:",
        "comparepages": "Параўнанне старонак",
        "compare-page1": "Старонка 1",
        "compare-page2": "Старонка 2",
index 1bac2e1..089bfc3 100644 (file)
        "nov": "ноя",
        "dec": "дек",
        "pagecategories": "{{PLURAL:$1|1=Саифенинъ категориясы|Саифенинъ категориялары}}",
-       "category_header": "\"$1\" категориясындаки саифелер",
+       "category_header": "«$1» категориясындаки саифелер",
        "subcategories": "Алт категориялар",
-       "category-media-header": "\"$1\" категориясындаки медиа файллары",
+       "category-media-header": "«$1» категориясындаки медиа файллары",
        "category-empty": "''Ишбу категорияда ич бир саифе я да медиа файл ёкъ.''",
        "hidden-categories": "Гизли {{PLURAL:$1|1=категория|категориялар}}",
        "hidden-category-category": "Гизли категориялар",
        "perfcachedts": "Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.",
        "querypage-no-updates": "Бу саифени денъиштирмеге шимди изин ёкъ. Бу малюмат аман янъартылмайджакъ.",
        "viewsource": "Менба кодуны косьтер",
-       "viewsource-title": "$1 саифесининъ менба коду",
+       "viewsource-title": "«$1» саифесининъ менба коду",
        "actionthrottled": "Арекет токъталды",
        "actionthrottledtext": "Спамгъа къаршы куреш себебинден бу арекетни аз вакъыт ичинде чокъ кере текрарлап оламайсынъыз. Мумкюн олгъан къарардан зияде арекет яптынъыз. Бир къач дакъкъадан сонъ текрарлап бакъынъыз.",
        "protectedpagetext": "Бу саифеде денъиштирме я да башкъа бир арекет япылмасын деп о блок этильди.",
        "updated": "(Янъарды)",
        "note": "'''Ихтар:'''",
        "previewnote": "'''Бу тек бакъып чыкъув, метин аля даа сакъланмагъан!'''",
+       "continue-editing": "Денъиштирюв пенджересине къайт",
        "previewconflict": "Бу бакъып чыкъув юкъары тарир пенджересиндеки метиннинъ сакъланувдан сонъ оладжакъ корюнишини акс эте.",
        "session_fail_preview": "''' Сервер сиз япкъан денъиштирмелерни сессия идентификаторы джоюлгъаны себебинден сакълап оламады.\nБу вакътынджа проблемадыр. Лютфен, текрар сакълап бакъынъыз.\nБундан да сонъ олып чыкъмаса, малюмат локаль файлгъа сакъланъыз да браузеринъизни бир къапатып ачынъыз.'''",
        "session_fail_preview_html": "'''Афу этинъиз! HTML сессиянынъ малюматлары гъайып олгъаны себебинден сизинъ денъиштирмелеринъизни къабул этмеге имкян ёкътыр.'''",
        "editing": "«$1» саифесини денъиштиреятасыз",
        "creating": "«$1» саифесини яратув",
        "editingsection": "«$1» саифесинде болюк денъиштиреятасыз",
-       "editingcomment": "$1 саифесини денъиштиреятасыз (янъы болюк)",
+       "editingcomment": "«$1» саифесини денъиштиреятасыз (янъы болюк)",
        "editconflict": "Денъиштирмелер чатышмасы: $1",
        "explainconflict": "Сиз саифени денъиштиргенде башкъа бири де денъиштирме япты.\nЮкъарыдаки язы саифенинъ шимдики алыны косьтере.\nСизинъ денъиштирмелеринъиз астында косьтерильди.\nШимди япкъан денъиштирмелеринъизни ашагъы пенджереден юкъары пенджереге авуштырмакъ керексинъиз.\n\"{{int:savearticle}}\"гъа баскъанда '''тек''' юкъарыдаки язы сакъланаджакъ.",
        "yourtext": "Сизинъ метнинъиз",
        "randompage": "Тесадюфий саифе",
        "randompage-nopages": "\"$1\" {{PLURAL:$2|1=исим фезасында|исим фезаларында}} ич бир саифе ёкъ.",
        "randomredirect": "Тесадюфий ёллама саифеси",
-       "randomredirect-nopages": "\"$1\" исим фезасында ич бир ёллама саифеси ёкъ.",
+       "randomredirect-nopages": "«$1» исим фезасында ич бир ёллама саифеси ёкъ.",
        "statistics": "Статистика",
        "statistics-header-pages": "Саифе статистикасы",
        "statistics-header-edits": "Денъиштирюв статистикасы",
        "protectlogtext": "Ашагъыдаки, къорчалавгъа алув/къорчалавдан чыкъарув иле багълы денъишмелер журналыдыр.\nКъорчалангъан саифелер [[Special:ProtectedPages|там джедвелини]] де коре билесинъиз.",
        "protectedarticle": "\"[[$1]]\" къорчалав алтына алынды",
        "modifiedarticleprotection": "«[[$1]]» ичюн къорчалав севиеси денъиштирильди",
-       "unprotectedarticle": "\"[[$1]]\" саифесинден къорчалав чыкъарлыды",
+       "unprotectedarticle": "«[[$1]]» саифесинден къорчалав чыкъарлыды",
        "prot_1movedto2": "[[$1]] саифесининъ ады [[$2]] деп денъиштирильди",
        "protect-legend": "Къорчалавны тасдыкъла",
        "protectcomment": "Себеп:",
        "sp-contributions-newonly": "Тек янъы саифе яраткъан денъиштирмелерни косьтер",
        "sp-contributions-submit": "Къыдыр",
        "whatlinkshere": "Бу саифеге багълантылар",
-       "whatlinkshere-title": "$1 саифесине багъланты олгъан саифелер",
+       "whatlinkshere-title": "«$1» саифесине багъланты олгъан саифелер",
        "whatlinkshere-page": "Саифе:",
        "linkshere": "'''[[:$1]]''' саифесине багъланты берген саифелер:",
        "nolinkshere": "'''[[:$1]]''' саифесине багъланты берген саифе ёкъ.",
        "ip_range_invalid": "Рухсетсиз IP аралыгъы.",
        "lockdb": "Малюмат базасы килитли",
        "lockbtn": "Малюмат базасы килитли",
-       "move-page": "$1 саифесининъ адыны денъиштиреятасыз",
+       "move-page": "«$1» саифесининъ адыны денъиштиреятасыз",
        "move-page-legend": "Саифенинъ адыны денъиштирюв",
        "movepagetext": "Ашагъыдаки форма къулланылып саифенинъ ады денъиштирилир. Бунынънен берабер денъиштирмелер журналы да янъы адгъа авуштырылыр.\nЭски ады янъы адына ёнетме олур. Эски серлевагъа ёнетип тургъан саифелерни автоматик оларакъ янъартып оласынъыз. Бу арекетни автоматик япмагъа истемесенъиз, бутюн [[Special:DoubleRedirects|чифт]] ве [[Special:BrokenRedirects|йыртыкъ]] ёнетме саифелерини озюнъиз тешкермеге меджбур олурсынъыз. Багълантылар эндиден берли догъру чалышмасындан эмин олмалысынъыз.\n\nЯнъы адда бир саифе энди бар олса, ад денъиштирилюви <strong>япылмайджакъ</strong>, анджакъ бар олгъан саифе ёнетме я да бош олса ад денъиштирилюви мумкюн оладжакъ. Бу демек ки, саифенинъ адыны янълыштан денъиштирген олсанъыз деминки адыны кери къайтарып оласынъыз, амма бар олгъан саифени тесадюфен ёкъ этамайсынъыз.\n\n<strong>ТЕНБИ!</strong>\nАд денъиштирилюви популяр саифелер ичюн буюк ве бекленмеген денъишмелерге себеп ола билир. Лютфен, денъиштирме япмаздан эвель ола биледжеклерни козь огюне алынъыз.",
        "movepagetalktext": "Къошулгъан музакере саифесининъ де (бар олса)\nады автоматик тарзда денъиштириледжек. '''Мустесналар:'''\n\n* Айны бу адда бош олмагъан бир музакере саифеси энди бар;\n* Ашагъыдаки бошлукъкъа ишарет къоймадынъыз.\n\nБойле алларда, керек олса, саифелерни къолнен ташымагъа я да бирлештирмеге меджбур олурсынъыз.",
index 9333f95..ffdd83c 100644 (file)
        "nov": "noy",
        "dec": "dek",
        "pagecategories": "{{PLURAL:$1|Saifeniñ kategoriyası|Saifeniñ kategoriyaları}}",
-       "category_header": "\"$1\" kategoriyasındaki saifeler",
+       "category_header": "“$1” kategoriyasındaki saifeler",
        "subcategories": "Alt kategoriyalar",
-       "category-media-header": "\"$1\" kategoriyasındaki media faylları",
+       "category-media-header": "“$1” kategoriyasındaki media faylları",
        "category-empty": "''İşbu kategoriyada iç bir saife ya da media fayl yoq.''",
        "hidden-categories": "Gizli {{PLURAL:$1|kategoriya|kategoriyalar}}",
        "hidden-category-category": "Gizli kategoriyalar",
        "formerror": "Hata: formanıñ malümatını yollamaqnıñ iç çaresi yoq",
        "badarticleerror": "Siz yapmağa istegen işlev bu saifede yapılıp olamay.",
        "cannotdelete": "\"$1\" saife ya da faylı yoq etilip olamadı. Başqa bir qullanıcı tarafından yoq etilgen ola bile.",
-       "cannotdelete-title": "\"$1\" saifesini yoq etmege olmaz",
+       "cannotdelete-title": "“$1” saifesini yoq etmege olmaz",
        "delete-hook-aborted": "Yoq etüv çengel protsedurasınen toqtatıldı.\nİç bir izaat berilmedi.",
        "badtitle": "Ruhsetsiz serleva",
        "badtitletext": "İstenilgen saife adı doğru degil, o boştır, yahut tillerara bağlantı ya da vikilerara bağlantı doğru yazılmağan. Belki saife adında yasaqlanğan işaretler bar.",
        "perfcachedts": "Aşağıdaki malümat keşten alındı, keşniñ soñki yañartılğan vaqtı: $1. Keşte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.",
        "querypage-no-updates": "Bu saifeni deñiştirmege şimdi izin yoq. Bu malümat aman yañartılmaycaq.",
        "viewsource": "Menba kodunı köster",
-       "viewsource-title": "$1 saifesiniñ menba kodu",
+       "viewsource-title": "“$1” saifesiniñ menba kodu",
        "actionthrottled": "Areket toqtaldı",
        "actionthrottledtext": "Spamğa qarşı küreş sebebinden bu areketni az vaqıt içinde çoq kere tekrarlap olamaysıñız. Mümkün olğan qarardan ziyade areket yaptıñız. Bir qaç daqqadan soñ tekrarlap baqıñız.",
        "protectedpagetext": "Bu saifede deñiştirme ya da başqa bir areket yapılmasın dep o blok etildi.",
        "updated": "(Yañardı)",
        "note": "'''İhtar:'''",
        "previewnote": "'''Bu tek baqıp çıquv, metin alâ daa saqlanmağan!'''",
+       "continue-editing": "Deñiştirüv penceresine qayt",
        "previewconflict": "Bu baqıp çıquv yuqarı tarir penceresindeki metinniñ saqlanuvdan soñ olacaq körünişini aks ete.",
        "session_fail_preview": "''' Server siz yapqan deñiştirmelerni sessiya identifikatorı\ncoyulğanı sebebinden saqlap olamadı. Bu vaqtınca problemadır. Lütfen, tekrar saqlap baqıñız.\nBundan da soñ olıp çıqmasa, malümat lokal faylğa saqlañız da brauzeriñizni bir qapatıp\naçıñız.'''",
        "session_fail_preview_html": "'''Afu etiñiz! HTML sessiyanıñ malümatları ğayıp olğanı sebebinden siziñ deñiştirmeleriñizni qabul etmege imkân yoqtır.'''",
        "editing": "“$1” saifesini deñiştireyatasız",
        "creating": "“$1” saifesini yaratuv",
        "editingsection": "“$1” saifesinde bölük deñiştireyatasız",
-       "editingcomment": "$1 saifesini deñiştireyatasız (yañı bölük)",
+       "editingcomment": "“$1” saifesini deñiştireyatasız (yañı bölük)",
        "editconflict": "Deñiştirmeler çatışması: $1",
        "explainconflict": "Siz saifeni deñiştirgende başqa biri de deñiştirme yaptı.\nYuqarıdaki yazı saifeniñ şimdiki alını köstere.\nSiziñ deñiştirmeleriñiz astında kösterildi. Şimdi yapqan deñiştirmeleriñizni aşağı pencereden yuqarı pencerege avuştırmaq kereksiñiz.\n\"{{int:savearticle}}\"ğa basqanda '''tek''' yuqarıdaki yazı saqlanacaq.",
        "yourtext": "Siziñ metniñiz",
        "randompage": "Tesadüfiy saife",
        "randompage-nopages": "\"$1\" {{PLURAL:$2|isim fezasında|isim fezalarında}} iç bir saife yoq.",
        "randomredirect": "Tesadüfiy yollama saifesi",
-       "randomredirect-nopages": "\"$1\" isim fezasında iç bir yollama saifesi yoq.",
+       "randomredirect-nopages": "“$1” isim fezasında iç bir yollama saifesi yoq.",
        "statistics": "Statistika",
        "statistics-header-pages": "Saife statistikası",
        "statistics-header-edits": "Deñiştirüv statistikası",
        "protectlogpage": "Qorçalav jurnalı",
        "protectlogtext": "Aşağıdaki, saifeni qorçalavğa aluv/qorçalavdan çıqaruv ile bağlı deñişmeler jurnalıdır.\nQorçalanğan saifeler [[Special:ProtectedPages|tam cedvelini]] de köre bilesiñiz.",
        "protectedarticle": "\"[[$1]]\" qorçalav altına alındı",
-       "modifiedarticleprotection": "\"[[$1]]\" içün qorçalav seviyesi deñiştirildi",
-       "unprotectedarticle": "\"[[$1]]\" saifesinden qorçalav çıqarlıdı",
+       "modifiedarticleprotection": "“[[$1]]” içün qorçalav seviyesi deñiştirildi",
+       "unprotectedarticle": "“[[$1]]” saifesinden qorçalav çıqarlıdı",
        "prot_1movedto2": "[[$1]] saifesiniñ adı [[$2]] dep deñiştirildi",
        "protect-legend": "Qorçalavnı tasdıqla",
        "protectcomment": "Sebep:",
        "sp-contributions-newonly": "Tek yañı saife yaratqan deñiştirmelerni köster",
        "sp-contributions-submit": "Qıdır",
        "whatlinkshere": "Bu saifege bağlantılar",
-       "whatlinkshere-title": "$1 saifesine bağlantı bergen saifeler",
+       "whatlinkshere-title": "“$1” saifesine bağlantı bergen saifeler",
        "whatlinkshere-page": "Saife:",
        "linkshere": "'''[[:$1]]''' saifesine bağlantı bergen saifeler:",
        "nolinkshere": "'''[[:$1]]''' saifesine bağlantı bergen saife yoq.",
        "ip_range_invalid": "Ruhsetsiz IP aralığı.",
        "lockdb": "Malümat bazası kilitli",
        "lockbtn": "Malümat bazası kilitli",
-       "move-page": "$1 saifesiniñ adını deñiştireyatasız",
+       "move-page": "“$1” saifesiniñ adını deñiştireyatasız",
        "move-page-legend": "Saifeniñ adını deñiştirüv",
        "movepagetext": "Aşağıdaki forma qullanılıp saifeniñ adı deñiştirilir. Bunıñnen beraber deñiştirmeler jurnalı da yañı adğa avuştırılır.\nEski adı yañı adına yönetme olur. Eski serlevağa yönetip turğan saifelerni avtomatik olaraq yañartıp olasıñız. Bu areketni avtomatik yapmağa istemeseñiz, bütün [[Special:DoubleRedirects|çift]] ve [[Special:BrokenRedirects|yırtıq]] yönetme saifelerini özüñiz teşkermege mecbur olursıñız. Bağlantılar endiden berli doğru çalışmasından emin olmalısıñız.\n\nYañı adda bir saife endi bar olsa, ad deñiştirilüvi <strong>yapılmaycaq</strong>, ancaq bar olğan saife yönetme ya da boş olsa ad deñiştirilüvi mümkün olacaq. Bu demek ki, saifeniñ adını yañlıştan deñiştirgen olsañız deminki adını keri qaytarıp olasıñız, amma bar olğan saifeni tesadüfen yoq etamaysıñız.\n\n<strong>TENBİ!</strong>\nAd deñiştirilüvi populâr saifeler içün büyük ve beklenmegen deñişmelerge sebep ola bilir. Lütfen, deñiştirme yapmazdan evel ola bileceklerni köz ögüne alıñız.",
        "movepagetalktext": "Qoşulğan muzakere saifesiniñ de (bar olsa) adı avtomatik tarzda deñiştirilecek. '''Müstesnalar:'''\n\n*Aynı bu isimde boş olmağan bir muzakere saifesi endi bar;\n*Aşağıdaki boşluqqa işaret qoymadıñız.\n\nBöyle allarda, kerek olsa, saifelerni qolnen taşımağa ya da birleştirmege mecbur olursıñız.",
        "move-watch": "Bu saifeni közet",
        "movepagebtn": "Adını deñiştir",
        "pagemovedsub": "Saifeniñ adı deñiştirildi",
-       "movepage-moved": "'''\"$1\" saifesiniñ adı \"$2\" olaraq deñiştirildi'''",
+       "movepage-moved": "'''“$1” saifesiniñ adı “$2” olaraq deñiştirildi'''",
        "movepage-moved-redirect": "Bir yollama yaratıldı.",
        "movepage-moved-noredirect": "Yollama yaratıluvı bastırıldı.",
        "articleexists": "Bu adda bir saife endi bar ya da siz yazğan ad yasaqlı.\nLütfen, başqa bir ad saylap yazıñız.",
index ee66318..5847af6 100644 (file)
        "sessionprovider-generic": "relace pomocí $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "relace pomocí cookies",
        "sessionprovider-nocookies": "Možná jsou zakázány cookies. Ujistěte se, že máte cookies povoleny a zkuste to znovu.",
-       "randomrootpage": "Náhodná kořenová stránka"
+       "randomrootpage": "Náhodná kořenová stránka",
+       "log-action-filter-block": "Typ zablokování:",
+       "log-action-filter-delete": "Typ smazání:",
+       "log-action-filter-patrol": "Typ prověření:",
+       "log-action-filter-protect": "Typ zamčení:",
+       "log-action-filter-upload": "Typ nahrání:",
+       "log-action-filter-all": "Všechny",
+       "log-action-filter-block-block": "Zablokování",
+       "log-action-filter-block-reblock": "Změna zablokování",
+       "log-action-filter-block-unblock": "Odblokování",
+       "log-action-filter-delete-delete": "Smazání stránky",
+       "log-action-filter-delete-restore": "Obnovení stránky",
+       "log-action-filter-delete-event": "Smazání záznamu",
+       "log-action-filter-delete-revision": "Smazání revize",
+       "log-action-filter-patrol-patrol": "Manuální prověření",
+       "log-action-filter-patrol-autopatrol": "Automatické prověření",
+       "log-action-filter-protect-protect": "Zamknutí",
+       "log-action-filter-protect-modify": "Změna zámku",
+       "log-action-filter-protect-unprotect": "Odemknutí",
+       "log-action-filter-upload-upload": "Nové načtení",
+       "log-action-filter-upload-overwrite": "Znovunačtení"
 }
index 408ebed..9a553dd 100644 (file)
        "special-characters-group-ipa": "Internationales Phonetisches Alphabet (IPA)",
        "special-characters-group-symbols": "Symbole",
        "special-characters-group-greek": "Griechisch",
+       "special-characters-group-greekextended": "Erweitertes Griechisch",
        "special-characters-group-cyrillic": "Kyrillisch",
        "special-characters-group-arabic": "Arabisch",
        "special-characters-group-arabicextended": "Arabisch, erweitert",
index 51d4659..db8abbd 100644 (file)
        "noemail": "There is no email address recorded for user \"$1\".",
        "noemailcreate": "You need to provide a valid email address.",
        "passwordsent": "A new password has been sent to the email address registered for \"$1\".\nPlease log in again after you receive it.",
-       "blocked-mailpassword": "Your IP address is blocked from editing, and so is not allowed to use the password recovery function to prevent abuse.",
+       "blocked-mailpassword": "Your IP address is blocked from editing. To prevent abuse, it is not allowed to use password recovery from this IP address.",
        "eauthentsent": "A confirmation email has been sent to the specified email address.\nBefore any other email is sent to the account, you will have to follow the instructions in the email, to confirm that the account is actually yours.",
        "throttled-mailpassword": "A password reset email has already been sent, within the last {{PLURAL:$1|hour|$1 hours}}.\nTo prevent abuse, only one password reset email will be sent per {{PLURAL:$1|hour|$1 hours}}.",
        "signupstart": "",
        "uploadstash-summary": "This page provides access to files that are uploaded or in the process of uploading, but are not yet published to the wiki. These files are not visible to anyone but the user who uploaded them.",
        "uploadstash-clear": "Clear stashed files",
        "uploadstash-nofiles": "You have no stashed files.",
-       "uploadstash-badtoken": "Performing that action failed. Perhaps because your editing credentials expired. Please try again.",
+       "uploadstash-badtoken": "Performing that action failed, perhaps because your editing credentials expired. Please try again.",
        "uploadstash-errclear": "Clearing the files failed.",
        "uploadstash-refresh": "Refresh the list of files",
        "uploadstash-thumbnail": "view thumbnail",
        "unblock-summary": "",
        "blockip": "Block {{GENDER:$1|user}}",
        "blockip-legend": "Block user",
-       "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.",
+       "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP address ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.",
        "ipaddressorusername": "IP address or username:",
        "ipbexpiry": "Expiration:",
        "ipbreason": "Reason:",
        "ipb-unblock": "Unblock a username or IP address",
        "ipb-blocklist": "View existing blocks",
        "ipb-blocklist-contribs": "Contributions for {{GENDER:$1|$1}}",
+       "ipb-blocklist-duration-left": "$1 left",
        "unblockip": "Unblock user",
        "unblockiptext": "Use the form below to restore write access to a previously blocked IP address or username.",
        "ipusubmit": "Remove this block",
        "unblock-hideuser": "You cannot unblock this user, as their username has been hidden.",
        "ipb_cant_unblock": "Error: Block ID $1 not found. It may have been unblocked already.",
        "ipb_blocked_as_range": "Error: The IP address $1 is not blocked directly and cannot be unblocked.\nIt is, however, blocked as part of the range $2, which can be unblocked.",
-       "ip_range_invalid": "Invalid IP range.",
+       "ip_range_invalid": "Invalid IP address range.",
        "ip_range_toolarge": "Range blocks larger than /$1 are not allowed.",
        "proxyblocker": "Proxy blocker",
        "proxyblockreason": "Your IP address has been blocked because it is an open proxy.\nPlease contact your Internet service provider or technical support of your organization and inform them of this serious security problem.",
        "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protected}} $3 $4 [cascading]",
        "logentry-protect-modify": "$1 {{GENDER:$2|changed}} protection level for $3 $4",
        "logentry-protect-modify-cascade": "$1 {{GENDER:$2|changed}} protection level for $3 $4 [cascading]",
-       "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
+       "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for {{GENDER:$3|$3}} from $4 to $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group membership for $3",
        "logentry-rights-autopromote": "$1 was automatically {{GENDER:$2|promoted}} from $4 to $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Symbols",
        "special-characters-group-greek": "Greek",
+       "special-characters-group-greekextended": "Greek extended",
        "special-characters-group-cyrillic": "Cyrillic",
        "special-characters-group-arabic": "Arabic",
        "special-characters-group-arabicextended": "Arabic extended",
index 36d122f..2fd51b3 100644 (file)
                        "YoViajo",
                        "Asierog",
                        "Mgpena",
-                       "Transonlohk"
+                       "Transonlohk",
+                       "Eloy"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "nocookieslogin": "{{SITENAME}} utiliza <em>cookies</em> para la autenticación de usuarios. Las <em>cookies</em> están desactivadas en tu navegador. Por favor, actívalas e inténtalo de nuevo.",
        "nocookiesfornew": "No se pudo crear la cuenta de usuario, porque no pudimos confirmar su origen.\nAsegúrate de que tienes las cookies activadas, luego recarga esta página e inténtalo de nuevo.",
        "noname": "No se ha especificado un nombre de usuario válido.",
-       "loginsuccesstitle": "Has accedido correctamente",
+       "loginsuccesstitle": "Has accedido",
        "loginsuccess": "<strong>Has accedido a {{SITENAME}} como «$1».</strong>",
        "nosuchuser": "No existe ningún usuario llamado «$1».\nLos nombres de usuario son sensibles a las mayúsculas.\nRevisa tu ortografía, o [[Special:UserLogin/signup|crea una cuenta nueva]].",
        "nosuchusershort": "No existe ningún usuario llamado «$1». Comprueba que lo has escrito correctamente.",
        "botpasswords-label-delete": "Borrar",
        "botpasswords-label-resetpassword": "Restablecer la contraseña",
        "botpasswords-label-grants": "Permisos aplicables:",
+       "botpasswords-help-grants": "Cada concesión le da acceso a los permisos listados que el usuario ya posea. Véase la [[Special:ListGrants|lista de concesiones]] para más información.",
        "botpasswords-label-restrictions": "Restricciones de uso:",
        "botpasswords-label-grants-column": "Concedido",
        "botpasswords-bad-appid": "El nombre del bot \"$1\" no es válido.",
        "mergehistory-empty": "No hay revisiones fusionables.",
        "mergehistory-done": "Se {{PLURAL:$3|fusionó una revisión|fusionaron $3 revisiones}} de $1 en [[:$2]].",
        "mergehistory-fail": "No se puede realizar la fusión de historiales, por favor revisa la página y los parámetros de tiempo.",
+       "mergehistory-fail-bad-timestamp": "La marca de tiempo no es válida.",
        "mergehistory-fail-invalid-source": "La página de origen no es válida.",
        "mergehistory-fail-invalid-dest": "La página de destino no es válida.",
+       "mergehistory-fail-no-change": "La fusión historiales no fusionó ninguna revisión. Vuelve a comprobar los parámetros de página y tiempo.",
        "mergehistory-fail-permission": "Permisos insuficientes para fusionar el historial.",
        "mergehistory-fail-self-merge": "Las páginas de origen y destino son la misma.",
        "mergehistory-fail-toobig": "No se puede fusionar el historial ya que más del límite de $1 {{PLURAL:$1|revisión|revisiones}} se moverían.",
        "uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
        "uploaded-hostile-svg": "Se encontró código CSS no seguro en el elemento de estilo del archivo SVG cargado.",
        "uploaded-event-handler-on-svg": "No está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> en los archivos SVG.",
-       "uploaded-href-unsafe-target-svg": "Se encontró un \"href\" hacia un destino inseguro <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
+       "uploaded-href-attribute-svg": "Los atributos <code>href</code> en archivos SVG sólo tienen permitido enlazar a objetivos http:// o https://, se encontró <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Se encontró un <code>href</code> hacia un destino inseguro <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.",
        "uploaded-animate-svg": "Se encontró un etiqueta \"animate\" que puede estar cambiando \"href\", mediante el atributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> en el archivo SVG cargado.",
        "uploaded-setting-event-handler-svg": "Está bloqueada la configuración de atributos controladores de eventos. Se encontró <code>&lt;$1 $2=\"$3\"&gt;</code> en el archivo SVG cargado.",
        "uploaded-setting-href-svg": "Está bloqueado el uso de la etiqueta \"set\" para añadir un atributo \"href\" al elemento padre.",
        "upload-options": "Opciones de subida",
        "watchthisupload": "Vigilar este archivo",
        "filewasdeleted": "Un archivo con este nombre se subió con anterioridad y posteriormente ha sido borrado. Deberías revisar el $1 antes de subirlo de nuevo.",
+       "filename-thumb-name": "Esto luce como el título de una miniatura. Por favor, no vuelva a subir miniaturas a la misma wiki. Si no es el caso, por favor corrija el nombre del archivo por uno que tenga más sentido, y no tenga el prefijo de miniatura.",
        "filename-bad-prefix": "El nombre del archivo que estás subiendo comienza por <strong>«$1»</strong>, un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.\nElige un nombre más descriptivo para tu archivo.",
        "filename-prefix-blacklist": " #<!-- deja esta línea exactamente como está --> <pre>\n# La sintaxis de esta página es la siguiente:\n#   * Todo texto que se encuentre después del carácter \"#\" hasta el final de la línea se tratará como un comentario y será ignorado\n#   * Cualquier línea que no esté en blanco será interpretada como un prefijo típico en nombres de archivo que suelen asignar automáticamente las cámaras digitales\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # algunos teléfonos móviles / celulares\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- deja esta línea exactamente como está -->",
        "upload-proto-error": "Protocolo incorrecto",
        "apihelp": "Ayuda de la API",
        "apihelp-no-such-module": "No se encontró el módulo \"$1\".",
        "apisandbox": "Zona de pruebas API",
+       "apisandbox-jsonly": "Se requiere JavaScript para utilizar la zona de pruebas de API.",
        "apisandbox-api-disabled": "La API está desactivada en este sitio.",
-       "apisandbox-intro": "Usa esta página para experimentar con la '''API de servicio web de MediaWiki'''.\nPara más detalles sobre el uso de la API, visita [//www.mediawiki.org/wiki/API:Main_page su documentación]. Ejemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener el contenido de una Página principal]. Selecciona una acción para ver más ejemplos.\n\nObserva que, aunque sea una página de pruebas, las acciones que realices en esta página pueden modificar el wiki.",
+       "apisandbox-intro": "Usa esta página para experimentar con la <strong>API de servicio web de MediaWiki</strong>.\nPara más detalles sobre el uso de la API, visita [[mw:API:Main page|su documentación]]. Ejemplo: [//www.mediawiki.org/wiki/API#A_simple_example obtener el contenido de una Página principal]. Selecciona una acción para ver más ejemplos.\n\nObserva que, aunque sea una página de pruebas, las acciones que realices en esta página pueden modificar el wiki.",
        "apisandbox-fullscreen": "Expandir panel",
+       "apisandbox-fullscreen-tooltip": "Expande el panel de la zona de pruebas hasta llenar la ventana del navegador.",
        "apisandbox-unfullscreen": "Mostrar página",
+       "apisandbox-unfullscreen-tooltip": "Reduce el panel de la zona de pruebas, para que los enlaces de navegación MediaWiki estén disponibles.",
        "apisandbox-submit": "Realizar solicitud",
        "apisandbox-reset": "Limpiar",
        "apisandbox-retry": "Reintentar",
        "apisandbox-dynamic-parameters-add-placeholder": "Nombre del parámetro",
        "apisandbox-dynamic-error-exists": "Ya existe un parámetro llamado \"$1\".",
        "apisandbox-deprecated-parameters": "Parámetros desaconsejados",
+       "apisandbox-fetch-token": "Auto-llenar el token",
        "apisandbox-submit-invalid-fields-title": "Algunos campos no son válidos",
        "apisandbox-submit-invalid-fields-message": "Por favor, corrige los campos señalados e inténtalo de nuevo.",
        "apisandbox-results": "Resultados",
        "listgrouprights-namespaceprotection-header": "Restricciones del espacio de nombres",
        "listgrouprights-namespaceprotection-namespace": "Espacio de nombres",
        "listgrouprights-namespaceprotection-restrictedto": "Derechos de usuario para editar",
-       "listgrants": "Subvenciones",
+       "listgrants": "Concesiones",
+       "listgrants-summary": "La siguiente es una lista de concesiones con sus permisos de usuario asociados. Los usuarios pueden autorizar aplicaciones para que usen sus cuentas, pero con permisos limitados basados en las concesiones que el usuario le dio a la aplicación. De todas formas, una aplicación actuando a nombre de un usuario no puede hacer uso de permisos que el usuario no posea.\nPuede haber [[{{MediaWiki:Listgrouprights-helppage}}|información adicional]] sobre permisos individuales.",
        "listgrants-grant": "Conceder",
        "listgrants-rights": "Derechos",
        "trackingcategories": "Categorías de seguimiento",
        "special-characters-group-ipa": "AFI",
        "special-characters-group-symbols": "Símbolos",
        "special-characters-group-greek": "Griego",
+       "special-characters-group-greekextended": "Griego extendido",
        "special-characters-group-cyrillic": "Cirílico",
        "special-characters-group-arabic": "Árabe",
        "special-characters-group-arabicextended": "Arábico extendido",
        "log-action-filter-patrol-autopatrol": "Verificación automática",
        "log-action-filter-protect-protect": "Protección",
        "log-action-filter-protect-modify": "Modificación de protección",
-       "log-action-filter-protect-unprotect": "Desproteccion",
+       "log-action-filter-protect-unprotect": "Desprotección",
        "log-action-filter-upload-upload": "Subida nueva",
        "log-action-filter-upload-overwrite": "Volver a subir"
 }
index 6798a32..7e301a8 100644 (file)
        "statistics-header-hooks": "Muut tilastot",
        "statistics-articles": "Sisältösivuja",
        "statistics-pages": "Sivuja",
-       "statistics-pages-desc": "Kaikki sivut, sisältäen keskustelusivut, ohjaukset ja muut.",
+       "statistics-pages-desc": "Kaikki wikissä olevat sivut, mukaan lukien keskustelusivut, ohjaussivut ynnä muut.",
        "statistics-files": "Tallennettuja tiedostoja",
        "statistics-edits": "Muokkauksia {{GRAMMAR:genitive|{{SITENAME}}}} perustamisen jälkeen",
-       "statistics-edits-average": "Keskimäärin yhtä sivua muokattu",
+       "statistics-edits-average": "Muokkausten keskiarvo yhdellä sivulla",
        "statistics-users": "Rekisteröityneitä [[Special:ListUsers|käyttäjiä]]",
        "statistics-users-active": "Aktiivisia käyttäjiä",
        "statistics-users-active-desc": "Käyttäjät, jotka ovat suorittaneet jonkin toiminnon {{PLURAL:$1|edellisen päivän|edellisten $1 päivän}} aikana.",
index 9859a05..d879df4 100644 (file)
        "special-characters-group-ipa": "API",
        "special-characters-group-symbols": "symboles",
        "special-characters-group-greek": "grec",
+       "special-characters-group-greekextended": "Grec étendu",
        "special-characters-group-cyrillic": "cyrillique",
        "special-characters-group-arabic": "arabe",
        "special-characters-group-arabicextended": "arabe étendu",
index cc1d062..41227b0 100644 (file)
        "exif-compression-6": "JPEG (viely)",
        "exif-copyrighted-true": "Protègiê per los drêts d’ôtor",
        "exif-copyrighted-false": "Ètat des drêts d’ôtor pas dèfeni",
+       "exif-photometricinterpretation-1": "Nêr et blanc (0 por lo nêr)",
        "exif-unknowndate": "Dâta encognua",
        "exif-orientation-1": "Normala",
-       "exif-orientation-2": "Envèrsâ d’aplan",
-       "exif-orientation-3": "Veriê de 180°",
-       "exif-orientation-4": "Envèrsâ d’aplomb",
-       "exif-orientation-5": "Veriê de 90° dens la dirèccion antihorèra et envèrsâ d’aplomb",
-       "exif-orientation-6": "Veriê de 90° dens la dirèccion antihorèra",
-       "exif-orientation-7": "Veriê de 90° dens la dirèccion horèra et envèrsâ d’aplomb",
-       "exif-orientation-8": "Veriê de 90° dens la dirèccion horèra",
-       "exif-planarconfiguration-1": "Balyês ategnentes",
-       "exif-planarconfiguration-2": "Balyês sèparâs",
+       "exif-orientation-2": "Envèrsâye d’aplan",
+       "exif-orientation-3": "Veriêe de 180°",
+       "exif-orientation-4": "Envèrsâye d’aplomb",
+       "exif-orientation-5": "Veriêe de 90° du fllanc antihorèro et envèrsâye d’aplomb",
+       "exif-orientation-6": "Veriêe de 90° du fllanc antihorèro",
+       "exif-orientation-7": "Veriêe de 90° du fllanc horèro et envèrsâye d’aplomb",
+       "exif-orientation-8": "Veriêe de 90° du fllanc horèro",
+       "exif-planarconfiguration-1": "format en bocons",
+       "exif-planarconfiguration-2": "format plan",
        "exif-colorspace-65535": "Pas calibrâ",
-       "exif-componentsconfiguration-0": "Ã\88gziste pas",
+       "exif-componentsconfiguration-0": "ègziste pas",
        "exif-componentsconfiguration-5": "V",
        "exif-exposureprogram-0": "Pas dèfeni",
-       "exif-exposureprogram-1": "Manuèl",
+       "exif-exposureprogram-1": "Manuâl",
        "exif-exposureprogram-2": "Programo normal",
        "exif-exposureprogram-3": "Prioritât a l’uvèrtura",
        "exif-exposureprogram-4": "Prioritât a l’ètopior",
        "exif-exposureprogram-5": "Programo crèacion (prèference a la provondior de champ)",
        "exif-exposureprogram-6": "Programo accion (prèference a la vitèsse d’ètopâ)",
-       "exif-exposureprogram-7": "Fôrma portrèt (por clich·ês de prés avouéc fond pas nèt)",
-       "exif-exposureprogram-8": "Fôrma payisâjo (por des clich·ês de payisâjos nèts)",
-       "exif-subjectdistance-value": "$1 mètre{{PLURAL:$1||s}}",
+       "exif-exposureprogram-7": "Fôrma portrèt (por visions de prés avouéc dèrriér troblo)",
+       "exif-exposureprogram-8": "Fôrma payisâjo (por visions de payisâjos avouéc dèrriér nèt)",
+       "exif-subjectdistance-value": "$1 mètro{{PLURAL:$1||s}}",
        "exif-meteringmode-0": "Encognua",
        "exif-meteringmode-1": "Moyena",
-       "exif-meteringmode-2": "Moyena èquilibrâ u centro",
+       "exif-meteringmode-2": "Moyena d’aplomb u centro",
        "exif-meteringmode-3": "Pouent",
        "exif-meteringmode-4": "MultiPouent",
        "exif-meteringmode-5": "Modèlo",
index 8312954..da26a3e 100644 (file)
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Símbolos",
        "special-characters-group-greek": "Grego",
+       "special-characters-group-greekextended": "Grego estendido",
        "special-characters-group-cyrillic": "Cirílico",
        "special-characters-group-arabic": "Árabe",
        "special-characters-group-arabicextended": "Árabe estendido",
index 1d7f094..cf353aa 100644 (file)
        "noemail": "לא רשומה כתובת דואר אלקטרוני עבור ה{{GENDER:$1|משתמש|משתמשת}} \"$1\".",
        "noemailcreate": "יש לספק כתובת דואר אלקטרוני תקינה.",
        "passwordsent": "סיסמה חדשה נשלחה לכתובת הדואר האלקטרוני הרשומה עבור \"$1\".\nאנא היכנסו חזרה לאתר אחרי שתקבלו אותה.",
-       "blocked-mailpassword": "כתובת ה־IP שלך נחסמה מעריכה, ולפיכך אינך מורשה להשתמש באפשרות שחזור הסיסמה, וזאת כדי למנוע ניצול לרעה של התכונה.",
+       "blocked-mailpassword": "כתובת ה־IP שלך נחסמה מעריכה. אינך מורשה להשתמש באפשרות שחזור הסיסמה, וזאת כדי למנוע ניצול לרעה של התכונה.",
        "eauthentsent": "דוא\"ל אימות נשלח לכתובת הדוא\"ל שצוינה.\nלפני שדברי דוא\"ל אחרים יישלחו לחשבון הזה, יהיה עליכם לפעול לפי ההוראות בדוא\"ל, כדי לאשר שהחשבון אכן שייך לכם.",
        "throttled-mailpassword": "כבר נשלח דוא\"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.\nכדי למנוע ניצול לרעה, יכול להישלח רק דוא\"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.",
        "mailerror": "שגיאה בשליחת דואר: $1",
        "mergelogpagetext": "זוהי רשימה של המיזוגים האחרונים של גרסאות מדף אחד לתוך דף שני.",
        "history-title": "היסטוריית גרסאות של הדף \"$1\"",
        "difference-title": "הבדלים בין גרסאות בדף \"$1\"",
-       "difference-title-multipage": "×\94×\91×\93×\9c×\99×\9d ×\91×\99×\9f ×\94×\93×£ \"$1\" ×\9c×\91×\99×\9f ×\94×\93×£ \"$2\"",
+       "difference-title-multipage": "הבדלים בין הדף \"$1\" לדף \"$2\"",
        "difference-multipage": "(הבדלים בין דפים)",
        "lineno": "שורה $1:",
        "compareselectedversions": "השוואת הגרסאות שנבחרו",
        "log-edit-tags": "עריכת התגיות של רשומות היומן שנבחרו",
        "checkbox-select": "בחירה: $1",
        "checkbox-all": "הכול",
-       "checkbox-none": "×\9c×\90 ×\9b×\9c×\95×\9d",
-       "checkbox-invert": "×\9c×\94פ×\95×\9a",
+       "checkbox-none": "כלום",
+       "checkbox-invert": "×\94פ×\99×\9b×\94",
        "allpages": "כל הדפים",
        "nextpage": "הדף הבא ($1)",
        "prevpage": "הדף הקודם ($1)",
        "allpagesfrom": "הצגת דפים החל מ:",
        "allpagesto": "הצגת דפים עד:",
        "allarticles": "כל הדפים",
-       "allinnamespace": "כל הדפים (מרחב שם $1)",
+       "allinnamespace": "×\9b×\9c ×\94×\93פ×\99×\9d (×\9eר×\97×\91 ×\94ש×\9d $1)",
        "allpagessubmit": "הצגה",
        "allpagesprefix": "הדפים ששמם מתחיל ב־:",
        "allpagesbadtitle": "כותרת הדף שניתנה הייתה בלתי־תקינה או שהייתה בה קידומת של קישור לשפה אחרת או לוויקי אחר.\nייתכן שהיא מכילה תו אחד או יותר האסורים לשימוש בכותרות.",
        "movepage-moved-redirect": "נוצרה הפניה.",
        "movepage-moved-noredirect": "יצירת ההפניה בוטלה.",
        "articleexists": "קיים כבר דף באותו שם, או שהשם שבחרת אינו תקין.\nנא לבחור שם אחר.",
-       "cantmove-titleprotected": "×\90×\99× ×\9a ×\9e×\95רש×\94 ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94 ×\9b×\99×\95×\95×\9f ×©×\94ש×\9d ×\94×\97×\93ש ×\9e×\95×\92×\9f ×\9eפנ×\99 ×\99צ×\99ר×\94",
+       "cantmove-titleprotected": "×\90×\99×\9f ×\91×\90פשר×\95ת×\9b×\9d ×\9c×\94×¢×\91×\99ר ×\90ת ×\94×\93×£ ×\9cש×\9d ×\96×\94 ×\9eש×\95×\9d ×©×\94ש×\9d ×\94×\97×\93ש ×\9e×\95×\92×\9f ×\9eפנ×\99 ×\99צ×\99ר×\94.",
        "movetalk": "העברה גם של דף השיחה",
        "move-subpages": "העברת כל דפי המשנה (עד $1)",
        "move-talk-subpages": "העברת כל דפי המשנה של דף השיחה (עד $1)",
        "logentry-import-upload": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 באמצעות העלאת קובץ",
        "logentry-import-upload-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 באמצעות העלאת קובץ ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מאתר ויקי אחר",
-       "logentry-import-interwiki-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מ־$5 ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})&rlm;",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2|ייבא|ייבאה}} את $3 מ־$5&rlm; ({{PLURAL:$4|גרסה אחת|$4 גרסאות}})&rlm;",
        "logentry-merge-merge": "$1 {{GENDER:$2|מיזג|מיזגה}} את $3 לתוך $4 (גרסאות עד $5)",
-       "logentry-move-move": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}}",
+       "logentry-move-move": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}}&rlm;",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} בלי להשאיר הפניה",
        "logentry-move-move_redir": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} תוך דריסת הפניה",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|העביר|העבירה}} את הדף $3 ל{{GRAMMAR:תחילית|$4}} תוך דריסת הפניה ובלי להשאיר הפניה",
        "special-characters-group-ipa": "אלפבית פונטי בינלאומי (IPA)",
        "special-characters-group-symbols": "סימנים",
        "special-characters-group-greek": "יווני",
+       "special-characters-group-greekextended": "יוונית מורחבת",
        "special-characters-group-cyrillic": "קירילי",
        "special-characters-group-arabic": "ערבי",
        "special-characters-group-arabicextended": "ערבי מורחב",
index 59a1e79..2e63884 100644 (file)
@@ -72,7 +72,8 @@
                        "जनक राज भट्ट",
                        "YmKavishwar",
                        "Upendradutt93",
-                       "Nemo bis"
+                       "Nemo bis",
+                       "Wassan.anmol"
                ]
        },
        "tog-underline": "कड़ियाँ अधोरेखन:",
        "laggedslavemode": "'''चेतावनी:''' यह पृष्ठ अद्यतनीत जानकारी-युक्त ना होने की आशंका है।",
        "readonly": "डाटाबेस लॉक किया हुआ है",
        "enterlockreason": "लॉक करने का कारण दीजिए, साथ ही लॉक खुलने के समय का लगभग आकलन दीजिये।",
-       "readonlytext": "शायद मेंटेनन्स के चलते डाटाबेस नये संपादन और अन्य बदलावों से लॉक किया गया है, जिसके बाद यह सामान्य स्थिति में आ जाना चाहिये।\n\nजिस प्रबंधक ने यह लॉक किया था उसने यह कारण दिया है: $1",
+       "readonlytext": "शायद à¤®à¥\87à¤\82à¤\9fà¥\87ननà¥\8dस à¤\95à¥\87 à¤\9aलतà¥\87 à¤¡à¤¾à¤\9fाबà¥\87स à¤¨à¤¯à¥\87 à¤¸à¤\82पादन à¤\94र à¤\85नà¥\8dय à¤¬à¤¦à¤²à¤¾à¤µà¥\8bà¤\82 à¤¸à¥\87 à¤²à¥\89à¤\95 à¤\95िया à¤\97या à¤¹à¥\88, à¤\9cिसà¤\95à¥\87 à¤¬à¤¾à¤¦ à¤¯à¤¹ à¤¸à¤¾à¤®à¤¾à¤¨à¥\8dय à¤¸à¥\8dथिति à¤®à¥\87à¤\82 à¤\86 à¤\9cाना à¤\9aाहियà¥\87।\n\nà¤\9cिस à¤\95ारà¥\8dयà¤\95ारà¥\80 à¤ªà¥\8dरबà¤\82धà¤\95 à¤¨à¥\87 à¤¯à¤¹ à¤²à¥\89à¤\95 à¤\95िया à¤¥à¤¾ à¤\89सनà¥\87 à¤¯à¤¹ à¤\95ारण à¤¦à¤¿à¤¯à¤¾ à¤¹à¥\88: $1",
        "missing-article": "डाटाबेस में $2 के अंदर कहीं भी \"$1\" नहीं मिला।\n\nआम तौर पर हटाए जा चुके पृष्ठ की इतिहास कड़ी का प्रयोग करने पर ऐसा होता है।\n\nअगर ऐसा नहीं है, तो शायद आपने सॉफ़्टवेयर में त्रुटि खोज ली है।\nकृपया यू॰आर॰एल पते समेत किसी [[Special:ListUsers/sysop|प्रबंधक]] को इसका ब्यौरा दें।",
        "missingarticle-rev": "(अवतरण#: $1)",
        "missingarticle-diff": "(अंतर: $1, $2)",
        "mypreferencesprotected": "आपके पास अपनी वरीयताएँ बदलने की अनुमति नहीं है।",
        "ns-specialprotected": "विशेष पृष्ठ सम्पादित नहीं किये जा सकते।",
        "titleprotected": "सदस्य [[User:$1|$1]] ने इस शीर्षक का पृष्ठ बनाने से सुरक्षित किया हुआ है।\nइसके लिये निम्न कारण दिया गया है: <em>$2</em>",
-       "filereadonlyerror": "\"$1\" फ़ाइल को बदलने में असक्षम क्योंकि भण्डार \"$2\" इस समय 'केवल पाठन हेतु' (रीड ओनली) है।\n\nजिस प्रबंधक ने ये प्रबंध लगाया है उन्होंने निम्न विवरण प्रदान किया है: \"$3\"।",
+       "filereadonlyerror": "\"$1\" à¤«à¤¼à¤¾à¤\87ल à¤\95à¥\8b à¤¬à¤¦à¤²à¤¨à¥\87 à¤®à¥\87à¤\82 à¤\85सà¤\95à¥\8dषम à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤­à¤£à¥\8dडार \"$2\" à¤\87स à¤¸à¤®à¤¯ 'à¤\95à¥\87वल à¤ªà¤¾à¤ à¤¨ à¤¹à¥\87तà¥\81' (रà¥\80ड à¤\93नलà¥\80) à¤¹à¥\88।\n\nà¤\9cिस à¤\95ारà¥\8dयà¤\95ारà¥\80 à¤ªà¥\8dरबà¤\82धà¤\95 à¤¨à¥\87 à¤¯à¥\87 à¤ªà¥\8dरबà¤\82ध à¤²à¤\97ाया à¤¹à¥\88 à¤\89नà¥\8dहà¥\8bà¤\82नà¥\87 à¤¨à¤¿à¤®à¥\8dन à¤µà¤¿à¤µà¤°à¤£ à¤ªà¥\8dरदान à¤\95िया à¤¹à¥\88: \"$3\"।",
        "invalidtitle-knownnamespace": "\"$2\" नामस्थान और \"$3\" नाम वाला गलत शीर्षक",
        "invalidtitle-unknownnamespace": "अज्ञात नामस्थान संख्या $1 और नाम \"$2\" वाला गलत शीर्षक",
        "exception-nologin": "लॉग इन नहीं किया है",
        "continue-editing": "संपादन क्षेत्र को जाएँ",
        "previewconflict": "यह झलक ऊपरी पाठ सम्पादन क्षेत्र में हुए बदलाव दिखाती है, और यदि आप अभी संजोते हैं तो यही पाठ संजोया जाएगा।",
        "session_fail_preview": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\nकृपया पुन: यत्न करें। अगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
-       "session_fail_preview_html": "'''क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।'''\n\n''चूँकि {{SITENAME}} पर raw HTML सक्षम है, जावास्क्रिप्ट हमलों से बचाव के लिये झलक नहीं दिखाई गई है।''\n\n'''अगर यह आपका वैध संपादन यत्न था, तो कृपया पुनः यत्न करें।'''\nअगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें।",
+       "session_fail_preview_html": "क्षमा करें! सेशन डाटा के नष्ट होने के कारण आपके बदलाव संजोये नहीं जा सके।\n\n<em>चूँकि {{SITENAME}} पर raw HTML सक्षम है, जावास्क्रिप्ट हमलों से बचाव के लिये झलक नहीं दिखाई गई है।</em>\n\n<strong>अगर यह आपका वैध संपादन यत्न था, तो कृपया पुनः यत्न करें।</strong>\nअगर इसके बाद भी ऐसा ही होता है तो कृपया [[Special:UserLogout|लॉग आउट]] कर के पुनः लॉग इन करें तथा जांचिए यदि आपका ब्राउज़र इस साइट से कुकीज़ की अनुमति देता है।",
        "token_suffix_mismatch": "'''आपके द्वारा किये गये बदलाव रद्द कर दिये गये हैं क्योंकि आपके क्लायंट ने आपके संपादन टोकन में दिये हुए विरामचिन्हों में बदलाव किये हैं।'''\nलेख के पाठ में खराबी ना आये इसलिये आपके बदलाव रद्द कर दिये गये हैं।\nऐसा तब भी हो सकता है यदि आप कोई खराब वेब-आधारित अनामक प्रौक्सी प्रयोग कर रहे हों।",
        "edit_form_incomplete": "'''सम्पादन फ़ॉर्म के कुछ भाग सर्वर तक नहीं पहुँच पाए; जाँच लें कि आपके द्वारा किये बदलाव अक्षुण्ण हैं, और सहेजने का पुनः यत्न करें।'''",
        "editing": "$1 सम्पादन",
        "copyrightwarning2": "{{SITENAME}} पर किया कोई भी योगदान अन्य सदस्यों द्वारा बदला जा सकता है और हटाया भी जा सकता है।\nअगर आपको अपने लिखे हुए पाठ में संपादन होना नामंजूर है तो यहाँ पर न लिखें।<br />\nआप हमें यह भी वचन देतें हैं कि यह आपने स्वयं लिखा है अथवा सार्वजनिक क्षेत्र या किसी समान मुक्त स्रोत से प्रतिलिपित किया है (अधिक जानकारी के लिये $1 देखें)।\n'''कॉपीराइट सुरक्षित कार्यों को बिना अनुमति के यहाँ न डालें!'''",
        "editpage-cannot-use-custom-model": "इस पृष्ठ का मुख्य सामग्री परिवर्तित नहीं हुआ।",
        "longpageerror": "'''त्रुटि: आपका दिया हुआ पाठ {{PLURAL:|$1 किलोबाइट|$1 किलोबाइट}} लंबा है, जो {{PLURAL:|$2 किलोबाइट|$2 किलोबाइट}} की सीमा से बाहर है।\nइसे संजोया नहीं जा सकता।'''",
-       "readonlywarning": "'''सावधान: डाटाबेस को रख-रखाव के लिये बंद कर दिया गया है, इसलिये अभी आपके बदलाव संजोए नहीं जा सकते।\nअगर आप चाहें तो इस सामग्री को बाद के लिए कॉपी-पेस्ट कर के किसी टेक्स्ट फ़ाइल में रख सकते हैं।'''\n\nबंद करने वाले प्रबंधक ने बंद करने का यह कारण दिया है: $1",
+       "readonlywarning": "<strong>सावधान: डाटाबेस को रख-रखाव के लिये बंद कर दिया गया है, इसलिये अभी आपके बदलाव संजोए नहीं जा सकते।\nअगर आप चाहें तो इस सामग्री को बाद के लिए कॉपी-पेस्ट कर के किसी टेक्स्ट फ़ाइल में रख सकते हैं।</strong>\n\nबंद करने वाले कार्यकारी प्रबंधक ने बंद करने का यह कारण दिया है: $1",
        "protectedpagewarning": "'''चेतावनी: इस पृष्ठ को सुरक्षित कर दिया गया है और इसे केवल प्रबंधक ही सम्पादित कर सकते हैं।'''\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
        "semiprotectedpagewarning": "'''सूचना:''' यह पृष्ठ सुरक्षित कर दिया गया है और इसे केवल पंजीकृत सदस्य ही सम्पादित कर सकते हैं।\nनवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
        "cascadeprotectedwarning": "'''सावधान:''' यह पृष्ठ निम्नलिखित सुरक्षा-सीढ़ी {{PLURAL:$1|पृष्ठ से|पन्नों से}} जुड़ा हुआ होने के कारण सुरक्षित है, और केवल प्रबंधक ही इसमें बदलाव कर सकते हैं:",
        "permissionserrors": "अधिकार त्रुटि",
        "permissionserrorstext": "निम्नलिखित {{PLURAL:$1|कारण|कारणों}} से आपको ऐसा करने की अनुमति नहीं हैं:",
        "permissionserrorstext-withaction": "आपको $2 की अनुमति नहीं हैं, निम्नलिखित {{PLURAL:$1|कारण|कारणों}} की वजह से:",
-       "contentmodelediterror": "à¤\86प à¤\87स à¤ªà¥\83षà¥\8dठ à¤\95ा à¤\87तिहास à¤®à¥\87à¤\82 à¤¸à¤®à¥\8dपादन à¤¨à¤¹à¥\80à¤\82 à¤\95र à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82 à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤\87सà¤\95ा à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 <code>$1</code>, à¤\94र à¤µà¤°à¥\8dतमान à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 <code>$2</code> है।",
+       "contentmodelediterror": "à¤\86प à¤\87स à¤ªà¥\83षà¥\8dठ à¤\95ा à¤\87तिहास à¤®à¥\87à¤\82 à¤¸à¤®à¥\8dपादन à¤¨à¤¹à¥\80à¤\82 à¤\95र à¤¸à¤\95तà¥\87 à¤¹à¥\88à¤\82 à¤\95à¥\8dयà¥\8bà¤\82à¤\95ि à¤\87सà¤\95ा à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 <code>$1</code>, à¤\9cà¥\8b à¤\95à¥\80 à¤µà¤°à¥\8dतमान à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤¸à¥\87 <code>$2</code> à¤\85लà¤\97 है।",
        "recreate-moveddeleted-warn": "'''चेतावनी: आप एक पहले हटाए गए पृष्ठ को पुनर्निर्मित कर रहे हैं।'''\n\nआप को विचार करना चाहिये कि क्या इस पृष्ठ का संपादन जारी रखना उचित होगा।\nइस पृष्ट के हटाने व स्थानांतरण का लॉग सुविधा के लिये उपलब्ध है:",
        "moveddeleted-notice": "यह पृष्ठ हटाया जा चुका है।\nपृष्ठ के हटाने और स्थानांतरण का लॉग संदर्भ के लिए नीचे दिया गया है।",
        "moveddeleted-notice-recent": "क्षमा करें, यह पृष्ठ कुछ ही समय पहले हटाया गया है। (24 घण्टों के भीतर)\nइसके हटाये और स्थानांतरित करने का लोग नीचे दिया हुआ है।",
        "revdelete-unsuppress": "पुनर्स्थापित अवतरणों पर से प्रतिबन्ध हटाएँ",
        "revdelete-log": "कारण:",
        "revdelete-submit": "चयनित {{PLURAL:$1|अवतरण|अवतरणों}} पर लागू करें",
-       "revdelete-success": "'''अवतरण दृश्यता सफलतापूर्वक अद्यातानीत की गई।'''",
+       "revdelete-success": "अवतरण दृश्यता सफलतापूर्वक अद्यातानीत की गई।",
        "revdelete-failure": "'''अवतरण दृश्यता अद्यातानीत नहीं की जा सकी:'''\n$1",
        "logdelete-success": "लॉग दृष्यता बदली गई।",
        "logdelete-failure": "'''लॉग दृश्यता का जमाव नहीं किया जा सका:'''\n$1",
        "recentchanges-page-added-to-category": "[[:$1]] श्रेणी में जुड़ा",
        "recentchanges-page-added-to-category-bundled": "[[:$1]] और [[Special:WhatLinksHere/$1|{{PLURAL:$2|एक पृष्ठ|$2 पृष्ठ}}]] श्रेणी में जुड़ा",
        "recentchanges-page-removed-from-category": "[[:$1]] श्रेणी से हटा",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] और {{PLURAL:$2|एक पृष्ठ|$2 पृष्ठ}} श्रेणी से हटा",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] और [[Special:WhatLinksHere/$1|{{PLURAL:$2|एक पृष्ठ|$2 पृष्ठ}}]] श्रेणी से हटा",
        "autochange-username": "मीडियाविकि स्वतः परिवर्तन",
        "upload": "फ़ाइल अपलोड करें",
        "uploadbtn": "फ़ाइल अपलोड करें",
        "emailccsubject": "आपके ई-मेल की प्रति जो $1 को भेजा गया: $2",
        "emailsent": "ई-मेल भेज दिया गया है।",
        "emailsenttext": "आपका ई-मेल संदेश भेज दिया गया है।",
-       "emailuserfooter": "इस ई-मेल को $1 द्वारा $2 को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
+       "emailuserfooter": "इस ई-मेल को $1 {{GENDER:$1|द्वारा}} {{GENDER:$2|$2}} को भेजा गया था जिसके लिए \"{{int:emailuser}}\" कार्य को {{SITENAME}} पर प्रयोग में लाया गया था।",
        "usermessage-summary": "प्रणाली सन्देश छोड़ रहा है।",
        "usermessage-editor": "सिस्टम दूत",
        "watchlist": "ध्यानसूची",
        "watchlistanontext": "अपनी ध्यानसूची में मौजूद पृष्ठ देखने या फिर संपादित करने के लिये कॄपया लॉग इन करें।",
        "watchnologin": "लॉग इन नहीं किया है",
        "addwatch": "ध्यानसूची में जोड़ें",
-       "addedwatchtext": "à¤\86पà¤\95à¥\80 [[Special:Watchlist|धà¥\8dयानसà¥\82à¤\9aà¥\80]] à¤®à¥\87à¤\82 \"[[:$1]]\" à¤ªà¥\83षà¥\8dठ à¤\9cà¥\8bड़ à¤¦à¤¿à¤¯à¤¾ à¤\97या à¤¹à¥\88।\nभविषà¥\8dय à¤®à¥\87à¤\82 à¤\87स à¤ªà¥\83षà¥\8dठ à¤¤à¤¥à¤¾ à¤\87सà¤\95à¥\87 à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ à¤®à¥\87à¤\82 à¤¹à¥\8bनà¥\87 à¤µà¤¾à¤²à¥\87 à¤¬à¤¦à¤²à¤¾à¤µ à¤\86पà¤\95à¥\80 à¤§à¥\8dयानसà¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤¦à¤¿à¤\96à¥\87à¤\82à¤\97à¥\87।",
+       "addedwatchtext": "à¤\86पà¤\95à¥\80 [[Special:Watchlist|धà¥\8dयानसà¥\82à¤\9aà¥\80]] à¤®à¥\87à¤\82 \"[[:$1]]\" à¤\94र à¤\87सà¤\95à¥\87 à¤\9aरà¥\8dà¤\9aा à¤ªà¥\83षà¥\8dठ à¤\9cà¥\8bड़ à¤¦à¤¿à¤\8f à¤\97à¤\8f à¤¹à¥\88à¤\82।",
        "addedwatchtext-short": "पृष्ठ \"$1\" को आपकी ध्यानसूची से जोड़ा गया है।",
        "removewatch": "ध्यानसूची से हटाएँ",
        "removedwatchtext": "\"[[:$1]]\" नामक पृष्ठ को आपकी [[Special:Watchlist|ध्यानसूची]] से हटा दिया गया है।",
        "special-characters-group-ipa": "आइपीए",
        "special-characters-group-symbols": "प्रतीक",
        "special-characters-group-greek": "ग्रीक",
+       "special-characters-group-greekextended": "ग्रीक विस्तृत",
        "special-characters-group-cyrillic": "सिरिलिक",
        "special-characters-group-arabic": "अरबी",
        "special-characters-group-arabicextended": "अरबी विस्तारित",
        "sessionprovider-generic": "$1 सत्र",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "कुकी-आधारित सत्र",
        "sessionprovider-nocookies": "हो सकता है कि कुकी निष्क्रिय है। कृपया देखें कि और सक्रिय करें।",
-       "randomrootpage": "अविशिष्ट मूल पृष्ठ"
+       "randomrootpage": "अविशिष्ट मूल पृष्ठ",
+       "log-action-filter-block": "प्रतिबंध के प्रकार:",
+       "log-action-filter-delete": "हटाने के प्रकार:",
+       "log-action-filter-patrol": "परीक्षण के प्रकार:",
+       "log-action-filter-protect": "सुरक्षा के प्रकार:",
+       "log-action-filter-upload": "अपलोड के प्रकार:",
+       "log-action-filter-all": "सभी",
+       "log-action-filter-block-block": "अवरोध",
+       "log-action-filter-block-reblock": "अवरोध परिवर्तन",
+       "log-action-filter-block-unblock": "अवरोधरहित",
+       "log-action-filter-delete-delete": "पृष्ठ हटाना",
+       "log-action-filter-delete-restore": "पृष्ठ न हटाना",
+       "log-action-filter-delete-event": "पृष्ठ हटाने का लॉग",
+       "log-action-filter-delete-revision": "अवतरण हटाना",
+       "log-action-filter-patrol-patrol": "अपने से परीक्षण",
+       "log-action-filter-patrol-autopatrol": "स्वतः पुनरीक्षण",
+       "log-action-filter-protect-protect": "सुरक्षा",
+       "log-action-filter-protect-modify": "सुरक्षा परिवर्तन",
+       "log-action-filter-protect-unprotect": "असुरक्षा",
+       "log-action-filter-upload-upload": "नया अपलोड",
+       "log-action-filter-upload-overwrite": "फिर से अपलोड"
 }
index 7b0dd88..39436f8 100644 (file)
        "preview": "Նախադիտում",
        "showpreview": "Նախադիտել",
        "showdiff": "Կատարված փոփոխությունները",
-       "blankarticle": "<strong>Զգուշացում:</strong> Էջը, որը Դուք ստեղծում եք, դատարկ է:\nԵթե նորից սեղմեք «\"{{int:savearticle}}\"» կոճակը, էջը կստեղծվի առանց որևէ բովանդակության:",
+       "blankarticle": "<strong>Զգուշացում:</strong> Էջը, որը Դուք ստեղծում եք, դատարկ է:\nԵթե նորից սեղմեք «{{int:savearticle}}» կոճակը, էջը կստեղծվի առանց որևէ բովանդակության:",
        "anoneditwarning": "<strong>Ուշադրություն,</strong> Դուք չեք մտել համակարգ։ Ցանկացած խմբագրման դեպքում Ձեր IP հասցեն կդառնա բոլորին տեսանելի։ Եթե Դուք <strong>[$1 մուտք գործեք]</strong> կամ <strong>[$2 ստեղծեք մասնակցային հաշիվ]</strong>, Ձեր կատարած խմբագրումները կկապվեն Ձեր մասնակցային անվան հետ, ինչպես նաև կունենաք այլ առավելություններ։",
        "anonpreviewwarning": "<em>Դուք չեք մտել համակարգ։\nՀիշելով Ձեր կատարած խմբագրումը, այն կպահանվի Ձեր IP հասցեի հետ միասին այս էջի խմբագրումների պատմության մեջ։</em>",
        "missingsummary": "'''Հիշեցում.''' Դուք չեք տվել խմբագրման ամփոփում։ «Հիշել» կոճակի կրկնակի մատնահարման դեպքում փոփոխությունները կհիշվեն առանց ամփոփման։",
index 5822a1c..639aaa6 100644 (file)
        "search": "Лахаp",
        "searchbutton": "Лахар",
        "go": "Дехьа г|о",
-       "searcharticle": "Дехьа г|о",
+       "searcharticle": "Дехьавала",
        "history": "Истори",
        "history_short": "Истори",
        "updatedmarker": "Со ханача денца хувцамаш хиннaд",
        "print": "Кепатохар",
        "view": "Б|аргтассам",
        "view-foreign": "Мазаоаг|он чу $1 хьажа",
-       "edit": "Ð¥Ñ\83вÑ\86а",
+       "edit": "Ð\9dийÑ\81де",
        "edit-local": "Хувца локальни йоазонца сурт оттадар",
        "create": "Хьаде",
        "create-local": "ТIатоха локальни йоазонца сурт оттадар",
        "specialpage": "Г|улакхадара оаг|ув",
        "personaltools": "Са г|ирсаш",
        "articlepage": "Йоазон т|а б|аргтасса",
-       "talk": "Дувцам",
+       "talk": "Дувца оттадар",
        "views": "БӀаргтассамаш",
        "toolbox": "ГӀирсаш",
        "userpage": "Доакъошхочун оаг|он т|а б|аргтасса",
        "imagepage": "Лурдара оаг|oн т|а б|аргтасса",
        "mediawikipage": "Xоаман оаг|ув хьахьокха",
        "templatepage": "Ч|абала оаг|oн т|а б|аргтасса",
-       "viewhelppage": "ГӀо деха",
+       "viewhelppage": "ГӀо хьаэцар",
        "categorypage": "Катага оаг|oн т|а б|аргтасса",
        "viewtalkpage": "Дувцамага б|аргтасса",
        "otherlanguages": "Кхыча меттаех",
        "redirectedfrom": "($1 т|aра хьадейта да)",
        "redirectpagesub": "Д|а-хьа дайта оаг|ув",
        "redirectto": "Д|ахьожаде укх т|а:",
-       "lastmodifiedat": "Укх оаг|oн т|ехьара  хувцам: $2, $1.",
+       "lastmodifiedat": "Укх оагIoн тIехьара хувцам: $2, $1.",
        "viewcount": "Укх оаг|oн т|а б|аргтассаб {{PLURAL:$1|цхьааца\n|$1 times}}. {{PLURAL:$1|1=цхьазза|$1за}}.",
        "protectedpage": "Лорама оаг|ув",
        "jumpto": "Укхаза дехьаг|о:",
        "nstab-media": "Медифаг",
        "nstab-special": "ГӀулакха оагӀув",
        "nstab-project": "Хьахоадайтамах лаьца",
-       "nstab-image": "Ð\9fаÑ\8cл",
+       "nstab-image": "Файл",
        "nstab-mediawiki": "Хоам",
        "nstab-template": "ЧIабал",
        "nstab-help": "ГӀо",
        "emailconfirmlink": "Доаржален хоамни хьожадорг дIачIоагIаде",
        "loginlanguagelabel": "Мотт: $1",
        "pt-login": "Чувала/яла",
-       "pt-createaccount": "Ð\94акÑ\8aалаÑ\8cÑ\86аÑ\80Ñ\85о кхолла",
+       "pt-createaccount": "УÑ\87Ñ\91Ñ\82а Ñ\8fздаÑ\80 кхолла",
        "changepassword": "КъайладIоaгIа дIахувцар",
        "oldpassword": "Къаьна къайладIоагӀа:",
        "newpassword": "Керда къайладIоагӀа:",
        "italic_sample": "Кулга яздам",
        "italic_tip": "Кулга яздам",
        "link_sample": "Ӏинка кортале",
-       "link_tip": "ЧураӀинк",
+       "link_tip": "Чура хьожадарг",
        "extlink_sample": "Ӏинка кортале http://www.example.com",
        "extlink_tip": "Арен Ӏинка (http:// тамагӀах дийца ма ле)",
        "headline_sample": "Кортален яздам",
        "nowiki_sample": "Укхаза кийчаде дезаш доаца яздам оттаде",
        "nowiki_tip": "Масса-бустамлорг теркамза дита",
        "image_tip": "Чуяьккха паьла",
-       "media_tip": "Ð\9fаÑ\8cла Ó\80инк",
+       "media_tip": "Файлан Ñ\82IаÑ\85Ñ\8cожаваÑ\80",
        "sig_tip": "Шун кулгаяздар а, хӀанзара ха а",
        "hr_tip": "Мухала мугӀ (могаш тайпара к|еззига хайраде)",
        "summary": "Хувцамий белгалдер",
        "nextn": "{{PLURAL:$1|тlехьайоагlар $1|тlехьайоагlараш $1|тlехьайоагlараш $1}}",
        "prevn-title": "{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}",
        "nextn-title": "{{PLURAL:$1|1=$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}",
-       "shown-title": "Хьóкха $1 {{PLURAL:$1|даь йоазо|даь йоазош}} укх оáгIувна тIа",
+       "shown-title": "Хьóкха $1 {{PLURAL:$1|даь йоазо|даь йоазонаш}} укх оáгIувна тIа",
        "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) хьажа",
        "searchmenu-exists": "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:$1]]\" я'''",
        "searchmenu-new": "'''Укх \"[[:$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
        "action-read": "Укх оагIуви дешам",
        "action-edit": "Ер оагIув хувца",
        "nchanges": "$1 {{PLURAL:$1|1=хувцам|хувцамаш}}",
-       "enhancedrc-history": "Ð\98стори",
+       "enhancedrc-history": "истори",
        "recentchanges": "Керда хувцамаш",
        "recentchanges-legend": "Керда хувцамий оттамаш",
        "recentchanges-summary": "КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да {{grammar:genitive|{{SITENAME}}}}.",
        "recentchanges-feed-description": "Укх ларамца тIехьара массахувцамашт теркам бе.",
-       "recentchanges-label-newpage": "Укх хувцамаца керда оагIув даь хиннад",
+       "recentchanges-label-newpage": "Укх хувцамаца керда оагIув яь хиннай",
        "recentchanges-label-minor": "ЗIамига хувцам я",
        "recentchanges-label-bot": "Ер хувцам бIатаца яь е",
        "recentchanges-label-unpatrolled": "Ер хувцам ший моттиге кхы дIадехьаяьккхаяц.",
        "filehist-filesize": "Паьла юстарал",
        "filehist-comment": "ХIамоалар",
        "imagelinks": "Паьлий пайда эца",
-       "linkstoimage": "{{PLURAL:$1|1=ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:",
+       "linkstoimage": "{{PLURAL:$1|1=ТIехьайоагIача $1 оагIуво тIахьожаву|ТIехьайоагIача $1 оагIувнаша тIахьожаву}} укх файла тIа:",
        "nolinkstoimage": "Йола паьла тIа  Iинк ю оагIувнаш дац",
        "sharedupload": "Ер паьла $1чера я, кхыча хьахьоадайтамча хьахайраде йийшайолаш я.",
        "sharedupload-desc-here": "Ер паьл $1чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.\nЦун [$2 лоацама оагIувца] лоаца маIандар кIалхагIа латта.",
        "tooltip-pt-mycontris": "Шун хувцамаш",
        "tooltip-pt-login": "Укхаза хьай цIи аьле чувала/яла йиша я, амма чуцаваьлача/ялача хIама а дац",
        "tooltip-pt-logout": "Аравала/яла",
-       "tooltip-pt-createaccount": "Хьа бокъо я лоархIама яздар кхелла система чу вала, амма декхар долаш дац из.",
+       "tooltip-pt-createaccount": "Хьа бокъо я учёта яздар кхелла система чу вала, амма декхар долаш дац из.",
        "tooltip-ca-talk": "ОагIувна чулоацаме дувцам",
-       "tooltip-ca-edit": "Ð¥Ñ\83вÑ\86а ер оагIув",
+       "tooltip-ca-edit": "Ð\9dийÑ\81Ñ\8aе ер оагIув",
        "tooltip-ca-addsection": "Керда декъам хьаде",
        "tooltip-ca-viewsource": "Ер оагIув хувцамах лораяь я, амма шун цунна гIувамага хьажа бокъо я.",
        "tooltip-ca-history": "Укх оагIувни хувцама таптар",
        "tooltip-n-currentevents": "ХIанзара хоаман дагарле",
        "tooltip-n-recentchanges": "ТӀехьара хувцамий дагарче",
        "tooltip-n-randompage": "Бе йоаца оагӀув ела",
-       "tooltip-n-help": "Новкъостала моттиг",
+       "tooltip-n-help": "Новкъостал лаха мегаш йола моттиг",
        "tooltip-t-whatlinkshere": "Массайола оагIувий дагарле, укх оагIув тIа Iинкаш луш йола",
        "tooltip-t-recentchangeslinked": "ОагIувнаш тIа тIехьара хувцамаш, укх оагIувнера Iинк яь йола",
        "tooltip-feed-rss": "Укх оагIувна RSSчу гойтар",
        "tooltip-t-permalink": "Укх оагIув доржама даим латта Iинк",
        "tooltip-ca-nstab-main": "Йоазува чулоацам",
        "tooltip-ca-nstab-user": "Дакъалаьцархочунна ший оагIув",
-       "tooltip-ca-nstab-special": "Ер гIулакха оагIув я, из хувца хьо бокъо йолаш вац/яц.",
+       "tooltip-ca-nstab-special": "Ер гIулакха оагIув я, из хувца бокъо яц",
        "tooltip-ca-nstab-project": "Хьахьоадайтама оагIув",
        "tooltip-ca-nstab-image": "Паьла оагIув",
        "tooltip-ca-nstab-template": "ЧIабала оагIув",
-       "tooltip-ca-nstab-help": "ГӀона оагIув",
+       "tooltip-ca-nstab-help": "ГӀон оагIув",
        "tooltip-ca-nstab-category": "Цатега оагIув",
        "tooltip-minoredit": "Ер хувцар башха доаца санна белгалде",
        "tooltip-save": "Хувцамаш кходе",
        "version-software-version": "Доржам",
        "fileduplicatesearch-filename": "ПаьлацIи:",
        "fileduplicatesearch-submit": "Лаха",
-       "specialpages": "Ð\93\83лакÑ\85ий оагIувнаш",
+       "specialpages": "Ð\9bаÑ\8cÑ\80Ñ\85Ñ\85Iа Ð¹Ð¾Ð»Ð° оагIувнаш",
        "specialpages-group-users": "Дакъалаьцархой, цара бокъо",
        "specialpages-group-pages": "ОагIувний дагарченаш",
        "specialpages-group-pagetools": "ОагIувнаша гIирсаш",
        "htmlform-submit": "ДIадахьийта",
        "htmlform-reset": "Хувцамаш юхадаккха",
        "htmlform-selectorother-other": "Кхыдола",
+       "logentry-newusers-create": "{{GENDER:$2|Доакъашхочо кхеллай}} учёта яздар $1",
        "rightsnone": "(а)",
        "revdelete-summary": "хувцамий лоацам",
        "searchsuggest-search": "Лаха",
index 8c9e16d..9a400b2 100644 (file)
        "mergelog": "Unioni",
        "revertmerge": "Annulla unioni",
        "mergelogpagetext": "Di seguito sono elencate le ultime operazioni di unione della cronologia di due pagine.",
-       "history-title": "$1: cronologia delle modifiche",
-       "difference-title": "$1: differenze tra le versioni",
-       "difference-title-multipage": "$1 e $2: differenze tra le pagine",
+       "history-title": "Cronologia delle modifiche di \"$1\"",
+       "difference-title": "Differenze tra le versioni di \"$1\"",
+       "difference-title-multipage": "Differenze tra le pagine \"$1\" e \"$2\"",
        "difference-multipage": "(Differenze fra le pagine)",
        "lineno": "Riga $1:",
        "compareselectedversions": "Confronta le versioni selezionate",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Simboli",
        "special-characters-group-greek": "Greco",
+       "special-characters-group-greekextended": "Greco esteso",
        "special-characters-group-cyrillic": "Cirillico",
        "special-characters-group-arabic": "Arabo",
        "special-characters-group-arabicextended": "Arabo esteso",
index 963a18d..d253742 100644 (file)
        "sessionprovider-generic": "$1-Sessiounen",
        "randomrootpage": "Zoufalls-Stammsäit",
        "log-action-filter-block": "Typ vun der Spär:",
+       "log-action-filter-protect": "Typ vu Spär",
        "log-action-filter-all": "All",
        "log-action-filter-block-block": "Spären",
        "log-action-filter-block-unblock": "Spär ophiewen",
index e498c30..f55d378 100644 (file)
        "articlepage": "Lihek isi laman",
        "talk": "Rundiang",
        "views": "Caliak",
-       "toolbox": "Kotak pakakeh",
+       "toolbox": "Pakakeh",
        "userpage": "Lihek laman pangguno",
        "projectpage": "Caliak laman proyek",
        "imagepage": "Caliak laman berkas",
        "nstab-template": "Templat",
        "nstab-help": "Bantuan",
        "nstab-category": "Kategori",
+       "mainpage-nstab": "Palanta",
        "nosuchaction": "Indak ado tindakan tasabuik",
        "nosuchactiontext": "Tindakan nan diminta dek URL tasabuik indak valid. Sanak mungkin salah mangetikkan URL, atau mangikuik pautan nan salah. Iko mungkin manunjuakan adonyo suatu bug pado parangkaik lunak nan dipagunoan dek {{SITENAME}}.",
        "nosuchspecialpage": "Indak ado laman istimewa tasabuik",
        "login-abort-generic": "Proses masuak Sanak indak barasil - Dibatalan",
        "loginlanguagelabel": "Baso: $1",
        "suspicious-userlogout": "Pamintaan Sanak untuak kalua log ditulak karano tampaknyo dikirim oleh paramban nan rusak atau proksi panyinggah.",
+       "pt-login": "Masuak log",
+       "pt-createaccount": "Buek akun",
        "pt-userlogout": "Kalua log",
        "php-mail-error-unknown": "Kasalahan nan indak jaleh dalam fungsi mail() PHP",
        "user-mail-no-addy": "Mancubo mangirim surel tanpa alamaik surel.",
        "minoreditletter": "k",
        "newpageletter": "B",
        "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|byte|bita}} satalah parubahan",
        "rc-enhanced-expand": "Tampilkan rincian (paralu JavaScript)",
        "rc-enhanced-hide": "Suruakkan rincian",
        "recentchangeslinked": "Parubahan takaik",
        "tooltip-pt-mycontris": "Daftar jariah Sanak",
        "tooltip-pt-login": "Sanak disaranan untuak masuak log; walaupun indak wajib",
        "tooltip-pt-logout": "Kalua log",
+       "tooltip-pt-createaccount": "Sanak dianjuaan mambuek akun dan masuak log; walaupun hal iko indak aruih",
        "tooltip-ca-talk": "Parudiangan tantang isi laman",
-       "tooltip-ca-edit": "Angku dapek manyuntiang laman ko. Silakan gunoan tombol pratonton sabalun manyimpan",
+       "tooltip-ca-edit": "Suntiang laman ko",
        "tooltip-ca-addsection": "Mulai bagian baru",
        "tooltip-ca-viewsource": "Laman ko dilinduangi.\nSanak hanyo buliah mancaliak sumbernyo sajo",
        "tooltip-ca-history": "Revisi sabalunnyo dari laman ko",
index 1fc9b49..8bcfce5 100644 (file)
        "changeemail": "Kái tiān-chú-phoe ê tē-chí",
        "changeemail-oldemail": "Chit-má ê E-mail tē-chí:",
        "changeemail-newemail": "Sin E-mail ê chū-chí:",
+       "changeemail-password": "Lí-ê {{SITENAME}} bi̍t-bé:",
+       "changeemail-submit": "Kái-piàn tiān-chu-phoe",
+       "changeemail-throttled": "Lí chi̍t-ê-á teng-ji̍p liáu siuⁿ chē kái.\nChiáⁿ tan-thāi $1 kòe-āu chài chhì chi̍t pái.",
+       "changeemail-nochange": "Chhiáⁿ su-ji̍p chi̍t-ê bô-kâng ê sin tiān-chú-phoe chū-chí.",
        "bold_sample": "Chho·-thé bûn-jī",
        "bold_tip": "Chho·-thé jī",
        "italic_sample": "Chhú-thé ê bûn-jī",
        "recreate-moveddeleted-warn": "'''Sè-jī: Lí taⁿ chún-pī beh khui ê ia̍h, chêng bat hō͘ lâng thâi tiāu koè.''' Lí tio̍h chim-chiok soà-chiap pian-chi̍p chit ia̍h ê pit-iàu-sèng. Chia ū chit ia̍h ê san-tû kì-lo̍k (deletion log) hō͘ lí chham-khó:",
        "edit-conflict": "Siu-kái sio-chhiong",
        "defaultmessagetext": "Siat piān ê bûn-jī",
+       "content-model-wikitext": "wikitext",
+       "content-model-text": "sûn bûn-pún",
        "content-model-javascript": "JavaScript",
+       "content-json-empty-object": "Khang bu̍t-kiāⁿ",
+       "content-json-empty-array": "Khang tīn-lia̍t",
        "post-expand-template-inclusion-warning": "'''Kéng-pò:'''Pau ji̍t lâi ê pán-bôo sioⁿ koè tsē ia̍h tuā.\nŪ chi̍t-koá-á ē bô pau ji̍t lâi.",
        "undo-success": "Pian-chi̍p í-keng chhú-siau. Chhiáⁿ khak-tēng, liáu-āu kā ē-kha ho̍k-goân ê kái-piàn pó-chûn--khí-lâi.",
        "undo-failure": "Pian-chi̍p bē-tàng chhú-siau, in-ūi chhiong tio̍h kî-kan chhah-ji̍p ê pian-chi̍p.",
index d751514..f2dc823 100644 (file)
        "resetpass-wrong-oldpass": "Feil mellombels eller noverande passord.\nDu kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels passord.",
        "resetpass-temp-password": "Mellombels passord:",
        "resetpass-abort-generic": "Passordbytet vart stogga av ei utviding.",
+       "resetpass-validity-soft": "Passordet ditt er ikkje gyldig: $1\n\nGjer vel å velja eit nytt passord no, eller klikk «{{int:resetpass-submit-cancel}}» for å endra det seinare.",
        "passwordreset": "Attendestilling av passord",
        "passwordreset-text-one": "Fyll ut dette skjemaet for å attendestilla passordet ditt.",
        "passwordreset-disabled": "↓Tilbakestilling av passord er ikkje aktivert på denne wikien",
index f5df140..c695d8a 100644 (file)
        "botpasswords-updated-body": "Hasło bota \"$1\" użytkownika \"$2\" zostało zaktualizowane.",
        "botpasswords-deleted-title": "Hasło bota usunięte",
        "botpasswords-deleted-body": "Hasło bota \"$1\" użytkownika \"$2\" zostało usunięte.",
+       "botpasswords-not-exist": "Użytkownik \"$1\" nie ma hasła dla bota o nazwie \"$2\".",
        "resetpass_forbidden": "Hasła nie mogą zostać zmienione",
        "resetpass-no-info": "Musisz być zalogowany, by uzyskać bezpośredni dostęp do tej strony.",
        "resetpass-submit-loggedin": "Zmień hasło",
        "autoredircomment": "Przekierowanie do [[$1]]",
        "autosumm-new": "Utworzono nową stronę \"$1\"",
        "autosumm-newblank": "Utworzono pustą stronę",
-       "size-bytes": "$1&nbsp;B",
+       "size-bytes": "$1 {{PLURAL:$1|bajt|bajty|bajtów}}",
        "size-kilobytes": "$1&nbsp;KB",
        "size-megabytes": "$1&nbsp;MB",
        "size-gigabytes": "$1&nbsp;GB",
        "mw-widgets-titleinput-description-redirect": "przekierowanie do $1",
        "api-error-blacklisted": "Wybierz inny, opisowy tytuł.",
        "randomrootpage": "Losowa strona (bez podstron)",
+       "log-action-filter-block": "Rodzaj blokady:",
+       "log-action-filter-delete": "Rodzaj usunięcia:",
+       "log-action-filter-protect": "Rodzaj zabezpieczenia:",
+       "log-action-filter-upload": "Rodzaj przesłanych:",
        "log-action-filter-all": "Wszystkie",
+       "log-action-filter-block-block": "Zablokowanie",
        "log-action-filter-block-reblock": "Zmiana blokady",
        "log-action-filter-block-unblock": "Odblokowanie",
        "log-action-filter-delete-delete": "Usunięcie strony",
-       "log-action-filter-delete-restore": "Przywrócenie strony",
+       "log-action-filter-delete-restore": "Odtworzenie strony",
+       "log-action-filter-delete-event": "Usunięcie wpisu rejestru",
+       "log-action-filter-delete-revision": "Usunięcie wersji",
        "log-action-filter-protect-protect": "Zabezpieczenie",
        "log-action-filter-protect-modify": "Zmiana zabezpieczenia",
-       "log-action-filter-protect-unprotect": "Odbezpieczenie"
+       "log-action-filter-protect-unprotect": "Odbezpieczenie",
+       "log-action-filter-upload-upload": "Nowe przesłane",
+       "log-action-filter-upload-overwrite": "Przesłane ponownie"
 }
index 8257539..80a23d8 100644 (file)
        "mw-widgets-dateinput-placeholder-month": "کککک-م م",
        "mw-widgets-titleinput-description-new-page": "تر اوسه پورې دا مخ نشته",
        "mw-widgets-titleinput-description-redirect": "$1 ته ورگرځېدنه",
-       "randomrootpage": "د ناټاکلې ريښې مخ"
+       "randomrootpage": "د ناټاکلې ريښې مخ",
+       "log-action-filter-all": "ټول",
+       "log-action-filter-block-block": "بنديز لگول"
 }
index 3ab2eac..a500393 100644 (file)
        "post-expand-template-inclusion-warning": "'''Aviso''': a soma do tamanho de inclusão de predefinições é muito grande.\nAlgumas predefinições não serão processadas.",
        "post-expand-template-inclusion-category": "Páginas com excesso de predefinições",
        "post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho muito grande.\nEstes argumentos foram omitidos.",
-       "post-expand-template-argument-category": "Páginas com argumentos de predefinições omitidos",
+       "post-expand-template-argument-category": "Páginas com argumentos de predefinições descartados",
        "parser-template-loop-warning": "Ciclo de predefinições detectado: [[$1]]",
        "parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)",
        "language-converter-depth-warning": "O limite de profundidade do conversor de línguas excedeu a ($1)",
index e1023a8..6f189b5 100644 (file)
        "uploadstash-badtoken": "Não foi possível executar a operação. Talvez as suas credenciais de edição tenham expirado. Tente novamente.",
        "uploadstash-errclear": "Não foi possível apagar os ficheiros.",
        "uploadstash-refresh": "Atualizar a lista de ficheiros",
+       "uploadstash-thumbnail": "ver miniatura",
        "invalid-chunk-offset": "Deslocamento de fragmento inválido",
        "img-auth-accessdenied": "Acesso negado",
        "img-auth-nopathinfo": "PATH_INFO em falta.\nO seu servidor não está configurado para passar esta informação.\nPode ser baseado em CGI e não consegue suportar img_auth.\nConsulte a documentação em https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "randomrootpage": "Página raiz aleatória",
        "log-action-filter-block": "Tipo de bloqueio:",
        "log-action-filter-delete": "Tipo de eliminação:",
+       "log-action-filter-patrol": "Tipo de patrulha:",
        "log-action-filter-protect": "Tipo de proteção:",
+       "log-action-filter-upload": "Tipo de carregamento:",
        "log-action-filter-all": "Todas",
-       "log-action-filter-upload-upload": "Novo carregamento"
+       "log-action-filter-block-block": "Bloquear",
+       "log-action-filter-block-reblock": "Alteração de bloqueio",
+       "log-action-filter-block-unblock": "Desbloquear",
+       "log-action-filter-delete-delete": "Eliminação de página",
+       "log-action-filter-delete-restore": "Restauro de página",
+       "log-action-filter-delete-event": "Eliminação de registo",
+       "log-action-filter-delete-revision": "Eliminação de revisão",
+       "log-action-filter-patrol-patrol": "Patrulha manual",
+       "log-action-filter-patrol-autopatrol": "Patrulha automática",
+       "log-action-filter-protect-protect": "Proteção",
+       "log-action-filter-protect-modify": "Alteração da proteção",
+       "log-action-filter-protect-unprotect": "Desproteção",
+       "log-action-filter-upload-upload": "Novo carregamento",
+       "log-action-filter-upload-overwrite": "Recarregar"
 }
index 3805b90..bdba606 100644 (file)
        "undo-summary-username-hidden": "Edit summary for an undo action where the username of the old revision is hidden.\n\nParameters:\n* $1 - the revision ID being undone\nSee also:\n* {{msg-mw|Undo-summary}}",
        "cantcreateaccounttitle": "Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.",
        "cantcreateaccount-text": "Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP address\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\nSee also:\n* {{msg-mw|Cantcreateaccount-range-text}}",
-       "cantcreateaccount-range-text": "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP range\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\n* $4 - current user's IP address",
+       "cantcreateaccount-range-text": "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.\n* $1 - target IP address range\n* $2 - reason or {{msg-mw|Blockednoreason}}\n* $3 - username\n* $4 - current user's IP address",
        "createaccount-hook-aborted": "Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}",
        "viewpagelogs": "Link displayed in history of pages",
        "nohistory": "Message shown when there are no history to list. See [{{canonicalurl:x|action=history}} example history].\n----\nAlso used as title of error message when the feed is empty. See [{{canonicalurl:x|action=history&feed=atom}} example feed].\n\nSee the error message:\n* {{msg-mw|history-feed-empty}}",
        "ipb-unblock": "Used as page title in [[Special:Block]], if the target user is not specified.\n\nSee also:\n* {{msg-mw|Ipb-unblock-addr}}",
        "ipb-blocklist": "Used as link text in [[Special:Block]].\n\nThe link points to Specil:BlockList.",
        "ipb-blocklist-contribs": "Used in [[Special:Block]].\n* $1 - target username",
+       "ipb-blocklist-duration-left": "Used on [[Special:BlockList]] to show the remaining time (years, months, days, hours, minutes) until the block expires.\n$1 - The duration left",
        "unblockip": "Used as legend for the form in [[Special:Unblock]].",
        "unblockiptext": "Used in the {{msg-mw|Unblockip}} form on [[Special:Unblock]].",
        "ipusubmit": "Used as button text on [{{canonicalurl:Special:BlockList|action=unblock}} Special:BlockList?action=unblock]. To see the message:\n* Go to [[Special:BlockList]]\n* Click \"unblock\" for any block (but you can only see \"unblock\" if you have administrator rights)\n* It is now the button below the form",
        "ipb_expiry_temp": "Warning message displayed on [[Special:BlockIP]] if the option \"hide username\" is selected but the expiry time is not infinite.",
        "ipb_hide_invalid": "Used as error message in [[Special:Block]].\n* $1 - Number of edits (Value of [[mw:Manual:$wgHideUserContribLimit]])",
        "ipb_already_blocked": "{{Identical|$1 is already blocked}}",
-       "ipb-needreblock": "Used in [[Special:Block]].\n* $1 - target username",
+       "ipb-needreblock": "Used in [[Special:Block]].\n* $1 - target username, can be used for GENDER support",
        "ipb-otherblocks-header": "[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]\nUsed on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks\n\nParameters:\n* $1 - number of blocks\nSee also:\n* {{msg-mw|Ipblocklist-otherblocks}}",
        "unblock-hideuser": "{{doc-singularthey}}",
        "ipb_cant_unblock": "Used as error message in [[Special:Unblock]]. Parameters:\n* $1 - block ID",
-       "ipb_blocked_as_range": "Used when unblock of a single IP fails. Parameters:\n* $1 - IP address\n* $2 - IP range",
+       "ipb_blocked_as_range": "Used when unblock of a single IP fails. Parameters:\n* $1 - IP address\n* $2 - IP address range",
        "ip_range_invalid": "Used as error message in [[Special:Block]].\n\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
        "ip_range_toolarge": "Used as error message in [[Special:Block]]. Parameters:\n* $1 - a number from 0 to 32 for IPv4 (from 0 to 128 for IPv6); a part of CIDR (Classless Inter-Domain Routing) notation.\nSee also:\n* {{msg-mw|Range block disabled}}\n* {{msg-mw|Ip range invalid}}\n* {{msg-mw|Ip range toolarge}}",
        "proxyblocker": "Used in [[Special:BlockMe]].\n\nSee also:\n* {{msg-mw|proxyblocker-disabled}}\n* {{msg-mw|proxyblockreason}}\n* {{msg-mw|proxyblocksuccess}}",
        "logentry-protect-protect-cascade": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)\nFor word \"cascading\" see {{msg-mw|protect-summary-cascade}}",
        "logentry-protect-modify": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)",
        "logentry-protect-modify-cascade": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - protect expiry (formatted with {{msg-mw|protect-summary-desc}}, multiple possible)\nFor word \"cascading\" see {{msg-mw|protect-summary-cascade}}",
-       "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
+       "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username, also used for GENDER support\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-rights-legacy": "* $1 - username\n* $2 - (see below)\n* $3 - username\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below)\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-upload-upload": "{{Logentry|[[Special:Log/upload]]}}",
        "special-characters-group-ipa": "IPA means a script: \"international phonetic alphabet\" here, and not \"international phonetic association\", the organization behind it.",
        "special-characters-group-symbols": "The section name for symbols\n\n{{Identical|Symbol}}",
        "special-characters-group-greek": "This is the name of a script, or alphabet, not a language.",
+       "special-characters-group-greekextended": "The name of the Greek Extended character set.",
        "special-characters-group-cyrillic": "This is the name of a script, or a group of alphabets, used mainly in Eastern Europe and North and Central Asia.\n{{related|Special-characters-group}}",
        "special-characters-group-arabic": "This is the name of a script, or alphabet, not a language.\n{{related|Special-characters-group}}",
        "special-characters-group-arabicextended": "This is a description of the additional group of Arabic script characters for languages such as a Persian, Urdu, Pashto and others. This message is supposed to be similar to {{msg-mw|special-characters-group-latinextended}}.\n{{related|Special-characters-group}}",
index 414123e..15b3c13 100644 (file)
        "nocookieslogin": "{{SITENAME}} folosește module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. Vă rugăm să le activați și să incercați din nou.",
        "nocookiesfornew": "Contul de utilizator nu a fost creat, deoarece nu am putut confirma sursa.\nAsigurați-vă că aveți cookie-urile activate, reîncărcați pagina și încercați din nou.",
        "noname": "Numele de utilizator pe care l-ați introdus nu este valid.",
-       "loginsuccesstitle": "Autentificare reușită",
+       "loginsuccesstitle": "Autentificat(ă)",
        "loginsuccess": "'''Ați fost autentificat la {{SITENAME}} ca „$1”.'''",
        "nosuchuser": "Nu există nici un utilizator cu numele „$1”.\nNumele de utilizatori sunt sensibile la majuscule.\nVerifică dacă ai scris corect sau [[Special:UserLogin/signup|creează un nou cont de utilizator]].",
        "nosuchusershort": "Nu există niciun utilizator cu numele „$1”.\nVerificați ortografierea.",
index 63008eb..8bcc683 100644 (file)
        "special-characters-group-ipa": "Mednarodna fonetična abeceda (IPA)",
        "special-characters-group-symbols": "Simboli",
        "special-characters-group-greek": "Grški",
+       "special-characters-group-greekextended": "Grščina, razširjeno",
        "special-characters-group-cyrillic": "Cirilica",
        "special-characters-group-arabic": "Arabski",
        "special-characters-group-arabicextended": "Razširjena arabščina",
index a87091f..3d373dd 100644 (file)
        "perfcachedts": "பின்வரும் தரவுகள் இடைமாற்றைக் கொண்டுள்ளன, தரவுகள் கடைசியாக  $1 இல் புதுபிக்கப்பட்டுள்ளன.அதிகபட்சமாக {{PLURAL:$4|ஒரு முடிவு|$4 முடிவுகள்}} இடைமாற்றில் இருக்கலாம்.",
        "querypage-no-updates": "இப்பக்கத்துக்கான இற்றைப்படுத்தல்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன. இங்கே உள்ளத் தரவுகள் தற்சமயம் இற்றைப்படுத்தப்படமாட்டாது.",
        "viewsource": "மூலத்தைப் பார்",
-       "viewsource-title": "$1க்கான மூலத்தைப்  பார்",
+       "viewsource-title": "$1 என்பதற்கான மூலத்தைப் பார்",
        "actionthrottled": "செயற்பாடு கட்டுப்படுத்தப்பட்டது",
        "actionthrottledtext": "எரிதக் காப்பு நடவடிக்கையாகப் பயனொருவர் குறித்த சிறு கால இடைவெளியில் இச்செயற்பாட்டை அதிகளவில் செய்வது தடுக்கப்பட்டுள்ளது. நீர் அவ்வெல்லையைத் தாண்டிவிட்டீர். அருள் கூர்ந்து சில நிமிடங்களில் முயலவும்.",
        "protectedpagetext": "இப்பக்கம் தொகுக்கப்படுவதையோ அல்லது பிற செயல்களைத் தவிர்ப்பதற்காகவோ பூட்டப்பட்டுள்ளது.",
        "sectioneditnotsupported-text": "இப்பக்கத்தில் உட்பிரிவை தொகுக்க தேவையான ஆதரவில்லை.",
        "permissionserrors": "அனுமதி தவறுகள்",
        "permissionserrorstext": "பின்வரும் {{PLURAL:$1|காரணத்துக்காக|காரணங்களுக்காக}} நீங்கள் அதைச் செய்ய முடியாது:",
-       "permissionserrorstext-withaction": "$2-்கு தங்களுக்கு அனுமதி இல்லை. அதற்கான {{PLURAL:$1|காரணம்|காரணங்கள்}}:",
+       "permissionserrorstext-withaction": "$2- இதற்கு தங்களுக்கு அனுமதி இல்லை. அதற்கான {{PLURAL:$1|காரணம்|காரணங்கள்}}:",
        "recreate-moveddeleted-warn": "'''எச்சரிக்கை: தாங்கள் ஏற்கனவே நீக்கப்பட்ட பக்கமொன்றை மீண்டும் தொடங்க விழைகிறீர்கள்.'''\n\nஇப்பக்கத்தைத் தொடர்ந்து தொகுப்பது சரியானதா என்று எண்ணிப்பார்க்கவும்.\n\nதங்களின் வசதிக்காக இப்பக்கத்தின் நீக்கல் மற்றும் நகர்த்தல் குறிப்புகள் கொடுக்கப்பட்டுள்ளது:",
        "moveddeleted-notice": "இது ஒரு நீக்கப்பட்ட பக்கமாகும்.\n\nதங்களின் வசதிக்காக இப்பக்கத்தின் நீக்கல் மற்றும் நகர்த்தல் குறிப்புகள் கொடுக்கப்பட்டுள்ளது.",
        "moveddeleted-notice-recent": "மன்னிக்கவும், இந்தப் பக்கம் அண்மையில் நீக்கப்பட்டுள்ளது (24 மணித்தியாலத்திற்குள்). இப்பக்கத்திற்கான நீக்கல் மற்றும் நகர்த்தல் பதிவு கீழே மேற்கோளுக்காக தரப்பட்டுள்ளது.",
        "postedit-confirmation-saved": "உங்களது தொகுப்பு சேமிக்கப்பட்டது.",
        "edit-already-exists": "புதிய பக்கமொன்றை உருவாக்க முடியாது.\nஇப்பக்கம் ஏற்கனவே உள்ளது.",
        "defaultmessagetext": "இயல்பிருப்பு தகவல் உரை",
-       "content-failed-to-parse": "à®\89ளà¯\8dளà®\9fà®\95à¯\8dà®\95à®®à¯\8d $2 à®µà®\95à¯\88 $1 à®\95்காக பாகுபடுத்தல் தோல்வி: $3",
+       "content-failed-to-parse": "à®\89ளà¯\8dளà®\9fà®\95à¯\8dà®\95à®®à¯\8d $2 à®µà®\95à¯\88 $1 à®\87à®±்காக பாகுபடுத்தல் தோல்வி: $3",
        "invalid-content-data": "செல்லாத உள்ளடக்கத் தரவு",
        "content-not-allowed-here": "\"$1\" உள்ளடக்கம் [[$2]] பக்கத்தில் அனுமதிக்கப்படவில்லை.",
        "editwarning-warning": "இந்த பக்கத்தை விட்டு செல்வது நீங்கள் ஏற்படுத்திய மாற்றங்களை இழக்க வழிவகுக்கும்.\nநீங்கள் புகுபதிந்திருந்தால், இந்த எச்சரிக்கையை உங்கள் விருப்பத்தேர்வில் உள்ள \"{{int:prefs-editing}}\" பகுதி மூலம் நீக்கலாம்.",
        "recentchanges-label-newpage": "இந்தத் தொகுப்பு ஒரு புதிய பக்கத்தை உருவாக்கியுள்ளது",
        "recentchanges-label-minor": "இது ஒரு சிறு தொகுப்பு",
        "recentchanges-label-bot": "இந்த தொகுப்பானது ஒரு தானியங்கியால் செய்யப்பட்டதாகும்",
-       "recentchanges-label-unpatrolled": "à®\87நà¯\8dத  à®¤à¯\8aà®\95à¯\81பà¯\8dபà¯\81  à®\87னà¯\8dனà¯\81à®®à¯\8d à®°à¯\8bநà¯\8dதிà®\9fபà¯\8dபà®\9fவில்லை",
+       "recentchanges-label-unpatrolled": "à®\87தà¯\8dதà¯\8aà®\95à¯\81பà¯\8dபà¯\81 à®\87னà¯\8dனà¯\81à®®à¯\8d à®\9aà¯\81à®±à¯\8dà®±à¯\81à®\95à¯\8dà®\95ாவலà¯\81à®\95à¯\8dà®\95à¯\81 à®\89ளà¯\8dளாà®\95வில்லை",
        "recentchanges-label-plusminus": "இத்தனை பைட்டுகளுக்கு பக்கத்தின் அளவு மாற்றப்பட்டுள்ளது",
        "recentchanges-legend-heading": "<strong>குறியீட்டு விளக்கம்:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|புதிய பக்கங்கள் பட்டியலையும்]] காணவும்)",
        "contributions-title": "$1 இற்கான பயனர் பங்களிப்புகள்",
        "mycontris": "பங்களிப்புக்கள்",
        "anoncontribs": "பங்களிப்புக்கள்",
-       "contribsub2": "{{GENDER:$3|$1}} à®\95்காக ($2)",
+       "contribsub2": "{{GENDER:$3|$1}} à®\87à®±்காக ($2)",
        "contributions-userdoesnotexist": "பயனர் கணக்கு \"$1\" ஆனது பதியப்படவில்லை.",
        "nocontribs": "இந்த நிபந்தனையுடன் ஒத்துப்போகும் வகையில் மாற்றங்களெதுவும் காணப்படவில்லை.",
        "uctop": "(தற்போதைய)",
        "pageinfo-category-subcats": "துணைபகுப்புகளின் எண்ணிக்கை",
        "pageinfo-category-files": "கோப்புகளின் எண்ணிக்கை",
        "markaspatrolleddiff": "ரோந்திட்டதாக குறி",
-       "markaspatrolledtext": "à®\87பà¯\8dபà®\95à¯\8dà®\95தà¯\8dதà¯\88 à®°à¯\8bநà¯\8dதிà®\9fà¯\8dà®\9fதாகக் குறி",
+       "markaspatrolledtext": "à®\87தனà¯\88 à®\9aà¯\81à®±à¯\8dà®±à¯\81à®\95à¯\8dà®\95ாவலà¯\8d à®\9aà¯\86யà¯\8dததாகக் குறி",
        "markaspatrolledtext-file": "இக்கோப்பு பதிப்பினை ரோந்திட்டதாக குறி",
        "markedaspatrolled": "ரோந்திட்டதாக குறிக்கப்பட்டது",
        "markedaspatrolledtext": "தெரிவு செய்யப்பட்டத் திருத்தம் [[:$1]]  பார்வையிட்டதாக குறிக்கப்பட்டுள்ளது.",
index db06b86..fc27968 100644 (file)
@@ -83,7 +83,8 @@
                        "Matma Rex",
                        "HakanIST",
                        "Imabadplayer",
-                       "İnternion"
+                       "İnternion",
+                       "Hbseren"
                ]
        },
        "tog-underline": "Bağlantıların altını çiz:",
        "special-characters-group-ipa": "UFA",
        "special-characters-group-symbols": "Simgeler",
        "special-characters-group-greek": "Yunan",
+       "special-characters-group-greekextended": "Genişletilmiş Yunanca",
        "special-characters-group-cyrillic": "Kiril",
        "special-characters-group-arabic": "Arap",
        "special-characters-group-arabicextended": "Genişletilmiş Arapça",
        "mw-widgets-titleinput-description-redirect": "$1'e yönlendirildi",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "çerez tabanlı oturumlar",
        "sessionprovider-nocookies": "Çerezler devre dışı olabilir. Çerkezlerin aktif olduğuna emin olun ve yeniden başlatin.",
-       "randomrootpage": "Rastgele kök sayfası"
+       "randomrootpage": "Rastgele kök sayfası",
+       "log-action-filter-block": "Blok türü:",
+       "log-action-filter-delete": "Silme türü:",
+       "log-action-filter-patrol": "Devriye türü:",
+       "log-action-filter-protect": "Koruma tipi:",
+       "log-action-filter-upload": "Yükleme türü:",
+       "log-action-filter-all": "Tümü",
+       "log-action-filter-block-block": "Blok",
+       "log-action-filter-block-reblock": "Blok değiştirme",
+       "log-action-filter-block-unblock": "Engeli kaldır",
+       "log-action-filter-delete-delete": "Sayfa silme",
+       "log-action-filter-delete-restore": "Sayfa silmeyi geri al",
+       "log-action-filter-delete-event": "Günlük silme",
+       "log-action-filter-delete-revision": "Gözden geçirmenin silinmesi",
+       "log-action-filter-patrol-patrol": "Manuel devriye",
+       "log-action-filter-patrol-autopatrol": "Otomatik devriye",
+       "log-action-filter-protect-protect": "Koruma",
+       "log-action-filter-protect-modify": "Koruma değişikliği",
+       "log-action-filter-protect-unprotect": "Korunmayan",
+       "log-action-filter-upload-upload": "Yeni yükleme",
+       "log-action-filter-upload-overwrite": "Yeniden yükle"
 }
index c840b1b..6132623 100644 (file)
        "recentchanges-label-bot": "Necen redakcijan tegi bot",
        "recentchanges-label-unpatrolled": "Necidä redakcijad ei völ patruliruinugoi",
        "recentchanges-label-plusminus": "Suruden toižetamine baitoiš",
+       "recentchanges-legend-heading": "<strong>Legend:</strong>",
        "recentchanges-legend-newpage": "$1 - uz' lehtpol'",
        "rcnotefrom": "Alemba oma anttud toižetused '''$2'''-späi ( '''$1'''-hesai).",
        "rclistfrom": "Ozutada uded toižetused dataspäi $3 $2 augotaden",
index 6fb8443..9d244ba 100644 (file)
        "nocookieslogin": "{{SITENAME}} in nagkikinahanglan hin mga kuki para makapagpalog-in hin mga gumaramit.  An im mga kuki in diri nagana.\nAlayon paganaha hira ngan utro liwat.",
        "nocookiesfornew": "An imo akawnt han gumaramit in waray nahimo, kay tungod diri kami nakakakompirma han tinikangan.\nSiguradoha nga an mga cookies in nakaandar, igreload ini nga pakli ngan utroha.",
        "noname": "Waray ka nakahatag hin maupay nga agnay-hit-gumaramit.",
-       "loginsuccesstitle": "Malinamposon an pagsulod",
+       "loginsuccesstitle": "Nakalog-in",
        "loginsuccess": "'''Ikaw in nakalog-in ha {{SITENAME}} komo \"$1\".'''",
        "nosuchuser": "Waray gumaramit an may-ada ngaran nga \"$1\".\nIt mga agnay-hi-gumaramit in case sensitive.\nPanginano-a it imo pagbaybay, o [[Special:UserLogin/signup|paghimo hin bag-o nga akawnt]].",
        "nosuchusershort": "Waray nagamit it may ngaran nga \"$1\".\nKitaa kun amo it im pagbaybay.",
        "newarticle": "(Bag-o)",
        "newarticletext": "Ginsunod mo an pakli nga waray pa kahihimo.  Para ighimo an pakli, tikanga pagmakinilya ha kahon nga aada ha ubos (kitaa an [$1 nabulig nga pakli] para han kadugangan nga pananabutan).  Kun sayop an imo pagkanhi, igpidlit an imo kanan panngaykay (''browser'') '''balik''' (''back'') nga piridlitan.",
        "anontalkpagetext": "----\n''Ini in hiruhimangraw-nga-pakli para han waray magpakilala nga gumaramit, nga waray pa hinmimo hin akawnt.''\nMagamit la kami hin IP address para makilal-an hiya.\nSugad hini nga IP address, in puydi sinmaro hiton pipira nga mga gumaramit.\nKun ikaw in waray magpakilala nga gumaramit, ngan pag-abat mo in may mga diri naangay nga komento an ginpapadangat ha imo, alayon nala [[Special:UserLogin/signup|paghimo hin akawnt]] o [[Special:UserLogin|pag-log in]] para malikyan an sumurunod nga mga pagkalipat nga dapat para ha iba nga waray magpakilala nga mga gumaramit.",
-       "noarticletext": "Waray yana nahasurat hini nga pakli.\nPuyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.",
+       "noarticletext": "Waray yana teksto ha sulod hinin nga pakli.\nPuyde ka [[Special:Search/{{PAGENAME}}|mamiling hin titulo hinin nga pakli]] ha iba pa nga mga pakli,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilnga an may mga pagkahisumpay nga mga talaan],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli]</span>.",
        "noarticletext-nopermission": "Waray yana nahasurat hini nga pakli\nPuyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling han ngaran hini nga pakli]] ha iba nga mga pakli,\no <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mamiling han mga nanginginlabot nga mga talaan]</span>, kundi diri ka gintutugotan hin paghímò hini nga pakli.",
        "missing-revision": "Waray na an rebisyon #$1 han pakli nga ginngaranan nga  \"{{FULLPAGENAME}}\".\n\nIni in agsob tungod han pagsunod hin daan nga sumpay hin kaagi ha pakli nga ginpara.\nAn mga detalye in mabibilngan ha [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
        "userpage-userdoesnotexist": "Diri nakarehistro an akawnt han gumaramit nga \"$1\".\nAlayon pagpamuruotbuot kun karuyag mo maghimo/mag-edit hini nga pakli.",
        "grant-createaccount": "Pahimo hin mga account",
        "grant-createeditmovepage": "Paghimo, pagliwat, ngan pagbalhin hin mga pakli",
        "grant-delete": "Pagpara hin mga pakli, mga rebisyon, ngan mga iginsulod ha log",
+       "grant-sendemail": "Igpadara hin email ngadto ha iba nga mga gumaramit",
+       "grant-uploadeditmovefile": "Pagkarga, pagsaliwan, ngan pagbalhin hin mga file",
+       "grant-uploadfile": "Pagkarga hin bag-o nga mga file",
+       "grant-basic": "Mga panguna nga katungod",
+       "grant-viewdeleted": "Kitaa an mga pinanmara nga file ngan pakli",
+       "grant-viewmywatchlist": "Kitaa an imo mga barantayon",
        "newuserlogpage": "Talaan han paghimo hin gumaramit",
        "newuserlogpagetext": "Ini an talaan han mga nagkahihimo nga mga gumaramit.",
        "rightslog": "Talaan hin mga katungod han gumaramit",
+       "rightslogtext": "Ini an talaan han mga pagbag-o han mga katungod hit gumaramit.",
        "action-read": "basaha ini nga pakli",
        "action-edit": "liwata ini nga pakli",
        "action-createpage": "pahimo hin mga pakli",
        "import-rootpage-nosubpage": "Ngaran-lat'ang nga \"$1\" han gamot-pakli in diri natugot hin mga bahin-pakli.",
        "importlogpage": "Talaan hin pan-aangbit",
        "javascripttest-pagetext-skins": "Pagpili hin panit para ha pag-paandar han:",
-       "tooltip-pt-userpage": "An imo pakli hin gumaramit",
-       "tooltip-pt-mytalk": "An imo pakli hin hiruhimangraw",
-       "tooltip-pt-preferences": "An imo mga karuyag",
+       "tooltip-pt-userpage": "{{GENDER:|An imo gumaramit}} nga pakli",
+       "tooltip-pt-mytalk": "{{GENDER:|An imo}} hiruhimangraw nga pakli",
+       "tooltip-pt-preferences": "{{GENDER:|An imo}} mga karuyag",
        "tooltip-pt-watchlist": "An talaan hin mga pakli nga imo ginsisinubay para hin mga kabag-ohan",
-       "tooltip-pt-mycontris": "Talaan han imo mga ámot",
+       "tooltip-pt-mycontris": "Listahan han {{GENDER:|imo}} mga gin-amot",
        "tooltip-pt-login": "Gin-aaghat ka nga mag log-in, pero diri ini ginpipirit.",
        "tooltip-pt-logout": "gawas",
        "tooltip-pt-createaccount": "Ginaag-hat ka nga maghimo hin account ngan maglog-in; pero diri ini mandatorya",
        "tooltip-t-recentchangeslinked": "Mga bag-o nga kabag-ohan ha mga pakli nga nahasumpay tikang hini nga pakli",
        "tooltip-feed-rss": "RSS nga pangarga para hini nga pakli",
        "tooltip-feed-atom": "Atom nga pangarga para hini nga pakli",
-       "tooltip-t-contributions": "Kitaa an talaan hin mga amot hini nga nágámit",
+       "tooltip-t-contributions": "Kitaa an listahan hin mga amot {{GENDER:$1|hinin nga gumaramit}}",
        "tooltip-t-emailuser": "Padad-i hin e-mail ini nga nágámit",
        "tooltip-t-upload": "Pagkarga hin mga paypay",
        "tooltip-t-specialpages": "Talaan hin mga pinaurog nga pakli",
index cdbb013..8a69603 100644 (file)
        "special-characters-group-khmer": "כמער",
        "special-characters-title-endash": "ען טירע",
        "special-characters-title-emdash": "עם טירע",
-       "special-characters-title-minus": "מינוס"
+       "special-characters-title-minus": "מינוס",
+       "log-action-filter-upload": "טיפ ארויפֿלאד:",
+       "log-action-filter-all": "אַלע",
+       "log-action-filter-delete-delete": "אויסמעקן בלאט",
+       "log-action-filter-protect-unprotect": "אראפנעמען שיץ"
 }
index 7aa6dc8..de1040f 100644 (file)
        "revdelete-uname-unhid": "公开用户名",
        "revdelete-restricted": "应用对管理员的限制",
        "revdelete-unrestricted": "删除对管理员的限制",
-       "logentry-block-block": "$1{{GENDER:$2|å°\81ç¦\81äº\86}}{{GENDER:$4|$3}}ï¼\8cæ\8c\81ç»­æ\97¶é\97´$5 $6",
+       "logentry-block-block": "$1{{GENDER:$2|å°\81ç¦\81äº\86}}{{GENDER:$4|$3}}ï¼\8cæ\9c\9fé\99\90è\87³$5 $6",
        "logentry-block-unblock": "$1{{GENDER:$2|解封了}}{{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1将{{GENDER:$4|$3}}的封禁设置{{GENDER:$2|更改为}}持续时间$5 $6",
        "logentry-suppress-block": "$1{{GENDER:$2|封禁了}}{{GENDER:$4|$3}},持续时间$5 $6",
        "special-characters-group-ipa": "国际音标",
        "special-characters-group-symbols": "符号",
        "special-characters-group-greek": "希腊字母",
+       "special-characters-group-greekextended": "希腊字母扩展",
        "special-characters-group-cyrillic": "西里尔字母",
        "special-characters-group-arabic": "阿拉伯字母",
        "special-characters-group-arabicextended": "扩展阿拉伯字母",
index 181032c..d6dab21 100644 (file)
@@ -59,12 +59,12 @@ $magicWords = [
        'namespace'                 => [ '1', 'NAAMSPASIE', 'NAMESPACE' ],
        'talkspace'                 => [ '1', 'BESPREKINGSBLADSY', 'TALKSPACE' ],
        'fullpagename'              => [ '1', 'VOLBLADSYNAAM', 'FULLPAGENAME' ],
-       'img_thumbnail'             => [ '1', 'duimnael', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'duimnael', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'regs', 'right' ],
        'img_left'                  => [ '1', 'links', 'left' ],
        'img_none'                  => [ '1', 'geen', 'none' ],
        'img_center'                => [ '1', 'senter', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'omraam', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'omraam', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'raamloos', 'frameless' ],
        'img_border'                => [ '1', 'raam', 'border' ],
        'img_top'                   => [ '1', 'bo', 'top' ],
index 33b1107..038566b 100644 (file)
@@ -44,7 +44,7 @@ $magicWords = [
        'namespace'                 => [ '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ],
        'namespacee'                => [ '1', 'ESPACIODENOMBRESE', 'ESPACIODENOMBREC', 'NAMESPACEE' ],
        'img_right'                 => [ '1', 'dreita', 'derecha', 'dcha', 'der', 'right' ],
-       'img_left'                  => [ '1', 'cucha', 'zurda', 'izquierda', 'izda', 'izq', 'left' ],
+       'img_left'                  => [ '1', 'cucha', 'izquierda', 'zurda', 'izda', 'izq', 'left' ],
        'ns'                        => [ '0', 'EN:', 'EDN:', 'NS:' ],
        'displaytitle'              => [ '1', 'TÍTOL', 'MOSTRARTÍTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ],
        'currentversion'            => [ '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'REVISIÓNACTUAL', 'VERSIONACTUAL', 'VERSIÓNACTUAL', 'CURRENTVERSION' ],
index e76e419..a83b717 100644 (file)
@@ -196,14 +196,14 @@ $magicWords = [
        'subst'                     => [ '0', 'نسخ:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'نسخ_آمن:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'رسالة_بدون_تهيئة:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'تصغير', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'تصغير', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'يمين', 'right' ],
        'img_left'                  => [ '1', 'يسار', 'left' ],
        'img_none'                  => [ '1', 'بدون', 'بلا', 'none' ],
        'img_width'                 => [ '1', '$1بك', '$1عن', '$1px' ],
        'img_center'                => [ '1', 'مركز', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'إطار', 'بإطار', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'لاإطار', 'frameless' ],
        'img_lang'                  => [ '1', 'لغة=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ],
index 91dc377..0c1b668 100644 (file)
@@ -108,7 +108,7 @@ $magicWords = [
        'pagenamee'                 => [ '1', 'ܟܘܢܝܐ_ܕܦܐܬܐ', 'PAGENAMEE' ],
        'namespace'                 => [ '1', 'ܚܩܠܐ', 'NAMESPACE' ],
        'msg'                       => [ '0', 'ܐܓܪܬܐ:', 'MSG:' ],
-       'img_thumbnail'             => [ '1', 'ܙܥܘܪܬܐ', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'ܙܥܘܪܬܐ', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'ܙܥܘܪܬܐ=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'ܝܡܝܢܐ', 'right' ],
        'img_left'                  => [ '1', 'ܣܡܠܐ', 'left' ],
index f3377ae..2e69353 100644 (file)
@@ -208,15 +208,15 @@ $magicWords = [
        'subst'                     => [ '0', 'نسخ:', 'إحلال:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'نسخ_آمن:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'رسالة_من_غير_تهيئه:', 'رسالة_بدون_تهيئة:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'تصغير', 'مصغر', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'تصغير', 'مصغر', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'تصغير=$1', 'مصغر=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'يمين', 'right' ],
        'img_left'                  => [ '1', 'يسار', 'left' ],
        'img_none'                  => [ '1', 'بدون', 'بلا', 'none' ],
        'img_width'                 => [ '1', '$1بك', '$1عن', '$1px' ],
        'img_center'                => [ '1', 'مركز', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ],
-       'img_frameless'             => [ '1', 'Ù\85Ù\86_غÙ\8aر_اطار', 'Ù\84اإطار', 'frameless' ],
+       'img_framed'                => [ '1', 'إطار', 'بإطار', 'frame', 'framed', 'enframed' ],
+       'img_frameless'             => [ '1', 'Ù\84اإطار', 'Ù\85Ù\86_غÙ\8aر_اطار', 'frameless' ],
        'img_lang'                  => [ '1', 'لغه=$1', 'لغة=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'صفح=$1', 'صفحه_$1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'معدول', 'معدول=$1', 'معدول_$1', 'upright', 'upright=$1', 'upright $1' ],
index 840d17b..92ca0f8 100644 (file)
@@ -81,6 +81,6 @@ $magicWords = [
        'img_right'                 => [ '1', 'ساغ', 'راست', 'right' ],
        'img_left'                  => [ '1', 'سول', 'چپ', 'left' ],
        'img_none'                  => [ '1', 'هئچ', 'هیچ', 'none' ],
-       'img_framed'                => [ '1', 'قابیق', 'قاب', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'قابیق', 'قاب', 'frame', 'framed', 'enframed' ],
 ];
 
index 475ba9b..0b0d42e 100644 (file)
@@ -67,7 +67,7 @@ $magicWords = [
        'img_left'                  => [ '1', 'wala', 'left' ],
        'img_none'                  => [ '1', 'mayò', 'none' ],
        'img_center'                => [ '1', 'sentro', 'tangâ', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'nakakawadro', 'kwadro', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'nakakawadro', 'kwadro', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'daing kwadro', 'frameless' ],
        'img_page'                  => [ '1', 'pahina=$1', 'pahina $1', 'page=$1', 'page $1' ],
        'localurl'                  => [ '0', 'LOKALURL', 'LOCALURL:' ],
index c306ba4..9822436 100644 (file)
@@ -34,14 +34,14 @@ $namespaceAliases = [
 ];
 
 $magicWords = [
-       'img_thumbnail'             => [ '1', 'міні', 'мініяцюра', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'міні', 'мініяцюра', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'міні=$1', 'мініяцюра=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'справа', 'right' ],
        'img_left'                  => [ '1', 'злева', 'left' ],
        'img_none'                  => [ '1', 'няма', 'none' ],
        'img_width'                 => [ '1', '$1пкс', '$1px' ],
        'img_center'                => [ '1', 'цэнтр', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'безрамкі', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'безрамкі', 'frame', 'framed', 'enframed' ],
 ];
 
 $bookstoreList = [
index d775d25..74b7fe0 100644 (file)
@@ -162,14 +162,14 @@ $magicWords = [
        'msg'                       => [ '0', 'СЪОБЩ:', 'MSG:' ],
        'subst'                     => [ '0', 'ЗАМЕСТ:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'СЪОБЩБУ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'мини', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'мини', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ],
-       'img_right'                 => [ '1', 'вдÑ\8fÑ\81но', 'дясно', 'д', 'right' ],
-       'img_left'                  => [ '1', 'влÑ\8fво', 'ляво', 'л', 'left' ],
+       'img_right'                 => [ '1', 'дÑ\8fÑ\81но', 'вдясно', 'д', 'right' ],
+       'img_left'                  => [ '1', 'лÑ\8fво', 'вляво', 'л', 'left' ],
        'img_none'                  => [ '1', 'н', 'none' ],
        'img_width'                 => [ '1', '$1пкс', '$1п', '$1px' ],
-       'img_center'                => [ '1', 'център', 'центр', 'ц', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'рамка', 'врамка', 'framed', 'enframed', 'frame' ],
+       'img_center'                => [ '1', 'център', 'ц', 'центр', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'рамка', 'врамка', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'безрамка', 'frameless' ],
        'img_border'                => [ '1', 'ръб', 'контур', 'border' ],
        'int'                       => [ '0', 'ВЪТР:', 'INT:' ],
index adeafda..6211da2 100644 (file)
@@ -187,14 +187,14 @@ $magicWords = [
        'msg'                       => [ '0', 'POR:', 'MSG:' ],
        'subst'                     => [ '0', 'ZAMJENI:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'NVPOR:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'desno', 'd', 'right' ],
        'img_left'                  => [ '1', 'lijevo', 'l', 'left' ],
        'img_none'                  => [ '1', 'n', 'bez', 'none' ],
        'img_width'                 => [ '1', '$1piksel', '$1p', '$1px' ],
        'img_center'                => [ '1', 'centar', 'c', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'bez_okvira', 'frameless' ],
        'img_page'                  => [ '1', 'stranica=$1', 'stranica $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'upright', 'upright=$1', 'upright $1' ],
index d83a364..d442f07 100644 (file)
@@ -221,20 +221,20 @@ $magicWords = [
        'msg'                       => [ '0', 'ХААМ:', 'СООБЩЕНИЕ:', 'СООБЩ:', 'MSG:' ],
        'subst'                     => [ '0', 'ХӀОТТОР:', 'ХӀОТТ:', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'ВИКИ_ХААМ_БОЦАШ:', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'жима', 'жимо', 'мини', 'миниаÑ\82Ñ\8eÑ\80а', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'мини', 'жима', 'жимо', 'миниаÑ\82Ñ\8eÑ\80а', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'жима=$1', 'жимо=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
-       'img_right'                 => [ '1', 'бакъхьа', 'справа', 'right' ],
-       'img_left'                  => [ '1', 'Ñ\85аÑ\80Ñ\86Ñ\85Ñ\8cа', 'Ñ\81лева', 'left' ],
+       'img_right'                 => [ '1', 'справа', 'бакъхьа', 'right' ],
+       'img_left'                  => [ '1', 'Ñ\81лева', 'Ñ\85аÑ\80Ñ\86Ñ\85Ñ\8cа', 'left' ],
        'img_none'                  => [ '1', 'йоцуш', 'без', 'none' ],
        'img_width'                 => [ '1', '$1пкс', '$1px' ],
-       'img_center'                => [ '1', 'Ñ\8eккÑ\8a', 'Ñ\86енÑ\82Ñ\80', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'гурабе', 'обрамить', 'framed', 'enframed', 'frame' ],
-       'img_frameless'             => [ '1', 'гÑ\83Ñ\80абоÑ\86аÑ\88', 'безÑ\80амки', 'frameless' ],
+       'img_center'                => [ '1', 'Ñ\86енÑ\82Ñ\80', 'Ñ\8eккÑ\8a', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'гурабе', 'обрамить', 'frame', 'framed', 'enframed' ],
+       'img_frameless'             => [ '1', 'безÑ\80амки', 'гÑ\83Ñ\80абоÑ\86аÑ\88', 'frameless' ],
        'img_page'                  => [ '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'бакъхьалакхо', 'бакъхьалакхо=$1', 'бакъхьалакхо_$1', 'upright_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'доза', 'граница', 'border' ],
        'img_baseline'              => [ '1', 'бух', 'основание', 'baseline' ],
-       'img_sub'                   => [ '1', 'бÑ\83Ñ\85а', 'под', 'sub' ],
+       'img_sub'                   => [ '1', 'под', 'бÑ\83Ñ\85а', 'sub' ],
        'img_super'                 => [ '1', 'тӀе', 'над', 'super', 'sup' ],
        'img_top'                   => [ '1', 'лакхахь', 'сверху', 'top' ],
        'img_text_top'              => [ '1', 'лакххьара-йоза', 'текст-сверху', 'text-top' ],
index a010c2c..ad45b66 100644 (file)
@@ -109,12 +109,12 @@ $specialPageAliases = [
 ];
 
 $magicWords = [
-       'img_thumbnail'             => [ '1', 'وێنۆک', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'وێنۆک', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'ڕاست', 'right' ],
        'img_left'                  => [ '1', 'چەپ', 'left' ],
        'img_width'                 => [ '1', '$1پیکسڵ', '$1px' ],
        'img_center'                => [ '1', 'ناوەڕاست', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'چوارچێوە', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'چوارچێوە', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'بێچوارچێوە', 'frameless' ],
        'img_border'                => [ '1', 'سنوور', 'border' ],
 ];
index 3cd652b..548b78c 100644 (file)
@@ -72,12 +72,12 @@ $specialPageAliases = [
        'Filepath'                  => [ 'Cesta_k_souboru' ],
        'Import'                    => [ 'Importovat_stránky' ],
        'Invalidateemail'           => [ 'Zneplatnit_e-mail', 'Zrušit_potvrzení_e-mailu' ],
-       'BlockList'                 => [ 'Blokovaní_uživatelé', 'Blokovani_uzivatele' ],
+       'BlockList'                 => [ 'Blokovaní_uživatelé', 'Blokovani_uzivatele', 'Zablokovaní_uživatelé' ],
        'LinkSearch'                => [ 'Hledání_odkazů', 'Hledani_odkazu' ],
        'Listadmins'                => [ 'Seznam_správců', 'Seznam_spravcu' ],
        'Listbots'                  => [ 'Seznam_botů', 'Seznam_botu' ],
        'Listfiles'                 => [ 'Seznam_souborů', 'Seznam_souboru' ],
-       'Listgrouprights'           => [ 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ],
+       'Listgrouprights'           => [ 'Práva_uživatelských_skupin', 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ],
        'Listredirects'             => [ 'Seznam_přesměrování', 'Seznam_presmerovani' ],
        'Listusers'                 => [ 'Uživatelé', 'Uzivatele', 'Seznam_uživatelů', 'Seznam_uzivatelu' ],
        'Lockdb'                    => [ 'Zamknout_databázi', 'Zamknout_databazi' ],
@@ -92,7 +92,7 @@ $specialPageAliases = [
        'Mostlinkedcategories'      => [ 'Nejpoužívanější_kategorie', 'Nejpouzivanejsi_kategorie' ],
        'Mostlinkedtemplates'       => [ 'Nejpoužívanější_šablony', 'Nejpouzivanejsi_sablony' ],
        'Mostrevisions'             => [ 'Stránky_s_nejvíce_editacemi', 'Stranky_s_nejvice_editacemi', 'Stránky_s_nejvyšším_počtem_editací' ],
-       'Movepage'                  => [ 'Přesunout_stránku' ],
+       'Movepage'                  => [ 'Přesunout_stránku', 'Přejmenovat_stránku' ],
        'Mycontributions'           => [ 'Mé_příspěvky', 'Me_prispevky' ],
        'Mypage'                    => [ 'Moje_stránka', 'Moje_stranka' ],
        'Mytalk'                    => [ 'Moje_diskuse' ],
@@ -191,14 +191,14 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'NÁZEVČLÁNKUE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'subst'                     => [ '0', 'VLOŽIT:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'VLOŽITNW:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'náhled', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'náhled', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'náhled=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'vpravo', 'right' ],
        'img_left'                  => [ '1', 'vlevo', 'left' ],
        'img_none'                  => [ '1', 'žádné', 'none' ],
        'img_width'                 => [ '1', '$1pixelů', '$1px' ],
        'img_center'                => [ '1', 'střed', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'rám', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'rám', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'bezrámu', 'frameless' ],
        'img_lang'                  => [ '1', 'jazyk=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
index 8306461..a569f16 100644 (file)
@@ -53,7 +53,7 @@ $magicWords = [
        'subpagenamee'              => [ '1', 'ENWISDUDALENE', 'SUBPAGENAMEE' ],
        'talkpagename'              => [ '1', 'ENWTUDALENSGWRS', 'TALKPAGENAME' ],
        'talkpagenamee'             => [ '1', 'ENWTUDALENSGWRSE', 'TALKPAGENAMEE' ],
-       'img_thumbnail'             => [ '1', 'ewin_bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'bawd', 'ewin_bawd', 'mân-lun', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'mân-lun=$1', 'bawd=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'de', 'right' ],
        'img_left'                  => [ '1', 'chwith', 'left' ],
index 0a53ff5..5fc359e 100644 (file)
@@ -208,21 +208,21 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'HAUPTSEITENNAME_URL', 'VORDERSEITE_URL', 'HAUPTSEITE_URL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'subst'                     => [ '0', 'ERS:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'SICHER_ERS:', 'SICHERERS:', 'SAFESUBST:' ],
-       'img_thumbnail'             => [ '1', 'mini', 'miniatur', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatur', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatur=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'rechts', 'right' ],
        'img_left'                  => [ '1', 'links', 'left' ],
        'img_none'                  => [ '1', 'ohne', 'none' ],
        'img_center'                => [ '1', 'zentriert', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'gerahmt', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'gerahmt', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'rahmenlos', 'frameless' ],
        'img_lang'                  => [ '1', 'sprache=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'rand', 'border' ],
        'img_baseline'              => [ '1', 'grundlinie', 'baseline' ],
-       'img_sub'                   => [ '1', 'tiefgestellt', 'tief', 'sub' ],
-       'img_super'                 => [ '1', 'hochgestellt', 'hoch', 'super', 'sup' ],
+       'img_sub'                   => [ '1', 'tief', 'tiefgestellt', 'sub' ],
+       'img_super'                 => [ '1', 'hoch', 'hochgestellt', 'super', 'sup' ],
        'img_top'                   => [ '1', 'oben', 'top' ],
        'img_text_top'              => [ '1', 'text-oben', 'text-top' ],
        'img_middle'                => [ '1', 'mitte', 'middle' ],
index 03cf459..c81fd34 100644 (file)
@@ -224,14 +224,14 @@ $magicWords = [
        'subst'                     => [ '0', 'KOPYAKE', 'ATEBERDE', 'SUBST:' ],
        'safesubst'                 => [ '0', 'EMELEYATEBERDE', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'MSCNW:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'resmoqıckek', 'qıckek', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'resmoqıckek', 'qıckek', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'resmoqıckek=$1', 'qıckek=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'raşt', 'right' ],
        'img_left'                  => [ '1', 'çep', 'left' ],
        'img_none'                  => [ '1', 'çıniyo', 'none' ],
        'img_width'                 => [ '1', '$1pik', '$1piksel', '$1px' ],
        'img_center'                => [ '1', 'werte', 'miyan', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'çerçeweyın', 'çerçewekerden', 'çerçewe', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'çerçeweyın', 'çerçewekerden', 'çerçewe', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'béçerçewe', 'frameless' ],
        'img_lang'                  => [ '1', 'zuwan=1$', 'lang=$1' ],
        'img_page'                  => [ '1', 'pera=$1', 'pera_$1', 'page=$1', 'page $1' ],
@@ -239,7 +239,7 @@ $magicWords = [
        'img_border'                => [ '1', 'sinor', 'border' ],
        'img_baseline'              => [ '1', 'Sinoréerdi', 'baseline' ],
        'img_sub'                   => [ '1', 'anvar', 'sub' ],
-       'img_super'                 => [ '1', 'corén', 'cor', 'super', 'sup' ],
+       'img_super'                 => [ '1', 'cor', 'corén', 'super', 'sup' ],
        'img_top'                   => [ '1', 'gedug', 'top' ],
        'img_text_top'              => [ '1', 'gedug-metin', 'text-top' ],
        'img_middle'                => [ '1', 'merkez', 'middle' ],
index 763f9fa..dd7cd68 100644 (file)
@@ -215,14 +215,14 @@ $magicWords = [
        'msg'                       => [ '0', 'ΚΕΙΜΕΝΟ:', 'MSG:' ],
        'subst'                     => [ '0', 'ΑΛΛΑΓΗ:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'ΑΠΛΟΚΕΙΜΕΝΟ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'μικρογραφία', 'μινιατούρα', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'μικρογραφία', 'μινιατούρα', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'μικρογραφία=$1', 'μινιατούρα=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'δεξιά', 'right' ],
        'img_left'                  => [ '1', 'αριστερά', 'left' ],
        'img_none'                  => [ '1', 'καθόλου', 'none' ],
        'img_width'                 => [ '1', '$1εσ', '$1px' ],
        'img_center'                => [ '1', 'κέντρο', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'με-πλαίσιο', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'με-πλαίσιο', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'χωρίς-πλαίσιο', 'frameless' ],
        'img_page'                  => [ '1', 'σελίδα=$1', 'σελίδα_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'κατακόρυφα', 'κατακόρυφα=$1', 'κατακόρυφα_$1', 'upright', 'upright=$1', 'upright $1' ],
index d6ed235..23f2bb0 100644 (file)
@@ -197,9 +197,11 @@ $bookstoreList = [
  * IDs must be valid identifiers, they cannot contain hyphens.
  * CASE is 0 to match all case variants, 1 for case-sensitive
  *
- * Note to translators:
- *   Please include the English words as synonyms.  This allows people
- *   from other wikis to contribute more easily.
+ * Note to localisers:
+ *   - Include the English magic words as synonyms. This allows people from other
+ *     that do no speak the language to contribute more easily.
+ *   - Order the aliases so that common aliases are occur before more rarely
+ *     used aliases. Tools are expected to use the first alias.
  *
  * This array can be modified at runtime with the LanguageGetMagic hook
  */
@@ -265,14 +267,14 @@ $magicWords = [
        'subst'                   => [ 0, 'SUBST:' ],
        'safesubst'               => [ 0, 'SAFESUBST:' ],
        'msgnw'                   => [ 0, 'MSGNW:' ],
-       'img_thumbnail'           => [ 1, 'thumbnail', 'thumb' ],
+       'img_thumbnail'           => [ 1, 'thumb', 'thumbnail' ],
        'img_manualthumb'         => [ 1, 'thumbnail=$1', 'thumb=$1' ],
        'img_right'               => [ 1, 'right' ],
        'img_left'                => [ 1, 'left' ],
        'img_none'                => [ 1, 'none' ],
        'img_width'               => [ 1, '$1px' ],
        'img_center'              => [ 1, 'center', 'centre' ],
-       'img_framed'              => [ 1, 'framed', 'enframed', 'frame' ],
+       'img_framed'              => [ 1, 'frame', 'framed', 'enframed' ],
        'img_frameless'           => [ 1, 'frameless' ],
        'img_lang'                => [ 1, 'lang=$1' ],
        'img_page'                => [ 1, 'page=$1', 'page $1' ],
index 45ea18b..9c6b7be 100644 (file)
@@ -202,14 +202,14 @@ $magicWords = [
        'subst'                     => [ '0', 'ANSTAT:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'SEKURANSTAT:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'NVMSĜ:', 'NVMSGX:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'eta', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'eta', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'eta=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'dekstra', 'dekstre', 'right' ],
        'img_left'                  => [ '1', 'maldekstra', 'maldekstre', 'left' ],
-       'img_none'                  => [ '1', 'nenio', 'neniu', 'none' ],
+       'img_none'                  => [ '1', 'neniu', 'nenio', 'none' ],
        'img_width'                 => [ '1', '$1ra', '$1px' ],
        'img_center'                => [ '1', 'centra', 'meza', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'kadro', 'enkadrita', 'enkadrite', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'kadro', 'enkadrita', 'enkadrite', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'senkadra', 'frameless' ],
        'img_page'                  => [ '1', 'paĝo=$1', 'paĝo $1', 'pagxo=$1', 'pagxo_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'altdekstre', 'altdekstre=$1', 'altdekstre_$1', 'upright', 'upright=$1', 'upright $1' ],
index a9f1d08..3b7c4bc 100644 (file)
@@ -201,13 +201,13 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'NOMBREDEPAGINADETEMAC', 'NOMBREDEPÁGINADETEMAC', 'NOMBREDEPÁGINADEASUNTOC', 'NOMBREDEPAGINADEASUNTOC', 'NOMBREDEPAGINADEARTICULOC', 'NOMBREDEPÁGINADEARTÍCULOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'msg'                       => [ '0', 'MSJ:', 'MSG:' ],
        'subst'                     => [ '0', 'SUST:', 'FIJAR:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'miniaturadeimagen', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniaturadeimagen', 'miniatura', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
-       'img_right'                 => [ '1', 'derecha', 'dcha', 'der', 'right' ],
+       'img_right'                 => [ '1', 'derecha', 'der', 'dcha', 'right' ],
        'img_left'                  => [ '1', 'izquierda', 'izda', 'izq', 'left' ],
-       'img_none'                  => [ '1', 'ninguna', 'nada', 'no', 'ninguno', 'none' ],
+       'img_none'                  => [ '1', 'no', 'ninguna', 'ninguno', 'nada', 'none' ],
        'img_center'                => [ '1', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'marco', 'enmarcado', 'enmarcada', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'sinmarco', 'sin_enmarcar', 'sinenmarcar', 'frameless' ],
        'img_lang'                  => [ '1', 'idioma=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ],
index 681d2ff..8a53d9e 100644 (file)
@@ -204,13 +204,13 @@ $magicWords = [
        'talkpagename'              => [ '1', 'ARUTELUNIMI', 'TALKPAGENAME' ],
        'talkpagenamee'             => [ '1', 'ARUTELUNIMI1', 'TALKPAGENAMEE' ],
        'subst'                     => [ '0', 'ASENDA:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'pisi', 'pisipilt', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'pisi', 'pisipilt', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'pisi=$1', 'pisipilt=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'paremal', 'right' ],
        'img_left'                  => [ '1', 'vasakul', 'left' ],
        'img_none'                  => [ '1', 'tühi', 'none' ],
        'img_center'                => [ '1', 'keskel', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'raam', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'raam', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'raamita', 'frameless' ],
        'img_lang'                  => [ '1', 'keel=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'lehekülg=$1', 'lehekülg_$1', 'page=$1', 'page $1' ],
index 564445b..eee9793 100644 (file)
@@ -211,14 +211,14 @@ $magicWords = [
        'subst'                     => [ '0', 'جایگزین:', 'جا:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'جایگزین_امن:', 'جام:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'پیغام‌بی‌بسط:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'بندانگشتی', 'انگشتدان', 'انگشتی', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'بندانگشتی', 'انگشتی', 'انگشتدان', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'بندانگشتی=$1', 'انگشتدان=$1', 'انگشتی=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'راست', 'right' ],
        'img_left'                  => [ '1', 'چپ', 'left' ],
        'img_none'                  => [ '1', 'هیچ', 'none' ],
        'img_width'                 => [ '1', '$1پیکسل', '$1px' ],
        'img_center'                => [ '1', 'وسط', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'قاب', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'قاب', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'بی‌قاب', 'بیقاب', 'بی_قاب', 'frameless' ],
        'img_lang'                  => [ '1', 'زبان=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'صفحه=$1', 'صفحه_$1', 'page=$1', 'page $1' ],
index 3013ea6..0d1abbd 100644 (file)
@@ -190,13 +190,13 @@ $magicWords = [
        'subjectpagename'           => [ '1', 'AIHESIVUNIMI', 'ARTIKKELISIVUNIMI', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
        'subjectpagenamee'          => [ '1', 'AIHESIVUNIMIE', 'ARTIKKELISIVUNIMIE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'subst'                     => [ '0', 'VASTINE:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'pienoiskuva', 'pienois', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'pienoiskuva', 'pienois', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'pienoiskuva=$1', 'pienois=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'oikea', 'right' ],
        'img_left'                  => [ '1', 'vasen', 'left' ],
        'img_none'                  => [ '1', 'tyhjä', 'none' ],
-       'img_center'                => [ '1', 'keskitetty', 'keski', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'kehys', 'kehystetty', 'framed', 'enframed', 'frame' ],
+       'img_center'                => [ '1', 'keski', 'keskitetty', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'kehys', 'kehystetty', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'kehyksetön', 'frameless' ],
        'img_page'                  => [ '1', 'sivu=$1', 'sivu_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'yläoikea', 'yläoikea=$1', 'yläoikea_$1', 'upright', 'upright=$1', 'upright $1' ],
index d69149c..9bb02da 100644 (file)
@@ -196,18 +196,18 @@ $magicWords = [
        'talkpagenamee'             => [ '1', 'NOMPAGEDISCUSSIONX', 'TALKPAGENAMEE' ],
        'subjectpagename'           => [ '1', 'NOMPAGESUJET', 'NOMPAGEARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
        'subjectpagenamee'          => [ '1', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
-       'img_thumbnail'             => [ '1', 'vignette', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'vignette', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'droite', 'right' ],
        'img_left'                  => [ '1', 'gauche', 'left' ],
        'img_none'                  => [ '1', 'néant', 'neant', 'none' ],
        'img_center'                => [ '1', 'centré', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'cadre', 'encadré', 'encadre', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ],
        'img_lang'                  => [ '1', 'langue=$1', 'lang=$1' ],
        'img_upright'               => [ '1', 'redresse', 'redresse=$1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'bordure', 'border' ],
-       'img_baseline'              => [ '1', 'ligne-de-base', 'base', 'baseline' ],
+       'img_baseline'              => [ '1', 'base', 'ligne-de-base', 'baseline' ],
        'img_sub'                   => [ '1', 'indice', 'ind', 'sub' ],
        'img_super'                 => [ '1', 'exposant', 'exp', 'super', 'sup' ],
        'img_top'                   => [ '1', 'haut', 'top' ],
index dd6d1c8..106ba5e 100644 (file)
@@ -196,13 +196,13 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'NOM_DE_LA_PÂGE_DU_SUJÈT_URL', 'NOM_DE_LA_PÂGE_DE_L_ARTICLLO_URL', 'NOMPAGESUJETX', 'NOMPAGEARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'msg'                       => [ '0', 'MSJ:', 'MSG:' ],
        'msgnw'                     => [ '0', 'MSJNV:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'figura', 'vignette', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'figura', 'vignette', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'figura=$1', 'vignette=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'drêta', 'droite', 'right' ],
        'img_left'                  => [ '1', 'gôche', 'gauche', 'left' ],
        'img_none'                  => [ '1', 'vouedo', 'néant', 'neant', 'none' ],
        'img_center'                => [ '1', 'centrâ', 'centré', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'encâdrâ', 'câdro', 'cadre', 'encadré', 'encadre', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'sen_câdro', 'pas_encâdrâ', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ],
        'img_page'                  => [ '1', 'pâge=$1', 'pâge $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'drêt', 'drêt=$1', 'drêt $1', 'redresse', 'redresse=$1', 'redresse $1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ],
index 7c00dc7..a508790 100644 (file)
@@ -30,12 +30,12 @@ $magicWords = [
        'msg'                       => [ '0', 'TCHT:', 'MSG:' ],
        'subst'                     => [ '0', 'IONAD:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'TCHTFS:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'mionsamhail', 'mion', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mion', 'mionsamhail', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'deas', 'right' ],
        'img_left'                  => [ '1', 'clé', 'left' ],
        'img_none'                  => [ '1', 'faic', 'none' ],
        'img_center'                => [ '1', 'lár', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'fráma', 'frámaithe', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'fráma', 'frámaithe', 'frame', 'framed', 'enframed' ],
        'int'                       => [ '0', 'INMH:', 'INT:' ],
        'sitename'                  => [ '1', 'AINMANTSUÍMH', 'SITENAME' ],
        'ns'                        => [ '0', 'AS:', 'NS:' ],
index 092226c..8f1d4a7 100644 (file)
@@ -200,17 +200,17 @@ $magicWords = [
        'basepagename'              => [ '1', 'NOMEDAPÁXINABASE', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ],
        'talkpagename'              => [ '1', 'NOMEDAPÁXINADECONVERSA', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ],
        'subjectpagename'           => [ '1', 'NOMEDAPÁXINADECONTIDO', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
-       'img_thumbnail'             => [ '1', 'miniatura', 'miniaturadaimaxe', 'miniaturadaimagem', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatura', 'miniaturadaimagem', 'miniaturadaimaxe', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatura=$1', 'miniaturadaimaxe=$1', 'miniaturadaimagem=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'dereita', 'direita', 'right' ],
        'img_left'                  => [ '1', 'esquerda', 'left' ],
        'img_none'                  => [ '1', 'ningún', 'nenhum', 'none' ],
        'img_center'                => [ '1', 'centro', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'conmarco', 'conbordo', 'marco', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'conmarco', 'marco', 'conbordo', 'commoldura', 'comborda', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'senmarco', 'senbordo', 'semmoldura', 'semborda', 'frameless' ],
        'img_page'                  => [ '1', 'páxina=$1', 'páxina_$1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'arribaádereita', 'arribaádereita=$1', 'arribaádereita_$1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ],
-       'img_border'                => [ '1', 'bordo', 'borda', 'border' ],
+       'img_border'                => [ '1', 'borda', 'bordo', 'border' ],
        'img_baseline'              => [ '1', 'liñadebase', 'linhadebase', 'baseline' ],
        'img_top'                   => [ '1', 'arriba', 'acima', 'top' ],
        'img_text_top'              => [ '1', 'texto-arriba', 'text-top' ],
index 217e5cb..9e03942 100644 (file)
@@ -211,18 +211,18 @@ $magicWords = [
        'subst'                     => [ '0', 'ס:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'ס בטוח:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'הכללת מקור', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'ממוזער', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'ממוזער', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'ימין', 'right' ],
        'img_left'                  => [ '1', 'שמאל', 'left' ],
        'img_none'                  => [ '1', 'ללא', 'none' ],
        'img_width'                 => [ '1', '$1 פיקסלים', '$1px' ],
        'img_center'                => [ '1', 'מרכז', 'center', 'centre' ],
-       'img_framed'                => [ '1', '×\9e×\9e×\95ס×\92ר', '×\9eס×\92רת', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', '×\9eס×\92רת', '×\9e×\9e×\95ס×\92ר', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'לא ממוסגר', 'ללא מסגרת', 'frameless' ],
        'img_page'                  => [ '1', 'דף=$1', 'דף $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'ימין למעלה', 'ימין למעלה=$1', 'ימין למעלה $1', 'upright', 'upright=$1', 'upright $1' ],
-       'img_border'                => [ '1', 'גבולות', 'גבול', 'border' ],
+       'img_border'                => [ '1', 'גבול', 'גבולות', 'border' ],
        'img_baseline'              => [ '1', 'שורת הבסיס', 'baseline' ],
        'img_sub'                   => [ '1', 'תחתי', 'sub' ],
        'img_super'                 => [ '1', 'עילי', 'super', 'sup' ],
index 30902e3..3f3b007 100644 (file)
@@ -179,19 +179,19 @@ $magicWords = [
        'subst'                     => [ '0', 'प्रति:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'सुरक्षित_प्रति:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'सन्देश_नोविकी:', 'संदेश_नोविकी:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'अंगूठाकार', 'अंगूठा', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'अंगूठाकार', 'अंगूठा', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'अंगूठाकार=$1', 'अंगूठा=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'दाएँ', 'दायें', 'दाएं', 'right' ],
-       'img_left'                  => [ '1', 'बाà¤\8fà¤\81', 'बायà¥\87à¤\82', 'बाà¤\8fं', 'left' ],
+       'img_left'                  => [ '1', 'बाà¤\8fà¤\81', 'बाà¤\8fà¤\82', 'बायà¥\87ं', 'left' ],
        'img_none'                  => [ '1', 'कोई_नहीं', 'none' ],
        'img_width'                 => [ '1', '$1पिक्सेल', '$1px' ],
-       'img_center'                => [ '1', 'à¤\95à¥\87नà¥\8dदà¥\8dर', 'à¤\95à¥\87à¤\82द्र', 'केन्द्रित', 'केंद्रित', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'फ़à¥\8dरà¥\87म', 'फà¥\8dरà¥\87म', 'framed', 'enframed', 'frame' ],
+       'img_center'                => [ '1', 'à¤\95à¥\87à¤\82दà¥\8dर', 'à¤\95à¥\87नà¥\8dद्र', 'केन्द्रित', 'केंद्रित', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'फà¥\8dरà¥\87म', 'फ़à¥\8dरà¥\87म', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'फ़्रेमहीन', 'फ्रेमहीन', 'frameless' ],
        'img_lang'                  => [ '1', 'भाषा=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'पृष्ठ=$1', 'पृष्ठ_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'खड़ी', 'खड़ी=$1', 'खड़ी_$1', 'upright', 'upright=$1', 'upright $1' ],
-       'img_border'                => [ '1', 'à¤\95िनारा', 'बà¥\89रà¥\8dडर', 'border' ],
+       'img_border'                => [ '1', 'बà¥\89रà¥\8dडर', 'à¤\95िनारा', 'border' ],
        'img_baseline'              => [ '1', 'आधार_रेखा', 'baseline' ],
        'img_sub'                   => [ '1', 'पद', 'sub' ],
        'img_super'                 => [ '1', 'मूर्ध', 'super', 'sup' ],
index ee06560..97cac52 100644 (file)
@@ -181,20 +181,20 @@ $magicWords = [
        'subjectpagename'           => [ '1', 'IMEGLAVNESTRANICE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
        'subjectpagenamee'          => [ '1', 'IMEGLAVNESTRANICEE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'subst'                     => [ '0', 'ZAMJENA:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'minijatura=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'desno', 'right' ],
        'img_left'                  => [ '1', 'lijevo', 'left' ],
        'img_none'                  => [ '1', 'ništa', 'none' ],
        'img_center'                => [ '1', 'središte', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'okvir', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'okvir', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'bezokvira', 'frameless' ],
        'img_lang'                  => [ '1', 'jezik=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'stranica=$1', 'stranica $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'uspravno=$1', 'uspravno $1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'obrub', 'border' ],
        'img_baseline'              => [ '1', 'osnovnacrta', 'baseline' ],
-       'img_sub'                   => [ '1', 'potpis', 'ind', 'sub' ],
+       'img_sub'                   => [ '1', 'ind', 'potpis', 'sub' ],
        'img_super'                 => [ '1', 'natpis', 'eks', 'super', 'sup' ],
        'img_top'                   => [ '1', 'vrh', 'top' ],
        'img_text_top'              => [ '1', 'tekst-vrh', 'text-top' ],
index 93a7f5a..6ba075a 100644 (file)
@@ -207,13 +207,13 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'SZÓCIKKNEVEE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'msg'                       => [ '0', 'ÜZENET:', 'ÜZ:', 'MSG:' ],
        'subst'                     => [ '0', 'BEILLESZT:', 'BEMÁSOL:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'bélyegkép', 'bélyeg', 'miniatűr', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'bélyegkép', 'bélyeg', 'miniatűr', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'bélyegkép=$1', 'bélyeg=$1', 'miniatűr=$1', 'thumbnail=$1', 'thumb=$1' ],
-       'img_right'                 => [ '1', 'jobb', 'jobbra', 'right' ],
-       'img_left'                  => [ '1', 'bal', 'balra', 'left' ],
+       'img_right'                 => [ '1', 'jobbra', 'jobb', 'right' ],
+       'img_left'                  => [ '1', 'balra', 'bal', 'left' ],
        'img_none'                  => [ '1', 'semmi', 'none' ],
-       'img_center'                => [ '1', 'közép', 'középre', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'keretezett', 'keretes', 'keretben', 'kerettel', 'framed', 'enframed', 'frame' ],
+       'img_center'                => [ '1', 'középre', 'közép', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'keretezett', 'keretben', 'keretes', 'kerettel', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'keretnélküli', 'frameless' ],
        'img_page'                  => [ '1', 'oldal=$1', 'oldal $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'fennjobbra', 'fennjobbra=$1', 'fennjobbra $1', 'upright', 'upright=$1', 'upright $1' ],
@@ -224,7 +224,7 @@ $magicWords = [
        'img_top'                   => [ '1', 'fenn', 'fent', 'top' ],
        'img_text_top'              => [ '1', 'szöveg-fenn', 'szöveg-fent', 'text-top' ],
        'img_middle'                => [ '1', 'vközépen', 'vközépre', 'middle' ],
-       'img_bottom'                => [ '1', 'lenn', 'lent', 'bottom' ],
+       'img_bottom'                => [ '1', 'lent', 'lenn', 'bottom' ],
        'img_text_bottom'           => [ '1', 'szöveg-lenn', 'szöveg-lent', 'text-bottom' ],
        'sitename'                  => [ '1', 'WIKINEVE', 'SITENAME' ],
        'ns'                        => [ '0', 'NÉVTÉR:', 'NS:' ],
index 28c3a4d..ab1d198 100644 (file)
@@ -130,14 +130,14 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'ՀՈԴՎԱԾԻ_ԷՋԻ_ԱՆՎԱՆՈՒՄԸ_2', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'msg'                       => [ '0', 'ՀՈՂՈՐԴ՝', 'MSG:' ],
        'msgnw'                     => [ '0', 'ՀՈՂՈՐԴ_ԱՌԱՆՑ_ՎԻՔԻԻ՝', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'մինի', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'մինի', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'մինի=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'աջից', 'right' ],
        'img_left'                  => [ '1', 'ձախից', 'left' ],
        'img_none'                  => [ '1', 'առանց', 'none' ],
        'img_width'                 => [ '1', '$1փքս', '$1px' ],
        'img_center'                => [ '1', 'կենտրոն', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'շրջափակել', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'շրջափակել', 'frame', 'framed', 'enframed' ],
        'img_page'                  => [ '1', 'էջը=$1', 'էջ $1', 'page=$1', 'page $1' ],
        'int'                       => [ '0', 'ՆԵՐՔ՝', 'INT:' ],
        'sitename'                  => [ '1', 'ԿԱՅՔԻ_ԱՆՈՒՆԸ', 'SITENAME' ],
index bf1d4d9..5fee306 100644 (file)
@@ -105,13 +105,13 @@ $magicWords = [
        'msg'                       => [ '0', 'PSN:', 'PESAN:', 'MSG:' ],
        'subst'                     => [ '0', 'GNT:', 'GANTI:', 'TUKAR:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'TPL:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'jmpl=$1', 'jempol=$1', 'mini=$1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'ka', 'kanan', 'right' ],
-       'img_left'                  => [ '1', 'ki', 'kiri', 'left' ],
+       'img_left'                  => [ '1', 'kiri', 'ki', 'left' ],
        'img_none'                  => [ '1', 'nir', 'tanpa', 'none' ],
        'img_center'                => [ '1', 'pus', 'pusat', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'bing', 'bingkai', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'bingkai', 'bing', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'nirbing', 'tanpabingkai', 'frameless' ],
        'img_lang'                  => [ '1', 'bhs=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'hal=$1', 'halaman=$1', 'hal_$1', 'halaman_$1', 'page=$1', 'page $1' ],
index 19cb171..8714c72 100644 (file)
@@ -188,13 +188,13 @@ $magicWords = [
        'subpagename'               => [ '1', 'NOMESOTTOPAGINA', 'SUBPAGENAME' ],
        'subpagenamee'              => [ '1', 'NOMESOTTOPAGINAE', 'SUBPAGENAMEE' ],
        'subst'                     => [ '0', 'SOST:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'miniatura', 'min', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatura', 'min', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatura=$1', 'min=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'destra', 'right' ],
        'img_left'                  => [ '1', 'sinistra', 'left' ],
        'img_none'                  => [ '1', 'nessuno', 'none' ],
        'img_center'                => [ '1', 'centro', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'riquadrato', 'incorniciato', 'originale', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'riquadrato', 'originale', 'incorniciato', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'senza_cornice', 'frameless' ],
        'img_page'                  => [ '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'verticale', 'verticale=$1', 'verticale_$1', 'upright', 'upright=$1', 'upright $1' ],
index ef20b15..b905345 100644 (file)
@@ -229,19 +229,19 @@ $magicWords = [
        'subst'                     => [ '0', '展開:', '展開:', 'SUBST:' ],
        'safesubst'                 => [ '0', '安全展開:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'ウィキ無効メッセージ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'サムネイル', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'サムネイル', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', '代替画像=$1', 'サムネイル=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', '右', 'right' ],
        'img_left'                  => [ '1', '左', 'left' ],
        'img_none'                  => [ '1', 'なし', '無し', 'none' ],
        'img_width'                 => [ '1', '$1ピクセル', '$1px' ],
        'img_center'                => [ '1', '中央', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'フレーム', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'フレーム', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'フレームなし', 'frameless' ],
        'img_page'                  => [ '1', 'ページ=$1', 'ページ $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', '右上', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', '境界', 'ボーダー', 'border' ],
-       'img_baseline'              => [ '1', '下線', 'ベースライン', 'baseline' ],
+       'img_baseline'              => [ '1', 'ベースライン', '下線', 'baseline' ],
        'img_sub'                   => [ '1', '下付き', 'sub' ],
        'img_super'                 => [ '1', '上付き', 'super', 'sup' ],
        'img_top'                   => [ '1', '上端', 'top' ],
index 00b98dc..7c55460 100644 (file)
@@ -126,7 +126,7 @@ $magicWords = [
        'namespace'                 => [ '1', 'სახელთა_სივრცე', 'NAMESPACE' ],
        'fullpagename'              => [ '1', 'გვერდის_სრული_სახელი', 'FULLPAGENAME' ],
        'subst'                     => [ '0', 'მიდგმ:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'მინიატიურა', 'მინი', 'მინიასლი', 'ცეროდენა', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'მინი', 'მინიატიურა', 'მინიასლი', 'ცეროდენა', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'მინიატიურა=$1', 'მინი=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'მარჯვნივ', 'right' ],
        'img_left'                  => [ '1', 'მარცხნივ', 'left' ],
index 6ae2e88..e970b17 100644 (file)
@@ -215,14 +215,14 @@ $magicWords = [
        'talkpagename'              => [ '1', 'ឈ្មោះទំព័រពិភាក្សា', 'TALKPAGENAME' ],
        'msg'                       => [ '0', 'សារ:', 'MSG:' ],
        'msgnw'                     => [ '0', 'សារមិនមែនជាកូដវិគី:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'រូបភាពតូច', 'រូបតូច', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'រូបភាពតូច', 'រូបតូច', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'រូបភាពតូច=$1', 'រូបតូច=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'ស្តាំ', 'ខាងស្តាំ', 'right' ],
        'img_left'                  => [ '1', 'ធ្វេង', 'ខាងធ្វេង', 'left' ],
        'img_none'                  => [ '1', 'ទទេ', 'គ្មាន', 'none' ],
        'img_width'                 => [ '1', '$1ភីកសែល', '$1ភស', '$1px' ],
        'img_center'                => [ '1', 'កណ្តាល', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'ស៊ុម', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'ស៊ុម', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'គ្មានស៊ុម', 'frameless' ],
        'img_page'                  => [ '1', 'ទំព័រ=$1', 'ទំព័រ$1', 'page=$1', 'page $1' ],
        'img_top'                   => [ '1', 'ផ្នែកលើ', 'ផ្នែកខាងលើ', 'top' ],
index 09acaad..4a3c15e 100644 (file)
@@ -245,14 +245,14 @@ $magicWords = [
        'subst'                     => [ '0', '풀기:', 'SUBST:' ],
        'safesubst'                 => [ '0', '안전풀기:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', '위키잘못메시지:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', '섬네일', '썸네일', '축소판', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', '섬네일', '썸네일', '축소판', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', '섬네일=$1', '썸네일=$1', '축소판=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', '오른쪽', 'right' ],
        'img_left'                  => [ '1', '왼쪽', 'left' ],
        'img_none'                  => [ '1', '없음', 'none' ],
        'img_width'                 => [ '1', '$1픽셀', '$1px' ],
        'img_center'                => [ '1', '가운데', 'center', 'centre' ],
-       'img_framed'                => [ '1', '프레임', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', '프레임', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', '프레임없음', 'frameless' ],
        'img_lang'                  => [ '1', '언어=$1', 'lang=$1' ],
        'img_page'                  => [ '1', '문서=$1', 'page=$1', 'page $1' ],
index f3aea35..b13578e 100644 (file)
@@ -202,7 +202,7 @@ $magicWords = [
        'nogallery'                 => [ '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__KEINEGALERIE__', '__NOGALLERY__' ],
        'toc'                       => [ '0', '__ENHALLT__', '__INHALTSVERZEICHNIS__', '__TOC__' ],
        'img_right'                 => [ '1', 'rähß', 'räts', 'rechts', 'right' ],
-       'img_left'                  => [ '1', 'lengks', 'lenks', 'links', 'left' ],
+       'img_left'                  => [ '1', 'links', 'lengks', 'lenks', 'left' ],
        'language'                  => [ '0', '#SHPROOCH:', '#SPROCH:', '#SPRACHE:', '#LANGUAGE:' ],
        'hiddencat'                 => [ '1', '__VERSHTOCHE_SAACHJRUPP__', '__VERSTECKTE_KATEGORIE__', '__WARTUNGSKATEGORIE__', '__HIDDENCAT__' ],
 ];
index 45b9bb4..5a0a02b 100644 (file)
@@ -166,13 +166,13 @@ $magicWords = [
        'numberofedits'             => [ '1', 'NIVERAJANJYOW', 'NUMBEROFEDITS' ],
        'pagename'                  => [ '1', 'HANOWANFOLEN', 'PAGENAME' ],
        'fullpagename'              => [ '1', 'HANOWLEUNANFOLEN', 'FULLPAGENAME' ],
-       'img_thumbnail'             => [ '1', 'skeusennik', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'skeusennik', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'skeusennik=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'dyhow', 'right' ],
        'img_left'                  => [ '1', 'kledh', 'left' ],
        'img_none'                  => [ '1', 'nagonan', 'none' ],
        'img_center'                => [ '1', 'kresel', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'fremys', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'fremys', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'hebfram', 'frameless' ],
        'img_page'                  => [ '1', 'folen=$1', 'folen_$1', 'page=$1', 'page $1' ],
        'img_top'                   => [ '1', 'gwartha', 'top' ],
index 77a5b43..2f52faf 100644 (file)
@@ -169,15 +169,15 @@ $magicWords = [
        'namespace'                 => [ '1', 'Nummraum', 'NAMENSRAUM', 'NAMESPACE' ],
        'subjectspace'              => [ '1', 'Haaptnummraum', 'HAUPTNAMENSRAUM', 'SUBJECTSPACE', 'ARTICLESPACE' ],
        'subjectpagename'           => [ '1', 'Haaptsäit', 'HAUPTSEITE', 'HAUPTSEITENNAME', 'VORDERSEITE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
-       'img_thumbnail'             => [ '1', 'Miniatur', 'miniatur', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatur', 'Miniatur', 'mini', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'riets', 'rechts', 'right' ],
        'img_left'                  => [ '1', 'lénks', 'links', 'left' ],
-       'img_none'                  => [ '1', 'ouni', 'ohne', 'none' ],
+       'img_none'                  => [ '1', 'ohne', 'ouni', 'none' ],
        'img_center'                => [ '1', 'zentréiert', 'zentriert', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'gerummt', 'gerahmt', 'framed', 'enframed', 'frame' ],
-       'img_frameless'             => [ '1', 'net_gerummt', 'rahmenlos', 'frameless' ],
+       'img_framed'                => [ '1', 'gerummt', 'gerahmt', 'frame', 'framed', 'enframed' ],
+       'img_frameless'             => [ '1', 'rahmenlos', 'net_gerummt', 'frameless' ],
        'img_page'                  => [ '1', 'Säit=$1', 'Säit_$1', 'seite=$1', 'seite $1', 'page=$1', 'page $1' ],
-       'img_border'                => [ '1', 'bord', 'rand', 'border' ],
+       'img_border'                => [ '1', 'rand', 'bord', 'border' ],
        'img_top'                   => [ '1', 'uewen', 'oben', 'top' ],
        'img_middle'                => [ '1', 'mëtt', 'mitte', 'middle' ],
        'img_bottom'                => [ '1', 'ënnen', 'unten', 'bottom' ],
index 289bd90..a8e6c77 100644 (file)
@@ -164,7 +164,7 @@ $magicWords = [
        'numberoffiles'             => [ '1', 'FAILŲSKAIČIUS', 'NUMBEROFFILES' ],
        'numberofusers'             => [ '1', 'NAUDOTOJŲSKAIČIUS', 'NUMBEROFUSERS' ],
        'numberofedits'             => [ '1', 'KEITIMŲSKAIČIUS', 'NUMBEROFEDITS' ],
-       'img_thumbnail'             => [ '1', 'miniatiūra', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatiūra', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatiūra=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'dešinėje', 'right' ],
        'img_left'                  => [ '1', 'kairėje', 'left' ],
index 48720ad..653be83 100644 (file)
@@ -67,7 +67,7 @@ $magicWords = [
        'img_right'                 => [ '1', 'ankavanana', 'droite', 'right' ],
        'img_left'                  => [ '1', 'ankavia', 'gauche', 'left' ],
        'img_none'                  => [ '1', 'tsymisy', 'néant', 'neant', 'none' ],
-       'img_center'                => [ '1', 'ampivoany', 'anivony', 'centré', 'center', 'centre' ],
+       'img_center'                => [ '1', 'centré', 'ampivoany', 'anivony', 'center', 'centre' ],
        'img_page'                  => [ '1', 'pejy $1', 'page=$1', 'page $1' ],
        'img_border'                => [ '1', 'sisiny', 'bordure', 'border' ],
        'img_top'                   => [ '1', 'ambony', 'haut', 'top' ],
index 2d6e83a..99ab0e5 100644 (file)
@@ -81,7 +81,7 @@ $specialPageAliases = [
 ];
 
 $magicWords = [
-       'img_right'                 => [ '1', 'пурла', 'справа', 'right' ],
+       'img_right'                 => [ '1', 'справа', 'пурла', 'right' ],
        'img_left'                  => [ '1', 'шола', 'слева', 'left' ],
        'img_border'                => [ '1', 'чек', 'граница', 'border' ],
        'img_sub'                   => [ '1', 'йымалне', 'под', 'sub' ],
index cc76c61..c15b040 100644 (file)
@@ -252,14 +252,14 @@ $magicWords = [
        'subst'                     => [ '0', 'ЗАМЕНИ:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'БЕЗБЗАМЕНИ', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'ИЗВЕШТNW:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'мини', 'мини-слика', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'мини', 'мини-слика', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'мини-слика=$1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'десно', 'д', 'right' ],
        'img_left'                  => [ '1', 'лево', 'л', 'left' ],
        'img_none'                  => [ '1', 'н', 'нема', 'none' ],
        'img_width'                 => [ '1', '$1пкс', '$1п', '$1px' ],
        'img_center'                => [ '1', 'центар', 'ц', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'рамка', 'ворамка', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'рамка', 'ворамка', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'безрамка', 'frameless' ],
        'img_lang'                  => [ '1', 'јаз=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'страница=$1', 'страница_$1', 'page=$1', 'page $1' ],
index 0f2c189..2c9542b 100644 (file)
@@ -253,14 +253,14 @@ $magicWords = [
        'subst'                     => [ '0', 'ബദൽ:', 'ഉൾപ്പെടുത്തൽ:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'സംരക്ഷിതബദൽ:', 'സംരക്ഷിതയുൾപ്പെടുത്തൽ:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'മൂലരൂപം:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'ലഘുചിത്രം', 'ലഘു', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'ലഘുചിത്രം', 'ലഘു', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'ലഘുചിത്രം=$1', 'ലഘു=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'വലത്ത്‌', 'വലത്‌', 'right' ],
        'img_left'                  => [ '1', 'ഇടത്ത്‌', 'ഇടത്‌', 'left' ],
        'img_none'                  => [ '1', 'ശൂന്യം', 'none' ],
        'img_width'                 => [ '1', '$1ബിന്ദു', '$1px' ],
        'img_center'                => [ '1', 'നടുവിൽ', 'നടുക്ക്‌', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'ചട്ടരഹിതം', 'frameless' ],
        'img_lang'                  => [ '1', 'ഭാഷ=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'താൾ=$1', 'താൾ_$1', 'page=$1', 'page $1' ],
index 0ea16f9..61fc613 100644 (file)
@@ -223,14 +223,14 @@ $magicWords = [
        'msg'                       => [ '0', 'संदेश:', 'निरोप:', 'MSG:' ],
        'subst'                     => [ '0', 'पर्याय:', 'समाविष्टी:', 'अबाह्य:', 'निरकंसबिंब:', 'कंसत्याग:', 'साचाहिन:', 'साचान्तर:', 'साचापरिस्फोट:', 'साचोद्घाटन:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'संदेशनवा:', 'निरोपनवा:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'इवलेसे', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'इवलेसे', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'इवलेसे=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'उजवे', 'right' ],
        'img_left'                  => [ '1', 'डावे', 'left' ],
        'img_none'                  => [ '1', 'कोणतेचनाही', 'नन्ना', 'none' ],
        'img_width'                 => [ '1', '$1अंश', '$1कणी', '$1पक्ष', '$1px' ],
        'img_center'                => [ '1', 'मध्यवर्ती', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'चौकट', 'फ़्रेम', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'चौकट', 'फ़्रेम', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'विनाचौकट', 'विनाफ़्रेम', 'frameless' ],
        'img_page'                  => [ '1', 'पान=$1', 'पान_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'उभा', 'उभा=$1', 'उभा_$1', 'upright', 'upright=$1', 'upright $1' ],
index 50ea43b..aad38b7 100644 (file)
@@ -192,13 +192,13 @@ $magicWords = [
        'msg'                       => [ '0', 'MSĠ:', 'MSG:' ],
        'subst'                     => [ '0', 'BIDDEL:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'MSĠEW:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'daqsminuri', 'minuri', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'daqsminuri', 'minuri', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'daqsminuri=$1', 'minuri=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'lemin', 'right' ],
        'img_left'                  => [ '1', 'xellug', 'left' ],
        'img_none'                  => [ '1', 'xejn', 'none' ],
        'img_center'                => [ '1', 'nofs', 'ċentrali', 'ċentru', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'tilat', 'b\'tilar', 'tilar', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'tilat', 'b\'tilar', 'tilar', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'bla_tilar', 'frameless' ],
        'img_page'                  => [ '1', 'paġna=$1', 'paġna $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'wieqaf', 'wieqaf=$1', 'wieqaf $1', 'upright', 'upright=$1', 'upright $1' ],
index 53033c3..20057d5 100644 (file)
@@ -144,12 +144,12 @@ $magicWords = [
        'fullpagename'              => [ '1', 'ЛОПАЛЕМКУВАКАСТО', 'ПОЛНОЕ_НАЗВАНИЕ_СТРАНИЦЫ', 'FULLPAGENAME' ],
        'talkpagename'              => [ '1', 'КОРТАМОЛОПАЛЕМ', 'НАЗВАНИЕ_СТРАНИЦЫ_ОБСУЖДЕНИЯ', 'TALKPAGENAME' ],
        'msg'                       => [ '0', 'ПАЧТЯМНЭ:', 'СООБЩЕНИЕ:', 'СООБЩ:', 'MSG:' ],
-       'img_thumbnail'             => [ '1', 'кенжешка', 'мини', 'миниатюра', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'кенжешка', 'мини', 'миниатюра', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'вить_кедь', 'справа', 'right' ],
        'img_left'                  => [ '1', 'керш_кедь', 'слева', 'left' ],
        'img_none'                  => [ '1', 'вейкеяк_арась', 'без', 'none' ],
        'img_center'                => [ '1', 'куншкасо', 'центр', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'кундсо', 'обрамить', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'кундсо', 'обрамить', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'кундовтомо', 'безрамки', 'frameless' ],
        'img_page'                  => [ '1', 'лопа=$1', 'лопа_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ],
        'img_top'                   => [ '1', 'верькс', 'сверху', 'top' ],
index 8a18f2f..b04066c 100644 (file)
@@ -72,12 +72,12 @@ $magicWords = [
        'pagename'                  => [ '1', 'SIETNAAM', 'SEITENNAME', 'PAGENAME' ],
        'pagenamee'                 => [ '1', 'SIETNAAME', 'SEITENNAME_URL', 'PAGENAMEE' ],
        'namespace'                 => [ '1', 'NAAMRUUM', 'NAMENSRAUM', 'NAMESPACE' ],
-       'img_thumbnail'             => [ '1', 'duum', 'miniatur', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'duum', 'miniatur', 'mini', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'rechts', 'right' ],
        'img_left'                  => [ '1', 'links', 'left' ],
        'img_none'                  => [ '1', 'keen', 'ohne', 'none' ],
-       'img_center'                => [ '1', 'merrn', 'zentriert', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'rahmt', 'gerahmt', 'framed', 'enframed', 'frame' ],
+       'img_center'                => [ '1', 'zentriert', 'merrn', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'gerahmt', 'rahmt', 'frame', 'framed', 'enframed' ],
        'sitename'                  => [ '1', 'STEEDNAAM', 'PROJEKTNAME', 'SITENAME' ],
        'ns'                        => [ '0', 'NR:', 'NS:' ],
        'localurl'                  => [ '0', 'STEEDURL:', 'LOKALE_URL:', 'LOCALURL:' ],
index 9ebb79f..dde2e04 100644 (file)
@@ -171,13 +171,13 @@ $magicWords = [
        'subst'                     => [ '0', 'VERV:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'VEILIGVERV:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'BERICHTNW', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'miniatuur', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatuur', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatuur=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'rechts', 'right' ],
        'img_left'                  => [ '1', 'links', 'left' ],
        'img_none'                  => [ '1', 'geen', 'none' ],
        'img_center'                => [ '1', 'gecentreerd', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'omkaderd', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'omkaderd', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'kaderloos', 'frameless' ],
        'img_lang'                  => [ '1', 'taal=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ],
index 49987ad..b8ae8d7 100644 (file)
@@ -132,14 +132,14 @@ $magicWords = [
        'subst'                     => [ '0', 'LIMINN:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'TRYGGLIMINN:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'IKWIKMELD:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'mini', 'miniatyr', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mini', 'miniatyr', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'mini=$1', 'miniatyr=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'høgre', 'høyre', 'right' ],
        'img_left'                  => [ '1', 'venstre', 'left' ],
        'img_none'                  => [ '1', 'ingen', 'none' ],
        'img_width'                 => [ '1', '$1pk', '$1px' ],
        'img_center'                => [ '1', 'sentrum', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'ramme', 'ramma', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'ramme', 'ramma', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'rammelaus', 'frameless' ],
        'img_lang'                  => [ '1', 'språk=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'side=$1', 'side_$1', 'page=$1', 'page $1' ],
index 47f6b0a..6c7512b 100644 (file)
@@ -194,13 +194,13 @@ $magicWords = [
        'talkpagenamee'             => [ '1', 'NOMPAGINADISCUSSIONX', 'TALKPAGENAMEE' ],
        'subjectpagename'           => [ '1', 'NOMPAGINASUBJECTE', 'NOMPAGINASUBJÈCTE', 'NOMPAGINAARTICLE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
        'subjectpagenamee'          => [ '1', 'NOMPAGINASUBJECTEX', 'NOMPAGINASUBJÈCTEX', 'NOMPAGINAARTICLEX', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
-       'img_thumbnail'             => [ '1', 'vinheta', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'vinheta', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'vinheta=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'drecha', 'dreta', 'right' ],
        'img_left'                  => [ '1', 'esquèrra', 'senèstra', 'gaucha', 'left' ],
        'img_none'                  => [ '1', 'neant', 'nonrés', 'none' ],
        'img_center'                => [ '1', 'centrat', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'quadre', 'enquagrat', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'quadre', 'enquagrat', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'sens_quadre', 'frameless' ],
        'img_upright'               => [ '1', 'redreça', 'redreça$1', 'redreça $1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'bordadura', 'border' ],
index e84c4f6..4f500a7 100644 (file)
@@ -216,7 +216,7 @@ $magicWords = [
        'img_none'                  => [ '1', 'କିଛି_ନୁହେଁ', 'none' ],
        'img_width'                 => [ '1', '$1_ପିକସେଲ', '$1px' ],
        'img_center'                => [ '1', 'କେନ୍ଦ୍ର', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'ଫ୍ରେମକରା', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'ଫ୍ରେମକରା', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'ଫ୍ରେମନଥିବା', 'frameless' ],
        'img_border'                => [ '1', 'ବର୍ଡର', 'border' ],
        'img_baseline'              => [ '1', 'ବେସଲାଇନ', 'baseline' ],
index 26b3832..5ba4ff5 100644 (file)
@@ -169,7 +169,7 @@ $magicWords = [
        'numberofpages'             => [ '1', 'ФÆРСТЫНЫМÆЦ', 'КОЛИЧЕСТВО_СТРАНИЦ', 'NUMBEROFPAGES' ],
        'numberofarticles'          => [ '1', 'УАЦТЫНЫМÆЦ', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ],
        'pagename'                  => [ '1', 'ФАРСЫНОМ', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ],
-       'img_thumbnail'             => [ '1', 'кÑ\8aаддæÑ\80гонд', 'кÑ\8aаддæÑ\80', 'мини', 'миниаÑ\82Ñ\8eÑ\80а', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'мини', 'кÑ\8aаддæÑ\80гонд', 'кÑ\8aаддæÑ\80', 'миниаÑ\82Ñ\8eÑ\80а', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'къаддæргонд=$1', 'къаддæр=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'рахиз', 'справа', 'right' ],
        'img_left'                  => [ '1', 'галиу', 'слева', 'left' ],
index 9c7264d..cfe0345 100644 (file)
@@ -266,13 +266,13 @@ $magicWords = [
        'basepagename'              => [ '1', 'BAZOWANAZWASTRONY', 'BASEPAGENAME' ],
        'talkpagename'              => [ '1', 'NAZWASTRONYDYSKUSJI', 'TALKPAGENAME' ],
        'subst'                     => [ '0', 'podst:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'mały', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mały', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'mały=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'prawo', 'right' ],
        'img_left'                  => [ '1', 'lewo', 'left' ],
        'img_none'                  => [ '1', 'brak', 'none' ],
        'img_center'                => [ '1', 'centruj', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'ramka', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'ramka', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'bezramki', 'bez_ramki', 'frameless' ],
        'img_page'                  => [ '1', 'strona=$1', 'page=$1', 'page $1' ],
        'img_border'                => [ '1', 'tło', 'border' ],
index 4254b74..18c115b 100644 (file)
@@ -133,7 +133,7 @@ $magicWords = [
        'fullpagename'              => [ '1', 'دمخ_بشپړنوم', 'FULLPAGENAME' ],
        'fullpagenamee'             => [ '1', 'دمخ_بشپړنوم_نښه', 'FULLPAGENAMEE' ],
        'msg'                       => [ '0', 'پیغام:', 'پ:', 'MSG:' ],
-       'img_thumbnail'             => [ '1', 'بټنوک', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'بټنوک', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'ښي', 'right' ],
        'img_left'                  => [ '1', 'کيڼ', 'left' ],
        'img_none'                  => [ '1', 'هېڅ', 'none' ],
index dd6216e..5c3c191 100644 (file)
@@ -269,13 +269,13 @@ $magicWords = [
        'talkpagenamee'             => [ '1', 'NOMEDAPAGINADEDISCUSSAOC', 'NOMEDAPÁGINADEDISCUSSÃOC', 'TALKPAGENAMEE' ],
        'subjectpagename'           => [ '1', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
        'subjectpagenamee'          => [ '1', 'NOMEDAPAGINADECONTEUDOC', 'NOMEDAPÁGINADECONTEÚDOC', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
-       'img_thumbnail'             => [ '1', 'miniaturadaimagem', 'miniatura', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniaturadaimagem', 'miniatura', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniaturadaimagem=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'direita', 'right' ],
        'img_left'                  => [ '1', 'esquerda', 'left' ],
        'img_none'                  => [ '1', 'nenhum', 'none' ],
        'img_center'                => [ '1', 'centro', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'commoldura', 'comborda', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'semmoldura', 'semborda', 'frameless' ],
        'img_page'                  => [ '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ],
index 8339ad2..eb1c8d9 100644 (file)
@@ -197,13 +197,13 @@ $magicWords = [
        'msg'                       => [ '0', 'WILLA:', 'MSJ:', 'MSG:' ],
        'subst'                     => [ '0', 'WAKCHAY:', 'SUST:', 'FIJAR:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'WILLAMUSUQ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'rikchacha', 'miniaturadeimagen', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'rikchacha', 'miniaturadeimagen', 'mini', 'miniatura', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'rikchacha=$1', 'miniaturadeimagen=$1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'paña', 'alliq', 'derecha', 'dcha', 'der', 'right' ],
        'img_left'                  => [ '1', 'lluqi', 'ichuq', 'izquierda', 'izda', 'izq', 'left' ],
        'img_none'                  => [ '1', 'manaima', 'mana', 'ninguna', 'nada', 'no', 'ninguno', 'none' ],
        'img_center'                => [ '1', 'chawpi', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'inchunnaq', 'sinmarco', 'sin_embarcar', 'sinenmarcar', 'sin_enmarcar', 'frameless' ],
        'img_page'                  => [ '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'sayaq', 'sayaq=$1', 'upright', 'upright=$1', 'upright $1' ],
index 8c04de8..7304dbf 100644 (file)
@@ -36,7 +36,7 @@ $namespaceNames = [
 
 $magicWords = [
        'redirect'                  => [ '0', '#RENVIAMENT', '#REDIRECT' ],
-       'img_thumbnail'             => [ '1', 'miniatura', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatura', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_upright'               => [ '1', 'sidretg', 'sidretg=$1', 'sidretg_$1', 'upright', 'upright=$1', 'upright $1' ],
 ];
index b1860f9..8b92171 100644 (file)
@@ -86,13 +86,13 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'NUMEEPAGINASUBIECT', 'NUMEEPAGINAARTICOL', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'msg'                       => [ '0', 'MSJ:', 'MSG:' ],
        'msgnw'                     => [ '0', 'MSJNOU:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'miniatura', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatura', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'dreapta', 'right' ],
        'img_left'                  => [ '1', 'stanga', 'left' ],
        'img_none'                  => [ '1', 'nu', 'none' ],
        'img_center'                => [ '1', 'centru', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'cadru', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'cadru', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'faracadru', 'frameless' ],
        'img_page'                  => [ '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'dreaptasus', 'dreaptasus=$1', 'dreaptasus $1', 'upright', 'upright=$1', 'upright $1' ],
index c273654..e1af8f3 100644 (file)
@@ -291,14 +291,14 @@ $magicWords = [
        'subst'                     => [ '0', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'ЗАЩПОДСТ:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'мини', 'миниатюра', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'мини', 'миниатюра', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'справа', 'right' ],
        'img_left'                  => [ '1', 'слева', 'left' ],
        'img_none'                  => [ '1', 'без', 'none' ],
        'img_width'                 => [ '1', '$1пкс', '$1px' ],
        'img_center'                => [ '1', 'центр', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'обрамить', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'обрамить', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'безрамки', 'frameless' ],
        'img_page'                  => [ '1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ],
index 21b5e63..4a369bd 100644 (file)
@@ -223,14 +223,14 @@ $magicWords = [
        'subjectpagename'           => [ '1', 'विषयपृष्ठनाम', 'लेखपृष्ठनाम', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ],
        'msg'                       => [ '0', 'सन्देश:', 'MSG:' ],
        'msgnw'                     => [ '0', 'नूतनसन्देश:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'लà¤\98à¥\81तà¥\8dतम', 'सà¤\99à¥\8dà¤\95à¥\81à¤\9aितà¤\9aितà¥\8dर', 'à¤\85à¤\99à¥\8dà¤\97à¥\81षà¥\8dठ', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'लà¤\98à¥\81तà¥\8dतम', 'à¤\85à¤\99à¥\8dà¤\97à¥\81षà¥\8dठ', 'सà¤\99à¥\8dà¤\95à¥\81à¤\9aितà¤\9aितà¥\8dर', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'सङ्कुचितचित्र=$1', 'अङ्गुष्ठ=$1', 'लघुत्तमचित्र=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'दक्षिणत', 'right' ],
        'img_left'                  => [ '1', 'वामतः', 'left' ],
        'img_none'                  => [ '1', 'नैव', 'none' ],
        'img_width'                 => [ '1', '$1पिट', '$1px' ],
        'img_center'                => [ '1', 'मध्य', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'आबन्ध', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'आबन्ध', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'निराबन्ध', 'frameless' ],
        'img_page'                  => [ '1', 'पृष्ठ=$1', 'पृष्ठ $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'उन्नत', 'उन्नत=$1', 'उन्नत $1', 'upright', 'upright=$1', 'upright $1' ],
index 0208991..e04b004 100644 (file)
@@ -126,7 +126,7 @@ $magicWords = [
        'numberofactiveusers'       => [ '1', 'AKTIIVAGEAVAHEDDJIIDMEARRI', ' AKTIIVAGEAVAHEADDJIMEARRI', ' AKTIIVAGEAVAHEADDJEMEARRI', 'NUMBEROFACTIVEUSERS' ],
        'numberofedits'             => [ '1', 'RIEVDADUSAIDMEARRI', ' RIEVDADUSMEARRI', 'NUMBEROFEDITS' ],
        'subst'                     => [ '0', 'LIIBME:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'olgeš', 'right' ],
        'img_left'                  => [ '1', 'gurut', 'left' ],
index 3a821e2..fb79237 100644 (file)
@@ -158,14 +158,14 @@ $magicWords = [
        'msg'                       => [ '0', 'POR:', 'MSG:' ],
        'subst'                     => [ '0', 'ZAMJENI:', 'ZAMENI:', 'ZAMJENA:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'NVPOR:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'mini', 'minijatura', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'minijatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'desno', 'right' ],
        'img_left'                  => [ '1', 'lijevo', 'levo', 'left' ],
-       'img_none'                  => [ '1', 'n', 'bez', 'ništa', 'none' ],
-       'img_center'                => [ '1', 'centar', 'središte', 'c', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ],
-       'img_frameless'             => [ '1', 'bez_okvira', 'bezokvira', 'frameless' ],
+       'img_none'                  => [ '1', 'n', 'ništa', 'bez', 'none' ],
+       'img_center'                => [ '1', 'centar', 'c', 'središte', 'center', 'centre' ],
+       'img_framed'                => [ '1', 'okvir', 'ram', 'frame', 'framed', 'enframed' ],
+       'img_frameless'             => [ '1', 'bezokvira', 'bez_okvira', 'frameless' ],
        'img_page'                  => [ '1', 'stranica=$1', 'stranica_$1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'uspravno', 'uspravno=$1', 'uspravno_$1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'granica', 'obrub', 'border' ],
index d1ac72f..299fd13 100644 (file)
@@ -220,13 +220,13 @@ $magicWords = [
        'subjectpagenamee'          => [ '1', 'NÁZOVČLÁNKUE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ],
        'msg'                       => [ '0', 'SPRÁVA:', 'MSG:' ],
        'subst'                     => [ '0', 'NAHR:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'náhľad', 'náhľadobrázka', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'náhľad', 'náhľadobrázka', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'vpravo', 'right' ],
        'img_left'                  => [ '1', 'vľavo', 'left' ],
        'img_none'                  => [ '1', 'žiadny', 'none' ],
        'img_width'                 => [ '1', '$1bod', '$1px' ],
        'img_center'                => [ '1', 'stred', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'rám', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'rám', 'frame', 'framed', 'enframed' ],
        'img_border'                => [ '1', 'okraj', 'border' ],
        'sitename'                  => [ '1', 'NÁZOVLOKALITY', 'SITENAME' ],
        'ns'                        => [ '0', 'MP:', 'NS:' ],
index c434309..7599bc2 100644 (file)
@@ -119,14 +119,14 @@ $magicWords = [
        'forcetoc'                  => [ '0', '__VSILIKAZALOVSEBINE__', '__FORCETOC__' ],
        'toc'                       => [ '0', '__POGLAVJE__', '__TOC__' ],
        'noeditsection'             => [ '0', '__BREZUREJANJARAZDELKOV__', '__NOEDITSECTION__' ],
-       'img_thumbnail'             => [ '1', 'sličica', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'sličica', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'sličica=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'desno', 'right' ],
        'img_left'                  => [ '1', 'levo', 'left' ],
        'img_none'                  => [ '1', 'brez', 'none' ],
        'img_width'                 => [ '1', '$1_pik', '$1px' ],
        'img_center'                => [ '1', 'sredina', 'sredinsko', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'okvir', 'okvirjeno', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'okvir', 'okvirjeno', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'brezokvirja', 'frameless' ],
        'img_page'                  => [ '1', 'stran=$1', 'm_stran $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'zgorajdesno', 'zgorajdesno=$1', 'zgorajdesno $1', 'upright', 'upright=$1', 'upright $1' ],
index 20e3978..a0d88d4 100644 (file)
@@ -166,13 +166,13 @@ $magicWords = [
        'talkpagename'              => [ '1', 'EMRIIFAQESSËDISKUTIMIT', 'TALKPAGENAME' ],
        'talkpagenamee'             => [ '1', 'EMRIIFAQESSËDISKUTIMITE', 'TALKPAGENAMEE' ],
        'subst'                     => [ '0', 'ZËVN', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'parapamje', 'pamje', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'parapamje', 'pamje', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'parapamje=$1', 'pamje=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'djathtas', 'right' ],
        'img_left'                  => [ '1', 'majtas', 'left' ],
        'img_none'                  => [ '1', 's\'ka', 'none' ],
        'img_center'                => [ '1', 'qendër', 'qendrore', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'i_kornizuar', 'pa_kornizë', 'kornizë', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'i_kornizuar', 'pa_kornizë', 'kornizë', 'frame', 'framed', 'enframed' ],
        'img_page'                  => [ '1', 'faqja=$1', 'faqja $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'lartdjathtas', 'lartdjathtas=$1', 'lartdjathtas $1', 'upright', 'upright=$1', 'upright $1' ],
        'img_border'                => [ '1', 'kufi', 'border' ],
index 0815c71..8819be6 100644 (file)
@@ -249,13 +249,13 @@ $magicWords = [
        'msg'                       => [ '0', 'MED:', 'MSG:' ],
        'subst'                     => [ '0', 'BYT:', 'SUBST:' ],
        'msgnw'                     => [ '0', 'MEDNW:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'miniatyr', 'mini', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'miniatyr', 'mini', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'miniatyr=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'höger', 'right' ],
        'img_left'                  => [ '1', 'vänster', 'left' ],
        'img_none'                  => [ '1', 'ingen', 'none' ],
        'img_center'                => [ '1', 'centrerad', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'inramad', 'ram', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'ram', 'inramad', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'ramlös', 'frameless' ],
        'img_page'                  => [ '1', 'sida=$1', 'sida $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'stående', 'stående=$1', 'stående $1', 'upright', 'upright=$1', 'upright $1' ],
index 747f1e8..9e07263 100644 (file)
@@ -252,14 +252,14 @@ $magicWords = [
        'subst'                     => [ '0', 'YK:', 'YERİNEKOY:', 'KOPYALA:', 'AKTAR:', 'YAPIŞTIR:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'GÜVENLİYERİNEKOY:', 'GÜVENLİKOPYALA:', 'GÜVENLİAKTAR:', 'GÜVENLİYAPIŞTIR:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'MSJYN:', 'İLTYN:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'küçükresim', 'küçük', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'küçükresim', 'küçük', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'küçükresim=$1', 'küçük=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'sağ', 'right' ],
        'img_left'                  => [ '1', 'sol', 'left' ],
        'img_none'                  => [ '1', 'yok', 'none' ],
        'img_width'                 => [ '1', '$1pik', '$1piksel', '$1px' ],
        'img_center'                => [ '1', 'orta', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'çerçeveli', 'çerçeve', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'çerçeveli', 'çerçeve', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'çerçevesiz', 'frameless' ],
        'img_page'                  => [ '1', 'sayfa=$1', 'sayfa $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'dikey', 'dikey=$1', 'dikey $1', 'upright', 'upright=$1', 'upright $1' ],
@@ -267,7 +267,7 @@ $magicWords = [
        'img_baseline'              => [ '1', 'tabançizgisi', 'altçizgi', 'baseline' ],
        'img_sub'                   => [ '1', 'alt', 'sub' ],
        'img_super'                 => [ '1', 'üst', 'üs', 'super', 'sup' ],
-       'img_top'                   => [ '1', 'tavan', 'tepe', 'top' ],
+       'img_top'                   => [ '1', 'tepe', 'tavan', 'top' ],
        'img_text_top'              => [ '1', 'metin-tavan', 'metin-tepe', 'text-top' ],
        'img_middle'                => [ '1', 'merkez', 'middle' ],
        'img_bottom'                => [ '1', 'taban', 'bottom' ],
index d3bca66..369e0be 100644 (file)
@@ -274,14 +274,14 @@ $magicWords = [
        'subst'                     => [ '0', 'ПІДСТ:', 'ПІДСТАНОВКА:', 'ПОДСТАНОВКА:', 'ПОДСТ:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'БЕЗПЕЧНА_ПІДСТАНОВКА:', 'ЗАЩПОДСТ:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'ПОВІД_БЕЗ_ВІКІ:', 'СООБЩ_БЕЗ_ВИКИ:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'міні', 'мініатюра', 'мини', 'миниатюра', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'міні', 'мини', 'мініатюра', 'миниатюра', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'міні=$1', 'мініатюра=$1', 'мини=$1', 'миниатюра=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'праворуч', 'справа', 'right' ],
        'img_left'                  => [ '1', 'ліворуч', 'слева', 'left' ],
        'img_none'                  => [ '1', 'без', 'none' ],
        'img_width'                 => [ '1', '$1пкс', '$1px' ],
        'img_center'                => [ '1', 'центр', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'обрамити', 'рамка', 'обрамить', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'обрамити', 'рамка', 'обрамить', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'безрамки', 'frameless' ],
        'img_page'                  => [ '1', 'сторінка=$1', 'сторінка_$1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ],
        'img_upright'               => [ '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ],
index f70080b..f9da1ed 100644 (file)
@@ -152,7 +152,7 @@ $magicWords = [
        'msg'                       => [ '0', 'پیغام:', 'MSG:' ],
        'subst'                     => [ '0', 'جا:', 'نقل:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'محفوظ_جا:', 'محفوظ_نقل:', 'SAFESUBST:' ],
-       'img_thumbnail'             => [ '1', 'تصغیر', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'تصغیر', 'thumb', 'thumbnail' ],
        'img_right'                 => [ '1', 'دائیں', 'right' ],
        'img_left'                  => [ '1', 'بائیں', 'left' ],
        'img_center'                => [ '1', 'درمیان', 'center', 'centre' ],
index 593f61a..201a677 100644 (file)
@@ -220,13 +220,13 @@ $magicWords = [
        'subst'                     => [ '0', 'THẾ:', 'SUBST:' ],
        'safesubst'                 => [ '0', 'THẾ_AN_TOÀN:', 'SAFESUBST:' ],
        'msgnw'                     => [ '0', 'NHẮN_MỚI:', 'NHẮNMỚI:', 'MSGNW:' ],
-       'img_thumbnail'             => [ '1', 'nhỏ', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'nhỏ', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'nhỏ=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'phải', 'right' ],
        'img_left'                  => [ '1', 'trái', 'left' ],
        'img_none'                  => [ '1', 'không', 'none' ],
        'img_center'                => [ '1', 'giữa', 'center', 'centre' ],
-       'img_framed'                => [ '1', 'khung', 'framed', 'enframed', 'frame' ],
+       'img_framed'                => [ '1', 'khung', 'frame', 'framed', 'enframed' ],
        'img_frameless'             => [ '1', 'không_khung', 'frameless' ],
        'img_lang'                  => [ '1', 'tiếng=$1', 'ngôn_ngữ=$1', 'lang=$1' ],
        'img_page'                  => [ '1', 'trang=$1', 'trang_$1', 'page=$1', 'page $1' ],
index 074bf54..edc860e 100644 (file)
@@ -169,7 +169,7 @@ $magicWords = [
        'subpagename'               => [ '1', 'אונטערבלאטנאמען', 'שם דף המשנה', 'SUBPAGENAME' ],
        'talkpagename'              => [ '1', 'רעדנבלאטנאמען', 'שם דף השיחה', 'TALKPAGENAME' ],
        'subst'                     => [ '0', 'ס:', 'SUBST:' ],
-       'img_thumbnail'             => [ '1', 'קליין', 'ממוזער', 'thumbnail', 'thumb' ],
+       'img_thumbnail'             => [ '1', 'קליין', 'ממוזער', 'thumb', 'thumbnail' ],
        'img_manualthumb'           => [ '1', 'קליין=$1', 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1' ],
        'img_right'                 => [ '1', 'רעכטס', 'ימין', 'right' ],
        'img_left'                  => [ '1', 'לינקס', 'שמאל', 'left' ],
index eddfa26..46616db 100644 (file)
@@ -32,12 +32,12 @@ class Digit2Html extends Maintenance {
 
        # A list of unicode numerals is available at:
        # http://www.fileformat.info/info/unicode/category/Nd/list.htm
-       private $mLangs = array(
+       private $mLangs = [
                'Ar', 'As', 'Bh', 'Bo', 'Dz',
                'Fa', 'Gu', 'Hi', 'Km', 'Kn',
                'Ks', 'Lo', 'Ml', 'Mr', 'Ne',
                'New', 'Or', 'Pa', 'Pi', 'Sa'
-       );
+       ];
 
        public function __construct() {
                parent::__construct();
index 15a1cb9..abe08e4 100755 (executable)
@@ -248,7 +248,8 @@ def translate(text, conv_table):
 
 def manualWordsTable(path, conv_table, reconv_table):
     fp = open(path, 'r', encoding='U8')
-    reconv_table = {}
+    reconv_table = reconv_table.copy()
+    out_table = {}
     wordlist = [line.split('#')[0].strip() for line in fp]
     wordlist = list(set(wordlist))
     wordlist.sort(key=lambda w: (len(w), w), reverse=True)
@@ -257,9 +258,9 @@ def manualWordsTable(path, conv_table, reconv_table):
         new_word = translate(word, conv_table)
         rcv_word = translate(word, reconv_table)
         if word != rcv_word:
-            reconv_table[word] = word
-        reconv_table[new_word] = word
-    return reconv_table
+            reconv_table[word] = out_table[word] = word
+        reconv_table[new_word] = out_table[new_word] = word
+    return out_table
 
 
 def defaultWordsTable(src_wordlist, src_tomany, char_conv_table,
index 88767de..bdbb347 100644 (file)
@@ -68,9 +68,16 @@ class RefreshImageMetadata extends Maintenance {
                $this->addOption( 'start', 'Name of file to start with', false, true );
                $this->addOption( 'end', 'Name of file to end with', false, true );
 
+               $this->addOption(
+                       'mediatype',
+                       'Only refresh files with this media type, e.g. BITMAP, UNKNOWN etc.',
+                       false,
+                       true
+               );
                $this->addOption(
                        'mime',
-                       '(Inefficient!) Only refresh files with this MIME type. Can accept wild-card image/*',
+                       "Only refresh files with this MIME type. Can accept wild-card 'image/*'. "
+                               . "Potentially inefficient unless 'mediatype' is also specified",
                        false,
                        true
                );
@@ -197,6 +204,7 @@ class RefreshImageMetadata extends Maintenance {
 
                $end = $this->getOption( 'end', false );
                $mime = $this->getOption( 'mime', false );
+               $mediatype = $this->getOption( 'mediatype', false );
                $like = $this->getOption( 'metadata-contains', false );
 
                if ( $end !== false ) {
@@ -209,6 +217,9 @@ class RefreshImageMetadata extends Maintenance {
                                $conds['img_minor_mime'] = $minor;
                        }
                }
+               if ( $mediatype !== false ) {
+                       $conds['img_media_type'] = $mediatype;
+               }
                if ( $like ) {
                        $conds[] = 'img_metadata ' . $dbw->buildLike( $dbw->anyString(), $like, $dbw->anyString() );
                }
index 9ea6c7b..8bfb94d 100644 (file)
@@ -8,7 +8,7 @@
   "devDependencies": {
     "grunt": "0.4.5",
     "grunt-cli": "0.1.13",
-    "grunt-banana-checker": "0.4.0",
+    "grunt-banana-checker": "0.5.0",
     "grunt-contrib-copy": "1.0.0",
     "grunt-contrib-jshint": "1.0.0",
     "grunt-contrib-watch": "1.0.0",
index 0f3d70b..6992de1 100644 (file)
@@ -436,6 +436,8 @@ return [
                        'ca' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-ca.js',
                        'cs' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-cs.js',
                        'da' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-da.js',
+                       'de-at' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js',
+                       'de-ch' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js',
                        'de' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de.js',
                        'el' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-el.js',
                        'en-au' => 'resources/lib/jquery.ui/i18n/jquery.ui.datepicker-en-AU.js',
diff --git a/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js b/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-AT.js
new file mode 100644 (file)
index 0000000..456c3a0
--- /dev/null
@@ -0,0 +1,22 @@
+/* Austrian German initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+       $.datepicker.regional['de-AT'] = {
+               closeText: 'schließen',
+               prevText: '&#x3C;zurück',
+               nextText: 'Vor&#x3E;',
+               currentText: 'heute',
+               monthNames: ['Jänner','Februar','März','April','Mai','Juni',
+               'Juli','August','September','Oktober','November','Dezember'],
+               monthNamesShort: ['Jän','Feb','Mär','Apr','Mai','Jun',
+               'Jul','Aug','Sep','Okt','Nov','Dez'],
+               dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+               dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+               dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+               weekHeader: 'KW',
+               dateFormat: 'dd.mm.yy',
+               firstDay: 1,
+               isRTL: false,
+               showMonthAfterYear: false,
+               yearSuffix: ''};
+       $.datepicker.setDefaults($.datepicker.regional['de-AT']);
+});
diff --git a/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js b/resources/lib/jquery.ui/i18n/jquery.ui.datepicker-de-CH.js
new file mode 100644 (file)
index 0000000..60cbc29
--- /dev/null
@@ -0,0 +1,22 @@
+/* Swiss Standard German initialisation for the jQuery UI date picker plugin. */
+jQuery(function($){
+       $.datepicker.regional['de-CH'] = {
+               closeText: 'schliessen',
+               prevText: '&#x3C;zurück',
+               nextText: 'Vor&#x3E;',
+               currentText: 'heute',
+               monthNames: ['Januar','Februar','März','April','Mai','Juni',
+               'Juli','August','September','Oktober','November','Dezember'],
+               monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
+               'Jul','Aug','Sep','Okt','Nov','Dez'],
+               dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
+               dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+               dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
+               weekHeader: 'KW',
+               dateFormat: 'dd.mm.yy',
+               firstDay: 1,
+               isRTL: false,
+               showMonthAfterYear: false,
+               yearSuffix: ''};
+       $.datepicker.setDefaults($.datepicker.regional['de-CH']);
+});
index d4446ab..0dffd7d 100644 (file)
@@ -90,6 +90,9 @@
        "greek": [
                "Α", "Ά", "α", "ά", "Β", "β", "Γ", "γ", "Δ", "δ", "Ε", "Έ", "ε", "έ", "Ζ", "ζ", "Η", "Ή", "η", "ή", "Θ", "θ", "Ι", "Ί", "ι", "ί", "Κ", "κ", "Λ", "λ", "Μ", "μ", "Ν", "ν", "Ξ", "ξ", "Ο", "Ό", "ο", "ό", "Π", "π", "Ρ", "ρ", "Σ", "σ", "ς", "Τ", "τ", "Υ", "Ύ", "υ", "ύ", "Φ", "φ", "Χ", "χ", "Ψ", "ψ", "Ω", "Ώ", "ω", "ώ"
        ],
+       "greekextended": [
+               "ἀ", "ἁ", "ἂ", "ἃ", "ἄ", "ἅ", "ἆ", "ἇ", "Ἀ", "Ἁ", "Ἂ", "Ἃ", "Ἄ", "Ἅ", "Ἆ", "Ἇ", "ἐ", "ἑ", "ἒ", "ἓ", "ἔ", "ἕ", "Ἐ", "Ἑ", "Ἒ", "Ἓ", "Ἔ", "Ἕ", "ἠ", "ἡ", "ἢ", "ἣ", "ἤ", "ἥ", "ἦ", "ἧ", "Ἠ", "Ἡ", "Ἢ", "Ἣ", "Ἤ", "Ἥ", "Ἦ", "Ἧ", "ἰ", "ἱ", "ἲ", "ἳ", "ἴ", "ἵ", "ἶ", "ἷ", "Ἰ", "Ἱ", "Ἲ", "Ἳ", "Ἴ", "Ἵ", "Ἶ", "Ἷ", "ὀ", "ὁ", "ὂ", "ὃ", "ὄ", "ὅ", "Ὀ", "Ὁ", "Ὂ", "Ὃ", "Ὄ", "Ὅ", "ὐ", "ὑ", "ὒ", "ὓ", "ὔ", "ὕ", "ὖ", "ὗ", "Ὑ", "Ὓ", "Ὕ", "Ὗ", "ὠ", "ὡ", "ὢ", "ὣ", "ὤ", "ὥ", "ὦ", "ὧ", "Ὠ", "Ὡ", "Ὢ", "Ὣ", "Ὤ", "Ὥ", "Ὦ", "Ὧ", "ὰ", "ά", "ὲ", "έ", "ὴ", "ή", "ὶ", "ί", "ὸ", "ό", "ὺ", "ύ", "ὼ", "ώ", "ᾀ", "ᾁ", "ᾂ", "ᾃ", "ᾄ", "ᾅ", "ᾆ", "ᾇ", "ᾈ", "ᾉ", "ᾊ", "ᾋ", "ᾌ", "ᾍ", "ᾎ", "ᾏ", "ᾐ", "ᾑ", "ᾒ", "ᾓ", "ᾔ", "ᾕ", "ᾖ", "ᾗ", "ᾘ", "ᾙ", "ᾚ", "ᾛ", "ᾜ", "ᾝ", "ᾞ", "ᾟ", "ᾠ", "ᾡ", "ᾢ", "ᾣ", "ᾤ", "ᾥ", "ᾦ", "ᾧ", "ᾨ", "ᾩ", "ᾪ", "ᾫ", "ᾬ", "ᾭ", "ᾮ", "ᾯ", "ᾰ", "ᾱ", "ᾲ", "ᾳ", "ᾴ", "ᾶ", "ᾷ", "Ᾰ", "Ᾱ", "Ὰ", "Ά", "ᾼ", "᾽", "ι", "᾿", "῀", "῁", "ῂ", "ῃ", "ῄ", "ῆ", "ῇ", "Ὲ", "Έ", "Ὴ", "Ή", "ῌ", "῍", "῎", "῏", "ῐ", "ῑ", "ῒ", "ΐ", "ῖ", "ῗ", "Ῐ", "Ῑ", "Ὶ", "Ί", "῝", "῞", "῟", "ῠ", "ῡ", "ῢ", "ΰ", "ῤ", "ῥ", "ῦ", "ῧ", "Ῠ", "Ῡ", "Ὺ", "Ύ", "Ῥ", "῭", "΅", "`", "ῲ", "ῳ", "ῴ", "ῶ", "ῷ", "Ὸ", "Ό", "Ὼ", "Ώ", "ῼ", "´", "῾"
+       ],
        "cyrillic": [
                "А", "а", "Ӑ", "ӑ", "Ӓ", "ӓ", "Ә", "ә", "Ӛ", "ӛ", "Б", "б", "В", "в", "Г", "г", "Ґ", "ґ", "Ӷ", "ӷ", "Ѓ", "ѓ", "Ӻ", "ӻ", "Ғ", "ғ", "Ҕ", "ҕ", "Д", "д", "Ԁ", "ԁ", "Ԃ", "ԃ", "Ђ", "ђ", "Е", "е", "Ѐ", "ѐ", "Є", "є", "Ё", "ё", "Ӗ", "ӗ", "Ҽ", "ҽ", "Ҿ", "ҿ", "Ж", "ж", "Җ", "җ", "Ӂ", "ӂ", "Ӝ", "ӝ", "З", "з", "Ҙ", "ҙ", "Ӟ", "ӟ", "Ԑ", "ԑ", "Ӡ", "ӡ", "Ѕ", "ѕ", "Ԅ", "ԅ", "Ԇ", "ԇ", "И", "и", "І", "і", "Ї", "ї",
                [
index a2d106d..3cfc52c 100644 (file)
                                                return xhr;
                                        }
                                } )
+                                       .then( null, function ( code, data, result, jqXHR ) {
+                                               if ( code !== 'http' ) {
+                                                       // Not really an error, work around mw.Api thinking it is.
+                                                       return $.Deferred()
+                                                               .resolve( result, jqXHR )
+                                                               .promise();
+                                               }
+                                               return this;
+                                       } )
                                        .fail( function ( code, data ) {
                                                var details = 'HTTP error: ' + data.exception;
                                                $result.empty()
index 10e0c56..64e5976 100644 (file)
                                .done( function ( result, textStatus, jqXHR ) {
                                        if ( result === undefined || result === null || result === '' ) {
                                                apiDeferred.reject( 'ok-but-empty',
-                                                       'OK response but empty result (check HTTP headers?)'
+                                                       'OK response but empty result (check HTTP headers?)',
+                                                       result,
+                                                       jqXHR
                                                );
                                        } else if ( result.error ) {
                                                var code = result.error.code === undefined ? 'unknown' : result.error.code;
-                                               apiDeferred.reject( code, result );
+                                               apiDeferred.reject( code, result, result, jqXHR );
                                        } else {
                                                apiDeferred.resolve( result, jqXHR );
                                        }
index d0e21ae..dfc98ad 100644 (file)
@@ -28,4 +28,4 @@
                // Bind because it throws TypeError if context is not window
                ? window.requestIdleCallback.bind( window )
                : mw.requestIdleCallbackInternal;
-}( mediaWiki, jQuery ) );
+}( mediaWiki ) );
index d2f2abd..0fdd9aa 100644 (file)
                 * @return {jQuery.Promise}
                 */
                getGroups: function ( callback ) {
-                       return getUserInfo().then(
-                               function ( userInfo ) { return userInfo.groups; },
-                               function () { return []; }
-                       ).done( callback );
+                       var userGroups = mw.config.get( 'wgUserGroups', [] );
+
+                       // Uses promise for backwards compatibility
+                       return $.Deferred().resolve( userGroups ).done( callback );
                },
 
                /**
index 8248257..e50b4f1 100644 (file)
@@ -132,129 +132,129 @@ class LinkerTest extends MediaWikiLangTestCase {
                $wikiId = 'enwiki'; // $wgConf has a fake entry for this
 
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // Linker::formatComment
-                       array(
+                       [
                                'a&lt;script&gt;b',
                                'a<script>b',
-                       ),
-                       array(
+                       ],
+                       [
                                'a—b',
                                'a&mdash;b',
-                       ),
-                       array(
+                       ],
+                       [
                                "&#039;&#039;&#039;not bolded&#039;&#039;&#039;",
                                "'''not bolded'''",
-                       ),
-                       array(
+                       ],
+                       [
                                "try &lt;script&gt;evil&lt;/scipt&gt; things",
                                "try <script>evil</scipt> things",
-                       ),
+                       ],
                        // Linker::formatAutocomments
-                       array(
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment</span></span>',
                                "/* autocomment */",
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#linkie.3F" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment"><a href="/wiki/index.php?title=Linkie%3F&amp;action=edit&amp;redlink=1" class="new" title="Linkie? (page does not exist)">linkie?</a></span></span>',
                                "/* [[linkie?]] */",
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment: </span> post</span>',
                                "/* autocomment */ post",
-                       ),
-                       array(
+                       ],
+                       [
                                'pre <a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment</span></span>',
                                "pre /* autocomment */",
-                       ),
-                       array(
+                       ],
+                       [
                                'pre <a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment: </span> post</span>',
                                "pre /* autocomment */ post",
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment: </span> multiple? <a href="/wiki/Special:BlankPage#autocomment2" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment2: </span> </span></span>',
                                "/* autocomment */ multiple? /* autocomment2 */ ",
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment_containing_.2F.2A" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment containing /*: </span> T70361</span>',
                                "/* autocomment containing /* */ T70361"
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment_containing_.22quotes.22" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment containing &quot;quotes&quot;</span></span>',
                                "/* autocomment containing \"quotes\" */"
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment_containing_.3Cscript.3Etags.3C.2Fscript.3E" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment containing &lt;script&gt;tags&lt;/script&gt;</span></span>',
                                "/* autocomment containing <script>tags</script> */"
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="#autocomment">→</a>‎<span dir="auto"><span class="autocomment">autocomment</span></span>',
                                "/* autocomment */",
                                false, true
-                       ),
-                       array(
+                       ],
+                       [
                                '‎<span dir="auto"><span class="autocomment">autocomment</span></span>',
                                "/* autocomment */",
                                null
-                       ),
-                       array(
+                       ],
+                       [
                                '<a href="/wiki/Special:BlankPage#autocomment" title="Special:BlankPage">→</a>‎<span dir="auto"><span class="autocomment">autocomment</span></span>',
                                "/* autocomment */",
                                false, false
-                       ),
-                       array(
+                       ],
+                       [
                                '<a class="external" rel="nofollow" href="//en.example.org/w/Special:BlankPage#autocomment">→</a>‎<span dir="auto"><span class="autocomment">autocomment</span></span>',
                                "/* autocomment */",
                                false, false, $wikiId
-                       ),
+                       ],
                        // Linker::formatLinksInComment
-                       array(
+                       [
                                'abc <a href="/wiki/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">link</a> def',
                                "abc [[link]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">text</a> def',
                                "abc [[link|text]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/Special:BlankPage" title="Special:BlankPage">Special:BlankPage</a> def',
                                "abc [[Special:BlankPage|]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/index.php?title=%C4%84%C5%9B%C5%BC&amp;action=edit&amp;redlink=1" class="new" title="Ąśż (page does not exist)">ąśż</a> def',
                                "abc [[%C4%85%C5%9B%C5%BC]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/Special:BlankPage#section" title="Special:BlankPage">#section</a> def',
                                "abc [[#section]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/index.php?title=/subpage&amp;action=edit&amp;redlink=1" class="new" title="/subpage (page does not exist)">/subpage</a> def',
                                "abc [[/subpage]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/index.php?title=%22evil!%22&amp;action=edit&amp;redlink=1" class="new" title="&quot;evil!&quot; (page does not exist)">&quot;evil!&quot;</a> def',
                                "abc [[\"evil!\"]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc [[&lt;script&gt;very evil&lt;/script&gt;]] def',
                                "abc [[<script>very evil</script>]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc [[|]] def',
                                "abc [[|]] def",
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a href="/wiki/index.php?title=Link&amp;action=edit&amp;redlink=1" class="new" title="Link (page does not exist)">link</a> def',
                                "abc [[link]] def",
                                false, false
-                       ),
-                       array(
+                       ],
+                       [
                                'abc <a class="external" rel="nofollow" href="//en.example.org/w/Link">link</a> def',
                                "abc [[link]] def",
                                false, false, $wikiId
-                       )
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
@@ -290,23 +290,23 @@ class LinkerTest extends MediaWikiLangTestCase {
 
        public static function provideCasesForFormatLinksInComment() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array(
+               return [
+                       [
                                'foo bar <a href="/wiki/Special:BlankPage" title="Special:BlankPage">Special:BlankPage</a>',
                                'foo bar [[Special:BlankPage]]',
                                null,
-                       ),
-                       array(
+                       ],
+                       [
                                '<a class="external" rel="nofollow" href="//en.example.org/w/Foo%27bar">Foo\'bar</a>',
                                "[[Foo'bar]]",
                                'enwiki',
-                       ),
-                       array(
+                       ],
+                       [
                                'foo bar <a class="external" rel="nofollow" href="//en.example.org/w/Special:BlankPage">Special:BlankPage</a>',
                                'foo bar [[Special:BlankPage]]',
                                'enwiki',
-                       ),
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index 9bef038..2f63ca8 100644 (file)
@@ -138,62 +138,62 @@ class OutputPageTest extends MediaWikiTestCase {
 
        public static function provideMakeResourceLoaderLink() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // Load module script only
-                       array(
-                               array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
+                       [
+                               [ 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ],
                                "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback");'
                                        . "});</script>"
-                       ),
-                       array(
+                       ],
+                       [
                                // Don't condition wrap raw modules (like the startup module)
-                               array( 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ),
+                               [ 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ],
                                '<script async src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.raw&amp;only=scripts&amp;skin=fallback"></script>'
-                       ),
+                       ],
                        // Load module styles only
                        // This also tests the order the modules are put into the url
-                       array(
-                               array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
+                       [
+                               [ [ 'test.baz', 'test.foo', 'test.bar' ], ResourceLoaderModule::TYPE_STYLES ],
 
                                '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=fallback">'
-                       ),
+                       ],
                        // Load private module (only=scripts)
-                       array(
-                               array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
+                       [
+                               [ 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ],
                                "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . "mw.test.baz({token:123});mw.loader.state({\"test.quux\":\"ready\"});"
                                        . "});</script>"
-                       ),
+                       ],
                        // Load private module (combined)
-                       array(
-                               array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
+                       [
+                               [ 'test.quux', ResourceLoaderModule::TYPE_COMBINED ],
                                "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . "mw.loader.implement(\"test.quux\",function($,jQuery){"
                                        . "mw.test.baz({token:123});},{\"css\":[\".mw-icon{transition:none}"
                                        . "\"]});});</script>"
-                       ),
+                       ],
                        // Load no modules
-                       array(
-                               array( array(), ResourceLoaderModule::TYPE_COMBINED ),
+                       [
+                               [ [], ResourceLoaderModule::TYPE_COMBINED ],
                                '',
-                       ),
+                       ],
                        // noscript group
-                       array(
-                               array( 'test.noscript', ResourceLoaderModule::TYPE_STYLES ),
+                       [
+                               [ 'test.noscript', ResourceLoaderModule::TYPE_STYLES ],
                                '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback"></noscript>'
-                       ),
+                       ],
                        // Load two modules in separate groups
-                       array(
-                               array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
+                       [
+                               [ [ 'test.group.foo', 'test.group.bar' ], ResourceLoaderModule::TYPE_COMBINED ],
                                "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback");'
                                        . "});</script>\n"
                                        . "<script>(window.RLQ=window.RLQ||[]).push(function(){"
                                        . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback");'
                                        . "});</script>"
-                       ),
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index d5f5420..67364cb 100644 (file)
@@ -237,8 +237,13 @@ class PathRouterTest extends MediaWikiTestCase {
         */
        public function testLength() {
                // @codingStandardsIgnoreStart Ignore long line warnings
-               $matches = $this->basicRouter->parse( "/wiki/Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." );
-               $this->assertEquals( $matches, array( 'title' => "Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." ) );
+               $matches = $this->basicRouter->parse(
+                       "/wiki/Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum."
+               );
+               $this->assertEquals(
+                       $matches,
+                       [ 'title' => "Lorem_ipsum_dolor_sit_amet,_consectetur_adipisicing_elit,_sed_do_eiusmod_tempor_incididunt_ut_labore_et_dolore_magna_aliqua._Ut_enim_ad_minim_veniam,_quis_nostrud_exercitation_ullamco_laboris_nisi_ut_aliquip_ex_ea_commodo_consequat._Duis_aute_irure_dolor_in_reprehenderit_in_voluptate_velit_esse_cillum_dolore_eu_fugiat_nulla_pariatur._Excepteur_sint_occaecat_cupidatat_non_proident,_sunt_in_culpa_qui_officia_deserunt_mollit_anim_id_est_laborum." ]
+               );
                // @codingStandardsIgnoreEnd
        }
 
index 0ac9c3c..7d3007b 100644 (file)
@@ -314,18 +314,6 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $this->assertEquals( 'hello hello.', $rev->getContent()->getNativeData() );
        }
 
-       /**
-        * @covers Revision::getRawText
-        */
-       public function testGetRawText() {
-               $this->hideDeprecated( 'Revision::getRawText' );
-
-               $orig = $this->makeRevision( [ 'text' => 'hello hello raw.' ] );
-               $rev = Revision::newFromId( $orig->getId() );
-
-               $this->assertEquals( 'hello hello raw.', $rev->getRawText() );
-       }
-
        /**
         * @covers Revision::getContentModel
         */
index d2eb6b8..767c963 100644 (file)
@@ -333,19 +333,6 @@ class RevisionTest extends MediaWikiTestCase {
                $this->assertEquals( $expectedText, $rev->getText( $audience ) );
        }
 
-       /**
-        * @group Database
-        * @dataProvider dataGetText
-        * @covers Revision::getRawText
-        */
-       public function testGetRawText( $text, $title, $model, $format, $audience, $expectedText ) {
-               $this->hideDeprecated( 'Revision::getRawText' );
-
-               $rev = $this->newTestRevision( $text, $title, $model, $format );
-
-               $this->assertEquals( $expectedText, $rev->getRawText( $audience ) );
-       }
-
        public function dataGetSize() {
                return [
                        [ "hello world.", CONTENT_MODEL_WIKITEXT, 12 ],
index 5f07dbf..9dd38df 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 
 /**
  * @author Addshore
@@ -82,6 +83,13 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                return $fakeRow;
        }
 
+       private function newWatchedItemStore( LoadBalancer $loadBalancer, HashBagOStuff $cache ) {
+               return new WatchedItemStore(
+                       $loadBalancer,
+                       $cache
+               );
+       }
+
        public function testGetDefaultInstance() {
                $instanceOne = WatchedItemStore::getDefaultInstance();
                $instanceTwo = WatchedItemStore::getDefaultInstance();
@@ -120,7 +128,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -150,7 +158,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -201,7 +209,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -267,7 +275,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -315,7 +323,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -394,7 +402,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -496,7 +504,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -549,7 +557,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -586,7 +594,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -620,7 +628,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -657,7 +665,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -687,7 +695,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        )
                        ->will( $this->returnValue( new FakeResultWrapper( [] ) ) );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $this->getMockCache()
                );
@@ -745,7 +753,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -791,7 +799,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -871,7 +879,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -903,7 +911,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->method( 'delete' )
                        ->with( '0:Some_Page:1' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -923,7 +931,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -966,7 +974,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->method( 'delete' )
                        ->with( '1:Some_Page:1' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -990,7 +998,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1013,7 +1021,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1047,7 +1055,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                '0:SomeDbKey:1'
                        );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1081,7 +1089,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1103,7 +1111,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1138,7 +1146,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->method( 'delete' )
                        ->with( '0:SomeDbKey:1' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1173,7 +1181,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->method( 'delete' )
                        ->with( '0:SomeDbKey:1' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1196,7 +1204,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1240,7 +1248,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                '0:SomeDbKey:1'
                        );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1274,7 +1282,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        )
                        ->will( $this->returnValue( $cachedItem ) );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1311,7 +1319,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->with( '0:SomeDbKey:1' )
                        ->will( $this->returnValue( false ) );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1334,7 +1342,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1374,7 +1382,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'set' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1424,7 +1432,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        )
                        ->will( $this->returnValue( [] ) );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $mockLoadBalancer,
                        $mockCache
                );
@@ -1437,7 +1445,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
        }
 
        public function testGetWatchedItemsForUser_badSortOptionThrowsException() {
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $this->getMockDb() ),
                        $this->getMockCache()
                );
@@ -1478,7 +1486,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                                '0:SomeDbKey:1'
                        );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1514,7 +1522,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->with( '0:SomeDbKey:1' )
                        ->will( $this->returnValue( false ) );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1537,7 +1545,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1604,7 +1612,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1654,7 +1662,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1715,7 +1723,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1755,7 +1763,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1781,7 +1789,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache = $this->getMockCache();
                $mockCache->expects( $this->never() )->method( $this->anything() );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1805,7 +1813,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1838,7 +1846,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'set' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1883,7 +1891,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->method( 'delete' )
                        ->with( '0:SomeDbKey:1' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1923,7 +1931,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockDb->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -1989,7 +1997,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockDb->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -2049,7 +2057,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockDb->expects( $this->never() )
                        ->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -2130,7 +2138,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -2172,7 +2180,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                $mockCache->expects( $this->never() )->method( 'get' );
                $mockCache->expects( $this->never() )->method( 'delete' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
@@ -2224,7 +2232,7 @@ class WatchedItemStoreUnitTest extends PHPUnit_Framework_TestCase {
                        ->method( 'delete' )
                        ->with( '0:SomeDbKey:1' );
 
-               $store = new WatchedItemStore(
+               $store = $this->newWatchedItemStore(
                        $this->getMockLoadBalancer( $mockDb ),
                        $mockCache
                );
index 690ba3a..0028bbb 100644 (file)
@@ -22,80 +22,80 @@ class ApiFormatPhpTest extends ApiFormatTestBase {
        public static function provideGeneralEncoding() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
                return array_merge(
-                       self::addFormatVersion( 1, array(
+                       self::addFormatVersion( 1, [
                                // Basic types
-                               array( array( null ), 'a:1:{i:0;N;}' ),
-                               array( array( true ), 'a:1:{i:0;s:0:"";}' ),
-                               array( array( false ), 'a:0:{}' ),
-                               array( array( true, ApiResult::META_BC_BOOLS => array( 0 ) ),
-                                       'a:1:{i:0;b:1;}' ),
-                               array( array( false, ApiResult::META_BC_BOOLS => array( 0 ) ),
-                                       'a:1:{i:0;b:0;}' ),
-                               array( array( 42 ), 'a:1:{i:0;i:42;}' ),
-                               array( array( 42.5 ), 'a:1:{i:0;d:42.5;}' ),
-                               array( array( 1e42 ), 'a:1:{i:0;d:1.0E+42;}' ),
-                               array( array( 'foo' ), 'a:1:{i:0;s:3:"foo";}' ),
-                               array( array( 'fóo' ), 'a:1:{i:0;s:4:"fóo";}' ),
+                               [ [ null ], 'a:1:{i:0;N;}' ],
+                               [ [ true ], 'a:1:{i:0;s:0:"";}' ],
+                               [ [ false ], 'a:0:{}' ],
+                               [ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ],
+                                       'a:1:{i:0;b:1;}' ],
+                               [ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ],
+                                       'a:1:{i:0;b:0;}' ],
+                               [ [ 42 ], 'a:1:{i:0;i:42;}' ],
+                               [ [ 42.5 ], 'a:1:{i:0;d:42.5;}' ],
+                               [ [ 1e42 ], 'a:1:{i:0;d:1.0E+42;}' ],
+                               [ [ 'foo' ], 'a:1:{i:0;s:3:"foo";}' ],
+                               [ [ 'fóo' ], 'a:1:{i:0;s:4:"fóo";}' ],
 
                                // Arrays and objects
-                               array( array( array() ), 'a:1:{i:0;a:0:{}}' ),
-                               array( array( array( 1 ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'x' => 1 ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
-                               array( array( array( 2 => 1 ) ), 'a:1:{i:0;a:1:{i:2;i:1;}}' ),
-                               array( array( (object)array() ), 'a:1:{i:0;a:0:{}}' ),
-                               array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp' ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
-                                       'a:1:{i:0;a:1:{i:0;a:2:{s:3:"key";s:1:"x";s:1:"*";i:1;}}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
-                               array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ),
+                               [ [ [] ], 'a:1:{i:0;a:0:{}}' ],
+                               [ [ [ 1 ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'x' => 1 ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+                               [ [ [ 2 => 1 ] ], 'a:1:{i:0;a:1:{i:2;i:1;}}' ],
+                               [ [ (object)[] ], 'a:1:{i:0;a:0:{}}' ],
+                               [ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+                                       'a:1:{i:0;a:1:{i:0;a:2:{s:3:"key";s:1:"x";s:1:"*";i:1;}}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+                               [ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ],
 
                                // Content
-                               array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
-                                       'a:1:{s:1:"*";s:3:"foo";}' ),
+                               [ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+                                       'a:1:{s:1:"*";s:3:"foo";}' ],
 
                                // BC Subelements
-                               array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
-                                       'a:1:{s:3:"foo";a:1:{s:1:"*";s:3:"foo";}}' ),
-                       ) ),
-                       self::addFormatVersion( 2, array(
+                               [ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
+                                       'a:1:{s:3:"foo";a:1:{s:1:"*";s:3:"foo";}}' ],
+                       ] ),
+                       self::addFormatVersion( 2, [
                                // Basic types
-                               array( array( null ), 'a:1:{i:0;N;}' ),
-                               array( array( true ), 'a:1:{i:0;b:1;}' ),
-                               array( array( false ), 'a:1:{i:0;b:0;}' ),
-                               array( array( true, ApiResult::META_BC_BOOLS => array( 0 ) ),
-                                       'a:1:{i:0;b:1;}' ),
-                               array( array( false, ApiResult::META_BC_BOOLS => array( 0 ) ),
-                                       'a:1:{i:0;b:0;}' ),
-                               array( array( 42 ), 'a:1:{i:0;i:42;}' ),
-                               array( array( 42.5 ), 'a:1:{i:0;d:42.5;}' ),
-                               array( array( 1e42 ), 'a:1:{i:0;d:1.0E+42;}' ),
-                               array( array( 'foo' ), 'a:1:{i:0;s:3:"foo";}' ),
-                               array( array( 'fóo' ), 'a:1:{i:0;s:4:"fóo";}' ),
+                               [ [ null ], 'a:1:{i:0;N;}' ],
+                               [ [ true ], 'a:1:{i:0;b:1;}' ],
+                               [ [ false ], 'a:1:{i:0;b:0;}' ],
+                               [ [ true, ApiResult::META_BC_BOOLS => [ 0 ] ],
+                                       'a:1:{i:0;b:1;}' ],
+                               [ [ false, ApiResult::META_BC_BOOLS => [ 0 ] ],
+                                       'a:1:{i:0;b:0;}' ],
+                               [ [ 42 ], 'a:1:{i:0;i:42;}' ],
+                               [ [ 42.5 ], 'a:1:{i:0;d:42.5;}' ],
+                               [ [ 1e42 ], 'a:1:{i:0;d:1.0E+42;}' ],
+                               [ [ 'foo' ], 'a:1:{i:0;s:3:"foo";}' ],
+                               [ [ 'fóo' ], 'a:1:{i:0;s:4:"fóo";}' ],
 
                                // Arrays and objects
-                               array( array( array() ), 'a:1:{i:0;a:0:{}}' ),
-                               array( array( array( 1 ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'x' => 1 ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
-                               array( array( array( 2 => 1 ) ), 'a:1:{i:0;a:1:{i:2;i:1;}}' ),
-                               array( array( (object)array() ), 'a:1:{i:0;a:0:{}}' ),
-                               array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp' ) ), 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
-                                       'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ),
-                               array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), 'a:1:{i:0;a:1:{i:0;i:1;}}' ),
-                               array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ),
+                               [ [ [] ], 'a:1:{i:0;a:0:{}}' ],
+                               [ [ [ 1 ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'x' => 1 ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+                               [ [ [ 2 => 1 ] ], 'a:1:{i:0;a:1:{i:2;i:1;}}' ],
+                               [ [ (object)[] ], 'a:1:{i:0;a:0:{}}' ],
+                               [ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp' ] ], 'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+                                       'a:1:{i:0;a:1:{s:1:"x";i:1;}}' ],
+                               [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], 'a:1:{i:0;a:1:{i:0;i:1;}}' ],
+                               [ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], 'a:1:{i:0;a:2:{i:0;s:1:"a";i:1;s:1:"b";}}' ],
 
                                // Content
-                               array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
-                                       'a:1:{s:7:"content";s:3:"foo";}' ),
+                               [ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+                                       'a:1:{s:7:"content";s:3:"foo";}' ],
 
                                // BC Subelements
-                               array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
-                                       'a:1:{s:3:"foo";s:3:"foo";}' ),
-                       ) )
+                               [ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
+                                       'a:1:{s:3:"foo";s:3:"foo";}' ],
+                       ] )
                );
                // @codingStandardsIgnoreEnd
        }
index 0b7ae35..3fef0b0 100644 (file)
@@ -25,98 +25,98 @@ class ApiFormatXmlTest extends ApiFormatTestBase {
 
        public static function provideGeneralEncoding() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // Basic types
-                       array( array( null, 'a' => null ), '<?xml version="1.0"?><api><_v _idx="0" /></api>' ),
-                       array( array( true, 'a' => true ), '<?xml version="1.0"?><api a=""><_v _idx="0">true</_v></api>' ),
-                       array( array( false, 'a' => false ), '<?xml version="1.0"?><api><_v _idx="0">false</_v></api>' ),
-                       array( array( true, 'a' => true, ApiResult::META_BC_BOOLS => array( 0, 'a' ) ),
-                               '<?xml version="1.0"?><api a=""><_v _idx="0">1</_v></api>' ),
-                       array( array( false, 'a' => false, ApiResult::META_BC_BOOLS => array( 0, 'a' ) ),
-                               '<?xml version="1.0"?><api><_v _idx="0"></_v></api>' ),
-                       array( array( 42, 'a' => 42 ), '<?xml version="1.0"?><api a="42"><_v _idx="0">42</_v></api>' ),
-                       array( array( 42.5, 'a' => 42.5 ), '<?xml version="1.0"?><api a="42.5"><_v _idx="0">42.5</_v></api>' ),
-                       array( array( 1e42, 'a' => 1e42 ), '<?xml version="1.0"?><api a="1.0E+42"><_v _idx="0">1.0E+42</_v></api>' ),
-                       array( array( 'foo', 'a' => 'foo' ), '<?xml version="1.0"?><api a="foo"><_v _idx="0">foo</_v></api>' ),
-                       array( array( 'fóo', 'a' => 'fóo' ), '<?xml version="1.0"?><api a="fóo"><_v _idx="0">fóo</_v></api>' ),
+                       [ [ null, 'a' => null ], '<?xml version="1.0"?><api><_v _idx="0" /></api>' ],
+                       [ [ true, 'a' => true ], '<?xml version="1.0"?><api a=""><_v _idx="0">true</_v></api>' ],
+                       [ [ false, 'a' => false ], '<?xml version="1.0"?><api><_v _idx="0">false</_v></api>' ],
+                       [ [ true, 'a' => true, ApiResult::META_BC_BOOLS => [ 0, 'a' ] ],
+                               '<?xml version="1.0"?><api a=""><_v _idx="0">1</_v></api>' ],
+                       [ [ false, 'a' => false, ApiResult::META_BC_BOOLS => [ 0, 'a' ] ],
+                               '<?xml version="1.0"?><api><_v _idx="0"></_v></api>' ],
+                       [ [ 42, 'a' => 42 ], '<?xml version="1.0"?><api a="42"><_v _idx="0">42</_v></api>' ],
+                       [ [ 42.5, 'a' => 42.5 ], '<?xml version="1.0"?><api a="42.5"><_v _idx="0">42.5</_v></api>' ],
+                       [ [ 1e42, 'a' => 1e42 ], '<?xml version="1.0"?><api a="1.0E+42"><_v _idx="0">1.0E+42</_v></api>' ],
+                       [ [ 'foo', 'a' => 'foo' ], '<?xml version="1.0"?><api a="foo"><_v _idx="0">foo</_v></api>' ],
+                       [ [ 'fóo', 'a' => 'fóo' ], '<?xml version="1.0"?><api a="fóo"><_v _idx="0">fóo</_v></api>' ],
 
                        // Arrays and objects
-                       array( array( array() ), '<?xml version="1.0"?><api><_v /></api>' ),
-                       array( array( array( 'x' => 1 ) ), '<?xml version="1.0"?><api><_v x="1" /></api>' ),
-                       array( array( array( 2 => 1 ) ), '<?xml version="1.0"?><api><_v><_v _idx="2">1</_v></_v></api>' ),
-                       array( array( (object)array() ), '<?xml version="1.0"?><api><_v /></api>' ),
-                       array( array( array( 1, ApiResult::META_TYPE => 'assoc' ) ), '<?xml version="1.0"?><api><_v><_v _idx="0">1</_v></_v></api>' ),
-                       array( array( array( 'x' => 1, ApiResult::META_TYPE => 'array' ) ), '<?xml version="1.0"?><api><_v><_v>1</_v></_v></api>' ),
-                       array( array( array( 'x' => 1, 'y' => array( 'z' => 1 ), ApiResult::META_TYPE => 'kvp' ) ),
-                               '<?xml version="1.0"?><api><_v><_v _name="x" xml:space="preserve">1</_v><_v _name="y"><z xml:space="preserve">1</z></_v></_v></api>' ),
-                       array( array( array( 'x' => 1, ApiResult::META_TYPE => 'kvp', ApiResult::META_INDEXED_TAG_NAME => 'i', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
-                               '<?xml version="1.0"?><api><_v><i key="x" xml:space="preserve">1</i></_v></api>' ),
-                       array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ) ),
-                               '<?xml version="1.0"?><api><_v><_v key="x" xml:space="preserve">1</_v></_v></api>' ),
-                       array( array( array( 'x' => 1, ApiResult::META_TYPE => 'BCarray' ) ), '<?xml version="1.0"?><api><_v x="1" /></api>' ),
-                       array( array( array( 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ) ), '<?xml version="1.0"?><api><_v><_v _idx="0">a</_v><_v _idx="1">b</_v></_v></api>' ),
+                       [ [ [] ], '<?xml version="1.0"?><api><_v /></api>' ],
+                       [ [ [ 'x' => 1 ] ], '<?xml version="1.0"?><api><_v x="1" /></api>' ],
+                       [ [ [ 2 => 1 ] ], '<?xml version="1.0"?><api><_v><_v _idx="2">1</_v></_v></api>' ],
+                       [ [ (object)[] ], '<?xml version="1.0"?><api><_v /></api>' ],
+                       [ [ [ 1, ApiResult::META_TYPE => 'assoc' ] ], '<?xml version="1.0"?><api><_v><_v _idx="0">1</_v></_v></api>' ],
+                       [ [ [ 'x' => 1, ApiResult::META_TYPE => 'array' ] ], '<?xml version="1.0"?><api><_v><_v>1</_v></_v></api>' ],
+                       [ [ [ 'x' => 1, 'y' => [ 'z' => 1 ], ApiResult::META_TYPE => 'kvp' ] ],
+                               '<?xml version="1.0"?><api><_v><_v _name="x" xml:space="preserve">1</_v><_v _name="y"><z xml:space="preserve">1</z></_v></_v></api>' ],
+                       [ [ [ 'x' => 1, ApiResult::META_TYPE => 'kvp', ApiResult::META_INDEXED_TAG_NAME => 'i', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+                               '<?xml version="1.0"?><api><_v><i key="x" xml:space="preserve">1</i></_v></api>' ],
+                       [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCkvp', ApiResult::META_KVP_KEY_NAME => 'key' ] ],
+                               '<?xml version="1.0"?><api><_v><_v key="x" xml:space="preserve">1</_v></_v></api>' ],
+                       [ [ [ 'x' => 1, ApiResult::META_TYPE => 'BCarray' ] ], '<?xml version="1.0"?><api><_v x="1" /></api>' ],
+                       [ [ [ 'a', 'b', ApiResult::META_TYPE => 'BCassoc' ] ], '<?xml version="1.0"?><api><_v><_v _idx="0">a</_v><_v _idx="1">b</_v></_v></api>' ],
 
                        // Content
-                       array( array( 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
-                               '<?xml version="1.0"?><api xml:space="preserve">foo</api>' ),
+                       [ [ 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+                               '<?xml version="1.0"?><api xml:space="preserve">foo</api>' ],
 
                        // Specified element name
-                       array( array( 'foo', 'bar', ApiResult::META_INDEXED_TAG_NAME => 'itn' ),
-                               '<?xml version="1.0"?><api><itn>foo</itn><itn>bar</itn></api>' ),
+                       [ [ 'foo', 'bar', ApiResult::META_INDEXED_TAG_NAME => 'itn' ],
+                               '<?xml version="1.0"?><api><itn>foo</itn><itn>bar</itn></api>' ],
 
                        // Subelements
-                       array( array( 'a' => 1, 's' => 1, '_subelements' => array( 's' ) ),
-                               '<?xml version="1.0"?><api a="1"><s xml:space="preserve">1</s></api>' ),
+                       [ [ 'a' => 1, 's' => 1, '_subelements' => [ 's' ] ],
+                               '<?xml version="1.0"?><api a="1"><s xml:space="preserve">1</s></api>' ],
 
                        // Content and subelement
-                       array( array( 'a' => 1, 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
-                               '<?xml version="1.0"?><api a="1" xml:space="preserve">foo</api>' ),
-                       array( array( 's' => array(), 'content' => 'foo', ApiResult::META_CONTENT => 'content' ),
-                               '<?xml version="1.0"?><api><s /><content xml:space="preserve">foo</content></api>' ),
-                       array(
-                               array(
+                       [ [ 'a' => 1, 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+                               '<?xml version="1.0"?><api a="1" xml:space="preserve">foo</api>' ],
+                       [ [ 's' => [], 'content' => 'foo', ApiResult::META_CONTENT => 'content' ],
+                               '<?xml version="1.0"?><api><s /><content xml:space="preserve">foo</content></api>' ],
+                       [
+                               [
                                        's' => 1,
                                        'content' => 'foo',
                                        ApiResult::META_CONTENT => 'content',
-                                       ApiResult::META_SUBELEMENTS => array( 's' )
-                               ),
+                                       ApiResult::META_SUBELEMENTS => [ 's' ]
+                               ],
                                '<?xml version="1.0"?><api><s xml:space="preserve">1</s><content xml:space="preserve">foo</content></api>'
-                       ),
+                       ],
 
                        // BC Subelements
-                       array( array( 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => array( 'foo' ) ),
-                               '<?xml version="1.0"?><api><foo xml:space="preserve">foo</foo></api>' ),
+                       [ [ 'foo' => 'foo', ApiResult::META_BC_SUBELEMENTS => [ 'foo' ] ],
+                               '<?xml version="1.0"?><api><foo xml:space="preserve">foo</foo></api>' ],
 
                        // Name mangling
-                       array( array( 'foo.bar' => 1 ), '<?xml version="1.0"?><api foo.bar="1" />' ),
-                       array( array( '' => 1 ), '<?xml version="1.0"?><api _="1" />' ),
-                       array( array( 'foo bar' => 1 ), '<?xml version="1.0"?><api _foo.20.bar="1" />' ),
-                       array( array( 'foo:bar' => 1 ), '<?xml version="1.0"?><api _foo.3A.bar="1" />' ),
-                       array( array( 'foo%.bar' => 1 ), '<?xml version="1.0"?><api _foo.25..2E.bar="1" />' ),
-                       array( array( '4foo' => 1, 'foo4' => 1 ), '<?xml version="1.0"?><api _4foo="1" foo4="1" />' ),
-                       array( array( "foo\xe3\x80\x80bar" => 1 ), '<?xml version="1.0"?><api _foo.3000.bar="1" />' ),
-                       array( array( 'foo:bar' => 1, ApiResult::META_PRESERVE_KEYS => array( 'foo:bar' ) ),
-                               '<?xml version="1.0"?><api foo:bar="1" />' ),
-                       array( array( 'a', 'b', ApiResult::META_INDEXED_TAG_NAME => 'foo bar' ),
-                               '<?xml version="1.0"?><api><_foo.20.bar>a</_foo.20.bar><_foo.20.bar>b</_foo.20.bar></api>' ),
+                       [ [ 'foo.bar' => 1 ], '<?xml version="1.0"?><api foo.bar="1" />' ],
+                       [ [ '' => 1 ], '<?xml version="1.0"?><api _="1" />' ],
+                       [ [ 'foo bar' => 1 ], '<?xml version="1.0"?><api _foo.20.bar="1" />' ],
+                       [ [ 'foo:bar' => 1 ], '<?xml version="1.0"?><api _foo.3A.bar="1" />' ],
+                       [ [ 'foo%.bar' => 1 ], '<?xml version="1.0"?><api _foo.25..2E.bar="1" />' ],
+                       [ [ '4foo' => 1, 'foo4' => 1 ], '<?xml version="1.0"?><api _4foo="1" foo4="1" />' ],
+                       [ [ "foo\xe3\x80\x80bar" => 1 ], '<?xml version="1.0"?><api _foo.3000.bar="1" />' ],
+                       [ [ 'foo:bar' => 1, ApiResult::META_PRESERVE_KEYS => [ 'foo:bar' ] ],
+                               '<?xml version="1.0"?><api foo:bar="1" />' ],
+                       [ [ 'a', 'b', ApiResult::META_INDEXED_TAG_NAME => 'foo bar' ],
+                               '<?xml version="1.0"?><api><_foo.20.bar>a</_foo.20.bar><_foo.20.bar>b</_foo.20.bar></api>' ],
 
                        // includenamespace param
-                       array( array( 'x' => 'foo' ), '<?xml version="1.0"?><api x="foo" xmlns="http://www.mediawiki.org/xml/api/" />',
-                               array( 'includexmlnamespace' => 1 ) ),
+                       [ [ 'x' => 'foo' ], '<?xml version="1.0"?><api x="foo" xmlns="http://www.mediawiki.org/xml/api/" />',
+                               [ 'includexmlnamespace' => 1 ] ],
 
                        // xslt param
-                       array( array(), '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Invalid or non-existent stylesheet specified</xml></warnings></api>',
-                               array( 'xslt' => 'DoesNotExist' ) ),
-                       array( array(), '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should be in the MediaWiki namespace.</xml></warnings></api>',
-                               array( 'xslt' => 'ApiFormatXmlTest' ) ),
-                       array( array(), '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should have .xsl extension.</xml></warnings></api>',
-                               array( 'xslt' => 'MediaWiki:ApiFormatXmlTest' ) ),
-                       array( array(),
+                       [ [], '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Invalid or non-existent stylesheet specified</xml></warnings></api>',
+                               [ 'xslt' => 'DoesNotExist' ] ],
+                       [ [], '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should be in the MediaWiki namespace.</xml></warnings></api>',
+                               [ 'xslt' => 'ApiFormatXmlTest' ] ],
+                       [ [], '<?xml version="1.0"?><api><warnings><xml xml:space="preserve">Stylesheet should have .xsl extension.</xml></warnings></api>',
+                               [ 'xslt' => 'MediaWiki:ApiFormatXmlTest' ] ],
+                       [ [],
                                '<?xml version="1.0"?><?xml-stylesheet href="' .
                                        htmlspecialchars( Title::newFromText( 'MediaWiki:ApiFormatXmlTest.xsl' )->getLocalURL( 'action=raw' ) ) .
                                        '" type="text/xsl" ?><api />',
-                               array( 'xslt' => 'MediaWiki:ApiFormatXmlTest.xsl' ) ),
-               );
+                               [ 'xslt' => 'MediaWiki:ApiFormatXmlTest.xsl' ] ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index 9643d13..d92fb8f 100644 (file)
@@ -22,11 +22,20 @@ class CssContentHandlerTest extends MediaWikiLangTestCase {
         */
        public static function provideMakeRedirectContent() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array( 'MediaWiki:MonoBook.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);" ),
-                       array( 'User:FooBar/common.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);" ),
-                       array( 'Gadget:FooBaz.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
-               );
+               return [
+                       [
+                               'MediaWiki:MonoBook.css',
+                               "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);"
+                       ],
+                       [
+                               'User:FooBar/common.css',
+                               "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);"
+                       ],
+                       [
+                               'Gadget:FooBaz.css',
+                               "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);"
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index 17f653c..d229623 100644 (file)
@@ -22,11 +22,20 @@ class JavaScriptContentHandlerTest extends MediaWikiLangTestCase {
         */
        public static function provideMakeRedirectContent() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array( 'MediaWiki:MonoBook.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");' ),
-                       array( 'User:FooBar/common.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");' ),
-                       array( 'Gadget:FooBaz.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");' ),
-               );
+               return [
+                       [
+                               'MediaWiki:MonoBook.js',
+                               '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
+                       [
+                               'User:FooBar/common.js',
+                               '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
+                       [
+                               'Gadget:FooBaz.js',
+                               '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index abe352a..97e0b1c 100644 (file)
@@ -141,16 +141,6 @@ class JavaScriptContentTest extends TextContentTest {
                ];
        }
 
-       /**
-        * @todo Test needs database!
-        */
-       /*
-       public function getRedirectChain() {
-               $text = $this->getNativeData();
-               return Title::newFromRedirectArray( $text );
-       }
-       */
-
        /**
         * @todo Test needs database!
         */
@@ -278,10 +268,10 @@ class JavaScriptContentTest extends TextContentTest {
                        ],
 
                        // @codingStandardsIgnoreStart Generic.Files.LineLength
-                       array(
+                       [
                                '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");',
                                '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=TestUpdateRedirect_target\u0026action=raw\u0026ctype=text/javascript");'
-                       )
+                       ]
                        // @codingStandardsIgnoreEnd
                ];
        }
@@ -333,15 +323,30 @@ class JavaScriptContentTest extends TextContentTest {
         */
        public static function provideGetRedirectTarget() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array( 'MediaWiki:MonoBook.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");' ),
-                       array( 'User:FooBar/common.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");' ),
-                       array( 'Gadget:FooBaz.js', '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");' ),
+               return [
+                       [
+                               'MediaWiki:MonoBook.js',
+                               '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=MediaWiki:MonoBook.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
+                       [
+                               'User:FooBar/common.js',
+                               '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=User:FooBar/common.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
+                       [
+                               'Gadget:FooBaz.js',
+                               '/* #REDIRECT */mw.loader.load("//example.org/w/index.php?title=Gadget:FooBaz.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
                        // No #REDIRECT comment
-                       array( null, 'mw.loader.load("//example.org/w/index.php?title=MediaWiki:NoRedirect.js\u0026action=raw\u0026ctype=text/javascript");' ),
+                       [
+                               null,
+                               'mw.loader.load("//example.org/w/index.php?title=MediaWiki:NoRedirect.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
                        // Different domain
-                       array( null, '/* #REDIRECT */mw.loader.load("//example.com/w/index.php?title=MediaWiki:OtherWiki.js\u0026action=raw\u0026ctype=text/javascript");' ),
-               );
+                       [
+                               null,
+                               '/* #REDIRECT */mw.loader.load("//example.com/w/index.php?title=MediaWiki:OtherWiki.js\u0026action=raw\u0026ctype=text/javascript");'
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index 93bf716..d89f3eb 100644 (file)
@@ -180,16 +180,6 @@ class TextContentTest extends MediaWikiLangTestCase {
                $this->assertEquals( !is_null( $expected ), $content->isRedirect() );
        }
 
-       /**
-        * @todo Test needs database! Should be done by a test class in the Database group.
-        */
-       /*
-       public function getRedirectChain() {
-               $text = $this->getNativeData();
-               return Title::newFromRedirectArray( $text );
-       }
-       */
-
        /**
         * @todo Test needs database! Should be done by a test class in the Database group.
         */
index 168b2c6..bb747c7 100644 (file)
@@ -339,7 +339,7 @@ class DatabaseMysqlBaseTest extends MediaWikiTestCase {
 
                $db->expects( $this->any() )
                        ->method( 'getHeartbeatData' )
-                       ->with( 172 )
+                       ->with( [ 'server_id' => 172 ] )
                        ->will( $this->returnValue( [ $ptTimeISO, $now ] ) );
 
                $db->setLBInfo( 'clusterMasterHost', 'db1052' );
index f4aac23..9d05d15 100644 (file)
@@ -37,8 +37,8 @@ class ImportTest extends MediaWikiLangTestCase {
 
        public function getUnknownTagsXML() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array(
+               return [
+                       [
                                <<< EOF
 <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
   <page unknown="123" dontknow="533">
@@ -68,8 +68,8 @@ EOF
                                ,
                                'noitazinagro tseb eht si ikiWaideM',
                                'TestImportPage'
-                       )
-               );
+                       ]
+               ];
                // @codingStandardsIgnoreEnd
        }
 
@@ -102,8 +102,8 @@ EOF
 
        public function getRedirectXML() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array(
+               return [
+                       [
                                <<< EOF
 <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
        <page>
@@ -129,8 +129,8 @@ EOF
 EOF
                        ,
                                'Test22'
-                       ),
-                       array(
+                       ],
+                       [
                                <<< EOF
 <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.9/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.9/ http://www.mediawiki.org/xml/export-0.9.xsd" version="0.9" xml:lang="en">
        <page>
@@ -154,8 +154,8 @@ EOF
 EOF
                        ,
                                null
-                       ),
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
@@ -185,8 +185,8 @@ EOF
 
        public function getSiteInfoXML() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array(
+               return [
+                       [
                                <<< EOF
 <mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
   <siteinfo>
@@ -204,7 +204,7 @@ EOF
 </mediawiki>
 EOF
                        ,
-                               array(
+                               [
                                        '-2' => 'Media',
                                        '-1' => 'Special',
                                        '0' => '',
@@ -213,9 +213,9 @@ EOF
                                        '3' => 'User talk',
                                        '100' => 'Portal',
                                        '101' => 'Portal talk',
-                               )
-                       ),
-               );
+                               ]
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index 8902ecd..5f5a1e8 100644 (file)
@@ -189,192 +189,192 @@ class CSSMinTest extends MediaWikiTestCase {
                        . '%228%22%3E%0A%3Ccircle%20cx%3D%224%22%20cy%3D%224%22%20r%3D%222%22%2F%3E%0A%3C%2Fsvg%3E%0A';
 
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
-                       array(
+               return [
+                       [
                                'Regular file',
                                'foo { background: url(red.gif); }',
                                'foo { background: url(http://localhost/w/red.gif?34ac6); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Regular file (missing)',
                                'foo { background: url(theColorOfHerHair.gif); }',
                                'foo { background: url(http://localhost/w/theColorOfHerHair.gif); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Remote URL',
                                'foo { background: url(http://example.org/w/foo.png); }',
                                'foo { background: url(http://example.org/w/foo.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Protocol-relative remote URL',
                                'foo { background: url(//example.org/w/foo.png); }',
                                'foo { background: url(//example.org/w/foo.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Remote URL with query',
                                'foo { background: url(http://example.org/w/foo.png?query=yes); }',
                                'foo { background: url(http://example.org/w/foo.png?query=yes); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Protocol-relative remote URL with query',
                                'foo { background: url(//example.org/w/foo.png?query=yes); }',
                                'foo { background: url(//example.org/w/foo.png?query=yes); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Domain-relative URL',
                                'foo { background: url(/static/foo.png); }',
                                'foo { background: url(http://doc.example.org/static/foo.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Domain-relative URL with query',
                                'foo { background: url(/static/foo.png?query=yes); }',
                                'foo { background: url(http://doc.example.org/static/foo.png?query=yes); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Remote URL (unnecessary quotes not preserved)',
                                'foo { background: url("http://example.org/w/foo.png"); }',
                                'foo { background: url(http://example.org/w/foo.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Embedded file',
                                'foo { /* @embed */ background: url(red.gif); }',
                                "foo { background: url($red); background: url(http://localhost/w/red.gif?34ac6)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Embedded file, other comments before the rule',
                                "foo { /* Bar. */ /* @embed */ background: url(red.gif); }",
                                "foo { /* Bar. */ background: url($red); /* Bar. */ background: url(http://localhost/w/red.gif?34ac6)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Can not re-embed data: URIs',
                                "foo { /* @embed */ background: url($red); }",
                                "foo { background: url($red); }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Can not remap data: URIs',
                                "foo { background: url($red); }",
                                "foo { background: url($red); }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Can not embed remote URLs',
                                'foo { /* @embed */ background: url(http://example.org/w/foo.png); }',
                                'foo { background: url(http://example.org/w/foo.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Embedded file (inline @embed)',
                                'foo { background: /* @embed */ url(red.gif); }',
                                "foo { background: url($red); "
                                        . "background: url(http://localhost/w/red.gif?34ac6)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Can not embed large files',
                                'foo { /* @embed */ background: url(large.png); }',
                                "foo { background: url(http://localhost/w/large.png?e3d1f); }",
-                       ),
-                       array(
+                       ],
+                       [
                                'SVG files are embedded without base64 encoding and unnecessary IE 6 and 7 fallback',
                                'foo { /* @embed */ background: url(circle.svg); }',
                                "foo { background: url($svg); }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Two regular files in one rule',
                                'foo { background: url(red.gif), url(green.gif); }',
                                'foo { background: url(http://localhost/w/red.gif?34ac6), '
                                        . 'url(http://localhost/w/green.gif?13651); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Two embedded files in one rule',
                                'foo { /* @embed */ background: url(red.gif), url(green.gif); }',
                                "foo { background: url($red), url($green); "
                                        . "background: url(http://localhost/w/red.gif?34ac6), "
                                        . "url(http://localhost/w/green.gif?13651)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Two embedded files in one rule (inline @embed)',
                                'foo { background: /* @embed */ url(red.gif), /* @embed */ url(green.gif); }',
                                "foo { background: url($red), url($green); "
                                        . "background: url(http://localhost/w/red.gif?34ac6), "
                                        . "url(http://localhost/w/green.gif?13651)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Two embedded files in one rule (inline @embed), one too large',
                                'foo { background: /* @embed */ url(red.gif), /* @embed */ url(large.png); }',
                                "foo { background: url($red), url(http://localhost/w/large.png?e3d1f); "
                                        . "background: url(http://localhost/w/red.gif?34ac6), "
                                        . "url(http://localhost/w/large.png?e3d1f)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Practical example with some noise',
                                'foo { /* @embed */ background: #f9f9f9 url(red.gif) 0 0 no-repeat; }',
                                "foo { background: #f9f9f9 url($red) 0 0 no-repeat; "
                                        . "background: #f9f9f9 url(http://localhost/w/red.gif?34ac6) 0 0 no-repeat!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Does not mess with other properties',
                                'foo { color: red; background: url(red.gif); font-size: small; }',
                                'foo { color: red; background: url(http://localhost/w/red.gif?34ac6); font-size: small; }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Spacing and miscellanea not changed (1)',
                                'foo {   background:    url(red.gif);  }',
                                'foo {   background:    url(http://localhost/w/red.gif?34ac6);  }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Spacing and miscellanea not changed (2)',
                                'foo {background:url(red.gif)}',
                                'foo {background:url(http://localhost/w/red.gif?34ac6)}',
-                       ),
-                       array(
+                       ],
+                       [
                                'Spaces within url() parentheses are ignored',
                                'foo { background: url( red.gif ); }',
                                'foo { background: url(http://localhost/w/red.gif?34ac6); }',
-                       ),
-                       array(
+                       ],
+                       [
                                '@import rule to local file (should we remap this?)',
                                '@import url(/styles.css)',
                                '@import url(http://doc.example.org/styles.css)',
-                       ),
-                       array(
+                       ],
+                       [
                                '@import rule to URL (should we remap this?)',
                                '@import url(//localhost/styles.css?query=yes)',
                                '@import url(//localhost/styles.css?query=yes)',
-                       ),
-                       array(
+                       ],
+                       [
                                'Simple case with comments before url',
                                'foo { prop: /* some {funny;} comment */ url(bar.png); }',
                                'foo { prop: /* some {funny;} comment */ url(http://localhost/w/bar.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Simple case with comments after url',
                                'foo { prop: url(red.gif)/* some {funny;} comment */ ; }',
                                'foo { prop: url(http://localhost/w/red.gif?34ac6)/* some {funny;} comment */ ; }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Embedded file with comment before url',
                                'foo { /* @embed */ background: /* some {funny;} comment */ url(red.gif); }',
                                "foo { background: /* some {funny;} comment */ url($red); background: /* some {funny;} comment */ url(http://localhost/w/red.gif?34ac6)!ie; }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Embedded file with comments inside and outside the rule',
                                'foo { /* @embed */ background: url(red.gif) /* some {foo;} comment */; /* some {bar;} comment */ }',
                                "foo { background: url($red) /* some {foo;} comment */; background: url(http://localhost/w/red.gif?34ac6) /* some {foo;} comment */!ie; /* some {bar;} comment */ }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Embedded file with comment outside the rule',
                                'foo { /* @embed */ background: url(red.gif); /* some {funny;} comment */ }',
                                "foo { background: url($red); background: url(http://localhost/w/red.gif?34ac6)!ie; /* some {funny;} comment */ }",
-                       ),
-                       array(
+                       ],
+                       [
                                'Rule with two urls, each with comments',
                                '{ background: /*asd*/ url(something.png); background: /*jkl*/ url(something.png); }',
                                '{ background: /*asd*/ url(http://localhost/w/something.png); background: /*jkl*/ url(http://localhost/w/something.png); }',
-                       ),
-                       array(
+                       ],
+                       [
                                'Sanity check for offending line from jquery.ui.theme.css (bug 60077)',
                                '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
                                '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(http://localhost/w/images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }',
-                       ),
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index bf23890..f24b68b 100644 (file)
@@ -78,7 +78,10 @@ class GIFHandlerTest extends MediaWikiMediaTestCase {
                        [ null, GIFHandler::METADATA_BAD ],
                        [ 'Something invalid!', GIFHandler::METADATA_BAD ],
                        // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-                       array( 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}', GIFHandler::METADATA_GOOD ),
+                       [
+                               'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}',
+                               GIFHandler::METADATA_GOOD
+                       ],
                        // @codingStandardsIgnoreEnd
                ];
        }
@@ -98,8 +101,14 @@ class GIFHandlerTest extends MediaWikiMediaTestCase {
        public static function provideGetMetadata() {
                return [
                        // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-                       array( 'nonanimated.gif', 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}' ),
-                       array( 'animated-xmp.gif', 'a:4:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}}' ),
+                       [
+                               'nonanimated.gif',
+                               'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}'
+                       ],
+                       [
+                               'animated-xmp.gif',
+                               'a:4:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}}'
+                       ],
                        // @codingStandardsIgnoreEnd
                ];
        }
index 4417c4f..afc338e 100644 (file)
@@ -79,7 +79,10 @@ class PNGHandlerTest extends MediaWikiMediaTestCase {
                        [ null, PNGHandler::METADATA_BAD ],
                        [ 'Something invalid!', PNGHandler::METADATA_BAD ],
                        // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-                       array( 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}', PNGHandler::METADATA_GOOD ),
+                       [
+                               'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}',
+                               PNGHandler::METADATA_GOOD
+                       ],
                        // @codingStandardsIgnoreEnd
                ];
        }
@@ -100,8 +103,14 @@ class PNGHandlerTest extends MediaWikiMediaTestCase {
        public static function provideGetMetadata() {
                return [
                        // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-                       array( 'rgb-na-png.png', 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}' ),
-                       array( 'xmp.png', 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}' ),
+                       [
+                               'rgb-na-png.png',
+                               'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}'
+                       ],
+                       [
+                               'xmp.png',
+                               'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}'
+                       ],
                        // @codingStandardsIgnoreEnd
                ];
        }
index dfa92f1..f51693d 100644 (file)
@@ -20,53 +20,53 @@ class WebPHandlerTest extends MediaWikiTestCase {
        }
        public function provideTestExtractMetaData() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // Files from https://developers.google.com/speed/webp/gallery2
-                       array( "\x52\x49\x46\x46\x90\x68\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x83\x68\x01\x00\x2F\x8F\x01\x4B\x10\x8D\x38\x6C\xDB\x46\x92\xE0\xE0\x82\x7B\x6C",
-                               array( 'compression' => 'lossless', 'width' => 400, 'height' => 301 ) ),
-                       array( "\x52\x49\x46\x46\x64\x5B\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x8F\x01\x00\x2C\x01\x00\x41\x4C\x50\x48\xE5\x0E",
-                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301 ) ),
-                       array( "\x52\x49\x46\x46\xA8\x72\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x9B\x72\x00\x00\x2F\x81\x81\x62\x10\x8D\x40\x8C\x24\x39\x6E\x73\x73\x38\x01\x96",
-                               array( 'compression' => 'lossless', 'width' => 386, 'height' => 395 ) ),
-                       array( "\x52\x49\x46\x46\xE0\x42\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x81\x01\x00\x8A\x01\x00\x41\x4C\x50\x48\x56\x10",
-                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 386, 'height' => 395 ) ),
-                       array( "\x52\x49\x46\x46\x70\x61\x02\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x63\x61\x02\x00\x2F\x1F\xC3\x95\x10\x8D\xC8\x72\xDB\xC8\x92\x24\xD8\x91\xD9\x91",
-                               array( 'compression' => 'lossless', 'width' => 800, 'height' => 600 ) ),
-                       array( "\x52\x49\x46\x46\x1C\x1D\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x1F\x03\x00\x57\x02\x00\x41\x4C\x50\x48\x25\x8B",
-                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 800, 'height' => 600 ) ),
-                       array( "\x52\x49\x46\x46\xFA\xC5\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xEE\xC5\x00\x00\x2F\xA4\x81\x28\x10\x8D\x40\x68\x24\xC9\x91\xA4\xAE\xF3\x97\x75",
-                               array( 'compression' => 'lossless', 'width' => 421, 'height' => 163 ) ),
-                       array( "\x52\x49\x46\x46\xF6\x5D\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\xA4\x01\x00\xA2\x00\x00\x41\x4C\x50\x48\x38\x1A",
-                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 421, 'height' => 163 ) ),
-                       array( "\x52\x49\x46\x46\xC4\x96\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xB8\x96\x01\x00\x2F\x2B\xC1\x4A\x10\x11\x87\x6D\xDB\x48\x12\xFC\x60\xB0\x83\x24",
-                               array( 'compression' => 'lossless', 'width' => 300, 'height' => 300 ) ),
-                       array( "\x52\x49\x46\x46\x0A\x11\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x2B\x01\x00\x2B\x01\x00\x41\x4C\x50\x48\x67\x6E",
-                               array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 300, 'height' => 300 ) ),
+                       [ "\x52\x49\x46\x46\x90\x68\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x83\x68\x01\x00\x2F\x8F\x01\x4B\x10\x8D\x38\x6C\xDB\x46\x92\xE0\xE0\x82\x7B\x6C",
+                               [ 'compression' => 'lossless', 'width' => 400, 'height' => 301 ] ],
+                       [ "\x52\x49\x46\x46\x64\x5B\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x8F\x01\x00\x2C\x01\x00\x41\x4C\x50\x48\xE5\x0E",
+                               [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301 ] ],
+                       [ "\x52\x49\x46\x46\xA8\x72\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x9B\x72\x00\x00\x2F\x81\x81\x62\x10\x8D\x40\x8C\x24\x39\x6E\x73\x73\x38\x01\x96",
+                               [ 'compression' => 'lossless', 'width' => 386, 'height' => 395 ] ],
+                       [ "\x52\x49\x46\x46\xE0\x42\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x81\x01\x00\x8A\x01\x00\x41\x4C\x50\x48\x56\x10",
+                               [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 386, 'height' => 395 ] ],
+                       [ "\x52\x49\x46\x46\x70\x61\x02\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x63\x61\x02\x00\x2F\x1F\xC3\x95\x10\x8D\xC8\x72\xDB\xC8\x92\x24\xD8\x91\xD9\x91",
+                               [ 'compression' => 'lossless', 'width' => 800, 'height' => 600 ] ],
+                       [ "\x52\x49\x46\x46\x1C\x1D\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x1F\x03\x00\x57\x02\x00\x41\x4C\x50\x48\x25\x8B",
+                               [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 800, 'height' => 600 ] ],
+                       [ "\x52\x49\x46\x46\xFA\xC5\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xEE\xC5\x00\x00\x2F\xA4\x81\x28\x10\x8D\x40\x68\x24\xC9\x91\xA4\xAE\xF3\x97\x75",
+                               [ 'compression' => 'lossless', 'width' => 421, 'height' => 163 ] ],
+                       [ "\x52\x49\x46\x46\xF6\x5D\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\xA4\x01\x00\xA2\x00\x00\x41\x4C\x50\x48\x38\x1A",
+                               [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 421, 'height' => 163 ] ],
+                       [ "\x52\x49\x46\x46\xC4\x96\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\xB8\x96\x01\x00\x2F\x2B\xC1\x4A\x10\x11\x87\x6D\xDB\x48\x12\xFC\x60\xB0\x83\x24",
+                               [ 'compression' => 'lossless', 'width' => 300, 'height' => 300 ] ],
+                       [ "\x52\x49\x46\x46\x0A\x11\x01\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x2B\x01\x00\x2B\x01\x00\x41\x4C\x50\x48\x67\x6E",
+                               [ 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 300, 'height' => 300 ] ],
 
                        // Lossy files from https://developers.google.com/speed/webp/gallery1
-                       array( "\x52\x49\x46\x46\x68\x76\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\x5C\x76\x00\x00\xD2\xBE\x01\x9D\x01\x2A\x26\x02\x70\x01\x3E\xD5\x4E\x97\x43\xA2",
-                               array( 'compression' => 'lossy', 'width' => 550, 'height' => 368 ) ),
-                       array( "\x52\x49\x46\x46\xB0\xEC\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\xA4\xEC\x00\x00\xB2\x4B\x02\x9D\x01\x2A\x26\x02\x94\x01\x3E\xD1\x50\x96\x46\x26",
-                               array( 'compression' => 'lossy', 'width' => 550, 'height' => 404 ) ),
-                       array( "\x52\x49\x46\x46\x7A\x19\x03\x00\x57\x45\x42\x50\x56\x50\x38\x20\x6E\x19\x03\x00\xB2\xF8\x09\x9D\x01\x2A\x00\x05\xD0\x02\x3E\xAD\x46\x99\x4A\xA5",
-                               array( 'compression' => 'lossy', 'width' => 1280, 'height' => 720 ) ),
-                       array( "\x52\x49\x46\x46\x44\xB3\x02\x00\x57\x45\x42\x50\x56\x50\x38\x20\x38\xB3\x02\x00\x52\x57\x06\x9D\x01\x2A\x00\x04\x04\x03\x3E\xA5\x44\x96\x49\x26",
-                               array( 'compression' => 'lossy', 'width' => 1024, 'height' => 772 ) ),
-                       array( "\x52\x49\x46\x46\x02\x43\x01\x00\x57\x45\x42\x50\x56\x50\x38\x20\xF6\x42\x01\x00\x12\xC0\x05\x9D\x01\x2A\x00\x04\xF0\x02\x3E\x79\x34\x93\x47\xA4",
-                               array( 'compression' => 'lossy', 'width' => 1024, 'height' => 752 ) ),
+                       [ "\x52\x49\x46\x46\x68\x76\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\x5C\x76\x00\x00\xD2\xBE\x01\x9D\x01\x2A\x26\x02\x70\x01\x3E\xD5\x4E\x97\x43\xA2",
+                               [ 'compression' => 'lossy', 'width' => 550, 'height' => 368 ] ],
+                       [ "\x52\x49\x46\x46\xB0\xEC\x00\x00\x57\x45\x42\x50\x56\x50\x38\x20\xA4\xEC\x00\x00\xB2\x4B\x02\x9D\x01\x2A\x26\x02\x94\x01\x3E\xD1\x50\x96\x46\x26",
+                               [ 'compression' => 'lossy', 'width' => 550, 'height' => 404 ] ],
+                       [ "\x52\x49\x46\x46\x7A\x19\x03\x00\x57\x45\x42\x50\x56\x50\x38\x20\x6E\x19\x03\x00\xB2\xF8\x09\x9D\x01\x2A\x00\x05\xD0\x02\x3E\xAD\x46\x99\x4A\xA5",
+                               [ 'compression' => 'lossy', 'width' => 1280, 'height' => 720 ] ],
+                       [ "\x52\x49\x46\x46\x44\xB3\x02\x00\x57\x45\x42\x50\x56\x50\x38\x20\x38\xB3\x02\x00\x52\x57\x06\x9D\x01\x2A\x00\x04\x04\x03\x3E\xA5\x44\x96\x49\x26",
+                               [ 'compression' => 'lossy', 'width' => 1024, 'height' => 772 ] ],
+                       [ "\x52\x49\x46\x46\x02\x43\x01\x00\x57\x45\x42\x50\x56\x50\x38\x20\xF6\x42\x01\x00\x12\xC0\x05\x9D\x01\x2A\x00\x04\xF0\x02\x3E\x79\x34\x93\x47\xA4",
+                               [ 'compression' => 'lossy', 'width' => 1024, 'height' => 752 ] ],
 
                        // Animated file from https://groups.google.com/a/chromium.org/d/topic/blink-dev/Y8tRC4mdQz8/discussion
-                       array( "\x52\x49\x46\x46\xD0\x0B\x02\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x12\x00\x00\x00\x3F\x01\x00\x3F\x01\x00\x41\x4E",
-                               array( 'compression' => 'unknown', 'animated' => true, 'transparency' => true, 'width' => 320, 'height' => 320 ) ),
+                       [ "\x52\x49\x46\x46\xD0\x0B\x02\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x12\x00\x00\x00\x3F\x01\x00\x3F\x01\x00\x41\x4E",
+                               [ 'compression' => 'unknown', 'animated' => true, 'transparency' => true, 'width' => 320, 'height' => 320 ] ],
 
                        // Error cases
-                       array( '', false ),
-                       array( '                                    ', false ),
-                       array( 'RIFF                                ', false ),
-                       array( 'RIFF1234WEBP                        ', false ),
-                       array( 'RIFF1234WEBPVP8                     ', false ),
-                       array( 'RIFF1234WEBPVP8L                    ', false ),
-               );
+                       [ '', false ],
+                       [ '                                    ', false ],
+                       [ 'RIFF                                ', false ],
+                       [ 'RIFF1234WEBP                        ', false ],
+                       [ 'RIFF1234WEBPVP8                     ', false ],
+                       [ 'RIFF1234WEBPVP8L                    ', false ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index d488eee..10e0f59 100644 (file)
@@ -767,22 +767,6 @@ more stuff
                ];
        }
 
-       /**
-        * @dataProvider dataReplaceSection
-        * @covers WikiPage::replaceSection
-        */
-       public function testReplaceSection( $title, $model, $text, $section, $with,
-               $sectionTitle, $expected
-       ) {
-               $this->hideDeprecated( "WikiPage::replaceSection" );
-
-               $page = $this->createPage( $title, $text, $model );
-               $text = $page->replaceSection( $section, $with, $sectionTitle );
-               $text = trim( $text );
-
-               $this->assertEquals( $expected, $text );
-       }
-
        /**
         * @dataProvider dataReplaceSection
         * @covers WikiPage::replaceSectionContent
index e55b9e5..4204601 100644 (file)
@@ -29,93 +29,93 @@ class PreprocessorTest extends MediaWikiTestCase {
 
        public static function provideCases() {
                // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-               return array(
-                       array( "Foo", "<root>Foo</root>" ),
-                       array( "<!-- Foo -->", "<root><comment>&lt;!-- Foo --&gt;</comment></root>" ),
-                       array( "<!-- Foo --><!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment><comment>&lt;!-- Bar --&gt;</comment></root>" ),
-                       array( "<!-- Foo -->  <!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment>  <comment>&lt;!-- Bar --&gt;</comment></root>" ),
-                       array( "<!-- Foo --> \n <!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment> \n <comment>&lt;!-- Bar --&gt;</comment></root>" ),
-                       array( "<!-- Foo --> \n <!-- Bar -->\n", "<root><comment>&lt;!-- Foo --&gt;</comment> \n<comment> &lt;!-- Bar --&gt;\n</comment></root>" ),
-                       array( "<!-- Foo -->  <!-- Bar -->\n", "<root><comment>&lt;!-- Foo --&gt;</comment>  <comment>&lt;!-- Bar --&gt;</comment>\n</root>" ),
-                       array( "<!-->Bar", "<root><comment>&lt;!--&gt;Bar</comment></root>" ),
-                       array( "<!-- Comment -- comment", "<root><comment>&lt;!-- Comment -- comment</comment></root>" ),
-                       array( "== Foo ==\n  <!-- Bar -->\n== Baz ==\n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<comment>  &lt;!-- Bar --&gt;\n</comment><h level=\"2\" i=\"2\">== Baz ==</h>\n</root>" ),
-                       array( "<gallery/>", "<root><ext><name>gallery</name><attr></attr></ext></root>" ),
-                       array( "Foo <gallery/> Bar", "<root>Foo <ext><name>gallery</name><attr></attr></ext> Bar</root>" ),
-                       array( "<gallery></gallery>", "<root><ext><name>gallery</name><attr></attr><inner></inner><close>&lt;/gallery&gt;</close></ext></root>" ),
-                       array( "<foo> <gallery></gallery>", "<root>&lt;foo&gt; <ext><name>gallery</name><attr></attr><inner></inner><close>&lt;/gallery&gt;</close></ext></root>" ),
-                       array( "<foo> <gallery><gallery></gallery>", "<root>&lt;foo&gt; <ext><name>gallery</name><attr></attr><inner>&lt;gallery&gt;</inner><close>&lt;/gallery&gt;</close></ext></root>" ),
-                       array( "<noinclude> Foo bar </noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore> Foo bar <ignore>&lt;/noinclude&gt;</ignore></root>" ),
-                       array( "<noinclude>\n{{Foo}}\n</noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore></root>" ),
-                       array( "<noinclude>\n{{Foo}}\n</noinclude>\n", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore>\n</root>" ),
-                       array( "<gallery>foo bar", "<root><ext><name>gallery</name><attr></attr><inner>foo bar</inner></ext></root>" ),
-                       array( "<{{foo}}>", "<root>&lt;<template><title>foo</title></template>&gt;</root>" ),
-                       array( "<{{{foo}}}>", "<root>&lt;<tplarg><title>foo</title></tplarg>&gt;</root>" ),
-                       array( "<gallery></gallery</gallery>", "<root><ext><name>gallery</name><attr></attr><inner>&lt;/gallery</inner><close>&lt;/gallery&gt;</close></ext></root>" ),
-                       array( "=== Foo === ", "<root><h level=\"3\" i=\"1\">=== Foo === </h></root>" ),
-                       array( "==<!-- -->= Foo === ", "<root><h level=\"2\" i=\"1\">==<comment>&lt;!-- --&gt;</comment>= Foo === </h></root>" ),
-                       array( "=== Foo ==<!-- -->= ", "<root><h level=\"1\" i=\"1\">=== Foo ==<comment>&lt;!-- --&gt;</comment>= </h></root>" ),
-                       array( "=== Foo ===<!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment>&lt;!-- --&gt;</comment></h>\n</root>" ),
-                       array( "=== Foo ===<!-- --> <!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment>&lt;!-- --&gt;</comment> <comment>&lt;!-- --&gt;</comment></h>\n</root>" ),
-                       array( "== Foo ==\n== Bar == \n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<h level=\"2\" i=\"2\">== Bar == </h>\n</root>" ),
-                       array( "===========", "<root><h level=\"5\" i=\"1\">===========</h></root>" ),
-                       array( "Foo\n=\n==\n=\n", "<root>Foo\n=\n==\n=\n</root>" ),
-                       array( "{{Foo}}", "<root><template><title>Foo</title></template></root>" ),
-                       array( "\n{{Foo}}", "<root>\n<template lineStart=\"1\"><title>Foo</title></template></root>" ),
-                       array( "{{Foo|bar}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template></root>" ),
-                       array( "{{Foo|bar}}a", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template>a</root>" ),
-                       array( "{{Foo|bar|baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></template></root>" ),
-                       array( "{{Foo|1=bar}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part></template></root>" ),
-                       array( "{{Foo|=bar}}", "<root><template><title>Foo</title><part><name></name>=<value>bar</value></part></template></root>" ),
-                       array( "{{Foo|bar=baz}}", "<root><template><title>Foo</title><part><name>bar</name>=<value>baz</value></part></template></root>" ),
-                       array( "{{Foo|{{bar}}=baz}}", "<root><template><title>Foo</title><part><name><template><title>bar</title></template></name>=<value>baz</value></part></template></root>" ),
-                       array( "{{Foo|1=bar|baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name index=\"1\" /><value>baz</value></part></template></root>" ),
-                       array( "{{Foo|1=bar|2=baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name>2</name>=<value>baz</value></part></template></root>" ),
-                       array( "{{Foo|bar|foo=baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name>foo</name>=<value>baz</value></part></template></root>" ),
-                       array( "{{{1}}}", "<root><tplarg><title>1</title></tplarg></root>" ),
-                       array( "{{{1|}}}", "<root><tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ),
-                       array( "{{{Foo}}}", "<root><tplarg><title>Foo</title></tplarg></root>" ),
-                       array( "{{{Foo|}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ),
-                       array( "{{{Foo|bar|baz}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></tplarg></root>" ),
-                       array( "{<!-- -->{Foo}}", "<root>{<comment>&lt;!-- --&gt;</comment>{Foo}}</root>" ),
-                       array( "{{{{Foobar}}}}", "<root>{<tplarg><title>Foobar</title></tplarg>}</root>" ),
-                       array( "{{{ {{Foo}} }}}", "<root><tplarg><title> <template><title>Foo</title></template> </title></tplarg></root>" ),
-                       array( "{{ {{{Foo}}} }}", "<root><template><title> <tplarg><title>Foo</title></tplarg> </title></template></root>" ),
-                       array( "{{{{{Foo}}}}}", "<root><template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ),
-                       array( "{{{{{Foo}} }}}", "<root><tplarg><title><template><title>Foo</title></template> </title></tplarg></root>" ),
-                       array( "{{{{{{Foo}}}}}}", "<root><tplarg><title><tplarg><title>Foo</title></tplarg></title></tplarg></root>" ),
-                       array( "{{{{{{Foo}}}}}", "<root>{<template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ),
-                       array( "[[[Foo]]", "<root>[[[Foo]]</root>" ),
-                       array( "{{Foo|[[[[bar]]|baz]]}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>[[[[bar]]|baz]]</value></part></template></root>" ), // This test is important, since it means the difference between having the [[ rule stacked or not
-                       array( "{{Foo|[[[[bar]|baz]]}}", "<root>{{Foo|[[[[bar]|baz]]}}</root>" ),
-                       array( "{{Foo|Foo [[[[bar]|baz]]}}", "<root>{{Foo|Foo [[[[bar]|baz]]}}</root>" ),
-                       array( "Foo <display map>Bar</display map             >Baz", "<root>Foo <ext><name>display map</name><attr></attr><inner>Bar</inner><close>&lt;/display map             &gt;</close></ext>Baz</root>" ),
-                       array( "Foo <display map foo>Bar</display map             >Baz", "<root>Foo <ext><name>display map</name><attr> foo</attr><inner>Bar</inner><close>&lt;/display map             &gt;</close></ext>Baz</root>" ),
-                       array( "Foo <gallery bar=\"baz\" />", "<root>Foo <ext><name>gallery</name><attr> bar=&quot;baz&quot; </attr></ext></root>" ),
-                       array( "Foo <gallery bar=\"1\" baz=2 />", "<root>Foo <ext><name>gallery</name><attr> bar=&quot;1&quot; baz=2 </attr></ext></root>" ),
-                       array( "</foo>Foo<//foo>", "<root><ext><name>/foo</name><attr></attr><inner>Foo</inner><close>&lt;//foo&gt;</close></ext></root>" ), # Worth blacklisting IMHO
-                       array( "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "<root><template><title>#ifexpr: (<tplarg><title>1</title><part><name index=\"1\" /><value>1</value></part></tplarg> = 2) </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ),
-                       array( "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> <template><title>Bar</title></template> </value></part></template></root>" ),
-                       array( "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> [[Bar]] </value></part></template></root>" ),
-                       array( "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> [[Foo]] </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ),
-                       array( "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 1 </value></part><part><name index=\"2\" /><value> <template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 2 </value></part><part><name index=\"2\" /><value> 3 </value></part></template> </value></part></template></root>" ),
-                       array( "{{ {{Foo}}", "<root>{{ <template><title>Foo</title></template></root>" ),
-                       array( "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "<root>{{Foobar <template><title>Foo</title></template> <template><title>Bar</title></template> <template><title>Baz</title></template> </root>" ),
-                       array( "[[Foo]] |", "<root>[[Foo]] |</root>" ),
-                       array( "{{Foo|Bar|", "<root>{{Foo|Bar|</root>" ),
-                       array( "[[Foo]", "<root>[[Foo]</root>" ),
-                       array( "[[Foo|Bar]", "<root>[[Foo|Bar]</root>" ),
-                       array( "{{Foo| [[Bar] }}", "<root>{{Foo| [[Bar] }}</root>" ),
-                       array( "{{Foo| [[Bar|Baz] }}", "<root>{{Foo| [[Bar|Baz] }}</root>" ),
-                       array( "{{Foo|bar=[[baz]}}", "<root>{{Foo|bar=[[baz]}}</root>" ),
-                       array( "{{foo|", "<root>{{foo|</root>" ),
-                       array( "{{foo|}", "<root>{{foo|}</root>" ),
-                       array( "{{foo|} }}", "<root><template><title>foo</title><part><name index=\"1\" /><value>} </value></part></template></root>" ),
-                       array( "{{foo|bar=|}", "<root>{{foo|bar=|}</root>" ),
-                       array( "{{Foo|} Bar=", "<root>{{Foo|} Bar=</root>" ),
-                       array( "{{Foo|} Bar=}}", "<root><template><title>Foo</title><part><name>} Bar</name>=<value></value></part></template></root>" ),
-                       /* array( file_get_contents( __DIR__ . '/QuoteQuran.txt' ), file_get_contents( __DIR__ . '/QuoteQuranExpanded.txt' ) ), */
-               );
+               return [
+                       [ "Foo", "<root>Foo</root>" ],
+                       [ "<!-- Foo -->", "<root><comment>&lt;!-- Foo --&gt;</comment></root>" ],
+                       [ "<!-- Foo --><!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment><comment>&lt;!-- Bar --&gt;</comment></root>" ],
+                       [ "<!-- Foo -->  <!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment>  <comment>&lt;!-- Bar --&gt;</comment></root>" ],
+                       [ "<!-- Foo --> \n <!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment> \n <comment>&lt;!-- Bar --&gt;</comment></root>" ],
+                       [ "<!-- Foo --> \n <!-- Bar -->\n", "<root><comment>&lt;!-- Foo --&gt;</comment> \n<comment> &lt;!-- Bar --&gt;\n</comment></root>" ],
+                       [ "<!-- Foo -->  <!-- Bar -->\n", "<root><comment>&lt;!-- Foo --&gt;</comment>  <comment>&lt;!-- Bar --&gt;</comment>\n</root>" ],
+                       [ "<!-->Bar", "<root><comment>&lt;!--&gt;Bar</comment></root>" ],
+                       [ "<!-- Comment -- comment", "<root><comment>&lt;!-- Comment -- comment</comment></root>" ],
+                       [ "== Foo ==\n  <!-- Bar -->\n== Baz ==\n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<comment>  &lt;!-- Bar --&gt;\n</comment><h level=\"2\" i=\"2\">== Baz ==</h>\n</root>" ],
+                       [ "<gallery/>", "<root><ext><name>gallery</name><attr></attr></ext></root>" ],
+                       [ "Foo <gallery/> Bar", "<root>Foo <ext><name>gallery</name><attr></attr></ext> Bar</root>" ],
+                       [ "<gallery></gallery>", "<root><ext><name>gallery</name><attr></attr><inner></inner><close>&lt;/gallery&gt;</close></ext></root>" ],
+                       [ "<foo> <gallery></gallery>", "<root>&lt;foo&gt; <ext><name>gallery</name><attr></attr><inner></inner><close>&lt;/gallery&gt;</close></ext></root>" ],
+                       [ "<foo> <gallery><gallery></gallery>", "<root>&lt;foo&gt; <ext><name>gallery</name><attr></attr><inner>&lt;gallery&gt;</inner><close>&lt;/gallery&gt;</close></ext></root>" ],
+                       [ "<noinclude> Foo bar </noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore> Foo bar <ignore>&lt;/noinclude&gt;</ignore></root>" ],
+                       [ "<noinclude>\n{{Foo}}\n</noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore></root>" ],
+                       [ "<noinclude>\n{{Foo}}\n</noinclude>\n", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore>\n</root>" ],
+                       [ "<gallery>foo bar", "<root><ext><name>gallery</name><attr></attr><inner>foo bar</inner></ext></root>" ],
+                       [ "<{{foo}}>", "<root>&lt;<template><title>foo</title></template>&gt;</root>" ],
+                       [ "<{{{foo}}}>", "<root>&lt;<tplarg><title>foo</title></tplarg>&gt;</root>" ],
+                       [ "<gallery></gallery</gallery>", "<root><ext><name>gallery</name><attr></attr><inner>&lt;/gallery</inner><close>&lt;/gallery&gt;</close></ext></root>" ],
+                       [ "=== Foo === ", "<root><h level=\"3\" i=\"1\">=== Foo === </h></root>" ],
+                       [ "==<!-- -->= Foo === ", "<root><h level=\"2\" i=\"1\">==<comment>&lt;!-- --&gt;</comment>= Foo === </h></root>" ],
+                       [ "=== Foo ==<!-- -->= ", "<root><h level=\"1\" i=\"1\">=== Foo ==<comment>&lt;!-- --&gt;</comment>= </h></root>" ],
+                       [ "=== Foo ===<!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment>&lt;!-- --&gt;</comment></h>\n</root>" ],
+                       [ "=== Foo ===<!-- --> <!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment>&lt;!-- --&gt;</comment> <comment>&lt;!-- --&gt;</comment></h>\n</root>" ],
+                       [ "== Foo ==\n== Bar == \n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<h level=\"2\" i=\"2\">== Bar == </h>\n</root>" ],
+                       [ "===========", "<root><h level=\"5\" i=\"1\">===========</h></root>" ],
+                       [ "Foo\n=\n==\n=\n", "<root>Foo\n=\n==\n=\n</root>" ],
+                       [ "{{Foo}}", "<root><template><title>Foo</title></template></root>" ],
+                       [ "\n{{Foo}}", "<root>\n<template lineStart=\"1\"><title>Foo</title></template></root>" ],
+                       [ "{{Foo|bar}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template></root>" ],
+                       [ "{{Foo|bar}}a", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template>a</root>" ],
+                       [ "{{Foo|bar|baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></template></root>" ],
+                       [ "{{Foo|1=bar}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part></template></root>" ],
+                       [ "{{Foo|=bar}}", "<root><template><title>Foo</title><part><name></name>=<value>bar</value></part></template></root>" ],
+                       [ "{{Foo|bar=baz}}", "<root><template><title>Foo</title><part><name>bar</name>=<value>baz</value></part></template></root>" ],
+                       [ "{{Foo|{{bar}}=baz}}", "<root><template><title>Foo</title><part><name><template><title>bar</title></template></name>=<value>baz</value></part></template></root>" ],
+                       [ "{{Foo|1=bar|baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name index=\"1\" /><value>baz</value></part></template></root>" ],
+                       [ "{{Foo|1=bar|2=baz}}", "<root><template><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name>2</name>=<value>baz</value></part></template></root>" ],
+                       [ "{{Foo|bar|foo=baz}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name>foo</name>=<value>baz</value></part></template></root>" ],
+                       [ "{{{1}}}", "<root><tplarg><title>1</title></tplarg></root>" ],
+                       [ "{{{1|}}}", "<root><tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ],
+                       [ "{{{Foo}}}", "<root><tplarg><title>Foo</title></tplarg></root>" ],
+                       [ "{{{Foo|}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ],
+                       [ "{{{Foo|bar|baz}}}", "<root><tplarg><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></tplarg></root>" ],
+                       [ "{<!-- -->{Foo}}", "<root>{<comment>&lt;!-- --&gt;</comment>{Foo}}</root>" ],
+                       [ "{{{{Foobar}}}}", "<root>{<tplarg><title>Foobar</title></tplarg>}</root>" ],
+                       [ "{{{ {{Foo}} }}}", "<root><tplarg><title> <template><title>Foo</title></template> </title></tplarg></root>" ],
+                       [ "{{ {{{Foo}}} }}", "<root><template><title> <tplarg><title>Foo</title></tplarg> </title></template></root>" ],
+                       [ "{{{{{Foo}}}}}", "<root><template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ],
+                       [ "{{{{{Foo}} }}}", "<root><tplarg><title><template><title>Foo</title></template> </title></tplarg></root>" ],
+                       [ "{{{{{{Foo}}}}}}", "<root><tplarg><title><tplarg><title>Foo</title></tplarg></title></tplarg></root>" ],
+                       [ "{{{{{{Foo}}}}}", "<root>{<template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ],
+                       [ "[[[Foo]]", "<root>[[[Foo]]</root>" ],
+                       [ "{{Foo|[[[[bar]]|baz]]}}", "<root><template><title>Foo</title><part><name index=\"1\" /><value>[[[[bar]]|baz]]</value></part></template></root>" ], // This test is important, since it means the difference between having the [[ rule stacked or not
+                       [ "{{Foo|[[[[bar]|baz]]}}", "<root>{{Foo|[[[[bar]|baz]]}}</root>" ],
+                       [ "{{Foo|Foo [[[[bar]|baz]]}}", "<root>{{Foo|Foo [[[[bar]|baz]]}}</root>" ],
+                       [ "Foo <display map>Bar</display map             >Baz", "<root>Foo <ext><name>display map</name><attr></attr><inner>Bar</inner><close>&lt;/display map             &gt;</close></ext>Baz</root>" ],
+                       [ "Foo <display map foo>Bar</display map             >Baz", "<root>Foo <ext><name>display map</name><attr> foo</attr><inner>Bar</inner><close>&lt;/display map             &gt;</close></ext>Baz</root>" ],
+                       [ "Foo <gallery bar=\"baz\" />", "<root>Foo <ext><name>gallery</name><attr> bar=&quot;baz&quot; </attr></ext></root>" ],
+                       [ "Foo <gallery bar=\"1\" baz=2 />", "<root>Foo <ext><name>gallery</name><attr> bar=&quot;1&quot; baz=2 </attr></ext></root>" ],
+                       [ "</foo>Foo<//foo>", "<root><ext><name>/foo</name><attr></attr><inner>Foo</inner><close>&lt;//foo&gt;</close></ext></root>" ], # Worth blacklisting IMHO
+                       [ "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "<root><template><title>#ifexpr: (<tplarg><title>1</title><part><name index=\"1\" /><value>1</value></part></tplarg> = 2) </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ],
+                       [ "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> <template><title>Bar</title></template> </value></part></template></root>" ],
+                       [ "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> [[Bar]] </value></part></template></root>" ],
+                       [ "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> [[Foo]] </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>" ],
+                       [ "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "<root><template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 1 </value></part><part><name index=\"2\" /><value> <template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 2 </value></part><part><name index=\"2\" /><value> 3 </value></part></template> </value></part></template></root>" ],
+                       [ "{{ {{Foo}}", "<root>{{ <template><title>Foo</title></template></root>" ],
+                       [ "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "<root>{{Foobar <template><title>Foo</title></template> <template><title>Bar</title></template> <template><title>Baz</title></template> </root>" ],
+                       [ "[[Foo]] |", "<root>[[Foo]] |</root>" ],
+                       [ "{{Foo|Bar|", "<root>{{Foo|Bar|</root>" ],
+                       [ "[[Foo]", "<root>[[Foo]</root>" ],
+                       [ "[[Foo|Bar]", "<root>[[Foo|Bar]</root>" ],
+                       [ "{{Foo| [[Bar] }}", "<root>{{Foo| [[Bar] }}</root>" ],
+                       [ "{{Foo| [[Bar|Baz] }}", "<root>{{Foo| [[Bar|Baz] }}</root>" ],
+                       [ "{{Foo|bar=[[baz]}}", "<root>{{Foo|bar=[[baz]}}</root>" ],
+                       [ "{{foo|", "<root>{{foo|</root>" ],
+                       [ "{{foo|}", "<root>{{foo|}</root>" ],
+                       [ "{{foo|} }}", "<root><template><title>foo</title><part><name index=\"1\" /><value>} </value></part></template></root>" ],
+                       [ "{{foo|bar=|}", "<root>{{foo|bar=|}</root>" ],
+                       [ "{{Foo|} Bar=", "<root>{{Foo|} Bar=</root>" ],
+                       [ "{{Foo|} Bar=}}", "<root><template><title>Foo</title><part><name>} Bar</name>=<value></value></part></template></root>" ],
+                       /* [ file_get_contents( __DIR__ . '/QuoteQuran.txt' ], file_get_contents( __DIR__ . '/QuoteQuranExpanded.txt' ) ], */
+               ];
                // @codingStandardsIgnoreEnd
        }
 
@@ -162,13 +162,13 @@ class PreprocessorTest extends MediaWikiTestCase {
         */
        public static function provideFiles() {
                // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-               return array(
-                       array( "QuoteQuran" ), # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC BY-SA by Striver
-                       array( "Factorial" ), # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
-                       array( "All_system_messages" ), # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
-                       array( "Fundraising" ), # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
-                       array( "NestedTemplates" ), # bug 27936
-               );
+               return [
+                       [ "QuoteQuran" ], # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC BY-SA by Striver
+                       [ "Factorial" ], # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
+                       [ "All_system_messages" ], # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
+                       [ "Fundraising" ], # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
+                       [ "NestedTemplates" ], # bug 27936
+               ];
                // @codingStandardsIgnoreEnd
        }
 
@@ -197,43 +197,43 @@ class PreprocessorTest extends MediaWikiTestCase {
         */
        public static function provideHeadings() {
                // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-               return array( /* These should become headings: */
-                       array( "== h ==<!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment></h></root>" ),
-                       array( "== h ==         <!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==       <comment>&lt;!--c1--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1-->        ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>      </h></root>" ),
-                       array( "== h ==         <!--c1-->       ", "<root><h level=\"2\" i=\"1\">== h ==        <comment>&lt;!--c1--&gt;</comment>      </h></root>" ),
-                       array( "== h ==<!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment></h></root>" ),
-                       array( "== h ==         <!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==      <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1--><!--c2-->       ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>    </h></root>" ),
-                       array( "== h ==         <!--c1--><!--c2-->      ", "<root><h level=\"2\" i=\"1\">== h ==        <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>    </h></root>" ),
-                       array( "== h ==         <!--c1-->  <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==    <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1-->  <!--c2-->     ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  </h></root>" ),
-                       array( "== h ==         <!--c1-->  <!--c2-->    ", "<root><h level=\"2\" i=\"1\">== h ==        <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  </h></root>" ),
-                       array( "== h ==<!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1-->  <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1--><!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1-->  <!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==  <!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==  <!--c1-->  <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==  <!--c1--><!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==  <!--c1-->  <!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1--><!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==<!--c1-->  <!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==<!--c1--><!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==<!--c1-->  <!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==  <!--c1--><!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==  <!--c1-->  <!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==  <!--c1--><!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==  <!--c1-->  <!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
-                       array( "== h ==<!--c1-->        <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>     <comment>&lt;!--c2--&gt;</comment></h></root>" ),
-                       array( "== h ==         <!--c1-->       <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==       <comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment></h></root>" ),
-                       array( "== h ==<!--c1-->        <!--c2-->       ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment>      </h></root>" ),
+               return [ /* These should become headings: */
+                       [ "== h ==<!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment></h></root>" ],
+                       [ "== h ==      <!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==       <comment>&lt;!--c1--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1-->     ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>      </h></root>" ],
+                       [ "== h ==      <!--c1-->       ", "<root><h level=\"2\" i=\"1\">== h ==        <comment>&lt;!--c1--&gt;</comment>      </h></root>" ],
+                       [ "== h ==<!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment></h></root>" ],
+                       [ "== h ==      <!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==      <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1--><!--c2-->    ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>    </h></root>" ],
+                       [ "== h ==      <!--c1--><!--c2-->      ", "<root><h level=\"2\" i=\"1\">== h ==        <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>    </h></root>" ],
+                       [ "== h ==      <!--c1-->  <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==    <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1-->  <!--c2-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  </h></root>" ],
+                       [ "== h ==      <!--c1-->  <!--c2-->    ", "<root><h level=\"2\" i=\"1\">== h ==        <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  </h></root>" ],
+                       [ "== h ==<!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1-->  <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1--><!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1-->  <!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==  <!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==  <!--c1-->  <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==  <!--c1--><!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==  <!--c1-->  <!--c2-->  <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1--><!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==<!--c1-->  <!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==<!--c1--><!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==<!--c1-->  <!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==  <!--c1--><!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==  <!--c1-->  <!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==  <!--c1--><!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==  <!--c1-->  <!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ],
+                       [ "== h ==<!--c1-->     <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>     <comment>&lt;!--c2--&gt;</comment></h></root>" ],
+                       [ "== h ==      <!--c1-->       <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==       <comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment></h></root>" ],
+                       [ "== h ==<!--c1-->     <!--c2-->       ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment>      </h></root>" ],
 
                        /* These are not working: */
-                       array( "== h == x <!--c1--><!--c2--><!--c3-->  ", "<root>== h == x <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </root>" ),
-                       array( "== h ==<!--c1--> x <!--c2--><!--c3-->  ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment> x <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </root>" ),
-                       array( "== h ==<!--c1--><!--c2--><!--c3--> x ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> x </root>" ),
-               );
+                       [ "== h == x <!--c1--><!--c2--><!--c3-->  ", "<root>== h == x <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </root>" ],
+                       [ "== h ==<!--c1--> x <!--c2--><!--c3-->  ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment> x <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </root>" ],
+                       [ "== h ==<!--c1--><!--c2--><!--c3--> x ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> x </root>" ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index d6940b5..8f80362 100644 (file)
@@ -13,28 +13,28 @@ class BcryptPasswordTest extends PasswordTestCase {
 
        public static function providePasswordTests() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // Tests from glibc bcrypt implementation
-                       array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "U*U" ),
-                       array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK', "U*U*" ),
-                       array( true, ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a', "U*U*U" ),
-                       array( true, ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui', "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e', "\xff\xff\xa3" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi', "\xff\xa334\xff\xff\xff\xa3345" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6', "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy', "\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55" ),
-                       array( true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe', "\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff" ),
-                       array( true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy', "" ),
+                       [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "U*U" ],
+                       [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$VGOzA784oUp/Z0DY336zx7pLYAy0lwK', "U*U*" ],
+                       [ true, ':bcrypt:5$XXXXXXXXXXXXXXXXXXXXXO$AcXxm9kjPGEMsLznoKqmqw7tc8WCx4a', "U*U*U" ],
+                       [ true, ':bcrypt:5$abcdefghijklmnopqrstuu$5s2v8.iXieOjg/.AySBTTZIIVFJeBui', "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789chars after 72 are ignored" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$CE5elHaaO4EbggVDjb8P19RukzXSM3e', "\xff\xff\xa3" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq', "\xa3" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$o./n25XVfn6oAPaUvHe.Csk4zRfsYPi', "\xff\xa334\xff\xff\xff\xa3345" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$nRht2l/HRhr6zmCp9vYUvvsqynflf9e', "\xff\xa3345" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$6IflQkJytoRVc1yuaNtHfiuq.FRlSIS', "\xa3ab" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$swQOIzjOiJ9GHEPuhEkvqrUyvWhEMx6', "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaachars after 72 are ignored as usual" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$R9xrDjiycxMbQE2bp.vgqlYpW5wx2yy', "\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55\xaa\x55" ],
+                       [ true, ':bcrypt:5$/OK.fbVrR/bpIqNJ5ianF.$9tQZzcJfm3uj2NvJ/n5xkhpqLrMpWCe', "\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff\x55\xaa\xff" ],
+                       [ true, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy', "" ],
                        // One or two false sanity tests
-                       array( false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "UXU" ),
-                       array( false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "" ),
-               );
+                       [ false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "UXU" ],
+                       [ false, ':bcrypt:5$CCCCCCCCCCCCCCCCCCCCC.$E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW', "" ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index cccec5f..773f033 100644 (file)
@@ -28,9 +28,13 @@ class LayeredParameterizedPasswordTest extends PasswordTestCase {
 
        public static function providePasswordTests() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong
-               return array(
-                       array( true, ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC', 'testPassword123' ),
-               );
+               return [
+                       [
+                               true,
+                               ':testLargeLayeredTop:sha512:1024:512!sha512:1024:512!sha512:1024:512!sha512:1024:512!5!vnRy+2SrSA0fHt3dwhTP5g==!AVnwfZsAQjn+gULv7FSGjA==!xvHUX3WcpkeSn1lvjWcvBg==!It+OC/N9tu+d3ByHhuB0BQ==!Tb.gqUOiD.aWktVwHM.Q/O!7CcyMfXUPky5ptyATJsR2nq3vUqtnBC',
+                               'testPassword123' 
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index 534cf9b..3d407fb 100644 (file)
@@ -55,19 +55,17 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
                $specialPageTestHelper = new SpecialPageTestHelper();
 
                return [
-                       'class name' => [ 'SpecialAllPages', false ],
+                       'class name' => [ 'SpecialAllPages' ],
                        'closure' => [ function () {
                                return new SpecialAllPages();
-                       }, false ],
-                       'function' => [ [ $this, 'newSpecialAllPages' ], false ],
-                       'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ],
+                       } ],
+                       'function' => [ [ $this, 'newSpecialAllPages' ] ],
+                       'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ],
                        'callback with object' => [
-                               [ $specialPageTestHelper, 'newSpecialAllPages' ],
-                               false
+                               [ $specialPageTestHelper, 'newSpecialAllPages' ]
                        ],
                        'callback array' => [
-                               [ 'SpecialPageTestHelper', 'newSpecialAllPages' ],
-                               false
+                               [ 'SpecialPageTestHelper', 'newSpecialAllPages' ]
                        ]
                ];
        }
@@ -76,7 +74,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
         * @covers SpecialPageFactory::getPage
         * @dataProvider specialPageProvider
         */
-       public function testGetPage( $spec, $shouldReuseInstance ) {
+       public function testGetPage( $spec ) {
                $this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] );
                SpecialPageFactory::resetList();
 
@@ -84,7 +82,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
                $this->assertInstanceOf( 'SpecialPage', $page );
 
                $page2 = SpecialPageFactory::getPage( 'testdummy' );
-               $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" );
+               $this->assertEquals( true, $page2 === $page, "Should re-use instance:" );
        }
 
        /**
index a274b84..ee74957 100644 (file)
@@ -136,259 +136,259 @@ class UploadBaseTest extends MediaWikiTestCase {
 
        public static function provideCheckSvgScriptCallback() {
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // html5sec SVG vectors
-                       array(
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"><script>alert(1)</script></svg>',
                                true,
                                true,
                                'Script tag in svg (http://html5sec.org/#47)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"><g onload="javascript:alert(1)"></g></svg>',
                                true,
                                true,
                                'SVG with onload property (http://html5sec.org/#11)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg onload="javascript:alert(1)" xmlns="http://www.w3.org/2000/svg"></svg>',
                                true,
                                true,
                                'SVG with onload property (http://html5sec.org/#65)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="javascript:alert(1)"><rect width="1000" height="1000" fill="white"/></a> </svg>',
                                true,
                                true,
                                'SVG with javascript xlink (http://html5sec.org/#87)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><use xlink:href="data:application/xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGRlZnM+CjxjaXJjbGUgaWQ9InRlc3QiIHI9IjUwIiBjeD0iMTAwIiBjeT0iMTAwIiBzdHlsZT0iZmlsbDogI0YwMCI+CjxzZXQgYXR0cmlidXRlTmFtZT0iZmlsbCIgYXR0cmlidXRlVHlwZT0iQ1NTIiBvbmJlZ2luPSdhbGVydChkb2N1bWVudC5jb29raWUpJwpvbmVuZD0nYWxlcnQoIm9uZW5kIiknIHRvPSIjMDBGIiBiZWdpbj0iMXMiIGR1cj0iNXMiIC8+CjwvY2lyY2xlPgo8L2RlZnM+Cjx1c2UgeGxpbms6aHJlZj0iI3Rlc3QiLz4KPC9zdmc+#test"/> </svg>',
                                true,
                                true,
                                'SVG with Opera image xlink (http://html5sec.org/#88 - c)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">  <animation xlink:href="javascript:alert(1)"/> </svg>',
                                true,
                                true,
                                'SVG with Opera animation xlink (http://html5sec.org/#88 - a)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">  <animation xlink:href="data:text/xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' onload=\'alert(1)\'%3E%3C/svg%3E"/> </svg>',
                                true,
                                true,
                                'SVG with Opera animation xlink (http://html5sec.org/#88 - b)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">  <image xlink:href="data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' onload=\'alert(1)\'%3E%3C/svg%3E"/> </svg>',
                                true,
                                true,
                                'SVG with Opera image xlink (http://html5sec.org/#88 - c)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">  <foreignObject xlink:href="javascript:alert(1)"/> </svg>',
                                true,
                                true,
                                'SVG with Opera foreignObject xlink (http://html5sec.org/#88 - d)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">  <foreignObject xlink:href="data:text/xml,%3Cscript xmlns=\'http://www.w3.org/1999/xhtml\'%3Ealert(1)%3C/script%3E"/> </svg>',
                                true,
                                true,
                                'SVG with Opera foreignObject xlink (http://html5sec.org/#88 - e)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <set attributeName="onmouseover" to="alert(1)"/> </svg>',
                                true,
                                true,
                                'SVG with event handler set (http://html5sec.org/#89 - a)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <animate attributeName="onunload" to="alert(1)"/> </svg>',
                                true,
                                true,
                                'SVG with event handler animate (http://html5sec.org/#89 - a)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <handler xmlns:ev="http://www.w3.org/2001/xml-events" ev:event="load">alert(1)</handler> </svg>',
                                true,
                                true,
                                'SVG with element handler (http://html5sec.org/#94)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <feImage> <set attributeName="xlink:href" to="data:image/svg+xml;charset=utf-8;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzY3JpcHQ%2BYWxlcnQoMSk8L3NjcmlwdD48L3N2Zz4NCg%3D%3D"/> </feImage> </svg>',
                                true,
                                true,
                                'SVG with href to data: url (http://html5sec.org/#95)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" id="foo"> <x xmlns="http://www.w3.org/2001/xml-events" event="load" observer="foo" handler="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Chandler%20xml%3Aid%3D%22bar%22%20type%3D%22application%2Fecmascript%22%3E alert(1) %3C%2Fhandler%3E%0A%3C%2Fsvg%3E%0A#bar"/> </svg>',
                                true,
                                true,
                                'SVG with Tiny handler (http://html5sec.org/#104)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <a id="x"><rect fill="white" width="1000" height="1000"/></a> <rect fill="white" style="clip-path:url(test3.svg#a);fill:url(#b);filter:url(#c);marker:url(#d);mask:url(#e);stroke:url(#f);"/> </svg>',
                                true,
                                true,
                                'SVG with new CSS styles properties (http://html5sec.org/#109)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <a id="x"><rect fill="white" width="1000" height="1000"/></a> <rect clip-path="url(test3.svg#a)" /> </svg>',
                                true,
                                true,
                                'SVG with new CSS styles properties as attributes'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <a id="x"> <rect fill="white" width="1000" height="1000"/> </a> <rect fill="url(http://html5sec.org/test3.svg#a)" /> </svg>',
                                true,
                                true,
                                'SVG with new CSS styles properties as attributes (2)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <path d="M0,0" style="marker-start:url(test4.svg#a)"/> </svg>',
                                true,
                                true,
                                'SVG with path marker-start (http://html5sec.org/#110)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<?xml version="1.0"?> <?xml-stylesheet type="text/xml" href="#stylesheet"?> <!DOCTYPE doc [ <!ATTLIST xsl:stylesheet id ID #REQUIRED>]> <svg xmlns="http://www.w3.org/2000/svg"> <xsl:stylesheet id="stylesheet" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <iframe xmlns="http://www.w3.org/1999/xhtml" src="javascript:alert(1)"></iframe> </xsl:template> </xsl:stylesheet> <circle fill="red" r="40"></circle> </svg>',
                                true,
                                true,
                                'SVG with embedded stylesheet (http://html5sec.org/#125)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" id="x"> <listener event="load" handler="#y" xmlns="http://www.w3.org/2001/xml-events" observer="x"/> <handler id="y">alert(1)</handler> </svg>',
                                true,
                                true,
                                'SVG with handler attribute (http://html5sec.org/#127)'
-                       ),
-                       array(
+                       ],
+                       [
                                // Haven't found a browser that accepts this particular example, but we
                                // don't want to allow embeded svgs, ever
                                '<svg> <image style=\'filter:url("data:image/svg+xml;charset=utf-8;base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxzY3JpcHQ/YWxlcnQoMSk8L3NjcmlwdD48L3N2Zz4NCg==")\' /> </svg>',
                                true,
                                true,
                                'SVG with image filter via style (http://html5sec.org/#129)'
-                       ),
-                       array(
+                       ],
+                       [
                                // This doesn't seem possible without embedding the svg, but just in case
                                '<svg> <a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="?"> <circle r="400"></circle> <animate attributeName="xlink:href" begin="0" from="javascript:alert(1)" to="" /> </a></svg>',
                                true,
                                true,
                                'SVG with animate from (http://html5sec.org/#137)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <a><text y="1em">Click me</text> <animate attributeName="xlink:href" values="javascript:alert(\'Bang!\')" begin="0s" dur="0.1s" fill="freeze" /> </a></svg>',
                                true,
                                true,
                                'SVG with animate xlink:href (http://html5sec.org/#137)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:y="http://www.w3.org/1999/xlink"> <a y:href="#"> <text y="1em">Click me</text> <animate attributeName="y:href" values="javascript:alert(\'Bang!\')" begin="0s" dur="0.1s" fill="freeze" /> </a> </svg>',
                                true,
                                true,
                                'SVG with animate y:href (http://html5sec.org/#137)'
-                       ),
+                       ],
 
                        // Other hostile SVG's
-                       array(
+                       [
                                '<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:xlink="http://www.w3.org/1999/xlink"> <image xlink:href="https://upload.wikimedia.org/wikipedia/commons/3/34/Bahnstrecke_Zeitz-Camburg_1930.png" /> </svg>',
                                true,
                                true,
                                'SVG with non-local image href (bug 65839)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="/w/index.php?title=User:Jeeves/test.xsl&amp;action=raw&amp;format=xml" ?> <svg> <height>50</height> <width>100</width> </svg>',
                                true,
                                true,
                                'SVG with remote stylesheet (bug 57550)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" viewbox="-1 -1 15 15"> <rect y="0" height="13" width="12" stroke="#179" rx="1" fill="#2ac"/> <text x="1.5" y="11" font-family="courier" stroke="white" font-size="16"><![CDATA[B]]></text> <iframe xmlns="http://www.w3.org/1999/xhtml" srcdoc="&#x3C;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x27;&#x58;&#x53;&#x53;&#x45;&#x44;&#x20;&#x3D;&#x3E;&#x20;&#x44;&#x6F;&#x6D;&#x61;&#x69;&#x6E;&#x28;&#x27;&#x2B;&#x74;&#x6F;&#x70;&#x2E;&#x64;&#x6F;&#x63;&#x75;&#x6D;&#x65;&#x6E;&#x74;&#x2E;&#x64;&#x6F;&#x6D;&#x61;&#x69;&#x6E;&#x2B;&#x27;&#x29;&#x27;&#x29;&#x3B;&#x3C;&#x2F;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;"></iframe> </svg>',
                                true,
                                true,
                                'SVG with rembeded iframe (bug 60771)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 3 177 153" xmlns:xlink="http://www.w3.org/1999/xlink"> <style>@import url("https://fonts.googleapis.com/css?family=Bitter:700&amp;text=WebPlatform.org");</style> <g transform="translate(-.5,-.5)"> <text fill="#474747" x="95" y="150" text-anchor="middle" font-family="Bitter" font-size="20" font-weight="bold">WebPlatform.org</text> </g> </svg>',
                                true,
                                true,
                                'SVG with @import in style element (bug 69008)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 3 177 153" xmlns:xlink="http://www.w3.org/1999/xlink"> <style>@import url("https://fonts.googleapis.com/css?family=Bitter:700&amp;text=WebPlatform.org");<foo/></style> <g transform="translate(-.5,-.5)"> <text fill="#474747" x="95" y="150" text-anchor="middle" font-family="Bitter" font-size="20" font-weight="bold">WebPlatform.org</text> </g> </svg>',
                                true,
                                true,
                                'SVG with @import in style element and child element (bug 69008#c11)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 3 177 153" xmlns:xlink="http://www.w3.org/1999/xlink"> <style>@imporT "https://fonts.googleapis.com/css?family=Bitter:700&amp;text=WebPlatform.org";</style> <g transform="translate(-.5,-.5)"> <text fill="#474747" x="95" y="150" text-anchor="middle" font-family="Bitter" font-size="20" font-weight="bold">WebPlatform.org</text> </g> </svg>',
                                true,
                                true,
                                'SVG with case-insensitive @import in style element (bug T85349)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:url(https://www.google.com/images/srpr/logo11w.png)"/> </svg>',
                                true,
                                true,
                                'SVG with remote background image (bug 69008)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:\55rl(https://www.google.com/images/srpr/logo11w.png)"/> </svg>',
                                true,
                                true,
                                'SVG with remote background image, encoded (bug 69008)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg"> <style> #a { background-image:\55rl(\'https://www.google.com/images/srpr/logo11w.png\'); } </style> <rect width="100" height="100" id="a"/> </svg>',
                                true,
                                true,
                                'SVG with remote background image, in style element (bug 69008)'
-                       ),
-                       array(
+                       ],
+                       [
                                // This currently doesn't seem to work in any browsers, but in case
                                // http://www.w3.org/TR/css3-images/ is implemented for SVG files
                                '<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:image(\'sprites.svg#xywh=40,0,20,20\')"/> </svg>',
                                true,
                                true,
                                'SVG with remote background image using image() (bug 69008)'
-                       ),
-                       array(
+                       ],
+                       [
                                // As reported by Cure53
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <a xlink:href="data:text/html;charset=utf-8;base64, PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ%2BDQo%3D"> <circle r="400" fill="red"></circle> </a> </svg>',
                                true,
                                true,
                                'SVG with data:text/html link target (firefox only)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ <!ENTITY lol "lol"> <!ENTITY lol2 "&#x3C;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x27;&#x58;&#x53;&#x53;&#x45;&#x44;&#x20;&#x3D;&#x3E;&#x20;&#x27;&#x2B;&#x64;&#x6F;&#x63;&#x75;&#x6D;&#x65;&#x6E;&#x74;&#x2E;&#x64;&#x6F;&#x6D;&#x61;&#x69;&#x6E;&#x29;&#x3B;&#x3C;&#x2F;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;"> ]> <svg xmlns="http://www.w3.org/2000/svg" width="68" height="68" viewBox="-34 -34 68 68" version="1.1"> <circle cx="0" cy="0" r="24" fill="#c8c8c8"/> <text x="0" y="0" fill="black">&lol2;</text> </svg>',
                                true,
                                true,
                                'SVG with encoded script tag in internal entity (reported by Beyond Security)'
-                       ),
-                       array(
+                       ],
+                       [
                                '<?xml version="1.0"?> <!DOCTYPE svg [ <!ENTITY foo SYSTEM "file:///etc/passwd"> ]> <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <desc>&foo;</desc> <rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,2)" /> </svg>',
                                false,
                                false,
                                'SVG with external entity'
-                       ),
+                       ],
 
                        // Test good, but strange files that we want to allow
-                       array(
+                       [
                                '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g> <a xlink:href="http://en.wikipedia.org/wiki/Main_Page"> <path transform="translate(0,496)" id="path6706" d="m 112.09375,107.6875 -5.0625,3.625 -4.3125,5.03125 -0.46875,0.5 -4.09375,3.34375 -9.125,5.28125 -8.625,-3.375 z" style="fill:#cccccc;fill-opacity:1;stroke:#6e6e6e;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;display:inline" /> </a> </g> </svg>',
                                true,
                                false,
                                'SVG with <a> link to a remote site'
-                       ),
-                       array(
+                       ],
+                       [
                                '<svg> <defs> <filter id="filter6226" x="-0.93243687" width="2.8648737" y="-0.24250539" height="1.4850108"> <feGaussianBlur stdDeviation="3.2344681" id="feGaussianBlur6228" /> </filter> <clipPath id="clipPath2436"> <path d="M 0,0 L 0,0 L 0,0 L 0,0 z" id="path2438" /> </clipPath> </defs> <g clip-path="url(#clipPath2436)" id="g2460"> <text id="text2466"> <tspan>12345</tspan> </text> </g> <path style="fill:#346733;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:bevel;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;filter:url(\'#filter6226\');fill-opacity:1;opacity:0.79807692" d="M 236.82371,332.63732 C 236.92217,332.63732 z" id="path5618" /> </svg>',
                                true,
                                false,
                                'SVG with local urls, including filter: in style'
-                       ),
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index 17442b8..fafd4fa 100644 (file)
@@ -42,53 +42,58 @@ class MWCryptHKDFTest extends MediaWikiTestCase {
        public static function providerRfc5869() {
 
                // @codingStandardsIgnoreStart Generic.Files.LineLength
-               return array(
+               return [
                        // A.1
-                       array( 'sha256',
+                       [
+                               'sha256',
                                '0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', // ikm
                                '000102030405060708090a0b0c', // salt
                                'f0f1f2f3f4f5f6f7f8f9', // context
                                42, // bytes
                                '077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5', // prk
                                '3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865' // okm
-                       ),
+                       ],
                        // A.2
-                       array( 'sha256',
+                       [
+                               'sha256',
                                '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f',
                                '606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf',
                                'b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff',
                                82,
                                '06a6b88c5853361a06104c9ceb35b45cef760014904671014a193f40c15fc244',
                                'b11e398dc80327a1c8e7f78c596a49344f012eda2d4efad8a050cc4c19afa97c59045a99cac7827271cb41c65e590e09da3275600c2f09b8367793a9aca3db71cc30c58179ec3e87c14c01d5c1f3434f1d87'
-                       ),
+                       ],
                        // A.3
-                       array( 'sha256',
+                       [
+                               'sha256',
                                '0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', // ikm
                                '', // salt
                                '', // context
                                42, // bytes
                                '19ef24a32c717b167f33a91d6f648bdf96596776afdb6377ac434c1c293ccb04', // prk
                                '8da4e775a563c18f715f802a063c5a31b8a11f5c5ee1879ec3454e5f3c738d2d9d201395faa4b61a96c8' // okm
-                       ),
+                       ],
                        // A.4
-                       array( 'sha1',
+                       [
+                               'sha1',
                                '0b0b0b0b0b0b0b0b0b0b0b', // ikm
                                '000102030405060708090a0b0c', // salt
                                'f0f1f2f3f4f5f6f7f8f9', // context
                                42, // bytes
                                '9b6c18c432a7bf8f0e71c8eb88f4b30baa2ba243', // prk
                                '085a01ea1b10f36933068b56efa5ad81a4f14b822f5b091568a9cdd4f155fda2c22e422478d305f3f896' // okm
-                       ),
+                       ],
                        // A.5
-                       array( 'sha1',
+                       [
+                               'sha1',
                                '000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f', // ikm
                                '606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf', // salt
                                'b0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff', // context
                                82, // bytes
                                '8adae09a2a307059478d309b26c4115a224cfaf6', // prk
                                '0bd770a74d1160f7c9f12cd5912a06ebff6adcae899d92191fe4305673ba2ffe8fa3f1a4e5ad79f3f334b3b202b2173c486ea37ce3d397ed034c7f9dfeb15c5e927336d0441f4c4300e2cff0d0900b52d3b4' // okm
-                       ),
-               );
+                       ],
+               ];
                // @codingStandardsIgnoreEnd
        }
 }
index 6d7325d..d746ea1 100644 (file)
@@ -9,6 +9,9 @@ class UIDGeneratorTest extends PHPUnit_Framework_TestCase {
        }
 
        /**
+        * Flaky test (T131549).
+        *
+        * @group Broken
         * @dataProvider provider_testTimestampedUID
         * @covers UIDGenerator::newTimestampedUID128
         * @covers UIDGenerator::newTimestampedUID88
index 3f80b90..0cf2d0f 100644 (file)
@@ -1310,19 +1310,19 @@ class LanguageTest extends LanguageClassesTestCase {
 
        public static function provideCheckTitleEncodingData() {
                // @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
-               return array(
-                       array( "" ),
-                       array( "United States of America" ), // 7bit ASCII
-                       array( rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ),
-                       array(
+               return [
+                       [ "" ],
+                       [ "United States of America" ], // 7bit ASCII
+                       [ rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ],
+                       [
                                rawurldecode(
                                        "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn"
                                )
-                       ),
+                       ],
                        // The following two data sets come from bug 36839. They fail if checkTitleEncoding uses a regexp to test for
                        // valid UTF-8 encoding and the pcre.recursion_limit is low (like, say, 1024). They succeed if checkTitleEncoding
                        // uses mb_check_encoding for its test.
-                       array(
+                       [
                                rawurldecode(
                                        "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
                                                . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
@@ -1339,8 +1339,8 @@ class LanguageTest extends LanguageClassesTestCase {
                                                . "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
                                                . "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
                                ),
-                       ),
-                       array(
+                       ],
+                       [
                                rawurldecode(
                                        "Mod%C3%A8le%3AArrondissements%20homonymes%7CMod%C3%A8le%3ABandeau%20standard%20pour%20page%20d'homonymie%7C"
                                                . "Mod%C3%A8le%3ABatailles%20homonymes%7CMod%C3%A8le%3ACantons%20homonymes%7C"
@@ -1358,8 +1358,8 @@ class LanguageTest extends LanguageClassesTestCase {
                                                . "Mod%C3%A8le%3ATitres%20homonymes%7CMod%C3%A8le%3AToponymie%7CMod%C3%A8le%3AUnit%C3%A9s%20homonymes%7C"
                                                . "Mod%C3%A8le%3AVilles%20homonymes%7CMod%C3%A8le%3A%C3%89difices%20religieux%20homonymes"
                                )
-                       )
-               );
+                       ]
+               ];
                // @codingStandardsIgnoreEnd
        }
 
index 04e002d..3332c08 100644 (file)
@@ -41,6 +41,8 @@
        } );
 
        QUnit.test( 'getUserInfos', 3, function ( assert ) {
+               mw.config.set( 'wgUserGroups', [ '*', 'user' ] );
+
                mw.user.getGroups( function ( groups ) {
                        assert.deepEqual( groups, [ '*', 'user' ], 'Result' );
                } );
@@ -55,7 +57,7 @@
 
                this.server.respondWith( /meta=userinfo/, function ( request ) {
                        request.respond( 200, { 'Content-Type': 'application/json' },
-                               '{ "query": { "userinfo": { "groups": [ "*", "user" ], "rights": [ "read", "edit", "createtalk" ] } } }'
+                               '{ "query": { "userinfo": { "groups": [ "unused" ], "rights": [ "read", "edit", "createtalk" ] } } }'
                        );
                } );