Merge "Further cleanup to Special:Version"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 4 Jan 2014 02:08:51 +0000 (02:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 4 Jan 2014 02:08:51 +0000 (02:08 +0000)
1  2 
languages/messages/MessagesEn.php
languages/messages/MessagesQqq.php
maintenance/language/messages.inc
resources/Resources.php

@@@ -1233,7 -1233,6 +1233,7 @@@ No email will be sent for any of the fo
  Please enter a well-formatted address or empty that field.',
  'cannotchangeemail'               => 'Account email addresses cannot be changed on this wiki.',
  'emaildisabled'                   => 'This site cannot send emails.',
 +'emailsender'                     => '{{SITENAME}}', # do not translate or duplicate this message to other languages
  'accountcreated'                  => 'Account created',
  'accountcreatedtext'              => 'The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.',
  'createaccount-title'             => 'Account creation for {{SITENAME}}',
@@@ -1616,9 -1615,6 +1616,9 @@@ Please check the comparison below to ve
  
  # Account creation failure
  'cantcreateaccounttitle' => 'Cannot create account',
 +'cantcreateaccount-range-text' => "Account creation from IP addresses in the range '''$1''', which includes your IP address ('''$4'''), has been blocked by [[User:$3|$3]].
 +
 +The reason given by $3 is ''$2''",
  'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
  
  The reason given by $3 is ''$2''",
@@@ -1703,8 -1699,8 +1703,8 @@@ function, the specified revision does n
  Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
  'revdelete-confirm'           => 'Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
  'revdelete-suppress-text'     => "Suppression should '''only''' be used for the following cases:
 -* Potentially libelous information
 -* Inappropriate personal information
 +* potentially libelous information
 +* inappropriate personal information
  *: ''home addresses and telephone numbers, national identification numbers, etc.''",
  'revdelete-legend'            => 'Set visibility restrictions',
  'revdelete-hide-text'         => 'Revision text',
@@@ -2190,14 -2186,13 +2190,14 @@@ Your email address is not revealed whe
  'recentchanges-label-bot'           => 'This edit was performed by a bot',
  'recentchanges-label-unpatrolled'   => 'This edit has not yet been patrolled',
  'recentchanges-label-plusminus'     => 'The page size changed by this number of bytes',
 +'recentchanges-legend-heading'      => "'''Legend:'''",
  'recentchanges-legend-newpage'      => '(also see [[Special:NewPages|list of new pages]])',
  'recentchanges-legend-plusminus'    => "(''±123'')",
  'rcnotefrom'                        => "Below are the changes since '''$2''' (up to '''$1''' shown).",
  'rclistfrom'                        => 'Show new changes starting from $1',
  'rcshowhideminor'                   => '$1 minor edits',
  'rcshowhidebots'                    => '$1 bots',
 -'rcshowhideliu'                     => '$1 logged-in users',
 +'rcshowhideliu'                     => '$1 registered users',
  'rcshowhideanons'                   => '$1 anonymous users',
  'rcshowhidepatr'                    => '$1 patrolled edits',
  'rcshowhidemine'                    => '$1 my edits',
@@@ -2327,8 -2322,6 +2327,8 @@@ If you still want to upload your file, 
  'file-exists-duplicate'       => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
  'file-deleted-duplicate'      => "A file identical to this file ([[:$1]]) has previously been deleted.
  You should check that file's deletion history before proceeding to re-upload it.",
 +'file-deleted-duplicate-notitle' => "A file identical to this file has previously been deleted, and the title has been suppressed.
 +You should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.",
  'uploadwarning'               => 'Upload warning',
  'uploadwarning-text'          => 'Please modify the file description below and try again.',
  'savefile'                    => 'Save file',
@@@ -2755,7 -2748,6 +2755,7 @@@ It now redirects to [[$2]].'
  'protectedpages-indef'            => 'Indefinite protections only',
  'protectedpages-summary'          => '', # do not translate or duplicate this message to other languages
  'protectedpages-cascade'          => 'Cascading protections only',
 +'protectedpages-noredirect'       => 'Hide redirects',
  'protectedpagesempty'             => 'No pages are currently protected with these parameters.',
  'protectedtitles'                 => 'Protected titles',
  'protectedtitles-summary'         => '', # do not translate or duplicate this message to other languages
@@@ -3030,7 -3022,6 +3030,7 @@@ Feedback and further assistance
  'historywarning'         => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
  'confirmdeletetext'      => 'You are about to delete a page along with all of its history.
  Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
 +'deleting-backlinks-warning' => "'''Warning:''' Other pages link to the page you are about to delete.",
  'actioncomplete'         => 'Action complete',
  'actionfailed'           => 'Action failed',
  'deletedtext'            => '"$1" has been deleted.
@@@ -3372,7 -3363,7 +3372,7 @@@ See the [[Special:BlockList|block list]
  'ipb_expiry_invalid'              => 'Expiry time invalid.',
  'ipb_expiry_temp'                 => 'Hidden username blocks must be permanent.',
  'ipb_hide_invalid'                => 'Unable to suppress this account; it may have too many edits.',
 -'ipb_already_blocked'             => '"$1" is already blocked',
 +'ipb_already_blocked'             => '"$1" is already blocked.',
  'ipb-needreblock'                 => '$1 is already blocked. Do you want to change the settings?',
  'ipb-otherblocks-header'          => 'Other {{PLURAL:$1|block|blocks}}',
  'unblock-hideuser'                => 'You cannot unblock this user, as their username has been hidden.',
@@@ -3387,12 -3378,12 +3387,12 @@@ Please contact your Internet service pr
  'sorbs'                           => 'DNSBL', # only translate this message to other languages if you have to change it
  'sorbsreason'                     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.',
  'sorbs_create_account_reason'     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.
 -You cannot create an account',
 +You cannot create an account.',
  'xffblockreason'                  => 'An IP address present in the X-Forwarded-For header, either yours or that of a proxy server you are using, has been blocked. The original block reason was: $1',
  'cant-see-hidden-user'            => "The user you are trying to block has already been blocked and hidden.
  Since you do not have the hideuser right, you cannot see or edit the user's block.",
 -'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked',
 -'ipbnounblockself'                => 'You are not allowed to unblock yourself',
 +'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked.',
 +'ipbnounblockself'                => 'You are not allowed to unblock yourself.',
  'ipb-default-expiry'              => '', # do not translate or duplicate this message to other languages
  
  # Developer tools
@@@ -4631,7 -4622,7 +4631,7 @@@ Please confirm that you really want to 
  
  'img-lang-opt' => '$2 ($1)',
  'img-lang-default' => '(default language)',
 -'img-lang-info' => 'Render this image in $1 $2.',
 +'img-lang-info' => 'Render this image in $1. $2',
  'img-lang-go' => 'Go',
  
  # Table pager
@@@ -4830,6 -4821,11 +4830,11 @@@ You can also [[Special:EditWatchlist|us
  'version-credits-title'                 => 'Credits for $1',
  'version-credits-not-found'             => 'No detailed credits information was found for this extension.',
  'version-ext-license'                   => 'License',
+ 'version-ext-colheader-name'            => 'Extension',
+ 'version-ext-colheader-version'         => 'Version',
+ 'version-ext-colheader-license'         => 'License',
+ 'version-ext-colheader-description'     => 'Description',
+ 'version-ext-colheader-credits'         => 'Authors',
  'version-poweredby-credits'             => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
  'version-poweredby-others'              => 'others',
  'version-poweredby-translators'         => 'translatewiki.net translators',
@@@ -4852,16 -4848,15 +4857,16 @@@ You should have received [{{SERVER}}{{S
  'version-entrypoints-load-php'          => '[https://www.mediawiki.org/wiki/Manual:load.php load.php]', # do not translate or duplicate this message to other languages
  
  # Special:Redirect
 -'redirect'            => 'Redirect by file, user, or revision ID',
 +'redirect'            => 'Redirect by file, user, page or revision ID',
  'redirect-legend'     => 'Redirect to a file or page',
  'redirect-text'       => '', # do not translate or duplicate this message to other languages
 -'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 +'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID or page ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
  'redirect-submit'     => 'Go',
  'redirect-lookup'     => 'Lookup:',
  'redirect-value'      => 'Value:',
  'redirect-user'       => 'User ID',
  'redirect-revision'   => 'Page revision',
 +'redirect-page'       => 'Page ID',
  'redirect-file'       => 'File name',
  'redirect-not-exists' => 'Value not found',
  
@@@ -5090,7 -5085,6 +5095,7 @@@ Otherwise, you can use the easy form be
  'api-error-unknownerror'                  => 'Unknown error: "$1".',
  'api-error-uploaddisabled'                => 'Uploading is disabled on this wiki.',
  'api-error-verification-error'            => 'This file might be corrupt, or have the wrong extension.',
 +'api-error-stasherror'                    => 'There was an error while uploading the file to stash.',
  
  # Durations
  'duration-seconds'   => '$1 {{PLURAL:$1|second|seconds}}',
  'limitreport-expensivefunctioncount-value' => '$1/$2', # only translate this message to other languages if you have to change it
  
  # ExpandTemplates
 -'expandtemplates'                  => 'Expand templates',
 -'expand_templates_intro'           => 'This special page takes text and expands all templates in it recursively.
 +'expandtemplates'                   => 'Expand templates',
 +'expand_templates_intro'            => 'This special page takes text and expands all templates in it recursively.
  It also expands supported parser functions like
  <code><nowiki>{{</nowiki>#language:…}}</code> and variables like
  <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
  In fact, it expands pretty much everything in double-braces.',
 -'expand_templates_title'           => 'Context title, for {{FULLPAGENAME}}, etc.:',
 -'expand_templates_input'           => 'Input text:',
 -'expand_templates_output'          => 'Result',
 -'expand_templates_xml_output'      => 'XML output',
 -'expand_templates_ok'              => 'OK',
 -'expand_templates_remove_comments' => 'Remove comments',
 -'expand_templates_remove_nowiki'   => 'Suppress <nowiki> tags in result',
 -'expand_templates_generate_xml'    => 'Show XML parse tree',
 -'expand_templates_preview'         => 'Preview',
 +'expand_templates_title'            => 'Context title, for {{FULLPAGENAME}}, etc.:',
 +'expand_templates_input'            => 'Input text:',
 +'expand_templates_output'           => 'Result',
 +'expand_templates_xml_output'       => 'XML output',
 +'expand_templates_html_output'      => 'Raw HTML output',
 +'expand_templates_ok'               => 'OK',
 +'expand_templates_remove_comments'  => 'Remove comments',
 +'expand_templates_remove_nowiki'    => 'Suppress <nowiki> tags in result',
 +'expand_templates_generate_xml'     => 'Show XML parse tree',
 +'expand_templates_generate_rawhtml' => 'Show raw HTML',
 +'expand_templates_preview'          => 'Preview',
  );
   * @author PhiLiP
   * @author Piangpha
   * @author Platonides
 + * @author PleaseStand
   * @author Prima klasy4na
   * @author Prometheus.pyrphoros
   * @author Psubhashish
@@@ -1480,7 -1479,6 +1480,7 @@@ Parameters
  Parameters:
  * $1 - (Optional) username, for GENDER support',
  'wrongpassword' => 'Used as error message when the provided password is wrong.
 +This message is used in html.
  {{Identical|Please try again}}',
  'wrongpasswordempty' => 'Error message displayed when entering a blank password.
  {{Identical|Please try again}}',
@@@ -1573,8 -1571,7 +1573,8 @@@ Parameters
  ** {{msg-mw|Duration-seconds}}
  
  This is a protection against robots trying to find the password by trying lots of them.
 -The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].',
 +The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
 +This message is used in html.',
  'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
  'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. Parameters:
  * $1 - a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
@@@ -1794,8 -1791,7 +1794,8 @@@ See also
  See also:
  * {{msg-mw|Showdiff}}
  * {{msg-mw|Accesskey-diff}}
 -* {{msg-mw|Tooltip-diff}}',
 +* {{msg-mw|Tooltip-diff}}
 +{{Identical|Show change}}',
  'anoneditwarning' => 'Shown when editing a page anonymously.
  See also:
  * {{msg-mw|Sf autoedit anoneditwarning}}
@@@ -2266,17 -2262,10 +2266,17 @@@ See also
  
  # Account creation failure
  'cantcreateaccounttitle' => 'Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.',
 -'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|cantcreateaccounttitle}}.
 +'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
  * $1 - target IP address
 -* $2 - reason or {{msg-mw|blockednoreason}}
 -* $3 - username',
 +* $2 - reason or {{msg-mw|Blockednoreason}}
 +* $3 - username
 +See also:
 +* {{msg-mw|Cantcreateaccount-range-text}}',
 +'cantcreateaccount-range-text' => "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
 +* $1 - target IP range
 +* $2 - reason or {{msg-mw|Blockednoreason}}
 +* $3 - username
 +* $4 - current user's IP address",
  
  # History pages
  'viewpagelogs' => 'Link displayed in history of pages',
@@@ -3603,8 -3592,6 +3603,8 @@@ See also
  'recentchanges-label-plusminus' => 'Legend item for plus/minus.
  
  Preceded by legend example {{msg-mw|Recentchanges-legend-plusminus}}.',
 +'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].
 +{{Identical|Legend}}',
  'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
  'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
  'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
@@@ -4041,14 -4028,7 +4041,14 @@@ This message is followed by the galler
  Parameters:
  * $1 - number of duplicate files',
  'file-deleted-duplicate' => 'Used in [[Special:Upload]. Parameters:
 -* $1 - page title of the file',
 +* $1 - page title of the file
 +
 +See also:
 +* {{msg-mw|file-deleted-duplicate-notitle}}',
 +'file-deleted-duplicate-notitle' => 'Used in [[Special:Upload] when the title of the deleted duplicate is not available.
 +
 +See also:
 +* {{msg-mw|file-deleted-duplicate}}',
  'uploadwarning' => 'Used as section header in [[Special:Upload]].',
  'uploadwarning-text' => 'Used in [[Special:Upload]].',
  'savefile' => 'When uploading a file',
@@@ -4949,8 -4929,6 +4949,8 @@@ See the following search results
  'protectedpages' => '{{doc-special|ProtectedPages}}',
  'protectedpages-indef' => 'Option in [[Special:ProtectedPages]]',
  'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
 +'protectedpages-noredirect' => 'Option in [[Special:ProtectedPages]].
 +{{Identical|Hide redirect}}',
  'protectedpagesempty' => 'Used in [[Special:ProtectedPages]], when there are no protected pages with the specified parameters.',
  'protectedtitles' => '{{doc-special|ProtectedTitles}}',
  'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
@@@ -5083,8 -5061,7 +5083,8 @@@ See also
  'allpagesbadtitle' => 'Used in [[Special:AllPages]], [[Special:PrefixIndex]] and [[Special:RecentChangesLinked]].',
  'allpages-bad-ns' => 'Used as error message. Parameters:
  * $1 - namespace name, other than "Main" namespace',
 -'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].',
 +'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].
 +{{Identical|Hide redirect}}',
  
  # SpecialCachedPage
  'cachedspecial-viewing-cached-ttl' => 'Message notifying they are watching a cached page. $1 is a duration (ie "1 hour and 30 minutes")',
@@@ -5609,7 -5586,6 +5609,7 @@@ See also
  * $1 - the upper limit of number of revisions
  See also:
  * {{msg-mw|Delete-toobig}}',
 +'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has links to it.',
  
  # Rollback
  'rollback' => '{{Identical|Rollback}}',
@@@ -6245,7 -6221,7 +6245,7 @@@ See also
  'block' => '{{doc-special|Block}}
  {{Identical|Block user}}',
  'unblock' => '{{doc-special|Unblock}}',
 -'blockip' => 'The title of the special page [[Special:BlockIP]].
 +'blockip' => 'Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. "Username" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.
  
  {{Identical|Block user}}',
  'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:Block]].
@@@ -8010,8 -7986,7 +8010,8 @@@ The label and the input box are always 
  'pageinfo-display-title' => 'The title that is displayed when the page is viewed.',
  'pageinfo-default-sort' => 'The key by which the page is sorted in categories by default.',
  'pageinfo-length' => 'The length of the page, in bytes.',
 -'pageinfo-article-id' => 'The numeric identifier of the page.',
 +'pageinfo-article-id' => 'The numeric identifier of the page.
 +{{Identical|Page ID}}',
  'pageinfo-language' => 'Language in which the page content is written.',
  'pageinfo-content-model' => 'The model in which the page content is written.
  
@@@ -8036,8 -8011,7 +8036,8 @@@ Preceded by the label {{msg-mw|Pageinfo
  'pageinfo-few-watchers' => 'Message displayed when there are fewer than $wgUnwatchedPageThreshold watchers. $1 is the value of $wgUnwatchedPageThreshold.',
  'pageinfo-redirects-name' => 'Header of the row in the first table of the info action.
  
 -Followed by the number of redirects to the page.
 +Followed by {{msg-mw|Pageinfo-redirects-value}}.
 +
  Used as link text. The link points to "{{int:Whatlinkshere-title}}" page ([[Special:WhatLinksHere]]).
  
  See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@@ -8046,8 -8020,7 +8046,8 @@@ Parameters
  * $1 - the number of redirects to the page',
  'pageinfo-subpages-name' => 'Header of the row in the first table of the info action.
  
 -Followed by the number of subpages of the page.
 +Followed by {{msg-mw|Pageinfo-subpages-value}}.
 +
  Used as link text. The link points to the "{{int:Prefixindex}}" page ([[Special:PrefixIndex]]).
  
  See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@@ -9986,10 -9959,15 +9986,15 @@@ A short description of the script path 
  'version-credits-title' => 'Page title for an about/credits page for a MediaWiki extension. $1 is the name of the extension.',
  'version-credits-not-found' => 'Descriptive error used when detailed about/credits for an extension are not available.',
  'version-ext-license' => '{{Identical|License}}',
+ 'version-ext-colheader-name'            => 'Column header for the name of an extension',
+ 'version-ext-colheader-version'         => '{{Identical|version}} Column header for describing an extensions version',
+ 'version-ext-colheader-license'         => '{{Identical|License}} Column header for describing an extensions license',
+ 'version-ext-colheader-description'     => 'Column header for the description of an extension',
+ 'version-ext-colheader-credits'         => 'Column header for the list of authors and credits for an extension',
  
  # Special:Redirect
  'redirect' => "{{doc-special|Redirect}}
 -This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
 +This means \"Redirect by file'''name''', user '''ID''', page '''ID''', or revision ID\".",
  'redirect-legend' => 'Legend of fieldset around input box in [[Special:Redirect]]',
  'redirect-summary' => 'Shown at top of [[Special:Redirect]]',
  'redirect-submit' => 'Button label in [[Special:Redirect]].
  
  Followed by the select box which has the following options:
  * {{msg-mw|Redirect-user}}
 +* {{msg-mw|Redirect-page}}
  * {{msg-mw|Redirect-revision}}
  * {{msg-mw|Redirect-file}}',
  'redirect-value' => 'Second field label in [[Special:Redirect]]
  {{Identical|Value}}',
  'redirect-user' => 'Description of lookup type for [[Special:Redirect]].
  {{Identical|User ID}}',
 +'redirect-page' => 'Description of lookup type for [[Special:Redirect]].
 +{{Identical|Page ID}}',
  'redirect-revision' => "Description of lookup type for [[Special:Redirect]].
  
  This means \"Page revision '''ID'''\".",
@@@ -10061,7 -10036,7 +10066,7 @@@ See also
  'specialpages-group-media' => '{{doc-special-group|like=[[Special:FilePath]], [[Special:MIMESearch]] and [[Special:Upload]]}}',
  'specialpages-group-users' => '{{doc-special-group|like=[[Special:ActiveUsers]], [[Special:Contributions]] and [[Special:ListGroupRights]]}}',
  'specialpages-group-highuse' => '{{doc-special-group|like=[[Special:MostCategories]], [[Special:MostLinked]] and [[Special:MostRevisions]]}}',
 -'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]], 
 +'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
  [[Special:Disambiguations]], etc}}',
  'specialpages-group-pagetools' => '{{doc-special-group|like=[[Special:MovePage]], [[Special:Undelete]], [[Special:WhatLinksHere]], [[Special:Export]] etc}}',
  'specialpages-group-wiki' => '{{doc-special-group|like=[[Special:Version]], [[Special:Statistics]], [[Special:LockDB]], etc}}',
@@@ -10450,7 -10425,6 +10455,7 @@@ See also
  'api-error-overwrite' => 'API error message that can be used for client side localisation of API errors.',
  'api-error-stashfailed' => 'API error message that can be used for client side localisation of API errors.',
  'api-error-publishfailed' => 'API error message that can be used for client side localisation of API errors.',
 +'api-error-stasherror' => 'API error message that can be used for client side localisation of API errors.',
  'api-error-timeout' => 'API error message that can be used for client side localisation of API errors.',
  'api-error-unclassified' => 'API error message that can be used for client side localisation of API errors.',
  'api-error-unknown-code' => 'API error message that can be used for client side localisation of API errors.
@@@ -10568,7 -10542,6 +10573,7 @@@ For more information, see [[mw:Extensio
  'expand_templates_input' => '{{Identical|Input text}}',
  'expand_templates_output' => '{{Identical|Result}}',
  'expand_templates_xml_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
 +'expand_templates_html_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
  'expand_templates_ok' => '{{Identical|OK}}',
  'expand_templates_remove_comments' => 'Check box to tell [[mw:Extension:ExpandTemplates]] to not show comments in the expanded template.',
  'expand_templates_remove_nowiki' => "Option on [[Special:Expandtemplates]]
@@@ -10590,7 -10563,6 +10595,7 @@@ Ticked
  test
  </pre>",
  'expand_templates_generate_xml' => 'Used as checkbox label.',
 +'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
  'expand_templates_preview' => '{{Identical|Preview}}',
  
  );
@@@ -550,7 -550,6 +550,7 @@@ $wgMessageStructure = array
                'invalidemailaddress',
                'cannotchangeemail',
                'emaildisabled',
 +              'emailsender',
                'accountcreated',
                'accountcreatedtext',
                'createaccount-title',
        'cantcreateaccount' => array(
                'cantcreateaccounttitle',
                'cantcreateaccount-text',
 +              'cantcreateaccount-range-text',
        ),
        'history' => array(
                'viewpagelogs',
                'recentchanges-label-bot',
                'recentchanges-label-unpatrolled',
                'recentchanges-label-plusminus',
 +              'recentchanges-legend-heading',
                'recentchanges-legend-newpage',
                'recentchanges-legend-plusminus',
                'rcnotefrom',
                'fileexists-shared-forbidden',
                'file-exists-duplicate',
                'file-deleted-duplicate',
 +              'file-deleted-duplicate-notitle',
                'uploadwarning',
                'uploadwarning-text',
                'savefile',
                'protectedpages-indef',
                'protectedpages-summary',
                'protectedpages-cascade',
 +              'protectedpages-noredirect',
                'protectedpagesempty',
                'protectedtitles',
                'protectedtitles-summary',
                'delete-edit-reasonlist',
                'delete-toobig',
                'delete-warning-toobig',
 +              'deleting-backlinks-warning',
        ),
        'rollback' => array(
                'rollback',
                'version-svn-revision',
                'version-license',
                'version-ext-license',
+               'version-ext-colheader-name',
+               'version-ext-colheader-version',
+               'version-ext-colheader-license',
+               'version-ext-colheader-description',
+               'version-ext-colheader-credits',
                'version-license-title',
                'version-license-not-found',
                'version-credits-title',
                'redirect-lookup',
                'redirect-value',
                'redirect-user',
 +              'redirect-page',
                'redirect-revision',
                'redirect-file',
                'redirect-not-exists',
                'api-error-overwrite',
                'api-error-stashfailed',
                'api-error-publishfailed',
 +              'api-error-stasherror',
                'api-error-timeout',
                'api-error-unclassified',
                'api-error-unknown-code',
                'expand_templates_input',
                'expand_templates_output',
                'expand_templates_xml_output',
 +              'expand_templates_html_output',
                'expand_templates_ok',
                'expand_templates_remove_comments',
                'expand_templates_remove_nowiki',
                'expand_templates_generate_xml',
 +              'expand_templates_generate_rawhtml',
                'expand_templates_preview',
        ),
  );
diff --combined resources/Resources.php
@@@ -50,59 -50,6 +50,59 @@@ return array
        // Scripts for the dynamic language specific data, like grammar forms.
        'mediawiki.language.data' => array( 'class' => 'ResourceLoaderLanguageDataModule' ),
  
 +      /**
 +       * Common skin styles, grouped into three graded levels.
 +       *
 +       * Level 1 "elements":
 +       *     The base level that only contains the most basic of common skin styles.
 +       *     Only styles for single elements are included, no styling for complex structures like the TOC
 +       *     is present. This level is for skins that want to implement the entire style of even content area
 +       *     structures like the TOC themselves.
 +       *
 +       * Level 2 "content":
 +       *     The most commonly used level for skins implemented from scratch. This level includes all the single
 +       *     element styles from "elements" as well as styles for complex structures such as the TOC that are output
 +       *     in the content area by MediaWiki rather than the skin. Essentially this is the common level that lets
 +       *     skins leave the style of the content area as it is normally styled, while leaving the rest of the skin
 +       *     up to the skin implementation.
 +       *
 +       * Level 3 "interface":
 +       *     The highest level, this stylesheet contains extra common styles for classes like .firstHeading, #contentSub,
 +       *     et cetera which are not outputted by MediaWiki but are common to skins like MonoBook, Vector, etc...
 +       *     Essentially this level is for styles that are common to MonoBook clones. And since practically every skin
 +       *     that currently exists within core is a MonoBook clone, all our core skins currently use this level.
 +       *
 +       * These modules are typically loaded by addModuleStyles which has absolutely no concept of dependency
 +       * management. As a result the skins.common.* modules contain duplicate stylesheet references instead of
 +       * setting 'dependencies' to the lower level the module is based on. For this reason avoid including multiple
 +       * skins.common.* modules into your skin as this will result in duplicate css.
 +       */
 +      'skins.common.elements' => array(
 +              'styles' => array(
 +                      'common/commonElements.css' => array( 'media' => 'screen' ),
 +              ),
 +              'remoteBasePath' => $GLOBALS['wgStylePath'],
 +              'localBasePath' => $GLOBALS['wgStyleDirectory'],
 +      ),
 +      'skins.common.content' => array(
 +              'styles' => array(
 +                      'common/commonElements.css' => array( 'media' => 'screen' ),
 +                      'common/commonContent.css' => array( 'media' => 'screen' ),
 +              ),
 +              'remoteBasePath' => $GLOBALS['wgStylePath'],
 +              'localBasePath' => $GLOBALS['wgStyleDirectory'],
 +      ),
 +      'skins.common.interface' => array(
 +              // Used in the web installer. Test it after modifying this definition!
 +              'styles' => array(
 +                      'common/commonElements.css' => array( 'media' => 'screen' ),
 +                      'common/commonContent.css' => array( 'media' => 'screen' ),
 +                      'common/commonInterface.css' => array( 'media' => 'screen' ),
 +              ),
 +              'remoteBasePath' => $GLOBALS['wgStylePath'],
 +              'localBasePath' => $GLOBALS['wgStyleDirectory'],
 +      ),
 +
        /**
         * Skins
         * Be careful not to add 'scripts' to these modules,
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
 +      // FIXME: Remove in favour of skins.monobook.styles when cache expires
        'skins.monobook' => array(
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
 +      // FIXME: Remove in favour of skins.vector.styles when cache expires
        'skins.vector' => array(
 -              // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
                        'common/commonContent.css' => array( 'media' => 'screen' ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
 -      'skins.vector.beta' => array(
 -              // Keep in sync with skins.vector
 +      'skins.vector.styles' => array(
 +              // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
 -                      'common/commonElements.css' => array( 'media' => 'screen' ),
 -                      'common/commonContent.css' => array( 'media' => 'screen' ),
 -                      'common/commonInterface.css' => array( 'media' => 'screen' ),
 -                      'vector/styles-beta.less',
 +                      'vector/styles.less',
 +              ),
 +              'remoteBasePath' => $GLOBALS['wgStylePath'],
 +              'localBasePath' => $GLOBALS['wgStyleDirectory'],
 +      ),
 +      'skins.monobook.styles' => array(
 +              'styles' => array(
 +                      'monobook/main.css' => array( 'media' => 'screen' ),
                ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
                'messages' => array( 'htmlform-chosen-placeholder' ),
        ),
        'mediawiki.icon' => array(
 -              'styles' => 'resources/mediawiki/mediawiki.icon.css',
 +              'styles' => 'resources/mediawiki/mediawiki.icon.less',
        ),
        'mediawiki.inspect' => array(
                'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
                'styles' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css',
                'dependencies' => array(
                        'jquery.makeCollapsible',
 +                      'jquery.cookie',
                        'mediawiki.icon',
                ),
        ),
        'mediawiki.special.changeslist' => array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
        ),
 +      'mediawiki.special.changeslist.js' => array(
 +              'scripts' => 'resources/mediawiki.special/mediawiki.special.changeslist.js',
 +              'dependencies' => array(
 +                      'jquery.makeCollapsible',
 +                      'jquery.cookie',
 +              ),
 +      ),
        'mediawiki.special.changeslist.enhanced' => array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
        ),
                        'mediawiki.util',
                ),
        ),
 -      'mediawiki.special.userlogin' => array(
 +      'mediawiki.special.userlogin.common.styles' => array(
 +              'styles' => array(
 +                      'resources/mediawiki.special/mediawiki.special.userlogin.common.css',
 +              ),
 +              'position' => 'top',
 +      ),
 +      'mediawiki.special.userlogin.signup.styles' => array(
                'styles' => array(
 -                      'resources/mediawiki.special/mediawiki.special.vforms.css',
 -                      'resources/mediawiki.special/mediawiki.special.userLogin.css',
 +                      'resources/mediawiki.special/mediawiki.special.userlogin.signup.css',
                ),
                'position' => 'top',
        ),
 -      'mediawiki.special.createaccount' => array(
 +      'mediawiki.special.userlogin.login.styles' => array(
                'styles' => array(
 -                      'resources/mediawiki.special/mediawiki.special.vforms.css',
 -                      'resources/mediawiki.special/mediawiki.special.createAccount.css',
 +                      'resources/mediawiki.special/mediawiki.special.userlogin.login.css',
                ),
 +              'position' => 'top',
        ),
 -      'mediawiki.special.createaccount.js' => array(
 -              'scripts' => 'resources/mediawiki.special/mediawiki.special.createAccount.js',
 +      'mediawiki.special.userlogin.common.js' => array(
 +              'scripts' => array(
 +                      'resources/mediawiki.special/mediawiki.special.userlogin.common.js',
 +              ),
                'messages' => array(
                        'createacct-captcha',
 +                      'createacct-imgcaptcha-ph',
 +              ),
 +      ),
 +      'mediawiki.special.userlogin.signup.js' => array(
 +              'scripts' => 'resources/mediawiki.special/mediawiki.special.userlogin.signup.js',
 +              'messages' => array(
                        'createacct-emailrequired',
 -                      'createacct-imgcaptcha-ph'
                ),
                'dependencies' => 'mediawiki.jqueryMsg',
 -              'position' => 'top',
        ),
        'mediawiki.special.javaScriptTest' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.javaScriptTest.js',
                'position' => 'top',
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.special.version' => array(
+               'styles' => 'resources/mediawiki.special/mediawiki.special.version.css',
+       ),
  
        /* MediaWiki Tests */
  
                        'vector' => 'resources/mediawiki.ui/vector.less',
                ),
                'position' => 'top',
 +              'targets' => array( 'desktop', 'mobile' ),
 +      ),
 +      // Lightweight module for button styles
 +      'mediawiki.ui.button' => array(
 +              'skinStyles' => array(
 +                      'default' => 'resources/mediawiki.ui/components/default/buttons.less',
 +                      'vector' => 'resources/mediawiki.ui/components/vector/buttons.less',
 +              ),
 +              'position' => 'top',
 +              'targets' => array( 'desktop', 'mobile' ),
        ),
  
        /* OOJS */
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
 -
  );