Merge "(bug 24521) Move hard coded "code error!" to messages"
authorIAlex <ialex.wiki@gmail.com>
Wed, 8 Aug 2012 18:35:28 +0000 (18:35 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 8 Aug 2012 18:35:28 +0000 (18:35 +0000)
1  2 
languages/LanguageConverter.php
languages/messages/MessagesEn.php
languages/messages/MessagesQqq.php
maintenance/language/messages.inc

@@@ -43,7 -43,6 +43,7 @@@ class LanguageConverter 
                'shi',
                'sr',
                'tg',
 +              'uz',
                'zh',
        );
  
  class ConverterRule {
        var $mText; // original text in -{text}-
        var $mConverter; // LanguageConverter object
-       var $mManualCodeError = '<strong class="error">code error!</strong>';
        var $mRuleDisplay = '';
        var $mRuleTitle = false;
        var $mRules = '';// string : the text of the rules
                        }
                }
                if ( $this->mRuleDisplay === false ) {
-                       $this->mRuleDisplay = $this->mManualCodeError;
+                       $this->mRuleDisplay = '<span class="error">'
+                               . wfMessage( 'converter-manual-rule-error' )->inContentLanguage()->escaped()
+                               . '</span>';
                }
  
                $this->generateConvTable();
@@@ -1072,7 -1072,6 +1072,7 @@@ Do not forget to change your [[Special:
  'remembermypassword'         => 'Remember my login on this browser (for a maximum of $1 {{PLURAL:$1|day|days}})',
  'securelogin-stick-https'    => 'Stay connected to HTTPS after login',
  'yourdomainname'             => 'Your domain:',
 +'password-change-forbidden'  => 'You cannot change passwords on this wiki.',
  'externaldberror'            => 'There was either an authentication database error or you are not allowed to update your external account.',
  'login'                      => 'Log in',
  'nav-login-createaccount'    => 'Log in / create account',
@@@ -1360,10 -1359,6 +1360,10 @@@ or [{{fullurl:{{FULLPAGENAME}}|action=e
  You can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,
  or <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>.',
  'noarticletextanon'                => '{{int:noarticletext}}', # do not translate or duplicate this message to other languages
 +'missing-revision'                 => 'The revision #$1 of the page named "{{PAGENAME}}" does not exist.
 +
 +This is usually caused by following an outdated history link to a page that has been deleted.
 +Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
  'userpage-userdoesnotexist'        => 'User account "$1" is not registered.
  Please check if you want to create/edit this page.',
  'userpage-userdoesnotexist-view'   => 'User account "$1" is not registered.',
@@@ -1502,6 -1497,7 +1502,7 @@@ These arguments have been omitted."
  'expansion-depth-exceeded-warning'        => 'Page exceeded the expansion depth',
  'parser-unstrip-loop-warning'             => 'Unstrip loop detected',
  'parser-unstrip-recursion-limit'          => 'Unstrip recursion limit exceeded ($1)',
+ 'converter-manual-rule-error'             => 'Error detected in manual language conversion rule',
  
  # "Undo" feature
  'undo-success' => 'The edit can be undone.
@@@ -1686,20 -1682,16 +1687,20 @@@ Note that using the navigation links wi
  'mergelogpagetext'   => 'Below is a list of the most recent merges of one page history into another.',
  
  # Diffs
 -'history-title'              => 'Revision history of "$1"',
 -'difference-title'           => 'Difference between revisions of "$1"',
 -'difference-title-multipage' => 'Difference between pages "$1" and "$2"',
 -'difference-multipage'       => '(Difference between pages)',
 -'lineno'                     => 'Line $1:',
 -'compareselectedversions'    => 'Compare selected revisions',
 -'showhideselectedversions'   => 'Show/hide selected revisions',
 -'editundo'                   => 'undo',
 -'diff-multi'                 => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one 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)',
 +'history-title'               => 'Revision history of "$1"',
 +'difference-title'            => 'Difference between revisions of "$1"',
 +'difference-title-multipage'  => 'Difference between pages "$1" and "$2"',
 +'difference-multipage'        => '(Difference between pages)',
 +'lineno'                      => 'Line $1:',
 +'compareselectedversions'     => 'Compare selected revisions',
 +'showhideselectedversions'    => 'Show/hide selected revisions',
 +'editundo'                    => 'undo',
 +'diff-multi'                  => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one 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)',
 +'difference-missing-revision' => '{{PLURAL:$2|One revision|$2 revisions}} of this difference ($1) {{PLURAL:$2|was|were}} not found.
 +
 +This is usually caused by following an outdated diff link to a page that has been deleted.
 +Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
  
  # Search results
  'search-summary'                   => '', # do not translate or duplicate this message to other languages
@@@ -2292,30 -2284,30 +2293,30 @@@ If the problem persists, contact an [[S
  'upload-copy-upload-invalid-domain' => 'Copy uploads are not available from this domain.',
  
  # File backend
 -'backend-fail-stream'        => 'Could not stream file $1.',
 -'backend-fail-backup'        => 'Could not backup file $1.',
 +'backend-fail-stream'        => 'Could not stream file "$1".',
 +'backend-fail-backup'        => 'Could not backup file "$1".',
  'backend-fail-notexists'     => 'The file $1 does not exist.',
  'backend-fail-hashes'        => 'Could not get file hashes for comparison.',
 -'backend-fail-notsame'       => 'A non-identical file already exists at $1.',
 -'backend-fail-invalidpath'   => '$1 is not a valid storage path.',
 -'backend-fail-delete'        => 'Could not delete file $1.',
 -'backend-fail-alreadyexists' => 'The file $1 already exists.',
 -'backend-fail-store'         => 'Could not store file $1 at $2.',
 -'backend-fail-copy'          => 'Could not copy file $1 to $2.',
 -'backend-fail-move'          => 'Could not move file $1 to $2.',
 +'backend-fail-notsame'       => 'A non-identical file already exists at "$1".',
 +'backend-fail-invalidpath'   => '"$1" is not a valid storage path.',
 +'backend-fail-delete'        => 'Could not delete file "$1".',
 +'backend-fail-alreadyexists' => 'The file "$1" already exists.',
 +'backend-fail-store'         => 'Could not store file "$1" at "$2".',
 +'backend-fail-copy'          => 'Could not copy file "$1" to "$2".',
 +'backend-fail-move'          => 'Could not move file "$1" to "$2".',
  'backend-fail-opentemp'      => 'Could not open temporary file.',
  'backend-fail-writetemp'     => 'Could not write to temporary file.',
  'backend-fail-closetemp'     => 'Could not close temporary file.',
 -'backend-fail-read'          => 'Could not read file $1.',
 -'backend-fail-create'        => 'Could not write file $1.',
 -'backend-fail-maxsize'       => 'Could not write file $1 because it is larger than {{PLURAL:$2|one byte|$2 bytes}}.',
 +'backend-fail-read'          => 'Could not read file "$1".',
 +'backend-fail-create'        => 'Could not write file "$1".',
 +'backend-fail-maxsize'       => 'Could not write file "$1" because it is larger than {{PLURAL:$2|one byte|$2 bytes}}.',
  'backend-fail-readonly'      => 'The storage backend "$1" is currently read-only. The reason given is: "\'\'$2\'\'"',
  'backend-fail-synced'        => 'The file "$1" is in an inconsistent state within the internal storage backends',
  'backend-fail-connect'       => 'Could not connect to storage backend "$1".',
  'backend-fail-internal'      => 'An unknown error occurred in storage backend "$1".',
  'backend-fail-contenttype'   => 'Could not determine the content type of the file to store at "$1".',
 -'backend-fail-batchsize'     => 'Storage backend given a batch of $1 file {{PLURAL:$1|operation|operations}}; the limit is $2 {{PLURAL:$2|operation|operations}}.',
 -'backend-fail-usable'        => 'Could not write file $1 due to insufficient permissions or missing directories/containers.',
 +'backend-fail-batchsize'     => 'The storage backend was given a batch of $1 file {{PLURAL:$1|operation|operations}}; the limit is $2 {{PLURAL:$2|operation|operations}}.',
 +'backend-fail-usable'        => 'Could not write file "$1" due to insufficient permissions or missing directories/containers.',
  
  # File journal errors
  'filejournal-fail-dbconnect' => 'Could not connect to the journal database for storage backend "$1".',
@@@ -2542,8 -2534,8 +2543,8 @@@ Remember to check for other links to th
  'disambiguations'         => 'Pages linking to disambiguation pages',
  'disambiguations-summary' => '', # do not translate or duplicate this message to other languages
  'disambiguationspage'     => 'Template:disambig',
 -'disambiguations-text'    => "The following pages link to a '''disambiguation page'''.
 -They should link to the appropriate topic instead.<br />
 +'disambiguations-text'    => "The following pages contain at least one link to a '''disambiguation page'''.
 +They may have to link to a more appropriate page instead.<br />
  A page is treated as disambiguation page if it uses a template which is linked from [[MediaWiki:Disambiguationspage]].",
  
  'doubleredirects'                   => 'Double redirects',
@@@ -2933,22 -2925,22 +2934,22 @@@ Deleting it may disrupt database operat
  proceed with caution.',
  
  # Rollback
 -'rollback'          => 'Roll back edits',
 -'rollback_short'    => 'Rollback',
 -'rollbacklink'      => 'rollback',
 -'rollbacklinkcount' => 'rollback $1 {{PLURAL:$1|edit|edits}}',
 +'rollback'                   => 'Roll back edits',
 +'rollback_short'             => 'Rollback',
 +'rollbacklink'               => 'rollback',
 +'rollbacklinkcount'          => 'rollback $1 {{PLURAL:$1|edit|edits}}',
  'rollbacklinkcount-morethan' => 'rollback more than $1 {{PLURAL:$1|edit|edits}}',
 -'rollbackfailed'    => 'Rollback failed',
 -'cantrollback'      => 'Cannot revert edit;
 +'rollbackfailed'             => 'Rollback failed',
 +'cantrollback'               => 'Cannot revert edit;
  last contributor is only author of this page.',
 -'alreadyrolled'     => 'Cannot rollback last edit of [[:$1]] by [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
 +'alreadyrolled'              => 'Cannot rollback last edit of [[:$1]] by [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
  someone else has edited or rolled back the page already.
  
  The last edit to the page was by [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 -'editcomment'       => "The edit summary was: \"''\$1''\".",
 -'revertpage'        => 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) to last revision by [[User:$1|$1]]',
 -'revertpage-nouser' => 'Reverted edits by (username removed) to last revision by [[User:$1|$1]]',
 -'rollback-success'  => 'Reverted edits by $1;
 +'editcomment'                => "The edit summary was: \"''\$1''\".",
 +'revertpage'                 => 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) to last revision by [[User:$1|$1]]',
 +'revertpage-nouser'          => 'Reverted edits by (username removed) to last revision by [[User:$1|$1]]',
 +'rollback-success'           => 'Reverted edits by $1;
  changed back to last revision by $2.',
  
  # Edit tokens
@@@ -3275,7 -3267,6 +3276,7 @@@ You cannot create an account'
  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',
 +'ipb-default-expiry'              => '', # do not translate or duplicate this message to other languages
  
  # Developer tools
  'lockdb'              => 'Lock database',
@@@ -4866,7 -4857,6 +4867,7 @@@ Otherwise, you can use the easy form be
  'api-error-file-too-large'                => 'The file you submitted was too large.',
  'api-error-filename-tooshort'             => 'The filename is too short.',
  'api-error-filetype-banned'               => 'This type of file is banned.',
 +'api-error-filetype-banned-type'          => '$1 {{PLURAL:$4|is not a permitted file type|are not permitted file types}}. Permitted {{PLURAL:$3|file type is|file types are}} $2.',
  'api-error-filetype-missing'              => 'The filename is missing an extension.',
  'api-error-hookaborted'                   => 'The modification you tried to make was aborted by an extension.',
  'api-error-http'                          => 'Internal error: Unable to connect to server.',
@@@ -500,7 -500,7 +500,7 @@@ For explanation of 'lock' see [http://e
  {{Identical|Copyright}}',
  'currentevents' => 'Standard link in the sidebar, for news. See also {{msg|currentevents-url}} for the link url.',
  'currentevents-url' => "Target page of ''{{Mediawiki:currentevents}}'' in the sidebar. See also {{msg|currentevents}}.
 -{{doc-important|Do not translate <tt>Project:</tt> part.}}",
 +{{doc-important|Do not translate the \"<tt>Project:</tt>\" part.}}",
  'disclaimers' => 'Used as display name for the link to [[{{MediaWiki:Disclaimerpage}}]] shown at the bottom of every page on the wiki. Example [[{{MediaWiki:Disclaimerpage}}|{{MediaWiki:Disclaimers}}]].',
  'disclaimerpage' => 'Used as page for that contains the site disclaimer. Used at the bottom of every page on the wiki. Example: [[{{MediaWiki:Disclaimerpage}}|{{MediaWiki:Disclaimers}}]].
  {{doc-important|Do not change the "<tt>Project:</tt>" part.}}',
@@@ -717,7 -717,6 +717,7 @@@ $1 is a filename, I think.'
  'remembermypassword' => 'A check box in [[Special:UserLogin]]
  
  {{Identical|Remember my login on this computer}}',
 +'password-change-forbidden' => 'Error message shown when an external authentication source does not allow the password to be changed.',
  'externaldberror' => 'This message is thrown when a valid attempt to change the wiki password for a user fails because of a database error or an error from an external system.',
  'login' => "Shown as the caption of the button at [[Special:UserLogin]], and also to anonymous users in the upper right corner of the page when they can't create an account (otherwise the message {{msg|nav-login-createaccount}} is shown there).
  
@@@ -839,8 -838,10 +839,8 @@@ Used on [[Special:ResetPass]]'
  {{Identical|Reset password}}',
  'passwordreset-text' => 'Text on [[Special:PasswordReset]]',
  'passwordreset-legend' => '{{Identical|Reset password}}',
 -'passwordreset-pretext' => 'These instructions are shown on the password reset dialogue, which can, in principle, take the user\'s email address as well as, or instead of, their username. This text displays above one or more fields, at least one of which needs to be completed, and the message does not know which routes are available, so it needs to refer to some vague noun rather than specifically "username". 
 -"One of the pieces of data" means "an info"/"a datum" (probably to be translatea with a singular noun in your language if available).
 -
 -Parameters:
 +'passwordreset-pretext' => 'These instructions are shown on the password reset dialogue, which can, in principle, take the user\'s email address as well as, or instead of, their username. This text displays above one or more fields, at least one of which needs to be completed, and the message does not know which routes are available, so it needs to refer to some vague noun rather than specifically "username".
 +"One of the pieces of data" means "an info"/"a datum" (probably to be translatea with a singular noun in your language if available). Parameters:
  * $1 is the number of password reset routes. This is never 1, but always two or more. Thus, the first plural option is empty in English.',
  'passwordreset-username' => '{{Identical|Username}}',
  'passwordreset-domain' => 'A domain like used in Domain Name System (DNS) or more specifically like a domain component in the Lightweight Directory Access Protocol (LDAP)',
@@@ -861,9 -862,9 +861,9 @@@ Parameters
  * $2 - message {{msg-mw|passwordreset-emailelement|notext=1}} repeated $3 times
  * $3 - the number of repetitions in $2
  * $4 - base URL of the wiki',
 -'passwordreset-emailelement' => "This is a body of a reminder email to allow them into the system with a new password.
 -$1 will be the user's login name.
 -$2 will be the temporary password given by the system.",
 +'passwordreset-emailelement' => "This is a body of a reminder email to allow them into the system with a new password. Parameters:
 +* $1 will be the user's login name. This parameter can be used for GENDER.
 +$2 will be the temporary password given by the system.",
  'passwordreset-emailerror-capture' => 'Error message displayed when sending an e-mail fails. Parameters:
  * $1 is the name of a user who was supposed to get the e-mail.',
  
@@@ -983,11 -984,6 +983,11 @@@ Parameters
  
  See also {{msg-mw|Noarticletext-nopermission}}.',
  'noarticletext-nopermission' => 'See also {{msg-mw|Noarticletext}}.',
 +'missing-revision' => 'Text displayed when the requested revision does not exist using a permalink.
 +
 +Example: [http://translatewiki.net/w/i.php?title=Project:News&oldid=9999999 Permalink with invalid revision#]
 +
 +* $1 is the ID of the missing revision',
  'userpage-userdoesnotexist' => 'Error message displayed when trying to edit or create a page or a subpage that belongs to a user who is not registered on the wiki. Parameters:
  * $1 is a possible username that has not been registered.',
  'userpage-userdoesnotexist-view' => 'Shown in user pages of non existing users. See for example [http://translatewiki.net/wiki/User:Foo User:Foo]. Parameters:
@@@ -1073,6 -1069,7 +1073,7 @@@ This warning may be encountered due to 
  
  "Unstrip" refers to the internal function of the parser, called \'unstrip\', which recursively puts the output of parser functions in the place of the parser function call and which would enter an infinite loop in the situation above. See also:
  *{{msg-mw|Parser-unstrip-loop-warning}}',
+ 'converter-manual-rule-error' => 'This message is shown when a manual conversion rule for the language converter has errors. For example it\'s not using the correct syntax, or not supplying text in all variants.',
  
  # "Undo" feature
  'undo-success' => 'Text on special page to confirm edit revert. You arrive on this page by clicking on the "undo" link on a revision history special page.
@@@ -1252,9 -1249,7 +1253,9 @@@ Parameters
  [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
  
  # Suppression log
 -'suppressionlog' => 'Title of the suppression log. Shown in the drop down menu at [[Special:log]] and as header of [[Special:log/suppress]].',
 +'suppressionlog' => '{{doc-logpage}}
 +
 +Title of the suppression log. Shown in the drop down menu at [[Special:log]] and as header of [[Special:log/suppress]].',
  'suppressionlogtext' => 'Description text of the suppression log. Shown at top of [[Special:log/suppress]].',
  
  # History merging
  * $6 is a revision comment',
  
  # Merge log
 -'mergelog' => 'This is the name of a log of merge actions done on [[Special:MergeHistory]]. This special page and this log is not enabled by default.',
 +'mergelog' => '{{doc-logpage}}
 +This is the name of a log of merge actions done on [[Special:MergeHistory]]. This special page and this log is not enabled by default.',
  'pagemerge-logentry' => "This log message is used in a merge log entry.
  
  *Parameter $1 is the page name of the source of the content to be merged.
@@@ -1311,12 -1305,6 +1312,12 @@@ This message has sometimes a tooltip {{
  '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. Parameters:
  * $1 is the number of revisions, will always be 101 or more.
  * $2 is the number of users that were found, which was limited at 100.",
 +'difference-missing-revision' => 'Text displayed when the requested revision does not exist using a diff link.
 +
 +Example: [http://translatewiki.net/w/i.php?title=Project:News&diff=426850&oldid=99999999 Diff with invalid revision#]
 +
 +* $1 is the list of missing revisions IDs
 +* $2 is the number of items in $1',
  
  # Search results
  'searchresults' => '{{Identical|Search results}}',
@@@ -1762,8 -1750,7 +1763,8 @@@ The rate limits have no effect on the g
  'right-passwordreset' => '{{doc-right|passwordreset}}',
  
  # User rights log
 -'rightslog' => 'In [[Special:Log]]',
 +'rightslog' => '{{doc-logpage}}
 +In [[Special:Log]]',
  'rightslogtext' => 'Text in [[Special:Log/rights]].',
  'rightslogentry' => 'This message is displayed in the [[Special:Log/rights|User Rights Log]] when a bureaucrat changes the user groups for a user.
  
@@@ -1912,8 -1899,7 +1913,8 @@@ Text displayed when uploading a file us
  'upload-permitted' => 'Used in [[Special:Upload]].',
  'upload-preferred' => 'Used in [[Special:Upload]].',
  'upload-prohibited' => 'Used in [[Special:Upload]].',
 -'uploadlogpage' => 'Page title of [[Special:Log/upload]].',
 +'uploadlogpage' => '{{doc-logpage}}
 +Page title of [[Special:Log/upload]].',
  'filename' => '{{Identical|Filename}}',
  'filedesc' => '{{Identical|Summary}}',
  'fileuploadsummary' => '{{Identical|Summary}}',
@@@ -2089,7 -2075,7 +2090,7 @@@ Used on [[Special:UploadWizard]].'
  'http-invalid-scheme' => 'The message appears in the Mediawiki code as follows:
  
   if ( $this->parsedUrl[\'scheme\'] != \'http\' ) {
 -    $this->status->fatal( \'http-invalid-scheme\', $this->parsedUrl[\'scheme\'] );
 +      $this->status->fatal( \'http-invalid-scheme\', $this->parsedUrl[\'scheme\'] );
   }
  
  Siebrand think this has to do with allowing MediaWiki to fetch remote URLs, and in that not allowing anything but "http://" request. So if this for example is "irc://" or "https://", $1 would be "irc" or "https" respectively.
@@@ -2315,7 -2301,7 +2316,7 @@@ Possible alternatives to the word 'cont
  
  * '''Note:''' Do not change the link [[MediaWiki:Disambiguationspage]], even because it is listed as problematic. Be sure the \"D\" is in uppercase, so not \"d\".
  
 -* '''Background information:''' Beyond telling about links going to disambiguation pages, that they are generally bad, it should explain which pages in the article namespace are seen as diambiguations: [[MediaWiki:Disambiguationspage]] usually holds a list of diambiguation templates of the local wiki. Pages linking to one of them (by transclusion) will count as disambiguation pages. Pages linking to these disambiguation pages, instead to the disambiguated article itself, are listed on [[:Special:Disambiguations]].",
 +* '''Background information:''' Beyond telling about links going to disambiguation pages, that they are generally bad, it should explain which pages in the article namespace are seen as disambiguations: [[MediaWiki:Disambiguationspage]] usually holds a list of disambiguation templates of the local wiki. Pages linking to one of them (by transclusion) will count as disambiguation pages. Pages linking to these disambiguation pages, instead to the disambiguated article itself, are listed on [[:Special:Disambiguations]].",
  
  'doubleredirects' => 'Name of [[Special:DoubleRedirects]] displayed in [[Special:SpecialPages]]',
  'doubleredirectstext' => 'Shown on top of [[Special:Doubleredirects]]',
@@@ -2427,8 -2413,7 +2428,8 @@@ The title is {{msg-mw|nopagetitle}}.'
  'specialloguserlabel' => 'Used in [[Special:Log]] as a label for an input field with which the log can be filtered for entries describing actions \'\'performed\'\' by the specified user.  "Carried out" and "done" are possible alternatives for "performed".',
  'speciallogtitlelabel' => 'Used in [[Special:Log]] as a label for an input field with which the log can be filtered.  This filter selects for pages or users on which a log action was performed.',
  'log' => 'Name of special page displayed in [[Special:SpecialPages]]',
 -'all-logs-page' => 'Title of [[Special:Log]].',
 +'all-logs-page' => '{{doc-logpage}}
 +Title of [[Special:Log]].',
  'alllogstext' => 'Header of [[Special:Log]]',
  'log-title-wildcard' => '* Appears in: [[Special:Log]]
  * Description: A check box to enable prefix search option',
@@@ -2530,9 -2515,7 +2531,9 @@@ You can apparently use 'URL' instead o
  'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
  
  # Special:Log/newusers
 -'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].',
 +'newuserlogpage' => '{{doc-logpage}}
 +
 +Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].',
  'newuserlogpagetext' => 'Part of the "Newuserlog" extension. It is the description you can see on [[Special:Log/newusers]].',
  
  # Special:ListGroupRights
@@@ -2692,8 -2675,7 +2693,8 @@@ $1 is the <b>approximate</b> number of 
  'deletedtext' => 'Parameters:
  * $1 is a page that was deleted
  * $2 is {{msg-mw|deletionlog}}',
 -'dellogpage' => 'The name of the deletion log. Used as heading on [[Special:Log/delete]] and in the drop down menu for selecting logs on [[Special:Log]].
 +'dellogpage' => '{{doc-logpage}}
 +The name of the deletion log. Used as heading on [[Special:Log/delete]] and in the drop down menu for selecting logs on [[Special:Log]].
  
  {{Identical|Deletion log}}',
  'dellogpagetext' => 'Text in [[Special:Log/delete]].',
  'rollback_short' => '{{Identical|Rollback}}',
  'rollbacklink' => '{{Identical|Rollback}}
  This message has a tooltip {{msg-mw|tooltip-rollback}}',
 -'rollbacklinkcount' => '* $1: the number of edit that will be rollbacked
 -If $1 is over the value of $wgShowRollbackEditCount (default: 10) [[MediaWiki:Rollbacklinkcount-morethan/en|rollbacklinkcount-morethan]] is used',
 -'rollbacklinkcount-morethan' => 'Similar to [[MediaWiki:Rollbacklinkcount/en|rollbacklinkcount]] but with prefix more than',
 +'rollbacklinkcount' => 'Text of the rollback link showing the number of edits to be rolled back. See also {{msg-mw|rollbacklink}}.
 +* $1: the number of edits that will be rollbacked. If $1 is over the value of $wgShowRollbackEditCount (default: 10) {{msg-mw|rollbacklinkcount-morethan}} is used.',
 +'rollbacklinkcount-morethan' => 'Text of the rollback link when a greater number of edits is to be rolled back. See also {{msg-mw|rollbacklink}}.
 +
 +When the number of edits rolled back is smaller than [[mw:Manual:$wgShowRollbackEditCount|$wgShowRollbackEditCount]], {{msg-mw|rollbacklinkcount}} is used instead.',
  'rollbackfailed' => '{{Identical|Rollback}}',
  'cantrollback' => '{{Identical|Revert}}
  {{Identical|Rollback}}',
@@@ -2745,8 -2725,7 +2746,8 @@@ In other cases the message {{msg-mw|rev
  {{Identical|Rollback}}',
  
  # Protect
 -'protectlogpage' => 'Title of [[Special:Log/protect]].',
 +'protectlogpage' => '{{doc-logpage}}
 +Title of [[Special:Log/protect]].',
  'protectlogtext' => 'Text in [[Special:Log/protect]].',
  'protectedarticle' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
  'modifiedarticleprotection' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
@@@ -2991,7 -2970,6 +2992,7 @@@ Example line
  'ipbotherreason' => '{{Identical|Other/additional reason}}',
  'ipbhidename' => 'This is the label for a checkbox in the user block form on [[Special:Block]].',
  'ipbwatchuser' => 'This is an option on [[Special:BlockIP]] to watch the user page and talk page of the blocked user',
 +'ipb-disableusertalk' => '{{doc-singularthey}}',
  'ipb-change-block' => 'Confirmation checkbox required for blocks that would override an earlier block. Appears together with {{msg|ipb-needreblock}}.',
  'badipaddress' => 'An error message shown when one entered an invalid IP address in blocking page.',
  'blockipsuccesstext' => '<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is supported.',
@@@ -3046,9 -3024,7 +3047,9 @@@ Usage
  'emaillink' => 'Used as display name for a link to send an e-mail to a user in the user tool links. Example: "(Talk | contribs | block | send e-mail)".
  
  {{Identical|E-mail}}',
 -'blocklogpage' => "The page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").
 +'blocklogpage' => "{{doc-logpage}}
 +
 +The page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").
  
  {{Identical|Block log}}",
  'blocklog-showlog' => 'Parameters:
@@@ -3076,7 -3052,6 +3077,7 @@@ See also {{msg-mw|Blocklistline}}.'
  'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
  'ipb-otherblocks-header' => '[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]
  Used on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks',
 +'unblock-hideuser' => '{{doc-singularthey}}',
  'blockme' => 'The page title of [[Special:Blockme]], a feature which is disabled by default.',
  'proxyblocksuccess' => '{{Identical|Done}}',
  'sorbs' => '{{optional}}',
@@@ -3136,8 -3111,7 +3137,8 @@@ See also {{msg-mw|Movepagetext-noredire
  'move-subpages' => 'The text of an option on the special page [[Special:MovePage|MovePage]]. If this option is ticked, any subpages will be moved with the main page to a new title.',
  'move-talk-subpages' => 'The text of an option on the special page [[Special:MovePage|MovePage]]. If this option is ticked, any talk subpages will be moved with the talk page to a new title.',
  'movepage-max-pages' => 'PROBABLY (A GUESS): when moving a page, you can select an option of moving its subpages, but there is a maximum that can be moved automatically.',
 -'movelogpage' => 'Title of [[Special:Log/move]]. Used as heading on that page, and in the dropdown menu on log pages.',
 +'movelogpage' => '{{doc-logpage}}
 +Title of [[Special:Log/move]]. Used as heading on that page, and in the dropdown menu on log pages.',
  'movelogpagetext' => "Text on the special page 'Move log'.",
  'movesubpage' => "This is a section header on [[Special:MovePage]], below is a list of subpages.
  Parameters:
@@@ -3239,7 -3213,7 +3240,7 @@@ See also
  * {{msg-mw|import-error-edit}}',
  
  # Import log
 -'importlogpage' => '',
 +'importlogpage' => '{{doc-logpage}}',
  'importlogpagetext' => 'This text appears at the top of the [//translatewiki.net/w/i.php?title=Special:Log&type=import import log] special page.',
  'import-logentry-upload' => 'This is the text of an entry in the Import log (and Recent Changes), after hour (and date, only in the Import log) and sysop name:
  * $1 is the name of the imported file',
@@@ -3455,7 -3429,7 +3456,7 @@@ See also {{msg-mw|Anonuser}} and {{msg-
  'markedaspatrolledtext' => '{{Identical|Markedaspatrolled}}',
  
  # Patrol log
 -'patrol-log-page' => 'Name of log.',
 +'patrol-log-page' => '{{doc-logpage}}',
  'patrol-log-header' => 'Text that appears above the log entries on the [[Special:log|patrol log]].',
  'log-show-hide-patrol' => '* $1 is one of {{msg|show}} or {{msg|hide}}',
  
@@@ -4805,6 -4779,4 +4806,6 @@@ $4 is the gender of the target user.'
  'api-error-uploaddisabled' => 'API error message that can be used for client side localisation of API errors.',
  'api-error-verification-error' => 'The word "extension" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.',
  
 +# Unknown messages
 +'api-error-filetype-banned-type' => 'API error message that can be used for client side localisation of API errors.',
  );
@@@ -368,9 -368,9 +368,9 @@@ $wgMessageStructure = array
                'readonly',
                'enterlockreason',
                'readonlytext',
 -              'missing-article',
 -              'missingarticle-rev',
 -              'missingarticle-diff',
 +              'missing-article', // not used anymore in core, but kept for extensions
 +              'missingarticle-rev', // not used anymore in core, but kept for extensions
 +              'missingarticle-diff', // not used anymore in core, but kept for extensions
                'readonly_lag',
                'internalerror',
                'internalerror_info',
                'remembermypassword',
                'securelogin-stick-https',
                'yourdomainname',
 +              'password-change-forbidden',
                'externaldberror',
                'login',
                'nav-login-createaccount',
                'noarticletext',
                'noarticletext-nopermission',
                'noarticletextanon',
 +              'missing-revision',
                'userpage-userdoesnotexist',
                'userpage-userdoesnotexist-view',
                'blocked-notice-logextract',
                'expansion-depth-exceeded-warning',
                'parser-unstrip-loop-warning',
                'parser-unstrip-recursion-limit',
+               'converter-manual-rule-error',
        ),
        'undo' => array(
                'undo-success',
                'editundo',
                'diff-multi',
                'diff-multi-manyusers',
 +              'difference-missing-revision',
        ),
        'search' => array(
                'search-summary',
                'cant-see-hidden-user',
                'ipbblocked',
                'ipbnounblockself',
 +              'ipb-default-expiry',
        ),
        'developertools' => array(
                'lockdb',