Merge "Fix docs for OutputPage::addLanguageLinks and OutputPage::setLanguageLinks"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 8 Nov 2016 03:36:32 +0000 (03:36 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 8 Nov 2016 03:36:32 +0000 (03:36 +0000)
84 files changed:
RELEASE-NOTES-1.28
autoload.php
docs/hooks.txt
includes/AjaxDispatcher.php
includes/EditPage.php
includes/Feed.php
includes/MediaWikiServices.php
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/Preferences.php
includes/Title.php
includes/Xml.php
includes/actions/HistoryAction.php
includes/api/ApiQuerySiteinfo.php
includes/api/i18n/es.json
includes/api/i18n/gl.json
includes/api/i18n/pt.json
includes/api/i18n/zh-hans.json
includes/cache/UserCache.php
includes/cache/localisation/LocalisationCache.php
includes/collation/IcuCollation.php
includes/deferred/SearchUpdate.php
includes/diff/WordLevelDiff.php
includes/exception/MWExceptionHandler.php
includes/filerepo/file/OldLocalFile.php
includes/htmlform/fields/HTMLSelectAndOtherField.php
includes/htmlform/fields/HTMLSelectNamespace.php
includes/htmlform/fields/HTMLSelectOrOtherField.php
includes/http/MWHttpRequest.php
includes/installer/DatabaseInstaller.php
includes/libs/CSSMin.php
includes/libs/filebackend/SwiftFileBackend.php
includes/libs/mime/XmlTypeCheck.php
includes/libs/virtualrest/ParsoidVirtualRESTService.php
includes/libs/virtualrest/RestbaseVirtualRESTService.php
includes/media/FormatMetadata.php
includes/page/ImagePage.php
includes/parser/LinkHolderArray.php
includes/parser/ParserOptions.php
includes/resourceloader/ResourceLoader.php
includes/search/SearchPostgres.php
includes/skins/BaseTemplate.php
includes/skins/SkinTemplate.php
includes/specialpage/LoginSignupSpecialPage.php
includes/specials/SpecialSearch.php
includes/user/User.php
languages/classes/LanguageSr.php
languages/classes/LanguageZh.php
languages/i18n/de.json
languages/i18n/fr.json
languages/i18n/he.json
languages/i18n/it.json
languages/i18n/nn.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/szl.json
languages/i18n/ur.json
languages/i18n/zh-hans.json
maintenance/Maintenance.php
maintenance/checkComposerLockUpToDate.php
maintenance/createCommonPasswordCdb.php
resources/src/mediawiki.less/mediawiki.ui/variables.less
tests/parser/TestFileReader.php
tests/phpunit/includes/GitInfoTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/LinkFilterTest.php
tests/phpunit/includes/PagePropsTest.php
tests/phpunit/includes/TemplateCategoriesTest.php
tests/phpunit/includes/api/ApiContinuationManagerTest.php
tests/phpunit/includes/api/ApiResultTest.php
tests/phpunit/includes/api/ApiRevisionDeleteTest.php
tests/phpunit/includes/auth/AuthManagerTest.php
tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php
tests/phpunit/includes/exception/MWExceptionTest.php
tests/phpunit/includes/linker/LinkRendererTest.php
tests/phpunit/includes/media/ExifBitmapTest.php
tests/phpunit/includes/session/SessionProviderTest.php
tests/phpunit/includes/session/SessionTest.php
tests/phpunit/includes/user/UserTest.php

index e04bb17..b5dc3f9 100644 (file)
@@ -40,6 +40,8 @@ production.
   away from. If you depend upon magic link functionality, it is requested that you comment
   on <https://www.mediawiki.org/wiki/Requests_for_comment/Future_of_magic_links> and
   explain your use case(s).
+* New config variable $wgCSPFalsePositiveUrls to control what URLs to ignore
+  in upcoming Content-Security-Policy feature's reporting.
 
 === New features in 1.28 ===
 * User::isBot() method for checking if an account is a bot role account.
index bbf4bd0..30ef985 100644 (file)
@@ -1010,6 +1010,7 @@ $wgAutoloadLocalClasses = [
        'OrphanStats' => __DIR__ . '/maintenance/storage/orphanStats.php',
        'Orphans' => __DIR__ . '/maintenance/orphans.php',
        'OutputPage' => __DIR__ . '/includes/OutputPage.php',
+       'PHPVersionCheck' => __DIR__ . '/includes/PHPVersionCheck.php',
        'PNGHandler' => __DIR__ . '/includes/media/PNG.php',
        'PNGMetadataExtractor' => __DIR__ . '/includes/media/PNGMetadataExtractor.php',
        'PPCustomFrame_DOM' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
index 906623f..a3ded89 100644 (file)
@@ -2521,10 +2521,6 @@ $showEditLinks: boolean describing whether this section has an edit link
 &$globals: Array with all the globals which should be set for parser tests.
   The arrays keys serve as the globals names, its values are the globals values.
 
-'ParserTestParser': Called when creating a new instance of Parser in
-tests/parser/parserTest.inc.
-&$parser: Parser object created
-
 'ParserTestTables': Alter the list of tables to duplicate when parser tests are
 run. Use when page save hooks require the presence of custom tables to ensure
 that tests continue to run properly.
index 9142238..d444a27 100644 (file)
@@ -90,7 +90,6 @@ class AjaxDispatcher {
                                # Or we could throw an exception:
                                # throw new MWException( __METHOD__ . ' called without any data (mode empty).' );
                }
-
        }
 
        /**
@@ -156,6 +155,5 @@ class AjaxDispatcher {
                                }
                        }
                }
-
        }
 }
index 7dd68e4..9c5c91a 100644 (file)
@@ -1044,7 +1044,6 @@ class EditPage {
 
                // Allow extensions to modify form data
                Hooks::run( 'EditPage::importFormData', [ $this, $request ] );
-
        }
 
        /**
@@ -2237,7 +2236,6 @@ class EditPage {
         * @return bool
         */
        private function mergeChangesIntoContent( &$editContent ) {
-
                $db = wfGetDB( DB_MASTER );
 
                // This is the revision the editor started from
@@ -2813,7 +2811,6 @@ class EditPage {
                if ( !$wgUser->getOption( 'previewontop' ) ) {
                        $this->displayPreviewArea( $previewOutput, false );
                }
-
        }
 
        /**
@@ -2839,7 +2836,6 @@ class EditPage {
                return Html::rawElement( 'div', [ 'class' => 'templatesUsed' ],
                        $templateListFormatter->format( $templates, $type )
                );
-
        }
 
        /**
index 8bfe1c7..189fd9f 100644 (file)
@@ -236,7 +236,6 @@ abstract class ChannelFeed extends FeedItem {
                        $wgOut->addVaryHeader( 'X-Forwarded-Proto' );
                }
                $wgOut->sendCacheControl();
-
        }
 
        /**
index bb2ed5b..a0c00c6 100644 (file)
@@ -192,7 +192,6 @@ class MediaWikiServices extends ServiceContainer {
                } else {
                        $oldInstance->destroy();
                }
-
        }
 
        /**
index 1e23de5..12df3a5 100644 (file)
@@ -1713,7 +1713,6 @@ class OutputPage extends ContextSource {
                $popts->setTidy( $oldTidy );
 
                $this->addParserOutput( $parserOutput );
-
        }
 
        /**
index 656ba43..e6e96c7 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+// @codingStandardsIgnoreFile Generic.Arrays.DisallowLongArraySyntax
+// @codingStandardsIgnoreFile Generic.Files.LineLength
+// @codingStandardsIgnoreFile MediaWiki.Usage.DirUsage.FunctionFound
 /**
  * Check PHP Version, as well as for composer dependencies in entry points,
  * and display something vaguely comprehensible in the event of a totally
  *
  * @file
  */
-
-/**
- * Check php version and that external dependencies are installed, and
- * display an informative error if either condition is not satisfied.
- *
- * @note Since we can't rely on anything, the minimum PHP versions and MW current
- * version are hardcoded here
- */
-function wfEntryPointCheck( $entryPoint ) {
-       $mwVersion = '1.29';
-       $minimumVersionPHP = '5.5.9';
-       $phpVersion = PHP_VERSION;
-
-       if ( !function_exists( 'version_compare' )
-               || version_compare( $phpVersion, $minimumVersionPHP ) < 0
-       ) {
-               wfPHPVersionError( $entryPoint, $mwVersion, $minimumVersionPHP, $phpVersion );
-       }
-
-       // @codingStandardsIgnoreStart MediaWiki.Usage.DirUsage.FunctionFound
-       if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) {
-               // @codingStandardsIgnoreEnd
-               wfMissingVendorError( $entryPoint, $mwVersion );
-       }
-
-       // List of functions and their associated PHP extension to check for
-       // @codingStandardsIgnoreStart Generic.Arrays.DisallowLongArraySyntax
-       $extensions = array(
+class PHPVersionCheck {
+       /* @var string The number of the MediaWiki version used */
+       var $mwVersion = '1.29';
+       /* @var string The minimum php version for MediaWiki to run */
+       var $minimumVersionPHP = '5.5.9';
+       var $functionsExtensionsMapping = array(
                'mb_substr'   => 'mbstring',
                'utf8_encode' => 'xml',
                'ctype_digit' => 'ctype',
                'json_decode' => 'json',
                'iconv'       => 'iconv',
        );
-       // List of extensions we're missing
-       $missingExtensions = array();
-       // @codingStandardsIgnoreEnd
 
-       foreach ( $extensions as $function => $extension ) {
-               if ( !function_exists( $function ) ) {
-                       $missingExtensions[] = $extension;
+       /**
+        * @var string Which entry point we are protecting. One of:
+        *   - index.php
+        *   - load.php
+        *   - api.php
+        *   - mw-config/index.php
+        *   - cli
+        */
+       var $entryPoint = null;
+
+       /**
+        * @param string $entryPoint Which entry point we are protecting. One of:
+        *   - index.php
+        *   - load.php
+        *   - api.php
+        *   - mw-config/index.php
+        *   - cli
+        * @return $this
+        */
+       function setEntryPoint( $entryPoint ) {
+               $this->entryPoint = $entryPoint;
+       }
+
+       /**
+        * Returns the version of the installed php implementation.
+        *
+        * @return string
+        */
+       function getPHPImplVersion() {
+               return PHP_VERSION;
+       }
+
+       /**
+        * Displays an error, if the installed php version does not meet the minimum requirement.
+        *
+        * @return $this
+        */
+       function checkRequiredPHPVersion() {
+               if ( !function_exists( 'version_compare' )
+                    || version_compare( $this->getPHPImplVersion(), $this->minimumVersionPHP ) < 0
+               ) {
+                       $shortText = "MediaWiki $this->mwVersion requires at least PHP version"
+                                    . " $this->minimumVersionPHP, you are using PHP {$this->getPHPImplVersion()}.";
+
+                       $longText = "Error: You might be using on older PHP version. \n"
+                                   . "MediaWiki $this->mwVersion needs PHP $this->minimumVersionPHP or higher.\n\n"
+                                   . "Check if you have a newer php executable with a different name, "
+                                   . "such as php5.\n\n";
+
+                       $longHtml = <<<HTML
+                       Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
+                       PHP versions less than 5.5.0 are no longer supported by the PHP Group and will not receive
+                       security or bugfix updates.
+               </p>
+               <p>
+                       If for some reason you are unable to upgrade your PHP version, you will need to
+                       <a href="https://www.mediawiki.org/wiki/Download">download</a> an older version
+                       of MediaWiki from our website.  See our
+                       <a href="https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
+                       for details of which versions are compatible with prior versions of PHP.
+HTML;
+                       $this->triggerError( 'Supported PHP versions', $shortText, $longText, $longHtml );
                }
        }
 
-       if ( $missingExtensions ) {
-               wfMissingExtensions( $entryPoint, $mwVersion, $missingExtensions );
+       /**
+        * Displays an error, if the vendor/autoload.php file could not be found.
+        *
+        * @return $this
+        */
+       function checkVendorExistence() {
+               if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) {
+                       $shortText = "Installing some external dependencies (e.g. via composer) is required.";
+
+                       $longText = "Error: You are missing some external dependencies. \n"
+                                   . "MediaWiki now also has some external dependencies that need to be installed\n"
+                                   . "via composer or from a separate git repo. Please see\n"
+                                   . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
+                                   . "for help on installing the required components.";
+
+                       $longHtml = <<<HTML
+               MediaWiki now also has some external dependencies that need to be installed via
+               composer or from a separate git repo. Please see
+               <a href="https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">mediawiki.org</a>
+               for help on installing the required components.
+HTML;
+
+                       $this->triggerError( 'External dependencies', $shortText, $longText, $longHtml );
+               }
        }
-}
 
-/**
- * Display something vaguely comprehensible in the event of a totally unrecoverable error.
- * Does not assume access to *anything*; no globals, no autoloader, no database, no localisation.
- * Safe for PHP4 (and putting this here means that WebStart.php and GlobalSettings.php
- * no longer need to be).
- *
- * Calling this function kills execution immediately.
- *
- * @param string $type Which entry point we are protecting. One of:
- *   - index.php
- *   - load.php
- *   - api.php
- *   - mw-config/index.php
- *   - cli
- * @param string $mwVersion The number of the MediaWiki version used
- * @param string $title HTML code to be put within an <h2> tag
- * @param string $shortText
- * @param string $longText
- * @param string $longHtml
- */
-function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $longHtml ) {
-       $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
+       /**
+        * Displays an error, if a PHP extension does not exist.
+        *
+        * @return $this
+        */
+       function checkExtensionExistence() {
+               $missingExtensions = array();
+               foreach ( $this->functionsExtensionsMapping as $function => $extension ) {
+                       if ( !function_exists( $function ) ) {
+                               $missingExtensions[] = $extension;
+                       }
+               }
+
+               if ( $missingExtensions ) {
+                       $shortText = "Installing some PHP extensions is required.";
+
+                       $missingExtText = '';
+                       $missingExtHtml = '';
+                       $baseUrl = 'https://secure.php.net';
+                       foreach ( $missingExtensions as $ext ) {
+                               $missingExtText .= " * $ext <$baseUrl/$ext>\n";
+                               $missingExtHtml .= "<li><b>$ext</b> "
+                                                  . "(<a href=\"$baseUrl/$ext\">more information</a>)</li>";
+                       }
+
+                       $cliText = "Error: Missing one or more required components of PHP.\n"
+                                  . "You are missing a required extension to PHP that MediaWiki needs.\n"
+                                  . "Please install:\n" . $missingExtText;
+
+                       $longHtml = <<<HTML
+               You are missing a required extension to PHP that MediaWiki
+               requires to run. Please install:
+               <ul>
+               $missingExtHtml
+               </ul>
+HTML;
+
+                       $this->triggerError( 'Required components', $shortText, $cliText, $longHtml );
+               }
+       }
+
+       /**
+        * Output headers that prevents error pages to be cached.
+        */
+       function outputHTMLHeader() {
+               $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
 
-       if ( $type == 'cli' ) {
-               $finalOutput = $longText;
-       } else {
                header( "$protocol 500 MediaWiki configuration Error" );
                // Don't cache error pages!  They cause no end of trouble...
                header( 'Cache-control: none' );
                header( 'Pragma: no-cache' );
+       }
 
-               if ( $type == 'index.php' || $type == 'mw-config/index.php' ) {
-                       $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
-                       if ( $type == 'mw-config/index.php' ) {
-                               $dirname = dirname( $pathinfo['dirname'] );
-                       } else {
-                               $dirname = $pathinfo['dirname'];
-                       }
-                       $encLogo = htmlspecialchars(
-                               str_replace( '//', '/', $dirname . '/' ) .
-                               'resources/assets/mediawiki.png'
-                       );
-                       $shortHtml = htmlspecialchars( $shortText );
+       /**
+        * Returns an error page, which is suitable for output to the end user via a web browser.
+        *
+        * @param $title
+        * @param $longHtml
+        * @param $shortText
+        * @return string
+        */
+       function getIndexErrorOutput( $title, $longHtml, $shortText ) {
+               $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
+               if ( $this->entryPoint == 'mw-config/index.php' ) {
+                       $dirname = dirname( $pathinfo['dirname'] );
+               } else {
+                       $dirname = $pathinfo['dirname'];
+               }
+               $encLogo =
+                       htmlspecialchars( str_replace( '//', '/', $dirname . '/' ) .
+                                         'resources/assets/mediawiki.png' );
+               $shortHtml = htmlspecialchars( $shortText );
 
-                       header( 'Content-type: text/html; charset=UTF-8' );
+               header( 'Content-type: text/html; charset=UTF-8' );
 
-                       $finalOutput = <<<HTML
+               $finalOutput = <<<HTML
 <!DOCTYPE html>
 <html lang="en" dir="ltr">
        <head>
                <meta charset="UTF-8" />
-               <title>MediaWiki {$mwVersion}</title>
+               <title>MediaWiki {$this->mwVersion}</title>
                <style media='screen'>
                        body {
                                color: #000;
@@ -144,7 +231,7 @@ function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $long
        </head>
        <body>
                <img src="{$encLogo}" alt='The MediaWiki logo' />
-               <h1>MediaWiki {$mwVersion} internal error</h1>
+               <h1>MediaWiki {$this->mwVersion} internal error</h1>
                <div class='error'>
                <p>
                        {$shortHtml}
@@ -157,105 +244,59 @@ function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $long
        </body>
 </html>
 HTML;
-               // Handle everything that's not index.php
-               } else {
-                       // So nothing thinks this is JS or CSS
-                       $finalOutput = ( $type == 'load.php' ) ? "/* $shortText */" : $shortText;
-               }
-       }
-       echo "$finalOutput\n";
-       die( 1 );
-}
-
-/**
- * Display an error for the minimum PHP version requirement not being satisfied.
- *
- * @param string $type See wfGenericError
- * @param string $mwVersion See wfGenericError
- * @param string $minimumVersionPHP The minimum PHP version supported by MediaWiki
- * @param string $phpVersion The current PHP version
- */
-function wfPHPVersionError( $type, $mwVersion, $minimumVersionPHP, $phpVersion ) {
-       $shortText = "MediaWiki $mwVersion requires at least "
-               . "PHP version $minimumVersionPHP, you are using PHP $phpVersion.";
-
-       $longText = "Error: You might be using on older PHP version. \n"
-               . "MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher.\n\n"
-               . "Check if you have a newer php executable with a different name, such as php5.\n\n";
-
-       $longHtml = <<<HTML
-                       Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
-                       PHP versions less than 5.5.0 are no longer supported by the PHP Group and will not receive
-                       security or bugfix updates.
-               </p>
-               <p>
-                       If for some reason you are unable to upgrade your PHP version, you will need to
-                       <a href="https://www.mediawiki.org/wiki/Download">download</a> an older version
-                       of MediaWiki from our website.  See our
-                       <a href="https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
-                       for details of which versions are compatible with prior versions of PHP.
-HTML;
-       wfGenericError( $type, $mwVersion, 'Supported PHP versions', $shortText, $longText, $longHtml );
-}
-
-/**
- * Display an error for the vendor/autoload.php file not being found.
- *
- * @param string $type See wfGenericError
- * @param string $mwVersion See wfGenericError
- */
-function wfMissingVendorError( $type, $mwVersion ) {
-       $shortText = "Installing some external dependencies (e.g. via composer) is required.";
 
-       $longText = "Error: You are missing some external dependencies. \n"
-               . "MediaWiki now also has some external dependencies that need to be installed\n"
-               . "via composer or from a separate git repo. Please see\n"
-               . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
-               . "for help on installing the required components.";
+               return $finalOutput;
+       }
 
-       // @codingStandardsIgnoreStart Generic.Files.LineLength
-       $longHtml = <<<HTML
-               MediaWiki now also has some external dependencies that need to be installed via
-               composer or from a separate git repo. Please see
-               <a href="https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">mediawiki.org</a>
-               for help on installing the required components.
-HTML;
-       // @codingStandardsIgnoreEnd
+       /**
+        * Display something vaguely comprehensible in the event of a totally unrecoverable error.
+        * Does not assume access to *anything*; no globals, no autoloader, no database, no localisation.
+        * Safe for PHP4 (and putting this here means that WebStart.php and GlobalSettings.php
+        * no longer need to be).
+        *
+        * Calling this function kills execution immediately.
+        *
+        * @param string $title HTML code to be put within an <h2> tag
+        * @param string $shortText
+        * @param string $longText
+        * @param string $longHtml
+        */
+       function triggerError( $title, $shortText, $longText, $longHtml ) {
+               switch ( $this->entryPoint ) {
+                       case 'cli':
+                               $finalOutput = $longText;
+                               break;
+                       case 'index.php':
+                       case 'mw-config/index.php':
+                               $this->outputHTMLHeader();
+                               $finalOutput = $this->getIndexErrorOutput( $title, $longHtml, $shortText );
+                               break;
+                       case 'load.php':
+                               $this->outputHTMLHeader();
+                               $finalOutput = "/* $shortText */";
+                               break;
+                       default:
+                               $this->outputHTMLHeader();
+                               // Handle everything that's not index.php
+                               $finalOutput = $shortText;
+               }
 
-       wfGenericError( $type, $mwVersion, 'External dependencies', $shortText, $longText, $longHtml );
+               echo "$finalOutput\n";
+               die( 1 );
+       }
 }
 
 /**
- * Display an error for a PHP extension not existing.
+ * Check php version and that external dependencies are installed, and
+ * display an informative error if either condition is not satisfied.
  *
- * @param string $type See wfGenericError
- * @param string $mwVersion See wfGenericError
- * @param array $missingExts The extensions we're missing
+ * @note Since we can't rely on anything, the minimum PHP versions and MW current
+ * version are hardcoded here
  */
-function wfMissingExtensions( $type, $mwVersion, $missingExts ) {
-       $shortText = "Installing some PHP extensions is required.";
-
-       $missingExtText = '';
-       $missingExtHtml = '';
-       $baseUrl = 'https://secure.php.net';
-       foreach ( $missingExts as $ext ) {
-               $missingExtText .= " * $ext <$baseUrl/$ext>\n";
-               $missingExtHtml .= "<li><b>$ext</b> "
-                       . "(<a href=\"$baseUrl/$ext\">more information</a>)</li>";
-       }
-
-       $cliText = "Error: Missing one or more required components of PHP.\n"
-               . "You are missing a required extension to PHP that MediaWiki needs.\n"
-               . "Please install:\n" . $missingExtText;
-
-       $longHtml = <<<HTML
-               You are missing a required extension to PHP that MediaWiki
-               requires to run. Please install:
-               <ul>
-               $missingExtHtml
-               </ul>
-HTML;
-
-       wfGenericError( $type, $mwVersion, 'Required components', $shortText,
-               $cliText, $longHtml );
+function wfEntryPointCheck( $entryPoint ) {
+       $phpVersionCheck = new PHPVersionCheck();
+       $phpVersionCheck->setEntryPoint( $entryPoint );
+       $phpVersionCheck->checkRequiredPHPVersion();
+       $phpVersionCheck->checkVendorExistence();
+       $phpVersionCheck->checkExtensionExistence();
 }
index 9f8c06b..d86b19a 100644 (file)
@@ -861,7 +861,6 @@ class Preferences {
                        'section' => 'editing/preview',
                        'label-message' => 'tog-uselivepreview',
                ];
-
        }
 
        /**
@@ -1614,7 +1613,6 @@ class PreferencesForm extends HTMLForm {
         * @return string
         */
        function getButtons() {
-
                $attrs = [ 'id' => 'mw-prefs-restoreprefs' ];
 
                if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) {
index 213572b..3c51bae 100644 (file)
@@ -1412,7 +1412,6 @@ class Title implements LinkTarget {
                        $fragment,
                        $this->getInterwiki()
                );
-
        }
 
        /**
@@ -2926,7 +2925,6 @@ class Title implements LinkTarget {
 
                        # Cycle through all the restrictions.
                        foreach ( $rows as $row ) {
-
                                // Don't take care of restrictions types that aren't allowed
                                if ( !in_array( $row->pr_type, $restrictionTypes ) ) {
                                        continue;
@@ -4600,7 +4598,6 @@ class Title implements LinkTarget {
                        : $wgExemptFromUserRobotsControl;
 
                return !in_array( $this->mNamespace, $bannedNamespaces );
-
        }
 
        /**
index b1bd098..4c6b071 100644 (file)
@@ -238,7 +238,6 @@ class Xml {
                        Xml::label( $msg->text(), $attrs['id'] ),
                        Xml::tags( 'select', $attrs, $options )
                ];
-
        }
 
        /**
index 1e1bb39..c1763fa 100644 (file)
@@ -218,7 +218,6 @@ class HistoryAction extends FormlessAction {
                        $pager->getNavigationBar()
                );
                $out->preventClickjacking( $pager->getPreventClickjacking() );
-
        }
 
        /**
index 99f722d..0bb7ff8 100644 (file)
@@ -576,7 +576,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                ApiResult::setIndexedTagName( $data, 'library' );
 
                return $this->getResult()->addValue( 'query', $property, $data );
-
        }
 
        protected function appendExtensions( $property ) {
index 2351733..7442fd7 100644 (file)
@@ -23,7 +23,8 @@
                        "2axterix2",
                        "Dgstranz",
                        "Copper12",
-                       "Irus"
+                       "Irus",
+                       "Hamilton Abreu"
                ]
        },
        "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 correo]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios de la API]\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ían funcionar, pero la API aún se encuentra 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 una cabecera HTTP con la clave \"MediaWiki-API-Error\". El valor de la cabecera y el código de error devuelto tomarán 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]].",
index fe7bf1a..ac025e4 100644 (file)
        "apihelp-query+allfileusages-param-dir": "Dirección na cal listar.",
        "apihelp-query+allfileusages-example-B": "Lista títulos de ficheiro, incluíndo os   eliminados, cos IDs de páxina dos que proveñen, comezando en <kbd>B</kbd>.",
        "apihelp-query+allfileusages-example-unique": "Listar títulos únicos de ficheiros.",
-       "apihelp-query+allfileusages-example-unique-generator": "Obter todos os títulos de ficheiro, marcando os eliminados.",
+       "apihelp-query+allfileusages-example-unique-generator": "Obter todos os títulos de ficheiro, marcando os que faltan.",
        "apihelp-query+allfileusages-example-generator": "Obtén as páxinas que conteñen os ficheiros.",
        "apihelp-query+allimages-description": "Enumerar tódalas imaxes secuencialmente.",
        "apihelp-query+allimages-param-sort": "Propiedade pola que ordenar.",
index e121227..96d6566 100644 (file)
@@ -87,7 +87,7 @@
        "apihelp-edit-description": "Criar e editar páginas.",
        "apihelp-edit-param-title": "Título da página a ser editada. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "Identificador da página a ser editada. Não pode ser usado em conjunto com <var>$1title</var>.",
-       "apihelp-edit-param-section": "Número  da secção. <kbd>0</kbd> para a secção de topo, <kbd>new</kbd> para uma secção nova.",
+       "apihelp-edit-param-section": "Número da secção. <kbd>0</kbd> para a secção de topo, <kbd>new</kbd> para uma secção nova.",
        "apihelp-edit-param-sectiontitle": "Título para uma nova secção.",
        "apihelp-edit-param-text": "Conteúdo da página.",
        "apihelp-edit-param-summary": "Resumo da edição. Também é o título da secção quando $1section=new e $1sectiontitle não está definido.",
        "apihelp-feedrecentchanges-param-invert": "Todos os espaços nominais exceto o selecionado.",
        "apihelp-feedrecentchanges-param-associated": "Incluir o espaço nominal associado (de discussão ou principal).",
        "apihelp-feedrecentchanges-param-days": "Dias aos quais limitar os resultados.",
-       "apihelp-feedrecentchanges-param-limit": "Número máximo de resultados a devolver.",
+       "apihelp-feedrecentchanges-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-feedrecentchanges-param-from": "Mostrar alterações desde então.",
        "apihelp-feedrecentchanges-param-hideminor": "Ocultar edições menores.",
        "apihelp-feedrecentchanges-param-hidebots": "Ocultar mudanças feitas por robôs.",
        "apihelp-move-example-move": "Mover <kbd>Badtitle</kbd> para <kbd>Goodtitle</kbd> sem deixar um redirecionamento.",
        "apihelp-opensearch-description": "Pesquisar a wiki usando o protocolo OpenSearch.",
        "apihelp-opensearch-param-search": "Texto a pesquisar.",
-       "apihelp-opensearch-param-limit": "Número máximo de resultados a apresentar.",
+       "apihelp-opensearch-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-opensearch-param-namespace": "Espaços nominais a pesquisar.",
        "apihelp-opensearch-param-suggest": "Não fazer nada se <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> for falso.",
        "apihelp-opensearch-param-redirects": "Como tratar redirecionamentos:\n;return:Devolver o próprio redirecionamento.\n;resolve:Devolver a página de destino. Pode devolver menos de $1limit resultados.\nPor razões históricas, o valor por omissão é \"return\" para o formato $1format=json e \"resolve\" para outros formatos.",
        "apihelp-query+allcategories-param-dir": "Direção da ordenação.",
        "apihelp-query+allcategories-param-min": "Só devolver as categorias que tenham no mínimo este número de membros.",
        "apihelp-query+allcategories-param-max": "Só devolver as categorias que tenham no máximo este número de membros.",
-       "apihelp-query+allcategories-param-limit": "Quantas categorias devem ser devolvidas.",
+       "apihelp-query+allcategories-param-limit": "O número de categorias a serem devolvidas.",
        "apihelp-query+allcategories-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+allcategories-paramvalue-prop-size": "Adiciona o número de páginas na categoria.",
        "apihelp-query+allcategories-paramvalue-prop-hidden": "Etiqueta as categorias ocultadas com <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+alldeletedrevisions-description": "Listar todas as revisões eliminadas por um utilizador ou de um espaço nominal.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Só pode ser usado com <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Não pode ser usado com <var>$3user</var>.",
-       "apihelp-query+alldeletedrevisions-param-start": "A data e hora a partir da qual será começada a enumeração.",
+       "apihelp-query+alldeletedrevisions-param-start": "A data e hora da revisão a partir da qual será começada a enumeração.",
        "apihelp-query+alldeletedrevisions-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+alldeletedrevisions-param-from": "Começar a listagem neste título.",
        "apihelp-query+alldeletedrevisions-param-to": "Terminar a listagem neste título.",
        "apihelp-query+alldeletedrevisions-param-namespace": "Listar só as páginas neste espaço nominal.",
        "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Nota:</strong> Devido ao [[mw:Manual:$wgMiserMode|modo avarento]], o uso de <var>$1user</var> e <var>$1namespace</var> em conjunto pode resultar na devolução de menos de <var>$1limit</var> resultados antes de continuar; em casos extremos pode não ser devolvido qualquer resultado.",
        "apihelp-query+alldeletedrevisions-param-generatetitles": "Ao ser usado como gerador, gerar títulos em vez de identificadores de revisões.",
-       "apihelp-query+alldeletedrevisions-example-user": "Listar as últimas 50 contribuições eliminadas pelo utilizador <kbd>Example</kbd>.",
+       "apihelp-query+alldeletedrevisions-example-user": "Listar as últimas 50 contribuições eliminadas do utilizador <kbd>Example</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Listar as primeiras 50 revisões eliminadas no espaço nominal principal.",
        "apihelp-query+allfileusages-description": "Listar todas as utilizações de ficheiros, incluindo ficheiros que não existam.",
        "apihelp-query+allfileusages-param-from": "O título do ficheiro a partir do qual será começada a enumeração.",
        "apihelp-query+allfileusages-param-to": "O título do ficheiro no qual será terminada a enumeração.",
        "apihelp-query+allfileusages-param-prefix": "Procurar todos os títulos de ficheiro que começam por este valor.",
+       "apihelp-query+allfileusages-param-unique": "Mostrar só nomes de ficheiros distintos. Não pode ser usado com <kbd>$1prop=ids</kbd>.\nQuando usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+allfileusages-param-prop": "As informações que devem ser incluídas:",
-       "apihelp-query+allfileusages-paramvalue-prop-ids": "Adiciona os identificadores das páginas que o utilizam (não pode ser usado com $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Adiciona os identificadores das páginas que utilizam (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Adiciona o título do ficheiro.",
+       "apihelp-query+allfileusages-param-limit": "O número total de elementos a serem devolvidos.",
        "apihelp-query+allfileusages-param-dir": "A direção de listagem.",
+       "apihelp-query+allfileusages-example-B": "Listar os títulos de ficheiros, incluindo aqueles em falta, com os identificadores das páginas de onde provêm, começando no <kbd>B</kbd>.",
+       "apihelp-query+allfileusages-example-unique": "Listar os títulos de ficheiros distintos.",
+       "apihelp-query+allfileusages-example-unique-generator": "Obter todos os títulos de ficheiros, marcando aqueles em falta.",
+       "apihelp-query+allfileusages-example-generator": "Obter as páginas que contêm os ficheiros.",
        "apihelp-query+allimages-description": "Enumerar todas as imagens sequencialmente.",
+       "apihelp-query+allimages-param-sort": "Propriedade pela qual fazer a ordenação.",
        "apihelp-query+allimages-param-dir": "A direção de listagem.",
        "apihelp-query+allimages-param-from": "O título da imagem a partir do qual será começada a enumeração. Só pode ser usado com $1sort=name.",
        "apihelp-query+allimages-param-to": "O título da imagem no qual será terminada a enumeração. Só pode ser usado com $1sort=name.",
-       "apihelp-query+allimages-param-start": "A data e hora a partir da qual será começada a enumeração. Só pode ser usado com $1sort=timestamp.",
-       "apihelp-query+allimages-param-end": "A data e hora na qual será terminada a enumeração. Só pode ser usado com $1sort=timestamp.",
+       "apihelp-query+allimages-param-start": "A data e hora da imagem a partir da qual será começada a enumeração. Só pode ser usado com $1sort=timestamp.",
+       "apihelp-query+allimages-param-end": "A data e hora da imagem na qual será terminada a enumeração. Só pode ser usado com $1sort=timestamp.",
        "apihelp-query+allimages-param-prefix": "Procurar todos os títulos de imagem que começam por este valor. Só pode ser usado com $1sort=name.",
+       "apihelp-query+allimages-param-minsize": "Limitar só às imagens com este número mínimo de bytes.",
+       "apihelp-query+allimages-param-maxsize": "Limitar só às imagens com este número máximo de bytes.",
+       "apihelp-query+allimages-param-sha1": "Resumo criptográfico SHA1 da imagem. Substitui $1sha1base36.",
+       "apihelp-query+allimages-param-sha1base36": "Resumo criptográfico SHA1 da imagem em base 36 (usado no MediaWiki).",
+       "apihelp-query+allimages-param-user": "Devolver só os ficheiros carregados por este utilizador. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1filterbots.",
+       "apihelp-query+allimages-param-filterbots": "Como filtrar os ficheiros carregados por robôs. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1user.",
        "apihelp-query+allimages-param-mime": "Tipos MIME a procurar; por exemplo, <kbd>image/jpeg</kbd>.",
+       "apihelp-query+allimages-param-limit": "O número total de imagens a serem devolvidas.",
+       "apihelp-query+allimages-example-B": "Mostrar uma lista dos ficheiros que começam com a letra <kbd>B</kbd>.",
+       "apihelp-query+allimages-example-recent": "Mostrar uma lista dos ficheiros carregados recentemente, semelhante a [[Special:NewFiles]].",
+       "apihelp-query+allimages-example-mimetypes": "Mostrar uma lista dos ficheiros com os tipos MIME <kbd>image/png</kbd> ou <kbd>image/gif</kbd>.",
+       "apihelp-query+allimages-example-generator": "Mostrar informação sobre 4 ficheiros, começando pela letra <kbd>T</kbd>.",
        "apihelp-query+alllinks-description": "Enumerar todos os ''links'' que apontam para um determinado espaço nominal.",
        "apihelp-query+alllinks-param-from": "O título do ''link'' a partir do qual será começada a enumeração.",
        "apihelp-query+alllinks-param-to": "O título do ''link'' no qual será terminada a enumeração.",
        "apihelp-query+alllinks-param-prefix": "Procurar todos os títulos ligados que começam por este valor.",
+       "apihelp-query+alllinks-param-unique": "Mostrar só títulos ligados distintos. Não pode ser usado com <kbd>$1prop=ids</kbd>.\nQuando usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+alllinks-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Adiciona o identificador da página que contém a ligação (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Adiciona o título do ''link''.",
        "apihelp-query+alllinks-param-namespace": "O espaço nominal a ser enumerado.",
+       "apihelp-query+alllinks-param-limit": "O número total de entradas a serem devolvidas.",
        "apihelp-query+alllinks-param-dir": "A direção de listagem.",
+       "apihelp-query+alllinks-example-B": "Listar os títulos para os quais existem ligações, incluindo títulos em falta, com os identificadores das páginas que contêm as respetivas ligações, começando pela letra <kbd>B</kbd>.",
+       "apihelp-query+alllinks-example-unique": "Listar os títulos distintos para os quais existem ligações.",
+       "apihelp-query+alllinks-example-unique-generator": "Obter todos os títulos para os quais existem ligações, marcando aqueles em falta.",
+       "apihelp-query+alllinks-example-generator": "Obter as páginas que contêm as ligações.",
+       "apihelp-query+allmessages-description": "Devolver as mensagens deste ''site''.",
        "apihelp-query+allmessages-param-messages": "Mensagens a serem produzidas no resultado. <kbd>*</kbd> (o valor por omissão) significa todas as mensagens.",
        "apihelp-query+allmessages-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+allmessages-param-enableparser": "Definir, para ativar o analisador sintático e pré-processar o texto da mensagem com notação wiki (substituir palavras mágicas, processar predefinições, etc.).",
+       "apihelp-query+allmessages-param-nocontent": "Se definido, não incluir o conteúdo das mensagens no resultado de saída.",
+       "apihelp-query+allmessages-param-includelocal": "Incluir também as mensagens locais, isto é, mensagens que não existem no software mas existem como uma página no espaço nominal MediaWiki:.\nIsto lista todas as páginas do espaço nominal MediaWiki:, portanto, também irá listar aquelas que não são verdadeiramente mensagens, como [[MediaWiki:Common.js|Common.js]].",
+       "apihelp-query+allmessages-param-args": "Os argumentos a serem substituídos na mensagem.",
+       "apihelp-query+allmessages-param-filter": "Devolver só as mensagens cujos nomes contêm este texto.",
+       "apihelp-query+allmessages-param-customised": "Devolver só as mensagens neste estado de personalização.",
+       "apihelp-query+allmessages-param-lang": "Devolver as mensagens nesta língua.",
+       "apihelp-query+allmessages-param-from": "Devolver as mensagens, a partir desta mensagem.",
+       "apihelp-query+allmessages-param-to": "Devolver as mensagens, até esta mensagem.",
+       "apihelp-query+allmessages-param-title": "Nome da página a utilizar como contexto ao fazer a análise sintática da mensagem (para a opção $1enableparser).",
+       "apihelp-query+allmessages-param-prefix": "Devolver as mensagens com este prefixo.",
        "apihelp-query+allmessages-example-ipb": "Mostrar mensagens que começam por <kbd>ipb-</kbd>.",
-       "apihelp-query+allpages-description": "Enumerar todas as páginas sequencialmente dentro de um espaço nominal.",
+       "apihelp-query+allmessages-example-de": "Mostrar as mensagens <kbd>august</kbd> e <kbd>mainpage</kbd> em Alemão.",
+       "apihelp-query+allpages-description": "Enumerar sequencialmente todas as páginas de um determinado espaço nominal.",
        "apihelp-query+allpages-param-from": "O título de página a partir do qual será começada a enumeração.",
        "apihelp-query+allpages-param-to": "O título de página no qual será terminada a enumeração.",
        "apihelp-query+allpages-param-prefix": "Procurar todos os títulos de páginas que comecem com este valor.",
        "apihelp-query+allpages-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+allpages-param-filterredir": "As páginas a serem listadas.",
+       "apihelp-query+allpages-param-minsize": "Limitar só às páginas com este número mínimo de bytes.",
+       "apihelp-query+allpages-param-maxsize": "Limitar só às páginas com este número máximo de bytes.",
+       "apihelp-query+allpages-param-prtype": "Limitar só às páginas protegidas.",
+       "apihelp-query+allpages-param-prlevel": "Filtrar as proteções com base no nível de proteção (tem de ser usado com o parâmetro $1prtype=).",
+       "apihelp-query+allpages-param-prfiltercascade": "Filtrar as proteções com base na proteção em cascata (ignorado se $1prtype não estiver presente).",
+       "apihelp-query+allpages-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+allpages-param-dir": "A direção de listagem.",
+       "apihelp-query+allpages-param-filterlanglinks": "Filtrar dependo de uma página ter ''links'' interlínguas. Note que isto pode não tomar em consideração ''links'' interlínguas adicionados por extensões.",
        "apihelp-query+allpages-param-prexpiry": "O tipo de expiração pelo qual as páginas serão filtradas:\n;indefinite:Obter só páginas com um período de expiração indefinido.\n;definite:Obter só páginas com um período de expiração definido (específico).\n;all:Obter páginas com qualquer período de expiração.",
-       "apihelp-query+allpages-example-generator": "Mostrar informação sobre 4 páginas que comecem com a letra <kbd>T</kbd>.",
+       "apihelp-query+allpages-example-B": "Mostrar uma lista de páginas, começando na letra <kbd>B</kbd>.",
+       "apihelp-query+allpages-example-generator": "Mostrar informação sobre 4 páginas, começando na letra <kbd>T</kbd>.",
+       "apihelp-query+allpages-example-generator-revisions": "Mostrar o conteúdo das primeiras 2 páginas que não sejam redirecionamentos, começando na página <kbd>Re</kbd>.",
        "apihelp-query+allredirects-param-from": "O título do redirecionamento a partir do qual será começada a enumeração.",
        "apihelp-query+allredirects-param-to": "O título do redirecionamento no qual será terminada a enumeração.",
        "apihelp-query+allredirects-param-prefix": "Procurar todas as páginas de destino que começam por este valor.",
+       "apihelp-query+allredirects-param-unique": "Mostrar só páginas de destino distintas. Não pode ser usado com <kbd>$1prop=ids|fragment|interwiki</kbd>.\nQuando usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+allredirects-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Adiciona o identificador da página que contém o redirecionamento (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Adiciona o título do redirecionamento.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Adiciona o fragmento do redirecionamento, se existir (não pode ser usado com <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "O espaço nominal a ser enumerado.",
+       "apihelp-query+allredirects-param-limit": "O número total de elementos a serem devolvidos.",
        "apihelp-query+allredirects-param-dir": "A direção de listagem.",
+       "apihelp-query+allrevisions-description": "Listar todas as revisões.",
        "apihelp-query+allrevisions-param-start": "A data e hora a partir da qual será começada a enumeração.",
        "apihelp-query+allrevisions-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+allrevisions-param-user": "Listar só as revisões deste utilizador.",
+       "apihelp-query+allrevisions-param-excludeuser": "Não listar as revisões deste utilizador.",
        "apihelp-query+allrevisions-param-namespace": "Listar só as páginas neste espaço nominal.",
+       "apihelp-query+allrevisions-example-user": "Listar as últimas 50 contribuições do utilizador <kbd>Example</kbd>.",
        "apihelp-query+mystashedfiles-param-prop": "As propriedades a serem obtidas para os ficheiros.",
        "apihelp-query+mystashedfiles-param-limit": "Quantos ficheiros a serem obtidos.",
        "apihelp-query+alltransclusions-param-from": "O título da transclusão a partir do qual será começada a enumeração.",
        "apihelp-query+alltransclusions-param-to": "O título da transclusão no qual será terminada a enumeração.",
        "apihelp-query+alltransclusions-param-prefix": "Procurar todos os títulos transcluídos que começam por este valor.",
+       "apihelp-query+alltransclusions-param-unique": "Mostrar só títulos transcluídos distintas. Não pode ser usado com <kbd>$1prop=ids</kbd>.\nQuando usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+alltransclusions-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Adiciona o identificador da página onde é feita a transclusão (não pode ser usado com <var>$1unique</var>).",
        "apihelp-query+alltransclusions-param-namespace": "O espaço nominal a enumerar.",
+       "apihelp-query+alltransclusions-param-limit": "O número total de elementos a serem devolvidos.",
        "apihelp-query+alltransclusions-param-dir": "A direção de listagem.",
        "apihelp-query+allusers-description": "Enumerar todos os utilizadores registados.",
        "apihelp-query+allusers-param-from": "O nome de utilizador a partir do qual será começada a enumeração.",
        "apihelp-query+allusers-param-to": "O nome de utilizador no qual será terminada a enumeração.",
        "apihelp-query+allusers-param-prefix": "Procurar todos os nomes de utilizador que começam por este valor.",
        "apihelp-query+allusers-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Adiciona a informação sobre um bloqueio atual do utilizador.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Adiciona a contagem de edições do utilizador.",
+       "apihelp-query+allusers-paramvalue-prop-centralids": "Adiciona os identificadores centrais e o estado de ligação central (''attachment'') do utilizador.",
+       "apihelp-query+allusers-param-limit": "O número total de nomes de utilizador a serem devolvidos.",
        "apihelp-query+allusers-param-witheditsonly": "Listar só os utilizadores que realizaram edições.",
        "apihelp-query+allusers-example-Y": "Lista de utilizadores que comecem com <kbd>Y</kbd>.",
        "apihelp-query+authmanagerinfo-description": "Obter informação sobre o atual estado de autenticação.",
        "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Testar se a autenticação é suficiente para a operação <kbd>foo</kbd>.",
        "apihelp-query+backlinks-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+backlinks-param-dir": "A direção de listagem.",
-       "apihelp-query+backlinks-param-limit": "O número de páginas totais a serem devolvidas. Se <var>$1redirect</var> estiver ativado, o nível aplica-se a cada nível em separado (o que significa que até 2 * <var>$1limit</var> resultados podem ser devolvidos).",
+       "apihelp-query+backlinks-param-limit": "O número total de páginas a serem devolvidas. Se <var>$1redirect</var> estiver ativado, o nível aplica-se a cada nível em separado (o que significa que até 2 * <var>$1limit</var> resultados podem ser devolvidos).",
        "apihelp-query+backlinks-example-simple": "Mostrar ligações para <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Obter informações sobre as páginas com ligação para <kbd>Main page</kbd>.",
        "apihelp-query+blocks-description": "Listar todos os utilizadores e endereços IP bloqueados.",
        "apihelp-query+blocks-param-ip": "Obter todos os bloqueios aplicáveis a este endereço IP ou intervalo CIDR, incluindo bloqueios de intervalos. Não pode ser usado em conjunto com <var>$3users</var>. Não são aceites intervalos CIDR maiores que IPv4/$1 ou IPv6/$2.",
        "apihelp-query+blocks-param-limit": "O número máximo de bloqueios a listar.",
        "apihelp-query+blocks-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Adiciona o identificador do bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Adiciona o identificador do utilizador bloqueado.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Adiciona o identificador do utilizador que fez o bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Adiciona a data e hora de expiração do bloqueio.",
        "apihelp-query+blocks-paramvalue-prop-range": "Adiciona o intervalo de endereços IP afetado pelo bloqueio.",
        "apihelp-query+blocks-param-show": "Mostrar só os bloqueios que preenchem estes critérios.\nPor exemplo, para ver só bloqueios indefinidos de endereços IP, defina <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+categories-param-prop": "As propriedades adicionais que devem ser obtidas para cada categoria:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Adiciona a chave de ordenação (''string'' hexadecimal) e o prefixo da chave de ordenação (parte legível) da categoria.",
        "apihelp-query+categories-param-show": "Os tipos de categorias que serão mostrados.",
+       "apihelp-query+categories-param-limit": "O número de categorias a serem devolvidas.",
        "apihelp-query+categories-param-categories": "Listar só estas categorias. Útil para verificar se uma determinada página está numa determinada categoria.",
        "apihelp-query+categories-param-dir": "A direção de listagem.",
        "apihelp-query+categorymembers-description": "Lista de todas as páginas numa categoria específica.",
        "apihelp-query+categorymembers-param-title": "A categoria que será enumerada (obrigatório). Tem de incluir o prefixo <kbd>{{ns:category}}:</kbd>. Não pode ser usado em conjunto com <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "Identificador da categoria a ser enumerada. Não pode ser usado em conjunto com <var>$1title</var>.",
        "apihelp-query+categorymembers-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Adiciona o identificador da página.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Adiciona a chave usada para a ordenação da categoria (''string'' hexadecimal).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Adiciona o tipo com que a página foi categorizada (<samp>page</samp>, <samp>subcat</samp> ou <samp>file</samp>).",
        "apihelp-query+categorymembers-param-type": "O tipo de membros de categoria que devem ser incluídos. Ignorado se <kbd>$1sort=timestamp</kbd> estiver definido.",
+       "apihelp-query+categorymembers-param-limit": "O número máximo de páginas a serem devolvidas.",
+       "apihelp-query+categorymembers-param-sort": "Propriedade pela qual fazer a ordenação.",
        "apihelp-query+categorymembers-param-dir": "A direção de ordenação.",
+       "apihelp-query+categorymembers-param-start": "A data e hora da página a partir da qual será começada a listagem. Só pode ser usado em conjunto com <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-end": "A data e hora da página na qual será terminada a listagem. Só pode ser usado em conjunto com <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+contributors-param-limit": "O número de contribuidores a serem devolvidos.",
        "apihelp-query+deletedrevisions-param-start": "A data e hora a partir da qual será começada a enumeração. Ignorado ao processar uma lista de identificadores de revisão.",
        "apihelp-query+deletedrevisions-param-end": "A data e hora na qual será terminada a enumeração. Ignorado ao processar uma lista de identificadores de revisão.",
        "apihelp-query+deletedrevisions-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
+       "apihelp-query+deletedrevisions-param-user": "Listar só as revisões deste utilizador.",
+       "apihelp-query+deletedrevisions-param-excludeuser": "Não listar as revisões deste utilizador.",
+       "apihelp-query+deletedrevisions-example-titles": "Listar as revisões eliminadas das páginas <kbd>Main Page</kbd> e <kbd>Talk:Main Page</kbd>, com o conteúdo.",
+       "apihelp-query+deletedrevisions-example-revids": "Listar a informação da revisão eliminada <kbd>123456</kbd>.",
+       "apihelp-query+deletedrevs-description": "Listar as revisões eliminadas.\n\nOpera em três modos:\n# Listar as revisões eliminadas dos títulos indicados, ordenadas por data e hora.\n# Listar as contribuições eliminadas do utilizador indicado, ordenadas por data e hora (sem especificar títulos).\n# Listar todas as revisões eliminadas no espaço nominal indicado, ordenadas por título e por data e hora (sem especificar títulos, sem definir $1user).\n\nAlguns parâmetros só se aplicam a alguns modos e são ignorados noutros.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Modo|Modos}}: $2",
        "apihelp-query+deletedrevs-param-start": "A data e hora a partir da qual será começada a enumeração.",
        "apihelp-query+deletedrevs-param-end": "A data e hora na qual será terminada a enumeração.",
+       "apihelp-query+deletedrevs-param-from": "Começar a listagem neste título.",
+       "apihelp-query+deletedrevs-param-to": "Terminar a listagem neste título.",
        "apihelp-query+deletedrevs-param-prefix": "Procurar todos os títulos de página que começam por este valor.",
+       "apihelp-query+deletedrevs-param-unique": "Listar só uma revisão para cada página.",
        "apihelp-query+deletedrevs-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
+       "apihelp-query+deletedrevs-param-user": "Listar só as revisões deste utilizador.",
        "apihelp-query+deletedrevs-param-excludeuser": "Não listar edições deste utilizador.",
        "apihelp-query+deletedrevs-param-namespace": "Listar apenas as páginas neste domínio.",
-       "apihelp-query+deletedrevs-param-prop": "As propriedades a serem obtidas:\n;revid:Adiciona o identificador de revisão da revisão eliminada.\n;parentid:Adiciona o identificador de revisão da revisão anterior da página.\n;user:Adiciona o utilizador que fez a revisão.\n;userid:Adiciona o identificador do utilizador que fez a revisão.\n;comment:Adiciona o comentário da revisão.\n;parsedcomment:Adiciona o comentário da revisão após passagem pelo analisador sintático.\n;minor:Etiqueta a revisão como uma revisão menor.\n;len:Adiciona o comprimento (em bytes) da revisão.\n;sha1:Adiciona o SHA-1 (base 16) da revisão.\n;content:Adiciona o conteúdo da revisão.\n;token:<span class=\"apihelp-deprecated\">Obsoleto.</span> Fornece a chave da edição.\n;tags:Etiquetas da revisão.",
+       "apihelp-query+deletedrevs-param-limit": "O número máximo de revisões a serem listadas.",
+       "apihelp-query+deletedrevs-param-prop": "As propriedades a serem obtidas:\n;revid:Adiciona o identificador da revisão eliminada.\n;parentid:Adiciona o identificador da revisão anterior da página.\n;user:Adiciona o utilizador que fez a revisão.\n;userid:Adiciona o identificador do utilizador que fez a revisão.\n;comment:Adiciona o comentário da revisão.\n;parsedcomment:Adiciona o comentário da revisão após passagem pelo analisador sintático.\n;minor:Etiqueta a revisão como uma revisão menor.\n;len:Adiciona o comprimento (em bytes) da revisão.\n;sha1:Adiciona o SHA-1 (base 16) da revisão.\n;content:Adiciona o conteúdo da revisão.\n;token:<span class=\"apihelp-deprecated\">Obsoleto.</span> Fornece a chave da edição.\n;tags:Etiquetas da revisão.",
+       "apihelp-query+deletedrevs-example-mode2": "Listar as últimas 50 contribuições eliminadas do utilizador <kbd>Bob</kbd> (modo 2).",
+       "apihelp-query+deletedrevs-example-mode3-main": "Listar as primeiras 50 páginas eliminadas no espaço nominal principal (modo 3).",
+       "apihelp-query+deletedrevs-example-mode3-talk": "Listar as primeiras 50 páginas eliminadas no espaço nominal {{ns:talk}} (modo 3).",
+       "apihelp-query+duplicatefiles-param-limit": "O número de ficheiros duplicados a serem devolvidos.",
        "apihelp-query+duplicatefiles-param-dir": "A direção de listagem.",
        "apihelp-query+embeddedin-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+embeddedin-param-dir": "A direção de listagem.",
+       "apihelp-query+embeddedin-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+extlinks-description": "Devolve todos os URL externos (que não sejam interwikis) das páginas especificadas.",
+       "apihelp-query+extlinks-param-limit": "O número de ''links'' a serem devolvidos.",
        "apihelp-query+extlinks-param-protocol": "Protocolo do URL. Se vazio e <var>$1query</var> está definido, o protocolo é <kbd>http</kbd>. Deixe isto e  <var>$1query</var> vazios para listar todos os <i>links</i> externos.",
        "apihelp-query+extlinks-param-query": "Texto de pesquisa sem protocolo. Útil para verificar se uma determinada página contém um determinado URL externo.",
        "apihelp-query+extlinks-example-simple": "Obtenha uma lista de ligações externas na <kbd>Main Page</kbd>.",
        "apihelp-query+exturlusage-description": "Enumerar as páginas que contêm um determinado URL.",
        "apihelp-query+exturlusage-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Adiciona o identificador da página.",
        "apihelp-query+exturlusage-paramvalue-prop-url": "Adiciona o URL usado na página.",
        "apihelp-query+exturlusage-param-protocol": "Protocolo do URL. Se vazio e <var>$1query</var> está definido, o protocolo é <kbd>http</kbd>. Deixe isto e  <var>$1query</var> vazios para listar todos os <i>links</i> externos.",
        "apihelp-query+exturlusage-param-namespace": "Os espaços nominais a serem enumerados.",
+       "apihelp-query+exturlusage-param-limit": "O número de páginas a serem devolvidas.",
        "apihelp-query+exturlusage-param-expandurl": "Expandir URL relativos a protocolos com o protocolo canónico.",
        "apihelp-query+filearchive-description": "Enumerar todos os ficheiros eliminados sequencialmente.",
        "apihelp-query+filearchive-param-from": "O título da imagem a partir do qual será começada a enumeração.",
        "apihelp-query+filearchive-param-prefix": "Procurar todos os títulos de imagem que começam por este valor.",
        "apihelp-query+filearchive-param-dir": "A direção de listagem.",
        "apihelp-query+filearchive-param-prop": "As informações da imagem que devem ser obtidas:",
-       "apihelp-query+filearchive-example-simple": "Mostrar lista de todos os ficheiros eliminados",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Adiciona o resumo criptográfico SHA-1 da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Adiciona o utilizador que carregou a versão da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Adiciona a descrição da versão da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Adiciona o tipo MIME da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Adiciona a profundidade em ''bits'' da versão.",
+       "apihelp-query+filearchive-example-simple": "Mostrar uma lista de todos os ficheiros eliminados.",
        "apihelp-query+filerepoinfo-param-prop": "As propriedades do repositório que devem ser obtidas (em algumas wikis poderão haver mais disponíveis):\n;apiurl:URL para a API do repositório - útil para obter informação de imagens do servidor.\n;name:A chave para o repositório - usada, por exemplo, em <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e nos valores de retorno de [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:O nome legível da wiki repositório.\n;rooturl:URL de raiz para endereços de imagens.\n;local:Se o repositório é o local ou não.",
        "apihelp-query+fileusage-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+fileusage-paramvalue-prop-redirect": "Indicar se a página é um redirecionamento.",
+       "apihelp-query+fileusage-param-limit": "O número de elementos a serem devolvidos.",
        "apihelp-query+imageinfo-param-prop": "As informações do ficheiro que devem ser obtidas:",
+       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Adiciona a data e hora da versão carregada.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Adiciona o título canónico do ficheiro.",
        "apihelp-query+imageinfo-paramvalue-prop-url": "Devolve URL para o ficheiro e página de descrição.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "Adiciona o tamanho do ficheiro em ''bytes'' e a altura, largura e contagem de páginas (se aplicável).",
+       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Adiciona o resumo criptográfico SHA-1 do ficheiro.",
        "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "Adiciona o tipo MIME da miniatura (requer URL e o parâmetro $1urlwidth).",
+       "apihelp-query+imageinfo-paramvalue-prop-archivename": "Adiciona o nome de ficheiro da versão arquivada das versões anteriores à última.",
+       "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "Adiciona a profundidade em ''bits'' da versão.",
        "apihelp-query+imageinfo-param-start": "Data e hora a partir da qual será começada a listagem.",
        "apihelp-query+imageinfo-param-end": "Data e hora na qual será terminada a listagem.",
        "apihelp-query+imageinfo-param-urlwidth": "Se $2prop=url está definido, será devolvido um URL para uma imagem redimensionada com este comprimento.\nPor razões de desempenho, se esta opção for usada não serão devolvidas mais de $1 imagens redimensionadas.",
        "apihelp-query+imageinfo-param-extmetadatalanguage": "Em que língua obter extmetadata. Isto afeta tanto a tradução que será obtida, caso existam várias, como a formatação de números e vários outros valores.",
+       "apihelp-query+images-param-limit": "O número de ficheiros a serem devolvidos.",
        "apihelp-query+images-param-images": "Listar só estes ficheiros. Útil para verificar se uma determinada página tem um determinado ficheiro.",
        "apihelp-query+images-param-dir": "A direção de listagem.",
        "apihelp-query+imageusage-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+imageusage-param-dir": "A direção de listagem.",
+       "apihelp-query+imageusage-param-limit": "O número total de páginas a serem devolvidas. Se <var>$1redirect</var> estiver ativado, o nível aplica-se a cada nível em separado (o que significa que até 2 * <var>$1limit</var> resultados podem ser devolvidos).",
        "apihelp-query+info-description": "Obter informação básica da página.",
        "apihelp-query+info-param-prop": "As propriedades adicionais que devem ser obtidas:",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "A data e hora das notificações de alterações de cada página vigiada.",
        "apihelp-query+info-param-testactions": "Testar se o utilizador pode realizar certas operações na página.",
        "apihelp-query+info-param-token": "Em substituição, usar [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-query+iwbacklinks-param-title": "Link interwikis a ser procurado. Tem de ser usado em conjunto com <var>$1blprefix</var>.",
+       "apihelp-query+iwbacklinks-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+iwbacklinks-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Adiciona o prefixo da ligação interwikis.",
        "apihelp-query+iwbacklinks-param-dir": "A direção de listagem.",
        "apihelp-query+iwlinks-param-url": "Indica se deve ser obtido o URL completo (não pode ser usado com $1prop).",
        "apihelp-query+iwlinks-param-prop": "As propriedades adicionais que devem ser obtidas para cada ''link'' interlínguas:",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Adiciona o URL completo.",
+       "apihelp-query+iwlinks-param-limit": "O número de ''links'' interwikis a serem devolvidos.",
        "apihelp-query+iwlinks-param-title": "Link interwikis a ser procurado. Tem de ser usado em conjunto com <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "A direção de listagem.",
        "apihelp-query+langbacklinks-param-title": "Link interlínguas a ser procurado. Tem de ser usado com $1lang.",
+       "apihelp-query+langbacklinks-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+langbacklinks-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Adiciona o código de língua da ligação interlínguas.",
        "apihelp-query+langbacklinks-param-dir": "A direção de listagem.",
+       "apihelp-query+langlinks-param-limit": "O número de ''links'' interlínguas a serem devolvidos.",
        "apihelp-query+langlinks-param-url": "Indica se deve ser obtido o URL completo (não pode ser usado com $1prop).",
        "apihelp-query+langlinks-param-prop": "As propriedades adicionais que devem ser obtidas para cada ''link'' interlínguas:",
        "apihelp-query+langlinks-paramvalue-prop-url": "Adiciona o URL completo.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Adiciona o nome nativo da língua.",
        "apihelp-query+langlinks-param-title": "Link a ser procurado. Tem de ser usado com <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "A direção de listagem.",
+       "apihelp-query+links-param-limit": "O número de ''links'' a serem devolvidos.",
        "apihelp-query+links-param-titles": "Listar só as ligações para estes títulos. Útil para verificar se uma determinada página contém ligações para um determinado título.",
        "apihelp-query+links-param-dir": "A direção de listagem.",
        "apihelp-query+linkshere-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+linkshere-paramvalue-prop-redirect": "Indicar se a página é um redirecionamento.",
+       "apihelp-query+linkshere-param-limit": "O número de elementos a serem devolvidos.",
        "apihelp-query+logevents-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Adiciona o identificador do evento no registo.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Adiciona o tipo do evento no registo.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Adiciona o identificador do utilizador responsável pelo evento no registo.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Adiciona o comentário do evento no registo.",
        "apihelp-query+logevents-param-start": "A data e hora a partir da qual será começada a enumeração.",
+       "apihelp-query+logevents-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+logevents-param-tag": "Listar só as entradas de eventos marcadas com esta etiqueta.",
+       "apihelp-query+logevents-param-limit": "O número total de entradas de eventos a serem devolvidas.",
+       "apihelp-query+pagepropnames-param-limit": "O número máximo de nomes a serem devolvidos.",
        "apihelp-query+pageprops-param-prop": "Listar só estas propriedades de página (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> devolve os nomes das propriedades de página em uso). Útil para verificar se as páginas usam uma determinada propriedade de página.",
        "apihelp-query+pageswithprop-param-propname": "A propriedade de página a partir da qual as páginas serão enumeradas (<kbd>[[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]]</kbd> devolve os nomes das propriedades de página que estão a ser usadas).",
        "apihelp-query+pageswithprop-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Adiciona o identificador da página.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Adiciona o valor da propriedade da página.",
+       "apihelp-query+pageswithprop-param-limit": "O número máximo de páginas a serem devolvidas.",
        "apihelp-query+pageswithprop-param-dir": "A direção de ordenação.",
        "apihelp-query+prefixsearch-description": "Realizar uma procura de prefixo nos títulos de página.\n\nApesar da semelhança de nomes, este módulo não pretende ser equivalente a [[Special:PrefixIndex]]; para este, consulte <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> com o parâmetro <kbd>apprefix</kbd>. O propósito deste módulo é semelhante a <kbd>[[Special:ApiHelp/opensearch|action=opensearch]]</kbd>: receber dados introduzidos pelo utilizador e devolver os títulos com melhor correspondência. Dependendo do motor de busca do servidor, isto pode incluir correções de erros ortográficos, evitar redirecionamentos, e outras heurísticas.",
+       "apihelp-query+prefixsearch-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-query+prefixsearch-example-simple": "Procurar os títulos de página que começam por <kbd>meaning</kbd>.",
        "apihelp-query+protectedtitles-param-namespace": "Listar só os títulos neste espaço nominal.",
+       "apihelp-query+protectedtitles-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+protectedtitles-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Adiciona a data e hora a que a proteção foi adicionada.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Adiciona o identificador do utilizador que fez a proteção.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Adiciona o comentário da proteção após a análise sintática.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Adiciona a data e hora a que a proteção foi removida.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Adiciona o nível de proteção.",
+       "apihelp-query+querypage-param-limit": "O número de resultados a serem devolvidos.",
        "apihelp-query+recentchanges-description": "Enumerar as mudanças recentes.",
        "apihelp-query+recentchanges-param-start": "A data e hora a partir da qual será começada a enumeração.",
+       "apihelp-query+recentchanges-param-end": "A data e hora na qual será terminada a enumeração.",
        "apihelp-query+recentchanges-param-user": "Listar só as alterações deste utilizador.",
        "apihelp-query+recentchanges-param-tag": "Listar só as alterações marcadas com esta etiqueta.",
+       "apihelp-query+recentchanges-param-prop": "Incluir informações adicionais:",
        "apihelp-query+recentchanges-paramvalue-prop-user": "Adiciona o utilizador responsável pela edição e marca se o utilizador é um endereço IP.",
-       "apihelp-query+recentchanges-paramvalue-prop-flags": "Adiciona indicações para a edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Adiciona o identificador do utilizador responsável pela edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Adiciona o comentário da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Adiciona o comentário da edição, após análise sintática.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Adiciona as etiquetas da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Adiciona a data e hora da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Adiciona o título de página da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Adiciona o identificadores da página, das mudanças recentes, e das revisões nova e antiga.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Adiciona os tamanhos antigo e novo da página em ''bytes''.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Etiqueta a página se esta for um redirecionamento.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Etiqueta as edições que podem ser patrulhadas, marcando-as como patrulhadas ou não patrulhadas.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Adiciona informação de registo (identificador do registo, tipo de entrada, etc.) às entradas do registo.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Lista as etiquetas da entrada.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Adiciona a soma de controlo do conteúdo para as entradas associadas com uma revisão.",
        "apihelp-query+recentchanges-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+recentchanges-param-show": "Mostrar só as entradas que correspondem a estes critérios. Por exemplo, para ver só as edições menores feitas por utilizadores autenticados, defina $1show=minor|!anon.",
+       "apihelp-query+recentchanges-param-limit": "O número total de mudanças a serem devolvidas.",
+       "apihelp-query+recentchanges-param-type": "Os tipos de mudanças a serem mostradas.",
        "apihelp-query+recentchanges-param-toponly": "Listar só as alterações que são a revisão mais recente.",
-       "apihelp-query+recentchanges-example-simple": "Lista de mudanças recentes",
+       "apihelp-query+recentchanges-param-generaterevisions": "Quando usado como gerador, gerar identificadores de revisões em vez de títulos. As entradas das mudanças recentes que não tenham identificadores de revisão associados (por exemplo, a maioria das entradas do registo) não geram nada.",
+       "apihelp-query+recentchanges-example-simple": "Listar as mudanças recentes.",
+       "apihelp-query+recentchanges-example-generator": "Obter informação de página acerca das mudanças recentes não patrulhadas.",
+       "apihelp-query+redirects-description": "Devolve todos os redirecionamentos para as páginas indicadas.",
        "apihelp-query+redirects-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "O identificador de página de cada redirecionamento.",
+       "apihelp-query+redirects-paramvalue-prop-title": "O título de cada redirecionamento.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "O fragmento de cada redirecionamento, se existir.",
+       "apihelp-query+redirects-param-namespace": "Incluir só as páginas destes espaços nominais.",
+       "apihelp-query+redirects-param-limit": "O número de redirecionamentos a serem devolvidos.",
+       "apihelp-query+redirects-param-show": "Mostrar só as páginas que correspondem a estes critérios:\n;fragment:Mostrar só os redirecionamentos com um fragmento.\n;!fragment:Mostrar só os redirecionamentos sem um fragmento.",
+       "apihelp-query+redirects-example-simple": "Obter uma lista dos redirecionamentos para a página [[Main Page]].",
+       "apihelp-query+redirects-example-generator": "Obter informação sobre todos os redirecionamentos para a página [[Main Page]].",
+       "apihelp-query+revisions-description": "Obter informação da revisão.\n\nPode ser usado de várias maneiras:\n# Obter dados sobre um conjunto de páginas (última revisão), definindo títulos ou identificadores de páginas.\n# Obter as revisões de uma página indicada, usando títulos ou identificadores de páginas, com início, fim ou limite.\n# Obter dados sobre um conjunto de revisões definindo identificadores de revisões.",
+       "apihelp-query+revisions-paraminfo-singlepageonly": "Só pode ser usado com uma única página (modo #2)",
        "apihelp-query+revisions-param-startid": "O identificador de revisão a partir do qual será começada a enumeração.",
+       "apihelp-query+revisions-param-endid": "Terminar a enumeração de revisões neste identificador de revisão.",
        "apihelp-query+revisions-param-start": "A data e hora da revisão a partir da qual será começada a enumeração.",
+       "apihelp-query+revisions-param-end": "A data e hora da revisão na qual será terminada a enumeração.",
+       "apihelp-query+revisions-param-user": "Incluir só as revisões deste utilizador.",
+       "apihelp-query+revisions-param-excludeuser": "Excluir as revisões deste utilizador.",
        "apihelp-query+revisions-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
        "apihelp-query+revisions-param-token": "Que chaves obter para cada revisão.",
        "apihelp-query+revisions+base-param-prop": "As propriedades a serem obtidas para cada revisão:",
        "apihelp-query+revisions+base-paramvalue-prop-flags": "Indicações de revisão (menor).",
+       "apihelp-query+revisions+base-paramvalue-prop-timestamp": "A data e hora da revisão.",
        "apihelp-query+search-param-search": "Procurar os títulos de página ou o conteúdo que corresponda a este valor. Pode usar o texto da pesquisa para invocar funcionalidades de pesquisa especiais, dependendo dos meios de pesquisa do servidor da wiki.",
        "apihelp-query+search-param-what": "O tipo de pesquisa a executar.",
+       "apihelp-query+search-param-info": "Quais os metadados a serem devolvidos.",
        "apihelp-query+search-param-prop": "As propriedades a serem devolvidas:",
+       "apihelp-query+search-paramvalue-prop-size": "Adiciona o tamanho da página em ''bytes''.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Adiciona o número de palavras da página.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Adiciona a data e hora a que a página foi editada pela última vez.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Adiciona um fragmento de código com a página, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Adiciona um fragmento de código com o título da página, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Adiciona um fragmento de código com o título redirecionado, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Adiciona o título do redirecionamento correspondente.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Adiciona um fragmento de código com o título da secção correspondente, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Adiciona o título da secção correspondente.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Adiciona um fragmento de código com a categoria correspondente, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Adiciona um valor booleano que indica se a pesquisa encontrou correspondência no conteúdo de ficheiros.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
+       "apihelp-query+search-param-limit": "O número total de páginas a serem devolvidas.",
+       "apihelp-query+search-param-interwiki": "Incluir resultados interwikis na pesquisa, se disponíveis.",
        "apihelp-query+search-param-backend": "O servidor de pesquisas a ser usado, se diferente do servidor padrão.",
        "apihelp-query+search-param-enablerewrites": "Ativar reescrita da consulta interna. Alguns motores de busca podem reescrever a consulta, substituindo-a por outra que consideram que dará melhores resultados, como acontece na correção de erros de ortografia.",
        "apihelp-query+search-example-simple": "Procurar <kbd>meaning</kbd>.",
        "apihelp-query+search-example-generator": "Obter informação sobre as páginas devolvidas por uma pesquisa do termo <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-description": "Devolver informação geral sobre o ''site''.",
        "apihelp-query+siteinfo-param-prop": "A informação a ser obtida:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Informação global do sistema.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Uma lista dos espaços nominais registados e dos seus nomes canónicos.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Uma lista dos nomes alternativos dos espaços nominais registados.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Uma lista dos nomes alternativos das páginas especiais.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Uma lista das palavras mágicas e dos seus nomes alternativos.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Devolve as estatísticas do ''site''.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Devolve o mapa de interwikis (opcionalmente filtrado, opcionalmente localizado usando <var>$1inlanguagecode</var>).",
        "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Devolve o servidor da base de dados com o maior atraso de replicação.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Devolve os grupos de utilizadores e as permissões associadas.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Devolve as bibliotecas instaladas na wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Devolve as extensões instaladas na wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Devolve uma lista das extensões (tipos) dos ficheiros que podem ser carregados.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Devolve informação sobre os direitos (a licença) da wiki, se disponível.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Devolve informação sobre os tipos de restrição (proteção) disponíveis.",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Devolve uma lista das línguas que o MediaWiki suporta (opcionalmente localizada, usando <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Devolve uma lista de todos os temas ativados (opcionalmente localizada, usando <var>$1inlanguagecode</var>, ou então na língua do conteúdo).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Devolve uma lista dos elementos de extensões do analisador sintático.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Devolve uma lista dos ''hooks'' de funções do analisador sintático.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Devolve uma lista de todos os ''hooks'' subscritos (conteúdo de <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Devolve uma lista de identificadores de variáveis.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Devolve uma lista dos protocolos permitidos nos ''links'' externos.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Devolve os valores padrão para as preferências dos utilizadores.",
+       "apihelp-query+siteinfo-paramvalue-prop-uploaddialog": "Devolve a configuração do diálogo de carregamento.",
+       "apihelp-query+siteinfo-param-filteriw": "Devolver só as entradas locais, ou só as não locais, do mapa de interwikis.",
        "apihelp-query+siteinfo-param-showalldb": "Listar todos os servidores da base de dados, não só aquele que tem maior atraso.",
+       "apihelp-query+siteinfo-param-numberingroup": "Lista o número de utilizadores nos grupos de utilizadores.",
+       "apihelp-query+siteinfo-param-inlanguagecode": "Código de língua dos nomes localizados (o melhor possível) das línguas e temas.",
+       "apihelp-query+siteinfo-example-simple": "Obter informação do ''site''.",
+       "apihelp-query+siteinfo-example-interwiki": "Obter uma lista dos prefixos interwikis locais.",
        "apihelp-query+siteinfo-example-replag": "Verificar o atraso de replicação atual.",
+       "apihelp-query+stashimageinfo-description": "Devolve informações dos ficheiros escondidos.",
+       "apihelp-query+stashimageinfo-param-filekey": "Chave que identifica um carregamento anterior que foi escondido temporariamente.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "Nome alternativo de $1filekey, para compatibilidade com versões anteriores.",
+       "apihelp-query+stashimageinfo-example-simple": "Devolve informação sobre um ficheiro escondido.",
+       "apihelp-query+stashimageinfo-example-params": "Devolve as miniaturas de dois ficheiros escondidos.",
+       "apihelp-query+tags-description": "Listar as etiquetas de modificação.",
+       "apihelp-query+tags-param-limit": "O número máximo de etiquetas a serem listadas.",
        "apihelp-query+tags-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+tags-paramvalue-prop-name": "Adiciona o nome da etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Adiciona a mensagem de sistema para a etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-description": "Adiciona a descrição da etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Adiciona o número de revisões e de entradas no registo que têm esta etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Indicar se a etiqueta está definida.",
+       "apihelp-query+tags-paramvalue-prop-source": "Obter as fontes da etiqueta, que podem incluir <samp>extension</samp> para etiquetas definidas por extensões e <samp>manual</samp> para etiquetas que podem ser manualmente aplicadas pelos utilizadores.",
+       "apihelp-query+tags-paramvalue-prop-active": "Indica se a etiqueta ainda está a ser aplicada.",
+       "apihelp-query+tags-example-simple": "Listar as etiquetas disponíveis.",
+       "apihelp-query+templates-description": "Devolve todas as páginas que são transcluídas nas páginas indicadas.",
+       "apihelp-query+templates-param-namespace": "Mostrar só as predefinições nestes espaços nominais.",
+       "apihelp-query+templates-param-limit": "O número de predefinições a serem devolvidas.",
        "apihelp-query+templates-param-templates": "Listar só estas predefinições. Útil para verificar se uma determinada página contém uma determinada predefinição.",
        "apihelp-query+templates-param-dir": "A direção de listagem.",
+       "apihelp-query+templates-example-simple": "Obter as predefinições usadas na página <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-generator": "Obter informação sobre as páginas das predefinições usadas na página <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-namespaces": "Obter as páginas dos espaços nominais {{ns:user}} e {{ns:template}} que são transcluídas na página <kbd>Main Page</kbd>.",
        "apihelp-query+tokens-description": "Obtém chaves para operações de modificação de dados.",
        "apihelp-query+tokens-param-type": "Tipos de chave a pedir.",
        "apihelp-query+tokens-example-simple": "Obter uma chave csfr (padrão).",
        "apihelp-query+tokens-example-types": "Obter uma chave de vigilância e uma chave de patrulha.",
+       "apihelp-query+transcludedin-description": "Obter todas as páginas que transcluem as páginas indicadas.",
        "apihelp-query+transcludedin-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "O identificador de cada página.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "O título de cada página.",
        "apihelp-query+transcludedin-paramvalue-prop-redirect": "Indicar se a página é um redirecionamento.",
+       "apihelp-query+transcludedin-param-namespace": "Incluir só as páginas nestes espaços nominais.",
+       "apihelp-query+transcludedin-param-limit": "O número de entradas a serem devolvidas.",
+       "apihelp-query+transcludedin-param-show": "Mostrar só as entradas que correspondem a estes critérios:\n;redirect:Mostrar só os redirecionamentos.\n;!redirect:Mostrar só as que não são redirecionamentos.",
+       "apihelp-query+transcludedin-example-simple": "Obter uma lista das páginas que transcluem <kbd>Main Page</kbd>.",
+       "apihelp-query+transcludedin-example-generator": "Obter informação sobre as páginas que transcluem <kbd>Main Page</kbd>.",
+       "apihelp-query+usercontribs-description": "Obter todas as edições de um utilizador.",
+       "apihelp-query+usercontribs-param-limit": "O número máximo de contribuições a serem devolvidas.",
+       "apihelp-query+usercontribs-param-start": "A data e hora da contribuição pela qual será começada a devolução de resultados.",
+       "apihelp-query+usercontribs-param-end": "A data e hora da contribuição na qual será terminada a devolução de resultados.",
        "apihelp-query+usercontribs-param-namespace": "Listar só as contribuições nestes espaços nominais.",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Adiciona os identificadores da página e da revisão.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Adiciona a data e hora da edição.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Adiciona o comentário da edição, após análise sintática.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Adiciona a diferença de tamanho entre a edição e a sua progenitora.",
        "apihelp-query+usercontribs-paramvalue-prop-flags": "Adiciona indicações da edição.",
        "apihelp-query+usercontribs-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
        "apihelp-query+usercontribs-param-toponly": "Listar só as alterações que são a revisão mais recente.",
        "apihelp-query+usercontribs-example-ipprefix": "Mostrar as contribuições de todos os endereços IP com o prefixo <kbd>192.0.2.</kbd>.",
        "apihelp-query+userinfo-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Adiciona uma etiqueta <samp>messages</samp> se o utilizador atual tem mensagens pendentes.",
        "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsoleto.</span> Obter uma chave para alterar as preferências do utilizador atual.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Adiciona a contagem de edições do utilizador atual.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Adiciona o nome real do utilizador.",
        "apihelp-query+userinfo-paramvalue-prop-email": "Adicionar o correio eletrónico do utilizador e a data de autenticação do correio eletrónico.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Adiciona a data de registo do utilizador.",
        "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Adiciona a contagem de páginas não lidas da lista de páginas vigiadas do utilizador (máximo $1; devolve <samp>$2</samp> se forem mais).",
+       "apihelp-query+userinfo-paramvalue-prop-centralids": "Adiciona os identificadores centrais e o estado de ligação central (''attachment'') do utilizador.",
        "apihelp-query+users-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+users-paramvalue-prop-editcount": "Adiciona a contagem de edições do utilizador.",
+       "apihelp-query+users-paramvalue-prop-registration": "Adiciona a data e hora de registo do utilizador.",
+       "apihelp-query+users-paramvalue-prop-centralids": "Adiciona os identificadores centrais e o estado de ligação central (''attachment'') do utilizador.",
        "apihelp-query+users-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+watchlist-description": "Obter mudanças recentes das páginas vigiadas do utilizador atual.",
-       "apihelp-query+watchlist-param-start": "A data e hora a partir da qual será começada a enumeração.",
+       "apihelp-query+watchlist-param-start": "A data e hora da mudança recente a partir da qual será começada a enumeração.",
+       "apihelp-query+watchlist-param-end": "A data e hora da mudança recente na qual será terminada a enumeração.",
        "apihelp-query+watchlist-param-user": "Listar só as alterações deste utilizador.",
+       "apihelp-query+watchlist-param-limit": "O número total de resultados a serem devolvidos por pedido.",
        "apihelp-query+watchlist-param-prop": "As propriedades adicionais que devem ser obtidas:",
-       "apihelp-query+watchlist-paramvalue-prop-flags": "Adiciona indicações para a edição.",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Adiciona identificadores de revisões e de páginas.",
+       "apihelp-query+watchlist-paramvalue-prop-flags": "Adiciona etiquetas para a edição.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Adiciona o identificador do utilizador que realizou a edição.",
+       "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "Adiciona o comentário da edição, após análise sintática.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Adiciona a data e hora da edição.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "Adiciona os tamanhos novo e antigo da página.",
+       "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Adiciona a data e hora da última vez em que o utilizador foi notificado da edição.",
+       "apihelp-query+watchlist-paramvalue-prop-loginfo": "Adiciona informação do registo quando apropriado.",
        "apihelp-query+watchlist-param-type": "Os tipos de alterações a serem mostradas:",
        "apihelp-query+watchlist-param-owner": "Usado com $1token para aceder à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlist-param-token": "Uma chave de segurança (disponível nas [[Special:Preferences#mw-prefsection-watchlist|preferências]] do utilizador) para permitir acesso à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlist-example-generator": "Obter informações das páginas na lista de páginas vigiadas do utilizador atual que tenham sido recentemente alteradas.",
        "apihelp-query+watchlist-example-wlowner": "Listar a revisão mais recente das páginas na lista de páginas vigiadas do utilizador <kbd>Example</kbd> que tenham sido recentemente alteradas.",
        "apihelp-query+watchlistraw-param-namespace": "Listar só as páginas nos espaços nominais indicados.",
+       "apihelp-query+watchlistraw-param-limit": "O número total de resultados a serem devolvidos por pedido.",
        "apihelp-query+watchlistraw-param-prop": "As propriedades adicionais que devem ser obtidas:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Adiciona a data e hora da última vez em que o utilizador foi notificado da edição.",
        "apihelp-query+watchlistraw-param-show": "Listar só os elementos que preenchem estes critérios.",
        "apihelp-query+watchlistraw-param-owner": "Usado em conjunto com o parâmetro $1token para aceder à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlistraw-param-token": "Uma chave de segurança (disponível nas [[Special:Preferences#mw-prefsection-watchlist|preferências]] do utilizador) para permitir acesso à lista de páginas vigiadas de outro utilizador.",
        "apihelp-rollback-param-watchlist": "Adicionar ou remover incondicionalmente a página da lista de páginas vigiadas do utilizador atual, usar as preferências ou não alterar o estado de vigilância.",
        "apihelp-rollback-example-summary": "Reverter as últimas edições da página <kbd>Main Page</kbd> pelo utilizador IP <kbd>192.0.2.5</kbd> com o resumo <kbd>Reverting vandalism</kbd>, e marcar essas edições e a reversão como edições de robôs.",
        "apihelp-setnotificationtimestamp-description": "Atualizar a data e hora de notificação de alterações às páginas vigiadas.\n\nIsto afeta o realce das páginas alteradas, na lista de páginas vigiadas e no histórico, e o envio de mensagens de correio quando a preferência \"{{int:tog-enotifwatchlistpages}}\" está ativada.",
+       "apihelp-setnotificationtimestamp-param-timestamp": "A data e hora a definir como data e hora da notificação.",
+       "apihelp-setnotificationtimestamp-param-torevid": "A revisão para a qual definir a data e hora de notificação (só uma página).",
+       "apihelp-setnotificationtimestamp-param-newerthanrevid": "A revisão da qual definir que a data e hora de notificação é mais recente (só uma página).",
        "apihelp-setnotificationtimestamp-example-all": "Reiniciar o estado de notificação de todas as páginas vigiadas.",
+       "apihelp-setnotificationtimestamp-example-pagetimestamp": "Definir a data e hora de notificação para a página <kbd>Main page</kbd> de forma a que todas as edições desde 1 de janeiro de 2012 passem a ser consideradas não vistas",
+       "apihelp-setnotificationtimestamp-example-allpages": "Reiniciar o estado de notificação das páginas no espaço nominal <kbd>{{ns:user}}</kbd>.",
        "apihelp-stashedit-description": "Preparar uma edição na <i>cache</i> partilhada.\n\nIsto destina-se a ser usado via AJAX a partir do formulário de edição, para melhorar o desempenho da gravação da página.",
+       "apihelp-stashedit-param-title": "Título da página que está a ser editada.",
        "apihelp-tokens-description": "Obter chaves para operações de modificação de dados.\n\nEste módulo é obsoleto e foi substituído por [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Tipos de chave a pedir.",
        "apihelp-tokens-example-edit": "Obter uma chave de edição (padrão).",
        "apihelp-watch-description": "Adicionar ou remover páginas da lista de páginas vigiadas do utilizador atual.",
        "apihelp-watch-example-unwatch": "Deixar de vigiar a página <kbd>Página Principal</kbd>.",
        "apihelp-json-description": "Produzir dados de saída no formato JSON.",
+       "apihelp-xml-param-xslt": "Se especificado, adiciona a página nomeada como uma folha de estilo XSL. O valor tem de ser um título no espaço nominal {{ns:mediawiki}} e acabar em <code>.xsl</code>.",
        "api-help-title": "Ajuda da API do MediaWiki",
        "api-help-lead": "Esta é uma página de documentação da API do MediaWiki gerada automaticamente.\n\nDocumentação e exemplos: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Módulo principal",
-       "api-help-flag-deprecated": "Este módulo está obsoleto.",
+       "api-help-flag-deprecated": "Este módulo é obsoleto.",
        "api-help-flag-internal": "<strong>Este módulo é interno ou instável.</strong> O seu funcionamento pode ser alterado sem aviso prévio.",
        "api-help-flag-readrights": "Este módulo requer direitos de leitura.",
        "api-help-flag-writerights": "Este módulo requer direitos de escrita.",
        "api-help-param-deprecated": "Obsoleto.",
        "api-help-param-required": "Este parâmetro é obrigatório.",
        "api-help-datatypes-header": "Tipo de dados",
-       "api-help-datatypes": "O <i>input</i> para o MediaWiki de ser UTF-8 normalizado de acordo com a norma NFC. O MediaWiki pode converter outros tipos de entrada, mas isto pode causar que algumas operações (tais como [[Special:ApiHelp/edit|edições]] com verificações MD5) falhem.\n\nAlguns tipos de parâmetros nos pedidos à API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:As datas e horas podem ser especificados em vários formatos. O formato de data e hora ISO 8601 é recomendado. Todas as horas estão em UTC, qualquer inclusão de fuso horário é ignorada.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional de <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, ou <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* O texto <kbd>now</kbd>\n;separador alternativo de valores múltiplos\n:Os parâmetros que aceitam vários valores são normalmente fornecidos com os valores separados por uma barra vertical (<i>pipe</i>), por exemplo <kbd>parâmetro=valor1|valor2</kbd> ou <kbd>parâmetro=valor1%7Cvalor2</kbd>. Se um valor contém a barra vertical, use U+001F (Separador de Unidades) como separador ''e'' prefixe o valor com U+001F, isto é, <kbd>parâmetro=%1Fvalor1%1Fvalor2</kbd>.",
+       "api-help-datatypes": "O formato de entrada para o MediaWiki deve ser UTF-8 normalizado de acordo com a norma NFC. O MediaWiki pode converter outros tipos de entrada, mas isto pode causar a falha de algumas operações (tais como [[Special:ApiHelp/edit|edições]] com verificações MD5).\n\nAlguns tipos de parâmetros nos pedidos à API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:As datas e horas podem ser especificados em vários formatos. O formato de data e hora ISO 8601 é recomendado. Todas as horas estão em UTC, qualquer inclusão de fuso horário é ignorada.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional de <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, ou <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* O texto <kbd>now</kbd>\n;separador alternativo de valores múltiplos\n:Os parâmetros que aceitam vários valores são normalmente fornecidos com os valores separados por uma barra vertical (<i>pipe</i>), por exemplo <kbd>parâmetro=valor1|valor2</kbd> ou <kbd>parâmetro=valor1%7Cvalor2</kbd>. Se um valor contém a barra vertical, use U+001F (Separador de Unidades) como separador ''e'' prefixe o valor com U+001F, isto é, <kbd>parâmetro=%1Fvalor1%1Fvalor2</kbd>.",
        "api-help-param-type-limit": "Tipo: inteiro ou <kbd>max</kbd>",
        "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=inteiro|2=lista de números inteiros}}",
        "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|detalhes]])",
index 5e50be9..956a0df 100644 (file)
        "apihelp-edit-param-token": "令牌应总是发送为最后参数,或至少在$1text参数之后。",
        "apihelp-edit-example-edit": "编辑一个页面。",
        "apihelp-edit-example-prepend": "页面中预置<kbd>_&#95;NOTOC_&#95;</kbd>。",
-       "apihelp-edit-example-undo": "通过13585撤销修订版本13579并自动填写编辑摘要。",
+       "apihelp-edit-example-undo": "撤销修订版本13579至13585并自动填写编辑摘要。",
        "apihelp-emailuser-description": "电子邮件联系一位用户。",
        "apihelp-emailuser-param-target": "电子邮件的目标用户。",
        "apihelp-emailuser-param-subject": "主题页眉。",
        "apihelp-expandtemplates-param-text": "要转换的wiki文本。",
        "apihelp-expandtemplates-param-revid": "修订版本ID,用于<nowiki>{{REVISIONID}}</nowiki>和类似变体。",
        "apihelp-expandtemplates-param-prop": "要获取的那条信息。\n\n注意如果没有选定值,结果将包含wiki文本,但将以弃用的格式显示。",
-       "apihelp-expandtemplates-paramvalue-prop-wikitext": "扩充的wiki文本。",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "展开后的wiki文本。",
        "apihelp-expandtemplates-paramvalue-prop-categories": "任何在输出中提供的,未在wiki文本输出中表现的分类。",
        "apihelp-expandtemplates-paramvalue-prop-properties": "由wiki文本中扩充的魔术字定义的页面属性。",
-       "apihelp-expandtemplates-paramvalue-prop-volatile": "无论输出是否常常变动,均不应被在页面中其他任何位置重用。",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "输出是否常常变动,是否不应被在页面中其他任何位置重用。",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "结果缓存应无效化后的最长时间。",
-       "apihelp-expandtemplates-paramvalue-prop-modules": "任何解析器函数请求添加至输出的ResourceLoader模块。无论<kbd>jsconfigvars</kbd>还是<kbd>encodedjsconfigvars</kbd>都必须与<kbd>modules</kbd>共同被请求。",
+       "apihelp-expandtemplates-paramvalue-prop-modules": "任何解析器函数请求添加至输出的ResourceLoader模块。<kbd>jsconfigvars</kbd>和<kbd>encodedjsconfigvars</kbd>之一必须与<kbd>modules</kbd>共同被请求。",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "针对页面提供JavaScript配置变量。",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "针对页面提供JavaScript配置变量为一个JSON字符串。",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "输入的XML分析树。",
-       "apihelp-expandtemplates-param-includecomments": "è¾\93å\87ºæ\97¶æ\98¯å\90¦å\8c\85å\90«HTMLæ\91\98è¦\81。",
+       "apihelp-expandtemplates-param-includecomments": "è¾\93å\87ºæ\97¶æ\98¯å\90¦å\8c\85å\90«HTML注é\87\8a。",
        "apihelp-expandtemplates-param-generatexml": "生成XML解析树(取代自$1prop=parsetree)。",
        "apihelp-expandtemplates-example-simple": "展开wiki文本<kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>。",
        "apihelp-feedcontributions-description": "返回用户贡献纲要。",
index 016306a..5c75292 100644 (file)
@@ -80,7 +80,6 @@ class UserCache {
         * @param string $caller The calling method
         */
        public function doQuery( array $userIds, $options = [], $caller = '' ) {
-
                $usersToCheck = [];
                $usersToQuery = [];
 
@@ -132,7 +131,6 @@ class UserCache {
                        }
                }
                $lb->execute();
-
        }
 
        /**
index 4970a2b..4b6362f 100644 (file)
@@ -549,7 +549,6 @@ class LocalisationCache {
         * @return array Array with a 'messages' key, or empty array if the file doesn't exist
         */
        public function readJSONFile( $fileName ) {
-
                if ( !is_readable( $fileName ) ) {
                        return [];
                }
@@ -561,7 +560,6 @@ class LocalisationCache {
 
                $data = FormatJson::decode( $json, true );
                if ( $data === null ) {
-
                        throw new MWException( __METHOD__ . ": Invalid JSON file: $fileName" );
                }
 
@@ -1036,7 +1034,6 @@ class LocalisationCache {
                        $blobStore = new MessageBlobStore();
                        $blobStore->clear();
                }
-
        }
 
        /**
index 4110472..e6b773c 100644 (file)
@@ -91,72 +91,47 @@ class IcuCollation extends Collation {
         * available and that there are, in fact, no additional letters to consider.
         */
        private static $tailoringFirstLetters = [
-               // Verified by native speakers
-               'be' => [ "Ё" ],
-               'be-tarask' => [ "Ё" ],
-               'bs' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
-               'cs' => [ "Č", "Ch", "Ř", "Š", "Ž" ],
-               'cy' => [ "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ],
-               'en' => [],
-               'fa' => [
-                       // RTL, let's put each letter on a new line
-                       "آ",
-                       "ء",
-                       "ه",
-                       "ا",
-                       "و"
-               ],
-               'fi' => [ "Å", "Ä", "Ö" ],
-               'fr' => [],
-               'hr' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
-               'hsb' => [ "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ],
-               'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ],
-               'is' => [ "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ],
-               'it' => [],
-               'lt' => [ "Č", "Š", "Ž" ],
-               'lv' => [ "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ],
-               'mk' => [ "Ѓ", "Ќ" ],
-               'nl' => [],
-               'pl' => [ "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ],
-               'pt' => [],
-               'ru' => [],
-               'sk' => [ "Ä", "Č", "Ch", "Ô", "Š", "Ž" ],
-               'sr' => [],
-               'sv' => [ "Å", "Ä", "Ö" ],
-               'sv@collation=standard' => [ "Å", "Ä", "Ö" ],
-               'ta' => [
-                       "\xE0\xAE\x82", "ஃ", "க்ஷ", "க்", "ங்", "ச்", "ஞ்", "ட்", "ண்", "த்", "ந்",
-                       "ப்", "ம்", "ய்", "ர்", "ல்", "வ்", "ழ்", "ள்", "ற்", "ன்", "ஜ்", "ஶ்", "ஷ்",
-                       "ஸ்", "ஹ்", "க்ஷ்"
-               ],
-               'uk' => [ "Ґ", "Ь" ],
-               'vi' => [ "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ],
-               // Not verified, but likely correct
                'af' => [],
                'am' => [],
                'ar' => [],
                'as' => [ "\xe0\xa6\x82", "\xe0\xa6\x81", "\xe0\xa6\x83", "\xe0\xa7\x8e", "ক্ষ " ],
-               'ast' => [ "Ch", "Ll", "Ñ" ], // Not in libicu?
+               'ast' => [ "Ch", "Ll", "Ñ" ], // not in libicu
                'az' => [ "Ç", "Ə", "Ğ", "İ", "Ö", "Ş", "Ü" ],
+               'be' => [ "Ё" ],
+               'be-tarask' => [ "Ё" ],
                'bg' => [],
                'bo' => [],
                'br' => [ "Ch", "C'h" ],
+               'bs' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
                'bs-Cyrl' => [],
                'ca' => [],
                'chr' => [],
-               'co' => [], // Not in libicu?
+               'co' => [], // not in libicu
+               'cs' => [ "Č", "Ch", "Ř", "Š", "Ž" ],
+               'cy' => [ "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ],
                'da' => [ "Æ", "Ø", "Å" ],
                'de' => [],
                'de-AT@collation=phonebook' => [ 'ä', 'ö', 'ü', 'ß' ],
                'dsb' => [ "Č", "Ć", "Dź", "Ě", "Ch", "Ł", "Ń", "Ŕ", "Š", "Ś", "Ž", "Ź" ],
                'ee' => [ "Dz", "Ɖ", "Ɛ", "Ƒ", "Gb", "Ɣ", "Kp", "Ny", "Ŋ", "Ɔ", "Ts", "Ʋ" ],
                'el' => [],
+               'en' => [],
                'eo' => [ "Ĉ", "Ĝ", "Ĥ", "Ĵ", "Ŝ", "Ŭ" ],
                'es' => [ "Ñ" ],
                'et' => [ "Š", "Ž", "Õ", "Ä", "Ö", "Ü", "W" ], // added W for CollationEt (xx-uca-et)
-               'eu' => [ "Ñ" ], // Not in libicu?
+               'eu' => [ "Ñ" ], // not in libicu
+               'fa' => [
+                       // RTL, let's put each letter on a new line
+                       "آ",
+                       "ء",
+                       "ه",
+                       "ا",
+                       "و"
+               ],
+               'fi' => [ "Å", "Ä", "Ö" ],
                'fil' => [ "Ñ", "Ng" ],
                'fo' => [ "Á", "Ð", "Í", "Ó", "Ú", "Ý", "Æ", "Ø", "Å" ],
+               'fr' => [],
                'fr-CA' => [], // fr-CA sorts accents slightly different from fr.
                'fur' => [ "À", "Á", "Â", "È", "Ì", "Ò", "Ù" ], // not in libicu
                'fy' => [], // not in libicu
@@ -168,10 +143,17 @@ class IcuCollation extends Collation {
                'haw' => [ 'ʻ' ],
                'he' => [],
                'hi' => [ "\xe0\xa4\x82", "\xe0\xa4\x83" ],
+               'hr' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
+               'hsb' => [ "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ],
+               'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ],
                'hy' => [ "և" ],
                'id' => [],
                'ig' => [ "Ch", "Gb", "Gh", "Gw", "Ị", "Kp", "Kw", "Ṅ", "Nw", "Ny", "Ọ", "Sh", "Ụ" ],
+               'is' => [ "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ],
+               'it' => [],
                'ka' => [],
+               'kk' => [ "Ү", "І" ],
+               'kl' => [ "Æ", "Ø", "Å" ],
                'km' => [
                        "រ", "ឫ", "ឬ", "ល", "ឭ", "ឮ", "\xe1\x9e\xbb\xe1\x9f\x86",
                        "\xe1\x9f\x86", "\xe1\x9e\xb6\xe1\x9f\x86", "\xe1\x9f\x87",
@@ -180,32 +162,36 @@ class IcuCollation extends Collation {
                ],
                'kn' => [ "\xe0\xb2\x81", "\xe0\xb2\x83", "\xe0\xb3\xb1", "\xe0\xb3\xb2" ],
                'kok' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष" ],
-               'kk' => [ "Ү", "І" ],
-               'kl' => [ "Æ", "Ø", "Å" ],
-               'ku' => [ "Ç", "Ê", "Î", "Ş", "Û" ], // ku is not in libicu
+               'ku' => [ "Ç", "Ê", "Î", "Ş", "Û" ], // not in libicu
                'ky' => [ "Ё" ],
-               'la' => [], // la is not in libicu
+               'la' => [], // not in libicu
                'lb' => [],
                'lkt' => [ 'Č', 'Ǧ', 'Ȟ', 'Š', 'Ž' ],
                'ln' => [ 'Ɛ' ],
                'lo' => [],
+               'lt' => [ "Č", "Š", "Ž" ],
+               'lv' => [ "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ],
+               'mk' => [ "Ѓ", "Ќ" ],
                'ml' => [],
                'mn' => [],
+               'mo' => [ "Ă", "Â", "Î", "Ş", "Ţ" ], // not in libicu
                'mr' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष", "ज्ञ" ],
-               'mo' => [ "Ă", "Â", "Î", "Ş", "Ţ" ], // no mo in libicu
                'ms' => [],
                'mt' => [ "Ċ", "Ġ", "Għ", "Ħ", "Ż" ],
                'nb' => [ "Æ", "Ø", "Å" ],
                'ne' => [],
+               'nl' => [],
                'nn' => [ "Æ", "Ø", "Å" ],
-               // no is not in the libicu list. You should probably use nb or nn instead.
-               'no' => [ "Æ", "Ø", "Å" ],
+               'no' => [ "Æ", "Ø", "Å" ], // not in libicu. You should probably use nb or nn instead.
                'oc' => [], // not in libicu
                'om' => [ 'Ch', 'Dh', 'Kh', 'Ny', 'Ph', 'Sh' ],
                'or' => [ "\xe0\xac\x81", "\xe0\xac\x82", "\xe0\xac\x83", "କ୍ଷ" ],
                'pa' => [ "\xe0\xa9\x8d" ],
+               'pl' => [ "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ],
+               'pt' => [],
                'rm' => [], // not in libicu
                'ro' => [ "Ă", "Â", "Î", "Ş", "Ţ" ],
+               'ru' => [],
                'rup' => [ "Ă", "Â", "Î", "Ľ", "Ń", "Ş", "Ţ" ], // not in libicu
                'sco' => [],
                'se' => [
@@ -213,11 +199,20 @@ class IcuCollation extends Collation {
                        'Š', 'Ŧ', 'Ž', 'Ø', 'Æ', 'Ȧ', 'Ä', 'Ö'
                ],
                'si' => [ "\xe0\xb6\x82", "\xe0\xb6\x83", "\xe0\xb6\xa4" ],
+               'sk' => [ "Ä", "Č", "Ch", "Ô", "Š", "Ž" ],
                'sl' => [ "Č", "Š", "Ž" ],
                'smn' => [ "Á", "Č", "Đ", "Ŋ", "Š", "Ŧ", "Ž", "Æ", "Ø", "Å", "Ä", "Ö" ],
                'sq' => [ "Ç", "Dh", "Ë", "Gj", "Ll", "Nj", "Rr", "Sh", "Th", "Xh", "Zh" ],
+               'sr' => [],
                'sr-Latn' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
+               'sv' => [ "Å", "Ä", "Ö" ],
+               'sv@collation=standard' => [ "Å", "Ä", "Ö" ],
                'sw' => [],
+               'ta' => [
+                       "\xE0\xAE\x82", "ஃ", "க்ஷ", "க்", "ங்", "ச்", "ஞ்", "ட்", "ண்", "த்", "ந்",
+                       "ப்", "ம்", "ய்", "ர்", "ல்", "வ்", "ழ்", "ள்", "ற்", "ன்", "ஜ்", "ஶ்", "ஷ்",
+                       "ஸ்", "ஹ்", "க்ஷ்"
+               ],
                'te' => [ "\xe0\xb0\x81", "\xe0\xb0\x82", "\xe0\xb0\x83" ],
                'th' => [ "ฯ", "\xe0\xb9\x86", "\xe0\xb9\x8d", "\xe0\xb8\xba" ],
                'tk' => [ "Ç", "Ä", "Ž", "Ň", "Ö", "Ş", "Ü", "Ý" ],
@@ -225,7 +220,9 @@ class IcuCollation extends Collation {
                'to' => [ "Ng", "ʻ" ],
                'tr' => [ "Ç", "Ğ", "İ", "Ö", "Ş", "Ü" ],
                'tt' => [ "Ә", "Ө", "Ү", "Җ", "Ң", "Һ" ], // not in libicu
+               'uk' => [ "Ґ", "Ь" ],
                'uz' => [ "Ch", "G'", "Ng", "O'", "Sh" ], // not in libicu
+               'vi' => [ "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ],
                'vo' => [ "Ä", "Ö", "Ü" ],
                'yi' => [
                        "\xd7\x91\xd6\xbf", "\xd7\x9b\xd6\xbc", "\xd7\xa4\xd6\xbc",
index 62c8b00..b9a259b 100644 (file)
@@ -108,7 +108,6 @@ class SearchUpdate implements DeferrableUpdate {
                        # Perform the actual update
                        $search->update( $this->id, $normalTitle, $search->normalizeText( $text ) );
                }
-
        }
 
        /**
index 296e3b7..9c9b1c9 100644 (file)
@@ -42,7 +42,6 @@ class WordLevelDiff extends \Diff {
         * @param string[] $linesAfter
         */
        public function __construct( $linesBefore, $linesAfter ) {
-
                list( $wordsBefore, $wordsBeforeStripped ) = $this->split( $linesBefore );
                list( $wordsAfter, $wordsAfterStripped ) = $this->split( $linesAfter );
 
@@ -68,7 +67,6 @@ class WordLevelDiff extends \Diff {
                                $yi += count( $closing );
                        }
                }
-
        }
 
        /**
@@ -77,7 +75,6 @@ class WordLevelDiff extends \Diff {
         * @return array[]
         */
        private function split( $lines ) {
-
                $words = [];
                $stripped = [];
                $first = true;
index 736cb06..3d8ddb8 100644 (file)
@@ -284,7 +284,7 @@ TXT;
                $trace = $trace ?: debug_backtrace();
                $logger = LoggerFactory::getInstance( 'fatal' );
                $logger->error( $msg, [
-                       'exception' => [
+                       'fatal_exception' => [
                                'class' => 'ErrorException',
                                'message' => "PHP Fatal Error: {$message}",
                                'code' => $level,
index a17ca6e..06fef4f 100644 (file)
@@ -194,14 +194,12 @@ class OldLocalFile extends LocalFile {
                } else {
                        $this->fileExists = false;
                }
-
        }
 
        /**
         * Load lazy file metadata from the DB
         */
        protected function loadExtraFromDB() {
-
                $this->extraDataLoaded = true;
                $dbr = $this->repo->getSlaveDB();
                $conds = [ 'oi_name' => $this->getName() ];
@@ -227,7 +225,6 @@ class OldLocalFile extends LocalFile {
                } else {
                        throw new MWException( "Could not find data for image '{$this->archive_name}'." );
                }
-
        }
 
        /**
index 363769d..86e8e75 100644 (file)
@@ -31,7 +31,6 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $this->mOptions = [ $params['other'] => 'other' ] + $this->mOptions;
                }
                $this->mFlatOptions = self::flattenOptions( $this->getOptions() );
-
        }
 
        public function getInputHTML( $value ) {
index 2e07af6..f13aa17 100644 (file)
@@ -9,7 +9,6 @@ class HTMLSelectNamespace extends HTMLFormField {
                $this->mAllValue = array_key_exists( 'all', $params )
                        ? $params['all']
                        : 'all';
-
        }
 
        public function getInputHTML( $value ) {
index 1afb0a9..bb41079 100644 (file)
@@ -18,7 +18,6 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                        // Have 'other' always as first element
                        $this->mOptions = [ $msg => 'other' ] + $this->mOptions;
                }
-
        }
 
        public function getInputHTML( $value ) {
index 458854a..08883ae 100644 (file)
@@ -362,7 +362,6 @@ class MWHttpRequest implements LoggerAwareInterface {
         * @return Status
         */
        public function execute() {
-
                $this->content = "";
 
                if ( strtoupper( $this->method ) == "HEAD" ) {
@@ -378,7 +377,6 @@ class MWHttpRequest implements LoggerAwareInterface {
                if ( !isset( $this->reqHeaders['User-Agent'] ) ) {
                        $this->setUserAgent( Http::userAgent() );
                }
-
        }
 
        /**
@@ -387,7 +385,6 @@ class MWHttpRequest implements LoggerAwareInterface {
         * found in an array in the member variable headerList.
         */
        protected function parseHeader() {
-
                $lastname = "";
 
                foreach ( $this->headerList as $header ) {
@@ -404,7 +401,6 @@ class MWHttpRequest implements LoggerAwareInterface {
                }
 
                $this->parseCookies();
-
        }
 
        /**
@@ -538,7 +534,6 @@ class MWHttpRequest implements LoggerAwareInterface {
         * Parse the cookies in the response headers and store them in the cookie jar.
         */
        protected function parseCookies() {
-
                if ( !$this->cookieJar ) {
                        $this->cookieJar = new CookieJar;
                }
@@ -549,7 +544,6 @@ class MWHttpRequest implements LoggerAwareInterface {
                                $this->cookieJar->parseCookieResponseHeader( $cookie, $url['host'] );
                        }
                }
-
        }
 
        /**
index 331d1a1..50d73de 100644 (file)
@@ -336,7 +336,6 @@ abstract class DatabaseInstaller {
                $services->redefineService( 'DBLoadBalancerFactory', function() use ( $connection ) {
                        return LBFactorySingle::newFromConnection( $connection );
                } );
-
        }
 
        /**
index 797a438..bc99672 100644 (file)
@@ -357,7 +357,6 @@ class CSSMin {
                }, $source );
 
                return $source;
-
        }
 
        /**
index 4bc0ce6..1593457 100644 (file)
@@ -176,7 +176,6 @@ class SwiftFileBackend extends FileBackendStore {
                return isset( $params['headers'] )
                        ? $this->getCustomHeaders( $params['headers'] )
                        : [];
-
        }
 
        /**
index f057140..3958f8c 100644 (file)
@@ -175,7 +175,6 @@ class XmlTypeCheck {
        }
 
        private function validate( $reader ) {
-
                // First, move through anything that isn't an element, and
                // handle any processing instructions with the callback
                do {
@@ -240,7 +239,6 @@ class XmlTypeCheck {
                                        // NOTATION, or XML_DECLARATION
                                        // xml_parse didn't send these to the filter, so we won't.
                        }
-
                } while ( $this->readNext( $reader ) );
 
                if ( $this->stackDepth !== 0 ) {
@@ -248,7 +246,6 @@ class XmlTypeCheck {
                } elseif ( $this->wellFormed === null ) {
                        $this->wellFormed = true;
                }
-
        }
 
        /**
index da47d35..a148a39 100644 (file)
@@ -103,7 +103,6 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
                                continue;
                        }
                        if ( $targetWiki !== 'local' ) {
-
                                throw new Exception( "Only 'local' target wiki is currently supported" );
                        }
                        if ( $reqType !== 'page' && $reqType !== 'transform' ) {
@@ -150,7 +149,6 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
         * API.  We now translate these to the "real" Parsoid v3 API.
         */
        public function onParsoid1Request( array $req, Closure $idGeneratorFunc ) {
-
                $parts = explode( '/', $req['url'] );
                list(
                        $targetWiki, // 'local'
@@ -221,7 +219,6 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
                }
 
                return $req;
-
        }
 
 }
index 3afbaa3..35c45de 100644 (file)
@@ -78,7 +78,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
        }
 
        public function onRequests( array $reqs, Closure $idGenFunc ) {
-
                if ( $this->params['parsoidCompat'] ) {
                        return $this->onParsoidRequests( $reqs, $idGenFunc );
                }
@@ -117,7 +116,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
         * Remaps Parsoid v1/v3 requests to RESTBase v1 requests.
         */
        public function onParsoidRequests( array $reqs, Closure $idGeneratorFunc ) {
-
                $result = [];
                foreach ( $reqs as $key => $req ) {
                        $version = explode( '/', $req['url'] )[1];
@@ -131,7 +129,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                }
 
                return $result;
-
        }
 
        /**
@@ -223,7 +220,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                }
 
                return $req;
-
        }
 
        /**
@@ -241,7 +237,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
         *   * $revision is optional
         */
        public function onParsoid3Request( array $req, Closure $idGeneratorFunc ) {
-
                $parts = explode( '/', $req['url'] );
                list(
                        $targetWiki, // 'local'
@@ -272,7 +267,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                }
 
                return $req;
-
        }
 
 }
index fffc262..51a0135 100644 (file)
@@ -102,7 +102,6 @@ class FormatMetadata extends ContextSource {
                unset( $tags['ResolutionUnit'] );
 
                foreach ( $tags as $tag => &$vals ) {
-
                        // This seems ugly to wrap non-array's in an array just to unwrap again,
                        // especially when most of the time it is not an array
                        if ( !is_array( $tags[$tag] ) ) {
@@ -165,7 +164,6 @@ class FormatMetadata extends ContextSource {
                        }
 
                        foreach ( $vals as &$val ) {
-
                                switch ( $tag ) {
                                        case 'Compression':
                                                switch ( $val ) {
@@ -1683,7 +1681,6 @@ class FormatMetadata extends ContextSource {
        protected function getExtendedMetadataFromHook( File $file, array $extendedMetadata,
                &$maxCacheTime
        ) {
-
                Hooks::run( 'GetExtendedMetadata', [
                        &$extendedMetadata,
                        $file,
@@ -1807,7 +1804,6 @@ class FormatMetadata extends ContextSource {
                                $field['value'] = $this->resolveMultivalueValue( $field['value'] );
                        }
                }
-
        }
 
        /**
index af77868..db3ec14 100644 (file)
@@ -215,7 +215,6 @@ class ImagePage extends Article {
                        'filepage', // always show the local local Filepage.css, bug 29277
                        'mediawiki.action.view.filepage', // Add MediaWiki styles for a file page
                ] );
-
        }
 
        /**
index b32f43b..e7712f2 100644 (file)
@@ -267,10 +267,8 @@ class LinkHolderArray {
         * @param string $text
         */
        public function replace( &$text ) {
-
                $this->replaceInternal( $text );
                $this->replaceInterwiki( $text );
-
        }
 
        /**
@@ -414,7 +412,6 @@ class LinkHolderArray {
                        $replacer->cb(),
                        $text
                );
-
        }
 
        /**
@@ -614,7 +611,6 @@ class LinkHolderArray {
         * @return string
         */
        public function replaceText( $text ) {
-
                $text = preg_replace_callback(
                        '/<!--(LINK|IWLINK) (.*?)-->/',
                        [ &$this, 'replaceTextCallback' ],
index 9a10878..2900f41 100644 (file)
@@ -733,7 +733,6 @@ class ParserOptions {
                $this->mThumbSize = $user->getOption( 'thumbsize' );
                $this->mStubThreshold = $user->getStubThreshold();
                $this->mUserLang = $lang;
-
        }
 
        /**
index 143f5cc..b05b51b 100644 (file)
@@ -388,7 +388,6 @@ class ResourceLoader implements LoggerAwareInterface {
                                }
                        }
                }
-
        }
 
        /**
@@ -428,7 +427,6 @@ class ResourceLoader implements LoggerAwareInterface {
                        // Keep track of their names so that they can be loaded together
                        $this->testModuleNames[$id] = array_keys( $testModules[$id] );
                }
-
        }
 
        /**
@@ -779,7 +777,6 @@ class ResourceLoader implements LoggerAwareInterface {
 
                $this->errors = [];
                echo $response;
-
        }
 
        /**
@@ -1142,7 +1139,6 @@ MESSAGE;
        protected static function makeLoaderImplementScript(
                $name, $scripts, $styles, $messages, $templates
        ) {
-
                if ( $scripts instanceof XmlJsCode ) {
                        $scripts = new XmlJsCode( "function ( $, jQuery, require, module ) {\n{$scripts->value}\n}" );
                } elseif ( !is_string( $scripts ) && !is_array( $scripts ) ) {
index 8ba49b6..5a50b17 100644 (file)
@@ -62,7 +62,6 @@ class SearchPostgres extends SearchDatabase {
         * @return string
         */
        function parseQuery( $term ) {
-
                wfDebug( "parseQuery received: $term \n" );
 
                # # No backslashes allowed
@@ -115,7 +114,6 @@ class SearchPostgres extends SearchDatabase {
                wfDebug( "parseQuery returned: $searchstring \n" );
 
                return $searchstring;
-
        }
 
        /**
index 6ea8b89..65eb9b7 100644 (file)
@@ -289,7 +289,6 @@ abstract class BaseTemplate extends QuickTemplate {
                if ( $content !== '' ) {
                        echo "<div class='after-portlet after-portlet-$name'>$content</div>";
                }
-
        }
 
        /**
index 3efbd3b..9c5600d 100644 (file)
@@ -196,7 +196,6 @@ class SkinTemplate extends Skin {
        }
 
        protected function setupTemplateForOutput() {
-
                $request = $this->getRequest();
                $user = $this->getUser();
                $title = $this->getTitle();
@@ -257,7 +256,6 @@ class SkinTemplate extends Skin {
                if ( $oldContext ) {
                        $this->setContext( $oldContext );
                }
-
        }
 
        /**
@@ -1171,7 +1169,6 @@ class SkinTemplate extends Skin {
         * @return array
         */
        private function buildContentActionUrls( $content_navigation ) {
-
                // content_actions has been replaced with content_navigation for backwards
                // compatibility and also for skins that just want simple tabs content_actions
                // is now built by flattening the content_navigation arrays into one
index 984e32b..d2da3ad 100644 (file)
@@ -156,7 +156,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                        [
                                'returnto' => $this->mReturnTo,
                                'returntoquery' => $this->mReturnToQuery,
-                               'uselang' => $this->mLanguage,
+                               'uselang' => $this->mLanguage ?: null,
                                'fromhttp' => $wgSecureLogin && $this->mFromHTTP ? '1' : null,
                        ]
                );
@@ -619,7 +619,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                $form = HTMLForm::factory( 'vform', $formDescriptor, $context );
 
                $form->addHiddenField( 'authAction', $this->authAction );
-               if ( $wgLoginLanguageSelector ) {
+               if ( $wgLoginLanguageSelector && $this->mLanguage ) {
                        $form->addHiddenField( 'uselang', $this->mLanguage );
                }
                $form->addHiddenField( 'force', $this->securityLevel );
@@ -770,7 +770,6 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                }
 
                return $template;
-
        }
 
        public function onAuthChangeFormFields(
index 6daf19f..252ac31 100644 (file)
@@ -455,7 +455,6 @@ class SpecialSearch extends SpecialPage {
                $out->addHTML( "</div>" );
 
                Hooks::run( 'SpecialSearchResultsAppend', [ $this, $out, $term ] );
-
        }
 
        /**
@@ -752,7 +751,6 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function showHit( SearchResult $result, $terms, $position ) {
-
                if ( $result->isBrokenTitle() ) {
                        return '';
                }
@@ -972,7 +970,6 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function showInterwikiHit( $result, $lastInterwiki, $query ) {
-
                if ( $result->isBrokenTitle() ) {
                        return '';
                }
@@ -1342,7 +1339,6 @@ class SpecialSearch extends SpecialPage {
         * @return bool
         */
        protected function startsWithAll( $term ) {
-
                $allkeyword = $this->msg( 'searchall' )->inContentLanguage()->text();
 
                $parts = explode( ':', $term );
index 92a65f0..2a59d5d 100644 (file)
@@ -1658,7 +1658,6 @@ class User implements IDBAccessObject {
 
                // Extensions
                Hooks::run( 'GetBlockedStatus', [ &$this ] );
-
        }
 
        /**
@@ -1690,7 +1689,6 @@ class User implements IDBAccessObject {
         * @return bool True if blacklisted.
         */
        public function inDnsBlacklist( $ip, $bases ) {
-
                $found = false;
                // @todo FIXME: IPv6 ???  (http://bugs.php.net/bug.php?id=33170)
                if ( IP::isIPv4( $ip ) ) {
index fc91443..886ee94 100644 (file)
@@ -186,7 +186,6 @@ class SrConverter extends LanguageConverter {
                } else {
                        return false;
                }
-
        }
 
 }
index d9111a6..e1099f8 100644 (file)
@@ -174,7 +174,6 @@ class LanguageZh extends LanguageZh_hans {
         * @return string
         */
        function normalizeForSearch( $string, $autoVariant = 'zh-hans' ) {
-
                // always convert to zh-hans before indexing. it should be
                // better to use zh-hans for search, since conversion from
                // Traditional to Simplified is less ambiguous than the
@@ -183,7 +182,6 @@ class LanguageZh extends LanguageZh_hans {
                // LanguageZh_hans::normalizeForSearch
                $s = parent::normalizeForSearch( $s );
                return $s;
-
        }
 
        /**
index 30c4ac0..54142a6 100644 (file)
        "botpasswords-label-delete": "Löschen",
        "botpasswords-label-resetpassword": "Passwort zurücksetzen",
        "botpasswords-label-grants": "Anwendbare Berechtigungen:",
-       "botpasswords-help-grants": "Jede Berechtigung gibt Zugriff auf gelistete Benutzerrechte, die ein Benutzerkonto bereits hat. Siehe die [[Special:ListGrants|Tabelle]] für weitere Informationen.",
+       "botpasswords-help-grants": "Berechtigungen erlauben den Zugriff auf Rechte, die bereits dein Benutzerkonto besitzt. Das Aktivieren einer Berechtigung hier bietet keinen Zugriff auf Rechte, die dein Benutzerkonto ansonsten nicht hat. Siehe die [[Special:ListGrants|Berechtigungstabelle]] für weitere Informationen.",
        "botpasswords-label-grants-column": "Gewährt",
        "botpasswords-bad-appid": "Der Botname „$1“ ist nicht gültig.",
        "botpasswords-insert-failed": "Der Botname „$1“ konnte nicht hinzugefügt werden. Wurde er bereits hinzugefügt?",
index d0c4e94..48729da 100644 (file)
        "botpasswords-label-delete": "Supprimer",
        "botpasswords-label-resetpassword": "Réinitialiser le mot de passe",
        "botpasswords-label-grants": "Droits applicables :",
-       "botpasswords-help-grants": "Chaque droit accordé donne accès à la liste des droits utilisateurs dont l’utilisateur dispose déjà. Voyez le [[Special:ListGrants|tableau des droits]] pour plus d’informations.",
+       "botpasswords-help-grants": "Les autorisations permettent d’accéder aux droits déjà accordés à votre compte utilisateur. Activer une autorisation ici ne fournit l’accès à aucun droit que votre compte utilisateur n’aurait pas par ailleurs. Voyez le [[Special:ListGrants|tableau des autorisations]] pour plus d’information.",
        "botpasswords-label-grants-column": "Accordé",
        "botpasswords-bad-appid": "Le nom de robot « $1 » n’est pas valide.",
        "botpasswords-insert-failed": "Échec de l’ajout du nom de robot « $1 ». A-t-il déjà été ajouté ?",
index 8e6da31..d4c72f1 100644 (file)
        "botpasswords-label-delete": "מחיקה",
        "botpasswords-label-resetpassword": "איפוס ססמה",
        "botpasswords-label-grants": "זיכיונות מתאימים",
-       "botpasswords-help-grants": "×\9b×\9c ×\96×\99×\9b×\99×\95×\9f × ×\95ת×\9f ×\92×\99ש×\94 ×\9c×\94רש×\90×\95ת ×\9eשת×\9eש ×¨×©×\95×\9e×\95ת ×©×\99ש ×\9c×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש. ×¢×\99×\99× ×\95 ×\91[[Special:ListGrants|×\98×\91×\9cת ×\94×\96×\99×\9b×\99×\95× ×\95ת]] ×\9c×\9e×\99×\93×¢ × ×\95סף.",
+       "botpasswords-help-grants": "×\96×\99×\9b×\99×\95× ×\95ת × ×\95תנ×\99×\9d ×\92×\99ש×\94 ×\9c×\94רש×\90×\95ת ×©×\9b×\91ר ×\9e×\95×\97×\96ק×\95ת ×\91×\99×\93×\99 ×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a. ×\94פע×\9cת ×\96×\99×\9b×\99×\95×\9f ×\91×\93×£ ×\96×\94 ×\90×\99× ×\94 × ×\95תנת ×\92×\99ש×\94 ×\9c×\94רש×\90×\95ת ×\90×\97ר×\95ת ×©×\90×\99× ×\9f ×\9e×\95×\97×\96ק×\95ת ×\91×\99×\93×\99 ×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a. ×\9e×\99×\93×¢ × ×\95סף ×\9e×\95פ×\99×¢ ×\91[[Special:ListGrants|×\98×\91×\9cת ×\94×\96×\99×\9b×\99×\95× ×\95ת]].",
        "botpasswords-label-grants-column": "ניתן זיכיון",
        "botpasswords-bad-appid": "שם הבוט \"$1\" אינו תקין.",
        "botpasswords-insert-failed": "הוספת שם הבוט \"$1\" נכשלה. האם הוא כבר נוסף?",
        "authmanager-authn-autocreate-failed": "יצירה אוטומטית של חשבון מקומי נכשלה: $1",
        "authmanager-change-not-supported": "לא ניתן לשנות את נתוני ההאמנה שניתנו, כי שום דבר לא ישתמש בהם.",
        "authmanager-create-disabled": "אפשרות יצירת החשבונות מבוטלת.",
-       "authmanager-create-from-login": "×\9b×\93×\99 ×\9c×\99צ×\95ר ×\90ת ×\94×\97ש×\91×\95×\9f, × ×\90 ×\9c×\9e×\9c×\90 ×\90ת ×\94ש×\93×\95ת ×©×\9c×\94×\9c×\9f.",
+       "authmanager-create-from-login": "×\9b×\93×\99 ×\9c×\99צ×\95ר ×\90ת ×\94×\97ש×\91×\95×\9f, ×\99ש ×\9c×\9e×\9c×\90 ×\90ת ×\94ש×\93×\95ת.",
        "authmanager-create-not-in-progress": "יצירת החשבון נכשלה או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.",
        "authmanager-create-no-primary": "האישורים שסופקו לא יכולים להיות בשימוש ביצירת חשבון.",
        "authmanager-link-no-primary": "האישורים שסופקו לא יכולים להיות בשימוש בקישור חשבונות.",
index 2d27207..8827f36 100644 (file)
        "botpasswords-label-delete": "Cancella",
        "botpasswords-label-resetpassword": "Reimposta la password",
        "botpasswords-label-grants": "Assegnazioni applicabili:",
-       "botpasswords-help-grants": "Ogni assegnazione dà accesso ai diritti utente elencati che un'utenza ha già. Vedi la [[Special:ListGrants|tabella delle assegnazioni]] per ulteriori informazioni.",
+       "botpasswords-help-grants": "Le assegnazioni consentono l'accesso a diritti che la tua utenza possiede già. Attivare un'assegnazione qui non fornisce l'accesso ad alcun diritto che la tua utenza altrimenti non avrebbe. Vedi la [[Special:ListGrants|tabella delle assegnazioni]] per ulteriori informazioni.",
        "botpasswords-label-grants-column": "Assegnazioni",
        "botpasswords-bad-appid": "Il nome bot \"$1\" non è valido.",
        "botpasswords-insert-failed": "Impossibile aggiungere il nome bot \"$1\". È stato già aggiunto?",
index 91c8b73..66b151e 100644 (file)
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "content-json-empty-object": "Tomt objekt",
+       "duplicate-args-warning": "<strong>Åtvaring:</strong> [[:$1]] kallar [[:$2]] med meir enn éin verdi for argumentet «$3». Berre den sist oppgjevne verdien vert nytta.",
        "expensive-parserfunction-warning": "Åtvaring: Denne sida inneheld for mange prosesskrevande parserfunksjonar.\n\nDet burde vere færre enn {{PLURAL:$2|$2|$2}}, men er no {{PLURAL:$1|$1|$1}}.",
        "expensive-parserfunction-category": "Sider med for mange prosesskrevande parserfunksjonar",
        "post-expand-template-inclusion-warning": "Åtvaring: Storleiken på malar som er inkluderte er for stor.\nNokre malar vert ikkje inkluderte.",
index 0c91db5..c12a04d 100644 (file)
        "botpasswords-label-delete": "Eliminar",
        "botpasswords-label-resetpassword": "Redefinir palavra-passe",
        "botpasswords-label-grants": "Concessões de permissões aplicáveis:",
-       "botpasswords-help-grants": "Cada concessão de permissões dá acesso às permissões listadas que uma conta de utilizador já possua. Consulte a [[Special:ListGrants|tabela de concessões]] para mais informação.",
+       "botpasswords-help-grants": "As concessões de permissões permitem acesso a permissões já detidas pela sua conta de utilizador. Fazer uma concessão aqui não fornece acesso a quaisquer permissões que a usa conta de utilizador não possua. Consulte a [[Special:ListGrants|tabela de concessões]] para mais informação.",
        "botpasswords-label-grants-column": "Concedido",
        "botpasswords-bad-appid": "O nome do robô \"$1\" não é válido.",
        "botpasswords-insert-failed": "Falhou ao adicionar o nome do robô \"$1\". Já foi adicionado?",
        "filedelete-edit-reasonlist": "Editar motivos de eliminação",
        "filedelete-maintenance": "Eliminação e restauro de ficheiros foram temporariamente impossibilitadas durante a manutenção.",
        "filedelete-maintenance-title": "Não é possível eliminar o ficheiro",
-       "mimesearch": "Pesquisa MIME",
-       "mimesearch-summary": "Esta página permite a filtragem de ficheiros pelo seu tipo MIME. Entrada: contenttype/subtype ou contenttype/*, ex. <code>image/jpeg</code>.",
+       "mimesearch": "Pesquisa de ficheiros pelo tipo MIME",
+       "mimesearch-summary": "Esta página permite a filtragem de ficheiros pelo seu tipo MIME.\nSintaxe: \"tipo de conteúdo/subtipo\" ou \"tipo de conteúdo/*\". Exemplos, <code>image/jpeg</code>, <code>image/png</code>, <code>application/*</code>.",
        "mimetype": "Tipo MIME:",
        "download": "descarregar",
        "unwatchedpages": "Páginas não vigiadas",
        "redirect-file": "Nome do ficheiro",
        "redirect-logid": "Identificador da entrada do registo",
        "redirect-not-exists": "Valor não encontrado",
-       "fileduplicatesearch": "Pesquisar ficheiros duplicados",
-       "fileduplicatesearch-summary": "Procure ficheiros duplicados tendo por base o seu resumo criptográfico.",
-       "fileduplicatesearch-filename": "Ficheiro:",
+       "fileduplicatesearch": "Pesquisa de ficheiros duplicados",
+       "fileduplicatesearch-summary": "Pesquisa de ficheiros duplicados baseada no resumo criptográfico.",
+       "fileduplicatesearch-filename": "Nome do ficheiro:",
        "fileduplicatesearch-submit": "Pesquisar",
        "fileduplicatesearch-info": "$1 × $2 píxeis<br />Tamanho: $3<br />tipo MIME: $4",
-       "fileduplicatesearch-result-1": "O ficheiro \"$1\" não possui cópias idênticas.",
+       "fileduplicatesearch-result-1": "O ficheiro \"$1\" não tem cópias idênticas.",
        "fileduplicatesearch-result-n": "O ficheiro \"$1\" possui {{PLURAL:$2|uma cópia idêntica|$2 cópias idênticas}}.",
        "fileduplicatesearch-noresults": "Não foi encontrado nenhum ficheiro com o nome \"$1\".",
        "specialpages": "Páginas especiais",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etiqueta|Etiquetas}}]]: $2)",
        "tag-mw-contentmodelchange": "alteração do modelo de conteúdo",
        "tag-mw-contentmodelchange-description": "Edições que [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel alteram o modelo de conteúdo] de uma página",
-       "tags-title": "Etiquetas",
+       "tags-title": "Etiquetas de modificação válidas",
        "tags-intro": "Esta página lista as etiquetas com que o software poderá marcar uma edição, e o seu significado.",
        "tags-tag": "Nome da etiqueta",
        "tags-display-header": "Aparência nas listas de modificações",
        "mediastatistics": "Estatísticas multimédia",
        "mediastatistics-summary": "Estatísticas sobre os tipos de ficheiros carregados. Inclui apenas a versão mais recente do ficheiro. Versões antigas ou eliminadas são excluídas.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)",
-       "mediastatistics-bytespertype": "Tamanho total de ficheiro para este secção: {{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%).",
-       "mediastatistics-allbytes": "Tamanho total de ficheiro para todos os ficheiros: {{PLURAL:$1|$1 byte|$1 bytes}} ($2).",
+       "mediastatistics-bytespertype": "Tamanho total dos ficheiros para esta secção: {{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%).",
+       "mediastatistics-allbytes": "Tamanho total de todos os ficheiros: {{PLURAL:$1|$1 byte|$1 bytes}} ($2).",
        "mediastatistics-table-mimetype": "Tipo MIME",
        "mediastatistics-table-extensions": "Extensões possíveis",
        "mediastatistics-table-count": "Número de ficheiros",
        "mediastatistics-table-totalbytes": "Tamanho combinado",
        "mediastatistics-header-unknown": "Desconhecido",
-       "mediastatistics-header-bitmap": "Imagens de mapa de bits",
+       "mediastatistics-header-bitmap": "Imagens em mapa de bits",
        "mediastatistics-header-drawing": "Desenhos (imagens vetoriais)",
        "mediastatistics-header-audio": "Áudio",
        "mediastatistics-header-video": "Vídeo",
index 701d5b2..735d48b 100644 (file)
        "editpage-invalidcontentmodel-text": "Error message shown when using an unrecognized content model on EditPage. $1 is the user's invalid input",
        "editpage-notsupportedcontentformat-title": "Title of error page shown when using an incompatible format on EditPage.\n\nUsed as title for the following error message:\n* {{msg-mw|Editpage-notsupportedcontentformat-text}}.",
        "editpage-notsupportedcontentformat-text": "Error message shown when using an incompatible format on EditPage.\n\nThe title for this error is {{msg-mw|Editpage-notsupportedcontentformat-title}}.\n\nParameters:\n* $1 - the format id\n* $2 - the content model name",
-       "content-model-wikitext": "Name for the wikitext content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
+       "content-model-wikitext": "Name for the wikitext content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n{{Identical|Wikitext}}",
        "content-model-text": "Name for the plain text content model, used when decribing what type of content a page contains. Plaintext means that the content of the page will be rendered as is like:\n\n<nowiki>This is [[plain text]]. <a href=\"https://www.mediawiki.org/\">Really!</a></nowiki>\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n\n{{Identical|Plain text}}",
        "content-model-javascript": "Name for the JavaScript content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
-       "content-model-css": "Name for the CSS content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
+       "content-model-css": "Name for the CSS content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n{{Identical|CSS}}",
        "content-model-json": "Name for the JSON content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
        "content-json-empty-object": "Used to represent an object with no properties on a JSON content model page.",
        "content-json-empty-array": "Used to represent an array with no values on a JSON content model page.",
        "filedelete-edit-reasonlist": "Shown beneath the file deletion form on the right side. It is a link to [[MediaWiki:Filedelete-reason-dropdown]].\n\n{{Identical|Edit delete reasons}}",
        "filedelete-maintenance": "Content of the error page when $wgUploadMaintenance is set to true.",
        "filedelete-maintenance-title": "Title of the error page when $wgUploadMaintenance is set to true.",
-       "mimesearch": "Title of [[Special:MIMESearch]]. Also used as legend of the form.\n\nSee also:\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|Submit button text}}",
-       "mimesearch-summary": "Text for [[Special:MIMESearch]]",
-       "mimetype": "Used as label for input box in the MIMESearch form on [[Special:MIMESearch]].\n\nSee also:\n* {{msg-mw|Mimesearch|page title}}\n* {{msg-mw|Ilsubmit|Submit button text}}\n{{Identical|MIME type}}",
+       "mimesearch": "Used as page title for [[Special:MIMESearch]], legend of input form and link text in [[Special:SpecialPages]].\n\nStrings on the page:\n* {{msg-mw|Mimesearch|page title, legend of input form, link in special pages}}\n* {{msg-mw|Mimesearch-summary|page summary}}\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|search button}}\n\nCheck [[mw:Manual:MIME_type_detection]] for MIME types.",
+       "mimesearch-summary": "Page summary for [[Special:MIMESearch]]\n\nStrings on the page:\n* {{msg-mw|Mimesearch|page title, legend of input form, link in special pages}}\n* {{msg-mw|Mimesearch-summary|page summary}}\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|search button}}\n\nCheck [[mw:Manual:MIME_type_detection]] for MIME types.",
+       "mimetype": "Label for input box in [[Special:MIMESearch]].\n\nStrings on the page:\n* {{msg-mw|Mimesearch|page title, legend of input form, link in special pages}}\n* {{msg-mw|Mimesearch-summary|page summary}}\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|search button}}\n\nCheck [[mw:Manual:MIME_type_detection]] for MIME types.\n\n{{Identical|MIME type}}",
        "download": "Direct download link in each line returned by [[Special:MIMESearch]]. Points to the actual file, rather than the image description page.\n{{Identical|Download}}",
        "unwatchedpages": "{{doc-special|UnwatchedPages}}",
        "unwatchedpages-summary": "{{doc-specialpagesummary|unwatchedpages}}",
        "newimages-hidepatrolled": "Used as label for a checkbox. When checked, [[Special:NewImages]] will not display patrolled uploads.\n\nCf. {{msg-mw|tog-hidepatrolled}} and {{msg-mw|apihelp-feedrecentchanges-param-hidepatrolled}}.",
        "noimages": "This is shown on the special page [[Special:NewImages]], when there aren't any recently uploaded files.",
        "gallery-slideshow-toggle": "Tooltip for the icon that toggles thumbnails on a slideshow  gallery.",
-       "ilsubmit": "Used as label for input box in the MIMESearch form on [[Special:MIMESearch]].\n\nSee also:\n* {{msg-mw|Mimesearch|page title}}\n* {{msg-mw|Mimetype|label for input box}}\n{{Identical|Search}}",
+       "ilsubmit": "Search button in [[Special:MIMESearch]].\n\nStrings on the page:\n* {{msg-mw|Mimesearch|page title, legend of input form, link in special pages}}\n* {{msg-mw|Mimesearch-summary|page summary}}\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|search button}}\n\nCheck [[mw:Manual:MIME_type_detection]] for MIME types.\n\n{{Identical|Search}}",
        "bydate": "{{Identical|Date}}",
        "sp-newimages-showfrom": "This is a link on [[Special:NewImages]] which takes you to a gallery of the newest files.\n* $1 is a date (example: ''19 March 2008'')\n* $2 is a time (example: ''12:15'')",
        "video-dims": "{{optional}}\nParameters:\n* $1 - ...\n* $2 - width\n* $3 - height",
index 4acb8b6..7b201c9 100644 (file)
        "botpasswords-label-delete": "Удалить",
        "botpasswords-label-resetpassword": "Сбросить пароль",
        "botpasswords-label-grants": "Применимые разрешения:",
-       "botpasswords-help-grants": "Ð\9aаждое Ñ\80азÑ\80еÑ\88ение Ð´Ð°Ñ\91Ñ\82 Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ð¿ÐµÑ\80еÑ\87иÑ\81леннÑ\8bм Ð¿Ñ\80авам Ñ\83Ñ\87аÑ\81Ñ\82ника, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ñ\83же ÐµÑ\81Ñ\82Ñ\8c Ñ\83 Ñ\83Ñ\87Ñ\91Ñ\82ной Ð·Ð°Ð¿Ð¸Ñ\81и Ñ\83Ñ\87аÑ\81Ñ\82ника. Ð¡Ð¼. [[Special:ListGrants|Ñ\82аблиÑ\86Ñ\83 Ñ\80азÑ\80еÑ\88ений]] для получения дополнительной информации.",
+       "botpasswords-help-grants": "Ð\93Ñ\80анÑ\82Ñ\8b Ñ\80азÑ\80еÑ\88иÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ð¿Ñ\80авам, ÐºÐ¾Ñ\82оÑ\80Ñ\8bми Ñ\83же Ð²Ð»Ð°Ð´ÐµÐµÑ\82 Ð\92аÑ\88ей Ñ\83Ñ\87еÑ\82ной Ð·Ð°Ð¿Ð¸Ñ\81и Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f. Ð\92клÑ\8eÑ\87ение Ð\93Ñ\80анÑ\82 Ð·Ð´ÐµÑ\81Ñ\8c Ð½Ðµ Ð¿Ñ\80едоÑ\81Ñ\82авлÑ\8fеÑ\82 Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ð»Ñ\8eбÑ\8bм Ð¿Ñ\80авам, Ñ\87Ñ\82о Ð²Ð°Ñ\88а Ñ\83Ñ\87еÑ\82наÑ\8f Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c Ð\9fолÑ\8cзоваÑ\82елÑ\8f Ð½Ðµ Ð±Ñ\83деÑ\82 Ð² Ð¿Ñ\80оÑ\82ивном Ñ\81лÑ\83Ñ\87ае. Ð¡Ð¼ [[Special:ListGrants|ТаблиÑ\86а Ð³Ñ\80анÑ\82ов]] для получения дополнительной информации.",
        "botpasswords-label-grants-column": "Разрешено",
        "botpasswords-bad-appid": "Имя бота «$1» является недопустимым.",
        "botpasswords-insert-failed": "Не удалось добавить бота с именем «$1». Возможно, он был уже добавлен?",
index 8d6bfb4..26bd61b 100644 (file)
        "botpasswords-label-delete": "Izbriši",
        "botpasswords-label-resetpassword": "Ponastavi geslo",
        "botpasswords-label-grants": "Veljavne pravice:",
-       "botpasswords-help-grants": "Vsaka pravica dodeli dostop do navedenih uporabniških pravic, ki jih uporabniški račun že ima. Za več informacij si oglejte [[Special:ListGrants|tabelo pravic]].",
+       "botpasswords-help-grants": "Pravice omogočajo dostop do pravic, ki jih vaš uporabniški račun že ima. Tukajšnja omogočitev pravice ne podeli dostopa do katere koli pravice, ki je vaš uporabniški račun drugače še nima. Za več informacij si oglejte [[Special:ListGrants|tabelo pravic]].",
        "botpasswords-label-grants-column": "Odobreno",
        "botpasswords-bad-appid": "Ime bota »$1« ni veljavno.",
        "botpasswords-insert-failed": "Dodajanje imena bota »$1« ni uspelo. Ste ga že dodali?",
index 3685734..70344cf 100644 (file)
        "yourpasswordagain": "Naszkryflej ausdruk zaś",
        "createacct-yourpasswordagain": "Potwjyrdź hasło",
        "createacct-yourpasswordagain-ph": "Wszkryflej hasło jeszcze roz",
-       "remembermypassword": "Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})",
        "userlogin-remembermypassword": "Ńy wylogůwywuj mje",
        "userlogin-signwithsecure": "Użyj bezpjecznygo połůnczyńa",
        "yourdomainname": "Twoja domyna",
        "listusersfrom": "Pokaž užytkowńikůw začynojůnc uod:",
        "listusers-submit": "Uobejrzij",
        "listusers-noresult": "Ńy znejdźůno žodnygo užytkowńika.",
-       "activeusers-hidebots": "Schrůń boty",
-       "activeusers-hidesysops": "Schrůń adminy",
        "activeusers-noresult": "Niy szło znŏjść żŏdnych używŏczōw",
        "listgrouprights": "Uprawńyńo grup użytkowńikůw",
        "listgrouprights-summary": "Půńiży znojdowo śe spis grup użytkowńikůw zdefińjowanych na tyj wiki, s wyszczygůlńyńym przidźelůnych im prow dostympu.\nSprowdź zajta [[{{MediaWiki:Listgrouprights-helppage}}|s dodatkowymi informacjami]] uo uprowńyńach użytkowńikůw.",
        "logentry-upload-upload": "$1 {{GENDER:$2|posłoł|posłała}} $3",
        "rightsnone": "podstawowo",
        "revdelete-summary": "uopis pomjyńań",
-       "searchsuggest-search": "Sznupej",
+       "searchsuggest-search": "Sznupej we {{SITENAME}}",
        "expand_templates_ok": "OK"
 }
index 64accfa..1fcff99 100644 (file)
        "talk": "تبادلہٴ خیال",
        "views": "مشاہدات",
        "toolbox": "آلات",
-       "tool-link-userrights": "{{GENDER:$1|صارف}} کے گروہوں میں تبدیلی کریں",
+       "tool-link-userrights": "حلقہ ہائے {{GENDER:$1|صارف}} میں تبدیلی",
        "tool-link-emailuser": "اس {{GENDER:$1|صارف}} کو برقی خط لکھیں",
        "userpage": "صارف کا صفحہ دیکھیے",
        "projectpage": "منصوبہ کا صفحہ دیکھیے",
        "prefswarning-warning": "ترجیحات میں آپ کی جانب سے کی جانے والی تبدیلیاں ابھی محفوظ نہیں ہوئی ہیں۔\nاگر آپ «$1» پر کلک کیے بغیر اس صفحہ کو چھوڑ دیں تو آپ کی تبدیلیاں محفوظ نہیں ہوگی۔",
        "prefs-tabs-navigation-hint": "نکتہ: مختلف خانوں میں جانے کے لیے آپ دائیں اور بائیں کی جہت نما کلیدیں استعمال کر سکتے ہیں۔",
        "userrights": "حقوقِ صارف کی نظامت",
-       "userrights-lookup-user": "گروہائے صارف کا انتظام",
+       "userrights-lookup-user": "حلقہ ہائے صارف کا انتظام",
        "userrights-user-editname": "کوئی اسم‌صارف داخل کیجئے:",
-       "editusergroup": "{{GENDER:$1|صارف}} کے گروہوں میں ترمیم کریں",
+       "editusergroup": "حلقہ ہائے {{GENDER:$1|صارف}} میں ترمیم کریں",
        "editinguser": "{{GENDER:$1|صارف}} <strong>[[User:$1|$1]]</strong> $2 کے اختیارات میں تبدیلی",
-       "userrights-editusergroup": "ترÙ\85Û\8cÙ\85 Ú¯Ø±Ù\88Û\81ائÛ\92 ØµØ§Ø±Ù\81",
-       "saveusergroups": "{{GENDER:$1|صارف}} کے گروہوں کو محفوظ کریں",
+       "userrights-editusergroup": "Ø­Ù\84Ù\82Û\81 Û\81ائÛ\92 ØµØ§Ø±Ù\81 Ù\85Û\8cÚº ØªØ±Ù\85Û\8cÙ\85 Ú©Ø±Û\8cÚº",
+       "saveusergroups": "حلقہ ہائے {{GENDER:$1|صارف}} کو محفوظ کریں",
        "userrights-groupsmember": "رکنِ:",
        "userrights-groupsmember-auto": "اعتباری صارف در",
-       "userrights-groups-help": "آپ ان گروہان میں تبدیلی کرسکتے ہیں جن سے صارف متعلق ہے: \n* نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے ہے۔ \n* غیر نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے نہیں ہے۔ \n* یہ * علامت اس بات کا اشارہ ہے کہ آپ اس گروہ کو نہیں ہٹا سکتے جسے ایک مرتبہ آپ نے شامل کردیا ہو، یا اس کے بر عکس۔",
+       "userrights-groups-help": "آپ ان حلقوں میں تبدیلی کرسکتے ہیں جن سے صارف متعلق ہے: \n* نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے ہے۔ \n* غیر نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے نہیں ہے۔ \n* یہ * علامت اس بات کا اشارہ ہے کہ آپ اس گروہ کو نہیں ہٹا سکتے جسے ایک مرتبہ آپ نے شامل کردیا ہو، یا اس کے بر عکس۔",
        "userrights-reason": "وجہ:",
        "userrights-no-interwiki": "دوسرے ویکیوں پر حقوقِ صارف میں ترمیم کی آپ کو اجازت نہیں ہے.",
        "userrights-nodatabase": "ڈیٹابیس $1 موجود نہیں یا مقامی نہیں۔",
        "userrights-unchangeable-col": "مجموعات جو آپ تبدیل نہیں کرسکتے",
        "userrights-conflict": "اختیارات کی تبدیلی میں تنازعہ! براہ کرم نظر ثانی کریں اور اپنی تبدیلیوں کی تصدیق کریں۔",
        "userrights-removed-self": "آپ نے اپنے اختیارات ختم کر لیے ہیں، چنانچہ اب یہ صفحہ آپ کی دسترس سے باہر ہو گیا ہے۔",
-       "group": "گروہ:",
+       "group": "حلقہ:",
        "group-user": "صارفین",
        "group-autoconfirmed": "خود توثیق شدہ صارفین",
        "group-bot": "روبالات",
        "activeusers-intro": "ذیل میں ان صارفین کی فہرست ہے جو گزشتہ $1 {{PLURAL:$1|دن|دنوں}} میں کسی بھی قسم کی سرگرمی میں شریک رہے ہوں۔",
        "activeusers-count": "گزشتہ {{PLURAL:$3|دن|$3 دنوں}} میں $1 {{PLURAL:$1|اقدام|اقدامات}}",
        "activeusers-from": "اس حرف سے شروع ہونے والے صارفین کے نام دکھائیں:",
-       "activeusers-hidebots": "خودکار صارفین کو چھپائیں",
-       "activeusers-hidesysops": "منتظمین کو چھپائیں",
        "activeusers-noresult": "یہ صارف نہیں مل سکا",
        "activeusers-submit": "فعال صارفین دکھائیں",
-       "listgrouprights": "صارÙ\81 Ú¯Ø±Ù\88Û\81Ù\88Úº کے اختیارات",
-       "listgrouprights-summary": "ذیل میں اس ویکی پر موجود صارف گروہوں کی فہرست درج ہے۔ اس میں دائیں جانب گروہ کا نام اور بائیں جانب متعلقہ گروہ کو حاصل شدہ اختیارات کی تفصیل بیان کی گئی ہے۔\nانفرادی اختیارات کے متعلق [[{{MediaWiki:Listgrouprights-helppage}}|اضافی معلومات یہاں]] دیکھی جا سکتی ہیں۔",
+       "listgrouprights": "Ø­Ù\84Ù\82Û\81 ØµØ§Ø±Ù\81Û\8cÙ\86 کے اختیارات",
+       "listgrouprights-summary": "ذیل میں اس ویکی پر موجود صارف حلقوں کی فہرست درج ہے۔ اس میں دائیں جانب حلقے کا نام اور بائیں جانب متعلقہ حلقے کو حاصل شدہ اختیارات کی تفصیل بیان کی گئی ہے۔\nانفرادی اختیارات کے متعلق [[{{MediaWiki:Listgrouprights-helppage}}|اضافی معلومات یہاں]] دیکھی جا سکتی ہیں۔",
        "listgrouprights-key": "عنوان:\n* <span class=\"listgrouprights-granted\">تفویض کردہ اختیارات</span>\n* <span class=\"listgrouprights-revoked\">منسوخ کردہ اختیارات</span>",
-       "listgrouprights-group": "گروہ",
+       "listgrouprights-group": "حلقہ",
        "listgrouprights-rights": "اختیارات",
-       "listgrouprights-helppage": "Help:اختیاراتِ گروہ",
+       "listgrouprights-helppage": "Help:اختیاراتِ حلقہ",
        "listgrouprights-members": "(اراکین کی فہرست)",
-       "listgrouprights-addgroup": "{{PLURAL:$2|اس گروہ|ان گروہوں}} میں شامل کرنے کا اختیار ہے: \n\n$1",
-       "listgrouprights-removegroup": "{{PLURAL:$2|اس گروہ|ان گروہوں}} سے ہٹانے کا اختیار ہے: \n\n$1",
-       "listgrouprights-addgroup-all": "تمام گروہوں کا ا ضافہ کریں",
-       "listgrouprights-removegroup-all": "تمام گروہوں کو ہٹانے کا اختیار ہے",
-       "listgrouprights-addgroup-self": "{{PLURAL:$2|اس گروہ|ان گروہوں}} میں از خود شامل ہونے کا اختیار ہے: \n\n$1",
-       "listgrouprights-removegroup-self": "{{PLURAL:$2|اس گروہ|ان گروہوں}} سے از خود نکلنے کا اختیار ہے: \n\n$1",
-       "listgrouprights-addgroup-self-all": "تمام گروہوں میں از خود شامل ہونے کا اختیار ہے",
-       "listgrouprights-removegroup-self-all": "تمام گروہوں سے از خود نکلنے کا اختیار ہے",
+       "listgrouprights-addgroup": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} میں شامل کرنے کا اختیار ہے: \n\n$1",
+       "listgrouprights-removegroup": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} سے ہٹانے کا اختیار ہے: \n\n$1",
+       "listgrouprights-addgroup-all": "تمام حلقوں کا ا ضافہ کریں",
+       "listgrouprights-removegroup-all": "تمام حلقوں کو ہٹانے کا اختیار ہے",
+       "listgrouprights-addgroup-self": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} میں از خود شامل ہونے کا اختیار ہے: \n\n$1",
+       "listgrouprights-removegroup-self": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} سے از خود نکلنے کا اختیار ہے: \n\n$1",
+       "listgrouprights-addgroup-self-all": "تمام حلقوں میں از خود شامل ہونے کا اختیار ہے",
+       "listgrouprights-removegroup-self-all": "تمام حلقوں سے از خود نکلنے کا اختیار ہے",
        "listgrouprights-namespaceprotection-header": "نام فضا پابندیاں",
        "listgrouprights-namespaceprotection-namespace": "فضائے نام",
        "listgrouprights-namespaceprotection-restrictedto": "ترمیم کی اجازت دینے والے اختیار(ات)",
        "logentry-protect-protect-cascade": "$1 نے $3 کو {{GENDER:$2|محفوظ کیا}} $4 [آبشاری]",
        "logentry-protect-modify": "$1 نے $3 کا درجۂ حفاظت {{GENDER:$2|تبدیل کیا}} $4",
        "logentry-protect-modify-cascade": "$1 نے $3 کا درجہ حفاظت {{GENDER:$2|تبدیل کیا}} $4 [آبشاری]",
-       "logentry-rights-rights": "$1 نے {{GENDER:$6|$3}} کی گروہی رکنیت از $4 تا $5 {{GENDER:$2|تبدیل کی}}",
-       "logentry-rights-rights-legacy": "$1 Ù\86Û\92 $3 Ú©Û\8c Ú¯Ø±Ù\88Û\81Û\8c Ø±Ù\88Ú©Ù\86Û\8cت کو {{GENDER:$2|تبدیل کیا}}",
+       "logentry-rights-rights": "$1 نے {{GENDER:$6|$3}} کا حلقہ صارف از $4 تا $5 {{GENDER:$2|تبدیل کی}}",
+       "logentry-rights-rights-legacy": "$1 Ù\86Û\92 $3 Ú©Û\92 Ø­Ù\84Ù\82Û\81 ØµØ§Ø±Ù\81 کو {{GENDER:$2|تبدیل کیا}}",
        "logentry-rights-autopromote": "$1 کو خودکار طور پر $4 سے $5 پر {{GENDER:$2|ترقی مل گئی}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|اپلوڈ}} $3",
        "logentry-upload-overwrite": "$1 نے $3 کا نیا نسخہ {{GENDER:$2|اپلوڈ کیا}}",
index c366946..6ffd416 100644 (file)
        "lockedbyandtime": "(由 {{GENDER:$1|$1}} 于$2 $3执行)",
        "move-page": "移动$1",
        "move-page-legend": "移动页面",
-       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其版本历史移动到新页面。同时老的条目将会被重定向到新条目。您可以自动地将指向老的条目的重定向更新为指向新条目。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:如果新条目已经有对应页面,此页面将<strong>不会</strong>被移动,除非新页面是重定向页并且无任何修订历史。这意味着您可在误操作后将页面移回原处,同时,您无法覆盖现有页面。\n\n<strong>注意:</strong>对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
+       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其所有版本历史移动到新页面。旧标题将会被重定向到新标题。您可以自动更新链接至原标题的重定向。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:如果已存在使用新标题的页面,此页面将<strong>不会</strong>被移动,除非新页面是重定向,并且没有过去的编辑历史。这意味着您可在误操作后将页面移回原处,同时,您无法覆盖现有页面。\n\n<strong>注意:</strong>对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
        "movepagetext-noredirectfixer": "用下面的表单来重命名一个页面,并将其版本历史同时移动到新页面。老的页面将成为新页面的重定向页。请检查[[Special:DoubleRedirects|双重重定向]]或[[Special:BrokenRedirects|损坏重定向]]链接。您应当负责确定所有链接依然会链到指定的页面。\n\n注意如果新页面已经有内容的话,页面将<strong>不会</strong>被移动,除非新页面无内容或是重定向页,而且没有版本历史。这意味着您再必要时可以在移动到新页面后再移回老的页面,同时您也无法覆盖现有页面。\n\n<strong>注意:</strong>对一个经常被访问的页面而言这可能是一个重大与唐突的更改;请在行动前先确定您了解其所可能带来的后果。",
        "movepagetalktext": "如果您勾选此框,相关联的讨论页将被自动移动到新的标题,除非这里已经有了一个非空讨论页。\n\n在这种情况下,如有需要,您将不得不手动移动或合并页面。",
        "moveuserpage-warning": "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
index c74cae2..552bec0 100644 (file)
@@ -459,7 +459,6 @@ abstract class Maintenance {
         * Add the default parameters to the scripts
         */
        protected function addDefaultParams() {
-
                # Generic (non script dependant) options:
 
                $this->addOption( 'help', 'Display this help message', false, false, 'h' );
@@ -546,7 +545,6 @@ abstract class Maintenance {
                                . "for this script to run: $joined. Please enable them and then try again.";
                        $this->error( $msg, 1 );
                }
-
        }
 
        /**
index 3f0a83d..b504bde 100644 (file)
@@ -60,7 +60,6 @@ class CheckComposerLockUpToDate extends Maintenance {
                        // We couldn't find any out-of-date dependencies, so assume everything is ok!
                        $this->output( "Your composer.lock file is up to date with current dependencies!\n" );
                }
-
        }
 }
 
index f13dd93..388ad8a 100644 (file)
@@ -109,7 +109,6 @@ class GenerateCommonPassword extends Maintenance {
                } catch ( \Cdb\Exception $e ) {
                        $this->error( "Error writing cdb file: " . $e->getMessage(), 2 );
                }
-
        }
 }
 
index 28ad10a..676ecca 100644 (file)
@@ -50,7 +50,7 @@
 @colorWarningText: #705000;
 
 // UI colors
-@colorFieldBorder: #9aa0a7;
+@colorFieldBorder: #a2a9b1;
 @colorShadow: @colorGray14;
 @colorPlaceholder: @colorGray10;
 @colorNeutral: @colorGray7;
index 59f88c9..b6e811b 100644 (file)
@@ -264,7 +264,6 @@ class TestFileReader {
                $this->sectionLineNum = [];
                $this->sectionData = [];
                $this->section = null;
-
        }
 
        /**
index 9f4a01c..89416f2 100644 (file)
@@ -18,7 +18,6 @@ class GitInfoTest extends MediaWikiTestCase {
                $this->assertEquals( 'master', $gitInfo->getCurrentBranch() );
                $this->assertContains( '0123456789abcdef0123456789abcdef01234567',
                        $gitInfo->getHeadViewUrl() );
-
        }
 
        public function testValidJsonData() {
index bc50966..95c7a61 100644 (file)
@@ -92,7 +92,6 @@ class HtmlTest extends MediaWikiTestCase {
         * @covers Html::expandAttributes
         */
        public function testExpandAttributesSkipsNullAndFalse() {
-
                # ## EMPTY ########
                $this->assertEmpty(
                        Html::expandAttributes( [ 'foo' => null ] ),
@@ -190,7 +189,6 @@ class HtmlTest extends MediaWikiTestCase {
                        Html::expandAttributes( [ 'zero' => 0 ] ),
                        'Number 0 value needs no quotes'
                );
-
        }
 
        /**
index 61b165a..428b012 100644 (file)
@@ -6,7 +6,6 @@
 class LinkFilterTest extends MediaWikiLangTestCase {
 
        protected function setUp() {
-
                parent::setUp();
 
                $this->setMwGlobals( 'wgUrlProtocols', [
@@ -26,7 +25,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                        'mms://',
                        '//',
                ] );
-
        }
 
        /**
@@ -38,11 +36,9 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @return string Regex
         */
        function createRegexFromLIKE( $like ) {
-
                $regex = '!^';
 
                foreach ( $like as $item ) {
-
                        if ( $item instanceof LikeMatch ) {
                                if ( $item->toString() == '%' ) {
                                        $regex .= '.*';
@@ -58,7 +54,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                $regex .= '$!';
 
                return $regex;
-
        }
 
        /**
@@ -67,7 +62,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @return array
         */
        public static function provideValidPatterns() {
-
                return [
                        // Protocol, Search pattern, URL which matches the pattern
                        [ 'http://', '*.test.com', 'http://www.test.com' ],
@@ -164,7 +158,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                        // [ '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
                        //      'https://gerrit.wikimedia.org/XXX/r/#/q/status:open,n,z', false ],
                ];
-
        }
 
        /**
@@ -181,7 +174,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @param bool $shouldBeFound Should the URL be found? (defaults true)
         */
        function testMakeLikeArrayWithValidPatterns( $protocol, $pattern, $url, $shouldBeFound = true ) {
-
                $indexes = wfMakeUrlIndexes( $url );
                $likeArray = LinkFilter::makeLikeArray( $pattern, $protocol );
 
@@ -211,7 +203,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                                "Search pattern '$protocol$pattern' should not find url '$url' \n$debugmsg"
                        );
                }
-
        }
 
        /**
@@ -220,7 +211,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @return array
         */
        public static function provideInvalidPatterns() {
-
                return [
                        [ '' ],
                        [ '*' ],
@@ -240,7 +230,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                        [ 'test.com/*/index' ],
                        [ 'test.com/dir/index?arg=*' ],
                ];
-
        }
 
        /**
@@ -253,12 +242,10 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @param string $pattern Invalid search pattern
         */
        function testMakeLikeArrayWithInvalidPatterns( $pattern ) {
-
                $this->assertFalse(
                        LinkFilter::makeLikeArray( $pattern ),
                        "'$pattern' is not a valid pattern and should be rejected"
                );
-
        }
 
 }
index cc1708a..29c9e22 100644 (file)
@@ -266,11 +266,9 @@ class TestPageProps extends MediaWikiLangTestCase {
        }
 
        protected function setProperties( $pageID, $properties ) {
-
                $rows = [];
 
                foreach ( $properties as $propertyName => $propertyValue ) {
-
                        $row = [
                                'pp_page' => $pageID,
                                'pp_propname' => $propertyName,
@@ -295,11 +293,9 @@ class TestPageProps extends MediaWikiLangTestCase {
        }
 
        protected function setProperty( $pageID, $propertyName, $propertyValue ) {
-
                $properties = [];
                $properties[$propertyName] = $propertyValue;
 
                $this->setProperties( $pageID, $properties );
-
        }
 }
index 9359568..152602a 100644 (file)
@@ -91,6 +91,5 @@ class TemplateCategoriesTest extends MediaWikiLangTestCase {
                        $title->getParentCategories(),
                        'Verify that the page is no longer in the category after template deletion'
                );
-
        }
 }
index 6da16a0..3ad16d1 100644 (file)
@@ -195,7 +195,6 @@ class ApiContinuationManagerTest extends MediaWikiTestCase {
                                'Expected exception'
                        );
                }
-
        }
 
 }
index 48472cf..98e24fb 100644 (file)
@@ -1230,7 +1230,6 @@ class ApiResultTest extends MediaWikiTestCase {
                                ],
                        ],
                ];
-
        }
 
        /**
@@ -1380,7 +1379,6 @@ class ApiResultTest extends MediaWikiTestCase {
                        'two' => 2,
                ], $arr['foo'] );
        }
-
 }
 
 class ApiResultTestStringifiableObject {
index 6359983..d8282be 100644 (file)
@@ -25,7 +25,6 @@ class ApiRevisionDeleteTest extends ApiTestCase {
                        $this->revs[] = Title::newFromText( self::$page )
                                ->getLatestRevID( Title::GAID_FOR_UPDATE );
                }
-
        }
 
        public function testHidingRevisions() {
index 13486e2..f57db11 100644 (file)
@@ -695,7 +695,6 @@ class AuthManagerTest extends \MediaWikiTestCase {
                                $ex->getMessage()
                        );
                }
-
        }
 
        public function testBeginAuthentication() {
@@ -3265,7 +3264,6 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->manager->removeAuthenticationSessionData( null );
                $this->assertNull( $this->manager->getAuthenticationSessionData( 'foo' ) );
                $this->assertNull( $this->manager->getAuthenticationSessionData( 'bar' ) );
-
        }
 
        public function testCanLinkAccounts() {
index c52c3e9..ec4bea1 100644 (file)
@@ -104,6 +104,5 @@ class EmailNotificationSecondaryAuthenticationProviderTest extends \PHPUnit_Fram
                $authManager->setAuthenticationSessionData( 'no-email', true );
                $provider->setManager( $authManager );
                $provider->beginSecondaryAccountCreation( $userNotExpectsConfirmation, $creator, [] );
-
        }
 }
index 088dd00..caf1680 100644 (file)
@@ -328,7 +328,6 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCase
                        AuthenticationResponse::newPass( $userName ),
                        $provider->beginPrimaryAuthentication( $reqs )
                );
-
        }
 
        /**
@@ -645,7 +644,6 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCase
                $this->assertNull( $provider->finishAccountCreation( $user, $user, $res2 ) );
                $ret = $provider->beginPrimaryAuthentication( $reqs );
                $this->assertEquals( AuthenticationResponse::PASS, $ret->status, 'new password is set' );
-
        }
 
 }
index bc78c08..d4ebe34 100644 (file)
@@ -347,7 +347,6 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestC
                        'wrongpassword',
                        $ret->message->getKey()
                );
-
        }
 
        /**
index 7fe3351..7dea123 100644 (file)
@@ -36,7 +36,6 @@ class UserDataAuthenticationRequestTest extends AuthenticationRequestTestCase {
                        $this->assertSame( $email ?: 'default@example.com', $user->getEmail() );
                        $this->assertSame( $realname ?: 'Fake Name', $user->getRealName() );
                }
-
        }
 
        public static function providePopulateUser() {
index 0e87ffa..7c36f7d 100644 (file)
@@ -173,7 +173,6 @@ class MWExceptionTest extends MediaWikiTestCase {
         * @dataProvider provideJsonSerializedKeys
         */
        public function testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key ) {
-
                # Make sure we log a backtrace:
                $this->setMwGlobals( [ 'wgLogExceptionBacktrace' => true ] );
 
@@ -235,7 +234,6 @@ class MWExceptionTest extends MediaWikiTestCase {
                        MWExceptionHandler::jsonSerializeException( new Exception() )
                );
                $this->assertObjectNotHasAttribute( 'backtrace', $json );
-
        }
 
 }
index 70c0ece..6d096c2 100644 (file)
@@ -24,7 +24,6 @@ class LinkRendererTest extends MediaWikiLangTestCase {
                        'wgScript' => '/w/index.php',
                ] );
                $this->factory = MediaWikiServices::getInstance()->getLinkRendererFactory();
-
        }
 
        public function testMergeAttribs() {
index f70b42d..47ed67b 100644 (file)
@@ -17,7 +17,6 @@ class ExifBitmapTest extends MediaWikiMediaTestCase {
                $this->setMwGlobals( 'wgShowEXIF', true );
 
                $this->handler = new ExifBitmapHandler;
-
        }
 
        /**
index 4cbeeb9..8284d05 100644 (file)
@@ -138,7 +138,6 @@ class SessionProviderTest extends MediaWikiTestCase {
                                $ex->getMessage()
                        );
                }
-
        }
 
        public function testHashToSessionId() {
index 3815416..e6a6ad3 100644 (file)
@@ -299,7 +299,6 @@ class SessionTest extends MediaWikiTestCase {
 
                $session->resetAllTokens();
                $this->assertArrayNotHasKey( 'wsTokenSecrets', $backend->data );
-
        }
 
        /**
index 34548c0..199fc8f 100644 (file)
@@ -269,7 +269,6 @@ class UserTest extends MediaWikiTestCase {
                // let the user have a few (3) edits
                $page = WikiPage::factory( Title::newFromText( 'Help:UserTest_EditCount' ) );
                for ( $i = 0; $i < 3; $i++ ) {
-
                        $page->doEditContent(
                                ContentHandler::makeContent( (string)$i, $page->getTitle() ),
                                'test',
@@ -505,7 +504,6 @@ class UserTest extends MediaWikiTestCase {
        public function testGetId() {
                $user = static::getTestUser()->getUser();
                $this->assertTrue( $user->getId() > 0 );
-
        }
 
        /**