Merge "Prevent new users from being sent emails"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 8 Dec 2017 23:34:49 +0000 (23:34 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 8 Dec 2017 23:34:49 +0000 (23:34 +0000)
1  2 
includes/DefaultSettings.php
includes/user/User.php
languages/i18n/en.json
languages/i18n/qqq.json

   * @file
   */
  
 -/**
 - * @defgroup Globalsettings Global settings
 - */
 -
  /**
   * @cond file_level_code
   * This is not a valid entry point, perform no further processing unless
@@@ -1806,7 -1810,7 +1806,7 @@@ $wgDBtype = 'mysql'
  /**
   * Whether to use SSL in DB connection.
   *
 - * This setting is only used $wgLBFactoryConf['class'] is set to
 + * This setting is only used if $wgLBFactoryConf['class'] is set to
   * 'LBFactorySimple' and $wgDBservers is an empty array; otherwise
   * the DBO_SSL flag must be set in the 'flags' option of the database
   * connection to achieve the same functionality.
@@@ -2550,8 -2554,6 +2550,8 @@@ $wgGitInfoCacheDirectory = false
   * It should be appended in the query string of static CSS and JS includes,
   * to ensure that client-side caches do not keep obsolete copies of global
   * styles.
 + *
 + * @deprecated since 1.31
   */
  $wgStyleVersion = '303';
  
@@@ -3681,6 -3683,23 +3681,6 @@@ $wgResourceLoaderMaxage = 
   */
  $wgResourceLoaderDebug = false;
  
 -/**
 - * Put each statement on its own line when minifying JavaScript. This makes
 - * debugging in non-debug mode a bit easier.
 - *
 - * @deprecated since 1.27: Always false; no longer configurable.
 - */
 -$wgResourceLoaderMinifierStatementsOnOwnLine = false;
 -
 -/**
 - * Maximum line length when minifying JavaScript. This is not a hard maximum:
 - * the minifier will try not to produce lines longer than this, but may be
 - * forced to do so in certain cases.
 - *
 - * @deprecated since 1.27: Always 1,000; no longer configurable.
 - */
 -$wgResourceLoaderMinifierMaxLineLength = 1000;
 -
  /**
   * Whether to ensure the mediawiki.legacy library is loaded before other modules.
   *
@@@ -4831,7 -4850,6 +4831,7 @@@ $wgReservedUsernames = 
        'msg:double-redirect-fixer', // Automatic double redirect fix
        'msg:usermessage-editor', // Default user for leaving user messages
        'msg:proxyblocker', // For $wgProxyList and Special:Blockme (removed in 1.22)
 +      'msg:sorbs', // For $wgEnableDnsBlacklist etc.
        'msg:spambot_username', // Used by cleanupSpam.php
        'msg:autochange-username', // Used by anon category RC entries (parser functions, Lua & purges)
  ];
@@@ -4863,6 -4881,7 +4863,6 @@@ $wgDefaultUserOptions = 
        'hidepatrolled' => 0,
        'hidecategorization' => 1,
        'imagesize' => 2,
 -      'math' => 1,
        'minordefault' => 0,
        'newpageshidepatrolled' => 0,
        'nickname' => '',
@@@ -5147,6 -5166,7 +5147,7 @@@ $wgGroupPermissions['user']['sendemail'
  $wgGroupPermissions['user']['applychangetags'] = true;
  $wgGroupPermissions['user']['changetags'] = true;
  $wgGroupPermissions['user']['editcontentmodel'] = true;
+ $wgGroupPermissions['user']['sendemail-new-users'] = true;
  
  // Implicit group for accounts that pass $wgAutoConfirmAge
  $wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true;
@@@ -6942,29 -6962,6 +6943,29 @@@ $wgAllowCategorizedRecentChanges = fals
   */
  $wgUseTagFilter = true;
  
 +/**
 + * List of core tags to enable. Available tags are:
 + * - 'mw-contentmodelchange': Edit changes content model of a page
 + * - 'mw-new-redirect': Edit makes new redirect page (new page or by changing content page)
 + * - 'mw-removed-redirect': Edit changes an existing redirect into a non-redirect
 + * - 'mw-changed-redirect-target': Edit changes redirect target
 + * - 'mw-blank': Edit completely blanks the page
 + * - 'mw-replace': Edit removes more than 90% of the content
 + * - 'mw-rollback': Edit is a rollback, made through the rollback link or rollback API
 + *
 + * @var array
 + * @since 1.31
 + */
 +$wgSoftwareTags = [
 +      'mw-contentmodelchange' => true,
 +      'mw-new-redirect' => true,
 +      'mw-removed-redirect' => true,
 +      'mw-changed-redirect-target' => true,
 +      'mw-blank' => true,
 +      'mw-replace' => true,
 +      'mw-rollback' => true
 +];
 +
  /**
   * If set to an integer, pages that are watched by this many users or more
   * will not require the unwatchedpages permission to view the number of
@@@ -7432,7 -7429,6 +7433,7 @@@ $wgJobClasses = 
        'refreshLinksDynamic' => 'RefreshLinksJob',
        'activityUpdateJob' => 'ActivityUpdateJob',
        'categoryMembershipChange' => 'CategoryMembershipChangeJob',
 +      'clearUserWatchlist' => 'ClearUserWatchlistJob',
        'cdnPurge' => 'CdnPurgeJob',
        'enqueue' => 'EnqueueJob', // local queue for multi-DC setups
        'null' => 'NullJob'
@@@ -8275,22 -8271,6 +8276,22 @@@ $wgPhpCli = '/usr/bin/php'
   */
  $wgShellLocale = 'C.UTF-8';
  
 +/**
 + * Method to use to restrict shell commands
 + *
 + * Supported options:
 + * - 'autodetect': Autodetect if any restriction methods are available
 + * - 'firejail': Use firejail <https://firejail.wordpress.com/>
 + * - false: Don't use any restrictions
 + *
 + * @note If using firejail with MediaWiki running in a home directory different
 + *  from the webserver user, firejail 0.9.44+ is required.
 + *
 + * @since 1.31
 + * @var string|bool
 + */
 +$wgShellRestrictionMethod = false;
 +
  /** @} */ # End shell }
  
  /************************************************************************//**
diff --combined includes/user/User.php
@@@ -27,7 -27,6 +27,7 @@@ use MediaWiki\Session\Token
  use MediaWiki\Auth\AuthManager;
  use MediaWiki\Auth\AuthenticationResponse;
  use MediaWiki\Auth\AuthenticationRequest;
 +use MediaWiki\User\UserIdentity;
  use Wikimedia\ScopedCallback;
  use Wikimedia\Rdbms\Database;
  use Wikimedia\Rdbms\DBExpectedError;
@@@ -49,7 -48,7 +49,7 @@@ define( 'EDIT_TOKEN_SUFFIX', Token::SUF
   * for rendering normal pages are set in the cookie to minimize use
   * of the database.
   */
 -class User implements IDBAccessObject {
 +class User implements IDBAccessObject, UserIdentity {
        /**
         * @const int Number of characters in user_token field.
         */
                'reupload-shared',
                'rollback',
                'sendemail',
+               'sendemail-new-users',
                'siteadmin',
                'suppressionlog',
                'suppressredirect',
diff --combined languages/i18n/en.json
        "botpasswords-insert-failed": "Failed to add bot name \"$1\". Was it already added?",
        "botpasswords-update-failed": "Failed to update bot name \"$1\". Was it deleted?",
        "botpasswords-created-title": "Bot password created",
 -      "botpasswords-created-body": "The bot password for bot name \"$1\" of user \"$2\" was created.",
 +      "botpasswords-created-body": "The bot password for bot name \"$1\" of {{GENDER:$2|user}} \"$2\" was created.",
        "botpasswords-updated-title": "Bot password updated",
 -      "botpasswords-updated-body": "The bot password for bot name \"$1\" of user \"$2\" was updated.",
 +      "botpasswords-updated-body": "The bot password for bot name \"$1\" of {{GENDER:$2|user}} \"$2\" was updated.",
        "botpasswords-deleted-title": "Bot password deleted",
 -      "botpasswords-deleted-body": "The bot password for bot name \"$1\" of user \"$2\" was deleted.",
 +      "botpasswords-deleted-body": "The bot password for bot name \"$1\" of {{GENDER:$2|user}} \"$2\" was deleted.",
        "botpasswords-newpassword": "The new password to log in with <strong>$1</strong> is <strong>$2</strong>. <em>Please record this for future reference.</em> <br> (For old bots which require the login name to be the same as the eventual username, you can also use <strong>$3</strong> as username and <strong>$4</strong> as password.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider is not available.",
        "botpasswords-restriction-failed": "Bot password restrictions prevent this login.",
        "diff-multi-sameuser": "({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by the same user not shown)",
        "diff-multi-otherusers": "({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one other user|$2 users}} not shown)",
        "diff-multi-manyusers": "({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by more than $2 {{PLURAL:$2|user|users}} not shown)",
 +      "diff-paragraph-moved-tonew": "Paragraph was moved. Click to jump to new location.",
 +      "diff-paragraph-moved-toold": "Paragraph was moved. Click to jump to old location.",
        "difference-missing-revision": "{{PLURAL:$2|One revision|$2 revisions}} of this difference ($1) {{PLURAL:$2|was|were}} not found.\n\nThis is usually caused by following an outdated diff link to a page that has been deleted.\nDetails can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
        "search-summary": "",
        "searchresults": "Search results",
        "right-siteadmin": "Lock and unlock the database",
        "right-override-export-depth": "Export pages including linked pages up to a depth of 5",
        "right-sendemail": "Send email to other users",
+       "right-sendemail-new-users": "Send email to users with no logged actions",
        "right-managechangetags": "Create and (de)activate [[Special:Tags|tags]]",
        "right-applychangetags": "Apply [[Special:Tags|tags]] along with one's changes",
        "right-changetags": "Add and remove arbitrary [[Special:Tags|tags]] on individual revisions and log entries",
        "recentchanges-noresult": "No changes during the given period match these criteria.",
        "recentchanges-timeout": "This search has timed out. You may wish to try different search parameters.",
        "recentchanges-network": "Due to a technical error, no results could be loaded. Please try refreshing the page.",
 +      "recentchanges-notargetpage": "Enter a page name above to see changes related to that page.",
        "recentchanges-feed-description": "Track the most recent changes to the wiki in this feed.",
        "recentchanges-label-newpage": "This edit created a new page",
        "recentchanges-label-minor": "This is a minor edit",
        "rcfilters-legend-heading": "<strong>List of abbreviations:</strong>",
        "rcfilters-other-review-tools": "Other review tools",
        "rcfilters-group-results-by-page": "Group results by page",
 -      "rcfilters-grouping-title": "Grouping",
        "rcfilters-activefilters": "Active filters",
        "rcfilters-advancedfilters": "Advanced filters",
 -      "rcfilters-limit-title": "Changes to show",
 -      "rcfilters-limit-shownum": "Show last {{PLURAL:$1|change|$1 changes}}",
 +      "rcfilters-limit-title": "Results to show",
 +      "rcfilters-limit-and-date-label": "{{PLURAL:$1|change|$1 changes}}, $2",
 +      "rcfilters-date-popup-title": "Time period to search",
        "rcfilters-days-title": "Recent days",
        "rcfilters-hours-title": "Recent hours",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|day|days}}",
        "rcfilters-watchlist-showupdated": "Changes to pages you haven't visited since the changes occurred are in <strong>bold</strong>, with solid markers.",
        "rcfilters-preference-label": "Hide the improved version of Recent Changes",
        "rcfilters-preference-help": "Rolls back the 2017 interface redesign and all tools added then and since.",
 +      "rcfilters-filter-showlinkedfrom-label": "Show changes on pages linked from",
 +      "rcfilters-filter-showlinkedfrom-option-label": "Show changes on pages linked <strong>FROM</strong> a page",
 +      "rcfilters-filter-showlinkedto-label": "Show changes on pages linked to",
 +      "rcfilters-filter-showlinkedto-option-label": "Show changes on pages linked <strong>TO</strong> a page",
 +      "rcfilters-target-page-placeholder": "Enter a page name",
        "rcnotefrom": "Below {{PLURAL:$5|is the change|are the changes}} since <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Reset date selection",
        "rclistfrom": "Show new changes starting from $2, $3",
        "recentchangeslinked-feed": "Related changes",
        "recentchangeslinked-toolbox": "Related changes",
        "recentchangeslinked-title": "Changes related to \"$1\"",
 -      "recentchangeslinked-summary": "This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).\nPages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.",
 +      "recentchangeslinked-summary": "Enter a page name to see changes on pages linked to or from that page. (To see members of a category, enter Category:Name of category). Changes to pages on [[Special:Watchlist|your Watchlist]] are in <strong>bold</strong>.",
        "recentchangeslinked-page": "Page name:",
        "recentchangeslinked-to": "Show changes to pages linked to the given page instead",
        "recentchanges-page-added-to-category": "[[:$1]] added to category",
        "import-mapping-namespace": "Import to a namespace:",
        "import-mapping-subpage": "Import as subpages of the following page:",
        "import-upload-filename": "Filename:",
 +      "import-upload-username-prefix": "Interwiki prefix:",
 +      "import-assign-known-users": "Assign edits to local users where the named user exists locally",
        "import-comment": "Comment:",
        "importtext": "Please export the file from the source wiki using the [[Special:Export|export utility]].\nSave it to your computer and upload it here.",
        "importstart": "Importing pages...",
        "imported-log-entries": "Imported $1 {{PLURAL:$1|log entry|log entries}}.",
        "importfailed": "Import failed: <nowiki>$1</nowiki>",
        "importunknownsource": "Unknown import source type",
 +      "importnoprefix": "No interwiki prefix was supplied",
        "importcantopen": "Could not open import file",
        "importbadinterwiki": "Bad interwiki link",
        "importsuccess": "Import finished!",
        "variantname-uz": "uz",
        "variantname-uz-latn": "uz-Latn",
        "variantname-uz-cyrl": "uz-Cyrl",
 +      "variantname-crh": "crh",
 +      "variantname-crh-latn": "crh-Latn",
 +      "variantname-crh-cyrl": "crh-Cyrl",
        "metadata": "Metadata",
        "metadata-help": "This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.\nIf the file has been modified from its original state, some details may not fully reflect the modified file.",
        "metadata-expand": "Show extended details",
        "autosumm-blank": "Blanked the page",
        "autosumm-replace": "Replaced content with \"$1\"",
        "autoredircomment": "Redirected page to [[$1]]",
 +      "autosumm-removed-redirect": "Removed redirect to [[$1]]",
 +      "autosumm-changed-redirect-target": "Changed redirect target from [[$1]] to [[$2]]",
        "autosumm-new": "Created page with \"$1\"",
        "autosumm-newblank": "Created blank page",
        "autoblock_whitelist": "",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
        "tag-mw-contentmodelchange": "content model change",
        "tag-mw-contentmodelchange-description": "Edits that [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel change the content model] of a page",
 +      "tag-mw-new-redirect": "New redirect",
 +      "tag-mw-new-redirect-description": "Edits that create a new redirect or change a page to a redirect",
 +      "tag-mw-removed-redirect": "Removed redirect",
 +      "tag-mw-removed-redirect-description": "Edits that change an existing redirect to a non-redirect",
 +      "tag-mw-changed-redirect-target": "Redirect target changed",
 +      "tag-mw-changed-redirect-target-description": "Edits that change the target of a redirect",
 +      "tag-mw-blank": "Blanking",
 +      "tag-mw-blank-description": "Edits that blank a page",
 +      "tag-mw-replace": "Replaced",
 +      "tag-mw-replace-description": "Edits that remove more than 90% of the content of a page",
 +      "tag-mw-rollback": "Rollback",
 +      "tag-mw-rollback-description": "Edits that roll back previous edits using the rollback link",
        "tags-title": "Tags",
        "tags-intro": "This page lists the tags that the software may mark an edit with, and their meaning.",
        "tags-tag": "Tag name",
diff --combined languages/i18n/qqq.json
                        "Mainframe98",
                        "Pginer",
                        "Wladek92",
 -                      "Gombang"
 +                      "Gombang",
 +                      "Trizek (WMF)"
                ]
        },
        "sidebar": "{{notranslate}}",
        "diff-multi-sameuser": "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and the intermediate revisions were all created by the same user as the new revision.\n\nParameters:\n* $1 - the number of revisions\n{{Related|Diff-multi}}",
        "diff-multi-otherusers": "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and at least one of the intermediate revisions was created by a user other than the user who created the new revision.\n\nParameters:\n* $1 - the number of revisions\n* $2 - the number of distinct other users who made those revisions\n{{Related|Diff-multi}}",
        "diff-multi-manyusers": "This message appears in the revision history of a page when comparing two versions which aren't consecutive, and the intermediate revisions have been edited by more than 100 users.\n\nParameters:\n* $1 - the number of revisions, will always be 101 or more\n* $2 - the number of users that were found, which was limited at 100\n{{Related|Diff-multi}}",
 +      "diff-paragraph-moved-tonew": "Explaining title tag for the indicating symbols when a paragraph was moved hinting to the new location in the Diff view.",
 +      "diff-paragraph-moved-toold": "Explaining title tag for the indicating symbols when a paragraph was moved hinting to the old location in the Diff view.",
        "difference-missing-revision": "Text displayed when the requested revision does not exist using a diff link.\n\nExample: [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with invalid revision#]\n\nParameters:\n* $1 - the list of missing revisions IDs\n* $2 - the number of items in $1 (one or two)",
        "search-summary": "{{doc-specialpagesummary|search}}",
        "searchresults": "This is the title of the page that contains the results of a search.\n\n{{Identical|Search results}}",
        "right-siteadmin": "{{doc-right|siteadmin}}",
        "right-override-export-depth": "{{doc-right|override-export-depth}}",
        "right-sendemail": "{{doc-right|sendemail}}",
+       "right-sendemail-new-users": "{{doc-right|sendemail-new-users}}",
        "right-managechangetags": "{{doc-right|managechangetags}}",
        "right-applychangetags": "{{doc-right|applychangetags}}",
        "right-changetags": "{{doc-right|changetags}}",
        "recentchanges-noresult": "Used in [[Special:RecentChanges]], [[Special:RecentChangesLinked]], and [[Special:Watchlist]] when there are no changes to be shown.",
        "recentchanges-timeout": "Used in [[Special:RecentChanges]], [[Special:RecentChangesLinked]], and [[Special:Watchlist]] when a query times out.",
        "recentchanges-network": "Used in [[Special:RecentChanges]], [[Special:RecentChangesLinked]] and [[Special:Watchlist]] when network error occurs.",
 +      "recentchanges-notargetpage": "Used in [[Special:RecentChangesLinked]] to explain why no results are shown when no target page is specified.",
        "recentchanges-feed-description": "Used in feed of RecentChanges. See example [{{canonicalurl:Special:RecentChanges|feed=atom}} feed].",
        "recentchanges-label-newpage": "# Used as tooltip for {{msg-mw|Newpageletter}}.\n# Also used as legend. Preceded by {{msg-mw|Newpageletter}} and followed by {{msg-mw|Recentchanges-legend-newpage}}.",
        "recentchanges-label-minor": "# Used as tooltip for {{msg-mw|Minoreditletter}}\n# Also used as legend. Preceded by {{msg-mw|Minoreditletter}}",
        "rcfilters-legend-heading": "Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]] when RCFilters are enabled.",
        "rcfilters-other-review-tools": "Used as a heading for the community collection of other links on [[Special:RecentChanges]] when RCFilters are enabled.",
        "rcfilters-group-results-by-page": "A label for the checkbox describing whether the results in [[Special:RecentChanges]] are grouped by page when RCFilters are enabled.",
 -      "rcfilters-grouping-title": "Title for the section showing display options for grouping results in [[Special:RecentChanges]] when RCFilters are enabled.",
        "rcfilters-activefilters": "Title for the filters selection showing the active filters.",
        "rcfilters-advancedfilters": "Title for the buttons allowing the user to switch to the various advanced filters views.",
        "rcfilters-limit-title": "Title for the options to change the number of results shown.",
 -      "rcfilters-limit-shownum": "Title for the button that opens the operation to control how many results are shown. \n\nParameters: $1 - Number of results shown",
 +      "rcfilters-limit-and-date-label": "Title for the button that opens the operation to control how many results to show and in which time period to search. \n\nParameters: $1 - Number of results shown\n\n$2 - Time period to search. One of {{msg-mw|rcfilters-days-title}} or {{msg-mw|rcfilters-hours-title}} is used as $2",
 +      "rcfilters-date-popup-title": "Section title of date options on recent changes results",
        "rcfilters-days-title": "Title for the options to change the number of days for the results shown.",
        "rcfilters-hours-title": "Title for the options to change the number of hours for the results shown.",
        "rcfilters-days-show-days": "Title for the button that opens the operation to control the day range for the results. \n\nParameters: $1 - Number of days shown\n{{Identical|Day}}",
        "rcfilters-filter-user-experience-level-unregistered-label": "Label for the filter for showing edits made by anonymous editors.",
        "rcfilters-filter-user-experience-level-unregistered-description": "Description for the filter for showing edits made by anonymous editors.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Label for the filter for showing edits made by new editors.",
 -      "rcfilters-filter-user-experience-level-newcomer-description": "Description for the filter for showing edits made by new editors.",
 +      "rcfilters-filter-user-experience-level-newcomer-description": "Description for the filter for showing edits made by new editors. The user has created the account less than 4 days ago (4th day included) ''or'' has made less than 10 edits (10 included).",
        "rcfilters-filter-user-experience-level-learner-label": "Label for the filter for showing edits made by learning editors.",
        "rcfilters-filter-user-experience-level-learner-description": "Description for the filter for showing edits made by learning editors.",
        "rcfilters-filter-user-experience-level-experienced-label": "Label for the filter for showing edits made by experienced editors.",
        "rcfilters-filter-watchlistactivity-seen-label": "Label for seen changes in the watchlist activity filter group.",
        "rcfilters-filter-watchlistactivity-seen-description": "Description for seen changes in the watchlist activity filter group.",
        "rcfilters-filtergroup-changetype": "Title for the filter group for edit type.",
 -      "rcfilters-filter-pageedits-label": "Label for the filter for showing edits to existing pages.",
 +      "rcfilters-filter-pageedits-label": "Label for the filter for showing the edits to existing pages.",
        "rcfilters-filter-pageedits-description": "Description for the filter for showing edits to existing pages.",
 -      "rcfilters-filter-newpages-label": "Label for the filter for showing edits that create a page.",
 +      "rcfilters-filter-newpages-label": "Label for the filter for showing the edits that create a page.",
        "rcfilters-filter-newpages-description": "Description for the filter for showing edits that create a page.",
        "rcfilters-filter-categorization-label": "Label for the filter for showing edits adding or removing pages to categories.",
        "rcfilters-filter-categorization-description": "Description for the filter for showing edits adding or removing pages to categories.",
        "rcfilters-watchlist-showupdated": "Message at the top of [[Special:Watchlist]] when the Structured filters are enabled that describes what unseen changes look like.\n\nCf. {{msg-mw|wlheader-showupdated}}",
        "rcfilters-preference-label": "Option in RecentChanges tab of [[Special:Preferences]].",
        "rcfilters-preference-help": "Explanation for the option in the RecentChanges tab of [[Special:Preferences]].",
 +      "rcfilters-filter-showlinkedfrom-label": "Label that indicates that the page is showing changes that link FROM the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.",
 +      "rcfilters-filter-showlinkedfrom-option-label": "Menu option to show changes FROM the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.",
 +      "rcfilters-filter-showlinkedto-label": "Label that indicates that the page is showing changes that link TO the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.",
 +      "rcfilters-filter-showlinkedto-option-label": "Menu option to show changes TO the target page. Used on [[Special:Recentchangeslinked]] when structured filters are enabled.",
 +      "rcfilters-target-page-placeholder": "Placeholder text for the title lookup [[Special:Recentchangeslinked]] when structured filters are enabled.",
        "rcnotefrom": "This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.\n\nThe corresponding message is {{msg-mw|Rclistfrom}}.\n\nParameters:\n* $1 - the maximum number of changes that are displayed\n* $2 - (Optional) a date and time\n* $3 - a date\n* $4 - a time\n* $5 - Number of changes are displayed, for use with PLURAL",
        "rclistfromreset": "Used on [[Special:RecentChanges]] to reset a selection of a certain date range.",
        "rclistfrom": "Used on [[Special:RecentChanges]]. Parameters:\n* $1 - (Currently not use) date and time. The date and the time adds to the rclistfrom description.\n* $2 - time. The time adds to the rclistfrom link description (with split of date and time).\n* $3 - date. The date adds to the rclistfrom link description (with split of date and time).\n\nThe corresponding message is {{msg-mw|Rcnotefrom}}.",
        "uploadstash-bad-path-invalid": "Error message when the upload stash path is invalid.",
        "uploadstash-bad-path-unknown-type": "Error message when the upload stash key is of an invalid type.\n\nParameters:\n* $1 - the type",
        "uploadstash-bad-path-unrecognized-thumb-name": "Error message when the upload stash key is of an unrecognized thumbnail",
 -      "uploadstash-bad-path-no-handler": "Error message when no handler can be found for the given upload stash key.\n\nParameters:\n* $1 - the mine type\n* $2 - the file path",
 +      "uploadstash-bad-path-no-handler": "Error message when no handler can be found for the given upload stash key.\n\nParameters:\n* $1 - the MIME type\n* $2 - the file path",
        "uploadstash-bad-path-bad-format": "Error message when the upload stash key if formatted incorrectly.\n\nParameters:\n* $1 - the stash key",
        "uploadstash-file-not-found": "Error message when a stashed file can't be found.\n\nParameters:\n* $1 - the stash key",
        "uploadstash-file-not-found-no-thumb": "Error message when no thumbnail could be generated.",
        "enotif_lastvisited": "Parameters:\n* $1 - a URL which points to diff\nSee also:\n* {{msg-mw|Enotif lastdiff}}",
        "enotif_lastdiff": "Email notification text to the latest page differences. Parameters:\n* $1 - a link which points to a diff, shown as a plain link\nSee also:\n* {{msg-mw|Enotif lastvisited}}",
        "enotif_anon_editor": "User name in an email notification when referring to an anonymous user. Parameters:\n* $1 - the anonymous user name (i.e. an IP address).",
 -      "enotif_body": "Text of a notification email sent when a watched page has been edited or deleted.\n[[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]\n\nRefers to {{msg-mw|Helppage}}.\n\nParameters:\n*$WATCHINGUSERNAME is the username of the user receiving the notification.\n*$PAGEINTRO is the first line of the message, saying what happened. It currently can be either of:\n**{{msg-mw|Enotif body intro deleted}}\n**{{msg-mw|Enotif body intro created}}\n**{{msg-mw|Enotif body intro moved}}\n**{{msg-mw|Enotif body intro restored}}\n**{{msg-mw|Enotif body intro changed}} (for all the other cases).\n*$NEWPAGE consists of either\n**if the page is new (in older releases), {{msg-mw|Enotif newpagetext}}\n**if the page has a previous revision,\n***{{msg-mw|Enotif lastdiff}}\n***a newline\n***{{msg-mw|Enotif lastvisited}}\n*$PAGEEDITOR_EMAIL and $PAGEEDITOR_WIKI are links respectively to the email user special page and user page for the user who performed the action.\n*$PAGEEDITOR is the username of the user who performed the action.\n*$HELPPAGE is the full URL to the help page, defined by {{msg-mw|helppage}}.\n\nThe subject of the email is one of the following messages:\n*{{msg-mw|Enotif subject deleted}}\n*{{msg-mw|Enotif subject created}}\n*{{msg-mw|Enotif subject moved}}\n*{{msg-mw|Enotif subject restored}}\n*{{msg-mw|Enotif subject changed}}",
 +      "enotif_body": "{{doc-important|Neither PLURAL nor GENDER are actually supported at the moment, at least until [[phab:T24769]] got resolved.}}\nText of a notification email sent when a watched page has been edited or deleted.\n[[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]\n\nRefers to {{msg-mw|Helppage}}.\n\nParameters:\n*$WATCHINGUSERNAME is the username of the user receiving the notification.\n*$PAGEINTRO is the first line of the message, saying what happened. It currently can be either of:\n**{{msg-mw|Enotif body intro deleted}}\n**{{msg-mw|Enotif body intro created}}\n**{{msg-mw|Enotif body intro moved}}\n**{{msg-mw|Enotif body intro restored}}\n**{{msg-mw|Enotif body intro changed}} (for all the other cases).\n*$NEWPAGE consists of either\n**if the page is new (in older releases), {{msg-mw|Enotif newpagetext}}\n**if the page has a previous revision,\n***{{msg-mw|Enotif lastdiff}}\n***a newline\n***{{msg-mw|Enotif lastvisited}}\n*$PAGEEDITOR_EMAIL and $PAGEEDITOR_WIKI are links respectively to the email user special page and user page for the user who performed the action.\n*$PAGEEDITOR is the username of the user who performed the action.\n*$HELPPAGE is the full URL to the help page, defined by {{msg-mw|helppage}}.\n\nThe subject of the email is one of the following messages:\n*{{msg-mw|Enotif subject deleted}}\n*{{msg-mw|Enotif subject created}}\n*{{msg-mw|Enotif subject moved}}\n*{{msg-mw|Enotif subject restored}}\n*{{msg-mw|Enotif subject changed}}",
        "enotif_minoredit": "Possible value (it's empty string for non-minor edits) in the {{msg-mw|Enotif body|notext=1}} message.  This can use magic words like <nowiki>{{GRAMMAR}}</nowiki>.  However, it will not be parsed, so you can not use wikitext (e.g. links) that generates HTML.\n{{Identical|minoredit}}",
        "created": "{{Optional}}\nPossible value for $CHANGEDORCREATED in the following messages:\n* {{msg-mw|enotif_subject}}\n* {{msg-mw|enotif_body}}\n{{Identical|Created}}",
        "changed": "{{Optional}}\nPossible value for $CHANGEDORCREATED in the following messages:\n* {{msg-mw|Enotif subject}}\n* {{msg-mw|Enotif body}}",
        "import-mapping-namespace": "Used as label for the second of three radio buttons in Import form on [[Special:Import]]. The radio button is followed by a drop-down list from which the user can select a namespace.\n\nSee also:\n* {{msg-mw|Import-mapping-default}}\n* {{msg-mw|Import-mapping-subpage}}",
        "import-mapping-subpage": "Used as label for the third of three radio buttons in Import form on [[Special:Import]]. The radio button is followed by a text box in which the user can type a page name. The imported pages will be created as subpages of the entered page name.\n\nSee also:\n* {{msg-mw|Import-mapping-default}}\n* {{msg-mw|Import-mapping-namespace}}",
        "import-upload-filename": "Used on [[Special:Import]] as label for upload of an XML file containing the pages to import.\n{{Identical|Filename}}",
 +      "import-upload-username-prefix": "Used as label for input box in [[Special:Import]].",
 +      "import-assign-known-users": "Use as label for checkbox in [[Special:Import]].",
        "import-comment": "Used as label for input box in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-history}}\n* {{msg-mw|Import-interwiki-templates}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-interwiki-rootpage}}\n* {{msg-mw|Import-interwiki-submit}}\n{{Identical|Comment}}",
        "importtext": "Used in the Import form on [[Special:Import]].",
        "importstart": "Used in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Importsuccess}}\n* {{msg-mw|Importfailed}}",
        "imported-log-entries": "Used as success message. Parameters:\n* $1 - number of log items\nSee also:\n* {{msg-mw|Importnopages}} - fatal error message",
        "importfailed": "Used as error message in [[Special:Import]]. Parameters:\n* $1 - import source\nSee also:\n* {{msg-mw|Importstart}}\n* {{msg-mw|Importsuccess}}",
        "importunknownsource": "Used as error message in [[Special:Import]].\n\nSee also:\n* {{msg-mw|import-token-mismatch}}\n* {{msg-mw|import-invalid-interwiki}}\n* {{msg-mw|Importunknownsource}}",
 +      "importnoprefix": "Used as error message in [[Special:Import]]. Usually this error means that import via upload was attempted and the {{msg-mw|import-upload-username-prefix}} field was left empty.",
        "importcantopen": "Used as error message when importing from file or from URL.",
        "importbadinterwiki": "Used as error message when importing from interwiki.\n\nSee also:\n* {{msg-mw|Import-noarticle}}\n* {{msg-mw|Importbadinterwiki}}",
        "importsuccess": "Used in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Importstart}}\n* {{msg-mw|Importfailed}}",
        "variantname-sr-ec": "{{optional}}\nVariant Option for wikis with variants conversion enabled.\n\nNote that <code>sr-ec</code> is not a conforming BCP47 language tag. Wikis should be migrated by:\n* allowing it only as a legacy alias of the preferred tag <code>sr-cyrl</code> (possibly insert a tracking category in templates as long as they must support the legacy tag),\n* making the new tag the default to look first, before looking for the old tag,\n* moving the translations to the new code by renaming them,\n* checking links in source pages still using the legacy tag to change it to the new tag,\n* possibly cleanup the redirect pages.",
        "variantname-sr-el": "{{optional}}\nVariant Option for wikis with variants conversion enabled.\n\nNote that <code>sr-el</code> is not a conforming BCP47 language tag. Wikis should be migrated by:\n* allowing it only as a legacy alias of the preferred tag <code>sr-latn</code> (possibly insert a tracking category in templates as long as they must support the legacy tag),\n* making the new tag the default to look first, before looking for the old tag,\n* moving the translations to the new code by renaming them,\n* checking links in source pages still using the legacy tag to change it to the new tag,\n* possibly cleanup the redirect pages.",
        "variantname-sr": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 -      "variantname-kk-kz": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-kk-tr": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-kk-cn": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-kk-cyrl": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-kk-latn": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-kk-arab": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-kk": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-ku-arab": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-ku-latn": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 -      "variantname-ku": "{{optional}}\nVarient Option for wikis with variants conversion enabled.",
 +      "variantname-kk-kz": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-kk-tr": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-kk-cn": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-kk-cyrl": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-kk-latn": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-kk-arab": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-kk": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-ku-arab": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-ku-latn": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-ku": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
        "variantname-tg-cyrl": "{{optional}}",
        "variantname-tg-latn": "{{optional}}",
        "variantname-tg": "{{optional}}",
        "variantname-uz": "{{optional}}",
        "variantname-uz-latn": "{{optional}}",
        "variantname-uz-cyrl": "{{optional}}",
 +      "variantname-crh": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-crh-latn": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
 +      "variantname-crh-cyrl": "{{optional}}\nVariant Option for wikis with variants conversion enabled.",
        "metadata": "The title of a section on an image description page, with information and data about the image. For example of message in use see [[commons:File:Titan-crystal_bar.JPG|Commons]].\n{{Identical|Metadata}}",
        "metadata-help": "This message is followed by a table with metadata.",
        "metadata-expand": "On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see {{msg-mw|Metadata-collapse}}.",
        "autosumm-blank": "The auto summary when blanking the whole page. This is not the same as deleting the page.",
        "autosumm-replace": "The auto summary when a user removes a lot of characters in the page.\n\nParameters:\n* $1 - truncated text",
        "autoredircomment": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)\n{{Identical|Redirect}}",
 +      "autosumm-removed-redirect": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)",
 +      "autosumm-changed-redirect-target": "The auto summary when making a redirect. Parameters:\n* $1 - the page where it redirects to\n* $2 - (Optional) the first X number of characters of the redirect ($2 is usually only used when end users customize the message)",
        "autosumm-new": "The auto summary when creating a new page. $1 are the first X number of characters of the new page.",
        "autosumm-newblank": "The automatic edit summary when creating a blank page. This is not the same as blanking a page.",
        "autoblock_whitelist": "{{notranslate}}",
        "tag-list-wrapper": "Wrapper for the list of tags shown on recent changes, watchlists, history pages and diffs.\n\nParameters:\n* $1 - number of distinct tags for given edit\n* $2 - comma-separated list of tags for given edit",
        "tag-mw-contentmodelchange": "Change tag for edits that change the content model of a page",
        "tag-mw-contentmodelchange-description": "Description for \"content model change\" change tag",
 +      "tag-mw-new-redirect": "Change tag for edits that make the page a redirect (either redirect creation or editing an existing page)",
 +      "tag-mw-new-redirect-description": "Description for \"New redirect\" change tag",
 +      "tag-mw-removed-redirect": "Change tag for edits that change an existing redirect into a non-redirect",
 +      "tag-mw-removed-redirect-description": "Description for \"Removed redirect\" change tag",
 +      "tag-mw-changed-redirect-target": "Change tag for edits that change the target of a redirect",
 +      "tag-mw-changed-redirect-target-description": "Description for \"Redirect target changed\" change tag",
 +      "tag-mw-blank": "Change tag for edits that blank a page with existing content\n{{Identical|Blanking}}",
 +      "tag-mw-blank-description": "Description for \"blank\" change tag",
 +      "tag-mw-replace": "Change tag for edits removing more than 90% of the content of a page\n{{Identical|Replaced}}",
 +      "tag-mw-replace-description": "Description for \"replace\" change tag",
 +      "tag-mw-rollback": "Change tag for rolling back an edit\n{{Identical|Rollback}}",
 +      "tag-mw-rollback-description": "Description for \"rollback\" change tag",
        "tags-title": "The title of [[Special:Tags]].\n{{Identical|Tag}}",
        "tags-intro": "Explanation on top of [[Special:Tags]]. For more information on tags see [[mw:Manual:Tags|MediaWiki]].",
        "tags-tag": "Caption of a column in [[Special:Tags]]. For more information on tags see [[mw:Manual:Tags|MediaWiki]].",